From b1fa1f55d780951cb3701ca25d422454d1a49bc7 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 13 May 2018 21:34:00 +0200 Subject: [PATCH 001/118] Change file name --- buildroot-external/board/ova/post-image.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/board/ova/post-image.sh b/buildroot-external/board/ova/post-image.sh index f84a8fd918e..cdd85e96b2e 100755 --- a/buildroot-external/board/ova/post-image.sh +++ b/buildroot-external/board/ova/post-image.sh @@ -10,7 +10,7 @@ BOOT_DATA=${BINARIES_DIR}/boot . ${BOARD_DIR}/info # Filename -IMAGE_FILE=hassio-${BOARD_ID}_${VERSION_MAJOR}.${VERSION_BUILD}.vmdk +IMAGE_FILE=hassio-os_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.vmdk # Init boot data rm -rf ${BOOT_DATA} From 07daad0d4b88afa18c287a6350db7f70f15905a5 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 13 May 2018 21:48:37 +0200 Subject: [PATCH 002/118] Pump build version --- buildroot-external/info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/info b/buildroot-external/info index 676f81002aa..ee64084956e 100644 --- a/buildroot-external/info +++ b/buildroot-external/info @@ -1,5 +1,5 @@ VERSION_MAJOR=0 -VERSION_BUILD=2 +VERSION_BUILD=3 HASSIO_NAME="Hass.io-OS" From 4577d01a4677ffc3a24301c17cdcfee6333e9712 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 13 May 2018 22:12:10 +0200 Subject: [PATCH 003/118] Change name in info --- buildroot-external/info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/info b/buildroot-external/info index ee64084956e..8ef60ff5bdb 100644 --- a/buildroot-external/info +++ b/buildroot-external/info @@ -1,6 +1,6 @@ VERSION_MAJOR=0 VERSION_BUILD=3 -HASSIO_NAME="Hass.io-OS" +HASSOS_NAME="HassOS" DEPLOYMENT=development From 3a5d2de70563b12127b983d6fabae83b8d779b8a Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 14 May 2018 22:37:39 +0200 Subject: [PATCH 004/118] Rename OS (#16) Rename OS --- README.md | 11 ++---- buildroot-external/Config.in | 8 ++-- buildroot-external/barebox-env/menu/title | 2 +- buildroot-external/board/ova/barebox.config | 2 +- buildroot-external/board/ova/post-image.sh | 14 +++---- .../board/ova/rootfs-overlay/etc/rauc.conf | 8 ++-- buildroot-external/configs/ova_defconfig | 38 +++++++++---------- buildroot-external/external.desc | 4 +- buildroot-external/external.mk | 2 +- buildroot-external/info | 1 + buildroot-external/package/hassio/hassio.mk | 33 ---------------- .../package/{hassio => hassos}/Config.in | 26 ++++++------- .../{hassio => hassos}/builder/Dockerfile | 0 .../{hassio => hassos}/builder/hostapp.sh | 4 +- buildroot-external/package/hassos/hassos.mk | 33 ++++++++++++++++ .../etc/apparmor.d/containers/.empty | 1 - .../{hassio.conf => hassos.conf} | 0 .../{hassio.conf => hassos.conf} | 0 .../{hassio.conf => hassos.conf} | 1 + ...tworkManager-system\\x2dconnections.mount" | 0 .../etc-docker.mount | 0 .../etc-dropbear.mount | 0 .../etc-hostname.mount | 0 .../etc-hosts.mount | 0 .../root-.docker.mount | 0 .../var-lib-docker.mount | 0 .../var-lib-systemd.mount | 0 .../var-log-journal.mount | 0 .../rauc.conf | 0 .../zram-swap.service | 0 .../zram-tmp.service | 0 .../zram-var.service | 0 .../hassio-expand.service | 1 - .../hassos-expand.service | 1 + .../hassio-apparmor.service | 1 - .../hassio-bind.target | 1 - .../hassio-config.service | 1 - .../hassio-supervisor.service | 1 - .../hassio-zram.target | 1 - .../hassos-apparmor.service | 1 + .../hassos-bind.target | 1 + .../hassos-config.service | 1 + .../hassos-supervisor.service | 1 + .../hassos-zram.target | 1 + .../usr/lib/systemd/system/dev-zram0.swap | 2 +- ...tworkManager-system\\x2dconnections.mount" | 4 +- .../usr/lib/systemd/system/etc-docker.mount | 2 +- .../usr/lib/systemd/system/etc-dropbear.mount | 2 +- .../usr/lib/systemd/system/etc-hostname.mount | 2 +- .../usr/lib/systemd/system/etc-hosts.mount | 2 +- .../systemd/system/hassio-apparmor.service | 13 ------- .../lib/systemd/system/hassio-config.service | 10 ----- .../systemd/system/hassos-apparmor.service | 13 +++++++ ...{hassio-bind.target => hassos-bind.target} | 2 +- .../lib/systemd/system/hassos-config.service | 10 +++++ ...o-expand.service => hassos-expand.service} | 4 +- ...isor.service => hassos-supervisor.service} | 8 ++-- ...{hassio-zram.target => hassos-zram.target} | 2 +- .../usr/lib/systemd/system/mnt-boot.mount | 4 +- .../usr/lib/systemd/system/mnt-data.mount | 8 ++-- .../usr/lib/systemd/system/mnt-overlay.mount | 4 +- .../usr/lib/systemd/system/rauc-bad.service | 2 +- .../usr/lib/systemd/system/rauc-good.service | 4 +- .../usr/lib/systemd/system/rauc-good.timer | 2 +- .../usr/lib/systemd/system/root-.docker.mount | 2 +- .../usr/lib/systemd/system/root-.ssh.mount | 4 +- .../lib/systemd/system/var-lib-docker.mount | 2 +- .../lib/systemd/system/var-lib-systemd.mount | 2 +- .../lib/systemd/system/var-log-journal.mount | 2 +- .../usr/lib/systemd/system/var.mount | 2 +- .../usr/lib/systemd/system/zram-swap.service | 6 +-- .../usr/lib/systemd/system/zram-tmp.service | 6 +-- .../usr/lib/systemd/system/zram-var.service | 6 +-- .../sbin/{hassio-apparmor => hassos-apparmor} | 2 +- .../usr/sbin/{hassio-cli => hassos-cli} | 2 +- .../usr/sbin/{hassio-config => hassos-config} | 8 ++-- .../usr/sbin/{hassio-expand => hassos-expand} | 10 ++--- .../{hassio-supervisor => hassos-supervisor} | 22 +++++------ .../usr/sbin/{hassio-zram => hassos-zram} | 4 +- .../scripts/{hdd_image.sh => hdd-image.sh} | 22 +++++------ buildroot-external/scripts/post-build.sh | 20 +++++----- .../{rootfs_layer.sh => rootfs-layer.sh} | 9 +++-- 82 files changed, 216 insertions(+), 215 deletions(-) delete mode 100644 buildroot-external/package/hassio/hassio.mk rename buildroot-external/package/{hassio => hassos}/Config.in (65%) rename buildroot-external/package/{hassio => hassos}/builder/Dockerfile (100%) rename buildroot-external/package/{hassio => hassos}/builder/hostapp.sh (95%) create mode 100644 buildroot-external/package/hassos/hassos.mk delete mode 100644 buildroot-external/rootfs-overlay/etc/apparmor.d/containers/.empty rename buildroot-external/rootfs-overlay/etc/systemd/system/docker.service.d/{hassio.conf => hassos.conf} (100%) rename buildroot-external/rootfs-overlay/etc/systemd/system/dropbear.service.d/{hassio.conf => hassos.conf} (100%) rename buildroot-external/rootfs-overlay/etc/systemd/system/getty@tty1.service.d/{hassio.conf => hassos.conf} (53%) rename "buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/etc-NetworkManager-system\\x2dconnections.mount" => "buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-NetworkManager-system\\x2dconnections.mount" (100%) rename buildroot-external/rootfs-overlay/etc/systemd/system/{hassio-bind.target.wants => hassos-bind.target.wants}/etc-docker.mount (100%) rename buildroot-external/rootfs-overlay/etc/systemd/system/{hassio-bind.target.wants => hassos-bind.target.wants}/etc-dropbear.mount (100%) rename buildroot-external/rootfs-overlay/etc/systemd/system/{hassio-bind.target.wants => hassos-bind.target.wants}/etc-hostname.mount (100%) rename buildroot-external/rootfs-overlay/etc/systemd/system/{hassio-bind.target.wants => hassos-bind.target.wants}/etc-hosts.mount (100%) rename buildroot-external/rootfs-overlay/etc/systemd/system/{hassio-bind.target.wants => hassos-bind.target.wants}/root-.docker.mount (100%) rename buildroot-external/rootfs-overlay/etc/systemd/system/{hassio-bind.target.wants => hassos-bind.target.wants}/var-lib-docker.mount (100%) rename buildroot-external/rootfs-overlay/etc/systemd/system/{hassio-bind.target.wants => hassos-bind.target.wants}/var-lib-systemd.mount (100%) rename buildroot-external/rootfs-overlay/etc/systemd/system/{hassio-bind.target.wants => hassos-bind.target.wants}/var-log-journal.mount (100%) rename buildroot-external/rootfs-overlay/etc/systemd/system/{hassio-supervisor.service.d => hassos-supervisor.service.d}/rauc.conf (100%) rename buildroot-external/rootfs-overlay/etc/systemd/system/{hassio-zram.target.wants => hassos-zram.target.wants}/zram-swap.service (100%) rename buildroot-external/rootfs-overlay/etc/systemd/system/{hassio-zram.target.wants => hassos-zram.target.wants}/zram-tmp.service (100%) rename buildroot-external/rootfs-overlay/etc/systemd/system/{hassio-zram.target.wants => hassos-zram.target.wants}/zram-var.service (100%) delete mode 120000 buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/hassio-expand.service create mode 120000 buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/hassos-expand.service delete mode 120000 buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-apparmor.service delete mode 120000 buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-bind.target delete mode 120000 buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-config.service delete mode 120000 buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-supervisor.service delete mode 120000 buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-zram.target create mode 120000 buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-apparmor.service create mode 120000 buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-bind.target create mode 120000 buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-config.service create mode 120000 buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-supervisor.service create mode 120000 buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-zram.target delete mode 100644 buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-apparmor.service delete mode 100644 buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-config.service create mode 100644 buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-apparmor.service rename buildroot-external/rootfs-overlay/usr/lib/systemd/system/{hassio-bind.target => hassos-bind.target} (71%) create mode 100644 buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-config.service rename buildroot-external/rootfs-overlay/usr/lib/systemd/system/{hassio-expand.service => hassos-expand.service} (66%) rename buildroot-external/rootfs-overlay/usr/lib/systemd/system/{hassio-supervisor.service => hassos-supervisor.service} (56%) rename buildroot-external/rootfs-overlay/usr/lib/systemd/system/{hassio-zram.target => hassos-zram.target} (57%) rename buildroot-external/rootfs-overlay/usr/sbin/{hassio-apparmor => hassos-apparmor} (96%) rename buildroot-external/rootfs-overlay/usr/sbin/{hassio-cli => hassos-cli} (93%) rename buildroot-external/rootfs-overlay/usr/sbin/{hassio-config => hassos-config} (76%) rename buildroot-external/rootfs-overlay/usr/sbin/{hassio-expand => hassos-expand} (53%) rename buildroot-external/rootfs-overlay/usr/sbin/{hassio-supervisor => hassos-supervisor} (53%) rename buildroot-external/rootfs-overlay/usr/sbin/{hassio-zram => hassos-zram} (91%) rename buildroot-external/scripts/{hdd_image.sh => hdd-image.sh} (78%) rename buildroot-external/scripts/{rootfs_layer.sh => rootfs-layer.sh} (68%) diff --git a/README.md b/README.md index a47de180275..eb703c87078 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,4 @@ -# WORK IN PROGRESS! - -# Hass.io OS +# HassOS Hass.io OS based on [buildroot](https://buildroot.org/). It's a hypervisor for Docker and supports various kind of IoT hardware. It is also available as virtual appliance. The whole system is optimized for embedded system and security. You can update the system simple with OTA updates or offline updates. ## Focus @@ -29,14 +27,15 @@ Create a USB stick with a partition named "hassio-config". This partition can in ## Supervisor/Cli -Provide a file with the name `hassio.json` in your data partition and the following structure: +Provide a file with the name `hassos.json` in your data partition and the following structure: ```json { "supervisor": "repo/image", "supervisor_args": "optional / custom docker arguments", "cli": "repo/image", - "cli_args": "optional / custom docker arguments" + "cli_args": "optional / custom docker arguments", + "hostname": "default hostname" } ``` @@ -44,8 +43,6 @@ Provide a file with the name `hassio.json` in your data partition and the follow Running `sudo ./enter.sh` will get you into the build Docker container. `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external xy_defconfig` -From outside the Docker container, while it is still running you can use `./getimage.sh` to get the output image. - ## Helpers - `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external defconfig BR2_DEFCONFIG=/build/buildroot-external/configs/xy_defconfig` diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in index 2df71695d2c..9c304a6eedb 100644 --- a/buildroot-external/Config.in +++ b/buildroot-external/Config.in @@ -1,4 +1,4 @@ -source "$BR2_EXTERNAL_HASSIO_PATH/package/mingetty/Config.in" -source "$BR2_EXTERNAL_HASSIO_PATH/package/hassio/Config.in" -source "$BR2_EXTERNAL_HASSIO_PATH/package/libapparmor/Config.in" -source "$BR2_EXTERNAL_HASSIO_PATH/package/apparmor/Config.in" +source "$BR2_EXTERNAL_HASSOS_PATH/package/mingetty/Config.in" +source "$BR2_EXTERNAL_HASSOS_PATH/package/hassos/Config.in" +source "$BR2_EXTERNAL_HASSOS_PATH/package/libapparmor/Config.in" +source "$BR2_EXTERNAL_HASSOS_PATH/package/apparmor/Config.in" diff --git a/buildroot-external/barebox-env/menu/title b/buildroot-external/barebox-env/menu/title index c1f4371f8ab..100a2529771 100644 --- a/buildroot-external/barebox-env/menu/title +++ b/buildroot-external/barebox-env/menu/title @@ -1 +1 @@ -Hass.io OS boot Menu: +HassOS boot Menu: diff --git a/buildroot-external/board/ova/barebox.config b/buildroot-external/board/ova/barebox.config index e21b5997fd7..24a3e34fbd3 100644 --- a/buildroot-external/board/ova/barebox.config +++ b/buildroot-external/board/ova/barebox.config @@ -2,7 +2,7 @@ CONFIG_MMU=y CONFIG_MALLOC_SIZE=0x0 CONFIG_MALLOC_TLSF=y -CONFIG_PROMPT="hassio-os:" +CONFIG_PROMPT="HassOS-boot:" CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y diff --git a/buildroot-external/board/ova/post-image.sh b/buildroot-external/board/ova/post-image.sh index cdd85e96b2e..36aee53a8eb 100755 --- a/buildroot-external/board/ova/post-image.sh +++ b/buildroot-external/board/ova/post-image.sh @@ -1,16 +1,16 @@ #!/bin/bash set -e -SCRIPT_DIR=${BR2_EXTERNAL_HASSIO_PATH}/scripts +SCRIPT_DIR=${BR2_EXTERNAL_HASSOS_PATH}/scripts BOARD_DIR=${2} BOOT_DATA=${BINARIES_DIR}/boot -. ${SCRIPT_DIR}/hdd_image.sh -. ${BR2_EXTERNAL_HASSIO_PATH}/info +. ${SCRIPT_DIR}/hdd-image.sh +. ${BR2_EXTERNAL_HASSOS_PATH}/info . ${BOARD_DIR}/info # Filename -IMAGE_FILE=hassio-os_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.vmdk +IMAGE_FILE=${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.vmdk # Init boot data rm -rf ${BOOT_DATA} @@ -21,9 +21,9 @@ cp ${BINARIES_DIR}/barebox.bin ${BOOT_DATA}/EFI/BOOT/BOOTx64.EFI cp ${BOARD_DIR}/barebox-state.dtb ${BOOT_DATA}/EFI/barebox/state.dtb # Create other layers -hassio_boot_image ${BINARIES_DIR} -hassio_overlay_image ${BINARIES_DIR} +create_boot_image ${BINARIES_DIR} +create_overlay_image ${BINARIES_DIR} -hassio_hdd_image ${BINARIES_DIR} ${BINARIES_DIR}/harddisk.img 6 +create_hdd_image ${BINARIES_DIR} ${BINARIES_DIR}/harddisk.img 6 qemu-img convert -O vmdk ${BINARIES_DIR}/harddisk.img ${BINARIES_DIR}/${IMAGE_FILE} diff --git a/buildroot-external/board/ova/rootfs-overlay/etc/rauc.conf b/buildroot-external/board/ova/rootfs-overlay/etc/rauc.conf index 149ccd835dc..6f026ab1552 100644 --- a/buildroot-external/board/ova/rootfs-overlay/etc/rauc.conf +++ b/buildroot-external/board/ova/rootfs-overlay/etc/rauc.conf @@ -1,21 +1,21 @@ [system] -compatible=Hass.io-OS ova +compatible=HassOS ova bootloader=barebox [keyring] path=/etc/rauc/keyring.pem [slot.boot.0] -device=/dev/sda0 +device=/dev/disk/by-partuuid/b3dd0952-733c-4c88-8cba-cab9b8b4377f type=vfs bootname=boot [slot.rootfs.0] -device=/dev/sda2 +device=/dev/disk/by-partuuid/8d3d53e3-6d49-4c38-8349-aff6859e82fd type=raw bootname=system0 [slot.rootfs.1] -device=/dev/sda3 +device=/dev/disk/by-partuuid/a3ec664e-32ce-4665-95ea-7ae90ce9aa20 type=raw bootname=system1 diff --git a/buildroot-external/configs/ova_defconfig b/buildroot-external/configs/ova_defconfig index d1f0d4107ff..0d0dbcecb22 100644 --- a/buildroot-external/configs/ova_defconfig +++ b/buildroot-external/configs/ova_defconfig @@ -1,27 +1,27 @@ BR2_x86_64=y BR2_CCACHE=y BR2_CCACHE_DIR="$(TOPDIR)/ccache" -BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSIO_PATH)/patches $(BR2_EXTERNAL_HASSIO_PATH)/board/ova/patches" +BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches $(BR2_EXTERNAL_HASSOS_PATH)/board/ova/patches" BR2_TOOLCHAIN_BUILDROOT_GLIBC=y BR2_GCC_VERSION_7_X=y BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_TARGET_GENERIC_HOSTNAME="hassio" -BR2_TARGET_GENERIC_ISSUE="Welcome to Hass.io" +BR2_TARGET_GENERIC_ISSUE="Welcome to HassOS" BR2_INIT_SYSTEMD=y BR2_TARGET_GENERIC_GETTY_PORT="tty1" # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set -BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_HASSIO_PATH)/rootfs-overlay $(BR2_EXTERNAL_HASSIO_PATH)/board/ova/rootfs-overlay" -BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_HASSIO_PATH)/scripts/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSIO_PATH)/board/ova/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSIO_PATH)/board/ova" +BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_HASSOS_PATH)/rootfs-overlay $(BR2_EXTERNAL_HASSOS_PATH)/board/ova/rootfs-overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSIO_PATH)/board/ova/kernel.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/kernel.config" BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y -BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSIO_PATH)/busybox.config" +BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config" BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y BR2_PACKAGE_JQ=y BR2_PACKAGE_DOSFSTOOLS=y @@ -56,21 +56,21 @@ BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y # BR2_TARGET_ROOTFS_TAR is not set BR2_TARGET_BAREBOX=y BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y -BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSIO_PATH)/board/ova/barebox.config" -BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSIO_PATH)/board/ova/barebox-env $(BR2_EXTERNAL_HASSIO_PATH)/barebox-env" +BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/barebox.config" +BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/barebox-env $(BR2_EXTERNAL_HASSOS_PATH)/barebox-env" BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOST_RAUC=y BR2_PACKAGE_MINGETTY=y -BR2_PACKAGE_HASSIO=y -BR2_PACKAGE_HASSIO_SUPERVISOR="homeassistant/amd64-hassio-supervisor" -BR2_PACKAGE_HASSIO_SUPERVISOR_VERSION="103.3" -BR2_PACKAGE_HASSIO_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant" -BR2_PACKAGE_HASSIO_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSIO_CLI="homeassistant/amd64-hassio-cli" -BR2_PACKAGE_HASSIO_CLI_VERSION="3" -BR2_PACKAGE_HASSIO_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSIO_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_HASSOS=y +BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/amd64-hassio-supervisor" +BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="103.3" +BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/qemux86-64-homeassistant" +BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" +BR2_PACKAGE_HASSOS_CLI="homeassistant/amd64-hassio-cli" +BR2_PACKAGE_HASSOS_CLI_VERSION="3" +BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" +BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" BR2_PACKAGE_APPARMOR=y diff --git a/buildroot-external/external.desc b/buildroot-external/external.desc index 06b7c2d37c7..c366838dc6b 100644 --- a/buildroot-external/external.desc +++ b/buildroot-external/external.desc @@ -1,2 +1,2 @@ -name: HASSIO -desc: HassIO Buildroot tree +name: HASSOS +desc: HassOS Buildroot tree diff --git a/buildroot-external/external.mk b/buildroot-external/external.mk index 8436bd60f99..a8e7d178375 100644 --- a/buildroot-external/external.mk +++ b/buildroot-external/external.mk @@ -1 +1 @@ -include $(sort $(wildcard $(BR2_EXTERNAL_HASSIO_PATH)/package/*/*.mk)) +include $(sort $(wildcard $(BR2_EXTERNAL_HASSOS_PATH)/package/*/*.mk)) diff --git a/buildroot-external/info b/buildroot-external/info index 8ef60ff5bdb..8032ca233f5 100644 --- a/buildroot-external/info +++ b/buildroot-external/info @@ -2,5 +2,6 @@ VERSION_MAJOR=0 VERSION_BUILD=3 HASSOS_NAME="HassOS" +HASSOS_ID="hassos" DEPLOYMENT=development diff --git a/buildroot-external/package/hassio/hassio.mk b/buildroot-external/package/hassio/hassio.mk deleted file mode 100644 index 1d89ab7f827..00000000000 --- a/buildroot-external/package/hassio/hassio.mk +++ /dev/null @@ -1,33 +0,0 @@ -################################################################################ -# -# hassio -# -################################################################################ - -HASSIO_VERSION = 1.0.0 -HASSIO_LICENSE = Apache License 2.0 -HASSIO_LICENSE_FILES = $(BR2_EXTERNAL_HASSIO_PATH)/../LICENSE -HASSIO_SITE = $(BR2_EXTERNAL_HASSIO_PATH)/package/hassio -HASSIO_SITE_METHOD = local - -define HASSIO_BUILD_CMDS - docker build --tag hassio-hostapps $(@D)/builder -endef - -define HASSIO_INSTALL_TARGET_CMDS - docker run --rm --privileged \ - -v $(BINARIES_DIR):/export \ - -v $(BR2_EXTERNAL_HASSIO_PATH)/apparmor:/apparmor \ - hassio-hostapps \ - --supervisor $(BR2_PACKAGE_HASSIO_SUPERVISOR) \ - --supervisor-version $(BR2_PACKAGE_HASSIO_SUPERVISOR_VERSION) \ - --supervisor-args $(BR2_PACKAGE_HASSIO_SUPERVISOR_ARGS) \ - --supervisor-profile $(BR2_PACKAGE_HASSIO_SUPERVISOR_PROFILE) \ - --cli $(BR2_PACKAGE_HASSIO_CLI) \ - --cli-version $(BR2_PACKAGE_HASSIO_CLI_VERSION) \ - --cli-args $(BR2_PACKAGE_HASSIO_CLI_ARGS) \ - --cli-profile $(BR2_PACKAGE_HASSIO_CLI_PROFILE) \ - --apparmor $(BR2_PACKAGE_HASSIO_APPARMOR_DIR) -endef - -$(eval $(generic-package)) diff --git a/buildroot-external/package/hassio/Config.in b/buildroot-external/package/hassos/Config.in similarity index 65% rename from buildroot-external/package/hassio/Config.in rename to buildroot-external/package/hassos/Config.in index b659ce4c421..6d5c8298d5f 100644 --- a/buildroot-external/package/hassio/Config.in +++ b/buildroot-external/package/hassos/Config.in @@ -1,54 +1,54 @@ -menuconfig BR2_PACKAGE_HASSIO - bool "hassio-app" +menuconfig BR2_PACKAGE_HASSOS + bool "hassos-app" help This is the Application layer they build the data partition with configurations. - https://github.com/home-assistant/hassio-os + https://github.com/home-assistant/hassos -if BR2_PACKAGE_HASSIO +if BR2_PACKAGE_HASSOS -config BR2_PACKAGE_HASSIO_SUPERVISOR +config BR2_PACKAGE_HASSOS_SUPERVISOR string "supervisor docker image" help Name of supervisor docker image they will be build in. -config BR2_PACKAGE_HASSIO_SUPERVISOR_VERSION +config BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION string "supervisor docker image version" help Version of supervisor docker image they will be build in. -config BR2_PACKAGE_HASSIO_SUPERVISOR_ARGS +config BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS string "supervisor docker arguments" help Extended docker arguments to run the supervisor. -config BR2_PACKAGE_HASSIO_SUPERVISOR_PROFILE +config BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE string "AppArmor supervisor profile" help AppArmor profile for supervisor. -config BR2_PACKAGE_HASSIO_CLI +config BR2_PACKAGE_HASSOS_CLI string "cli docker image" help Name of cli docker image they will be build in. -config BR2_PACKAGE_HASSIO_CLI_VERSION +config BR2_PACKAGE_HASSOS_CLI_VERSION string "cli docker image version" help Version of cli docker image they will be build in. -config BR2_PACKAGE_HASSIO_CLI_ARGS +config BR2_PACKAGE_HASSOS_CLI_ARGS string "cli docker arguments" help Extended docker arguments to run the cli. -config BR2_PACKAGE_HASSIO_CLI_PROFILE +config BR2_PACKAGE_HASSOS_CLI_PROFILE string "AppArmor cli profile" help AppArmor profile for cli. -config BR2_PACKAGE_HASSIO_APPARMOR_DIR +config BR2_PACKAGE_HASSOS_APPARMOR_DIR string "AppArmor profiles folder" help AppArmor profiles folder for supervisor. diff --git a/buildroot-external/package/hassio/builder/Dockerfile b/buildroot-external/package/hassos/builder/Dockerfile similarity index 100% rename from buildroot-external/package/hassio/builder/Dockerfile rename to buildroot-external/package/hassos/builder/Dockerfile diff --git a/buildroot-external/package/hassio/builder/hostapp.sh b/buildroot-external/package/hassos/builder/hostapp.sh similarity index 95% rename from buildroot-external/package/hassio/builder/hostapp.sh rename to buildroot-external/package/hassos/builder/hostapp.sh index c226ba39415..f140bc98928 100755 --- a/buildroot-external/package/hassio/builder/hostapp.sh +++ b/buildroot-external/package/hassos/builder/hostapp.sh @@ -61,7 +61,7 @@ done # Make image dd if=/dev/zero of=${DATA_IMG} bs=1G count=1 -mkfs.ext4 -L "hassio-data" -E lazy_itable_init=0,lazy_journal_init=0 ${DATA_IMG} +mkfs.ext4 -L "hassos-data" -E lazy_itable_init=0,lazy_journal_init=0 ${DATA_IMG} # Mount / init file structs mkdir -p /mnt/data/ @@ -91,7 +91,7 @@ docker pull "${CLI}:${CLI_VERSION}" docker tag "${CLI}:${CLI_VERSION}" "${CLI}:latest" # Write config -cat > /mnt/data/hassio.json <<- EOF +cat > /mnt/data/hassos.json <<- EOF { "supervisor": "${SUPERVISOR}", "supervisor_args": "${SUPERVISOR_ARGS}", diff --git a/buildroot-external/package/hassos/hassos.mk b/buildroot-external/package/hassos/hassos.mk new file mode 100644 index 00000000000..dc32946a917 --- /dev/null +++ b/buildroot-external/package/hassos/hassos.mk @@ -0,0 +1,33 @@ +################################################################################ +# +# HassOS +# +################################################################################ + +HASSOS_VERSION = 1.0.0 +HASSOS_LICENSE = Apache License 2.0 +HASSOS_LICENSE_FILES = $(BR2_EXTERNAL_HASSOS_PATH)/../LICENSE +HASSOS_SITE = $(BR2_EXTERNAL_HASSOS_PATH)/package/hassos +HASSOS_SITE_METHOD = local + +define HASSOS_BUILD_CMDS + docker build --tag hassos-hostapps $(@D)/builder +endef + +define HASSOS_INSTALL_TARGET_CMDS + docker run --rm --privileged \ + -v $(BINARIES_DIR):/export \ + -v $(BR2_EXTERNAL_HASSOS_PATH)/apparmor:/apparmor \ + hassos-hostapps \ + --supervisor $(BR2_PACKAGE_HASSOS_SUPERVISOR) \ + --supervisor-version $(BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION) \ + --supervisor-args $(BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS) \ + --supervisor-profile $(BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE) \ + --cli $(BR2_PACKAGE_HASSOS_CLI) \ + --cli-version $(BR2_PACKAGE_HASSOS_CLI_VERSION) \ + --cli-args $(BR2_PACKAGE_HASSOS_CLI_ARGS) \ + --cli-profile $(BR2_PACKAGE_HASSOS_CLI_PROFILE) \ + --apparmor $(BR2_PACKAGE_HASSOS_APPARMOR_DIR) +endef + +$(eval $(generic-package)) diff --git a/buildroot-external/rootfs-overlay/etc/apparmor.d/containers/.empty b/buildroot-external/rootfs-overlay/etc/apparmor.d/containers/.empty deleted file mode 100644 index 8b137891791..00000000000 --- a/buildroot-external/rootfs-overlay/etc/apparmor.d/containers/.empty +++ /dev/null @@ -1 +0,0 @@ - diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/docker.service.d/hassio.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/docker.service.d/hassos.conf similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/docker.service.d/hassio.conf rename to buildroot-external/rootfs-overlay/etc/systemd/system/docker.service.d/hassos.conf diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/dropbear.service.d/hassio.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/dropbear.service.d/hassos.conf similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/dropbear.service.d/hassio.conf rename to buildroot-external/rootfs-overlay/etc/systemd/system/dropbear.service.d/hassos.conf diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/getty@tty1.service.d/hassio.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/getty@tty1.service.d/hassos.conf similarity index 53% rename from buildroot-external/rootfs-overlay/etc/systemd/system/getty@tty1.service.d/hassio.conf rename to buildroot-external/rootfs-overlay/etc/systemd/system/getty@tty1.service.d/hassos.conf index fa1221712a7..53a8d88b0ac 100644 --- a/buildroot-external/rootfs-overlay/etc/systemd/system/getty@tty1.service.d/hassio.conf +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/getty@tty1.service.d/hassos.conf @@ -1,2 +1,3 @@ [Unit] +Requires=docker.service After=docker.service diff --git "a/buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/etc-NetworkManager-system\\x2dconnections.mount" "b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-NetworkManager-system\\x2dconnections.mount" similarity index 100% rename from "buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/etc-NetworkManager-system\\x2dconnections.mount" rename to "buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-NetworkManager-system\\x2dconnections.mount" diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/etc-docker.mount b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-docker.mount similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/etc-docker.mount rename to buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-docker.mount diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/etc-dropbear.mount b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-dropbear.mount similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/etc-dropbear.mount rename to buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-dropbear.mount diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/etc-hostname.mount b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-hostname.mount similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/etc-hostname.mount rename to buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-hostname.mount diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/etc-hosts.mount b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-hosts.mount similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/etc-hosts.mount rename to buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-hosts.mount diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/root-.docker.mount b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/root-.docker.mount similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/root-.docker.mount rename to buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/root-.docker.mount diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/var-lib-docker.mount b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/var-lib-docker.mount similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/var-lib-docker.mount rename to buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/var-lib-docker.mount diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/var-lib-systemd.mount b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/var-lib-systemd.mount similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/var-lib-systemd.mount rename to buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/var-lib-systemd.mount diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/var-log-journal.mount b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/var-log-journal.mount similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/hassio-bind.target.wants/var-log-journal.mount rename to buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/var-log-journal.mount diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/hassio-supervisor.service.d/rauc.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-supervisor.service.d/rauc.conf similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/hassio-supervisor.service.d/rauc.conf rename to buildroot-external/rootfs-overlay/etc/systemd/system/hassos-supervisor.service.d/rauc.conf diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/hassio-zram.target.wants/zram-swap.service b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-zram.target.wants/zram-swap.service similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/hassio-zram.target.wants/zram-swap.service rename to buildroot-external/rootfs-overlay/etc/systemd/system/hassos-zram.target.wants/zram-swap.service diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/hassio-zram.target.wants/zram-tmp.service b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-zram.target.wants/zram-tmp.service similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/hassio-zram.target.wants/zram-tmp.service rename to buildroot-external/rootfs-overlay/etc/systemd/system/hassos-zram.target.wants/zram-tmp.service diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/hassio-zram.target.wants/zram-var.service b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-zram.target.wants/zram-var.service similarity index 100% rename from buildroot-external/rootfs-overlay/etc/systemd/system/hassio-zram.target.wants/zram-var.service rename to buildroot-external/rootfs-overlay/etc/systemd/system/hassos-zram.target.wants/zram-var.service diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/hassio-expand.service b/buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/hassio-expand.service deleted file mode 120000 index 0d497084ab1..00000000000 --- a/buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/hassio-expand.service +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/system/hassio-expand.service \ No newline at end of file diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/hassos-expand.service b/buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/hassos-expand.service new file mode 120000 index 00000000000..fe1d13e6d0e --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/hassos-expand.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/hassos-expand.service diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-apparmor.service b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-apparmor.service deleted file mode 120000 index 625edb930f0..00000000000 --- a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-apparmor.service +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/system/hassio-apparmor.service \ No newline at end of file diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-bind.target b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-bind.target deleted file mode 120000 index b1966adb3fb..00000000000 --- a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-bind.target +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/system/hassio-bind.target \ No newline at end of file diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-config.service b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-config.service deleted file mode 120000 index 61c279a59f1..00000000000 --- a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-config.service +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/system/hassio-config.service \ No newline at end of file diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-supervisor.service b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-supervisor.service deleted file mode 120000 index 855f70d369e..00000000000 --- a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-supervisor.service +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/system/hassio-supervisor.service \ No newline at end of file diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-zram.target b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-zram.target deleted file mode 120000 index 260a4c3518a..00000000000 --- a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassio-zram.target +++ /dev/null @@ -1 +0,0 @@ -/usr/lib/systemd/system/hassio-zram.target \ No newline at end of file diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-apparmor.service b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-apparmor.service new file mode 120000 index 00000000000..5c339915505 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-apparmor.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/hassos-apparmor.service diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-bind.target b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-bind.target new file mode 120000 index 00000000000..60e9c455bbf --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-bind.target @@ -0,0 +1 @@ +/usr/lib/systemd/system/hassos-bind.target diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-config.service b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-config.service new file mode 120000 index 00000000000..bbd767dd6a7 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-config.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/hassos-config.service diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-supervisor.service b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-supervisor.service new file mode 120000 index 00000000000..b8b6bdf793f --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-supervisor.service @@ -0,0 +1 @@ +/usr/lib/systemd/system/hassos-supervisor.service diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-zram.target b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-zram.target new file mode 120000 index 00000000000..d554b3c6929 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/multi-user.target.wants/hassos-zram.target @@ -0,0 +1 @@ +/usr/lib/systemd/system/hassos-zram.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/dev-zram0.swap b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/dev-zram0.swap index 402c2550565..8b12ac06ddc 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/dev-zram0.swap +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/dev-zram0.swap @@ -1,5 +1,5 @@ [Unit] -Description=Hassio ZRAM swap +Description=HassOS ZRAM swap Requires=zram-swap.service After=zram-swap.service diff --git "a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-NetworkManager-system\\x2dconnections.mount" "b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-NetworkManager-system\\x2dconnections.mount" index dad2df8f4e4..a84d927daad 100644 --- "a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-NetworkManager-system\\x2dconnections.mount" +++ "b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-NetworkManager-system\\x2dconnections.mount" @@ -2,7 +2,7 @@ Description=NetworkManager system connections Requires=mnt-overlay.mount After=mnt-overlay.mount -Before=NetworkManager.service hassio-config.service +Before=NetworkManager.service hassos-config.service [Mount] What=/mnt/overlay/etc/NetworkManager/system-connections @@ -11,4 +11,4 @@ Type=None Options=bind [Install] -WantedBy=hassio-bind.target +WantedBy=hassos-bind.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-docker.mount b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-docker.mount index 7928c4b389d..bb7a80cbbaf 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-docker.mount +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-docker.mount @@ -11,4 +11,4 @@ Type=none Options=bind [Install] -WantedBy=hassio-bind.target +WantedBy=hassos-bind.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-dropbear.mount b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-dropbear.mount index 167a0785055..06789313097 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-dropbear.mount +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-dropbear.mount @@ -11,4 +11,4 @@ Type=none Options=bind [Install] -WantedBy=hassio-bind.target +WantedBy=hassos-bind.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-hostname.mount b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-hostname.mount index be4a26beabd..d00309e4f54 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-hostname.mount +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-hostname.mount @@ -11,4 +11,4 @@ Type=none Options=bind [Install] -WantedBy=hassio-bind.target +WantedBy=hassos-bind.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-hosts.mount b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-hosts.mount index 366be99064f..68c33e457bf 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-hosts.mount +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-hosts.mount @@ -11,4 +11,4 @@ Type=none Options=bind [Install] -WantedBy=hassio-bind.target +WantedBy=hassos-bind.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-apparmor.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-apparmor.service deleted file mode 100644 index db8bf42a4a3..00000000000 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-apparmor.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Hass.io AppArmor -Wants=hassio-supervisor.service -Before=docker.service hassio-supervisor.service -RequiresMountsFor=/mnt/data - -[Service] -Type=oneshot -RemainAfterExit=true -ExecStart=/usr/sbin/hassio-apparmor - -[Install] -WantedBy=multi-user.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-config.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-config.service deleted file mode 100644 index 86873abd466..00000000000 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-config.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=Hassio Configuration Manager -After=hassio-bind.target network.target - -[Service] -Type=oneshot -ExecStart=/sbin/hassio-config - -[Install] -WantedBy=multi-user.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-apparmor.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-apparmor.service new file mode 100644 index 00000000000..82934470aef --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-apparmor.service @@ -0,0 +1,13 @@ +[Unit] +Description=HassOS AppArmor +Wants=hassos-supervisor.service +Before=docker.service hassos-supervisor.service +RequiresMountsFor=/mnt/data + +[Service] +Type=oneshot +RemainAfterExit=true +ExecStart=/usr/sbin/hassos-apparmor + +[Install] +WantedBy=multi-user.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-bind.target b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-bind.target similarity index 71% rename from buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-bind.target rename to buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-bind.target index 89f74b94da1..2aa73f38019 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-bind.target +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-bind.target @@ -1,5 +1,5 @@ [Unit] -Description=Hassio overlay targets +Description=HassOS overlay targets Documentation=man:systemd.target(5) After=local-fs.target Before=sysinit.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-config.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-config.service new file mode 100644 index 00000000000..22d6e811a05 --- /dev/null +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-config.service @@ -0,0 +1,10 @@ +[Unit] +Description=HassOS Configuration Manager +After=hassos-bind.target network.target + +[Service] +Type=oneshot +ExecStart=/usr/sbin/hassos-config + +[Install] +WantedBy=multi-user.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-expand.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-expand.service similarity index 66% rename from buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-expand.service rename to buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-expand.service index f8b9ea15a63..b916789bf9a 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-expand.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-expand.service @@ -1,11 +1,11 @@ [Unit] -Description=Hassio data resizing +Description=HassOS data resizing DefaultDependencies=no Before=mnt-data.mount [Service] Type=oneshot -ExecStart=/sbin/hassio-expand +ExecStart=/usr/sbin/hassos-expand RemainAfterExit=true [Install] diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-supervisor.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-supervisor.service similarity index 56% rename from buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-supervisor.service rename to buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-supervisor.service index 03b3dd108db..66bde2b665f 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-supervisor.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-supervisor.service @@ -1,5 +1,5 @@ [Unit] -Description=Hass.io supervisor +Description=HassOS supervisor Requires=docker.service After=docker.service dbus.socket RequiresMountsFor=/mnt/data @@ -10,9 +10,9 @@ StartLimitBurst=5 Type=simple Restart=always RestartSec=5s -ExecStartPre=-/usr/bin/docker stop hassio_supervisor -ExecStart=/usr/sbin/hassio-supervisor -ExecStop=-/usr/bin/docker stop hassio_supervisor +ExecStartPre=-/usr/bin/docker stop hassos_supervisor +ExecStart=/usr/sbin/hassos-supervisor +ExecStop=-/usr/bin/docker stop hassos_supervisor [Install] WantedBy=multi-user.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-zram.target b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-zram.target similarity index 57% rename from buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-zram.target rename to buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-zram.target index 35fd5050c4a..f9423264659 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassio-zram.target +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/hassos-zram.target @@ -1,3 +1,3 @@ [Unit] -Description=Hassio zram targets +Description=HassOS zram targets Documentation=man:systemd.target(5) diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-boot.mount b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-boot.mount index 38c7f3b827d..5658e82d43e 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-boot.mount +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-boot.mount @@ -1,12 +1,12 @@ [Unit] -Description=Hassio boot partition +Description=HassOS boot partition DefaultDependencies=no Before=umount.target After=local-fs.target Conflicts=umount.target [Mount] -What=LABEL=hassio-boot +What=LABEL=hassos-boot Where=/mnt/boot Type=auto diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-data.mount b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-data.mount index c439aacf3fc..53cbd320daf 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-data.mount +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-data.mount @@ -1,13 +1,13 @@ [Unit] -Description=Hassio data partition -Wants=hassio-expand.service +Description=HassOS data partition +Wants=hassos-expand.service DefaultDependencies=no -After=hassio-expand.service +After=hassos-expand.service Before=umount.target systemd-tmpfiles-setup.service Conflicts=umount.target [Mount] -What=LABEL=hassio-data +What=LABEL=hassos-data Where=/mnt/data Type=ext4 diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-overlay.mount b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-overlay.mount index 7af4b28a0c8..5fa9b62ec75 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-overlay.mount +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/mnt-overlay.mount @@ -1,11 +1,11 @@ [Unit] -Description=Hassio overlay partition +Description=HassOS overlay partition DefaultDependencies=no Before=umount.target systemd-tmpfiles-setup.service Conflicts=umount.target [Mount] -What=LABEL=hassio-overlay +What=LABEL=hassos-overlay Where=/mnt/overlay Type=ext4 diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-bad.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-bad.service index f93c5663a47..baf737fe953 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-bad.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-bad.service @@ -1,5 +1,5 @@ [Unit] -Description=Rauc mark bad +Description=HassOS rauc bad Requires=rauc.service RefuseManualStart=true RefuseManualStop=true diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.service index 907ab3a26d3..f07f2fbb9ed 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.service @@ -1,6 +1,6 @@ [Unit] -Description=Hassio rauc good -Requires=hassio-supervisor.service rauc.service +Description=HassOS rauc good +Requires=hassos-supervisor.service rauc.service RefuseManualStart=true RefuseManualStop=true diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.timer b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.timer index 88671f8eb64..fa79b78fd40 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.timer +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.timer @@ -1,5 +1,5 @@ [Unit] -Description=Rauc mark boot partition as good +Description=HassOS mark boot partition as good [Timer] OnBootSec=1min diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/root-.docker.mount b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/root-.docker.mount index 93e1c48b97d..69a223ad6a5 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/root-.docker.mount +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/root-.docker.mount @@ -11,4 +11,4 @@ Type=None Options=bind [Install] -WantedBy=hassio-bind.target +WantedBy=hassos-bind.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/root-.ssh.mount b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/root-.ssh.mount index 6fbbaf3d923..d36284f65e9 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/root-.ssh.mount +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/root-.ssh.mount @@ -2,7 +2,7 @@ Description=Dropbear persistent user Requires=mnt-overlay.mount After=mnt-overlay.mount -Before=dropbear.service hassio-config.service +Before=dropbear.service hassos-config.service [Mount] What=/mnt/overlay/root/.ssh @@ -11,4 +11,4 @@ Type=None Options=bind [Install] -WantedBy=hassio-bind.target +WantedBy=hassos-bind.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var-lib-docker.mount b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var-lib-docker.mount index f602e833189..e2f76c40106 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var-lib-docker.mount +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var-lib-docker.mount @@ -11,4 +11,4 @@ Type=none Options=bind [Install] -WantedBy=hassio-bind.target +WantedBy=hassos-bind.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var-lib-systemd.mount b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var-lib-systemd.mount index bc3119fdc2c..132b04c5421 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var-lib-systemd.mount +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var-lib-systemd.mount @@ -10,4 +10,4 @@ Type=None Options=bind [Install] -WantedBy=hassio-bind.target +WantedBy=hassos-bind.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var-log-journal.mount b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var-log-journal.mount index 3323ab8f32e..32391d9200a 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var-log-journal.mount +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var-log-journal.mount @@ -11,4 +11,4 @@ Type=None Options=bind [Install] -WantedBy=hassio-bind.target +WantedBy=hassos-bind.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var.mount b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var.mount index fa327ae98f6..e572b866154 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var.mount +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/var.mount @@ -1,5 +1,5 @@ [Unit] -Description=Hassio ZRAM var +Description=HassOS ZRAM var DefaultDependencies=no Requires=zram-var.service After=zram-var.service diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-swap.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-swap.service index 0026d385f51..2f340f0d617 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-swap.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-swap.service @@ -1,13 +1,13 @@ [Unit] -Description=Hassio ZRAM +Description=HassOS ZRAM swap DefaultDependencies=no Before=dev-zram0.swap [Service] Type=oneshot -ExecStart=/sbin/hassio-zram -t swap +ExecStart=/usr/sbin/hassos-zram -t swap RemainAfterExit=true StandardOutput=null [Install] -WantedBy=hassio-zram.target +WantedBy=hassos-zram.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-tmp.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-tmp.service index d1815a20eb7..a7a6a5edc86 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-tmp.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-tmp.service @@ -1,13 +1,13 @@ [Unit] -Description=Hassio ZRAM tmp +Description=HassOS ZRAM tmp DefaultDependencies=no Before=tmp.mount [Service] Type=oneshot -ExecStart=/sbin/hassio-zram -t fs -m tmp -s 16M +ExecStart=/usr/sbin/hassos-zram -t fs -m tmp -s 16M RemainAfterExit=true StandardOutput=null [Install] -WantedBy=hassio-zram.target +WantedBy=hassos-zram.target diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-var.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-var.service index 26771d00350..89640cd818a 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-var.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/zram-var.service @@ -1,13 +1,13 @@ [Unit] -Description=Hassio ZRAM var +Description=HassOS ZRAM var DefaultDependencies=no Before=var.mount [Service] Type=oneshot -ExecStart=/sbin/hassio-zram -t fs -m var -s 32M +ExecStart=/usr/sbin/hassos-zram -t fs -m var -s 32M RemainAfterExit=true StandardOutput=null [Install] -WantedBy=hassio-zram.target +WantedBy=hassos-zram.target diff --git a/buildroot-external/rootfs-overlay/usr/sbin/hassio-apparmor b/buildroot-external/rootfs-overlay/usr/sbin/hassos-apparmor similarity index 96% rename from buildroot-external/rootfs-overlay/usr/sbin/hassio-apparmor rename to buildroot-external/rootfs-overlay/usr/sbin/hassos-apparmor index bba158658b3..f36cadb8275 100755 --- a/buildroot-external/rootfs-overlay/usr/sbin/hassio-apparmor +++ b/buildroot-external/rootfs-overlay/usr/sbin/hassos-apparmor @@ -2,7 +2,7 @@ set -e # Load configs -CONFIG_FILE=/mnt/data/hassio.json +CONFIG_FILE=/mnt/data/hassos.json # Read configs PROFILES_DIR="$(jq --raw-output '.apparmor // empty' ${CONFIG_FILE})" diff --git a/buildroot-external/rootfs-overlay/usr/sbin/hassio-cli b/buildroot-external/rootfs-overlay/usr/sbin/hassos-cli similarity index 93% rename from buildroot-external/rootfs-overlay/usr/sbin/hassio-cli rename to buildroot-external/rootfs-overlay/usr/sbin/hassos-cli index 02b68286575..8f8804c9971 100755 --- a/buildroot-external/rootfs-overlay/usr/sbin/hassio-cli +++ b/buildroot-external/rootfs-overlay/usr/sbin/hassos-cli @@ -1,7 +1,7 @@ #!/bin/sh # Load configs -CONFIG_FILE=/mnt/data/hassio.json +CONFIG_FILE=/mnt/data/hassos.json CLI="$(jq --raw-output '.cli' ${CONFIG_FILE})" DOCKER_ARGS="$(jq --raw-output '.cli_args // empty' ${CONFIG_FILE})" diff --git a/buildroot-external/rootfs-overlay/usr/sbin/hassio-config b/buildroot-external/rootfs-overlay/usr/sbin/hassos-config similarity index 76% rename from buildroot-external/rootfs-overlay/usr/sbin/hassio-config rename to buildroot-external/rootfs-overlay/usr/sbin/hassos-config index 6d5f67b7145..b71964850be 100755 --- a/buildroot-external/rootfs-overlay/usr/sbin/hassio-config +++ b/buildroot-external/rootfs-overlay/usr/sbin/hassos-config @@ -1,14 +1,14 @@ #!/bin/sh set -e -# Check if hassio-config is present -if ! findfs LABEL="hassio-config" > /dev/null; then - echo "[Warning] No hassio-config partition found!" +# Check if hassos-config is present +if ! findfs LABEL="hassos-config" > /dev/null; then + echo "[Warning] No hassos-config partition found!" exit 0 fi # Mount config partition -mount -o ro LABEL="hassio-config" /mnt/config +mount -o ro LABEL="hassos-config" /mnt/config ## # NetworkManager diff --git a/buildroot-external/rootfs-overlay/usr/sbin/hassio-expand b/buildroot-external/rootfs-overlay/usr/sbin/hassos-expand similarity index 53% rename from buildroot-external/rootfs-overlay/usr/sbin/hassio-expand rename to buildroot-external/rootfs-overlay/usr/sbin/hassos-expand index ce11d0ae257..eec4ebccf59 100755 --- a/buildroot-external/rootfs-overlay/usr/sbin/hassio-expand +++ b/buildroot-external/rootfs-overlay/usr/sbin/hassos-expand @@ -1,7 +1,7 @@ #!/bin/sh set -e -DEVICE_CHILD=$(findfs LABEL="hassio-data") +DEVICE_CHILD=$(findfs LABEL="hassos-data") DEVICE_ROOT="/dev/$(lsblk -no pkname ${DEVICE_CHILD})" # Need resize @@ -11,14 +11,14 @@ if [ $(sgdisk -E ${DEVICE_ROOT}) -le 2048 ]; then fi # Resize & Reload partition -echo "[INFO] Update hassio-data partition" -sgdisk -d 6 -n 6:0:0 -c 6:"hassio-data" -t 6:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" ${DEVICE_ROOT} +echo "[INFO] Update hassos-data partition" +sgdisk -d 6 -n 6:0:0 -c 6:"hassos-data" -t 6:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 6:"a52a4597-fa3a-4851-aefd-2fbe9f849079" ${DEVICE_ROOT} sgdisk -v ${DEVICE_ROOT} partx -u ${DEVICE_ROOT} # Resize filesystem -echo "[INFO] Resize hassio-data filesystem" +echo "[INFO] Resize hassos-data filesystem" e2fsck -y ${DEVICE_CHILD} resize2fs -f ${DEVICE_CHILD} -echo "[INFO] Finish hassio-data resizing" +echo "[INFO] Finish hassos-data resizing" diff --git a/buildroot-external/rootfs-overlay/usr/sbin/hassio-supervisor b/buildroot-external/rootfs-overlay/usr/sbin/hassos-supervisor similarity index 53% rename from buildroot-external/rootfs-overlay/usr/sbin/hassio-supervisor rename to buildroot-external/rootfs-overlay/usr/sbin/hassos-supervisor index 4b7bccdd395..3ec1564688f 100755 --- a/buildroot-external/rootfs-overlay/usr/sbin/hassio-supervisor +++ b/buildroot-external/rootfs-overlay/usr/sbin/hassos-supervisor @@ -2,16 +2,16 @@ set -e # Load configs -CONFIG_FILE=/mnt/data/hassio.json +CONFIG_FILE=/mnt/data/hassos.json SUPERVISOR="$(jq --raw-output '.supervisor' ${CONFIG_FILE})" DOCKER_ARGS="$(jq --raw-output '.supervisor_args // empty' ${CONFIG_FILE})" APPARMOR="$(jq --raw-output '.supervisor_apparmor // "docker-default"' ${CONFIG_FILE})" # Init supervisor -HASSIO_DATA=/mnt/data/supervisor -HASSIO_IMAGE_ID=$(docker inspect --format='{{.Id}}' ${SUPERVISOR}) -HASSIO_CONTAINER_ID=$(docker inspect --format='{{.Image}}' hassio_supervisor || echo "") +HASSOS_DATA=/mnt/data/supervisor +HASSOS_IMAGE_ID=$(docker inspect --format='{{.Id}}' ${SUPERVISOR}) +HASSOS_CONTAINER_ID=$(docker inspect --format='{{.Image}}' hassos_supervisor || echo "") # Fix wrong AppArmor profiles if ! grep ${APPARMOR} /sys/kernel/security/apparmor/profiles > /dev/null; then @@ -19,18 +19,18 @@ if ! grep ${APPARMOR} /sys/kernel/security/apparmor/profiles > /dev/null; then fi runSupervisor() { - docker rm --force hassio_supervisor || true - docker run --name hassio_supervisor \ + docker rm --force hassos_supervisor || true + docker run --name hassos_supervisor \ --security-opt apparmor="${APPARMOR}" \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/dbus:/var/run/dbus \ - -v ${HASSIO_DATA}:/data \ - -e SUPERVISOR_SHARE=${HASSIO_DATA} \ - -e SUPERVISOR_NAME=hassio_supervisor \ + -v ${HASSOS_DATA}:/data \ + -e SUPERVISOR_SHARE=${HASSOS_DATA} \ + -e SUPERVISOR_NAME=hassos_supervisor \ $DOCKER_ARGS \ ${SUPERVISOR} } # Run supervisor -mkdir -p ${HASSIO_DATA} -([ "${HASSIO_IMAGE_ID}" = "${HASSIO_CONTAINER_ID}" ] && docker start --attach hassio_supervisor) || runSupervisor +mkdir -p ${HASSOS_DATA} +([ "${HASSOS_IMAGE_ID}" = "${HASSOS_CONTAINER_ID}" ] && docker start --attach hassos_supervisor) || runSupervisor diff --git a/buildroot-external/rootfs-overlay/usr/sbin/hassio-zram b/buildroot-external/rootfs-overlay/usr/sbin/hassos-zram similarity index 91% rename from buildroot-external/rootfs-overlay/usr/sbin/hassio-zram rename to buildroot-external/rootfs-overlay/usr/sbin/hassos-zram index 831b3229fd8..3012cba8052 100755 --- a/buildroot-external/rootfs-overlay/usr/sbin/hassio-zram +++ b/buildroot-external/rootfs-overlay/usr/sbin/hassos-zram @@ -61,10 +61,10 @@ zramctl "$DEVICE" -s "$SIZE" -a lz4 # Swap if [ "$TYPE" = "swap" ]; then - mkswap -L "hassio-zramswap" "$DEVICE" + mkswap -L "hassos-zramswap" "$DEVICE" fi # FileSystem if [ "$TYPE" = "fs" ]; then - mkfs.ext4 -L "hassio-$MOUNT" -O ^has_journal "$DEVICE" + mkfs.ext4 -L "hassos-$MOUNT" -O ^has_journal "$DEVICE" fi diff --git a/buildroot-external/scripts/hdd_image.sh b/buildroot-external/scripts/hdd-image.sh similarity index 78% rename from buildroot-external/scripts/hdd_image.sh rename to buildroot-external/scripts/hdd-image.sh index befdb00ea7c..c9b25a6109b 100755 --- a/buildroot-external/scripts/hdd_image.sh +++ b/buildroot-external/scripts/hdd-image.sh @@ -13,24 +13,24 @@ SYSTEM_SIZE=256M OVERLAY_SIZE=64M DATA_SIZE=1G -function hassio_boot_image() { +function create_boot_image() { local boot_data="${1}/boot" local boot_img="${1}/boot.vfat" echo "mtools_skip_check=1" > ~/.mtoolsrc dd if=/dev/zero of=${boot_img} bs=${BOOT_SIZE} count=1 - mkfs.vfat -n "hassio-boot" ${boot_img} + mkfs.vfat -n "hassos-boot" ${boot_img} mcopy -i ${boot_img} -sv ${boot_data}/* :: } -function hassio_overlay_image() { +function create_overlay_image() { local overlay_img="${1}/overlay.ext4" dd if=/dev/zero of=${overlay_img} bs=${OVERLAY_SIZE} count=1 - mkfs.ext4 -L "hassio-overlay" -E lazy_itable_init=0,lazy_journal_init=0 ${overlay_img} + mkfs.ext4 -L "hassos-overlay" -E lazy_itable_init=0,lazy_journal_init=0 ${overlay_img} } -function hassio_hdd_image() { +function create_hdd_image() { local boot_img="${1}/boot.vfat" local rootfs_img="${1}/rootfs.squashfs" local overlay_img="${1}/overlay.ext4" @@ -50,15 +50,15 @@ function hassio_hdd_image() { # Partition layout boot_offset="$(sgdisk -F ${hdd_img})" - sgdisk -n 1:0:+${BOOT_SIZE} -c 1:"hassio-boot" -t 1:"C12A7328-F81F-11D2-BA4B-00A0C93EC93B" -u 1:${BOOT_UUID} ${hdd_img} + sgdisk -n 1:0:+${BOOT_SIZE} -c 1:"hassos-boot" -t 1:"C12A7328-F81F-11D2-BA4B-00A0C93EC93B" -u 1:${BOOT_UUID} ${hdd_img} rootfs_offset="$(sgdisk -F ${hdd_img})" - sgdisk -n 2:0:+${SYSTEM_SIZE} -c 2:"hassio-system0" -t 2:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 2:${SYSTEM0_UUID} ${hdd_img} - sgdisk -n 3:0:+${SYSTEM_SIZE} -c 3:"hassio-system1" -t 3:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 3:${SYSTEM1_UUID} ${hdd_img} - sgdisk -n 4:0:+${BOOTSTATE_SIZE} -c 4:"hassio-bootstate" -u 4:${BOOTSTATE_UUID} ${hdd_img} + sgdisk -n 2:0:+${SYSTEM_SIZE} -c 2:"hassos-system0" -t 2:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 2:${SYSTEM0_UUID} ${hdd_img} + sgdisk -n 3:0:+${SYSTEM_SIZE} -c 3:"hassos-system1" -t 3:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 3:${SYSTEM1_UUID} ${hdd_img} + sgdisk -n 4:0:+${BOOTSTATE_SIZE} -c 4:"hassos-bootstate" -u 4:${BOOTSTATE_UUID} ${hdd_img} overlay_offset="$(sgdisk -F ${hdd_img})" - sgdisk -n 5:0:+${OVERLAY_SIZE} -c 5:"hassio-overlay" -t 5:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 5:${OVERLAY_UUID} ${hdd_img} + sgdisk -n 5:0:+${OVERLAY_SIZE} -c 5:"hassos-overlay" -t 5:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 5:${OVERLAY_UUID} ${hdd_img} data_offset="$(sgdisk -F ${hdd_img})" - sgdisk -n 6:0:+${DATA_SIZE} -c 6:"hassio-data" -t 6:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 6:${DATA_UUID} ${hdd_img} + sgdisk -n 6:0:+${DATA_SIZE} -c 6:"hassos-data" -t 6:"0FC63DAF-8483-4772-8E79-3D69D8477DE4" -u 6:${DATA_UUID} ${hdd_img} sgdisk -v # Write Images diff --git a/buildroot-external/scripts/post-build.sh b/buildroot-external/scripts/post-build.sh index 745de9bea2c..2aa60fdbdf6 100755 --- a/buildroot-external/scripts/post-build.sh +++ b/buildroot-external/scripts/post-build.sh @@ -1,27 +1,27 @@ #!/bin/bash set -e -SCRIPT_DIR=${BR2_EXTERNAL_HASSIO_PATH}/scripts +SCRIPT_DIR=${BR2_EXTERNAL_HASSOS_PATH}/scripts BOARD_DIR=${2} -. ${SCRIPT_DIR}/rootfs_layer.sh -. ${BR2_EXTERNAL_HASSIO_PATH}/info +. ${SCRIPT_DIR}/rootfs-layer.sh +. ${BR2_EXTERNAL_HASSOS_PATH}/info . ${BOARD_DIR}/info -# Hass.io OS tasks +# HassOS tasks fix_rootfs -install_hassio_cli +install_hassos_cli # Write os-release ( - echo "NAME=Hass.io" + echo "NAME=${HASSOS_NAME}" echo "VERSION=\"${VERSION_MAJOR}.${VERSION_BUILD} (${BOARD_NAME})\"" - echo "ID=hassio-os" + echo "ID=${HASSOS_ID}" echo "VERSION_ID=${VERSION_MAJOR}.${VERSION_BUILD}" - echo "PRETTY_NAME=\"${HASSIO_NAME} ${VERSION_MAJOR}.${VERSION_BUILD}\"" - echo "CPE_NAME=cpe:2.3:o:home_assistant:hassio:${VERSION_MAJOR}.${VERSION_BUILD}:*:${DEPLOYMENT}:*:*:*:${BOARD_ID}:*" + echo "PRETTY_NAME=\"${HASSOS_NAME} ${VERSION_MAJOR}.${VERSION_BUILD}\"" + echo "CPE_NAME=cpe:2.3:o:home_assistant:${HASSOS_ID}:${VERSION_MAJOR}.${VERSION_BUILD}:*:${DEPLOYMENT}:*:*:*:${BOARD_ID}:*" echo "HOME_URL=https://hass.io/" - echo "VARIANT=\"Hass.io ${BOARD_NAME}\"" + echo "VARIANT=\"${HASSOS_NAME} ${BOARD_NAME}\"" echo "VARIANT_ID=${BOARD_ID}" ) > ${TARGET_DIR}/usr/lib/os-release diff --git a/buildroot-external/scripts/rootfs_layer.sh b/buildroot-external/scripts/rootfs-layer.sh similarity index 68% rename from buildroot-external/scripts/rootfs_layer.sh rename to buildroot-external/scripts/rootfs-layer.sh index 3b332aa2fff..d182778808d 100644 --- a/buildroot-external/scripts/rootfs_layer.sh +++ b/buildroot-external/scripts/rootfs-layer.sh @@ -18,12 +18,15 @@ function fix_rootfs() { rm -rf ${TARGET_DIR}/srv rm -rf ${TARGET_DIR}/opt - # Fix tempfs + # Fix: tempfs with /srv sed -i "/srv/d" ${TARGET_DIR}/usr/lib/tmpfiles.d/home.conf + + # Fix: Could not generate persistent MAC address + sed -i "s/MACAddressPolicy=persistent/MACAddressPolicy=none/g" ${TARGET_DIR}/usr/lib/systemd/network/99-default.link } -function install_hassio_cli() { +function install_hassos_cli() { - sed -i "s|\(root.*\)/bin/sh|\1/usr/sbin/hassio-cli|" ${TARGET_DIR}/etc/passwd + sed -i "s|\(root.*\)/bin/sh|\1/usr/sbin/hassos-cli|" ${TARGET_DIR}/etc/passwd } From 5b3eb8cc7e7d07fe0df2f69c3946afa4a2c1364f Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 14 May 2018 23:38:13 +0200 Subject: [PATCH 005/118] Export cache to external (#18) * Update .dockerignore * Update .dockerignore * Delete .gitignore * Update ova_defconfig * Update enter.sh * Fix cache --- .gitignore | 1 - buildroot-external/configs/ova_defconfig | 3 ++- scripts/enter.sh | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) delete mode 100644 .gitignore diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 8f0d0d552d6..00000000000 --- a/.gitignore +++ /dev/null @@ -1 +0,0 @@ -buildroot/ccache diff --git a/buildroot-external/configs/ova_defconfig b/buildroot-external/configs/ova_defconfig index 0d0dbcecb22..93abc95feb4 100644 --- a/buildroot-external/configs/ova_defconfig +++ b/buildroot-external/configs/ova_defconfig @@ -1,6 +1,7 @@ BR2_x86_64=y +BR2_DL_DIR="/cache/dl" BR2_CCACHE=y -BR2_CCACHE_DIR="$(TOPDIR)/ccache" +BR2_CCACHE_DIR="/cache/cc" BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches $(BR2_EXTERNAL_HASSOS_PATH)/board/ova/patches" BR2_TOOLCHAIN_BUILDROOT_GLIBC=y BR2_GCC_VERSION_7_X=y diff --git a/scripts/enter.sh b/scripts/enter.sh index 1ca96ced3ad..3d5f3d52e5f 100755 --- a/scripts/enter.sh +++ b/scripts/enter.sh @@ -1,4 +1,5 @@ #!/bin/bash modprobe overlayfs + docker build -t hassbuildroot . -docker run -it --rm --privileged -v "$(pwd):/build" hassbuildroot bash +docker run -it --rm --privileged -v $(pwd):/build -v ${CACHE_DIR:=~/hassos-cache}:/cache hassbuildroot bash From 4dc7bfbd2df6e6a2e48680cbff9b82e017ad5b94 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 14 May 2018 23:39:55 +0200 Subject: [PATCH 006/118] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index eb703c87078..e3ba976375d 100644 --- a/README.md +++ b/README.md @@ -45,11 +45,11 @@ Running `sudo ./enter.sh` will get you into the build Docker container. ## Helpers -- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external defconfig BR2_DEFCONFIG=/build/buildroot-external/configs/xy_defconfig` +- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external xy_defconfig` - `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external menuconfig` - `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external linux-menuconfig` - `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external barebox-menuconfig` -- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external savedefconfig BR2_DEFCONFIG=/build/buildroot-external/configs/xy_defconfig` +- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external savedefconfig` - `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external linux-update-defconfig` - `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external barebox-update-defconfig` From d7fa6930c9f10dade0ff6205de7707e15a262fd3 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 14 May 2018 23:41:09 +0200 Subject: [PATCH 007/118] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index e3ba976375d..953edd1a637 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,9 @@ Running `sudo ./enter.sh` will get you into the build Docker container. - `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external menuconfig` - `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external linux-menuconfig` - `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external barebox-menuconfig` +- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external busybox-menuconfig` - `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external savedefconfig` - `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external linux-update-defconfig` - `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external barebox-update-defconfig` +- `make -C /build/buildroot BR2_EXTERNAL=/build/buildroot-external busybox-update-config` From 097eea4872016ce0f1dcc527b3c81f102039c53e Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 15 May 2018 10:42:30 +0200 Subject: [PATCH 008/118] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 953edd1a637..3c3d93d1ba0 100644 --- a/README.md +++ b/README.md @@ -17,11 +17,11 @@ Hass.io OS based on [buildroot](https://buildroot.org/). It's a hypervisor for D ## Configuration -Create a USB stick with a partition named "hassio-config". This partition can include follow files: +Create a USB stick with a partition named "hassos-config". This partition can include follow files: - network-* (NetworkManager keyfiles) - known_hosts (SSH) -- hassio-os-*.ota (Firmware updates) +- hassos*.ota (Firmware updates) # Customize From ff74eb2b93c7cb861bdcf68aadcd43e00c17654b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 15 May 2018 10:43:09 +0200 Subject: [PATCH 009/118] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 3c3d93d1ba0..3be32480299 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,6 @@ Create a USB stick with a partition named "hassos-config". This partition can in # Customize -## Supervisor/Cli - Provide a file with the name `hassos.json` in your data partition and the following structure: ```json From ec8a11051aad84dc294cb4daa1bd8463ca04c167 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 15 May 2018 11:32:24 +0200 Subject: [PATCH 010/118] Update and rename buildroot-external/board/ova/rootfs-overlay/etc/rauc.conf to buildroot-external/rootfs-overlay/etc/rauc/system.conf --- .../etc/rauc.conf => rootfs-overlay/etc/rauc/system.conf} | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) rename buildroot-external/{board/ova/rootfs-overlay/etc/rauc.conf => rootfs-overlay/etc/rauc/system.conf} (83%) diff --git a/buildroot-external/board/ova/rootfs-overlay/etc/rauc.conf b/buildroot-external/rootfs-overlay/etc/rauc/system.conf similarity index 83% rename from buildroot-external/board/ova/rootfs-overlay/etc/rauc.conf rename to buildroot-external/rootfs-overlay/etc/rauc/system.conf index 6f026ab1552..289d4505847 100644 --- a/buildroot-external/board/ova/rootfs-overlay/etc/rauc.conf +++ b/buildroot-external/rootfs-overlay/etc/rauc/system.conf @@ -1,5 +1,7 @@ [system] -compatible=HassOS ova +compatible=%COMPATIBLE% +mountprefix=/run/rauc +statusfile=/mnt/data/rauc.db bootloader=barebox [keyring] From 9a039eddc56784634bbfc349ec23d154b535dba3 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 15 May 2018 11:33:52 +0200 Subject: [PATCH 011/118] Update ova_defconfig --- buildroot-external/configs/ova_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/configs/ova_defconfig b/buildroot-external/configs/ova_defconfig index 93abc95feb4..ba08e6f60bf 100644 --- a/buildroot-external/configs/ova_defconfig +++ b/buildroot-external/configs/ova_defconfig @@ -11,7 +11,7 @@ BR2_TARGET_GENERIC_ISSUE="Welcome to HassOS" BR2_INIT_SYSTEMD=y BR2_TARGET_GENERIC_GETTY_PORT="tty1" # BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set -BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_HASSOS_PATH)/rootfs-overlay $(BR2_EXTERNAL_HASSOS_PATH)/board/ova/rootfs-overlay" +BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_HASSOS_PATH)/rootfs-overlay" BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova" From 280f1a819cf7357b9e6b0bd142cecc321aeda0b3 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 15 May 2018 19:41:32 +0200 Subject: [PATCH 012/118] Setup a PKI for HassOS (#19) * Add ca * Update post-build.sh * Delete keyring.pem --- buildroot-external/ca/dev-ca.pem | 272 ++++++++++++++++++ buildroot-external/ca/provisioning-ca.pem | 112 ++++++++ buildroot-external/ca/rel-ca.pem | 181 ++++++++++++ .../rootfs-overlay/etc/rauc/keyring.pem | 32 --- buildroot-external/scripts/post-build.sh | 10 + 5 files changed, 575 insertions(+), 32 deletions(-) create mode 100644 buildroot-external/ca/dev-ca.pem create mode 100644 buildroot-external/ca/provisioning-ca.pem create mode 100644 buildroot-external/ca/rel-ca.pem delete mode 100644 buildroot-external/rootfs-overlay/etc/rauc/keyring.pem diff --git a/buildroot-external/ca/dev-ca.pem b/buildroot-external/ca/dev-ca.pem new file mode 100644 index 00000000000..a46bd9d68ef --- /dev/null +++ b/buildroot-external/ca/dev-ca.pem @@ -0,0 +1,272 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1 (0x1) + Signature Algorithm: sha256WithRSAEncryption + Issuer: O=HassOS, CN=HassOS Provisioning CA Root + Validity + Not Before: May 15 16:35:54 2018 GMT + Not After : May 14 16:35:54 2028 GMT + Subject: O=HassOS, CN=HassOS Provisioning CA Root + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:a5:81:96:24:f6:eb:ac:0b:10:72:34:c8:41:70: + f5:29:9c:1c:1e:d9:a6:68:a3:ea:c5:e4:68:e7:b5: + 76:2e:13:e0:0e:fe:8e:c4:2f:d2:76:2c:76:63:15: + 8d:7e:7f:8a:9f:d8:9a:66:94:b9:b4:6f:5e:bc:a9: + 59:59:12:fa:bb:7b:af:34:95:79:dd:2d:b1:3e:0e: + 16:27:92:40:9d:15:55:34:b9:7d:dd:63:2e:64:f9: + 65:46:e9:b2:de:66:d8:e5:12:9d:af:ca:db:3e:44: + 15:57:8f:15:17:58:9d:2d:9b:1e:79:7b:ec:eb:28: + b3:11:81:a3:34:bb:b5:5d:08:a4:6b:4e:7e:7e:ec: + d3:e3:b9:d9:2d:66:e8:04:be:09:d3:75:86:8f:86: + 94:01:aa:c1:0d:7e:28:74:27:da:c6:b8:d5:bf:94: + a0:d2:f5:bf:88:72:40:21:fe:4c:aa:39:06:35:29: + ee:c0:f5:f0:f0:85:d0:6b:ea:ee:c7:b7:54:aa:df: + e9:e4:cf:cd:5a:1a:61:e5:63:be:3c:7f:4b:6c:ae: + 79:20:07:e0:44:c5:3d:c2:df:f8:04:64:22:2b:fb: + 11:cf:99:0e:ba:1f:6b:51:56:ea:27:ca:a6:70:76: + 19:2f:16:24:35:d9:0a:05:cf:b6:9d:ae:82:4a:e0: + 5a:c5 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Subject Key Identifier: + 49:69:2D:A8:24:2F:B0:AC:E6:9A:02:6A:D0:FC:9A:AA:73:9B:62:71 + X509v3 Authority Key Identifier: + keyid:49:69:2D:A8:24:2F:B0:AC:E6:9A:02:6A:D0:FC:9A:AA:73:9B:62:71 + DirName:/O=HassOS/CN=HassOS Provisioning CA Root + serial:01 + + X509v3 Basic Constraints: + CA:TRUE + Signature Algorithm: sha256WithRSAEncryption + 08:35:23:fd:fd:da:80:5a:c9:c5:b1:2e:9e:3d:b1:57:7e:ea: + 72:cd:c4:df:b4:5f:a4:47:84:d5:25:6f:c2:27:66:6d:e5:fc: + 91:99:7d:81:7e:38:09:1d:d9:7e:31:fd:db:4b:a3:52:f8:6a: + 98:53:dd:dd:be:21:b3:de:af:01:b5:e4:b1:a6:e4:7b:40:27: + 0c:dc:89:e4:34:78:56:1b:bb:01:e3:2e:90:ee:94:8b:9d:2e: + f7:37:da:4c:b1:02:ef:7d:53:62:7f:9b:3b:e7:70:44:aa:4e: + 5f:d0:16:a5:1a:2b:62:0b:9e:55:07:12:25:3c:bf:c4:26:52: + 5e:10:c5:b6:25:a7:f7:cd:3b:03:07:bb:66:8f:4a:e6:84:c3: + 06:38:43:ab:2b:c3:29:7c:cb:aa:5f:23:2e:a7:e6:6b:5d:e5: + dd:d9:ea:2c:59:46:e5:f3:6c:73:9b:eb:ef:74:56:93:f0:e9: + 3c:17:03:57:b6:17:3f:de:2f:2e:1d:6a:65:d8:71:88:6f:ad: + 19:48:d3:3a:05:46:d2:65:71:fa:97:73:38:0c:1d:d2:83:48: + b1:16:61:7c:f1:db:b6:06:5b:46:8d:45:4c:f4:af:b2:da:b6: + ca:47:54:f6:e7:37:9e:7a:d6:0c:88:58:06:b0:49:b5:25:16: + a0:77:9b:5a +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQsFADA3MQ8wDQYDVQQKDAZIYXNz +T1MxJDAiBgNVBAMMG0hhc3NPUyBQcm92aXNpb25pbmcgQ0EgUm9vdDAeFw0xODA1 +MTUxNjM1NTRaFw0yODA1MTQxNjM1NTRaMDcxDzANBgNVBAoMBkhhc3NPUzEkMCIG +A1UEAwwbSGFzc09TIFByb3Zpc2lvbmluZyBDQSBSb290MIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEApYGWJPbrrAsQcjTIQXD1KZwcHtmmaKPqxeRo57V2 +LhPgDv6OxC/Sdix2YxWNfn+Kn9iaZpS5tG9evKlZWRL6u3uvNJV53S2xPg4WJ5JA +nRVVNLl93WMuZPllRumy3mbY5RKdr8rbPkQVV48VF1idLZseeXvs6yizEYGjNLu1 +XQika05+fuzT47nZLWboBL4J03WGj4aUAarBDX4odCfaxrjVv5Sg0vW/iHJAIf5M +qjkGNSnuwPXw8IXQa+rux7dUqt/p5M/NWhph5WO+PH9LbK55IAfgRMU9wt/4BGQi +K/sRz5kOuh9rUVbqJ8qmcHYZLxYkNdkKBc+2na6CSuBaxQIDAQABo4GRMIGOMB0G +A1UdDgQWBBRJaS2oJC+wrOaaAmrQ/Jqqc5ticTBfBgNVHSMEWDBWgBRJaS2oJC+w +rOaaAmrQ/Jqqc5ticaE7pDkwNzEPMA0GA1UECgwGSGFzc09TMSQwIgYDVQQDDBtI +YXNzT1MgUHJvdmlzaW9uaW5nIENBIFJvb3SCAQEwDAYDVR0TBAUwAwEB/zANBgkq +hkiG9w0BAQsFAAOCAQEACDUj/f3agFrJxbEunj2xV37qcs3E37RfpEeE1SVvwidm +beX8kZl9gX44CR3ZfjH920ujUvhqmFPd3b4hs96vAbXksabke0AnDNyJ5DR4Vhu7 +AeMukO6Ui50u9zfaTLEC731TYn+bO+dwRKpOX9AWpRorYgueVQcSJTy/xCZSXhDF +tiWn9807Awe7Zo9K5oTDBjhDqyvDKXzLql8jLqfma13l3dnqLFlG5fNsc5vr73RW +k/DpPBcDV7YXP94vLh1qZdhxiG+tGUjTOgVG0mVx+pdzOAwd0oNIsRZhfPHbtgZb +Ro1FTPSvstq2ykdU9uc3nnrWDIhYBrBJtSUWoHebWg== +-----END CERTIFICATE----- +-----BEGIN X509 CRL----- +MIIBfDBmMA0GCSqGSIb3DQEBCwUAMDcxDzANBgNVBAoMBkhhc3NPUzEkMCIGA1UE +AwwbSGFzc09TIFByb3Zpc2lvbmluZyBDQSBSb290Fw0xODA1MTUxNjM1NTRaFw0z +MjAxMjIxNjM1NTRaMA0GCSqGSIb3DQEBCwUAA4IBAQAWfPq1Bchq5D2B+baE149H +M9ozBTeICoZJ3xNyVPfce9F2VHQjuXngKCVzCgBxeUNJXVbFdDvd0ybs6SoOojeG +WbIeAwzQ2uwluqy7rMx3bvn+QDVUfUP01e7Wd21m1aR+eas6FKCTwUw9CEHMr34s +3TZOJ4av3vVlYcJbCk5mfRQ5xyf6qxsdi/tWHxchrJNi/X/e6AMy2sJmj8mBvPES +JmjWx97JJISvMYuhWZpbycq+SlvISSbP4IcAYAekGJreHxAXuXr4ELZRQAHTeueH +ID0K1fRJU+LVTaQCZohFoECEMqJhrBVs5CTMG2EyEeqlI3I5PTBAyjO362rNkSQz +-----END X509 CRL----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 2 (0x2) + Signature Algorithm: sha256WithRSAEncryption + Issuer: O=HassOS, CN=HassOS Provisioning CA Root + Validity + Not Before: May 15 16:35:54 2018 GMT + Not After : May 14 16:35:54 2028 GMT + Subject: O=HassOS, CN=HassOS Provisioning CA Release + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b9:38:00:71:51:61:eb:d5:91:87:78:1d:fd:a7: + e9:4e:17:75:50:c7:86:2e:4d:64:e3:32:c6:3a:09: + 13:1a:5d:05:67:af:d5:da:75:c6:cc:b1:b8:c6:b8: + 86:05:bf:da:fe:62:62:81:c2:1a:34:d4:34:10:20: + e3:91:7f:10:d7:f7:18:54:92:02:29:10:8c:39:6b: + 1f:42:87:60:08:15:92:03:1d:0e:da:88:7c:7e:0a: + 38:94:d3:d8:fc:8d:d7:7f:d7:0f:6c:94:5d:82:da: + bd:b8:5e:26:37:72:6a:75:6d:84:05:f1:64:fa:78: + 48:98:33:3d:f9:ae:36:67:98:b9:51:19:8a:84:0b: + 00:18:20:d8:5e:55:22:7b:95:92:e7:81:dd:67:ac: + a0:9d:2e:86:a0:79:ee:8d:00:f6:62:c0:9d:5a:99: + ac:ec:f0:a6:66:af:b6:f5:05:64:66:34:1e:3d:7a: + b4:f5:b5:18:9a:20:e7:d1:a4:36:81:4d:a3:f8:28: + c7:3a:17:a3:c2:0f:a2:95:06:f7:a7:de:83:dd:82: + 72:50:62:b8:24:9d:cc:05:d5:0f:70:1d:98:7f:13: + b2:f3:30:5b:dd:83:24:26:b3:af:ea:b3:5d:8b:b5: + de:b8:0a:1e:13:ba:f6:1d:ae:08:ba:b2:b3:d7:7d: + 4f:af + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Subject Key Identifier: + E6:1B:A0:DC:7E:B3:8F:81:97:8B:01:83:86:D4:33:5D:A2:B4:F4:2B + X509v3 Authority Key Identifier: + keyid:49:69:2D:A8:24:2F:B0:AC:E6:9A:02:6A:D0:FC:9A:AA:73:9B:62:71 + DirName:/O=HassOS/CN=HassOS Provisioning CA Root + serial:01 + + X509v3 Basic Constraints: + CA:TRUE, pathlen:0 + Signature Algorithm: sha256WithRSAEncryption + 63:d9:a4:26:89:fc:4d:0b:e0:51:2f:8e:82:8d:69:9f:1e:fc: + ed:be:73:a8:f4:8c:99:55:c8:36:af:57:80:9f:97:34:a7:47: + fb:ae:ee:8f:03:64:2e:88:59:25:c4:f7:e4:8d:85:4b:b3:4a: + e8:42:84:01:b9:c1:f4:ce:d4:9d:b1:54:34:8d:8d:0d:22:91: + 48:a0:59:f0:ea:b9:f4:a1:0f:63:02:a1:52:cb:c7:92:c0:a7: + 8f:d6:4a:d2:17:36:a5:16:5a:5f:09:1f:48:33:d1:0a:8b:d9: + 41:e9:ae:0d:c6:15:36:63:0e:f8:7b:9d:ab:b0:49:4e:ab:a6: + 1d:54:e5:3f:39:7a:d1:49:31:f7:bf:4f:31:9b:0d:1d:a8:91: + 68:45:b0:fa:e7:e6:9e:2d:37:89:fc:5c:80:64:2c:bb:cd:19: + 8c:d7:5d:d0:b6:76:97:a9:81:e4:2b:77:f9:a3:02:dc:81:d6: + fe:bd:24:0b:36:6a:c2:0f:b0:60:d9:0e:d3:03:ba:80:d4:50: + f1:59:dd:bf:c0:96:ee:2c:06:cc:00:2a:cf:dd:48:55:0d:81: + e6:76:06:92:df:46:29:10:d5:eb:5c:9c:81:75:2d:94:6b:5b: + 2f:15:e3:62:0e:39:53:1c:1f:4a:82:c8:13:c6:ae:91:8c:58: + e7:70:9e:57 +-----BEGIN CERTIFICATE----- +MIIDgTCCAmmgAwIBAgIBAjANBgkqhkiG9w0BAQsFADA3MQ8wDQYDVQQKDAZIYXNz +T1MxJDAiBgNVBAMMG0hhc3NPUyBQcm92aXNpb25pbmcgQ0EgUm9vdDAeFw0xODA1 +MTUxNjM1NTRaFw0yODA1MTQxNjM1NTRaMDoxDzANBgNVBAoMBkhhc3NPUzEnMCUG +A1UEAwweSGFzc09TIFByb3Zpc2lvbmluZyBDQSBSZWxlYXNlMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuTgAcVFh69WRh3gd/afpThd1UMeGLk1k4zLG +OgkTGl0FZ6/V2nXGzLG4xriGBb/a/mJigcIaNNQ0ECDjkX8Q1/cYVJICKRCMOWsf +QodgCBWSAx0O2oh8fgo4lNPY/I3Xf9cPbJRdgtq9uF4mN3JqdW2EBfFk+nhImDM9 ++a42Z5i5URmKhAsAGCDYXlUie5WS54HdZ6ygnS6GoHnujQD2YsCdWpms7PCmZq+2 +9QVkZjQePXq09bUYmiDn0aQ2gU2j+CjHOhejwg+ilQb3p96D3YJyUGK4JJ3MBdUP +cB2YfxOy8zBb3YMkJrOv6rNdi7XeuAoeE7r2Ha4IurKz131PrwIDAQABo4GUMIGR +MB0GA1UdDgQWBBTmG6DcfrOPgZeLAYOG1DNdorT0KzBfBgNVHSMEWDBWgBRJaS2o +JC+wrOaaAmrQ/Jqqc5ticaE7pDkwNzEPMA0GA1UECgwGSGFzc09TMSQwIgYDVQQD +DBtIYXNzT1MgUHJvdmlzaW9uaW5nIENBIFJvb3SCAQEwDwYDVR0TBAgwBgEB/wIB +ADANBgkqhkiG9w0BAQsFAAOCAQEAY9mkJon8TQvgUS+Ogo1pnx787b5zqPSMmVXI +Nq9XgJ+XNKdH+67ujwNkLohZJcT35I2FS7NK6EKEAbnB9M7UnbFUNI2NDSKRSKBZ +8Oq59KEPYwKhUsvHksCnj9ZK0hc2pRZaXwkfSDPRCovZQemuDcYVNmMO+Hudq7BJ +TqumHVTlPzl60Ukx979PMZsNHaiRaEWw+ufmni03ifxcgGQsu80ZjNdd0LZ2l6mB +5Ct3+aMC3IHW/r0kCzZqwg+wYNkO0wO6gNRQ8Vndv8CW7iwGzAAqz91IVQ2B5nYG +kt9GKRDV61ycgXUtlGtbLxXjYg45UxwfSoLIE8aukYxY53CeVw== +-----END CERTIFICATE----- +-----BEGIN X509 CRL----- +MIIBfzBpMA0GCSqGSIb3DQEBCwUAMDoxDzANBgNVBAoMBkhhc3NPUzEnMCUGA1UE +AwweSGFzc09TIFByb3Zpc2lvbmluZyBDQSBSZWxlYXNlFw0xODA1MTUxNjM1NTRa +Fw0zMjAxMjIxNjM1NTRaMA0GCSqGSIb3DQEBCwUAA4IBAQBOSgkmXR88VTMZfsjY +NYHj2eYSSoFCLLW9CepoeCfIYeb81w6DUusZm4oqyvU+yFj5SBxV6X4ZEJaIaj8r +jZtIbx6O6ocMQp9SX1O0OoG+/JJNm/9eezyhuMEK+OEbpVaPpjw6nvizOJMzAx3G +hdW8u7xOVc004uDyCE0KT/5DTqQifsS1C5NhRZTrXSD4b6PY1d2wJx33zNUlD0B4 +7v4f+U9CzQJKY0og7krrlRHfwl8vpMUR4OL1Lxwju8RvcT4u5Do1gp3c7DJ/NJqr +xHQjNseGewHQPrNe4Ix6inwIDRQLimQvF74RlmHf0G+Jf9+m5ixCOWH+ySfReCQ7 +fSiy +-----END X509 CRL----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 3 (0x3) + Signature Algorithm: sha256WithRSAEncryption + Issuer: O=HassOS, CN=HassOS Provisioning CA Root + Validity + Not Before: May 15 16:35:54 2018 GMT + Not After : May 14 16:35:54 2028 GMT + Subject: O=HassOS, CN=HassOS Provisioning CA Development + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:e1:db:e7:26:03:db:fe:b8:87:bd:91:57:9a:27: + ed:ed:f0:7f:5d:18:0a:5a:a0:18:7d:66:ab:4f:90: + ed:c8:ab:de:53:b4:d7:a4:b2:87:e7:d6:28:40:32: + 11:84:b4:fc:0f:33:f3:97:0c:fe:7c:0e:04:5d:cf: + c0:bf:0b:8a:cb:a0:b7:cb:75:e6:b3:76:d0:7b:60: + b7:80:be:83:7a:ef:e0:32:fa:91:43:72:c3:2c:72: + 6c:c7:db:c6:a8:bf:6e:3b:9e:ce:e2:60:6a:b0:7f: + 38:c5:36:b2:32:f5:50:51:d1:0c:43:e1:b8:cf:b0: + fe:10:83:f2:2d:e3:4e:c3:b6:83:e2:17:42:b9:f4: + 31:b4:b7:47:42:ba:b7:3e:91:f0:8a:90:8f:36:66: + ca:6a:9a:6c:96:06:5b:f9:27:4d:ff:94:6b:d3:34: + c2:ad:bc:d4:fa:30:0f:76:93:e4:5d:8d:ac:46:b9: + ab:e3:7b:44:cc:07:7b:67:33:38:40:7a:73:f5:ef: + cd:ab:3a:97:60:77:22:ff:25:83:e6:5f:d7:f6:f1: + d1:f9:5d:63:fa:69:5c:9c:b3:b7:60:07:09:b4:78: + 7d:ca:af:0b:80:46:d5:ee:6e:b1:a4:14:03:ce:7d: + 62:98:e0:71:31:33:84:7d:65:f4:82:7c:6b:49:18: + e6:15 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Subject Key Identifier: + A4:B8:E3:2A:38:E2:F4:A4:DC:67:71:E8:04:EC:05:4E:37:27:06:8F + X509v3 Authority Key Identifier: + keyid:49:69:2D:A8:24:2F:B0:AC:E6:9A:02:6A:D0:FC:9A:AA:73:9B:62:71 + DirName:/O=HassOS/CN=HassOS Provisioning CA Root + serial:01 + + X509v3 Basic Constraints: + CA:TRUE, pathlen:0 + Signature Algorithm: sha256WithRSAEncryption + 8e:c0:e5:ae:72:94:a6:0c:22:53:27:b9:df:e8:01:60:8a:5b: + f1:90:4f:56:e1:63:d7:98:c5:1c:49:5f:98:11:79:62:02:b5: + 49:51:1b:b2:38:df:89:c9:3e:35:63:23:48:5a:5c:b2:bf:4c: + 5f:41:4e:75:b6:51:ce:1b:66:f7:85:96:b7:f2:33:7d:6e:42: + 17:60:15:14:18:6f:9f:fb:9b:21:01:28:b5:c7:bd:0c:a4:2c: + 2c:09:a6:5f:ca:b8:f9:02:65:97:30:22:3c:b9:3a:8f:04:31: + 21:d0:ea:66:90:12:fa:e8:10:62:c4:ac:30:3a:e1:29:e1:e2: + f0:9b:5f:7f:1e:0d:e8:6b:a8:a4:3c:6c:09:97:b2:ab:bf:58: + 16:cc:6f:62:0b:e7:a1:d6:06:f0:aa:7d:be:1f:e4:00:14:d0: + 2a:9c:a7:7d:99:90:74:d2:97:76:f3:72:c0:bf:83:40:41:6b: + 97:ee:ac:a0:ec:5e:79:ba:74:51:ef:d2:22:7f:c8:20:a7:39: + c6:8f:2b:a8:aa:ad:9e:1b:5e:fe:61:b0:d7:f8:94:6b:64:3c: + 3d:9f:da:4e:59:e8:95:f9:58:81:55:4e:ca:dd:93:24:cf:97: + 4a:0b:47:f2:8c:c8:49:c7:16:cd:69:c0:b6:62:91:19:ae:c9: + 15:ba:99:78 +-----BEGIN CERTIFICATE----- +MIIDhTCCAm2gAwIBAgIBAzANBgkqhkiG9w0BAQsFADA3MQ8wDQYDVQQKDAZIYXNz +T1MxJDAiBgNVBAMMG0hhc3NPUyBQcm92aXNpb25pbmcgQ0EgUm9vdDAeFw0xODA1 +MTUxNjM1NTRaFw0yODA1MTQxNjM1NTRaMD4xDzANBgNVBAoMBkhhc3NPUzErMCkG +A1UEAwwiSGFzc09TIFByb3Zpc2lvbmluZyBDQSBEZXZlbG9wbWVudDCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAOHb5yYD2/64h72RV5on7e3wf10YClqg +GH1mq0+Q7cir3lO016Syh+fWKEAyEYS0/A8z85cM/nwOBF3PwL8Lisugt8t15rN2 +0Htgt4C+g3rv4DL6kUNywyxybMfbxqi/bjuezuJgarB/OMU2sjL1UFHRDEPhuM+w +/hCD8i3jTsO2g+IXQrn0MbS3R0K6tz6R8IqQjzZmymqabJYGW/knTf+Ua9M0wq28 +1PowD3aT5F2NrEa5q+N7RMwHe2czOEB6c/Xvzas6l2B3Iv8lg+Zf1/bx0fldY/pp +XJyzt2AHCbR4fcqvC4BG1e5usaQUA859YpjgcTEzhH1l9IJ8a0kY5hUCAwEAAaOB +lDCBkTAdBgNVHQ4EFgQUpLjjKjji9KTcZ3HoBOwFTjcnBo8wXwYDVR0jBFgwVoAU +SWktqCQvsKzmmgJq0PyaqnObYnGhO6Q5MDcxDzANBgNVBAoMBkhhc3NPUzEkMCIG +A1UEAwwbSGFzc09TIFByb3Zpc2lvbmluZyBDQSBSb290ggEBMA8GA1UdEwQIMAYB +Af8CAQAwDQYJKoZIhvcNAQELBQADggEBAI7A5a5ylKYMIlMnud/oAWCKW/GQT1bh +Y9eYxRxJX5gReWICtUlRG7I434nJPjVjI0haXLK/TF9BTnW2Uc4bZveFlrfyM31u +QhdgFRQYb5/7myEBKLXHvQykLCwJpl/KuPkCZZcwIjy5Oo8EMSHQ6maQEvroEGLE +rDA64Snh4vCbX38eDehrqKQ8bAmXsqu/WBbMb2IL56HWBvCqfb4f5AAU0Cqcp32Z +kHTSl3bzcsC/g0BBa5furKDsXnm6dFHv0iJ/yCCnOcaPK6iqrZ4bXv5hsNf4lGtk +PD2f2k5Z6JX5WIFVTsrdkyTPl0oLR/KMyEnHFs1pwLZikRmuyRW6mXg= +-----END CERTIFICATE----- +-----BEGIN X509 CRL----- +MIIBgzBtMA0GCSqGSIb3DQEBCwUAMD4xDzANBgNVBAoMBkhhc3NPUzErMCkGA1UE +AwwiSGFzc09TIFByb3Zpc2lvbmluZyBDQSBEZXZlbG9wbWVudBcNMTgwNTE1MTYz +NTU0WhcNMzIwMTIyMTYzNTU0WjANBgkqhkiG9w0BAQsFAAOCAQEAhmHxjIYZ+J7U +/Ih4vWTakmjSQgD+cvhOedUMxBBwxerZ2qKB2t3LGSBKjVgOThL84HppNP/Y1Hqs +Kq3RD57aL2ZNdQeP3xXjotb/LXsO8KjNi1SeFFIdXkQ8qFVyXkrbqM2h8PJE3Cu5 +yeKJaQytPPl90scqmyS07bfI6akwNyg4W6dKQ8KDQrs3DV+Q1xGff6mUgH/6eTIa +lg8OTjh6yI1+XZr0Yz9bNo0/3AOMTbNTYZMnZTapD6r8k2r3pr7FQ6lIyHaCAUVF +TrWQsqmjuQ2uoj0VZvjKxje8VggNv0NFKg8W3l6p7ng1SVLdzw7i7RIVb+iF9BJC +N373ui3HSw== +-----END X509 CRL----- diff --git a/buildroot-external/ca/provisioning-ca.pem b/buildroot-external/ca/provisioning-ca.pem new file mode 100644 index 00000000000..0181b343a96 --- /dev/null +++ b/buildroot-external/ca/provisioning-ca.pem @@ -0,0 +1,112 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1 (0x1) + Signature Algorithm: sha256WithRSAEncryption + Issuer: O=HassOS, CN=HassOS Provisioning CA Root + Validity + Not Before: May 15 16:35:54 2018 GMT + Not After : May 14 16:35:54 2028 GMT + Subject: O=HassOS, CN=HassOS Provisioning CA Root + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:a5:81:96:24:f6:eb:ac:0b:10:72:34:c8:41:70: + f5:29:9c:1c:1e:d9:a6:68:a3:ea:c5:e4:68:e7:b5: + 76:2e:13:e0:0e:fe:8e:c4:2f:d2:76:2c:76:63:15: + 8d:7e:7f:8a:9f:d8:9a:66:94:b9:b4:6f:5e:bc:a9: + 59:59:12:fa:bb:7b:af:34:95:79:dd:2d:b1:3e:0e: + 16:27:92:40:9d:15:55:34:b9:7d:dd:63:2e:64:f9: + 65:46:e9:b2:de:66:d8:e5:12:9d:af:ca:db:3e:44: + 15:57:8f:15:17:58:9d:2d:9b:1e:79:7b:ec:eb:28: + b3:11:81:a3:34:bb:b5:5d:08:a4:6b:4e:7e:7e:ec: + d3:e3:b9:d9:2d:66:e8:04:be:09:d3:75:86:8f:86: + 94:01:aa:c1:0d:7e:28:74:27:da:c6:b8:d5:bf:94: + a0:d2:f5:bf:88:72:40:21:fe:4c:aa:39:06:35:29: + ee:c0:f5:f0:f0:85:d0:6b:ea:ee:c7:b7:54:aa:df: + e9:e4:cf:cd:5a:1a:61:e5:63:be:3c:7f:4b:6c:ae: + 79:20:07:e0:44:c5:3d:c2:df:f8:04:64:22:2b:fb: + 11:cf:99:0e:ba:1f:6b:51:56:ea:27:ca:a6:70:76: + 19:2f:16:24:35:d9:0a:05:cf:b6:9d:ae:82:4a:e0: + 5a:c5 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Subject Key Identifier: + 49:69:2D:A8:24:2F:B0:AC:E6:9A:02:6A:D0:FC:9A:AA:73:9B:62:71 + X509v3 Authority Key Identifier: + keyid:49:69:2D:A8:24:2F:B0:AC:E6:9A:02:6A:D0:FC:9A:AA:73:9B:62:71 + DirName:/O=HassOS/CN=HassOS Provisioning CA Root + serial:01 + + X509v3 Basic Constraints: + CA:TRUE + Signature Algorithm: sha256WithRSAEncryption + 08:35:23:fd:fd:da:80:5a:c9:c5:b1:2e:9e:3d:b1:57:7e:ea: + 72:cd:c4:df:b4:5f:a4:47:84:d5:25:6f:c2:27:66:6d:e5:fc: + 91:99:7d:81:7e:38:09:1d:d9:7e:31:fd:db:4b:a3:52:f8:6a: + 98:53:dd:dd:be:21:b3:de:af:01:b5:e4:b1:a6:e4:7b:40:27: + 0c:dc:89:e4:34:78:56:1b:bb:01:e3:2e:90:ee:94:8b:9d:2e: + f7:37:da:4c:b1:02:ef:7d:53:62:7f:9b:3b:e7:70:44:aa:4e: + 5f:d0:16:a5:1a:2b:62:0b:9e:55:07:12:25:3c:bf:c4:26:52: + 5e:10:c5:b6:25:a7:f7:cd:3b:03:07:bb:66:8f:4a:e6:84:c3: + 06:38:43:ab:2b:c3:29:7c:cb:aa:5f:23:2e:a7:e6:6b:5d:e5: + dd:d9:ea:2c:59:46:e5:f3:6c:73:9b:eb:ef:74:56:93:f0:e9: + 3c:17:03:57:b6:17:3f:de:2f:2e:1d:6a:65:d8:71:88:6f:ad: + 19:48:d3:3a:05:46:d2:65:71:fa:97:73:38:0c:1d:d2:83:48: + b1:16:61:7c:f1:db:b6:06:5b:46:8d:45:4c:f4:af:b2:da:b6: + ca:47:54:f6:e7:37:9e:7a:d6:0c:88:58:06:b0:49:b5:25:16: + a0:77:9b:5a +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQsFADA3MQ8wDQYDVQQKDAZIYXNz +T1MxJDAiBgNVBAMMG0hhc3NPUyBQcm92aXNpb25pbmcgQ0EgUm9vdDAeFw0xODA1 +MTUxNjM1NTRaFw0yODA1MTQxNjM1NTRaMDcxDzANBgNVBAoMBkhhc3NPUzEkMCIG +A1UEAwwbSGFzc09TIFByb3Zpc2lvbmluZyBDQSBSb290MIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEApYGWJPbrrAsQcjTIQXD1KZwcHtmmaKPqxeRo57V2 +LhPgDv6OxC/Sdix2YxWNfn+Kn9iaZpS5tG9evKlZWRL6u3uvNJV53S2xPg4WJ5JA +nRVVNLl93WMuZPllRumy3mbY5RKdr8rbPkQVV48VF1idLZseeXvs6yizEYGjNLu1 +XQika05+fuzT47nZLWboBL4J03WGj4aUAarBDX4odCfaxrjVv5Sg0vW/iHJAIf5M +qjkGNSnuwPXw8IXQa+rux7dUqt/p5M/NWhph5WO+PH9LbK55IAfgRMU9wt/4BGQi +K/sRz5kOuh9rUVbqJ8qmcHYZLxYkNdkKBc+2na6CSuBaxQIDAQABo4GRMIGOMB0G +A1UdDgQWBBRJaS2oJC+wrOaaAmrQ/Jqqc5ticTBfBgNVHSMEWDBWgBRJaS2oJC+w +rOaaAmrQ/Jqqc5ticaE7pDkwNzEPMA0GA1UECgwGSGFzc09TMSQwIgYDVQQDDBtI +YXNzT1MgUHJvdmlzaW9uaW5nIENBIFJvb3SCAQEwDAYDVR0TBAUwAwEB/zANBgkq +hkiG9w0BAQsFAAOCAQEACDUj/f3agFrJxbEunj2xV37qcs3E37RfpEeE1SVvwidm +beX8kZl9gX44CR3ZfjH920ujUvhqmFPd3b4hs96vAbXksabke0AnDNyJ5DR4Vhu7 +AeMukO6Ui50u9zfaTLEC731TYn+bO+dwRKpOX9AWpRorYgueVQcSJTy/xCZSXhDF +tiWn9807Awe7Zo9K5oTDBjhDqyvDKXzLql8jLqfma13l3dnqLFlG5fNsc5vr73RW +k/DpPBcDV7YXP94vLh1qZdhxiG+tGUjTOgVG0mVx+pdzOAwd0oNIsRZhfPHbtgZb +Ro1FTPSvstq2ykdU9uc3nnrWDIhYBrBJtSUWoHebWg== +-----END CERTIFICATE----- +-----BEGIN X509 CRL----- +MIIBfDBmMA0GCSqGSIb3DQEBCwUAMDcxDzANBgNVBAoMBkhhc3NPUzEkMCIGA1UE +AwwbSGFzc09TIFByb3Zpc2lvbmluZyBDQSBSb290Fw0xODA1MTUxNjM1NTRaFw0z +MjAxMjIxNjM1NTRaMA0GCSqGSIb3DQEBCwUAA4IBAQAWfPq1Bchq5D2B+baE149H +M9ozBTeICoZJ3xNyVPfce9F2VHQjuXngKCVzCgBxeUNJXVbFdDvd0ybs6SoOojeG +WbIeAwzQ2uwluqy7rMx3bvn+QDVUfUP01e7Wd21m1aR+eas6FKCTwUw9CEHMr34s +3TZOJ4av3vVlYcJbCk5mfRQ5xyf6qxsdi/tWHxchrJNi/X/e6AMy2sJmj8mBvPES +JmjWx97JJISvMYuhWZpbycq+SlvISSbP4IcAYAekGJreHxAXuXr4ELZRQAHTeueH +ID0K1fRJU+LVTaQCZohFoECEMqJhrBVs5CTMG2EyEeqlI3I5PTBAyjO362rNkSQz +-----END X509 CRL----- +-----BEGIN X509 CRL----- +MIIBfzBpMA0GCSqGSIb3DQEBCwUAMDoxDzANBgNVBAoMBkhhc3NPUzEnMCUGA1UE +AwweSGFzc09TIFByb3Zpc2lvbmluZyBDQSBSZWxlYXNlFw0xODA1MTUxNjM1NTRa +Fw0zMjAxMjIxNjM1NTRaMA0GCSqGSIb3DQEBCwUAA4IBAQBOSgkmXR88VTMZfsjY +NYHj2eYSSoFCLLW9CepoeCfIYeb81w6DUusZm4oqyvU+yFj5SBxV6X4ZEJaIaj8r +jZtIbx6O6ocMQp9SX1O0OoG+/JJNm/9eezyhuMEK+OEbpVaPpjw6nvizOJMzAx3G +hdW8u7xOVc004uDyCE0KT/5DTqQifsS1C5NhRZTrXSD4b6PY1d2wJx33zNUlD0B4 +7v4f+U9CzQJKY0og7krrlRHfwl8vpMUR4OL1Lxwju8RvcT4u5Do1gp3c7DJ/NJqr +xHQjNseGewHQPrNe4Ix6inwIDRQLimQvF74RlmHf0G+Jf9+m5ixCOWH+ySfReCQ7 +fSiy +-----END X509 CRL----- +-----BEGIN X509 CRL----- +MIIBgzBtMA0GCSqGSIb3DQEBCwUAMD4xDzANBgNVBAoMBkhhc3NPUzErMCkGA1UE +AwwiSGFzc09TIFByb3Zpc2lvbmluZyBDQSBEZXZlbG9wbWVudBcNMTgwNTE1MTYz +NTU0WhcNMzIwMTIyMTYzNTU0WjANBgkqhkiG9w0BAQsFAAOCAQEAhmHxjIYZ+J7U +/Ih4vWTakmjSQgD+cvhOedUMxBBwxerZ2qKB2t3LGSBKjVgOThL84HppNP/Y1Hqs +Kq3RD57aL2ZNdQeP3xXjotb/LXsO8KjNi1SeFFIdXkQ8qFVyXkrbqM2h8PJE3Cu5 +yeKJaQytPPl90scqmyS07bfI6akwNyg4W6dKQ8KDQrs3DV+Q1xGff6mUgH/6eTIa +lg8OTjh6yI1+XZr0Yz9bNo0/3AOMTbNTYZMnZTapD6r8k2r3pr7FQ6lIyHaCAUVF +TrWQsqmjuQ2uoj0VZvjKxje8VggNv0NFKg8W3l6p7ng1SVLdzw7i7RIVb+iF9BJC +N373ui3HSw== +-----END X509 CRL----- diff --git a/buildroot-external/ca/rel-ca.pem b/buildroot-external/ca/rel-ca.pem new file mode 100644 index 00000000000..08fe9d5d025 --- /dev/null +++ b/buildroot-external/ca/rel-ca.pem @@ -0,0 +1,181 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1 (0x1) + Signature Algorithm: sha256WithRSAEncryption + Issuer: O=HassOS, CN=HassOS Provisioning CA Root + Validity + Not Before: May 15 16:35:54 2018 GMT + Not After : May 14 16:35:54 2028 GMT + Subject: O=HassOS, CN=HassOS Provisioning CA Root + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:a5:81:96:24:f6:eb:ac:0b:10:72:34:c8:41:70: + f5:29:9c:1c:1e:d9:a6:68:a3:ea:c5:e4:68:e7:b5: + 76:2e:13:e0:0e:fe:8e:c4:2f:d2:76:2c:76:63:15: + 8d:7e:7f:8a:9f:d8:9a:66:94:b9:b4:6f:5e:bc:a9: + 59:59:12:fa:bb:7b:af:34:95:79:dd:2d:b1:3e:0e: + 16:27:92:40:9d:15:55:34:b9:7d:dd:63:2e:64:f9: + 65:46:e9:b2:de:66:d8:e5:12:9d:af:ca:db:3e:44: + 15:57:8f:15:17:58:9d:2d:9b:1e:79:7b:ec:eb:28: + b3:11:81:a3:34:bb:b5:5d:08:a4:6b:4e:7e:7e:ec: + d3:e3:b9:d9:2d:66:e8:04:be:09:d3:75:86:8f:86: + 94:01:aa:c1:0d:7e:28:74:27:da:c6:b8:d5:bf:94: + a0:d2:f5:bf:88:72:40:21:fe:4c:aa:39:06:35:29: + ee:c0:f5:f0:f0:85:d0:6b:ea:ee:c7:b7:54:aa:df: + e9:e4:cf:cd:5a:1a:61:e5:63:be:3c:7f:4b:6c:ae: + 79:20:07:e0:44:c5:3d:c2:df:f8:04:64:22:2b:fb: + 11:cf:99:0e:ba:1f:6b:51:56:ea:27:ca:a6:70:76: + 19:2f:16:24:35:d9:0a:05:cf:b6:9d:ae:82:4a:e0: + 5a:c5 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Subject Key Identifier: + 49:69:2D:A8:24:2F:B0:AC:E6:9A:02:6A:D0:FC:9A:AA:73:9B:62:71 + X509v3 Authority Key Identifier: + keyid:49:69:2D:A8:24:2F:B0:AC:E6:9A:02:6A:D0:FC:9A:AA:73:9B:62:71 + DirName:/O=HassOS/CN=HassOS Provisioning CA Root + serial:01 + + X509v3 Basic Constraints: + CA:TRUE + Signature Algorithm: sha256WithRSAEncryption + 08:35:23:fd:fd:da:80:5a:c9:c5:b1:2e:9e:3d:b1:57:7e:ea: + 72:cd:c4:df:b4:5f:a4:47:84:d5:25:6f:c2:27:66:6d:e5:fc: + 91:99:7d:81:7e:38:09:1d:d9:7e:31:fd:db:4b:a3:52:f8:6a: + 98:53:dd:dd:be:21:b3:de:af:01:b5:e4:b1:a6:e4:7b:40:27: + 0c:dc:89:e4:34:78:56:1b:bb:01:e3:2e:90:ee:94:8b:9d:2e: + f7:37:da:4c:b1:02:ef:7d:53:62:7f:9b:3b:e7:70:44:aa:4e: + 5f:d0:16:a5:1a:2b:62:0b:9e:55:07:12:25:3c:bf:c4:26:52: + 5e:10:c5:b6:25:a7:f7:cd:3b:03:07:bb:66:8f:4a:e6:84:c3: + 06:38:43:ab:2b:c3:29:7c:cb:aa:5f:23:2e:a7:e6:6b:5d:e5: + dd:d9:ea:2c:59:46:e5:f3:6c:73:9b:eb:ef:74:56:93:f0:e9: + 3c:17:03:57:b6:17:3f:de:2f:2e:1d:6a:65:d8:71:88:6f:ad: + 19:48:d3:3a:05:46:d2:65:71:fa:97:73:38:0c:1d:d2:83:48: + b1:16:61:7c:f1:db:b6:06:5b:46:8d:45:4c:f4:af:b2:da:b6: + ca:47:54:f6:e7:37:9e:7a:d6:0c:88:58:06:b0:49:b5:25:16: + a0:77:9b:5a +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQsFADA3MQ8wDQYDVQQKDAZIYXNz +T1MxJDAiBgNVBAMMG0hhc3NPUyBQcm92aXNpb25pbmcgQ0EgUm9vdDAeFw0xODA1 +MTUxNjM1NTRaFw0yODA1MTQxNjM1NTRaMDcxDzANBgNVBAoMBkhhc3NPUzEkMCIG +A1UEAwwbSGFzc09TIFByb3Zpc2lvbmluZyBDQSBSb290MIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEApYGWJPbrrAsQcjTIQXD1KZwcHtmmaKPqxeRo57V2 +LhPgDv6OxC/Sdix2YxWNfn+Kn9iaZpS5tG9evKlZWRL6u3uvNJV53S2xPg4WJ5JA +nRVVNLl93WMuZPllRumy3mbY5RKdr8rbPkQVV48VF1idLZseeXvs6yizEYGjNLu1 +XQika05+fuzT47nZLWboBL4J03WGj4aUAarBDX4odCfaxrjVv5Sg0vW/iHJAIf5M +qjkGNSnuwPXw8IXQa+rux7dUqt/p5M/NWhph5WO+PH9LbK55IAfgRMU9wt/4BGQi +K/sRz5kOuh9rUVbqJ8qmcHYZLxYkNdkKBc+2na6CSuBaxQIDAQABo4GRMIGOMB0G +A1UdDgQWBBRJaS2oJC+wrOaaAmrQ/Jqqc5ticTBfBgNVHSMEWDBWgBRJaS2oJC+w +rOaaAmrQ/Jqqc5ticaE7pDkwNzEPMA0GA1UECgwGSGFzc09TMSQwIgYDVQQDDBtI +YXNzT1MgUHJvdmlzaW9uaW5nIENBIFJvb3SCAQEwDAYDVR0TBAUwAwEB/zANBgkq +hkiG9w0BAQsFAAOCAQEACDUj/f3agFrJxbEunj2xV37qcs3E37RfpEeE1SVvwidm +beX8kZl9gX44CR3ZfjH920ujUvhqmFPd3b4hs96vAbXksabke0AnDNyJ5DR4Vhu7 +AeMukO6Ui50u9zfaTLEC731TYn+bO+dwRKpOX9AWpRorYgueVQcSJTy/xCZSXhDF +tiWn9807Awe7Zo9K5oTDBjhDqyvDKXzLql8jLqfma13l3dnqLFlG5fNsc5vr73RW +k/DpPBcDV7YXP94vLh1qZdhxiG+tGUjTOgVG0mVx+pdzOAwd0oNIsRZhfPHbtgZb +Ro1FTPSvstq2ykdU9uc3nnrWDIhYBrBJtSUWoHebWg== +-----END CERTIFICATE----- +-----BEGIN X509 CRL----- +MIIBfDBmMA0GCSqGSIb3DQEBCwUAMDcxDzANBgNVBAoMBkhhc3NPUzEkMCIGA1UE +AwwbSGFzc09TIFByb3Zpc2lvbmluZyBDQSBSb290Fw0xODA1MTUxNjM1NTRaFw0z +MjAxMjIxNjM1NTRaMA0GCSqGSIb3DQEBCwUAA4IBAQAWfPq1Bchq5D2B+baE149H +M9ozBTeICoZJ3xNyVPfce9F2VHQjuXngKCVzCgBxeUNJXVbFdDvd0ybs6SoOojeG +WbIeAwzQ2uwluqy7rMx3bvn+QDVUfUP01e7Wd21m1aR+eas6FKCTwUw9CEHMr34s +3TZOJ4av3vVlYcJbCk5mfRQ5xyf6qxsdi/tWHxchrJNi/X/e6AMy2sJmj8mBvPES +JmjWx97JJISvMYuhWZpbycq+SlvISSbP4IcAYAekGJreHxAXuXr4ELZRQAHTeueH +ID0K1fRJU+LVTaQCZohFoECEMqJhrBVs5CTMG2EyEeqlI3I5PTBAyjO362rNkSQz +-----END X509 CRL----- +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 2 (0x2) + Signature Algorithm: sha256WithRSAEncryption + Issuer: O=HassOS, CN=HassOS Provisioning CA Root + Validity + Not Before: May 15 16:35:54 2018 GMT + Not After : May 14 16:35:54 2028 GMT + Subject: O=HassOS, CN=HassOS Provisioning CA Release + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (2048 bit) + Modulus: + 00:b9:38:00:71:51:61:eb:d5:91:87:78:1d:fd:a7: + e9:4e:17:75:50:c7:86:2e:4d:64:e3:32:c6:3a:09: + 13:1a:5d:05:67:af:d5:da:75:c6:cc:b1:b8:c6:b8: + 86:05:bf:da:fe:62:62:81:c2:1a:34:d4:34:10:20: + e3:91:7f:10:d7:f7:18:54:92:02:29:10:8c:39:6b: + 1f:42:87:60:08:15:92:03:1d:0e:da:88:7c:7e:0a: + 38:94:d3:d8:fc:8d:d7:7f:d7:0f:6c:94:5d:82:da: + bd:b8:5e:26:37:72:6a:75:6d:84:05:f1:64:fa:78: + 48:98:33:3d:f9:ae:36:67:98:b9:51:19:8a:84:0b: + 00:18:20:d8:5e:55:22:7b:95:92:e7:81:dd:67:ac: + a0:9d:2e:86:a0:79:ee:8d:00:f6:62:c0:9d:5a:99: + ac:ec:f0:a6:66:af:b6:f5:05:64:66:34:1e:3d:7a: + b4:f5:b5:18:9a:20:e7:d1:a4:36:81:4d:a3:f8:28: + c7:3a:17:a3:c2:0f:a2:95:06:f7:a7:de:83:dd:82: + 72:50:62:b8:24:9d:cc:05:d5:0f:70:1d:98:7f:13: + b2:f3:30:5b:dd:83:24:26:b3:af:ea:b3:5d:8b:b5: + de:b8:0a:1e:13:ba:f6:1d:ae:08:ba:b2:b3:d7:7d: + 4f:af + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Subject Key Identifier: + E6:1B:A0:DC:7E:B3:8F:81:97:8B:01:83:86:D4:33:5D:A2:B4:F4:2B + X509v3 Authority Key Identifier: + keyid:49:69:2D:A8:24:2F:B0:AC:E6:9A:02:6A:D0:FC:9A:AA:73:9B:62:71 + DirName:/O=HassOS/CN=HassOS Provisioning CA Root + serial:01 + + X509v3 Basic Constraints: + CA:TRUE, pathlen:0 + Signature Algorithm: sha256WithRSAEncryption + 63:d9:a4:26:89:fc:4d:0b:e0:51:2f:8e:82:8d:69:9f:1e:fc: + ed:be:73:a8:f4:8c:99:55:c8:36:af:57:80:9f:97:34:a7:47: + fb:ae:ee:8f:03:64:2e:88:59:25:c4:f7:e4:8d:85:4b:b3:4a: + e8:42:84:01:b9:c1:f4:ce:d4:9d:b1:54:34:8d:8d:0d:22:91: + 48:a0:59:f0:ea:b9:f4:a1:0f:63:02:a1:52:cb:c7:92:c0:a7: + 8f:d6:4a:d2:17:36:a5:16:5a:5f:09:1f:48:33:d1:0a:8b:d9: + 41:e9:ae:0d:c6:15:36:63:0e:f8:7b:9d:ab:b0:49:4e:ab:a6: + 1d:54:e5:3f:39:7a:d1:49:31:f7:bf:4f:31:9b:0d:1d:a8:91: + 68:45:b0:fa:e7:e6:9e:2d:37:89:fc:5c:80:64:2c:bb:cd:19: + 8c:d7:5d:d0:b6:76:97:a9:81:e4:2b:77:f9:a3:02:dc:81:d6: + fe:bd:24:0b:36:6a:c2:0f:b0:60:d9:0e:d3:03:ba:80:d4:50: + f1:59:dd:bf:c0:96:ee:2c:06:cc:00:2a:cf:dd:48:55:0d:81: + e6:76:06:92:df:46:29:10:d5:eb:5c:9c:81:75:2d:94:6b:5b: + 2f:15:e3:62:0e:39:53:1c:1f:4a:82:c8:13:c6:ae:91:8c:58: + e7:70:9e:57 +-----BEGIN CERTIFICATE----- +MIIDgTCCAmmgAwIBAgIBAjANBgkqhkiG9w0BAQsFADA3MQ8wDQYDVQQKDAZIYXNz +T1MxJDAiBgNVBAMMG0hhc3NPUyBQcm92aXNpb25pbmcgQ0EgUm9vdDAeFw0xODA1 +MTUxNjM1NTRaFw0yODA1MTQxNjM1NTRaMDoxDzANBgNVBAoMBkhhc3NPUzEnMCUG +A1UEAwweSGFzc09TIFByb3Zpc2lvbmluZyBDQSBSZWxlYXNlMIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuTgAcVFh69WRh3gd/afpThd1UMeGLk1k4zLG +OgkTGl0FZ6/V2nXGzLG4xriGBb/a/mJigcIaNNQ0ECDjkX8Q1/cYVJICKRCMOWsf +QodgCBWSAx0O2oh8fgo4lNPY/I3Xf9cPbJRdgtq9uF4mN3JqdW2EBfFk+nhImDM9 ++a42Z5i5URmKhAsAGCDYXlUie5WS54HdZ6ygnS6GoHnujQD2YsCdWpms7PCmZq+2 +9QVkZjQePXq09bUYmiDn0aQ2gU2j+CjHOhejwg+ilQb3p96D3YJyUGK4JJ3MBdUP +cB2YfxOy8zBb3YMkJrOv6rNdi7XeuAoeE7r2Ha4IurKz131PrwIDAQABo4GUMIGR +MB0GA1UdDgQWBBTmG6DcfrOPgZeLAYOG1DNdorT0KzBfBgNVHSMEWDBWgBRJaS2o +JC+wrOaaAmrQ/Jqqc5ticaE7pDkwNzEPMA0GA1UECgwGSGFzc09TMSQwIgYDVQQD +DBtIYXNzT1MgUHJvdmlzaW9uaW5nIENBIFJvb3SCAQEwDwYDVR0TBAgwBgEB/wIB +ADANBgkqhkiG9w0BAQsFAAOCAQEAY9mkJon8TQvgUS+Ogo1pnx787b5zqPSMmVXI +Nq9XgJ+XNKdH+67ujwNkLohZJcT35I2FS7NK6EKEAbnB9M7UnbFUNI2NDSKRSKBZ +8Oq59KEPYwKhUsvHksCnj9ZK0hc2pRZaXwkfSDPRCovZQemuDcYVNmMO+Hudq7BJ +TqumHVTlPzl60Ukx979PMZsNHaiRaEWw+ufmni03ifxcgGQsu80ZjNdd0LZ2l6mB +5Ct3+aMC3IHW/r0kCzZqwg+wYNkO0wO6gNRQ8Vndv8CW7iwGzAAqz91IVQ2B5nYG +kt9GKRDV61ycgXUtlGtbLxXjYg45UxwfSoLIE8aukYxY53CeVw== +-----END CERTIFICATE----- +-----BEGIN X509 CRL----- +MIIBfzBpMA0GCSqGSIb3DQEBCwUAMDoxDzANBgNVBAoMBkhhc3NPUzEnMCUGA1UE +AwweSGFzc09TIFByb3Zpc2lvbmluZyBDQSBSZWxlYXNlFw0xODA1MTUxNjM1NTRa +Fw0zMjAxMjIxNjM1NTRaMA0GCSqGSIb3DQEBCwUAA4IBAQBOSgkmXR88VTMZfsjY +NYHj2eYSSoFCLLW9CepoeCfIYeb81w6DUusZm4oqyvU+yFj5SBxV6X4ZEJaIaj8r +jZtIbx6O6ocMQp9SX1O0OoG+/JJNm/9eezyhuMEK+OEbpVaPpjw6nvizOJMzAx3G +hdW8u7xOVc004uDyCE0KT/5DTqQifsS1C5NhRZTrXSD4b6PY1d2wJx33zNUlD0B4 +7v4f+U9CzQJKY0og7krrlRHfwl8vpMUR4OL1Lxwju8RvcT4u5Do1gp3c7DJ/NJqr +xHQjNseGewHQPrNe4Ix6inwIDRQLimQvF74RlmHf0G+Jf9+m5ixCOWH+ySfReCQ7 +fSiy +-----END X509 CRL----- diff --git a/buildroot-external/rootfs-overlay/etc/rauc/keyring.pem b/buildroot-external/rootfs-overlay/etc/rauc/keyring.pem deleted file mode 100644 index a5525903f6c..00000000000 --- a/buildroot-external/rootfs-overlay/etc/rauc/keyring.pem +++ /dev/null @@ -1,32 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIFlTCCA32gAwIBAgIJAI6l4ha3dDFUMA0GCSqGSIb3DQEBCwUAMGExCzAJBgNV -BAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMRcwFQYDVQQKDA5Ib21lLUFzc2lz -dGFudDESMBAGA1UECwwJSGFzc0lPLU9TMRAwDgYDVQQDDAdoYXNzLmlvMB4XDTE4 -MDMxOTIyMDUxMVoXDTE4MDQxODIyMDUxMVowYTELMAkGA1UEBhMCQVUxEzARBgNV -BAgMClNvbWUtU3RhdGUxFzAVBgNVBAoMDkhvbWUtQXNzaXN0YW50MRIwEAYDVQQL -DAlIYXNzSU8tT1MxEDAOBgNVBAMMB2hhc3MuaW8wggIiMA0GCSqGSIb3DQEBAQUA -A4ICDwAwggIKAoICAQDimsS43XuZnjiGn1liLeVzTHPzeJP3cqUpHfjfh5UWZ57Y -oQqMTmsC9t/5cbjiGj7RoSdv8P9KJzYoaPNOST+nflR5k0RM3EK2t/5nlUNTFKQi -83xyECWeeOLypQRrT4oHFeURBkIExQwjEGMs1a3hZcS2cVjAe8qUjDNmQR+3AYB9 -aCt26cRgYGowJAgZwv2GGQTMLHxI+LQV7odSKhxY8L+GheeoyNHVyzBhrPBtA0B1 -/EPtfFLBgarBFUQAzlF0aNGbrnlev1iohYhny7LPh+PUkshmouIIHp7Z7nL5Gg6f -yONu4fFeeyL7CHRxrk+hA9v+x+UFdOd25kTjcMQgo/q4tfjZ+4NqqZpYGSHSIMOd -AJpuWRcbPT1UaTLvPxgBNIGBL3WkyLj9QunIZSMYuqmKh+Oga5cBLKcgzCjIjDbI -q8+4uPyZboGk6BIOzso+bRnRHe9U8XE3OxkOKyKA8+bpVlM8UoPvXbByJIq6z0dQ -CBgjIpMzY0SmC4Pn0GnjnDnK6ME03PYbM2/xlZHk6TpD03SWWgW7aM4jGUDNeL9R -YVFIEqnx5o1Mt0116SPu1E6pbpmqVgfNrRRxvxReBAWvY4Ogh4JAWDVxUAdXJz41 -GbUkJrgJJbaTapAnFzjlP3ZVq9nWWlZU1WUyXEnV+d10A9ChFzw8YLBiWtD50QID -AQABo1AwTjAdBgNVHQ4EFgQUwRzVpE3ZkFlfr/S6nKhGegO+XAwwHwYDVR0jBBgw -FoAUwRzVpE3ZkFlfr/S6nKhGegO+XAwwDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0B -AQsFAAOCAgEAVkAVey2nFYRaXYwqccFyo0er20vSzYgyPImYkj05zcZPkdYaTQqF -AS5KV3tKGlrToOWNIYx3/M8hkZxQZhps1+Jh//gYwJCPM/zaKognYKHVjF9ZoZk3 -RJf1eA4brcjXkkKmHfRKgY3XGBfIoZbsVIzNMEH9rANIkiqoBzWz/7QKdKIRxqYO -HVyNXVv7mzWnhxBqDFQ/ahRfXbiYHcdc7n1mc4S2qD0up/20feAp+uoVAXid2/aV -L6jCJMpIlusGZI6wtxf2YaZsh5pNat6uzaZsWTY6j+Ly7VVfRtY70PqQjlANVDnZ -IjA2c0qwh7ccl1MAYAO5umW8zxsgY3ZBnz5RsHJpVoEZrZOkpgvp9EsAutqUhkhM -/760yqcn7NjtH7Yqp/uh7DockXMDELEd1aiErXcPisVJ18zVlVdD1VXexQOGJF8k -E4GynpsH+pos8nvHMWCOLLEQ6i/itRqHKYiA36WMDKxpNcXXviWIT4Mmb8usBns8 -cdYUxebkvk2ISXuyRfD8Ch5+JnkbXvev/Gm1grA+DYrX2leyd7FvoLl8pLVgQO2q -omds3iwcKoMnvRKf8xHhoeFoBlCGCiCUhUEutT30xjruiVVdT6mdMz1zLAkQ8QeZ -b2gbVi7SXorVEGjpMkkGXI4LLX3R29yzTJb93wdWvf+MpqDiS9UBeCc= ------END CERTIFICATE----- diff --git a/buildroot-external/scripts/post-build.sh b/buildroot-external/scripts/post-build.sh index 2aa60fdbdf6..dbae12cce70 100755 --- a/buildroot-external/scripts/post-build.sh +++ b/buildroot-external/scripts/post-build.sh @@ -30,3 +30,13 @@ install_hassos_cli echo "CHASSIS=${CHASSIS}" echo "DEPLOYMENT=${DEPLOYMENT}" ) > ${TARGET_DIR}/etc/machine-info + +# Settup rauc +sed -i "s/%COMPATIBLE%/${HASSIO_ID}-${BOARD_ID}/g" ${TARGET_DIR}/rauc/system.conf + +# Settup the correct CA +if [ "${DEPLOYMENT}" == "development"]; then + cp ${BR2_EXTERNAL_HASSOS_PATH}/ca/provisioning-ca.pem ${TARGET_DIR}/rauc/keyring.pem +else + cp ${BR2_EXTERNAL_HASSOS_PATH}/ca/re-ca.pem ${TARGET_DIR}/rauc/keyring.pem +fi From c9e5eafb172306a9da2edba7030de97b30606523 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 15 May 2018 23:45:48 +0200 Subject: [PATCH 013/118] fix path --- buildroot-external/scripts/post-build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/scripts/post-build.sh b/buildroot-external/scripts/post-build.sh index dbae12cce70..ffed50e320a 100755 --- a/buildroot-external/scripts/post-build.sh +++ b/buildroot-external/scripts/post-build.sh @@ -36,7 +36,7 @@ sed -i "s/%COMPATIBLE%/${HASSIO_ID}-${BOARD_ID}/g" ${TARGET_DIR}/rauc/system.con # Settup the correct CA if [ "${DEPLOYMENT}" == "development"]; then - cp ${BR2_EXTERNAL_HASSOS_PATH}/ca/provisioning-ca.pem ${TARGET_DIR}/rauc/keyring.pem + cp ${BR2_EXTERNAL_HASSOS_PATH}/ca/provisioning-ca.pem ${TARGET_DIR}/etc/rauc/keyring.pem else - cp ${BR2_EXTERNAL_HASSOS_PATH}/ca/re-ca.pem ${TARGET_DIR}/rauc/keyring.pem + cp ${BR2_EXTERNAL_HASSOS_PATH}/ca/re-ca.pem ${TARGET_DIR}/etc/rauc/keyring.pem fi From a67644831321aa2323128d9a4ee9a0a706a88468 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 15 May 2018 23:47:19 +0200 Subject: [PATCH 014/118] fix path v2 --- buildroot-external/scripts/post-build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/scripts/post-build.sh b/buildroot-external/scripts/post-build.sh index ffed50e320a..61b6f9d9498 100755 --- a/buildroot-external/scripts/post-build.sh +++ b/buildroot-external/scripts/post-build.sh @@ -32,7 +32,7 @@ install_hassos_cli ) > ${TARGET_DIR}/etc/machine-info # Settup rauc -sed -i "s/%COMPATIBLE%/${HASSIO_ID}-${BOARD_ID}/g" ${TARGET_DIR}/rauc/system.conf +sed -i "s/%COMPATIBLE%/${HASSIO_ID}-${BOARD_ID}/g" ${TARGET_DIR}/etc/rauc/system.conf # Settup the correct CA if [ "${DEPLOYMENT}" == "development"]; then From 3db2bf37bed340c4baed97f76c466c813fc632ce Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 15 May 2018 23:51:58 +0200 Subject: [PATCH 015/118] Update info --- buildroot-external/info | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/info b/buildroot-external/info index 8032ca233f5..148f829fd29 100644 --- a/buildroot-external/info +++ b/buildroot-external/info @@ -4,4 +4,4 @@ VERSION_BUILD=3 HASSOS_NAME="HassOS" HASSOS_ID="hassos" -DEPLOYMENT=development +DEPLOYMENT="development" From 3599b68c97fec494fb33208a39c6dd94edf2c9f5 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 15 May 2018 23:52:31 +0200 Subject: [PATCH 016/118] fix rel --- buildroot-external/scripts/post-build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/scripts/post-build.sh b/buildroot-external/scripts/post-build.sh index 61b6f9d9498..1dabd0dcecf 100755 --- a/buildroot-external/scripts/post-build.sh +++ b/buildroot-external/scripts/post-build.sh @@ -35,8 +35,8 @@ install_hassos_cli sed -i "s/%COMPATIBLE%/${HASSIO_ID}-${BOARD_ID}/g" ${TARGET_DIR}/etc/rauc/system.conf # Settup the correct CA -if [ "${DEPLOYMENT}" == "development"]; then +if [ ${DEPLOYMENT} == "development"]; then cp ${BR2_EXTERNAL_HASSOS_PATH}/ca/provisioning-ca.pem ${TARGET_DIR}/etc/rauc/keyring.pem else - cp ${BR2_EXTERNAL_HASSOS_PATH}/ca/re-ca.pem ${TARGET_DIR}/etc/rauc/keyring.pem + cp ${BR2_EXTERNAL_HASSOS_PATH}/ca/rel-ca.pem ${TARGET_DIR}/etc/rauc/keyring.pem fi From 55d1d73cd6ac0f20036a0d21446c84812f3481d1 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 15 May 2018 23:56:07 +0200 Subject: [PATCH 017/118] fix bug --- buildroot-external/scripts/post-build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/scripts/post-build.sh b/buildroot-external/scripts/post-build.sh index 1dabd0dcecf..b251d63f72c 100755 --- a/buildroot-external/scripts/post-build.sh +++ b/buildroot-external/scripts/post-build.sh @@ -35,7 +35,7 @@ install_hassos_cli sed -i "s/%COMPATIBLE%/${HASSIO_ID}-${BOARD_ID}/g" ${TARGET_DIR}/etc/rauc/system.conf # Settup the correct CA -if [ ${DEPLOYMENT} == "development"]; then +if [ "${DEPLOYMENT}" == "development" ]; then cp ${BR2_EXTERNAL_HASSOS_PATH}/ca/provisioning-ca.pem ${TARGET_DIR}/etc/rauc/keyring.pem else cp ${BR2_EXTERNAL_HASSOS_PATH}/ca/rel-ca.pem ${TARGET_DIR}/etc/rauc/keyring.pem From cbcf9fbe3bd242f99a89f15a9e3de03c13ce8a08 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 16 May 2018 00:04:48 +0200 Subject: [PATCH 018/118] Update post-build.sh --- buildroot-external/scripts/post-build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/scripts/post-build.sh b/buildroot-external/scripts/post-build.sh index b251d63f72c..e805bb419f0 100755 --- a/buildroot-external/scripts/post-build.sh +++ b/buildroot-external/scripts/post-build.sh @@ -32,7 +32,7 @@ install_hassos_cli ) > ${TARGET_DIR}/etc/machine-info # Settup rauc -sed -i "s/%COMPATIBLE%/${HASSIO_ID}-${BOARD_ID}/g" ${TARGET_DIR}/etc/rauc/system.conf +sed -i "s/%COMPATIBLE%/${HASSOS_ID}-${BOARD_ID}/g" ${TARGET_DIR}/etc/rauc/system.conf # Settup the correct CA if [ "${DEPLOYMENT}" == "development" ]; then From 9600025ead11dad76e480b10e69a1e22a70c8476 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 16 May 2018 14:46:10 +0200 Subject: [PATCH 019/118] Update barebox / fix build system --- buildroot-external/configs/ova_defconfig | 2 + ...11-barebox-bump-to-version-2018.03.0.patch | 49 --------------- ...NetworkManager-allow-to-wait-on-boot.patch | 35 ----------- .../0013-Add-apparmor-support-to-docker.patch | 60 ------------------- ...014-package-rauc-Version-bump-to-0.4.patch | 34 ----------- buildroot/boot/barebox/Config.in | 4 +- buildroot/boot/barebox/barebox.hash | 6 +- scripts/update-barebox.sh | 9 +++ scripts/update-cli.sh | 9 +++ scripts/update-supervisor.sh | 9 +++ 10 files changed, 34 insertions(+), 183 deletions(-) delete mode 100644 buildroot-patches/0011-barebox-bump-to-version-2018.03.0.patch delete mode 100644 buildroot-patches/0012-NetworkManager-allow-to-wait-on-boot.patch delete mode 100644 buildroot-patches/0013-Add-apparmor-support-to-docker.patch delete mode 100644 buildroot-patches/0014-package-rauc-Version-bump-to-0.4.patch create mode 100755 scripts/update-barebox.sh create mode 100755 scripts/update-cli.sh create mode 100755 scripts/update-supervisor.sh diff --git a/buildroot-external/configs/ova_defconfig b/buildroot-external/configs/ova_defconfig index ba08e6f60bf..433c0833bee 100644 --- a/buildroot-external/configs/ova_defconfig +++ b/buildroot-external/configs/ova_defconfig @@ -56,6 +56,8 @@ BR2_TARGET_ROOTFS_SQUASHFS=y BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y # BR2_TARGET_ROOTFS_TAR is not set BR2_TARGET_BAREBOX=y +BR2_TARGET_BAREBOX_CUSTOM_VERSION=y +BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2018.05.0" BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/barebox.config" BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/barebox-env $(BR2_EXTERNAL_HASSOS_PATH)/barebox-env" diff --git a/buildroot-patches/0011-barebox-bump-to-version-2018.03.0.patch b/buildroot-patches/0011-barebox-bump-to-version-2018.03.0.patch deleted file mode 100644 index ad9b8954734..00000000000 --- a/buildroot-patches/0011-barebox-bump-to-version-2018.03.0.patch +++ /dev/null @@ -1,49 +0,0 @@ -From ce08194279b6debecfa6105ec0db8afb24977f65 Mon Sep 17 00:00:00 2001 -From: Pascal Vizeli -Date: Wed, 21 Mar 2018 11:21:00 +0100 -Subject: [PATCH 1/1] barebox: bump to version 2018.03.0 - -Signed-off-by: Pascal Vizeli ---- - boot/barebox/Config.in | 4 ++-- - boot/barebox/barebox.hash | 6 +++--- - 2 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/boot/barebox/Config.in b/boot/barebox/Config.in -index fd22d90..e703b07 100644 ---- a/boot/barebox/Config.in -+++ b/boot/barebox/Config.in -@@ -12,7 +12,7 @@ choice - Select the specific Barebox version you want to use - - config BR2_TARGET_BAREBOX_LATEST_VERSION -- bool "2017.09.0" -+ bool "2018.03.0" - - config BR2_TARGET_BAREBOX_CUSTOM_VERSION - bool "Custom version" -@@ -40,7 +40,7 @@ endif - - config BR2_TARGET_BAREBOX_VERSION - string -- default "2017.09.0" if BR2_TARGET_BAREBOX_LATEST_VERSION -+ default "2018.03.0" if BR2_TARGET_BAREBOX_LATEST_VERSION - default BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE if BR2_TARGET_BAREBOX_CUSTOM_VERSION - default "custom" if BR2_TARGET_BAREBOX_CUSTOM_TARBALL - default BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION if BR2_TARGET_BAREBOX_CUSTOM_GIT -diff --git a/boot/barebox/barebox.hash b/boot/barebox/barebox.hash -index b241970..a34e228 100644 ---- a/boot/barebox/barebox.hash -+++ b/boot/barebox/barebox.hash -@@ -1,5 +1,5 @@ --# http://www.barebox.org/download/barebox-2017.09.0.tar.bz2.md5 --md5 b92e9c99cda7fbb61d01baf5679df261 barebox-2017.09.0.tar.bz2 -+# http://www.barebox.org/download/barebox-2018.03.0.tar.bz2.md5 -+md5 5a7692364684ad681c6a3c7a46e5000e barebox-2018.03.0.tar.bz2 - - # Locally calculated --sha256 43283edc019f95a53fdb7d1b7c294afc4741bfcace348d6beeded5fe5147a81b barebox-2017.09.0.tar.bz2 -+sha256 dbd1d3b21bcc7c885709bec6a7d728c51e05ae08b0552004e071fa09c3ec541e barebox-2018.03.0.tar.bz2 --- -2.7.4 - diff --git a/buildroot-patches/0012-NetworkManager-allow-to-wait-on-boot.patch b/buildroot-patches/0012-NetworkManager-allow-to-wait-on-boot.patch deleted file mode 100644 index 667065f09dd..00000000000 --- a/buildroot-patches/0012-NetworkManager-allow-to-wait-on-boot.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 590565bc07f563f978004727dc817dc89527377a Mon Sep 17 00:00:00 2001 -From: Pascal Vizeli -Date: Sat, 31 Mar 2018 16:58:14 +0200 -Subject: [PATCH 1/1] NetworkManager: allow to wait on boot - -Signed-off-by: Pascal Vizeli ---- - package/network-manager/network-manager.mk | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/package/network-manager/network-manager.mk b/package/network-manager/network-manager.mk -index a520aad..fb2012a 100644 ---- a/package/network-manager/network-manager.mk -+++ b/package/network-manager/network-manager.mk -@@ -93,6 +93,7 @@ endef - - define NETWORK_MANAGER_INSTALL_INIT_SYSTEMD - mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants -+ mkdir -p $(TARGET_DIR)/etc/systemd/system/network-online.target.wants - - ln -sf /usr/lib/systemd/system/NetworkManager.service \ - $(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service -@@ -100,6 +101,9 @@ define NETWORK_MANAGER_INSTALL_INIT_SYSTEMD - ln -sf /usr/lib/systemd/system/NetworkManager.service \ - $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/NetworkManager.service - -+ ln -sf /usr/lib/systemd/system/NetworkManager-wait-online.service \ -+ $(TARGET_DIR)/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service -+ - ln -sf /usr/lib/systemd/system/NetworkManager-dispatcher.service \ - $(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service - endef --- -2.7.4 - diff --git a/buildroot-patches/0013-Add-apparmor-support-to-docker.patch b/buildroot-patches/0013-Add-apparmor-support-to-docker.patch deleted file mode 100644 index 6aeca9863c8..00000000000 --- a/buildroot-patches/0013-Add-apparmor-support-to-docker.patch +++ /dev/null @@ -1,60 +0,0 @@ -From a5d50577d81efeccb4904e6b56793f84b7e3e89f Mon Sep 17 00:00:00 2001 -From: Pascal Vizeli -Date: Tue, 1 May 2018 23:35:05 +0200 -Subject: [PATCH 1/1] Add apparmor support to docker - ---- - package/docker-containerd/docker-containerd.mk | 1 + - package/docker-engine/docker-engine.mk | 2 +- - package/runc/runc.mk | 3 +-- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/package/docker-containerd/docker-containerd.mk b/package/docker-containerd/docker-containerd.mk -index 230307d..9be658d 100644 ---- a/package/docker-containerd/docker-containerd.mk -+++ b/package/docker-containerd/docker-containerd.mk -@@ -18,6 +18,7 @@ DOCKER_CONTAINERD_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ - GOBIN="$(@D)/bin" \ - GOPATH="$(DOCKER_CONTAINERD_GOPATH)" - -+DOCKER_CONTAINERD_BUILD_TAGS = apparmor - DOCKER_CONTAINERD_GLDFLAGS = \ - -X github.com/containerd/containerd.GitCommit=$(DOCKER_CONTAINERD_COMMIT) - -diff --git a/package/docker-engine/docker-engine.mk b/package/docker-engine/docker-engine.mk -index e3dde03..d500e71 100644 ---- a/package/docker-engine/docker-engine.mk -+++ b/package/docker-engine/docker-engine.mk -@@ -27,7 +27,7 @@ DOCKER_ENGINE_GLDFLAGS = \ - -X github.com/docker/cli/cli.GitCommit=$(DOCKER_ENGINE_VERSION) \ - -X github.com/docker/cli/cli.Version=$(DOCKER_ENGINE_VERSION) - --DOCKER_ENGINE_BUILD_TAGS = cgo exclude_graphdriver_zfs autogen -+DOCKER_ENGINE_BUILD_TAGS = cgo exclude_graphdriver_zfs autogen apparmor - DOCKER_ENGINE_BUILD_TARGETS = cli:docker - DOCKER_ENGINE_BUILD_TARGET_PARSE = \ - export targetpkg=$$(echo $(target) | cut -d: -f1); \ -diff --git a/package/runc/runc.mk b/package/runc/runc.mk -index f19fc5f..1ab0b70 100644 ---- a/package/runc/runc.mk -+++ b/package/runc/runc.mk -@@ -18,6 +18,7 @@ RUNC_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ - GOPATH="$(RUNC_GOPATH)" \ - PATH=$(BR_PATH) - -+RUNC_GOTAGS = cgo apparmor - RUNC_GLDFLAGS = \ - -X main.gitCommit=$(RUNC_VERSION) - -@@ -26,8 +27,6 @@ RUNC_GLDFLAGS += -extldflags '-static' - RUNC_GOTAGS += static_build - endif - --RUNC_GOTAGS = cgo -- - ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) - RUNC_GOTAGS += seccomp - RUNC_DEPENDENCIES += libseccomp host-pkgconf --- -2.7.4 - diff --git a/buildroot-patches/0014-package-rauc-Version-bump-to-0.4.patch b/buildroot-patches/0014-package-rauc-Version-bump-to-0.4.patch deleted file mode 100644 index 690bdd4c2d1..00000000000 --- a/buildroot-patches/0014-package-rauc-Version-bump-to-0.4.patch +++ /dev/null @@ -1,34 +0,0 @@ -Version 0.4 supports bootloader updates to eMMC boot partitions. - -Signed-off-by: Jim Brennan ---- - package/rauc/rauc.hash | 4 ++-- - package/rauc/rauc.mk | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/package/rauc/rauc.hash b/package/rauc/rauc.hash -index 91d7c1d62e..a16340f185 100644 ---- a/package/rauc/rauc.hash -+++ b/package/rauc/rauc.hash -@@ -1,3 +1,3 @@ - # Locally calculated, after verifying against --# https://github.com/rauc/rauc/releases/download/v0.3/rauc-0.3.tar.xz.asc --sha256 dc01bfb08b1830376782f9a51cfec290171519267ab97cc909435da9ac6d6d98 rauc-0.3.tar.xz -+# https://github.com/rauc/rauc/releases/download/v0.4/rauc-0.4.tar.xz.asc -+sha256 89656b6330ac1f31293d450f5179896397c588ab52e77ec229382a6abd125d35 rauc-0.4.tar.xz -diff --git a/package/rauc/rauc.mk b/package/rauc/rauc.mk -index 63fbc53022..f1705a8c33 100644 ---- a/package/rauc/rauc.mk -+++ b/package/rauc/rauc.mk -@@ -4,7 +4,7 @@ - # - ################################################################################ - --RAUC_VERSION = 0.3 -+RAUC_VERSION = 0.4 - RAUC_SITE = https://github.com/rauc/rauc/releases/download/v$(RAUC_VERSION) - RAUC_SOURCE = rauc-$(RAUC_VERSION).tar.xz - RAUC_LICENSE = LGPL-2.1 --- -2.11.0 - diff --git a/buildroot/boot/barebox/Config.in b/buildroot/boot/barebox/Config.in index e703b070152..fd22d904bcd 100644 --- a/buildroot/boot/barebox/Config.in +++ b/buildroot/boot/barebox/Config.in @@ -12,7 +12,7 @@ choice Select the specific Barebox version you want to use config BR2_TARGET_BAREBOX_LATEST_VERSION - bool "2018.03.0" + bool "2017.09.0" config BR2_TARGET_BAREBOX_CUSTOM_VERSION bool "Custom version" @@ -40,7 +40,7 @@ endif config BR2_TARGET_BAREBOX_VERSION string - default "2018.03.0" if BR2_TARGET_BAREBOX_LATEST_VERSION + default "2017.09.0" if BR2_TARGET_BAREBOX_LATEST_VERSION default BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE if BR2_TARGET_BAREBOX_CUSTOM_VERSION default "custom" if BR2_TARGET_BAREBOX_CUSTOM_TARBALL default BR2_TARGET_BAREBOX_CUSTOM_GIT_VERSION if BR2_TARGET_BAREBOX_CUSTOM_GIT diff --git a/buildroot/boot/barebox/barebox.hash b/buildroot/boot/barebox/barebox.hash index a34e228832f..b24197024c6 100644 --- a/buildroot/boot/barebox/barebox.hash +++ b/buildroot/boot/barebox/barebox.hash @@ -1,5 +1,5 @@ -# http://www.barebox.org/download/barebox-2018.03.0.tar.bz2.md5 -md5 5a7692364684ad681c6a3c7a46e5000e barebox-2018.03.0.tar.bz2 +# http://www.barebox.org/download/barebox-2017.09.0.tar.bz2.md5 +md5 b92e9c99cda7fbb61d01baf5679df261 barebox-2017.09.0.tar.bz2 # Locally calculated -sha256 dbd1d3b21bcc7c885709bec6a7d728c51e05ae08b0552004e071fa09c3ec541e barebox-2018.03.0.tar.bz2 +sha256 43283edc019f95a53fdb7d1b7c294afc4741bfcace348d6beeded5fe5147a81b barebox-2017.09.0.tar.bz2 diff --git a/scripts/update-barebox.sh b/scripts/update-barebox.sh new file mode 100755 index 00000000000..060764ffbd5 --- /dev/null +++ b/scripts/update-barebox.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e + +if [ -z "$1" ]; then + echo "Need a version!" + exit 1 +fi + +sed -i "s/BAREBOX_CUSTOM_VERSION_VALUE=\".*\"/BAREBOX_CUSTOM_VERSION_VALUE=\"$1\"/g" buildroot-external/configs/* diff --git a/scripts/update-cli.sh b/scripts/update-cli.sh new file mode 100755 index 00000000000..9a9a183cb39 --- /dev/null +++ b/scripts/update-cli.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e + +if [ -z "$1" ]; then + echo "Need a version!" + exit 1 +fi + +sed -i "s/CLI_VERSION=\".*\"/CLI_VERSION=\"$1\"/g" buildroot-external/configs/* diff --git a/scripts/update-supervisor.sh b/scripts/update-supervisor.sh new file mode 100755 index 00000000000..6dcb0a7cf9f --- /dev/null +++ b/scripts/update-supervisor.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e + +if [ -z "$1" ]; then + echo "Need a version!" + exit 1 +fi + +sed -i "s/SUPERVISOR_VERSION=\".*\"/SUPERVISOR_VERSION=\"$1\"/g" buildroot-external/configs/* From 8123c124f8470482a17afa3510b20cd0417bf395 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 16 May 2018 14:56:45 +0200 Subject: [PATCH 020/118] Fix kernel options for FTP/TFTP --- buildroot-external/board/ova/kernel.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/buildroot-external/board/ova/kernel.config b/buildroot-external/board/ova/kernel.config index 043de9844c5..cade554c44d 100644 --- a/buildroot-external/board/ova/kernel.config +++ b/buildroot-external/board/ova/kernel.config @@ -96,6 +96,8 @@ CONFIG_NETLABEL=y CONFIG_NETWORK_SECMARK=y CONFIG_NETFILTER=y CONFIG_NF_CONNTRACK=y +CONFIG_NF_CONNTRACK_FTP=y +CONFIG_NF_CONNTRACK_TFTP=y CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y CONFIG_NETFILTER_XT_MATCH_IPVS=y From 9a39a222ca73955987513d46c1e0dbba31b1bbaa Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 16 May 2018 15:04:38 +0200 Subject: [PATCH 021/118] Seccomp is not used anymore --- buildroot-external/board/ova/kernel.config | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/board/ova/kernel.config b/buildroot-external/board/ova/kernel.config index cade554c44d..6fc7ac14bf3 100644 --- a/buildroot-external/board/ova/kernel.config +++ b/buildroot-external/board/ova/kernel.config @@ -46,6 +46,7 @@ CONFIG_X86_CHECK_BIOS_CORRUPTION=y # CONFIG_MTRR_SANITIZER is not set CONFIG_EFI=y CONFIG_EFI_STUB=y +# CONFIG_SECCOMP is not set CONFIG_HZ_1000=y CONFIG_KEXEC=y # CONFIG_SUSPEND is not set From 7698f7f60daa3fcb4ea9d10fe9974340172d5d4c Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 16 May 2018 23:09:37 +0200 Subject: [PATCH 022/118] Update patches --- ...NetworkManager-allow-to-wait-on-boot.patch | 35 +++++++++++ .../0012-Add-apparmor-support-to-docker.patch | 60 +++++++++++++++++++ ...013-package-rauc-Version-bump-to-0.4.patch | 34 +++++++++++ 3 files changed, 129 insertions(+) create mode 100644 buildroot-patches/0011-NetworkManager-allow-to-wait-on-boot.patch create mode 100644 buildroot-patches/0012-Add-apparmor-support-to-docker.patch create mode 100644 buildroot-patches/0013-package-rauc-Version-bump-to-0.4.patch diff --git a/buildroot-patches/0011-NetworkManager-allow-to-wait-on-boot.patch b/buildroot-patches/0011-NetworkManager-allow-to-wait-on-boot.patch new file mode 100644 index 00000000000..667065f09dd --- /dev/null +++ b/buildroot-patches/0011-NetworkManager-allow-to-wait-on-boot.patch @@ -0,0 +1,35 @@ +From 590565bc07f563f978004727dc817dc89527377a Mon Sep 17 00:00:00 2001 +From: Pascal Vizeli +Date: Sat, 31 Mar 2018 16:58:14 +0200 +Subject: [PATCH 1/1] NetworkManager: allow to wait on boot + +Signed-off-by: Pascal Vizeli +--- + package/network-manager/network-manager.mk | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/package/network-manager/network-manager.mk b/package/network-manager/network-manager.mk +index a520aad..fb2012a 100644 +--- a/package/network-manager/network-manager.mk ++++ b/package/network-manager/network-manager.mk +@@ -93,6 +93,7 @@ endef + + define NETWORK_MANAGER_INSTALL_INIT_SYSTEMD + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants ++ mkdir -p $(TARGET_DIR)/etc/systemd/system/network-online.target.wants + + ln -sf /usr/lib/systemd/system/NetworkManager.service \ + $(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.NetworkManager.service +@@ -100,6 +101,9 @@ define NETWORK_MANAGER_INSTALL_INIT_SYSTEMD + ln -sf /usr/lib/systemd/system/NetworkManager.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/NetworkManager.service + ++ ln -sf /usr/lib/systemd/system/NetworkManager-wait-online.service \ ++ $(TARGET_DIR)/etc/systemd/system/network-online.target.wants/NetworkManager-wait-online.service ++ + ln -sf /usr/lib/systemd/system/NetworkManager-dispatcher.service \ + $(TARGET_DIR)/etc/systemd/system/dbus-org.freedesktop.nm-dispatcher.service + endef +-- +2.7.4 + diff --git a/buildroot-patches/0012-Add-apparmor-support-to-docker.patch b/buildroot-patches/0012-Add-apparmor-support-to-docker.patch new file mode 100644 index 00000000000..6aeca9863c8 --- /dev/null +++ b/buildroot-patches/0012-Add-apparmor-support-to-docker.patch @@ -0,0 +1,60 @@ +From a5d50577d81efeccb4904e6b56793f84b7e3e89f Mon Sep 17 00:00:00 2001 +From: Pascal Vizeli +Date: Tue, 1 May 2018 23:35:05 +0200 +Subject: [PATCH 1/1] Add apparmor support to docker + +--- + package/docker-containerd/docker-containerd.mk | 1 + + package/docker-engine/docker-engine.mk | 2 +- + package/runc/runc.mk | 3 +-- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/package/docker-containerd/docker-containerd.mk b/package/docker-containerd/docker-containerd.mk +index 230307d..9be658d 100644 +--- a/package/docker-containerd/docker-containerd.mk ++++ b/package/docker-containerd/docker-containerd.mk +@@ -18,6 +18,7 @@ DOCKER_CONTAINERD_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ + GOBIN="$(@D)/bin" \ + GOPATH="$(DOCKER_CONTAINERD_GOPATH)" + ++DOCKER_CONTAINERD_BUILD_TAGS = apparmor + DOCKER_CONTAINERD_GLDFLAGS = \ + -X github.com/containerd/containerd.GitCommit=$(DOCKER_CONTAINERD_COMMIT) + +diff --git a/package/docker-engine/docker-engine.mk b/package/docker-engine/docker-engine.mk +index e3dde03..d500e71 100644 +--- a/package/docker-engine/docker-engine.mk ++++ b/package/docker-engine/docker-engine.mk +@@ -27,7 +27,7 @@ DOCKER_ENGINE_GLDFLAGS = \ + -X github.com/docker/cli/cli.GitCommit=$(DOCKER_ENGINE_VERSION) \ + -X github.com/docker/cli/cli.Version=$(DOCKER_ENGINE_VERSION) + +-DOCKER_ENGINE_BUILD_TAGS = cgo exclude_graphdriver_zfs autogen ++DOCKER_ENGINE_BUILD_TAGS = cgo exclude_graphdriver_zfs autogen apparmor + DOCKER_ENGINE_BUILD_TARGETS = cli:docker + DOCKER_ENGINE_BUILD_TARGET_PARSE = \ + export targetpkg=$$(echo $(target) | cut -d: -f1); \ +diff --git a/package/runc/runc.mk b/package/runc/runc.mk +index f19fc5f..1ab0b70 100644 +--- a/package/runc/runc.mk ++++ b/package/runc/runc.mk +@@ -18,6 +18,7 @@ RUNC_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ + GOPATH="$(RUNC_GOPATH)" \ + PATH=$(BR_PATH) + ++RUNC_GOTAGS = cgo apparmor + RUNC_GLDFLAGS = \ + -X main.gitCommit=$(RUNC_VERSION) + +@@ -26,8 +27,6 @@ RUNC_GLDFLAGS += -extldflags '-static' + RUNC_GOTAGS += static_build + endif + +-RUNC_GOTAGS = cgo +- + ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) + RUNC_GOTAGS += seccomp + RUNC_DEPENDENCIES += libseccomp host-pkgconf +-- +2.7.4 + diff --git a/buildroot-patches/0013-package-rauc-Version-bump-to-0.4.patch b/buildroot-patches/0013-package-rauc-Version-bump-to-0.4.patch new file mode 100644 index 00000000000..690bdd4c2d1 --- /dev/null +++ b/buildroot-patches/0013-package-rauc-Version-bump-to-0.4.patch @@ -0,0 +1,34 @@ +Version 0.4 supports bootloader updates to eMMC boot partitions. + +Signed-off-by: Jim Brennan +--- + package/rauc/rauc.hash | 4 ++-- + package/rauc/rauc.mk | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/package/rauc/rauc.hash b/package/rauc/rauc.hash +index 91d7c1d62e..a16340f185 100644 +--- a/package/rauc/rauc.hash ++++ b/package/rauc/rauc.hash +@@ -1,3 +1,3 @@ + # Locally calculated, after verifying against +-# https://github.com/rauc/rauc/releases/download/v0.3/rauc-0.3.tar.xz.asc +-sha256 dc01bfb08b1830376782f9a51cfec290171519267ab97cc909435da9ac6d6d98 rauc-0.3.tar.xz ++# https://github.com/rauc/rauc/releases/download/v0.4/rauc-0.4.tar.xz.asc ++sha256 89656b6330ac1f31293d450f5179896397c588ab52e77ec229382a6abd125d35 rauc-0.4.tar.xz +diff --git a/package/rauc/rauc.mk b/package/rauc/rauc.mk +index 63fbc53022..f1705a8c33 100644 +--- a/package/rauc/rauc.mk ++++ b/package/rauc/rauc.mk +@@ -4,7 +4,7 @@ + # + ################################################################################ + +-RAUC_VERSION = 0.3 ++RAUC_VERSION = 0.4 + RAUC_SITE = https://github.com/rauc/rauc/releases/download/v$(RAUC_VERSION) + RAUC_SOURCE = rauc-$(RAUC_VERSION).tar.xz + RAUC_LICENSE = LGPL-2.1 +-- +2.11.0 + From 0c25f11028b963acfc1d8b3b05c4b8dec86cc92e Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 16 May 2018 23:39:37 +0200 Subject: [PATCH 023/118] Use kernel 4.14.x --- buildroot-external/board/ova/kernel.config | 2 +- buildroot-external/configs/ova_defconfig | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/buildroot-external/board/ova/kernel.config b/buildroot-external/board/ova/kernel.config index 6fc7ac14bf3..db152b74874 100644 --- a/buildroot-external/board/ova/kernel.config +++ b/buildroot-external/board/ova/kernel.config @@ -115,7 +115,6 @@ CONFIG_NET_SCHED=y CONFIG_NET_CLS_CGROUP=y CONFIG_NET_EMATCH=y CONFIG_NET_CLS_ACT=y -CONFIG_DNS_RESOLVER=y CONFIG_NET_L3_MASTER_DEV=y CONFIG_CGROUP_NET_PRIO=y CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" @@ -247,6 +246,7 @@ CONFIG_PRINTK_TIME=y CONFIG_MAGIC_SYSRQ=y CONFIG_EARLY_PRINTK_DBGP=y CONFIG_OPTIMIZE_INLINING=y +CONFIG_KEYS=y CONFIG_SECURITY=y CONFIG_SECURITY_APPARMOR=y CONFIG_CRYPTO_CCM=y diff --git a/buildroot-external/configs/ova_defconfig b/buildroot-external/configs/ova_defconfig index 433c0833bee..baf3519cbe2 100644 --- a/buildroot-external/configs/ova_defconfig +++ b/buildroot-external/configs/ova_defconfig @@ -4,6 +4,7 @@ BR2_CCACHE=y BR2_CCACHE_DIR="/cache/cc" BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches $(BR2_EXTERNAL_HASSOS_PATH)/board/ova/patches" BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y BR2_GCC_VERSION_7_X=y BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_TARGET_GENERIC_HOSTNAME="hassio" @@ -16,6 +17,8 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova" BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.41" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/kernel.config" BR2_LINUX_KERNEL_LZ4=y From 79a25ab4aec66fb0582bdbb60d27c8a343006d70 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 16 May 2018 23:41:11 +0200 Subject: [PATCH 024/118] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3be32480299..6f3870ab085 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Hass.io OS based on [buildroot](https://buildroot.org/). It's a hypervisor for D ## Focus -- Linux kernel 4.15 +- Linux kernel 4.14 (LT) - Barebox as bootloader - RAUC for OTA updates - SquashFS LZ4 as filesystem From 346464f55cd86fe549d4db7179e86f6f61f6bad8 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 17 May 2018 00:28:27 +0200 Subject: [PATCH 025/118] Add alsa to ova --- buildroot-external/board/ova/kernel.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/buildroot-external/board/ova/kernel.config b/buildroot-external/board/ova/kernel.config index db152b74874..97d13b172c1 100644 --- a/buildroot-external/board/ova/kernel.config +++ b/buildroot-external/board/ova/kernel.config @@ -186,6 +186,13 @@ CONFIG_FB_TILEBLITTING=y CONFIG_FB_EFI=y # CONFIG_LCD_CLASS_DEVICE is not set CONFIG_VGACON_SOFT_SCROLLBACK=y +CONFIG_SOUND=y +CONFIG_SND=y +# CONFIG_SND_SUPPORT_OLD_API is not set +# CONFIG_SND_VERBOSE_PROCFS is not set +CONFIG_SND_HDA_INTEL=y +CONFIG_SND_HDA_GENERIC=y +# CONFIG_SND_PCMCIA is not set CONFIG_HIDRAW=y CONFIG_HID_GYRATION=y CONFIG_LOGITECH_FF=y From 5e2573b9f28ee6ee5e4cd326797816d3d0b5a671 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 17 May 2018 21:16:12 +0200 Subject: [PATCH 026/118] Update kernel.config --- buildroot-external/board/ova/kernel.config | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/board/ova/kernel.config b/buildroot-external/board/ova/kernel.config index 97d13b172c1..63e02772e61 100644 --- a/buildroot-external/board/ova/kernel.config +++ b/buildroot-external/board/ova/kernel.config @@ -5,6 +5,7 @@ CONFIG_POSIX_MQUEUE=y CONFIG_NO_HZ=y CONFIG_HIGH_RES_TIMERS=y CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y CONFIG_TASKSTATS=y CONFIG_TASK_DELAY_ACCT=y CONFIG_TASK_XACCT=y From 625a0650fab49cbc544521971b7c960383e82c7b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 17 May 2018 21:19:28 +0200 Subject: [PATCH 027/118] Update kernel.config --- buildroot-external/board/ova/kernel.config | 1 - 1 file changed, 1 deletion(-) diff --git a/buildroot-external/board/ova/kernel.config b/buildroot-external/board/ova/kernel.config index 63e02772e61..4681ff0c781 100644 --- a/buildroot-external/board/ova/kernel.config +++ b/buildroot-external/board/ova/kernel.config @@ -31,7 +31,6 @@ CONFIG_PROFILING=y CONFIG_JUMP_LABEL=y CONFIG_BLK_DEV_THROTTLING=y CONFIG_PARTITION_ADVANCED=y -CONFIG_BSD_DISKLABEL=y CONFIG_CFQ_GROUP_IOSCHED=y CONFIG_SMP=y CONFIG_CALGARY_IOMMU=y From 101ca67333ff6415059260e06b61adf6f91914b6 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 17 May 2018 21:25:08 +0200 Subject: [PATCH 028/118] Update kernel.config --- buildroot-external/board/ova/kernel.config | 1 - 1 file changed, 1 deletion(-) diff --git a/buildroot-external/board/ova/kernel.config b/buildroot-external/board/ova/kernel.config index 4681ff0c781..0f73a88d835 100644 --- a/buildroot-external/board/ova/kernel.config +++ b/buildroot-external/board/ova/kernel.config @@ -62,7 +62,6 @@ CONFIG_HOTPLUG_PCI=y CONFIG_PCCARD=y CONFIG_YENTA=y # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set -CONFIG_BINFMT_MISC=y CONFIG_NET=y CONFIG_PACKET=y CONFIG_UNIX=y From 2e5538f7d687a5b3f041d7bb8bdd50be9d37d657 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 17 May 2018 21:29:27 +0200 Subject: [PATCH 029/118] Update kernel.config --- buildroot-external/board/ova/kernel.config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/buildroot-external/board/ova/kernel.config b/buildroot-external/board/ova/kernel.config index 0f73a88d835..cc0f8bca0c2 100644 --- a/buildroot-external/board/ova/kernel.config +++ b/buildroot-external/board/ova/kernel.config @@ -52,6 +52,8 @@ CONFIG_KEXEC=y # CONFIG_SUSPEND is not set CONFIG_PM=y CONFIG_ACPI_DOCK=y +CONFIG_CPU_FREQ=y +# CONFIG_CPU_FREQ_STAT is not set CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y From d554f395d08b81246e91d4566376479e11fa3140 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 17 May 2018 21:37:15 +0200 Subject: [PATCH 030/118] Update kernel.config --- buildroot-external/board/ova/kernel.config | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/board/ova/kernel.config b/buildroot-external/board/ova/kernel.config index cc0f8bca0c2..8a22d4c7d36 100644 --- a/buildroot-external/board/ova/kernel.config +++ b/buildroot-external/board/ova/kernel.config @@ -248,6 +248,7 @@ CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_ASCII=y CONFIG_NLS_ISO8859_1=y CONFIG_NLS_UTF8=y +CONFIG_HW_RANDOM=y CONFIG_PRINTK_TIME=y # CONFIG_ENABLE_WARN_DEPRECATED is not set # CONFIG_UNUSED_SYMBOLS is not set From d446511f5d9ecb1406f78a5bc649a67e8235f5c9 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 17 May 2018 22:05:42 +0200 Subject: [PATCH 031/118] Cleanup flags --- buildroot-external/board/ova/kernel.config | 3 --- 1 file changed, 3 deletions(-) diff --git a/buildroot-external/board/ova/kernel.config b/buildroot-external/board/ova/kernel.config index 8a22d4c7d36..0f73a88d835 100644 --- a/buildroot-external/board/ova/kernel.config +++ b/buildroot-external/board/ova/kernel.config @@ -52,8 +52,6 @@ CONFIG_KEXEC=y # CONFIG_SUSPEND is not set CONFIG_PM=y CONFIG_ACPI_DOCK=y -CONFIG_CPU_FREQ=y -# CONFIG_CPU_FREQ_STAT is not set CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y CONFIG_CPU_FREQ_GOV_PERFORMANCE=y CONFIG_CPU_FREQ_GOV_ONDEMAND=y @@ -248,7 +246,6 @@ CONFIG_NLS_CODEPAGE_437=y CONFIG_NLS_ASCII=y CONFIG_NLS_ISO8859_1=y CONFIG_NLS_UTF8=y -CONFIG_HW_RANDOM=y CONFIG_PRINTK_TIME=y # CONFIG_ENABLE_WARN_DEPRECATED is not set # CONFIG_UNUSED_SYMBOLS is not set From da4c7f4e6a7a39a422dbc56b8202e51fa19f38c1 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 00:57:40 +0200 Subject: [PATCH 032/118] WIP: Rpi3 (#20) * initial * Update kernel * Cleanup * Update info * Update barebox.config * Update kernel.config * Update kernel config * Fix docker * Create linux.config * Rename buildroot-external/board/ova/barebox-env/boot/system0 to buildroot-external/barebox-env/boot/system0 * Rename buildroot-external/board/ova/barebox-env/boot/system1 to buildroot-external/barebox-env/boot/system1 * Rename linux.config to kernel.config * Update kernel.config * Update kernel.config * Update ova_defconfig * Update rpi3_defconfig * Update ova_defconfig --- .../{board/ova => }/barebox-env/boot/system0 | 0 .../{board/ova => }/barebox-env/boot/system1 | 0 buildroot-external/board/ova/kernel.config | 264 +----------------- .../board/rpi3/barebox-env/boot/system0 | 5 + .../board/rpi3/barebox-env/boot/system1 | 4 + buildroot-external/board/rpi3/barebox.config | 43 +++ buildroot-external/board/rpi3/info | 3 + buildroot-external/board/rpi3/kernel.config | 263 +++++++++++++++++ buildroot-external/board/rpi3/post-image.sh | 29 ++ buildroot-external/configs/ova_defconfig | 4 +- buildroot-external/configs/rpi3_defconfig | 89 ++++++ buildroot-external/kernel.config | 90 ++++++ 12 files changed, 529 insertions(+), 265 deletions(-) rename buildroot-external/{board/ova => }/barebox-env/boot/system0 (100%) rename buildroot-external/{board/ova => }/barebox-env/boot/system1 (100%) create mode 100644 buildroot-external/board/rpi3/barebox-env/boot/system0 create mode 100644 buildroot-external/board/rpi3/barebox-env/boot/system1 create mode 100644 buildroot-external/board/rpi3/barebox.config create mode 100644 buildroot-external/board/rpi3/info create mode 100644 buildroot-external/board/rpi3/kernel.config create mode 100755 buildroot-external/board/rpi3/post-image.sh create mode 100644 buildroot-external/configs/rpi3_defconfig create mode 100644 buildroot-external/kernel.config diff --git a/buildroot-external/board/ova/barebox-env/boot/system0 b/buildroot-external/barebox-env/boot/system0 similarity index 100% rename from buildroot-external/board/ova/barebox-env/boot/system0 rename to buildroot-external/barebox-env/boot/system0 diff --git a/buildroot-external/board/ova/barebox-env/boot/system1 b/buildroot-external/barebox-env/boot/system1 similarity index 100% rename from buildroot-external/board/ova/barebox-env/boot/system1 rename to buildroot-external/barebox-env/boot/system1 diff --git a/buildroot-external/board/ova/kernel.config b/buildroot-external/board/ova/kernel.config index 0f73a88d835..5c4482067a1 100644 --- a/buildroot-external/board/ova/kernel.config +++ b/buildroot-external/board/ova/kernel.config @@ -1,263 +1 @@ -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_KERNEL_LZ4=y -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_BSD_PROCESS_ACCT_V3=y -CONFIG_TASKSTATS=y -CONFIG_TASK_DELAY_ACCT=y -CONFIG_TASK_XACCT=y -CONFIG_TASK_IO_ACCOUNTING=y -CONFIG_LOG_BUF_SHIFT=18 -CONFIG_CGROUPS=y -CONFIG_MEMCG=y -CONFIG_MEMCG_SWAP=y -CONFIG_BLK_CGROUP=y -CONFIG_CGROUP_SCHED=y -CONFIG_CFS_BANDWIDTH=y -CONFIG_RT_GROUP_SCHED=y -CONFIG_CGROUP_PIDS=y -CONFIG_CGROUP_FREEZER=y -CONFIG_CGROUP_HUGETLB=y -CONFIG_CPUSETS=y -CONFIG_CGROUP_DEVICE=y -CONFIG_CGROUP_CPUACCT=y -CONFIG_CGROUP_PERF=y -CONFIG_USER_NS=y -# CONFIG_COMPAT_BRK is not set -CONFIG_PROFILING=y -CONFIG_JUMP_LABEL=y -CONFIG_BLK_DEV_THROTTLING=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_CFQ_GROUP_IOSCHED=y -CONFIG_SMP=y -CONFIG_CALGARY_IOMMU=y -CONFIG_SCHED_SMT=y -CONFIG_PREEMPT_VOLUNTARY=y -CONFIG_X86_REROUTE_FOR_BROKEN_BOOT_IRQS=y -CONFIG_MICROCODE_AMD=y -CONFIG_X86_MSR=y -CONFIG_X86_CPUID=y -CONFIG_NUMA=y -CONFIG_ZSMALLOC=y -CONFIG_X86_CHECK_BIOS_CORRUPTION=y -# CONFIG_MTRR_SANITIZER is not set -CONFIG_EFI=y -CONFIG_EFI_STUB=y -# CONFIG_SECCOMP is not set -CONFIG_HZ_1000=y -CONFIG_KEXEC=y -# CONFIG_SUSPEND is not set -CONFIG_PM=y -CONFIG_ACPI_DOCK=y -CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y -CONFIG_CPU_FREQ_GOV_PERFORMANCE=y -CONFIG_CPU_FREQ_GOV_ONDEMAND=y -CONFIG_X86_ACPI_CPUFREQ=y -CONFIG_PCI_MMCONFIG=y -CONFIG_PCIEPORTBUS=y -CONFIG_HOTPLUG_PCI=y -CONFIG_PCCARD=y -CONFIG_YENTA=y -# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_XFRM_USER=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -CONFIG_IP_PNP_RARP=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_SYN_COOKIES=y -CONFIG_INET_ESP=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_TCP_CONG_ADVANCED=y -# CONFIG_TCP_CONG_BIC is not set -# CONFIG_TCP_CONG_WESTWOOD is not set -# CONFIG_TCP_CONG_HTCP is not set -CONFIG_TCP_MD5SIG=y -CONFIG_INET6_AH=y -CONFIG_INET6_ESP=y -CONFIG_NETLABEL=y -CONFIG_NETWORK_SECMARK=y -CONFIG_NETFILTER=y -CONFIG_NF_CONNTRACK=y -CONFIG_NF_CONNTRACK_FTP=y -CONFIG_NF_CONNTRACK_TFTP=y -CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y -CONFIG_NETFILTER_XT_MATCH_IPVS=y -CONFIG_IP_VS=y -CONFIG_IP_VS_RR=y -CONFIG_IP_VS_NFCT=y -CONFIG_NF_CONNTRACK_IPV4=y -CONFIG_IP_NF_IPTABLES=y -CONFIG_IP_NF_FILTER=y -CONFIG_IP_NF_NAT=y -CONFIG_IP_NF_TARGET_MASQUERADE=y -CONFIG_BRIDGE=y -CONFIG_NET_SCHED=y -CONFIG_NET_CLS_CGROUP=y -CONFIG_NET_EMATCH=y -CONFIG_NET_CLS_ACT=y -CONFIG_NET_L3_MASTER_DEV=y -CONFIG_CGROUP_NET_PRIO=y -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -CONFIG_CONNECTOR=y -CONFIG_OF=y -CONFIG_ZRAM=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_LOOP_MIN_COUNT=4 -CONFIG_BLK_DEV_SD=y -CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y -CONFIG_CHR_DEV_SG=y -CONFIG_SCSI_CONSTANTS=y -CONFIG_SCSI_SPI_ATTRS=y -# CONFIG_SCSI_LOWLEVEL is not set -CONFIG_ATA=y -CONFIG_SATA_AHCI=y -CONFIG_ATA_PIIX=y -CONFIG_PATA_AMD=y -CONFIG_PATA_OLDPIIX=y -CONFIG_PATA_SCH=y -CONFIG_NETDEVICES=y -CONFIG_DUMMY=y -CONFIG_MACVLAN=y -CONFIG_IPVLAN=y -CONFIG_VXLAN=y -CONFIG_NETCONSOLE=y -CONFIG_VETH=y -CONFIG_TIGON3=y -CONFIG_NET_TULIP=y -CONFIG_E100=y -CONFIG_E1000=y -CONFIG_E1000E=y -CONFIG_SKY2=y -CONFIG_FORCEDETH=y -CONFIG_8139TOO=y -CONFIG_R8169=y -CONFIG_FDDI=y -CONFIG_INPUT_POLLDEV=y -CONFIG_INPUT_EVDEV=y -CONFIG_INPUT_JOYSTICK=y -CONFIG_INPUT_TABLET=y -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_INPUT_MISC=y -# CONFIG_LEGACY_PTYS is not set -CONFIG_SERIAL_NONSTANDARD=y -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_NR_UARTS=32 -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_MANY_PORTS=y -CONFIG_SERIAL_8250_SHARE_IRQ=y -CONFIG_SERIAL_8250_DETECT_IRQ=y -CONFIG_SERIAL_8250_RSA=y -CONFIG_NVRAM=y -CONFIG_HPET=y -# CONFIG_HPET_MMAP is not set -CONFIG_I2C_I801=y -CONFIG_WATCHDOG=y -CONFIG_AGP=y -CONFIG_AGP_AMD64=y -CONFIG_AGP_INTEL=y -CONFIG_DRM=y -CONFIG_DRM_I915=y -CONFIG_FB_MODE_HELPERS=y -CONFIG_FB_TILEBLITTING=y -CONFIG_FB_EFI=y -# CONFIG_LCD_CLASS_DEVICE is not set -CONFIG_VGACON_SOFT_SCROLLBACK=y -CONFIG_SOUND=y -CONFIG_SND=y -# CONFIG_SND_SUPPORT_OLD_API is not set -# CONFIG_SND_VERBOSE_PROCFS is not set -CONFIG_SND_HDA_INTEL=y -CONFIG_SND_HDA_GENERIC=y -# CONFIG_SND_PCMCIA is not set -CONFIG_HIDRAW=y -CONFIG_HID_GYRATION=y -CONFIG_LOGITECH_FF=y -CONFIG_HID_NTRIG=y -CONFIG_HID_PANTHERLORD=y -CONFIG_PANTHERLORD_FF=y -CONFIG_HID_PETALYNX=y -CONFIG_HID_SAMSUNG=y -CONFIG_HID_SONY=y -CONFIG_HID_SUNPLUS=y -CONFIG_HID_TOPSEED=y -CONFIG_HID_PID=y -CONFIG_USB_HIDDEV=y -CONFIG_USB=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -CONFIG_USB_MON=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_UHCI_HCD=y -CONFIG_USB_PRINTER=y -CONFIG_USB_STORAGE=y -CONFIG_LEDS_TRIGGERS=y -CONFIG_EDAC=y -CONFIG_RTC_CLASS=y -# CONFIG_RTC_HCTOSYS is not set -CONFIG_DMADEVICES=y -CONFIG_EEEPC_LAPTOP=y -CONFIG_AMD_IOMMU=y -CONFIG_INTEL_IOMMU=y -# CONFIG_INTEL_IOMMU_DEFAULT_ON is not set -CONFIG_DAX=y -CONFIG_EFI_VARS=y -CONFIG_EXT4_FS=y -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -CONFIG_AUTOFS4_FS=y -CONFIG_OVERLAY_FS=y -CONFIG_ISO9660_FS=y -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_PROC_KCORE=y -CONFIG_TMPFS_POSIX_ACL=y -CONFIG_HUGETLBFS=y -CONFIG_SQUASHFS=y -CONFIG_SQUASHFS_XATTR=y -CONFIG_SQUASHFS_LZ4=y -# CONFIG_NETWORK_FILESYSTEMS is not set -CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ASCII=y -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_UTF8=y -CONFIG_PRINTK_TIME=y -# CONFIG_ENABLE_WARN_DEPRECATED is not set -# CONFIG_UNUSED_SYMBOLS is not set -CONFIG_MAGIC_SYSRQ=y -CONFIG_EARLY_PRINTK_DBGP=y -CONFIG_OPTIMIZE_INLINING=y -CONFIG_KEYS=y -CONFIG_SECURITY=y -CONFIG_SECURITY_APPARMOR=y -CONFIG_CRYPTO_CCM=y -CONFIG_CRYPTO_GCM=y -CONFIG_CRYPTO_CMAC=y -CONFIG_CRYPTO_ARC4=y -CONFIG_CRYPTO_LZ4=y -# CONFIG_VIRTUALIZATION is not set +CONFIG_EFI_STUB=y \ No newline at end of file diff --git a/buildroot-external/board/rpi3/barebox-env/boot/system0 b/buildroot-external/board/rpi3/barebox-env/boot/system0 new file mode 100644 index 00000000000..4239b465cdb --- /dev/null +++ b/buildroot-external/board/rpi3/barebox-env/boot/system0 @@ -0,0 +1,5 @@ +#!/bin/sh + +global bootm.image="/mnt/disk1/boot/bzImage" +global linux.bootargs.dyn.root="root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro" + diff --git a/buildroot-external/board/rpi3/barebox-env/boot/system1 b/buildroot-external/board/rpi3/barebox-env/boot/system1 new file mode 100644 index 00000000000..3926d411215 --- /dev/null +++ b/buildroot-external/board/rpi3/barebox-env/boot/system1 @@ -0,0 +1,4 @@ +#!/bin/sh + +global bootm.image="/mnt/disk2/boot/bzImage" +global linux.bootargs.dyn.root="root=PARTUUID=a3ec664e-32ce-4665-95ea-7ae90ce9aa20 rootfstype=squashfs ro" diff --git a/buildroot-external/board/rpi3/barebox.config b/buildroot-external/board/rpi3/barebox.config new file mode 100644 index 00000000000..9fb06ce0e64 --- /dev/null +++ b/buildroot-external/board/rpi3/barebox.config @@ -0,0 +1,43 @@ +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_MMU=y +CONFIG_MALLOC_SIZE=0x0 +CONFIG_MALLOC_TLSF=y +CONFIG_PROMPT="HassOS-boot:" +CONFIG_CMDLINE_EDITING=y +CONFIG_AUTO_COMPLETE=y +CONFIG_MENU=y +# CONFIG_TIMESTAMP is not set +CONFIG_BOOTM_SHOW_TYPE=y +CONFIG_FLEXIBLE_BOOTARGS=y +# CONFIG_PARTITION_DISK_DOS is not set +CONFIG_PARTITION_DISK_EFI=y +# CONFIG_PARTITION_DISK_EFI_GPT_NO_FORCE is not set +# CONFIG_PARTITION_DISK_EFI_GPT_COMPARE is not set +CONFIG_DEFAULT_ENVIRONMENT_PATH="/build/buildroot-external/board/ova/barebox-env /build/buildroot-external/barebox-env" +CONFIG_STATE=y +CONFIG_BOOTCHOOSER=y +# CONFIG_CMD_VERSION is not set +CONFIG_CMD_BOOT=y +CONFIG_CMD_UIMAGE=y +CONFIG_CMD_AUTOMOUNT=y +CONFIG_CMD_NV=y +CONFIG_CMD_EXPORT=y +CONFIG_CMD_GLOBAL=y +CONFIG_CMD_BASENAME=y +CONFIG_CMD_DIRNAME=y +CONFIG_CMD_READLINK=y +CONFIG_CMD_GETOPT=y +CONFIG_CMD_MENUTREE=y +CONFIG_CMD_TIMEOUT=y +CONFIG_CMD_DETECT=y +CONFIG_CMD_STATE=y +CONFIG_CMD_BOOTCHOOSER=y +# CONFIG_SPI is not set +CONFIG_DISK=y +CONFIG_DISK_WRITE=y +CONFIG_CLOCKSOURCE_EFI=y +CONFIG_FS_FAT=y +CONFIG_FS_FAT_WRITE=y +CONFIG_FS_FAT_LFN=y +CONFIG_FS_SQUASHFS=y +CONFIG_LZ4_DECOMPRESS=y diff --git a/buildroot-external/board/rpi3/info b/buildroot-external/board/rpi3/info new file mode 100644 index 00000000000..812dc3619d5 --- /dev/null +++ b/buildroot-external/board/rpi3/info @@ -0,0 +1,3 @@ +BOARD_ID=rpi3 +BOARD_NAME="RaspberryPi 3" +CHASSIS=embedded diff --git a/buildroot-external/board/rpi3/kernel.config b/buildroot-external/board/rpi3/kernel.config new file mode 100644 index 00000000000..d9e9b8d4aa8 --- /dev/null +++ b/buildroot-external/board/rpi3/kernel.config @@ -0,0 +1,263 @@ +CONFIG_LOCALVERSION="-v7" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_KERNEL_LZ4=y +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_BSD_PROCESS_ACCT_V3=y +CONFIG_TASKSTATS=y +CONFIG_TASK_DELAY_ACCT=y +CONFIG_TASK_XACCT=y +CONFIG_TASK_IO_ACCOUNTING=y +CONFIG_LOG_BUF_SHIFT=18 +CONFIG_CGROUPS=y +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_SCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_RT_GROUP_SCHED=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CPUSETS=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_USER_NS=y +# CONFIG_COMPAT_BRK is not set +CONFIG_PROFILING=y +CONFIG_JUMP_LABEL=y +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_CFQ_GROUP_IOSCHED=y +CONFIG_ARCH_BCM=y +CONFIG_ARCH_BCM2835=y +# CONFIG_CACHE_L2X0 is not set +CONFIG_SMP=y +CONFIG_SCHED_SMT=y +CONFIG_PREEMPT_VOLUNTARY=y +CONFIG_ZSMALLOC=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT=y +CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_PERFORMANCE=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_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_SUSPEND is not set +CONFIG_PM=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_XFRM_USER=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_IP_MULTIPLE_TABLES=y +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +CONFIG_SYN_COOKIES=y +CONFIG_INET_ESP=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_TCP_CONG_ADVANCED=y +# CONFIG_TCP_CONG_BIC is not set +# CONFIG_TCP_CONG_WESTWOOD is not set +# CONFIG_TCP_CONG_HTCP is not set +CONFIG_TCP_MD5SIG=y +CONFIG_INET6_AH=y +CONFIG_INET6_ESP=y +CONFIG_NETLABEL=y +CONFIG_NETWORK_SECMARK=y +CONFIG_NETFILTER=y +CONFIG_NF_CONNTRACK=y +CONFIG_NF_CONNTRACK_FTP=y +CONFIG_NF_CONNTRACK_TFTP=y +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y +CONFIG_NETFILTER_XT_MATCH_IPVS=y +CONFIG_IP_VS=y +CONFIG_IP_VS_RR=y +CONFIG_IP_VS_NFCT=y +CONFIG_NF_CONNTRACK_IPV4=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_NAT=y +CONFIG_IP_NF_TARGET_MASQUERADE=y +CONFIG_BRIDGE=y +CONFIG_NET_SCHED=y +CONFIG_NET_CLS_CGROUP=y +CONFIG_NET_EMATCH=y +CONFIG_NET_CLS_ACT=y +CONFIG_NET_L3_MASTER_DEV=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_CONNECTOR=y +CONFIG_ZRAM=y +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=4 +CONFIG_BLK_DEV_SD=y +CONFIG_BLK_DEV_SR=y +CONFIG_BLK_DEV_SR_VENDOR=y +CONFIG_CHR_DEV_SG=y +CONFIG_SCSI_CONSTANTS=y +CONFIG_SCSI_SPI_ATTRS=y +# CONFIG_SCSI_LOWLEVEL is not set +CONFIG_ATA=y +CONFIG_NETDEVICES=y +CONFIG_DUMMY=y +CONFIG_MACVLAN=y +CONFIG_IPVLAN=y +CONFIG_VXLAN=y +CONFIG_NETCONSOLE=y +CONFIG_VETH=y +CONFIG_USB_RTL8150=y +CONFIG_USB_RTL8152=y +CONFIG_USB_LAN78XX=y +CONFIG_USB_USBNET=y +CONFIG_INPUT_POLLDEV=y +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_JOYSTICK=y +CONFIG_INPUT_TABLET=y +CONFIG_INPUT_TOUCHSCREEN=y +CONFIG_INPUT_MISC=y +CONFIG_SERIO_RAW=y +# CONFIG_LEGACY_PTYS is not set +CONFIG_SERIAL_NONSTANDARD=y +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=32 +CONFIG_SERIAL_8250_EXTENDED=y +CONFIG_SERIAL_8250_MANY_PORTS=y +CONFIG_SERIAL_8250_SHARE_IRQ=y +CONFIG_SERIAL_8250_DETECT_IRQ=y +CONFIG_SERIAL_8250_RSA=y +CONFIG_RAW_DRIVER=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_MUX=y +CONFIG_I2C_MUX_GPMUX=y +CONFIG_I2C_MUX_PCA954x=y +# CONFIG_I2C_HELPER_AUTO is not set +CONFIG_I2C_BCM2708=y +CONFIG_I2C_BCM2835=y +CONFIG_I2C_GPIO=y +CONFIG_I2C_ROBOTFUZZ_OSIF=y +CONFIG_I2C_TINY_USB=y +CONFIG_SPI=y +CONFIG_SPI_BCM2835=y +CONFIG_SPI_BCM2835AUX=y +CONFIG_SPI_SPIDEV=y +CONFIG_SPI_SLAVE=y +CONFIG_PPS=y +CONFIG_PPS_CLIENT_LDISC=y +CONFIG_PPS_CLIENT_GPIO=y +CONFIG_PINCTRL_MCP23S08=y +CONFIG_POWER_RESET=y +CONFIG_POWER_RESET_GPIO=y +CONFIG_THERMAL=y +CONFIG_BCM2835_THERMAL=y +CONFIG_WATCHDOG=y +CONFIG_GPIO_WATCHDOG=y +CONFIG_BCM2835_WDT=y +CONFIG_REGULATOR=y +CONFIG_DRM=y +CONFIG_FB_MODE_HELPERS=y +CONFIG_FB_TILEBLITTING=y +CONFIG_SOUND=y +CONFIG_SND=y +CONFIG_SND_HRTIMER=y +# CONFIG_SND_SUPPORT_OLD_API is not set +# CONFIG_SND_VERBOSE_PROCFS is not set +CONFIG_SND_SEQUENCER=y +# CONFIG_SND_ARM is not set +# CONFIG_SND_SPI is not set +CONFIG_SND_SOC=y +CONFIG_SND_SOC_ADAU1701=y +CONFIG_SND_SOC_ADAU7002=y +CONFIG_SND_SOC_AK4554=y +CONFIG_SND_SOC_CS4271_I2C=y +CONFIG_SND_SOC_SPDIF=y +CONFIG_SND_SOC_WM8804_I2C=y +CONFIG_HIDRAW=y +CONFIG_HID_GYRATION=y +CONFIG_LOGITECH_FF=y +CONFIG_HID_NTRIG=y +CONFIG_HID_PANTHERLORD=y +CONFIG_PANTHERLORD_FF=y +CONFIG_HID_PETALYNX=y +CONFIG_HID_SAMSUNG=y +CONFIG_HID_SUNPLUS=y +CONFIG_HID_TOPSEED=y +CONFIG_HID_PID=y +CONFIG_USB_HIDDEV=y +CONFIG_USB=y +CONFIG_USB_ANNOUNCE_NEW_DEVICES=y +CONFIG_USB_MON=y +CONFIG_USB_EHCI_HCD=y +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_PRINTER=y +CONFIG_USB_STORAGE=y +CONFIG_MMC=y +# CONFIG_PWRSEQ_EMMC is not set +# CONFIG_PWRSEQ_SIMPLE is not set +CONFIG_MMC_BLOCK_MINORS=32 +CONFIG_MMC_BCM2835_MMC=y +CONFIG_MMC_BCM2835_DMA=y +CONFIG_MMC_BCM2835_SDHOST=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_PLTFM=y +CONFIG_RTC_CLASS=y +# CONFIG_RTC_HCTOSYS is not set +CONFIG_DMADEVICES=y +CONFIG_DMA_BCM2835=y +CONFIG_DMA_BCM2708=y +CONFIG_MAILBOX=y +CONFIG_BCM2835_MBOX=y +CONFIG_RASPBERRYPI_POWER=y +CONFIG_DAX=y +CONFIG_RASPBERRYPI_FIRMWARE=y +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_AUTOFS4_FS=y +CONFIG_OVERLAY_FS=y +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_LZ4=y +# CONFIG_NETWORK_FILESYSTEMS is not set +CONFIG_NLS_DEFAULT="utf8" +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ASCII=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_UTF8=y +CONFIG_PRINTK_TIME=y +# CONFIG_ENABLE_WARN_DEPRECATED is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_KEYS=y +CONFIG_SECURITY=y +CONFIG_SECURITY_APPARMOR=y +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_GCM=y +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_LZ4=y diff --git a/buildroot-external/board/rpi3/post-image.sh b/buildroot-external/board/rpi3/post-image.sh new file mode 100755 index 00000000000..36aee53a8eb --- /dev/null +++ b/buildroot-external/board/rpi3/post-image.sh @@ -0,0 +1,29 @@ +#!/bin/bash +set -e + +SCRIPT_DIR=${BR2_EXTERNAL_HASSOS_PATH}/scripts +BOARD_DIR=${2} +BOOT_DATA=${BINARIES_DIR}/boot + +. ${SCRIPT_DIR}/hdd-image.sh +. ${BR2_EXTERNAL_HASSOS_PATH}/info +. ${BOARD_DIR}/info + +# Filename +IMAGE_FILE=${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.vmdk + +# Init boot data +rm -rf ${BOOT_DATA} +mkdir -p ${BOOT_DATA}/EFI/BOOT +mkdir -p ${BOOT_DATA}/EFI/barebox + +cp ${BINARIES_DIR}/barebox.bin ${BOOT_DATA}/EFI/BOOT/BOOTx64.EFI +cp ${BOARD_DIR}/barebox-state.dtb ${BOOT_DATA}/EFI/barebox/state.dtb + +# Create other layers +create_boot_image ${BINARIES_DIR} +create_overlay_image ${BINARIES_DIR} + +create_hdd_image ${BINARIES_DIR} ${BINARIES_DIR}/harddisk.img 6 + +qemu-img convert -O vmdk ${BINARIES_DIR}/harddisk.img ${BINARIES_DIR}/${IMAGE_FILE} diff --git a/buildroot-external/configs/ova_defconfig b/buildroot-external/configs/ova_defconfig index baf3519cbe2..3d0fddd4579 100644 --- a/buildroot-external/configs/ova_defconfig +++ b/buildroot-external/configs/ova_defconfig @@ -19,8 +19,8 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.41" -BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/kernel.config" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config" +BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y diff --git a/buildroot-external/configs/rpi3_defconfig b/buildroot-external/configs/rpi3_defconfig new file mode 100644 index 00000000000..9a7d80d6e74 --- /dev/null +++ b/buildroot-external/configs/rpi3_defconfig @@ -0,0 +1,89 @@ +BR2_arm=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y +BR2_DL_DIR="/cache/dl" +BR2_CCACHE=y +BR2_CCACHE_DIR="/cache/cc" +BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches" +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +BR2_GCC_VERSION_7_X=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_TARGET_GENERIC_HOSTNAME="hassio" +BR2_TARGET_GENERIC_ISSUE="Welcome to HassOS" +BR2_INIT_SYSTEMD=y +BR2_TARGET_GENERIC_GETTY_PORT="tty1" +# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set +BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_HASSOS_PATH)/rootfs-overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi3/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi3" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rpi-4.14.y" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" +BR2_LINUX_KERNEL_LZ4=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config" +BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y +BR2_PACKAGE_JQ=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_E2FSPROGS=y +BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_RPI_WIFI_FIRMWARE=y +BR2_PACKAGE_DT_UTILS=y +BR2_PACKAGE_GPTFDISK=y +BR2_PACKAGE_GPTFDISK_SGDISK=y +BR2_PACKAGE_CA_CERTIFICATES=y +BR2_PACKAGE_LIBDNET=y +BR2_PACKAGE_LIBCGROUP=y +BR2_PACKAGE_LIBCGROUP_TOOLS=y +BR2_PACKAGE_AVAHI=y +BR2_PACKAGE_AVAHI_DAEMON=y +BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y +BR2_PACKAGE_DROPBEAR=y +# BR2_PACKAGE_DROPBEAR_CLIENT is not set +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set +BR2_PACKAGE_NETWORK_MANAGER=y +BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER=y +BR2_PACKAGE_DOCKER_ENGINE=y +BR2_PACKAGE_RAUC=y +BR2_PACKAGE_RAUC_NETWORK=y +# BR2_PACKAGE_SYSTEMD_HWDB is not set +# BR2_PACKAGE_SYSTEMD_NETWORKD is not set +BR2_PACKAGE_SYSTEMD_RANDOMSEED=y +# BR2_PACKAGE_SYSTEMD_RESOLVED is not set +BR2_PACKAGE_UTIL_LINUX_PARTX=y +BR2_PACKAGE_UTIL_LINUX_ZRAMCTL=y +BR2_TARGET_ROOTFS_SQUASHFS=y +BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_BAREBOX=y +BR2_TARGET_BAREBOX_CUSTOM_VERSION=y +BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2018.05.0" +BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y +BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi3/barebox.config" +BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/barebox-env" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_E2FSPROGS=y +BR2_PACKAGE_HOST_GPTFDISK=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_RAUC=y +BR2_PACKAGE_MINGETTY=y +BR2_PACKAGE_HASSOS=y +BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armhf-hassio-supervisor" +BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="103.3" +BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi3-homeassistant" +BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" +BR2_PACKAGE_HASSOS_CLI="homeassistant/armhf-hassio-cli" +BR2_PACKAGE_HASSOS_CLI_VERSION="3" +BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" +BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_APPARMOR=y diff --git a/buildroot-external/kernel.config b/buildroot-external/kernel.config new file mode 100644 index 00000000000..70cf601e60e --- /dev/null +++ b/buildroot-external/kernel.config @@ -0,0 +1,90 @@ +CONFIG_KERNEL_LZ4=y + +CONFIG_ZRAM=y +CONFIG_ZSMALLOC=y + +CONFIG_POSIX_MQUEUE=y +CONFIG_CFQ_GROUP_IOSCHED=y +CONFIG_CFS_BANDWIDTH=y +CONFIG_FAIR_GROUP_SCHED=y +CONFIG_RT_GROUP_SCHED=y +CONFIG_NET_SCHED=y + +CONFIG_CGROUPS=y +CONFIG_BLK_CGROUP=y +CONFIG_BLK_DEV_THROTTLING=y +CONFIG_CGROUP_SCHED=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_CGROUP_PERF=y +CONFIG_NET_CLS_CGROUP=y +CONFIG_CGROUP_NET_PRIO=y + +CONFIG_MEMCG=y +CONFIG_MEMCG_SWAP=y + +CONFIG_NAMESPACES=y +CONFIG_USER_NS=y +CONFIG_PID_NS=y +CONFIG_IPC_NS=y +CONFIG_UTS_NS=y + +CONFIG_NETDEVICES=y +CONFIG_DUMMY=y +CONFIG_MACVLAN=y +CONFIG_IPVLAN=y +CONFIG_VXLAN=y + +CONFIG_INET_ESP=y +CONFIG_INET_XFRM_MODE_TRANSPORT=y +CONFIG_NETCONSOLE=y +CONFIG_VETH=y +CONFIG_NETFILTER=y +CONFIG_NF_CONNTRACK=y +CONFIG_NF_NAT=y +CONFIG_NF_NAT_NEEDED=y +CONFIG_NF_CONNTRACK_IPV4=y +CONFIG_NF_CONNTRACK_FTP=y +CONFIG_NF_CONNTRACK_TFTP=y +CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y +CONFIG_NETFILTER_XT_MATCH_IPVS=y +CONFIG_IP_VS=y +CONFIG_IP_VS_RR=y +CONFIG_IP_VS_NFCT=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_NAT=y +CONFIG_IP_NF_TARGET_MASQUERADE=y +CONFIG_BRIDGE=y +CONFIG_BRIDGE_NETFILTER=y +CONFIG_XFRM=y +CONFIG_XFRM_USER=y +CONFIG_XFRM_ALGO=y + +CONFIG_EXT4_FS=y +CONFIG_EXT4_FS_POSIX_ACL=y +CONFIG_EXT4_FS_SECURITY=y +CONFIG_OVERLAY_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_SQUASHFS=y +CONFIG_SQUASHFS_XATTR=y +CONFIG_SQUASHFS_LZ4=y + +# CONFIG_SECCOMP is not set +CONFIG_SECURITY=y +CONFIG_SECURITY_APPARMOR=y +CONFIG_KEYS=y + +CONFIG_CRYPTO_CCM=y +CONFIG_CRYPTO_GCM=y +CONFIG_CRYPTO_CMAC=y +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_LZ4=y + +# CONFIG_LOGO is not set +# CONFIG_VIRTUALIZATION is not set From e3d4eb3a3b353300e396de9fa6144ae1ba93c634 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 15:15:19 +0200 Subject: [PATCH 033/118] Cleanup --- buildroot-external/board/rpi3/barebox-env/boot/system0 | 5 ----- buildroot-external/board/rpi3/barebox-env/boot/system1 | 4 ---- buildroot-external/scripts/rootfs-layer.sh | 1 - 3 files changed, 10 deletions(-) delete mode 100644 buildroot-external/board/rpi3/barebox-env/boot/system0 delete mode 100644 buildroot-external/board/rpi3/barebox-env/boot/system1 diff --git a/buildroot-external/board/rpi3/barebox-env/boot/system0 b/buildroot-external/board/rpi3/barebox-env/boot/system0 deleted file mode 100644 index 4239b465cdb..00000000000 --- a/buildroot-external/board/rpi3/barebox-env/boot/system0 +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -global bootm.image="/mnt/disk1/boot/bzImage" -global linux.bootargs.dyn.root="root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro" - diff --git a/buildroot-external/board/rpi3/barebox-env/boot/system1 b/buildroot-external/board/rpi3/barebox-env/boot/system1 deleted file mode 100644 index 3926d411215..00000000000 --- a/buildroot-external/board/rpi3/barebox-env/boot/system1 +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -global bootm.image="/mnt/disk2/boot/bzImage" -global linux.bootargs.dyn.root="root=PARTUUID=a3ec664e-32ce-4665-95ea-7ae90ce9aa20 rootfstype=squashfs ro" diff --git a/buildroot-external/scripts/rootfs-layer.sh b/buildroot-external/scripts/rootfs-layer.sh index d182778808d..4bb672e8a9c 100644 --- a/buildroot-external/scripts/rootfs-layer.sh +++ b/buildroot-external/scripts/rootfs-layer.sh @@ -8,7 +8,6 @@ function fix_rootfs() { # Cleanup etc rm -rf ${TARGET_DIR}/etc/init.d - rm -rf ${TARGET_DIR}/etc/modules-load.d rm -rf ${TARGET_DIR}/etc/network rm -rf ${TARGET_DIR}/etc/X11 rm -rf ${TARGET_DIR}/etc/xdg From cb5c9d11215a53ec338f7627ca7e370fa68a7cf0 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 15:20:38 +0200 Subject: [PATCH 034/118] Create etc-modules\x2dload.d.mount --- .../systemd/system/etc-modules\\x2dload.d.mount" | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 "buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-modules\\x2dload.d.mount" diff --git "a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-modules\\x2dload.d.mount" "b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-modules\\x2dload.d.mount" new file mode 100644 index 00000000000..3b5996e7ee5 --- /dev/null +++ "b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-modules\\x2dload.d.mount" @@ -0,0 +1,14 @@ +[Unit] +Description=Kernel Modules-load +Requires=mnt-overlay.mount +After=mnt-overlay.mount +Before=systemd-modules-load.service hassos-config.service + +[Mount] +What=/mnt/overlay/etc/modules-load.d +Where=/etc/modules-load.d +Type=None +Options=bind + +[Install] +WantedBy=hassos-bind.target From 8e37f9af9d01e160a6497e6b2346e02b841aaf2b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 15:21:09 +0200 Subject: [PATCH 035/118] Update etc-NetworkManager-system\x2dconnections.mount --- .../system/etc-NetworkManager-system\\x2dconnections.mount" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-NetworkManager-system\\x2dconnections.mount" "b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-NetworkManager-system\\x2dconnections.mount" index a84d927daad..c312ebbb992 100644 --- "a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-NetworkManager-system\\x2dconnections.mount" +++ "b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-NetworkManager-system\\x2dconnections.mount" @@ -1,5 +1,5 @@ [Unit] -Description=NetworkManager system connections +Description=NetworkManager persistent system connections Requires=mnt-overlay.mount After=mnt-overlay.mount Before=NetworkManager.service hassos-config.service From 45dfd904d152127f3765a37959bf62519ed6cfae Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 15:21:35 +0200 Subject: [PATCH 036/118] Update etc-modules\x2dload.d.mount --- .../usr/lib/systemd/system/etc-modules\\x2dload.d.mount" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-modules\\x2dload.d.mount" "b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-modules\\x2dload.d.mount" index 3b5996e7ee5..ba9afd8bdae 100644 --- "a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-modules\\x2dload.d.mount" +++ "b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/etc-modules\\x2dload.d.mount" @@ -1,5 +1,5 @@ [Unit] -Description=Kernel Modules-load +Description=Kernel persistent modules-load.d Requires=mnt-overlay.mount After=mnt-overlay.mount Before=systemd-modules-load.service hassos-config.service From a940b5c084286819a9c27dfece0c9a0100a002c4 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 15:22:40 +0200 Subject: [PATCH 037/118] Create hassos.conf --- .../systemd/system/systemd-modules-load.service.d/hassos.conf | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 buildroot-external/rootfs-overlay/etc/systemd/system/systemd-modules-load.service.d/hassos.conf diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/systemd-modules-load.service.d/hassos.conf b/buildroot-external/rootfs-overlay/etc/systemd/system/systemd-modules-load.service.d/hassos.conf new file mode 100644 index 00000000000..3e1ee64ccd4 --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/systemd-modules-load.service.d/hassos.conf @@ -0,0 +1,2 @@ +[Unit] +RequiresMountsFor=/etc/modules-load.d From e3645e22dfc7b8d52ace8a640f33dd9296d76395 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 15:24:40 +0200 Subject: [PATCH 038/118] Active module load --- .../hassos-bind.target.wants/etc-modules\\x2dload.d.mount" | 1 + 1 file changed, 1 insertion(+) create mode 120000 "buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-modules\\x2dload.d.mount" diff --git "a/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-modules\\x2dload.d.mount" "b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-modules\\x2dload.d.mount" new file mode 120000 index 00000000000..11e4628b32e --- /dev/null +++ "b/buildroot-external/rootfs-overlay/etc/systemd/system/hassos-bind.target.wants/etc-modules\\x2dload.d.mount" @@ -0,0 +1 @@ +/usr/lib/systemd/system/etc-modules\x2dload.d.mount \ No newline at end of file From b4b9c578be01a552911cee0a4a594be3cf1cd3fd Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 19:27:28 +0200 Subject: [PATCH 039/118] Fix kernel options --- buildroot-external/busybox.config | 18 +++++++++--------- buildroot-external/configs/ova_defconfig | 2 +- buildroot-external/kernel.config | 4 ++++ 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/buildroot-external/busybox.config b/buildroot-external/busybox.config index 61ce69e4829..8af754c3c24 100644 --- a/buildroot-external/busybox.config +++ b/buildroot-external/busybox.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Busybox version: 1.27.2 -# Tue May 1 14:34:48 2018 +# Fri May 18 17:09:42 2018 # CONFIG_HAVE_DOT_CONFIG=y @@ -540,12 +540,12 @@ CONFIG_FEATURE_PASSWD_WEAK_CHECK=y # 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 +CONFIG_LSMOD=y +CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y +CONFIG_MODINFO=y +CONFIG_MODPROBE=y +CONFIG_FEATURE_MODPROBE_BLACKLIST=y +CONFIG_RMMOD=y # # Options common to multiple modutils @@ -562,8 +562,8 @@ CONFIG_FEATURE_PASSWD_WEAK_CHECK=y # 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="" +CONFIG_DEFAULT_MODULES_DIR="/lib/modules" +CONFIG_DEFAULT_DEPMOD_FILE="modules.dep" # # Linux System Utilities diff --git a/buildroot-external/configs/ova_defconfig b/buildroot-external/configs/ova_defconfig index 3d0fddd4579..a308a7e631b 100644 --- a/buildroot-external/configs/ova_defconfig +++ b/buildroot-external/configs/ova_defconfig @@ -19,8 +19,8 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.41" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config $(BR2_EXTERNAL_HASSOS_PATH)/board/ova/kernel.config" BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_INSTALL_TARGET=y BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y diff --git a/buildroot-external/kernel.config b/buildroot-external/kernel.config index 70cf601e60e..a4c540cb415 100644 --- a/buildroot-external/kernel.config +++ b/buildroot-external/kernel.config @@ -38,6 +38,8 @@ CONFIG_MACVLAN=y CONFIG_IPVLAN=y CONFIG_VXLAN=y +CONFIG_INET=y +CONFIG_IPV6=y CONFIG_INET_ESP=y CONFIG_INET_XFRM_MODE_TRANSPORT=y CONFIG_NETCONSOLE=y @@ -49,6 +51,7 @@ CONFIG_NF_NAT_NEEDED=y CONFIG_NF_CONNTRACK_IPV4=y CONFIG_NF_CONNTRACK_FTP=y CONFIG_NF_CONNTRACK_TFTP=y +CONFIG_NETFILTER_ADVANCED=y CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y CONFIG_NETFILTER_XT_MATCH_IPVS=y @@ -64,6 +67,7 @@ CONFIG_BRIDGE_NETFILTER=y CONFIG_XFRM=y CONFIG_XFRM_USER=y CONFIG_XFRM_ALGO=y +CONFIG_NET_L3_MASTER_DEV=Y CONFIG_EXT4_FS=y CONFIG_EXT4_FS_POSIX_ACL=y From ef3c600f3e3bcb3c6cb2637bcb0f8e91088ced22 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 21:35:53 +0200 Subject: [PATCH 040/118] Delete .ignore --- buildroot-patches/.ignore | 1 - 1 file changed, 1 deletion(-) delete mode 100644 buildroot-patches/.ignore diff --git a/buildroot-patches/.ignore b/buildroot-patches/.ignore deleted file mode 100644 index 8b137891791..00000000000 --- a/buildroot-patches/.ignore +++ /dev/null @@ -1 +0,0 @@ - From f7276c3fc858c24b5c1b06cfeec586540dea4fd6 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 22:27:22 +0200 Subject: [PATCH 041/118] Cleanup image generator --- buildroot-external/board/rpi3/post-image.sh | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/buildroot-external/board/rpi3/post-image.sh b/buildroot-external/board/rpi3/post-image.sh index 36aee53a8eb..88834673a01 100755 --- a/buildroot-external/board/rpi3/post-image.sh +++ b/buildroot-external/board/rpi3/post-image.sh @@ -10,20 +10,21 @@ BOOT_DATA=${BINARIES_DIR}/boot . ${BOARD_DIR}/info # Filename -IMAGE_FILE=${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.vmdk +IMAGE_FILE=${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.img # Init boot data rm -rf ${BOOT_DATA} -mkdir -p ${BOOT_DATA}/EFI/BOOT -mkdir -p ${BOOT_DATA}/EFI/barebox -cp ${BINARIES_DIR}/barebox.bin ${BOOT_DATA}/EFI/BOOT/BOOTx64.EFI -cp ${BOARD_DIR}/barebox-state.dtb ${BOOT_DATA}/EFI/barebox/state.dtb +cp ${BINARIES_DIR}/barebox.bin ${BOOT_DATA}/ +cp -t ${BOOT_DATA} bcm2710-rpi-3-b.dtb bcm2710-rpi-3-b-plus.dtb bcm2710-rpi-cm3.dtb +cp -t ${BOOT_DATA} rpi-firmware/bootcode.bin rpi-firmware/config.txt rpi-firmware/fixup.dat rpi-firmware/start.elf +cp -r rpi-firmware/overlays ${BOOT_DATA}/ + +# Update Boot options + # Create other layers create_boot_image ${BINARIES_DIR} create_overlay_image ${BINARIES_DIR} -create_hdd_image ${BINARIES_DIR} ${BINARIES_DIR}/harddisk.img 6 - -qemu-img convert -O vmdk ${BINARIES_DIR}/harddisk.img ${BINARIES_DIR}/${IMAGE_FILE} +create_hdd_image ${BINARIES_DIR} ${BINARIES_DIR}/${IMAGE_FILE} 6 From f81e54a124a29c7ba04bf07d67a03e82f5ab4883 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 22:45:02 +0200 Subject: [PATCH 042/118] Update rootfs-layer.sh --- buildroot-external/scripts/rootfs-layer.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/buildroot-external/scripts/rootfs-layer.sh b/buildroot-external/scripts/rootfs-layer.sh index 4bb672e8a9c..47243cfb5d3 100644 --- a/buildroot-external/scripts/rootfs-layer.sh +++ b/buildroot-external/scripts/rootfs-layer.sh @@ -17,6 +17,9 @@ function fix_rootfs() { rm -rf ${TARGET_DIR}/srv rm -rf ${TARGET_DIR}/opt + # Cleanup miscs + rm -rf ${TARGET_DIR}/usr/lib/modules-load.d + # Fix: tempfs with /srv sed -i "/srv/d" ${TARGET_DIR}/usr/lib/tmpfiles.d/home.conf From 8ef36c928f72835fa393e2ddf48bffcb67c62064 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 23:05:41 +0200 Subject: [PATCH 043/118] Fix expand after rename --- .../systemd/system/local-fs.target.wants/hassos-expand.service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/hassos-expand.service b/buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/hassos-expand.service index fe1d13e6d0e..efdd01fe4a8 120000 --- a/buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/hassos-expand.service +++ b/buildroot-external/rootfs-overlay/etc/systemd/system/local-fs.target.wants/hassos-expand.service @@ -1 +1 @@ -/usr/lib/systemd/system/hassos-expand.service +/usr/lib/systemd/system/hassos-expand.service \ No newline at end of file From 8ebff931c0559fd89708816721e5f4916ed91038 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 23:16:29 +0200 Subject: [PATCH 044/118] Fix spell in kernel --- buildroot-external/kernel.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/kernel.config b/buildroot-external/kernel.config index a4c540cb415..e6cd8d557a4 100644 --- a/buildroot-external/kernel.config +++ b/buildroot-external/kernel.config @@ -67,7 +67,7 @@ CONFIG_BRIDGE_NETFILTER=y CONFIG_XFRM=y CONFIG_XFRM_USER=y CONFIG_XFRM_ALGO=y -CONFIG_NET_L3_MASTER_DEV=Y +CONFIG_NET_L3_MASTER_DEV=y CONFIG_EXT4_FS=y CONFIG_EXT4_FS_POSIX_ACL=y From ff6e0f297a67a1b26af55937997a5e34fa0dabb9 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 23:24:48 +0200 Subject: [PATCH 045/118] Delete kernel.config --- buildroot-external/board/rpi3/kernel.config | 263 -------------------- 1 file changed, 263 deletions(-) delete mode 100644 buildroot-external/board/rpi3/kernel.config diff --git a/buildroot-external/board/rpi3/kernel.config b/buildroot-external/board/rpi3/kernel.config deleted file mode 100644 index d9e9b8d4aa8..00000000000 --- a/buildroot-external/board/rpi3/kernel.config +++ /dev/null @@ -1,263 +0,0 @@ -CONFIG_LOCALVERSION="-v7" -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_KERNEL_LZ4=y -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_BSD_PROCESS_ACCT_V3=y -CONFIG_TASKSTATS=y -CONFIG_TASK_DELAY_ACCT=y -CONFIG_TASK_XACCT=y -CONFIG_TASK_IO_ACCOUNTING=y -CONFIG_LOG_BUF_SHIFT=18 -CONFIG_CGROUPS=y -CONFIG_MEMCG=y -CONFIG_MEMCG_SWAP=y -CONFIG_BLK_CGROUP=y -CONFIG_CGROUP_SCHED=y -CONFIG_CFS_BANDWIDTH=y -CONFIG_RT_GROUP_SCHED=y -CONFIG_CGROUP_PIDS=y -CONFIG_CGROUP_FREEZER=y -CONFIG_CPUSETS=y -CONFIG_CGROUP_DEVICE=y -CONFIG_CGROUP_CPUACCT=y -CONFIG_CGROUP_PERF=y -CONFIG_USER_NS=y -# CONFIG_COMPAT_BRK is not set -CONFIG_PROFILING=y -CONFIG_JUMP_LABEL=y -CONFIG_BLK_DEV_THROTTLING=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_CFQ_GROUP_IOSCHED=y -CONFIG_ARCH_BCM=y -CONFIG_ARCH_BCM2835=y -# CONFIG_CACHE_L2X0 is not set -CONFIG_SMP=y -CONFIG_SCHED_SMT=y -CONFIG_PREEMPT_VOLUNTARY=y -CONFIG_ZSMALLOC=y -CONFIG_CPU_FREQ=y -CONFIG_CPU_FREQ_STAT=y -CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE=y -CONFIG_CPU_FREQ_GOV_PERFORMANCE=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_CORE_DUMP_DEFAULT_ELF_HEADERS is not set -# CONFIG_SUSPEND is not set -CONFIG_PM=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_XFRM_USER=y -CONFIG_INET=y -CONFIG_IP_MULTICAST=y -CONFIG_IP_ADVANCED_ROUTER=y -CONFIG_IP_MULTIPLE_TABLES=y -CONFIG_IP_ROUTE_MULTIPATH=y -CONFIG_IP_ROUTE_VERBOSE=y -CONFIG_IP_PNP=y -CONFIG_IP_PNP_DHCP=y -CONFIG_IP_PNP_BOOTP=y -CONFIG_IP_PNP_RARP=y -CONFIG_IP_MROUTE=y -CONFIG_IP_PIMSM_V1=y -CONFIG_IP_PIMSM_V2=y -CONFIG_SYN_COOKIES=y -CONFIG_INET_ESP=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_TCP_CONG_ADVANCED=y -# CONFIG_TCP_CONG_BIC is not set -# CONFIG_TCP_CONG_WESTWOOD is not set -# CONFIG_TCP_CONG_HTCP is not set -CONFIG_TCP_MD5SIG=y -CONFIG_INET6_AH=y -CONFIG_INET6_ESP=y -CONFIG_NETLABEL=y -CONFIG_NETWORK_SECMARK=y -CONFIG_NETFILTER=y -CONFIG_NF_CONNTRACK=y -CONFIG_NF_CONNTRACK_FTP=y -CONFIG_NF_CONNTRACK_TFTP=y -CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y -CONFIG_NETFILTER_XT_MATCH_CONNTRACK=y -CONFIG_NETFILTER_XT_MATCH_IPVS=y -CONFIG_IP_VS=y -CONFIG_IP_VS_RR=y -CONFIG_IP_VS_NFCT=y -CONFIG_NF_CONNTRACK_IPV4=y -CONFIG_IP_NF_IPTABLES=y -CONFIG_IP_NF_FILTER=y -CONFIG_IP_NF_NAT=y -CONFIG_IP_NF_TARGET_MASQUERADE=y -CONFIG_BRIDGE=y -CONFIG_NET_SCHED=y -CONFIG_NET_CLS_CGROUP=y -CONFIG_NET_EMATCH=y -CONFIG_NET_CLS_ACT=y -CONFIG_NET_L3_MASTER_DEV=y -CONFIG_CGROUP_NET_PRIO=y -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -CONFIG_DEVTMPFS=y -CONFIG_DEVTMPFS_MOUNT=y -CONFIG_CONNECTOR=y -CONFIG_ZRAM=y -CONFIG_BLK_DEV_LOOP=y -CONFIG_BLK_DEV_LOOP_MIN_COUNT=4 -CONFIG_BLK_DEV_SD=y -CONFIG_BLK_DEV_SR=y -CONFIG_BLK_DEV_SR_VENDOR=y -CONFIG_CHR_DEV_SG=y -CONFIG_SCSI_CONSTANTS=y -CONFIG_SCSI_SPI_ATTRS=y -# CONFIG_SCSI_LOWLEVEL is not set -CONFIG_ATA=y -CONFIG_NETDEVICES=y -CONFIG_DUMMY=y -CONFIG_MACVLAN=y -CONFIG_IPVLAN=y -CONFIG_VXLAN=y -CONFIG_NETCONSOLE=y -CONFIG_VETH=y -CONFIG_USB_RTL8150=y -CONFIG_USB_RTL8152=y -CONFIG_USB_LAN78XX=y -CONFIG_USB_USBNET=y -CONFIG_INPUT_POLLDEV=y -CONFIG_INPUT_EVDEV=y -CONFIG_INPUT_JOYSTICK=y -CONFIG_INPUT_TABLET=y -CONFIG_INPUT_TOUCHSCREEN=y -CONFIG_INPUT_MISC=y -CONFIG_SERIO_RAW=y -# CONFIG_LEGACY_PTYS is not set -CONFIG_SERIAL_NONSTANDARD=y -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_NR_UARTS=32 -CONFIG_SERIAL_8250_EXTENDED=y -CONFIG_SERIAL_8250_MANY_PORTS=y -CONFIG_SERIAL_8250_SHARE_IRQ=y -CONFIG_SERIAL_8250_DETECT_IRQ=y -CONFIG_SERIAL_8250_RSA=y -CONFIG_RAW_DRIVER=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_MUX=y -CONFIG_I2C_MUX_GPMUX=y -CONFIG_I2C_MUX_PCA954x=y -# CONFIG_I2C_HELPER_AUTO is not set -CONFIG_I2C_BCM2708=y -CONFIG_I2C_BCM2835=y -CONFIG_I2C_GPIO=y -CONFIG_I2C_ROBOTFUZZ_OSIF=y -CONFIG_I2C_TINY_USB=y -CONFIG_SPI=y -CONFIG_SPI_BCM2835=y -CONFIG_SPI_BCM2835AUX=y -CONFIG_SPI_SPIDEV=y -CONFIG_SPI_SLAVE=y -CONFIG_PPS=y -CONFIG_PPS_CLIENT_LDISC=y -CONFIG_PPS_CLIENT_GPIO=y -CONFIG_PINCTRL_MCP23S08=y -CONFIG_POWER_RESET=y -CONFIG_POWER_RESET_GPIO=y -CONFIG_THERMAL=y -CONFIG_BCM2835_THERMAL=y -CONFIG_WATCHDOG=y -CONFIG_GPIO_WATCHDOG=y -CONFIG_BCM2835_WDT=y -CONFIG_REGULATOR=y -CONFIG_DRM=y -CONFIG_FB_MODE_HELPERS=y -CONFIG_FB_TILEBLITTING=y -CONFIG_SOUND=y -CONFIG_SND=y -CONFIG_SND_HRTIMER=y -# CONFIG_SND_SUPPORT_OLD_API is not set -# CONFIG_SND_VERBOSE_PROCFS is not set -CONFIG_SND_SEQUENCER=y -# CONFIG_SND_ARM is not set -# CONFIG_SND_SPI is not set -CONFIG_SND_SOC=y -CONFIG_SND_SOC_ADAU1701=y -CONFIG_SND_SOC_ADAU7002=y -CONFIG_SND_SOC_AK4554=y -CONFIG_SND_SOC_CS4271_I2C=y -CONFIG_SND_SOC_SPDIF=y -CONFIG_SND_SOC_WM8804_I2C=y -CONFIG_HIDRAW=y -CONFIG_HID_GYRATION=y -CONFIG_LOGITECH_FF=y -CONFIG_HID_NTRIG=y -CONFIG_HID_PANTHERLORD=y -CONFIG_PANTHERLORD_FF=y -CONFIG_HID_PETALYNX=y -CONFIG_HID_SAMSUNG=y -CONFIG_HID_SUNPLUS=y -CONFIG_HID_TOPSEED=y -CONFIG_HID_PID=y -CONFIG_USB_HIDDEV=y -CONFIG_USB=y -CONFIG_USB_ANNOUNCE_NEW_DEVICES=y -CONFIG_USB_MON=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_OHCI_HCD=y -CONFIG_USB_PRINTER=y -CONFIG_USB_STORAGE=y -CONFIG_MMC=y -# CONFIG_PWRSEQ_EMMC is not set -# CONFIG_PWRSEQ_SIMPLE is not set -CONFIG_MMC_BLOCK_MINORS=32 -CONFIG_MMC_BCM2835_MMC=y -CONFIG_MMC_BCM2835_DMA=y -CONFIG_MMC_BCM2835_SDHOST=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_RTC_CLASS=y -# CONFIG_RTC_HCTOSYS is not set -CONFIG_DMADEVICES=y -CONFIG_DMA_BCM2835=y -CONFIG_DMA_BCM2708=y -CONFIG_MAILBOX=y -CONFIG_BCM2835_MBOX=y -CONFIG_RASPBERRYPI_POWER=y -CONFIG_DAX=y -CONFIG_RASPBERRYPI_FIRMWARE=y -CONFIG_EXT4_FS=y -CONFIG_EXT4_FS_POSIX_ACL=y -CONFIG_EXT4_FS_SECURITY=y -CONFIG_AUTOFS4_FS=y -CONFIG_OVERLAY_FS=y -CONFIG_ISO9660_FS=y -CONFIG_JOLIET=y -CONFIG_ZISOFS=y -CONFIG_MSDOS_FS=y -CONFIG_VFAT_FS=y -CONFIG_SQUASHFS=y -CONFIG_SQUASHFS_XATTR=y -CONFIG_SQUASHFS_LZ4=y -# CONFIG_NETWORK_FILESYSTEMS is not set -CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ASCII=y -CONFIG_NLS_ISO8859_1=y -CONFIG_NLS_UTF8=y -CONFIG_PRINTK_TIME=y -# CONFIG_ENABLE_WARN_DEPRECATED is not set -CONFIG_MAGIC_SYSRQ=y -CONFIG_KEYS=y -CONFIG_SECURITY=y -CONFIG_SECURITY_APPARMOR=y -CONFIG_CRYPTO_CCM=y -CONFIG_CRYPTO_GCM=y -CONFIG_CRYPTO_CMAC=y -CONFIG_CRYPTO_ARC4=y -CONFIG_CRYPTO_LZ4=y From cc28238d427c8f3b4d928a053f640b42e648f08c Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 23:29:07 +0200 Subject: [PATCH 046/118] Update barebox.config --- buildroot-external/board/rpi3/barebox.config | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/buildroot-external/board/rpi3/barebox.config b/buildroot-external/board/rpi3/barebox.config index 9fb06ce0e64..0878a2a0943 100644 --- a/buildroot-external/board/rpi3/barebox.config +++ b/buildroot-external/board/rpi3/barebox.config @@ -1,7 +1,13 @@ # CONFIG_LOCALVERSION_AUTO is not set +CONFIG_ARCH_BCM283X=y +CONFIG_MACH_RPI=y +CONFIG_MACH_RPI2=y +CONFIG_AEABI=y +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_ARM_UNWIND=y CONFIG_MMU=y -CONFIG_MALLOC_SIZE=0x0 CONFIG_MALLOC_TLSF=y +CONFIG_KALLSYMS=y CONFIG_PROMPT="HassOS-boot:" CONFIG_CMDLINE_EDITING=y CONFIG_AUTO_COMPLETE=y @@ -13,7 +19,7 @@ CONFIG_FLEXIBLE_BOOTARGS=y CONFIG_PARTITION_DISK_EFI=y # CONFIG_PARTITION_DISK_EFI_GPT_NO_FORCE is not set # CONFIG_PARTITION_DISK_EFI_GPT_COMPARE is not set -CONFIG_DEFAULT_ENVIRONMENT_PATH="/build/buildroot-external/board/ova/barebox-env /build/buildroot-external/barebox-env" +CONFIG_DEFAULT_ENVIRONMENT_PATH="/build/buildroot-external/barebox-env" CONFIG_STATE=y CONFIG_BOOTCHOOSER=y # CONFIG_CMD_VERSION is not set @@ -35,7 +41,6 @@ CONFIG_CMD_BOOTCHOOSER=y # CONFIG_SPI is not set CONFIG_DISK=y CONFIG_DISK_WRITE=y -CONFIG_CLOCKSOURCE_EFI=y CONFIG_FS_FAT=y CONFIG_FS_FAT_WRITE=y CONFIG_FS_FAT_LFN=y From 9a06af6396a7da71baf18c4de255cabc23f9321a Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 18 May 2018 23:37:11 +0200 Subject: [PATCH 047/118] Update kernel.config --- buildroot-external/kernel.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/buildroot-external/kernel.config b/buildroot-external/kernel.config index e6cd8d557a4..1daab52e77c 100644 --- a/buildroot-external/kernel.config +++ b/buildroot-external/kernel.config @@ -90,5 +90,8 @@ CONFIG_CRYPTO_CMAC=y CONFIG_CRYPTO_ARC4=y CONFIG_CRYPTO_LZ4=y +CONFIG_PARTITION_ADVANCED=y +CONFIG_EFI_PARTITION=y + # CONFIG_LOGO is not set # CONFIG_VIRTUALIZATION is not set From d3f0f1fbcf6db9ab7c5ca318485d13e28d59efd1 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 10:50:10 +0200 Subject: [PATCH 048/118] Fix bootloader --- buildroot-external/board/rpi3/barebox.config | 3 +-- buildroot-external/configs/rpi3_defconfig | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/buildroot-external/board/rpi3/barebox.config b/buildroot-external/board/rpi3/barebox.config index 0878a2a0943..3f5598bbe68 100644 --- a/buildroot-external/board/rpi3/barebox.config +++ b/buildroot-external/board/rpi3/barebox.config @@ -1,7 +1,6 @@ # CONFIG_LOCALVERSION_AUTO is not set CONFIG_ARCH_BCM283X=y -CONFIG_MACH_RPI=y -CONFIG_MACH_RPI2=y +CONFIG_MACH_RPI3=y CONFIG_AEABI=y CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y CONFIG_ARM_UNWIND=y diff --git a/buildroot-external/configs/rpi3_defconfig b/buildroot-external/configs/rpi3_defconfig index 9a7d80d6e74..0afd21d812d 100644 --- a/buildroot-external/configs/rpi3_defconfig +++ b/buildroot-external/configs/rpi3_defconfig @@ -22,8 +22,8 @@ BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux" BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rpi-4.14.y" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config" BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config" BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3" @@ -70,6 +70,7 @@ BR2_TARGET_BAREBOX_CUSTOM_VERSION=y BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2018.05.0" BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi3/barebox.config" +BR2_TARGET_BAREBOX_IMAGE_FILE="barebox-raspberry-pi-3.img" BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/barebox-env" BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_E2FSPROGS=y From fb1941c7d0e568a53b79509e5cea5afbe0a56c7f Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 10:58:40 +0200 Subject: [PATCH 049/118] Create 0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch --- ...ion-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 buildroot-external/board/rpi3/patches/barebox/0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch diff --git a/buildroot-external/board/rpi3/patches/barebox/0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch b/buildroot-external/board/rpi3/patches/barebox/0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch new file mode 100644 index 00000000000..ca94b6d6e8e --- /dev/null +++ b/buildroot-external/board/rpi3/patches/barebox/0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch @@ -0,0 +1,136 @@ +This adds basic support at the same feature level as the other +supported raspberry pi boards. + +Signed-off-by: Lucas Stach +--- + arch/arm/boards/raspberry-pi/lowlevel.c | 14 ++++++++++++-- + arch/arm/configs/rpi_defconfig | 2 ++ + arch/arm/dts/Makefile | 1 + + arch/arm/dts/bcm2837-rpi-3.dts | 15 +++++++++++++++ + arch/arm/mach-bcm283x/Kconfig | 6 ++++++ + arch/arm/mach-bcm283x/core.c | 1 + + images/Makefile.bcm283x | 4 ++++ + 7 files changed, 41 insertions(+), 2 deletions(-) + create mode 100644 arch/arm/dts/bcm2837-rpi-3.dts + +diff --git a/arch/arm/boards/raspberry-pi/lowlevel.c b/arch/arm/boards/raspberry-pi/lowlevel.c +index 4e71e29e0c0b..5ca0d3877069 100644 +--- a/arch/arm/boards/raspberry-pi/lowlevel.c ++++ b/arch/arm/boards/raspberry-pi/lowlevel.c +@@ -1,7 +1,7 @@ ++#include ++#include + #include + #include +-#include +-#include + #include + + extern char __dtb_bcm2835_rpi_start[]; +@@ -23,3 +23,13 @@ ENTRY_FUNCTION(start_raspberry_pi2, r0, r1, r2) + + barebox_arm_entry(BCM2835_SDRAM_BASE, SZ_512M, fdt); + } ++ ++extern char __dtb_bcm2837_rpi_3_start[]; ++ENTRY_FUNCTION(start_raspberry_pi3, r0, r1, r2) ++{ ++ void *fdt = __dtb_bcm2837_rpi_3_start - get_runtime_offset(); ++ ++ arm_cpu_lowlevel_init(); ++ ++ barebox_arm_entry(BCM2835_SDRAM_BASE, SZ_512M, fdt); ++} +diff --git a/arch/arm/configs/rpi_defconfig b/arch/arm/configs/rpi_defconfig +index 6dc90c59b36d..34070a05abe7 100644 +--- a/arch/arm/configs/rpi_defconfig ++++ b/arch/arm/configs/rpi_defconfig +@@ -1,9 +1,11 @@ + CONFIG_ARCH_BCM283X=y + CONFIG_MACH_RPI=y + CONFIG_MACH_RPI2=y ++CONFIG_MACH_RPI3=y + CONFIG_AEABI=y + CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y + CONFIG_ARM_UNWIND=y ++CONFIG_IMAGE_COMPRESSION_NONE=y + CONFIG_MMU=y + CONFIG_MALLOC_TLSF=y + CONFIG_KALLSYMS=y +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 0526a6f40724..0eab313c5011 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -66,6 +66,7 @@ pbl-dtb-$(CONFIG_MACH_PHYTEC_SOM_RK3288) += rk3288-phycore-som.dtb.o + pbl-dtb-$(CONFIG_MACH_REALQ7) += imx6q-dmo-edmqmx6.dtb.o + pbl-dtb-$(CONFIG_MACH_RPI) += bcm2835-rpi.dtb.o + pbl-dtb-$(CONFIG_MACH_RPI2) += bcm2836-rpi-2.dtb.o ++pbl-dtb-$(CONFIG_MACH_RPI3) += bcm2837-rpi-3.dtb.o + pbl-dtb-$(CONFIG_MACH_SABRELITE) += imx6q-sabrelite.dtb.o imx6dl-sabrelite.dtb.o + pbl-dtb-$(CONFIG_MACH_SABRESD) += imx6q-sabresd.dtb.o + pbl-dtb-$(CONFIG_MACH_FREESCALE_IMX6SX_SABRESDB) += imx6sx-sdb.dtb.o +diff --git a/arch/arm/dts/bcm2837-rpi-3.dts b/arch/arm/dts/bcm2837-rpi-3.dts +new file mode 100644 +index 000000000000..f8c58c570137 +--- /dev/null ++++ b/arch/arm/dts/bcm2837-rpi-3.dts +@@ -0,0 +1,15 @@ ++#include ++ ++/ { ++ chosen { ++ stdout-path = &uart0; ++ }; ++ ++ memory { ++ reg = <0x0 0x0>; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; +diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig +index 1457f114ccaa..af2f88c47acb 100644 +--- a/arch/arm/mach-bcm283x/Kconfig ++++ b/arch/arm/mach-bcm283x/Kconfig +@@ -19,6 +19,12 @@ config MACH_RPI2 + select CPU_V7 + select MACH_RPI_COMMON + ++config MACH_RPI3 ++ bool "RaspberryPi 3 (BCM2837/CORTEX-A53)" ++ select CPU_V7 ++ select MACH_RPI_COMMON ++ select ARM_SECURE_MONITOR ++ + endmenu + + config MACH_RPI_DEBUG_UART_BASE +diff --git a/arch/arm/mach-bcm283x/core.c b/arch/arm/mach-bcm283x/core.c +index fddcb0d1a1d4..26f0996b1cb8 100644 +--- a/arch/arm/mach-bcm283x/core.c ++++ b/arch/arm/mach-bcm283x/core.c +@@ -41,6 +41,7 @@ static int bcm2835_clk_init(void) + clk = clk_fixed("uart0-pl0110", 3 * 1000 * 1000); + clk_register_clkdev(clk, NULL, "uart0-pl0110"); + clk_register_clkdev(clk, NULL, "20201000.serial"); ++ clk_register_clkdev(clk, NULL, "3f201000.serial"); + + clk = clk_fixed("bcm2835-cs", 1 * 1000 * 1000); + clk_register_clkdev(clk, NULL, "bcm2835-cs"); +diff --git a/images/Makefile.bcm283x b/images/Makefile.bcm283x +index d59ef043f05c..d14e648926ac 100644 +--- a/images/Makefile.bcm283x ++++ b/images/Makefile.bcm283x +@@ -9,3 +9,7 @@ image-$(CONFIG_MACH_RPI) += barebox-raspberry-pi-1.img + pblx-$(CONFIG_MACH_RPI2) += start_raspberry_pi2 + FILE_barebox-raspberry-pi-2.img = start_raspberry_pi2.pblx + image-$(CONFIG_MACH_RPI2) += barebox-raspberry-pi-2.img ++ ++pblx-$(CONFIG_MACH_RPI3) += start_raspberry_pi3 ++FILE_barebox-raspberry-pi-3.img = start_raspberry_pi3.pblx ++image-$(CONFIG_MACH_RPI3) += barebox-raspberry-pi-3.img +\ No newline at end of file +-- +2.16.1 From 6e3beec3833ce3db0ce337f43d4f0ada75359819 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 10:59:47 +0200 Subject: [PATCH 050/118] Update barebox.config --- buildroot-external/board/rpi3/barebox.config | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/board/rpi3/barebox.config b/buildroot-external/board/rpi3/barebox.config index 3f5598bbe68..490fab285e4 100644 --- a/buildroot-external/board/rpi3/barebox.config +++ b/buildroot-external/board/rpi3/barebox.config @@ -5,6 +5,7 @@ CONFIG_AEABI=y CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y CONFIG_ARM_UNWIND=y CONFIG_MMU=y +CONFIG_MALLOC_SIZE=0x0 CONFIG_MALLOC_TLSF=y CONFIG_KALLSYMS=y CONFIG_PROMPT="HassOS-boot:" From b80efb9a4e52aa1b03c74b547fb42a71b819d7a4 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 11:02:26 +0200 Subject: [PATCH 051/118] Rename 0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch to 0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch --- ... 0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename buildroot-external/board/rpi3/patches/barebox/{0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch => 0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch} (100%) diff --git a/buildroot-external/board/rpi3/patches/barebox/0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch b/buildroot-external/board/rpi3/patches/barebox/0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch similarity index 100% rename from buildroot-external/board/rpi3/patches/barebox/0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch rename to buildroot-external/board/rpi3/patches/barebox/0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch From 9f42e7ed2415f3b87e73ee267db6163b271f25f5 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 11:03:25 +0200 Subject: [PATCH 052/118] Create 0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch --- ...ion-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 buildroot-external/board/rpi3/patches/barebox/0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch diff --git a/buildroot-external/board/rpi3/patches/barebox/0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch b/buildroot-external/board/rpi3/patches/barebox/0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch new file mode 100644 index 00000000000..0ee136fb301 --- /dev/null +++ b/buildroot-external/board/rpi3/patches/barebox/0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch @@ -0,0 +1,40 @@ +From: Enrico Joerns + +Signed-off-by: Enrico Joerns +Signed-off-by: Lucas Stach +Tested-by: Roland Hieber +--- + arch/arm/boards/raspberry-pi/rpi-common.c | 2 ++ + arch/arm/mach-bcm283x/include/mach/mbox.h | 4 ++++ + 2 files changed, 6 insertions(+) + +diff --git a/arch/arm/boards/raspberry-pi/rpi-common.c b/arch/arm/boards/raspberry-pi/rpi-common.c +index 6e375bc984de..aec8cb27ed40 100644 +--- a/arch/arm/boards/raspberry-pi/rpi-common.c ++++ b/arch/arm/boards/raspberry-pi/rpi-common.c +@@ -174,6 +174,8 @@ const struct rpi_model rpi_models_old_scheme[] = { + const struct rpi_model rpi_models_new_scheme[] = { + RPI_MODEL(0, "Unknown model", NULL), + RPI_MODEL(BCM2836_BOARD_REV_2_B, "2 Model B", rpi_b_plus_init), ++ RPI_MODEL(BCM2837_BOARD_REV_3_B, "3 Model B", rpi_b_plus_init), ++ RPI_MODEL(BCM2837_BOARD_REV_ZERO, "Zero", rpi_b_plus_init), + }; + + static int rpi_board_rev = 0; +diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h +index 2b5aea88ee0a..4cddf99a8429 100644 +--- a/arch/arm/mach-bcm283x/include/mach/mbox.h ++++ b/arch/arm/mach-bcm283x/include/mach/mbox.h +@@ -129,6 +129,10 @@ struct bcm2835_mbox_tag_hdr { + + /* RPi 2 */ + #define BCM2836_BOARD_REV_2_B 0x4 ++/* RPi 3 */ ++#define BCM2837_BOARD_REV_3_B 0x8 ++/* Zero */ ++#define BCM2837_BOARD_REV_ZERO 0x9 + + /* + * 0x2..0xf from: +-- +2.16.1 From 7bd1b4fc727c71059b32fb96fb7972111bd798cd Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 11:04:46 +0200 Subject: [PATCH 053/118] Update 0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch --- ...002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/buildroot-external/board/rpi3/patches/barebox/0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch b/buildroot-external/board/rpi3/patches/barebox/0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch index ca94b6d6e8e..1f84e6d9960 100644 --- a/buildroot-external/board/rpi3/patches/barebox/0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch +++ b/buildroot-external/board/rpi3/patches/barebox/0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch @@ -2,6 +2,7 @@ This adds basic support at the same feature level as the other supported raspberry pi boards. Signed-off-by: Lucas Stach +Tested-by: Roland Hieber --- arch/arm/boards/raspberry-pi/lowlevel.c | 14 ++++++++++++-- arch/arm/configs/rpi_defconfig | 2 ++ @@ -42,7 +43,7 @@ index 4e71e29e0c0b..5ca0d3877069 100644 + barebox_arm_entry(BCM2835_SDRAM_BASE, SZ_512M, fdt); +} diff --git a/arch/arm/configs/rpi_defconfig b/arch/arm/configs/rpi_defconfig -index 6dc90c59b36d..34070a05abe7 100644 +index f3aef4290425..cd88b4ac751c 100644 --- a/arch/arm/configs/rpi_defconfig +++ b/arch/arm/configs/rpi_defconfig @@ -1,9 +1,11 @@ From dd81e7b6a70c8c2549bdc2c63aac16a3883ae9bd Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 11:10:58 +0200 Subject: [PATCH 054/118] Update rpi3_defconfig --- buildroot-external/configs/rpi3_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/configs/rpi3_defconfig b/buildroot-external/configs/rpi3_defconfig index 0afd21d812d..4751bab63e9 100644 --- a/buildroot-external/configs/rpi3_defconfig +++ b/buildroot-external/configs/rpi3_defconfig @@ -4,7 +4,7 @@ BR2_ARM_FPU_VFPV4=y BR2_DL_DIR="/cache/dl" BR2_CCACHE=y BR2_CCACHE_DIR="/cache/cc" -BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches" +BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches $(BR2_EXTERNAL_HASSOS_PATH)/board/rpi3/patches" BR2_TOOLCHAIN_BUILDROOT_GLIBC=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y BR2_GCC_VERSION_7_X=y From 0a65fd2e09b3a26bea1816318409b9618c276e94 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 12:12:36 +0200 Subject: [PATCH 055/118] Update and rename 0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch to 0001-HYP-mode-handling-and-RasPi-3-support.patch --- ...YP-mode-handling-and-RasPi-3-support.patch | 295 ++++++++++++++++++ ...ion-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch | 40 --- 2 files changed, 295 insertions(+), 40 deletions(-) create mode 100644 buildroot-external/board/rpi3/patches/barebox/0001-HYP-mode-handling-and-RasPi-3-support.patch delete mode 100644 buildroot-external/board/rpi3/patches/barebox/0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch diff --git a/buildroot-external/board/rpi3/patches/barebox/0001-HYP-mode-handling-and-RasPi-3-support.patch b/buildroot-external/board/rpi3/patches/barebox/0001-HYP-mode-handling-and-RasPi-3-support.patch new file mode 100644 index 00000000000..274dbea747c --- /dev/null +++ b/buildroot-external/board/rpi3/patches/barebox/0001-HYP-mode-handling-and-RasPi-3-support.patch @@ -0,0 +1,295 @@ +Those are needed to generate some of the ARM SEC and VIRT +opcodes in a portable way. + +Signed-off-by: Lucas Stach +--- + arch/arm/include/asm/opcodes-virt.h | 39 ++++++ + arch/arm/include/asm/opcodes.h | 231 ++++++++++++++++++++++++++++++++++++ + 2 files changed, 270 insertions(+) + create mode 100644 arch/arm/include/asm/opcodes-virt.h + create mode 100644 arch/arm/include/asm/opcodes.h + +diff --git a/arch/arm/include/asm/opcodes-virt.h b/arch/arm/include/asm/opcodes-virt.h +new file mode 100644 +index 000000000000..efcfdf92d9d5 +--- /dev/null ++++ b/arch/arm/include/asm/opcodes-virt.h +@@ -0,0 +1,39 @@ ++/* ++ * opcodes-virt.h: Opcode definitions for the ARM virtualization extensions ++ * Copyright (C) 2012 Linaro Limited ++ * ++ * 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. ++ */ ++#ifndef __ASM_ARM_OPCODES_VIRT_H ++#define __ASM_ARM_OPCODES_VIRT_H ++ ++#include ++ ++#define __HVC(imm16) __inst_arm_thumb32( \ ++ 0xE1400070 | (((imm16) & 0xFFF0) << 4) | ((imm16) & 0x000F), \ ++ 0xF7E08000 | (((imm16) & 0xF000) << 4) | ((imm16) & 0x0FFF) \ ++) ++ ++#define __ERET __inst_arm_thumb32( \ ++ 0xE160006E, \ ++ 0xF3DE8F00 \ ++) ++ ++#define __MSR_ELR_HYP(regnum) __inst_arm_thumb32( \ ++ 0xE12EF300 | regnum, \ ++ 0xF3808E30 | (regnum << 16) \ ++) ++ ++#endif /* ! __ASM_ARM_OPCODES_VIRT_H */ +diff --git a/arch/arm/include/asm/opcodes.h b/arch/arm/include/asm/opcodes.h +new file mode 100644 +index 000000000000..a78bf5d2c518 +--- /dev/null ++++ b/arch/arm/include/asm/opcodes.h +@@ -0,0 +1,231 @@ ++/* ++ * arch/arm/include/asm/opcodes.h ++ * ++ * 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. ++ */ ++ ++#ifndef __ASM_ARM_OPCODES_H ++#define __ASM_ARM_OPCODES_H ++ ++#ifndef __ASSEMBLY__ ++#include ++extern asmlinkage unsigned int arm_check_condition(u32 opcode, u32 psr); ++#endif ++ ++#define ARM_OPCODE_CONDTEST_FAIL 0 ++#define ARM_OPCODE_CONDTEST_PASS 1 ++#define ARM_OPCODE_CONDTEST_UNCOND 2 ++ ++ ++/* ++ * Assembler opcode byteswap helpers. ++ * These are only intended for use by this header: don't use them directly, ++ * because they will be suboptimal in most cases. ++ */ ++#define ___asm_opcode_swab32(x) ( \ ++ (((x) << 24) & 0xFF000000) \ ++ | (((x) << 8) & 0x00FF0000) \ ++ | (((x) >> 8) & 0x0000FF00) \ ++ | (((x) >> 24) & 0x000000FF) \ ++) ++#define ___asm_opcode_swab16(x) ( \ ++ (((x) << 8) & 0xFF00) \ ++ | (((x) >> 8) & 0x00FF) \ ++) ++#define ___asm_opcode_swahb32(x) ( \ ++ (((x) << 8) & 0xFF00FF00) \ ++ | (((x) >> 8) & 0x00FF00FF) \ ++) ++#define ___asm_opcode_swahw32(x) ( \ ++ (((x) << 16) & 0xFFFF0000) \ ++ | (((x) >> 16) & 0x0000FFFF) \ ++) ++#define ___asm_opcode_identity32(x) ((x) & 0xFFFFFFFF) ++#define ___asm_opcode_identity16(x) ((x) & 0xFFFF) ++ ++ ++/* ++ * Opcode byteswap helpers ++ * ++ * These macros help with converting instructions between a canonical integer ++ * format and in-memory representation, in an endianness-agnostic manner. ++ * ++ * __mem_to_opcode_*() convert from in-memory representation to canonical form. ++ * __opcode_to_mem_*() convert from canonical form to in-memory representation. ++ * ++ * ++ * Canonical instruction representation: ++ * ++ * ARM: 0xKKLLMMNN ++ * Thumb 16-bit: 0x0000KKLL, where KK < 0xE8 ++ * Thumb 32-bit: 0xKKLLMMNN, where KK >= 0xE8 ++ * ++ * There is no way to distinguish an ARM instruction in canonical representation ++ * from a Thumb instruction (just as these cannot be distinguished in memory). ++ * Where this distinction is important, it needs to be tracked separately. ++ * ++ * Note that values in the range 0x0000E800..0xE7FFFFFF intentionally do not ++ * represent any valid Thumb-2 instruction. For this range, ++ * __opcode_is_thumb32() and __opcode_is_thumb16() will both be false. ++ * ++ * The ___asm variants are intended only for use by this header, in situations ++ * involving inline assembler. For .S files, the normal __opcode_*() macros ++ * should do the right thing. ++ */ ++#ifdef __ASSEMBLY__ ++ ++#define ___opcode_swab32(x) ___asm_opcode_swab32(x) ++#define ___opcode_swab16(x) ___asm_opcode_swab16(x) ++#define ___opcode_swahb32(x) ___asm_opcode_swahb32(x) ++#define ___opcode_swahw32(x) ___asm_opcode_swahw32(x) ++#define ___opcode_identity32(x) ___asm_opcode_identity32(x) ++#define ___opcode_identity16(x) ___asm_opcode_identity16(x) ++ ++#else /* ! __ASSEMBLY__ */ ++ ++#include ++#include ++ ++#define ___opcode_swab32(x) swab32(x) ++#define ___opcode_swab16(x) swab16(x) ++#define ___opcode_swahb32(x) swahb32(x) ++#define ___opcode_swahw32(x) swahw32(x) ++#define ___opcode_identity32(x) ((u32)(x)) ++#define ___opcode_identity16(x) ((u16)(x)) ++ ++#endif /* ! __ASSEMBLY__ */ ++ ++ ++#ifdef CONFIG_CPU_ENDIAN_BE8 ++ ++#define __opcode_to_mem_arm(x) ___opcode_swab32(x) ++#define __opcode_to_mem_thumb16(x) ___opcode_swab16(x) ++#define __opcode_to_mem_thumb32(x) ___opcode_swahb32(x) ++#define ___asm_opcode_to_mem_arm(x) ___asm_opcode_swab32(x) ++#define ___asm_opcode_to_mem_thumb16(x) ___asm_opcode_swab16(x) ++#define ___asm_opcode_to_mem_thumb32(x) ___asm_opcode_swahb32(x) ++ ++#else /* ! CONFIG_CPU_ENDIAN_BE8 */ ++ ++#define __opcode_to_mem_arm(x) ___opcode_identity32(x) ++#define __opcode_to_mem_thumb16(x) ___opcode_identity16(x) ++#define ___asm_opcode_to_mem_arm(x) ___asm_opcode_identity32(x) ++#define ___asm_opcode_to_mem_thumb16(x) ___asm_opcode_identity16(x) ++#ifndef CONFIG_CPU_ENDIAN_BE32 ++/* ++ * On BE32 systems, using 32-bit accesses to store Thumb instructions will not ++ * work in all cases, due to alignment constraints. For now, a correct ++ * version is not provided for BE32. ++ */ ++#define __opcode_to_mem_thumb32(x) ___opcode_swahw32(x) ++#define ___asm_opcode_to_mem_thumb32(x) ___asm_opcode_swahw32(x) ++#endif ++ ++#endif /* ! CONFIG_CPU_ENDIAN_BE8 */ ++ ++#define __mem_to_opcode_arm(x) __opcode_to_mem_arm(x) ++#define __mem_to_opcode_thumb16(x) __opcode_to_mem_thumb16(x) ++#ifndef CONFIG_CPU_ENDIAN_BE32 ++#define __mem_to_opcode_thumb32(x) __opcode_to_mem_thumb32(x) ++#endif ++ ++/* Operations specific to Thumb opcodes */ ++ ++/* Instruction size checks: */ ++#define __opcode_is_thumb32(x) ( \ ++ ((x) & 0xF8000000) == 0xE8000000 \ ++ || ((x) & 0xF0000000) == 0xF0000000 \ ++) ++#define __opcode_is_thumb16(x) ( \ ++ ((x) & 0xFFFF0000) == 0 \ ++ && !(((x) & 0xF800) == 0xE800 || ((x) & 0xF000) == 0xF000) \ ++) ++ ++/* Operations to construct or split 32-bit Thumb instructions: */ ++#define __opcode_thumb32_first(x) (___opcode_identity16((x) >> 16)) ++#define __opcode_thumb32_second(x) (___opcode_identity16(x)) ++#define __opcode_thumb32_compose(first, second) ( \ ++ (___opcode_identity32(___opcode_identity16(first)) << 16) \ ++ | ___opcode_identity32(___opcode_identity16(second)) \ ++) ++#define ___asm_opcode_thumb32_first(x) (___asm_opcode_identity16((x) >> 16)) ++#define ___asm_opcode_thumb32_second(x) (___asm_opcode_identity16(x)) ++#define ___asm_opcode_thumb32_compose(first, second) ( \ ++ (___asm_opcode_identity32(___asm_opcode_identity16(first)) << 16) \ ++ | ___asm_opcode_identity32(___asm_opcode_identity16(second)) \ ++) ++ ++/* ++ * Opcode injection helpers ++ * ++ * In rare cases it is necessary to assemble an opcode which the ++ * assembler does not support directly, or which would normally be ++ * rejected because of the CFLAGS or AFLAGS used to build the affected ++ * file. ++ * ++ * Before using these macros, consider carefully whether it is feasible ++ * instead to change the build flags for your file, or whether it really ++ * makes sense to support old assembler versions when building that ++ * particular kernel feature. ++ * ++ * The macros defined here should only be used where there is no viable ++ * alternative. ++ * ++ * ++ * __inst_arm(x): emit the specified ARM opcode ++ * __inst_thumb16(x): emit the specified 16-bit Thumb opcode ++ * __inst_thumb32(x): emit the specified 32-bit Thumb opcode ++ * ++ * __inst_arm_thumb16(arm, thumb): emit either the specified arm or ++ * 16-bit Thumb opcode, depending on whether an ARM or Thumb-2 ++ * kernel is being built ++ * ++ * __inst_arm_thumb32(arm, thumb): emit either the specified arm or ++ * 32-bit Thumb opcode, depending on whether an ARM or Thumb-2 ++ * kernel is being built ++ * ++ * ++ * Note that using these macros directly is poor practice. Instead, you ++ * should use them to define human-readable wrapper macros to encode the ++ * instructions that you care about. In code which might run on ARMv7 or ++ * above, you can usually use the __inst_arm_thumb{16,32} macros to ++ * specify the ARM and Thumb alternatives at the same time. This ensures ++ * that the correct opcode gets emitted depending on the instruction set ++ * used for the kernel build. ++ * ++ * Look at opcodes-virt.h for an example of how to use these macros. ++ */ ++#include ++ ++#define __inst_arm(x) ___inst_arm(___asm_opcode_to_mem_arm(x)) ++#define __inst_thumb32(x) ___inst_thumb32( \ ++ ___asm_opcode_to_mem_thumb16(___asm_opcode_thumb32_first(x)), \ ++ ___asm_opcode_to_mem_thumb16(___asm_opcode_thumb32_second(x)) \ ++) ++#define __inst_thumb16(x) ___inst_thumb16(___asm_opcode_to_mem_thumb16(x)) ++ ++#ifdef CONFIG_THUMB2_BAREBOX ++#define __inst_arm_thumb16(arm_opcode, thumb_opcode) \ ++ __inst_thumb16(thumb_opcode) ++#define __inst_arm_thumb32(arm_opcode, thumb_opcode) \ ++ __inst_thumb32(thumb_opcode) ++#else ++#define __inst_arm_thumb16(arm_opcode, thumb_opcode) __inst_arm(arm_opcode) ++#define __inst_arm_thumb32(arm_opcode, thumb_opcode) __inst_arm(arm_opcode) ++#endif ++ ++/* Helpers for the helpers. Don't use these directly. */ ++#ifdef __ASSEMBLY__ ++#define ___inst_arm(x) .long x ++#define ___inst_thumb16(x) .short x ++#define ___inst_thumb32(first, second) .short first, second ++#else ++#define ___inst_arm(x) ".long " __stringify(x) "\n\t" ++#define ___inst_thumb16(x) ".short " __stringify(x) "\n\t" ++#define ___inst_thumb32(first, second) \ ++ ".short " __stringify(first) ", " __stringify(second) "\n\t" ++#endif ++ ++#endif /* __ASM_ARM_OPCODES_H */ +-- +2.15.1 diff --git a/buildroot-external/board/rpi3/patches/barebox/0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch b/buildroot-external/board/rpi3/patches/barebox/0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch deleted file mode 100644 index 0ee136fb301..00000000000 --- a/buildroot-external/board/rpi3/patches/barebox/0001-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch +++ /dev/null @@ -1,40 +0,0 @@ -From: Enrico Joerns - -Signed-off-by: Enrico Joerns -Signed-off-by: Lucas Stach -Tested-by: Roland Hieber ---- - arch/arm/boards/raspberry-pi/rpi-common.c | 2 ++ - arch/arm/mach-bcm283x/include/mach/mbox.h | 4 ++++ - 2 files changed, 6 insertions(+) - -diff --git a/arch/arm/boards/raspberry-pi/rpi-common.c b/arch/arm/boards/raspberry-pi/rpi-common.c -index 6e375bc984de..aec8cb27ed40 100644 ---- a/arch/arm/boards/raspberry-pi/rpi-common.c -+++ b/arch/arm/boards/raspberry-pi/rpi-common.c -@@ -174,6 +174,8 @@ const struct rpi_model rpi_models_old_scheme[] = { - const struct rpi_model rpi_models_new_scheme[] = { - RPI_MODEL(0, "Unknown model", NULL), - RPI_MODEL(BCM2836_BOARD_REV_2_B, "2 Model B", rpi_b_plus_init), -+ RPI_MODEL(BCM2837_BOARD_REV_3_B, "3 Model B", rpi_b_plus_init), -+ RPI_MODEL(BCM2837_BOARD_REV_ZERO, "Zero", rpi_b_plus_init), - }; - - static int rpi_board_rev = 0; -diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h -index 2b5aea88ee0a..4cddf99a8429 100644 ---- a/arch/arm/mach-bcm283x/include/mach/mbox.h -+++ b/arch/arm/mach-bcm283x/include/mach/mbox.h -@@ -129,6 +129,10 @@ struct bcm2835_mbox_tag_hdr { - - /* RPi 2 */ - #define BCM2836_BOARD_REV_2_B 0x4 -+/* RPi 3 */ -+#define BCM2837_BOARD_REV_3_B 0x8 -+/* Zero */ -+#define BCM2837_BOARD_REV_ZERO 0x9 - - /* - * 0x2..0xf from: --- -2.16.1 From 2be580880df5be0ac55a9b2d9edb2c79994b4413 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 12:14:10 +0200 Subject: [PATCH 056/118] Update and rename 0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch to 0002-safely-switch-from-HYP-to-SVC-mode-if-required.patch --- ...ion-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch | 137 ------------------ ...tch-from-HYP-to-SVC-mode-if-required.patch | 85 +++++++++++ 2 files changed, 85 insertions(+), 137 deletions(-) delete mode 100644 buildroot-external/board/rpi3/patches/barebox/0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch create mode 100644 buildroot-external/board/rpi3/patches/barebox/0002-safely-switch-from-HYP-to-SVC-mode-if-required.patch diff --git a/buildroot-external/board/rpi3/patches/barebox/0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch b/buildroot-external/board/rpi3/patches/barebox/0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch deleted file mode 100644 index 1f84e6d9960..00000000000 --- a/buildroot-external/board/rpi3/patches/barebox/0002-rpi-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch +++ /dev/null @@ -1,137 +0,0 @@ -This adds basic support at the same feature level as the other -supported raspberry pi boards. - -Signed-off-by: Lucas Stach -Tested-by: Roland Hieber ---- - arch/arm/boards/raspberry-pi/lowlevel.c | 14 ++++++++++++-- - arch/arm/configs/rpi_defconfig | 2 ++ - arch/arm/dts/Makefile | 1 + - arch/arm/dts/bcm2837-rpi-3.dts | 15 +++++++++++++++ - arch/arm/mach-bcm283x/Kconfig | 6 ++++++ - arch/arm/mach-bcm283x/core.c | 1 + - images/Makefile.bcm283x | 4 ++++ - 7 files changed, 41 insertions(+), 2 deletions(-) - create mode 100644 arch/arm/dts/bcm2837-rpi-3.dts - -diff --git a/arch/arm/boards/raspberry-pi/lowlevel.c b/arch/arm/boards/raspberry-pi/lowlevel.c -index 4e71e29e0c0b..5ca0d3877069 100644 ---- a/arch/arm/boards/raspberry-pi/lowlevel.c -+++ b/arch/arm/boards/raspberry-pi/lowlevel.c -@@ -1,7 +1,7 @@ -+#include -+#include - #include - #include --#include --#include - #include - - extern char __dtb_bcm2835_rpi_start[]; -@@ -23,3 +23,13 @@ ENTRY_FUNCTION(start_raspberry_pi2, r0, r1, r2) - - barebox_arm_entry(BCM2835_SDRAM_BASE, SZ_512M, fdt); - } -+ -+extern char __dtb_bcm2837_rpi_3_start[]; -+ENTRY_FUNCTION(start_raspberry_pi3, r0, r1, r2) -+{ -+ void *fdt = __dtb_bcm2837_rpi_3_start - get_runtime_offset(); -+ -+ arm_cpu_lowlevel_init(); -+ -+ barebox_arm_entry(BCM2835_SDRAM_BASE, SZ_512M, fdt); -+} -diff --git a/arch/arm/configs/rpi_defconfig b/arch/arm/configs/rpi_defconfig -index f3aef4290425..cd88b4ac751c 100644 ---- a/arch/arm/configs/rpi_defconfig -+++ b/arch/arm/configs/rpi_defconfig -@@ -1,9 +1,11 @@ - CONFIG_ARCH_BCM283X=y - CONFIG_MACH_RPI=y - CONFIG_MACH_RPI2=y -+CONFIG_MACH_RPI3=y - CONFIG_AEABI=y - CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y - CONFIG_ARM_UNWIND=y -+CONFIG_IMAGE_COMPRESSION_NONE=y - CONFIG_MMU=y - CONFIG_MALLOC_TLSF=y - CONFIG_KALLSYMS=y -diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile -index 0526a6f40724..0eab313c5011 100644 ---- a/arch/arm/dts/Makefile -+++ b/arch/arm/dts/Makefile -@@ -66,6 +66,7 @@ pbl-dtb-$(CONFIG_MACH_PHYTEC_SOM_RK3288) += rk3288-phycore-som.dtb.o - pbl-dtb-$(CONFIG_MACH_REALQ7) += imx6q-dmo-edmqmx6.dtb.o - pbl-dtb-$(CONFIG_MACH_RPI) += bcm2835-rpi.dtb.o - pbl-dtb-$(CONFIG_MACH_RPI2) += bcm2836-rpi-2.dtb.o -+pbl-dtb-$(CONFIG_MACH_RPI3) += bcm2837-rpi-3.dtb.o - pbl-dtb-$(CONFIG_MACH_SABRELITE) += imx6q-sabrelite.dtb.o imx6dl-sabrelite.dtb.o - pbl-dtb-$(CONFIG_MACH_SABRESD) += imx6q-sabresd.dtb.o - pbl-dtb-$(CONFIG_MACH_FREESCALE_IMX6SX_SABRESDB) += imx6sx-sdb.dtb.o -diff --git a/arch/arm/dts/bcm2837-rpi-3.dts b/arch/arm/dts/bcm2837-rpi-3.dts -new file mode 100644 -index 000000000000..f8c58c570137 ---- /dev/null -+++ b/arch/arm/dts/bcm2837-rpi-3.dts -@@ -0,0 +1,15 @@ -+#include -+ -+/ { -+ chosen { -+ stdout-path = &uart0; -+ }; -+ -+ memory { -+ reg = <0x0 0x0>; -+ }; -+}; -+ -+&uart0 { -+ status = "okay"; -+}; -diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig -index 1457f114ccaa..af2f88c47acb 100644 ---- a/arch/arm/mach-bcm283x/Kconfig -+++ b/arch/arm/mach-bcm283x/Kconfig -@@ -19,6 +19,12 @@ config MACH_RPI2 - select CPU_V7 - select MACH_RPI_COMMON - -+config MACH_RPI3 -+ bool "RaspberryPi 3 (BCM2837/CORTEX-A53)" -+ select CPU_V7 -+ select MACH_RPI_COMMON -+ select ARM_SECURE_MONITOR -+ - endmenu - - config MACH_RPI_DEBUG_UART_BASE -diff --git a/arch/arm/mach-bcm283x/core.c b/arch/arm/mach-bcm283x/core.c -index fddcb0d1a1d4..26f0996b1cb8 100644 ---- a/arch/arm/mach-bcm283x/core.c -+++ b/arch/arm/mach-bcm283x/core.c -@@ -41,6 +41,7 @@ static int bcm2835_clk_init(void) - clk = clk_fixed("uart0-pl0110", 3 * 1000 * 1000); - clk_register_clkdev(clk, NULL, "uart0-pl0110"); - clk_register_clkdev(clk, NULL, "20201000.serial"); -+ clk_register_clkdev(clk, NULL, "3f201000.serial"); - - clk = clk_fixed("bcm2835-cs", 1 * 1000 * 1000); - clk_register_clkdev(clk, NULL, "bcm2835-cs"); -diff --git a/images/Makefile.bcm283x b/images/Makefile.bcm283x -index d59ef043f05c..d14e648926ac 100644 ---- a/images/Makefile.bcm283x -+++ b/images/Makefile.bcm283x -@@ -9,3 +9,7 @@ image-$(CONFIG_MACH_RPI) += barebox-raspberry-pi-1.img - pblx-$(CONFIG_MACH_RPI2) += start_raspberry_pi2 - FILE_barebox-raspberry-pi-2.img = start_raspberry_pi2.pblx - image-$(CONFIG_MACH_RPI2) += barebox-raspberry-pi-2.img -+ -+pblx-$(CONFIG_MACH_RPI3) += start_raspberry_pi3 -+FILE_barebox-raspberry-pi-3.img = start_raspberry_pi3.pblx -+image-$(CONFIG_MACH_RPI3) += barebox-raspberry-pi-3.img -\ No newline at end of file --- -2.16.1 diff --git a/buildroot-external/board/rpi3/patches/barebox/0002-safely-switch-from-HYP-to-SVC-mode-if-required.patch b/buildroot-external/board/rpi3/patches/barebox/0002-safely-switch-from-HYP-to-SVC-mode-if-required.patch new file mode 100644 index 00000000000..7218def6aff --- /dev/null +++ b/buildroot-external/board/rpi3/patches/barebox/0002-safely-switch-from-HYP-to-SVC-mode-if-required.patch @@ -0,0 +1,85 @@ +This is a port of the Linux safe_svcmode_maskall macro to +the Barebox lowlevel init. + +Signed-off-by: Lucas Stach +--- + arch/arm/cpu/lowlevel.S | 20 ++++++++++++++++---- + arch/arm/include/asm/system.h | 26 ++++++++++++++++++++++++++ + 2 files changed, 42 insertions(+), 4 deletions(-) + +diff --git a/arch/arm/cpu/lowlevel.S b/arch/arm/cpu/lowlevel.S +index 7696a198e764..194ce0e7c274 100644 +--- a/arch/arm/cpu/lowlevel.S ++++ b/arch/arm/cpu/lowlevel.S +@@ -1,16 +1,28 @@ + #include + #include + #include ++#include + + .section ".text_bare_init_","ax" + ENTRY(arm_cpu_lowlevel_init) + /* save lr, since it may be banked away with a processor mode change */ + mov r2, lr ++ + /* set the cpu to SVC32 mode, mask irq and fiq */ +- mrs r12, cpsr +- bic r12, r12, #0x1f +- orr r12, r12, #0xd3 +- msr cpsr, r12 ++ mrs r12 , cpsr ++ eor r12, r12, #HYP_MODE ++ tst r12, #MODE_MASK ++ bic r12 , r12 , #MODE_MASK ++ orr r12 , r12 , #(PSR_I_BIT | PSR_F_BIT | SVC_MODE) ++THUMB( orr r12 , r12 , #PSR_T_BIT ) ++ bne 1f ++ orr r12, r12, #PSR_A_BIT ++ adr lr, 2f ++ msr spsr_cxsf, r12 ++ __MSR_ELR_HYP(14) ++ __ERET ++1: msr cpsr_c, r12 ++2: + + #if __LINUX_ARM_ARCH__ >= 6 + /* +diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h +index 57c76186b499..55e0f4090295 100644 +--- a/arch/arm/include/asm/system.h ++++ b/arch/arm/include/asm/system.h +@@ -60,6 +60,32 @@ + #define CR_AFE (1 << 29) /* Access flag enable */ + #define CR_TE (1 << 30) /* Thumb exception enable */ + ++/* ++ * PSR bits ++ */ ++#define USR_MODE 0x00000010 ++#define FIQ_MODE 0x00000011 ++#define IRQ_MODE 0x00000012 ++#define SVC_MODE 0x00000013 ++#define ABT_MODE 0x00000017 ++#define HYP_MODE 0x0000001a ++#define UND_MODE 0x0000001b ++#define SYSTEM_MODE 0x0000001f ++#define MODE32_BIT 0x00000010 ++#define MODE_MASK 0x0000001f ++ ++#define PSR_T_BIT 0x00000020 ++#define PSR_F_BIT 0x00000040 ++#define PSR_I_BIT 0x00000080 ++#define PSR_A_BIT 0x00000100 ++#define PSR_E_BIT 0x00000200 ++#define PSR_J_BIT 0x01000000 ++#define PSR_Q_BIT 0x08000000 ++#define PSR_V_BIT 0x10000000 ++#define PSR_C_BIT 0x20000000 ++#define PSR_Z_BIT 0x40000000 ++#define PSR_N_BIT 0x80000000 ++ + #ifndef __ASSEMBLY__ + #if __LINUX_ARM_ARCH__ >= 7 + static inline unsigned int current_el(void) +-- +2.15.1 From 21e6fcbe4ad1fcaf340fe28b0e60f30c73fecfad Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 12:15:38 +0200 Subject: [PATCH 057/118] Create 0003-allow-secure-monitor-code-to-be-built-without-PSCI.patch --- ...onitor-code-to-be-built-without-PSCI.patch | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 buildroot-external/board/rpi3/patches/barebox/0003-allow-secure-monitor-code-to-be-built-without-PSCI.patch diff --git a/buildroot-external/board/rpi3/patches/barebox/0003-allow-secure-monitor-code-to-be-built-without-PSCI.patch b/buildroot-external/board/rpi3/patches/barebox/0003-allow-secure-monitor-code-to-be-built-without-PSCI.patch new file mode 100644 index 00000000000..0517e64aabd --- /dev/null +++ b/buildroot-external/board/rpi3/patches/barebox/0003-allow-secure-monitor-code-to-be-built-without-PSCI.patch @@ -0,0 +1,33 @@ +The hyp mode handling added in the secure monitor code is also useful +when Barebox doesn't have PSCI control. Allow to build without PSCI. + +Signed-off-by: Lucas Stach +--- + arch/arm/cpu/sm_as.S | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/arch/arm/cpu/sm_as.S b/arch/arm/cpu/sm_as.S +index 09580e75de5f..0d01e1bf2435 100644 +--- a/arch/arm/cpu/sm_as.S ++++ b/arch/arm/cpu/sm_as.S +@@ -129,7 +129,9 @@ secure_monitor: + sub sp, sp, #4*4 @ allocate result structure on stack + mov r12, sp + push {r4-r6, r12} ++#ifdef CONFIG_ARM_PSCI + bl psci_entry ++#endif + pop {r4-r6, r12} + ldm r12, {r0-r3} + add sp, sp, #4*4 +@@ -163,6 +165,8 @@ ENTRY(psci_cpu_entry) + mcr p15, 0, r0, c1, c0, 1 @ ACTLR + + bl secure_monitor_stack_setup ++#ifdef CONFIG_ARM_PSCI + bl psci_cpu_entry_c ++#endif + + ENDPROC(psci_cpu_entry) +-- +2.15.1 From 44cde8a23d176744f1264226bf0cdee4fd7e7b52 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 16:13:01 +0200 Subject: [PATCH 058/118] Create 0004-add-file-for-HYP-mode-related-setup.patch --- ...-add-file-for-HYP-mode-related-setup.patch | 187 ++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 buildroot-external/board/rpi3/patches/barebox/0004-add-file-for-HYP-mode-related-setup.patch diff --git a/buildroot-external/board/rpi3/patches/barebox/0004-add-file-for-HYP-mode-related-setup.patch b/buildroot-external/board/rpi3/patches/barebox/0004-add-file-for-HYP-mode-related-setup.patch new file mode 100644 index 00000000000..405cf063c9e --- /dev/null +++ b/buildroot-external/board/rpi3/patches/barebox/0004-add-file-for-HYP-mode-related-setup.patch @@ -0,0 +1,187 @@ +This adds routines to add hyp mode vectors and switch back to HYP +mode from SVC. This is needed in both the PBL and Barebox proper. + +Signed-off-by: Lucas Stach +--- + arch/arm/cpu/Makefile | 4 ++ + arch/arm/cpu/hyp.S | 115 ++++++++++++++++++++++++++++++++++++++++++ + arch/arm/cpu/sm_as.S | 11 ---- + arch/arm/include/asm/secure.h | 2 + + 4 files changed, 121 insertions(+), 11 deletions(-) + create mode 100644 arch/arm/cpu/hyp.S + +diff --git a/arch/arm/cpu/Makefile b/arch/arm/cpu/Makefile +index 13fe12c31f6f..537fe5b9bb8d 100644 +--- a/arch/arm/cpu/Makefile ++++ b/arch/arm/cpu/Makefile +@@ -9,6 +9,10 @@ obj-$(CONFIG_ARM_EXCEPTIONS) += exceptions.o + obj-$(CONFIG_MMU) += mmu.o mmu-early.o + pbl-$(CONFIG_MMU) += mmu-early.o + lwl-y += lowlevel.o ++obj-y += hyp.o ++AFLAGS_hyp.o :=-Wa,-march=armv7-a ++pbl-y += hyp.o ++AFLAGS_pbl-hyp.o :=-Wa,-march=armv7-a + endif + + obj-$(CONFIG_ARM_EXCEPTIONS) += interrupts.o +diff --git a/arch/arm/cpu/hyp.S b/arch/arm/cpu/hyp.S +new file mode 100644 +index 000000000000..435d416f980a +--- /dev/null ++++ b/arch/arm/cpu/hyp.S +@@ -0,0 +1,115 @@ ++#include ++#include ++#include ++ ++.arch_extension sec ++.arch_extension virt ++ ++.section ".text_bare_init_","ax" ++ ++.data ++ .align 2 ++ENTRY(__boot_cpu_mode) ++ .long 0 ++.text ++ ++ENTRY(__hyp_install) ++ mrs r12, cpsr ++ and r12, r12, #MODE_MASK ++ ++ @ Save the initial CPU state ++ adr r0, .L__boot_cpu_mode_offset ++ ldr r1, [r0] ++ str r12, [r0, r1] ++ ++ cmp r12, #HYP_MODE ++ movne pc, lr @ give up if the CPU is not in HYP mode ++ ++ @ Now install the hypervisor stub: ++ adr r12, __hyp_vectors ++ mcr p15, 4, r12, c12, c0, 0 @ set hypervisor vector base (HVBAR) ++ ++ @ Disable all traps, so we don't get any nasty surprise ++ mov r12, #0 ++ mcr p15, 4, r12, c1, c1, 0 @ HCR ++ mcr p15, 4, r12, c1, c1, 2 @ HCPTR ++ mcr p15, 4, r12, c1, c1, 3 @ HSTR ++ ++THUMB( orr r12, #(1 << 30) ) @ HSCTLR.TE ++ mcr p15, 4, r12, c1, c0, 0 @ HSCTLR ++ ++ mrc p15, 4, r12, c1, c1, 1 @ HDCR ++ and r12, #0x1f @ Preserve HPMN ++ mcr p15, 4, r12, c1, c1, 1 @ HDCR ++ ++ @ Make sure NS-SVC is initialised appropriately ++ mrc p15, 0, r12, c1, c0, 0 @ SCTLR ++ orr r12, #(1 << 5) @ CP15 barriers enabled ++ bic r12, #(3 << 7) @ Clear SED/ITD for v8 (RES0 for v7) ++ bic r12, #(3 << 19) @ WXN and UWXN disabled ++ mcr p15, 0, r12, c1, c0, 0 @ SCTLR ++ ++ mrc p15, 0, r12, c0, c0, 0 @ MIDR ++ mcr p15, 4, r12, c0, c0, 0 @ VPIDR ++ ++ mrc p15, 0, r12, c0, c0, 5 @ MPIDR ++ mcr p15, 4, r12, c0, c0, 5 @ VMPIDR ++ bx lr ++ENDPROC(__hyp_install) ++ ++ENTRY(armv7_hyp_install) ++ mov r2, lr ++ ++ bl __hyp_install ++ ++ /* set the cpu to SVC32 mode, mask irq and fiq */ ++ mrs r12 , cpsr ++ eor r12, r12, #HYP_MODE ++ tst r12, #MODE_MASK ++ bic r12 , r12 , #MODE_MASK ++ orr r12 , r12 , #(PSR_I_BIT | PSR_F_BIT | SVC_MODE) ++THUMB( orr r12 , r12 , #PSR_T_BIT ) ++ bne 1f ++ orr r12, r12, #PSR_A_BIT ++ adr lr, 2f ++ msr spsr_cxsf, r12 ++ __MSR_ELR_HYP(14) ++ __ERET ++1: msr cpsr_c, r12 ++2: ++ mov pc, r2 ++ENDPROC(armv7_hyp_install) ++ ++ENTRY(armv7_switch_to_hyp) ++ mov r0, lr ++ mov r1, sp @ save SVC copy of LR and SP ++ isb ++ hvc #0 @ for older asm: .byte 0x70, 0x00, 0x40, 0xe1 ++ mov sp, r1 ++ mov lr, r0 @ restore SVC copy of LR and SP ++ ++ bx lr ++ENDPROC(armv7_switch_to_hyp) ++ ++.align 2 ++.L__boot_cpu_mode_offset: ++ .long __boot_cpu_mode - . ++ ++/* The HYP trap is crafted to match armv7_switch_to_hyp() */ ++__hyp_do_trap: ++ mov lr, r0 ++ mov sp, r1 ++ bx lr ++ENDPROC(__hyp_do_trap) ++ ++.align 5 ++__hyp_vectors: ++__hyp_reset: W(b) . ++__hyp_und: W(b) . ++__hyp_svc: W(b) . ++__hyp_pabort: W(b) . ++__hyp_dabort: W(b) . ++__hyp_trap: W(b) __hyp_do_trap ++__hyp_irq: W(b) . ++__hyp_fiq: W(b) . ++ENDPROC(__hyp_vectors) +diff --git a/arch/arm/cpu/sm_as.S b/arch/arm/cpu/sm_as.S +index 0d01e1bf2435..de6cd0406f4f 100644 +--- a/arch/arm/cpu/sm_as.S ++++ b/arch/arm/cpu/sm_as.S +@@ -148,17 +148,6 @@ hyp_trap: + mov pc, lr @ do no switch modes, but + @ return to caller + +-ENTRY(armv7_switch_to_hyp) +- mov r0, lr +- mov r1, sp @ save SVC copy of LR and SP +- isb +- hvc #0 @ for older asm: .byte 0x70, 0x00, 0x40, 0xe1 +- mov sp, r1 +- mov lr, r0 @ restore SVC copy of LR and SP +- +- bx lr +-ENDPROC(armv7_switch_to_hyp) +- + ENTRY(psci_cpu_entry) + mrc p15, 0, r0, c1, c0, 1 @ ACTLR + orr r0, r0, #(1 << 6) @ Set SMP bit +diff --git a/arch/arm/include/asm/secure.h b/arch/arm/include/asm/secure.h +index a4cb1f6c1c44..54cc052b0cf9 100644 +--- a/arch/arm/include/asm/secure.h ++++ b/arch/arm/include/asm/secure.h +@@ -6,8 +6,10 @@ + int armv7_secure_monitor_install(void); + int __armv7_secure_monitor_install(void); + void armv7_switch_to_hyp(void); ++void armv7_hyp_install(void); + + extern unsigned char secure_monitor_init_vectors[]; ++extern int __boot_cpu_mode; + + enum arm_security_state { + ARM_STATE_SECURE, +-- +2.15.1 From 3ef47f12d7dca2178fb02aa41ae06bc94f873f08 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 16:14:59 +0200 Subject: [PATCH 059/118] Create 0005-dont-try-to-install-secure-monitor-when-entered-in-HYP-mode.patch --- ...ure-monitor-when-entered-in-HYP-mode.patch | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 buildroot-external/board/rpi3/patches/barebox/0005-dont-try-to-install-secure-monitor-when-entered-in-HYP-mode.patch diff --git a/buildroot-external/board/rpi3/patches/barebox/0005-dont-try-to-install-secure-monitor-when-entered-in-HYP-mode.patch b/buildroot-external/board/rpi3/patches/barebox/0005-dont-try-to-install-secure-monitor-when-entered-in-HYP-mode.patch new file mode 100644 index 00000000000..827c9c31e99 --- /dev/null +++ b/buildroot-external/board/rpi3/patches/barebox/0005-dont-try-to-install-secure-monitor-when-entered-in-HYP-mode.patch @@ -0,0 +1,25 @@ +When Barebox has been entered in HYP mode, the CPU is already switched +to the non-secure world and it's not possible for Barebox to install +it's own secure monitor. + +Signed-off-by: Lucas Stach +--- + arch/arm/cpu/sm.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/arch/arm/cpu/sm.c b/arch/arm/cpu/sm.c +index 5808dfd92bdc..71bb394c8540 100644 +--- a/arch/arm/cpu/sm.c ++++ b/arch/arm/cpu/sm.c +@@ -184,6 +184,9 @@ int armv7_secure_monitor_install(void) + return -EINVAL; + } + ++ if (__boot_cpu_mode == HYP_MODE) ++ return 0; ++ + mmuon = get_cr() & CR_M; + + vbar = get_vbar(); +-- +2.15.1 From ae544607cc1c17711639eb3d177c4cfc713a11de Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 16:16:25 +0200 Subject: [PATCH 060/118] Create 0006-default-to-starting-kernel-in-HYP-mode-when-entered-in-HYP.patch --- ...rnel-in-HYP-mode-when-entered-in-HYP.patch | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 buildroot-external/board/rpi3/patches/barebox/0006-default-to-starting-kernel-in-HYP-mode-when-entered-in-HYP.patch diff --git a/buildroot-external/board/rpi3/patches/barebox/0006-default-to-starting-kernel-in-HYP-mode-when-entered-in-HYP.patch b/buildroot-external/board/rpi3/patches/barebox/0006-default-to-starting-kernel-in-HYP-mode-when-entered-in-HYP.patch new file mode 100644 index 00000000000..7119b4c50fb --- /dev/null +++ b/buildroot-external/board/rpi3/patches/barebox/0006-default-to-starting-kernel-in-HYP-mode-when-entered-in-HYP.patch @@ -0,0 +1,26 @@ +When Barebox has been entered in HYP mode, there is a high chance that +the kernel is intended to be started in HYP mode also. Get this +default into place. + +Signed-off-by: Lucas Stach +--- + arch/arm/cpu/sm.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/arch/arm/cpu/sm.c b/arch/arm/cpu/sm.c +index 71bb394c8540..3369fbb5ff1a 100644 +--- a/arch/arm/cpu/sm.c ++++ b/arch/arm/cpu/sm.c +@@ -264,6 +264,9 @@ static int sm_init(void) + bootm_secure_state_names, + ARRAY_SIZE(bootm_secure_state_names)); + ++ if (__boot_cpu_mode == HYP_MODE) ++ bootm_secure_state = ARM_STATE_HYP; ++ + return 0; + } + device_initcall(sm_init); +\ No newline at end of file +-- +2.15.1 From bb72e0ab1e89e2be60e3c411a5a82e48681b88e7 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 16:17:44 +0200 Subject: [PATCH 061/118] Create 0007-install-HYP-vectors-at-PBL-and-Barebox-entry.patch --- ...HYP-vectors-at-PBL-and-Barebox-entry.patch | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 buildroot-external/board/rpi3/patches/barebox/0007-install-HYP-vectors-at-PBL-and-Barebox-entry.patch diff --git a/buildroot-external/board/rpi3/patches/barebox/0007-install-HYP-vectors-at-PBL-and-Barebox-entry.patch b/buildroot-external/board/rpi3/patches/barebox/0007-install-HYP-vectors-at-PBL-and-Barebox-entry.patch new file mode 100644 index 00000000000..d4adb64b6ac --- /dev/null +++ b/buildroot-external/board/rpi3/patches/barebox/0007-install-HYP-vectors-at-PBL-and-Barebox-entry.patch @@ -0,0 +1,89 @@ +If the CPU was already in HYP mode when entering the PBL, install a +simple trap handler to allow to get back from SVC to HYP before +switching to HYP mode. + +As the vectors are part of the currently running binary, we need to +do the same setup when starting the real Barebox binary, as the PBL +setup vectors might get overwritten. To do this we trap into HYP mode +just before jumping to Barebox and then re-do the vector setup and +SVC switch as the first thing in Barebox proper. + +Signed-off-by: Lucas Stach +--- + arch/arm/cpu/lowlevel.S | 3 +++ + arch/arm/cpu/start-pbl.c | 3 +++ + arch/arm/cpu/start.c | 3 +++ + arch/arm/cpu/uncompress.c | 4 ++++ + 4 files changed, 13 insertions(+) + +diff --git a/arch/arm/cpu/lowlevel.S b/arch/arm/cpu/lowlevel.S +index 194ce0e7c274..28ad8508726f 100644 +--- a/arch/arm/cpu/lowlevel.S ++++ b/arch/arm/cpu/lowlevel.S +@@ -8,6 +8,9 @@ ENTRY(arm_cpu_lowlevel_init) + /* save lr, since it may be banked away with a processor mode change */ + mov r2, lr + ++ /* careful: the hyp install corrupts r0 and r1 */ ++ bl __hyp_install ++ + /* set the cpu to SVC32 mode, mask irq and fiq */ + mrs r12 , cpsr + eor r12, r12, #HYP_MODE +diff --git a/arch/arm/cpu/start-pbl.c b/arch/arm/cpu/start-pbl.c +index e851b4a2da5e..cea1cb200b6f 100644 +--- a/arch/arm/cpu/start-pbl.c ++++ b/arch/arm/cpu/start-pbl.c +@@ -100,5 +100,8 @@ __noreturn void barebox_single_pbl_start(unsigned long membase, + else + barebox = (void *)barebox_base; + ++ if (__boot_cpu_mode == HYP_MODE) ++ armv7_switch_to_hyp(); ++ + barebox(membase, memsize, boarddata); + } +diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c +index 171e6ad0eb7a..a0db6436f387 100644 +--- a/arch/arm/cpu/start.c ++++ b/arch/arm/cpu/start.c +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -145,6 +146,8 @@ __noreturn void barebox_non_pbl_start(unsigned long membase, + unsigned long malloc_start, malloc_end; + unsigned long barebox_size = barebox_image_size + MAX_BSS_SIZE; + ++ armv7_hyp_install(); ++ + if (IS_ENABLED(CONFIG_RELOCATABLE)) { + unsigned long barebox_base = arm_mem_barebox_image(membase, + endmem, +diff --git a/arch/arm/cpu/uncompress.c b/arch/arm/cpu/uncompress.c +index 9d7fe0e921a9..28636aa8101f 100644 +--- a/arch/arm/cpu/uncompress.c ++++ b/arch/arm/cpu/uncompress.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -109,5 +110,8 @@ void __noreturn barebox_multi_pbl_start(unsigned long membase, + + pr_debug("jumping to uncompressed image at 0x%p\n", barebox); + ++ if (__boot_cpu_mode == HYP_MODE) ++ armv7_switch_to_hyp(); ++ + barebox(membase, memsize, boarddata); + } +-- +2.15.1 From 21093354e4c01ebbc1a8b3c3f59e168cb61b879d Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 16:20:26 +0200 Subject: [PATCH 062/118] Create 0009-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch --- ...ion-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 buildroot-external/board/rpi3/patches/barebox/0009-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch diff --git a/buildroot-external/board/rpi3/patches/barebox/0009-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch b/buildroot-external/board/rpi3/patches/barebox/0009-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch new file mode 100644 index 00000000000..ce1a56ecb03 --- /dev/null +++ b/buildroot-external/board/rpi3/patches/barebox/0009-add-revision-IDs-for-Pi-3-Model-B-and-Pi-Zero.patch @@ -0,0 +1,38 @@ +From: Enrico Joerns + +Signed-off-by: Enrico Joerns +--- + arch/arm/boards/raspberry-pi/rpi-common.c | 2 ++ + arch/arm/mach-bcm283x/include/mach/mbox.h | 4 ++++ + 2 files changed, 6 insertions(+) + +diff --git a/arch/arm/boards/raspberry-pi/rpi-common.c b/arch/arm/boards/raspberry-pi/rpi-common.c +index 6e375bc984de..aec8cb27ed40 100644 +--- a/arch/arm/boards/raspberry-pi/rpi-common.c ++++ b/arch/arm/boards/raspberry-pi/rpi-common.c +@@ -174,6 +174,8 @@ const struct rpi_model rpi_models_old_scheme[] = { + const struct rpi_model rpi_models_new_scheme[] = { + RPI_MODEL(0, "Unknown model", NULL), + RPI_MODEL(BCM2836_BOARD_REV_2_B, "2 Model B", rpi_b_plus_init), ++ RPI_MODEL(BCM2837_BOARD_REV_3_B, "3 Model B", rpi_b_plus_init), ++ RPI_MODEL(BCM2837_BOARD_REV_ZERO, "Zero", rpi_b_plus_init), + }; + + static int rpi_board_rev = 0; +diff --git a/arch/arm/mach-bcm283x/include/mach/mbox.h b/arch/arm/mach-bcm283x/include/mach/mbox.h +index 2b5aea88ee0a..4cddf99a8429 100644 +--- a/arch/arm/mach-bcm283x/include/mach/mbox.h ++++ b/arch/arm/mach-bcm283x/include/mach/mbox.h +@@ -129,6 +129,10 @@ struct bcm2835_mbox_tag_hdr { + + /* RPi 2 */ + #define BCM2836_BOARD_REV_2_B 0x4 ++/* RPi 3 */ ++#define BCM2837_BOARD_REV_3_B 0x8 ++/* Zero */ ++#define BCM2837_BOARD_REV_ZERO 0x9 + + /* + * 0x2..0xf from: +-- +2.15.1 From 7882d2a63f52abc8e695c3d776572f5bd2961b4c Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 16:21:36 +0200 Subject: [PATCH 063/118] Create 0010-rpi-add-raspberry-pi-3-support.patch --- .../0010-rpi-add-raspberry-pi-3-support.patch | 136 ++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 buildroot-external/board/rpi3/patches/barebox/0010-rpi-add-raspberry-pi-3-support.patch diff --git a/buildroot-external/board/rpi3/patches/barebox/0010-rpi-add-raspberry-pi-3-support.patch b/buildroot-external/board/rpi3/patches/barebox/0010-rpi-add-raspberry-pi-3-support.patch new file mode 100644 index 00000000000..2751cc0d06b --- /dev/null +++ b/buildroot-external/board/rpi3/patches/barebox/0010-rpi-add-raspberry-pi-3-support.patch @@ -0,0 +1,136 @@ +This adds basic support at the same feature level as the other +supported raspberry pi boards. + +Signed-off-by: Lucas Stach +--- + arch/arm/boards/raspberry-pi/lowlevel.c | 14 ++++++++++++-- + arch/arm/configs/rpi_defconfig | 2 ++ + arch/arm/dts/Makefile | 1 + + arch/arm/dts/bcm2837-rpi-3.dts | 15 +++++++++++++++ + arch/arm/mach-bcm283x/Kconfig | 6 ++++++ + arch/arm/mach-bcm283x/core.c | 1 + + images/Makefile.bcm283x | 4 ++++ + 7 files changed, 41 insertions(+), 2 deletions(-) + create mode 100644 arch/arm/dts/bcm2837-rpi-3.dts + +diff --git a/arch/arm/boards/raspberry-pi/lowlevel.c b/arch/arm/boards/raspberry-pi/lowlevel.c +index 4e71e29e0c0b..5ca0d3877069 100644 +--- a/arch/arm/boards/raspberry-pi/lowlevel.c ++++ b/arch/arm/boards/raspberry-pi/lowlevel.c +@@ -1,7 +1,7 @@ ++#include ++#include + #include + #include +-#include +-#include + #include + + extern char __dtb_bcm2835_rpi_start[]; +@@ -23,3 +23,13 @@ ENTRY_FUNCTION(start_raspberry_pi2, r0, r1, r2) + + barebox_arm_entry(BCM2835_SDRAM_BASE, SZ_512M, fdt); + } ++ ++extern char __dtb_bcm2837_rpi_3_start[]; ++ENTRY_FUNCTION(start_raspberry_pi3, r0, r1, r2) ++{ ++ void *fdt = __dtb_bcm2837_rpi_3_start - get_runtime_offset(); ++ ++ arm_cpu_lowlevel_init(); ++ ++ barebox_arm_entry(BCM2835_SDRAM_BASE, SZ_512M, fdt); ++} +diff --git a/arch/arm/configs/rpi_defconfig b/arch/arm/configs/rpi_defconfig +index 6dc90c59b36d..34070a05abe7 100644 +--- a/arch/arm/configs/rpi_defconfig ++++ b/arch/arm/configs/rpi_defconfig +@@ -1,9 +1,11 @@ + CONFIG_ARCH_BCM283X=y + CONFIG_MACH_RPI=y + CONFIG_MACH_RPI2=y ++CONFIG_MACH_RPI3=y + CONFIG_AEABI=y + CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y + CONFIG_ARM_UNWIND=y ++CONFIG_IMAGE_COMPRESSION_NONE=y + CONFIG_MMU=y + CONFIG_MALLOC_TLSF=y + CONFIG_KALLSYMS=y +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 0526a6f40724..0eab313c5011 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -66,6 +66,7 @@ pbl-dtb-$(CONFIG_MACH_PHYTEC_SOM_RK3288) += rk3288-phycore-som.dtb.o + pbl-dtb-$(CONFIG_MACH_REALQ7) += imx6q-dmo-edmqmx6.dtb.o + pbl-dtb-$(CONFIG_MACH_RPI) += bcm2835-rpi.dtb.o + pbl-dtb-$(CONFIG_MACH_RPI2) += bcm2836-rpi-2.dtb.o ++pbl-dtb-$(CONFIG_MACH_RPI3) += bcm2837-rpi-3.dtb.o + pbl-dtb-$(CONFIG_MACH_SABRELITE) += imx6q-sabrelite.dtb.o imx6dl-sabrelite.dtb.o + pbl-dtb-$(CONFIG_MACH_SABRESD) += imx6q-sabresd.dtb.o + pbl-dtb-$(CONFIG_MACH_FREESCALE_IMX6SX_SABRESDB) += imx6sx-sdb.dtb.o +diff --git a/arch/arm/dts/bcm2837-rpi-3.dts b/arch/arm/dts/bcm2837-rpi-3.dts +new file mode 100644 +index 000000000000..f8c58c570137 +--- /dev/null ++++ b/arch/arm/dts/bcm2837-rpi-3.dts +@@ -0,0 +1,15 @@ ++#include ++ ++/ { ++ chosen { ++ stdout-path = &uart0; ++ }; ++ ++ memory { ++ reg = <0x0 0x0>; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; +diff --git a/arch/arm/mach-bcm283x/Kconfig b/arch/arm/mach-bcm283x/Kconfig +index 1457f114ccaa..af2f88c47acb 100644 +--- a/arch/arm/mach-bcm283x/Kconfig ++++ b/arch/arm/mach-bcm283x/Kconfig +@@ -19,6 +19,12 @@ config MACH_RPI2 + select CPU_V7 + select MACH_RPI_COMMON + ++config MACH_RPI3 ++ bool "RaspberryPi 3 (BCM2837/CORTEX-A53)" ++ select CPU_V7 ++ select MACH_RPI_COMMON ++ select ARM_SECURE_MONITOR ++ + endmenu + + config MACH_RPI_DEBUG_UART_BASE +diff --git a/arch/arm/mach-bcm283x/core.c b/arch/arm/mach-bcm283x/core.c +index fddcb0d1a1d4..26f0996b1cb8 100644 +--- a/arch/arm/mach-bcm283x/core.c ++++ b/arch/arm/mach-bcm283x/core.c +@@ -41,6 +41,7 @@ static int bcm2835_clk_init(void) + clk = clk_fixed("uart0-pl0110", 3 * 1000 * 1000); + clk_register_clkdev(clk, NULL, "uart0-pl0110"); + clk_register_clkdev(clk, NULL, "20201000.serial"); ++ clk_register_clkdev(clk, NULL, "3f201000.serial"); + + clk = clk_fixed("bcm2835-cs", 1 * 1000 * 1000); + clk_register_clkdev(clk, NULL, "bcm2835-cs"); +diff --git a/images/Makefile.bcm283x b/images/Makefile.bcm283x +index d59ef043f05c..d14e648926ac 100644 +--- a/images/Makefile.bcm283x ++++ b/images/Makefile.bcm283x +@@ -9,3 +9,7 @@ image-$(CONFIG_MACH_RPI) += barebox-raspberry-pi-1.img + pblx-$(CONFIG_MACH_RPI2) += start_raspberry_pi2 + FILE_barebox-raspberry-pi-2.img = start_raspberry_pi2.pblx + image-$(CONFIG_MACH_RPI2) += barebox-raspberry-pi-2.img ++ ++pblx-$(CONFIG_MACH_RPI3) += start_raspberry_pi3 ++FILE_barebox-raspberry-pi-3.img = start_raspberry_pi3.pblx ++image-$(CONFIG_MACH_RPI3) += barebox-raspberry-pi-3.img +\ No newline at end of file +-- +2.15.1 From f79646b782019b9c6b47fa3a022463023bbc675f Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 17:44:48 +0200 Subject: [PATCH 064/118] Update 0001-HYP-mode-handling-and-RasPi-3-support.patch --- .../barebox/0001-HYP-mode-handling-and-RasPi-3-support.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/board/rpi3/patches/barebox/0001-HYP-mode-handling-and-RasPi-3-support.patch b/buildroot-external/board/rpi3/patches/barebox/0001-HYP-mode-handling-and-RasPi-3-support.patch index 274dbea747c..6b45b7c816e 100644 --- a/buildroot-external/board/rpi3/patches/barebox/0001-HYP-mode-handling-and-RasPi-3-support.patch +++ b/buildroot-external/board/rpi3/patches/barebox/0001-HYP-mode-handling-and-RasPi-3-support.patch @@ -292,4 +292,4 @@ index 000000000000..a78bf5d2c518 + +#endif /* __ASM_ARM_OPCODES_H */ -- -2.15.1 +2.16.1 From e6c9a97ce8ff765bb4030a3e9e262029d90adf99 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 17:45:35 +0200 Subject: [PATCH 065/118] Fix patches --- buildroot-external/board/rpi3/barebox.config | 5 + ...-add-file-for-HYP-mode-related-setup.patch | 162 +++--------------- ...HYP-vectors-at-PBL-and-Barebox-entry.patch | 33 ++-- 3 files changed, 41 insertions(+), 159 deletions(-) diff --git a/buildroot-external/board/rpi3/barebox.config b/buildroot-external/board/rpi3/barebox.config index 490fab285e4..9dad28105f8 100644 --- a/buildroot-external/board/rpi3/barebox.config +++ b/buildroot-external/board/rpi3/barebox.config @@ -14,6 +14,7 @@ CONFIG_AUTO_COMPLETE=y CONFIG_MENU=y # CONFIG_TIMESTAMP is not set CONFIG_BOOTM_SHOW_TYPE=y +CONFIG_BOOTM_OFTREE=y CONFIG_FLEXIBLE_BOOTARGS=y # CONFIG_PARTITION_DISK_DOS is not set CONFIG_PARTITION_DISK_EFI=y @@ -38,9 +39,13 @@ CONFIG_CMD_TIMEOUT=y CONFIG_CMD_DETECT=y CONFIG_CMD_STATE=y CONFIG_CMD_BOOTCHOOSER=y +CONFIG_MCI=y +CONFIG_MCI_BCM283X=y # CONFIG_SPI is not set CONFIG_DISK=y CONFIG_DISK_WRITE=y +# CONFIG_PINCTRL is not set +CONFIG_REGULATOR=y CONFIG_FS_FAT=y CONFIG_FS_FAT_WRITE=y CONFIG_FS_FAT_LFN=y diff --git a/buildroot-external/board/rpi3/patches/barebox/0004-add-file-for-HYP-mode-related-setup.patch b/buildroot-external/board/rpi3/patches/barebox/0004-add-file-for-HYP-mode-related-setup.patch index 405cf063c9e..27f2403a743 100644 --- a/buildroot-external/board/rpi3/patches/barebox/0004-add-file-for-HYP-mode-related-setup.patch +++ b/buildroot-external/board/rpi3/patches/barebox/0004-add-file-for-HYP-mode-related-setup.patch @@ -1,153 +1,34 @@ -This adds routines to add hyp mode vectors and switch back to HYP -mode from SVC. This is needed in both the PBL and Barebox proper. +From 9afaacdda672452b52a95b9bcea259646c3b5850 Mon Sep 17 00:00:00 2001 +From: Pascal Vizeli +Date: Sat, 19 May 2018 17:35:26 +0200 +Subject: [PATCH 1/1] p2 -Signed-off-by: Lucas Stach --- - arch/arm/cpu/Makefile | 4 ++ - arch/arm/cpu/hyp.S | 115 ++++++++++++++++++++++++++++++++++++++++++ - arch/arm/cpu/sm_as.S | 11 ---- - arch/arm/include/asm/secure.h | 2 + - 4 files changed, 121 insertions(+), 11 deletions(-) - create mode 100644 arch/arm/cpu/hyp.S + arch/arm/cpu/Makefile | 7 +++++++ + arch/arm/cpu/sm_as.S | 11 ----------- + arch/arm/include/asm/secure.h | 2 ++ + 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/arch/arm/cpu/Makefile b/arch/arm/cpu/Makefile -index 13fe12c31f6f..537fe5b9bb8d 100644 +index 0316d25..6d67b42 100644 --- a/arch/arm/cpu/Makefile +++ b/arch/arm/cpu/Makefile -@@ -9,6 +9,10 @@ obj-$(CONFIG_ARM_EXCEPTIONS) += exceptions.o - obj-$(CONFIG_MMU) += mmu.o mmu-early.o - pbl-$(CONFIG_MMU) += mmu-early.o - lwl-y += lowlevel.o +@@ -9,6 +9,13 @@ obj-y += start.o entry.o + + obj-pbl-y += setupc$(S64).o cache$(S64).o + ++ifeq ($(CONFIG_CPU_64v8),) +obj-y += hyp.o +AFLAGS_hyp.o :=-Wa,-march=armv7-a +pbl-y += hyp.o +AFLAGS_pbl-hyp.o :=-Wa,-march=armv7-a - endif - - obj-$(CONFIG_ARM_EXCEPTIONS) += interrupts.o -diff --git a/arch/arm/cpu/hyp.S b/arch/arm/cpu/hyp.S -new file mode 100644 -index 000000000000..435d416f980a ---- /dev/null -+++ b/arch/arm/cpu/hyp.S -@@ -0,0 +1,115 @@ -+#include -+#include -+#include -+ -+.arch_extension sec -+.arch_extension virt -+ -+.section ".text_bare_init_","ax" -+ -+.data -+ .align 2 -+ENTRY(__boot_cpu_mode) -+ .long 0 -+.text -+ -+ENTRY(__hyp_install) -+ mrs r12, cpsr -+ and r12, r12, #MODE_MASK -+ -+ @ Save the initial CPU state -+ adr r0, .L__boot_cpu_mode_offset -+ ldr r1, [r0] -+ str r12, [r0, r1] -+ -+ cmp r12, #HYP_MODE -+ movne pc, lr @ give up if the CPU is not in HYP mode -+ -+ @ Now install the hypervisor stub: -+ adr r12, __hyp_vectors -+ mcr p15, 4, r12, c12, c0, 0 @ set hypervisor vector base (HVBAR) -+ -+ @ Disable all traps, so we don't get any nasty surprise -+ mov r12, #0 -+ mcr p15, 4, r12, c1, c1, 0 @ HCR -+ mcr p15, 4, r12, c1, c1, 2 @ HCPTR -+ mcr p15, 4, r12, c1, c1, 3 @ HSTR -+ -+THUMB( orr r12, #(1 << 30) ) @ HSCTLR.TE -+ mcr p15, 4, r12, c1, c0, 0 @ HSCTLR ++endif + -+ mrc p15, 4, r12, c1, c1, 1 @ HDCR -+ and r12, #0x1f @ Preserve HPMN -+ mcr p15, 4, r12, c1, c1, 1 @ HDCR -+ -+ @ Make sure NS-SVC is initialised appropriately -+ mrc p15, 0, r12, c1, c0, 0 @ SCTLR -+ orr r12, #(1 << 5) @ CP15 barriers enabled -+ bic r12, #(3 << 7) @ Clear SED/ITD for v8 (RES0 for v7) -+ bic r12, #(3 << 19) @ WXN and UWXN disabled -+ mcr p15, 0, r12, c1, c0, 0 @ SCTLR -+ -+ mrc p15, 0, r12, c0, c0, 0 @ MIDR -+ mcr p15, 4, r12, c0, c0, 0 @ VPIDR -+ -+ mrc p15, 0, r12, c0, c0, 5 @ MPIDR -+ mcr p15, 4, r12, c0, c0, 5 @ VMPIDR -+ bx lr -+ENDPROC(__hyp_install) -+ -+ENTRY(armv7_hyp_install) -+ mov r2, lr -+ -+ bl __hyp_install -+ -+ /* set the cpu to SVC32 mode, mask irq and fiq */ -+ mrs r12 , cpsr -+ eor r12, r12, #HYP_MODE -+ tst r12, #MODE_MASK -+ bic r12 , r12 , #MODE_MASK -+ orr r12 , r12 , #(PSR_I_BIT | PSR_F_BIT | SVC_MODE) -+THUMB( orr r12 , r12 , #PSR_T_BIT ) -+ bne 1f -+ orr r12, r12, #PSR_A_BIT -+ adr lr, 2f -+ msr spsr_cxsf, r12 -+ __MSR_ELR_HYP(14) -+ __ERET -+1: msr cpsr_c, r12 -+2: -+ mov pc, r2 -+ENDPROC(armv7_hyp_install) -+ -+ENTRY(armv7_switch_to_hyp) -+ mov r0, lr -+ mov r1, sp @ save SVC copy of LR and SP -+ isb -+ hvc #0 @ for older asm: .byte 0x70, 0x00, 0x40, 0xe1 -+ mov sp, r1 -+ mov lr, r0 @ restore SVC copy of LR and SP -+ -+ bx lr -+ENDPROC(armv7_switch_to_hyp) -+ -+.align 2 -+.L__boot_cpu_mode_offset: -+ .long __boot_cpu_mode - . -+ -+/* The HYP trap is crafted to match armv7_switch_to_hyp() */ -+__hyp_do_trap: -+ mov lr, r0 -+ mov sp, r1 -+ bx lr -+ENDPROC(__hyp_do_trap) -+ -+.align 5 -+__hyp_vectors: -+__hyp_reset: W(b) . -+__hyp_und: W(b) . -+__hyp_svc: W(b) . -+__hyp_pabort: W(b) . -+__hyp_dabort: W(b) . -+__hyp_trap: W(b) __hyp_do_trap -+__hyp_irq: W(b) . -+__hyp_fiq: W(b) . -+ENDPROC(__hyp_vectors) + # + # Any variants can be called as start-armxyz.S + # diff --git a/arch/arm/cpu/sm_as.S b/arch/arm/cpu/sm_as.S -index 0d01e1bf2435..de6cd0406f4f 100644 +index 0d01e1b..de6cd04 100644 --- a/arch/arm/cpu/sm_as.S +++ b/arch/arm/cpu/sm_as.S @@ -148,17 +148,6 @@ hyp_trap: @@ -169,7 +50,7 @@ index 0d01e1bf2435..de6cd0406f4f 100644 mrc p15, 0, r0, c1, c0, 1 @ ACTLR orr r0, r0, #(1 << 6) @ Set SMP bit diff --git a/arch/arm/include/asm/secure.h b/arch/arm/include/asm/secure.h -index a4cb1f6c1c44..54cc052b0cf9 100644 +index a4cb1f6..54cc052 100644 --- a/arch/arm/include/asm/secure.h +++ b/arch/arm/include/asm/secure.h @@ -6,8 +6,10 @@ @@ -184,4 +65,5 @@ index a4cb1f6c1c44..54cc052b0cf9 100644 enum arm_security_state { ARM_STATE_SECURE, -- -2.15.1 +2.7.4 + diff --git a/buildroot-external/board/rpi3/patches/barebox/0007-install-HYP-vectors-at-PBL-and-Barebox-entry.patch b/buildroot-external/board/rpi3/patches/barebox/0007-install-HYP-vectors-at-PBL-and-Barebox-entry.patch index d4adb64b6ac..03037e419ee 100644 --- a/buildroot-external/board/rpi3/patches/barebox/0007-install-HYP-vectors-at-PBL-and-Barebox-entry.patch +++ b/buildroot-external/board/rpi3/patches/barebox/0007-install-HYP-vectors-at-PBL-and-Barebox-entry.patch @@ -1,14 +1,8 @@ -If the CPU was already in HYP mode when entering the PBL, install a -simple trap handler to allow to get back from SVC to HYP before -switching to HYP mode. +From f984f8cf4c07f24af7855a4fd69afa3e656238c2 Mon Sep 17 00:00:00 2001 +From: Pascal Vizeli +Date: Sat, 19 May 2018 17:24:42 +0200 +Subject: [PATCH 1/1] p4 -As the vectors are part of the currently running binary, we need to -do the same setup when starting the real Barebox binary, as the PBL -setup vectors might get overwritten. To do this we trap into HYP mode -just before jumping to Barebox and then re-do the vector setup and -SVC switch as the first thing in Barebox proper. - -Signed-off-by: Lucas Stach --- arch/arm/cpu/lowlevel.S | 3 +++ arch/arm/cpu/start-pbl.c | 3 +++ @@ -17,7 +11,7 @@ Signed-off-by: Lucas Stach 4 files changed, 13 insertions(+) diff --git a/arch/arm/cpu/lowlevel.S b/arch/arm/cpu/lowlevel.S -index 194ce0e7c274..28ad8508726f 100644 +index 194ce0e..28ad850 100644 --- a/arch/arm/cpu/lowlevel.S +++ b/arch/arm/cpu/lowlevel.S @@ -8,6 +8,9 @@ ENTRY(arm_cpu_lowlevel_init) @@ -31,10 +25,10 @@ index 194ce0e7c274..28ad8508726f 100644 mrs r12 , cpsr eor r12, r12, #HYP_MODE diff --git a/arch/arm/cpu/start-pbl.c b/arch/arm/cpu/start-pbl.c -index e851b4a2da5e..cea1cb200b6f 100644 +index 16159d7..3f9959e 100644 --- a/arch/arm/cpu/start-pbl.c +++ b/arch/arm/cpu/start-pbl.c -@@ -100,5 +100,8 @@ __noreturn void barebox_single_pbl_start(unsigned long membase, +@@ -98,5 +98,8 @@ __noreturn void barebox_single_pbl_start(unsigned long membase, else barebox = (void *)barebox_base; @@ -44,7 +38,7 @@ index e851b4a2da5e..cea1cb200b6f 100644 barebox(membase, memsize, boarddata); } diff --git a/arch/arm/cpu/start.c b/arch/arm/cpu/start.c -index 171e6ad0eb7a..a0db6436f387 100644 +index 68fff89..1ee13c0 100644 --- a/arch/arm/cpu/start.c +++ b/arch/arm/cpu/start.c @@ -24,6 +24,7 @@ @@ -54,7 +48,7 @@ index 171e6ad0eb7a..a0db6436f387 100644 +#include #include #include - #include + #include @@ -145,6 +146,8 @@ __noreturn void barebox_non_pbl_start(unsigned long membase, unsigned long malloc_start, malloc_end; unsigned long barebox_size = barebox_image_size + MAX_BSS_SIZE; @@ -65,7 +59,7 @@ index 171e6ad0eb7a..a0db6436f387 100644 unsigned long barebox_base = arm_mem_barebox_image(membase, endmem, diff --git a/arch/arm/cpu/uncompress.c b/arch/arm/cpu/uncompress.c -index 9d7fe0e921a9..28636aa8101f 100644 +index b07087e..57f324b 100644 --- a/arch/arm/cpu/uncompress.c +++ b/arch/arm/cpu/uncompress.c @@ -27,6 +27,7 @@ @@ -73,10 +67,10 @@ index 9d7fe0e921a9..28636aa8101f 100644 #include #include +#include - #include #include + #include #include -@@ -109,5 +110,8 @@ void __noreturn barebox_multi_pbl_start(unsigned long membase, +@@ -108,5 +109,8 @@ void __noreturn barebox_multi_pbl_start(unsigned long membase, pr_debug("jumping to uncompressed image at 0x%p\n", barebox); @@ -86,4 +80,5 @@ index 9d7fe0e921a9..28636aa8101f 100644 barebox(membase, memsize, boarddata); } -- -2.15.1 +2.7.4 + From 6b3919beebccbadd49b7d6c21f2a8a9e098247db Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 17:58:27 +0200 Subject: [PATCH 066/118] Fix patches p2 --- ...-add-file-for-HYP-mode-related-setup.patch | 135 +++++++++++++++++- 1 file changed, 129 insertions(+), 6 deletions(-) diff --git a/buildroot-external/board/rpi3/patches/barebox/0004-add-file-for-HYP-mode-related-setup.patch b/buildroot-external/board/rpi3/patches/barebox/0004-add-file-for-HYP-mode-related-setup.patch index 27f2403a743..19529e6b5a4 100644 --- a/buildroot-external/board/rpi3/patches/barebox/0004-add-file-for-HYP-mode-related-setup.patch +++ b/buildroot-external/board/rpi3/patches/barebox/0004-add-file-for-HYP-mode-related-setup.patch @@ -1,13 +1,15 @@ -From 9afaacdda672452b52a95b9bcea259646c3b5850 Mon Sep 17 00:00:00 2001 +From 6add848d66a7bdebed73416a3cf27b8bf10a2cd8 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli -Date: Sat, 19 May 2018 17:35:26 +0200 +Date: Sat, 19 May 2018 17:58:01 +0200 Subject: [PATCH 1/1] p2 --- - arch/arm/cpu/Makefile | 7 +++++++ - arch/arm/cpu/sm_as.S | 11 ----------- - arch/arm/include/asm/secure.h | 2 ++ - 3 files changed, 9 insertions(+), 11 deletions(-) + arch/arm/cpu/Makefile | 7 +++ + arch/arm/cpu/hyp.S | 115 ++++++++++++++++++++++++++++++++++++++++++ + arch/arm/cpu/sm_as.S | 11 ---- + arch/arm/include/asm/secure.h | 2 + + 4 files changed, 124 insertions(+), 11 deletions(-) + create mode 100644 arch/arm/cpu/hyp.S diff --git a/arch/arm/cpu/Makefile b/arch/arm/cpu/Makefile index 0316d25..6d67b42 100644 @@ -27,6 +29,127 @@ index 0316d25..6d67b42 100644 # # Any variants can be called as start-armxyz.S # +diff --git a/arch/arm/cpu/hyp.S b/arch/arm/cpu/hyp.S +new file mode 100644 +index 0000000..435d416 +--- /dev/null ++++ b/arch/arm/cpu/hyp.S +@@ -0,0 +1,115 @@ ++#include ++#include ++#include ++ ++.arch_extension sec ++.arch_extension virt ++ ++.section ".text_bare_init_","ax" ++ ++.data ++ .align 2 ++ENTRY(__boot_cpu_mode) ++ .long 0 ++.text ++ ++ENTRY(__hyp_install) ++ mrs r12, cpsr ++ and r12, r12, #MODE_MASK ++ ++ @ Save the initial CPU state ++ adr r0, .L__boot_cpu_mode_offset ++ ldr r1, [r0] ++ str r12, [r0, r1] ++ ++ cmp r12, #HYP_MODE ++ movne pc, lr @ give up if the CPU is not in HYP mode ++ ++ @ Now install the hypervisor stub: ++ adr r12, __hyp_vectors ++ mcr p15, 4, r12, c12, c0, 0 @ set hypervisor vector base (HVBAR) ++ ++ @ Disable all traps, so we don't get any nasty surprise ++ mov r12, #0 ++ mcr p15, 4, r12, c1, c1, 0 @ HCR ++ mcr p15, 4, r12, c1, c1, 2 @ HCPTR ++ mcr p15, 4, r12, c1, c1, 3 @ HSTR ++ ++THUMB( orr r12, #(1 << 30) ) @ HSCTLR.TE ++ mcr p15, 4, r12, c1, c0, 0 @ HSCTLR ++ ++ mrc p15, 4, r12, c1, c1, 1 @ HDCR ++ and r12, #0x1f @ Preserve HPMN ++ mcr p15, 4, r12, c1, c1, 1 @ HDCR ++ ++ @ Make sure NS-SVC is initialised appropriately ++ mrc p15, 0, r12, c1, c0, 0 @ SCTLR ++ orr r12, #(1 << 5) @ CP15 barriers enabled ++ bic r12, #(3 << 7) @ Clear SED/ITD for v8 (RES0 for v7) ++ bic r12, #(3 << 19) @ WXN and UWXN disabled ++ mcr p15, 0, r12, c1, c0, 0 @ SCTLR ++ ++ mrc p15, 0, r12, c0, c0, 0 @ MIDR ++ mcr p15, 4, r12, c0, c0, 0 @ VPIDR ++ ++ mrc p15, 0, r12, c0, c0, 5 @ MPIDR ++ mcr p15, 4, r12, c0, c0, 5 @ VMPIDR ++ bx lr ++ENDPROC(__hyp_install) ++ ++ENTRY(armv7_hyp_install) ++ mov r2, lr ++ ++ bl __hyp_install ++ ++ /* set the cpu to SVC32 mode, mask irq and fiq */ ++ mrs r12 , cpsr ++ eor r12, r12, #HYP_MODE ++ tst r12, #MODE_MASK ++ bic r12 , r12 , #MODE_MASK ++ orr r12 , r12 , #(PSR_I_BIT | PSR_F_BIT | SVC_MODE) ++THUMB( orr r12 , r12 , #PSR_T_BIT ) ++ bne 1f ++ orr r12, r12, #PSR_A_BIT ++ adr lr, 2f ++ msr spsr_cxsf, r12 ++ __MSR_ELR_HYP(14) ++ __ERET ++1: msr cpsr_c, r12 ++2: ++ mov pc, r2 ++ENDPROC(armv7_hyp_install) ++ ++ENTRY(armv7_switch_to_hyp) ++ mov r0, lr ++ mov r1, sp @ save SVC copy of LR and SP ++ isb ++ hvc #0 @ for older asm: .byte 0x70, 0x00, 0x40, 0xe1 ++ mov sp, r1 ++ mov lr, r0 @ restore SVC copy of LR and SP ++ ++ bx lr ++ENDPROC(armv7_switch_to_hyp) ++ ++.align 2 ++.L__boot_cpu_mode_offset: ++ .long __boot_cpu_mode - . ++ ++/* The HYP trap is crafted to match armv7_switch_to_hyp() */ ++__hyp_do_trap: ++ mov lr, r0 ++ mov sp, r1 ++ bx lr ++ENDPROC(__hyp_do_trap) ++ ++.align 5 ++__hyp_vectors: ++__hyp_reset: W(b) . ++__hyp_und: W(b) . ++__hyp_svc: W(b) . ++__hyp_pabort: W(b) . ++__hyp_dabort: W(b) . ++__hyp_trap: W(b) __hyp_do_trap ++__hyp_irq: W(b) . ++__hyp_fiq: W(b) . ++ENDPROC(__hyp_vectors) diff --git a/arch/arm/cpu/sm_as.S b/arch/arm/cpu/sm_as.S index 0d01e1b..de6cd04 100644 --- a/arch/arm/cpu/sm_as.S From 1102d20e89bbbd0f4f9a5abdba97a8b58fdf40dc Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 18:02:16 +0200 Subject: [PATCH 067/118] Cleanup image name --- buildroot-external/configs/rpi3_defconfig | 1 - 1 file changed, 1 deletion(-) diff --git a/buildroot-external/configs/rpi3_defconfig b/buildroot-external/configs/rpi3_defconfig index 4751bab63e9..21e58538388 100644 --- a/buildroot-external/configs/rpi3_defconfig +++ b/buildroot-external/configs/rpi3_defconfig @@ -70,7 +70,6 @@ BR2_TARGET_BAREBOX_CUSTOM_VERSION=y BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2018.05.0" BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi3/barebox.config" -BR2_TARGET_BAREBOX_IMAGE_FILE="barebox-raspberry-pi-3.img" BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/barebox-env" BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_E2FSPROGS=y From 116c451ffbeb429245bad1b99a4be632439a3e70 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 20:08:59 +0200 Subject: [PATCH 068/118] Update post-image.sh --- buildroot-external/board/rpi3/post-image.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/board/rpi3/post-image.sh b/buildroot-external/board/rpi3/post-image.sh index 88834673a01..f7ac3faf751 100755 --- a/buildroot-external/board/rpi3/post-image.sh +++ b/buildroot-external/board/rpi3/post-image.sh @@ -14,6 +14,7 @@ IMAGE_FILE=${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.img # Init boot data rm -rf ${BOOT_DATA} +mkdir -p ${BOOT_DATA} cp ${BINARIES_DIR}/barebox.bin ${BOOT_DATA}/ cp -t ${BOOT_DATA} bcm2710-rpi-3-b.dtb bcm2710-rpi-3-b-plus.dtb bcm2710-rpi-cm3.dtb From 3b7aed4cb23ad68465c43340aacc4e42730e8a15 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 20:13:41 +0200 Subject: [PATCH 069/118] Update post-image.sh --- buildroot-external/board/rpi3/post-image.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/board/rpi3/post-image.sh b/buildroot-external/board/rpi3/post-image.sh index f7ac3faf751..429a688bf51 100755 --- a/buildroot-external/board/rpi3/post-image.sh +++ b/buildroot-external/board/rpi3/post-image.sh @@ -29,3 +29,4 @@ create_boot_image ${BINARIES_DIR} create_overlay_image ${BINARIES_DIR} create_hdd_image ${BINARIES_DIR} ${BINARIES_DIR}/${IMAGE_FILE} 6 +bzip2 ${BINARIES_DIR}/${IMAGE_FILE} From 5d0401a528fdbae4a48287c9e61d11fd782652f0 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 21:26:24 +0200 Subject: [PATCH 070/118] Update hdd-image.sh (#21) * Update hdd-image.sh * Update post-image.sh * Update post-image.sh --- buildroot-external/board/ova/post-image.sh | 2 +- buildroot-external/board/rpi3/post-image.sh | 4 +++- buildroot-external/scripts/hdd-image.sh | 11 ++++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/buildroot-external/board/ova/post-image.sh b/buildroot-external/board/ova/post-image.sh index 36aee53a8eb..448f3711e85 100755 --- a/buildroot-external/board/ova/post-image.sh +++ b/buildroot-external/board/ova/post-image.sh @@ -24,6 +24,6 @@ cp ${BOARD_DIR}/barebox-state.dtb ${BOOT_DATA}/EFI/barebox/state.dtb create_boot_image ${BINARIES_DIR} create_overlay_image ${BINARIES_DIR} -create_hdd_image ${BINARIES_DIR} ${BINARIES_DIR}/harddisk.img 6 +create_disk_image ${BINARIES_DIR} ${BINARIES_DIR}/harddisk.img 6 qemu-img convert -O vmdk ${BINARIES_DIR}/harddisk.img ${BINARIES_DIR}/${IMAGE_FILE} diff --git a/buildroot-external/board/rpi3/post-image.sh b/buildroot-external/board/rpi3/post-image.sh index 429a688bf51..c39c2776501 100755 --- a/buildroot-external/board/rpi3/post-image.sh +++ b/buildroot-external/board/rpi3/post-image.sh @@ -28,5 +28,7 @@ cp -r rpi-firmware/overlays ${BOOT_DATA}/ create_boot_image ${BINARIES_DIR} create_overlay_image ${BINARIES_DIR} -create_hdd_image ${BINARIES_DIR} ${BINARIES_DIR}/${IMAGE_FILE} 6 +create_disk_image ${BINARIES_DIR} ${BINARIES_DIR}/${IMAGE_FILE} 6 +fix_disk_image_mbr ${BINARIES_DIR}/${IMAGE_FILE} + bzip2 ${BINARIES_DIR}/${IMAGE_FILE} diff --git a/buildroot-external/scripts/hdd-image.sh b/buildroot-external/scripts/hdd-image.sh index c9b25a6109b..90b220c3ea5 100755 --- a/buildroot-external/scripts/hdd-image.sh +++ b/buildroot-external/scripts/hdd-image.sh @@ -13,6 +13,7 @@ SYSTEM_SIZE=256M OVERLAY_SIZE=64M DATA_SIZE=1G + function create_boot_image() { local boot_data="${1}/boot" local boot_img="${1}/boot.vfat" @@ -23,6 +24,7 @@ function create_boot_image() { mcopy -i ${boot_img} -sv ${boot_data}/* :: } + function create_overlay_image() { local overlay_img="${1}/overlay.ext4" @@ -30,7 +32,8 @@ function create_overlay_image() { mkfs.ext4 -L "hassos-overlay" -E lazy_itable_init=0,lazy_journal_init=0 ${overlay_img} } -function create_hdd_image() { + +function create_disk_image() { local boot_img="${1}/boot.vfat" local rootfs_img="${1}/rootfs.squashfs" local overlay_img="${1}/overlay.ext4" @@ -68,3 +71,9 @@ function create_hdd_image() { dd if=${data_img} of=${hdd_img} conv=notrunc bs=512 obs=512 seek=${data_offset} } + +function fix_disk_image_mbr() { + local hdd_img=${2} + + #sgdisk -h 1 ${hdd_img} +} From 357ceeebe4ff9096b5a0b0a681562b78db39056b Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sat, 19 May 2018 21:30:20 +0200 Subject: [PATCH 071/118] fix path --- buildroot-external/board/rpi3/post-image.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/buildroot-external/board/rpi3/post-image.sh b/buildroot-external/board/rpi3/post-image.sh index c39c2776501..0fedbe64536 100755 --- a/buildroot-external/board/rpi3/post-image.sh +++ b/buildroot-external/board/rpi3/post-image.sh @@ -17,9 +17,15 @@ rm -rf ${BOOT_DATA} mkdir -p ${BOOT_DATA} cp ${BINARIES_DIR}/barebox.bin ${BOOT_DATA}/ -cp -t ${BOOT_DATA} bcm2710-rpi-3-b.dtb bcm2710-rpi-3-b-plus.dtb bcm2710-rpi-cm3.dtb -cp -t ${BOOT_DATA} rpi-firmware/bootcode.bin rpi-firmware/config.txt rpi-firmware/fixup.dat rpi-firmware/start.elf -cp -r rpi-firmware/overlays ${BOOT_DATA}/ +cp -t ${BOOT_DATA} \ + ${BINARIES_DIR}/bcm2710-rpi-3-b.dtb \ + ${BINARIES_DIR}/bcm2710-rpi-3-b-plus.dtb \ + ${BINARIES_DIR}/bcm2710-rpi-cm3.dtb \ + ${BINARIES_DIR}/rpi-firmware/bootcode.bin \ + ${BINARIES_DIR}/rpi-firmware/config.txt \ + ${BINARIES_DIR}/rpi-firmware/fixup.dat \ + ${BINARIES_DIR}/rpi-firmware/start.elf +cp -r ${BINARIES_DIR}/rpi-firmware/overlays ${BOOT_DATA}/ # Update Boot options From f427eef15768c218c00404a4497ac2f101ea2fb5 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 20 May 2018 00:45:10 +0200 Subject: [PATCH 072/118] Add fake MBR script --- buildroot-external/board/rpi3/post-image.sh | 19 ++++++++++++++----- buildroot-external/scripts/hdd-image.sh | 5 +++-- buildroot-external/scripts/mbr.img | Bin 0 -> 512 bytes 3 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 buildroot-external/scripts/mbr.img diff --git a/buildroot-external/board/rpi3/post-image.sh b/buildroot-external/board/rpi3/post-image.sh index 0fedbe64536..e7050e24a6a 100755 --- a/buildroot-external/board/rpi3/post-image.sh +++ b/buildroot-external/board/rpi3/post-image.sh @@ -10,7 +10,7 @@ BOOT_DATA=${BINARIES_DIR}/boot . ${BOARD_DIR}/info # Filename -IMAGE_FILE=${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.img +IMAGE_FILE=${BINARIES_DIR}/${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.img # Init boot data rm -rf ${BOOT_DATA} @@ -22,19 +22,28 @@ cp -t ${BOOT_DATA} \ ${BINARIES_DIR}/bcm2710-rpi-3-b-plus.dtb \ ${BINARIES_DIR}/bcm2710-rpi-cm3.dtb \ ${BINARIES_DIR}/rpi-firmware/bootcode.bin \ - ${BINARIES_DIR}/rpi-firmware/config.txt \ ${BINARIES_DIR}/rpi-firmware/fixup.dat \ ${BINARIES_DIR}/rpi-firmware/start.elf cp -r ${BINARIES_DIR}/rpi-firmware/overlays ${BOOT_DATA}/ # Update Boot options +( + echo "kernel=barebox.bin" + echo "cmdline=\"\"" + echo "gpu_mem=16" + echo "disable_splash=1" + echo "dtparam=i2c_arm=on" + echo "dtparam=spi=on" + echo "dtparam=audio=on" +) > ${BOOT_DATA}/config.txt # Create other layers create_boot_image ${BINARIES_DIR} create_overlay_image ${BINARIES_DIR} -create_disk_image ${BINARIES_DIR} ${BINARIES_DIR}/${IMAGE_FILE} 6 -fix_disk_image_mbr ${BINARIES_DIR}/${IMAGE_FILE} +create_disk_image ${BINARIES_DIR} ${IMAGE_FILE} 6 +fix_disk_image_mbr ${IMAGE_FILE} -bzip2 ${BINARIES_DIR}/${IMAGE_FILE} +rm -rf ${IMAGE_FILE}.bz2 +bzip2 ${IMAGE_FILE} diff --git a/buildroot-external/scripts/hdd-image.sh b/buildroot-external/scripts/hdd-image.sh index 90b220c3ea5..4201029e1fd 100755 --- a/buildroot-external/scripts/hdd-image.sh +++ b/buildroot-external/scripts/hdd-image.sh @@ -73,7 +73,8 @@ function create_disk_image() { function fix_disk_image_mbr() { - local hdd_img=${2} + local hdd_img=${1} - #sgdisk -h 1 ${hdd_img} + sgdisk -t 1:"E3C9E316-0B5C-4DB8-817D-F92DF00215AE" ${hdd_img} + dd if=${BR2_EXTERNAL_HASSOS_PATH}/scripts/mbr.img of=${hdd_img} conv=notrunc bs=512 count=1 } diff --git a/buildroot-external/scripts/mbr.img b/buildroot-external/scripts/mbr.img new file mode 100644 index 0000000000000000000000000000000000000000..19f4903d0bd920eeb1d317d4a0241ea92f8f597c GIT binary patch literal 512 qcmZQz7zIN&1R4|+8F)+#SQt1!eqaP*CWdzk3SicMcEbJ&T?GKIa|Cq& literal 0 HcmV?d00001 From 9c60fed15b6f833d780d1f8b3a8cd7413130c305 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 20 May 2018 01:34:35 +0200 Subject: [PATCH 073/118] Small size it to 2gb --- buildroot-external/board/rpi3/post-image.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/board/rpi3/post-image.sh b/buildroot-external/board/rpi3/post-image.sh index e7050e24a6a..8e94db6b993 100755 --- a/buildroot-external/board/rpi3/post-image.sh +++ b/buildroot-external/board/rpi3/post-image.sh @@ -42,7 +42,7 @@ cp -r ${BINARIES_DIR}/rpi-firmware/overlays ${BOOT_DATA}/ create_boot_image ${BINARIES_DIR} create_overlay_image ${BINARIES_DIR} -create_disk_image ${BINARIES_DIR} ${IMAGE_FILE} 6 +create_disk_image ${BINARIES_DIR} ${IMAGE_FILE} 2 fix_disk_image_mbr ${IMAGE_FILE} rm -rf ${IMAGE_FILE}.bz2 From bbde697cdc726a63b12b2b42aa0fc3fc5836eb82 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 20 May 2018 09:28:36 +0200 Subject: [PATCH 074/118] Fix barebox config --- buildroot-external/board/rpi3/barebox.config | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/buildroot-external/board/rpi3/barebox.config b/buildroot-external/board/rpi3/barebox.config index 9dad28105f8..df0e271303f 100644 --- a/buildroot-external/board/rpi3/barebox.config +++ b/buildroot-external/board/rpi3/barebox.config @@ -1,9 +1,9 @@ -# CONFIG_LOCALVERSION_AUTO is not set CONFIG_ARCH_BCM283X=y CONFIG_MACH_RPI3=y CONFIG_AEABI=y CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y CONFIG_ARM_UNWIND=y +# CONFIG_LOCALVERSION_AUTO is not set CONFIG_MMU=y CONFIG_MALLOC_SIZE=0x0 CONFIG_MALLOC_TLSF=y @@ -39,11 +39,13 @@ CONFIG_CMD_TIMEOUT=y CONFIG_CMD_DETECT=y CONFIG_CMD_STATE=y CONFIG_CMD_BOOTCHOOSER=y +CONFIG_SERIAL_AMBA_PL011=y +# CONFIG_SPI is not set CONFIG_MCI=y CONFIG_MCI_BCM283X=y -# CONFIG_SPI is not set -CONFIG_DISK=y -CONFIG_DISK_WRITE=y +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_BCM2835=y +CONFIG_GPIO_BCM283X=y # CONFIG_PINCTRL is not set CONFIG_REGULATOR=y CONFIG_FS_FAT=y From b5dcec8053fb14693c76899ff2d2cde61012dbb3 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 20 May 2018 09:49:45 +0200 Subject: [PATCH 075/118] Update post-image.sh --- buildroot-external/board/rpi3/post-image.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/board/rpi3/post-image.sh b/buildroot-external/board/rpi3/post-image.sh index 8e94db6b993..6f40e1083fe 100755 --- a/buildroot-external/board/rpi3/post-image.sh +++ b/buildroot-external/board/rpi3/post-image.sh @@ -45,5 +45,5 @@ create_overlay_image ${BINARIES_DIR} create_disk_image ${BINARIES_DIR} ${IMAGE_FILE} 2 fix_disk_image_mbr ${IMAGE_FILE} -rm -rf ${IMAGE_FILE}.bz2 -bzip2 ${IMAGE_FILE} +rm -rf ${IMAGE_FILE}.gz +gzip ${IMAGE_FILE} From fc34f1a9ac9db5ae13a596818220a3d267958167 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 20 May 2018 10:29:33 +0200 Subject: [PATCH 076/118] Update RPi Firmware for kernel 4.14 --- ...aspberry-pi-firmware-for-kernel-4.14.patch | 34 +++++++++++++++++++ .../package/rpi-firmware/rpi-firmware.hash | 2 +- .../package/rpi-firmware/rpi-firmware.mk | 2 +- 3 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 buildroot-patches/0014-Pump-raspberry-pi-firmware-for-kernel-4.14.patch diff --git a/buildroot-patches/0014-Pump-raspberry-pi-firmware-for-kernel-4.14.patch b/buildroot-patches/0014-Pump-raspberry-pi-firmware-for-kernel-4.14.patch new file mode 100644 index 00000000000..da318352111 --- /dev/null +++ b/buildroot-patches/0014-Pump-raspberry-pi-firmware-for-kernel-4.14.patch @@ -0,0 +1,34 @@ +From 35e38a7f97cafcca6b8d6f188746437d4520876d Mon Sep 17 00:00:00 2001 +From: Pascal Vizeli +Date: Sun, 20 May 2018 10:26:01 +0200 +Subject: [PATCH 1/1] Pump raspberry-pi firmware for kernel 4.14 + +--- + package/rpi-firmware/rpi-firmware.hash | 2 +- + package/rpi-firmware/rpi-firmware.mk | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/package/rpi-firmware/rpi-firmware.hash b/package/rpi-firmware/rpi-firmware.hash +index 833a7fb..6466a1f 100644 +--- a/package/rpi-firmware/rpi-firmware.hash ++++ b/package/rpi-firmware/rpi-firmware.hash +@@ -1,2 +1,2 @@ + # Locally computed +-sha256 0451e1a843bf02df81126a1625d9a15dfdf19dcb2f9e95b0613a63e59fd31ca8 rpi-firmware-2067241bc7cdf238fdeab7f5a3c22faa57dd5617.tar.gz ++sha256 c4051418e122984548b80bf60d41abc2ed16c2dfb12025c06168455c72a5e58c rpi-firmware-a46b1f9521229ec26a1377aab7d013df1ade2791.tar.gz +diff --git a/package/rpi-firmware/rpi-firmware.mk b/package/rpi-firmware/rpi-firmware.mk +index 22eaaa2..7c95321 100644 +--- a/package/rpi-firmware/rpi-firmware.mk ++++ b/package/rpi-firmware/rpi-firmware.mk +@@ -4,7 +4,7 @@ + # + ################################################################################ + +-RPI_FIRMWARE_VERSION = 2067241bc7cdf238fdeab7f5a3c22faa57dd5617 ++RPI_FIRMWARE_VERSION = a46b1f9521229ec26a1377aab7d013df1ade2791 + RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) + RPI_FIRMWARE_LICENSE = BSD-3-Clause + RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom +-- +2.7.4 + diff --git a/buildroot/package/rpi-firmware/rpi-firmware.hash b/buildroot/package/rpi-firmware/rpi-firmware.hash index 833a7fbe373..6466a1fa3fb 100644 --- a/buildroot/package/rpi-firmware/rpi-firmware.hash +++ b/buildroot/package/rpi-firmware/rpi-firmware.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 0451e1a843bf02df81126a1625d9a15dfdf19dcb2f9e95b0613a63e59fd31ca8 rpi-firmware-2067241bc7cdf238fdeab7f5a3c22faa57dd5617.tar.gz +sha256 c4051418e122984548b80bf60d41abc2ed16c2dfb12025c06168455c72a5e58c rpi-firmware-a46b1f9521229ec26a1377aab7d013df1ade2791.tar.gz diff --git a/buildroot/package/rpi-firmware/rpi-firmware.mk b/buildroot/package/rpi-firmware/rpi-firmware.mk index 22eaaa28867..7c95321e5c9 100644 --- a/buildroot/package/rpi-firmware/rpi-firmware.mk +++ b/buildroot/package/rpi-firmware/rpi-firmware.mk @@ -4,7 +4,7 @@ # ################################################################################ -RPI_FIRMWARE_VERSION = 2067241bc7cdf238fdeab7f5a3c22faa57dd5617 +RPI_FIRMWARE_VERSION = a46b1f9521229ec26a1377aab7d013df1ade2791 RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3-Clause RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom From 3a0c9ef68d9be9c528a99a49263315c26f0bd468 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 20 May 2018 10:35:53 +0200 Subject: [PATCH 077/118] Update 0014-Pump-raspberry-pi-firmware-for-kernel-4.14.patch --- .../0014-Pump-raspberry-pi-firmware-for-kernel-4.14.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-patches/0014-Pump-raspberry-pi-firmware-for-kernel-4.14.patch b/buildroot-patches/0014-Pump-raspberry-pi-firmware-for-kernel-4.14.patch index da318352111..8bd05ee1347 100644 --- a/buildroot-patches/0014-Pump-raspberry-pi-firmware-for-kernel-4.14.patch +++ b/buildroot-patches/0014-Pump-raspberry-pi-firmware-for-kernel-4.14.patch @@ -15,7 +15,7 @@ index 833a7fb..6466a1f 100644 @@ -1,2 +1,2 @@ # Locally computed -sha256 0451e1a843bf02df81126a1625d9a15dfdf19dcb2f9e95b0613a63e59fd31ca8 rpi-firmware-2067241bc7cdf238fdeab7f5a3c22faa57dd5617.tar.gz -+sha256 c4051418e122984548b80bf60d41abc2ed16c2dfb12025c06168455c72a5e58c rpi-firmware-a46b1f9521229ec26a1377aab7d013df1ade2791.tar.gz ++sha256 f2b0f8ec8e73f8fa399f2c72c574ea5fe7fa57ab6151b139842a3ba783cd2140 rpi-firmware-a46b1f9521229ec26a1377aab7d013df1ade2791.tar.gz diff --git a/package/rpi-firmware/rpi-firmware.mk b/package/rpi-firmware/rpi-firmware.mk index 22eaaa2..7c95321 100644 --- a/package/rpi-firmware/rpi-firmware.mk From 6f420eb85cf5aa7edc47092e169b141235e7864e Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 20 May 2018 10:36:34 +0200 Subject: [PATCH 078/118] Update rpi-firmware.hash --- buildroot/package/rpi-firmware/rpi-firmware.hash | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot/package/rpi-firmware/rpi-firmware.hash b/buildroot/package/rpi-firmware/rpi-firmware.hash index 6466a1fa3fb..3a9f21e8778 100644 --- a/buildroot/package/rpi-firmware/rpi-firmware.hash +++ b/buildroot/package/rpi-firmware/rpi-firmware.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 c4051418e122984548b80bf60d41abc2ed16c2dfb12025c06168455c72a5e58c rpi-firmware-a46b1f9521229ec26a1377aab7d013df1ade2791.tar.gz +sha256 f2b0f8ec8e73f8fa399f2c72c574ea5fe7fa57ab6151b139842a3ba783cd2140 rpi-firmware-a46b1f9521229ec26a1377aab7d013df1ade2791.tar.gz From 0fd4576e5d02026b9739b5b7b83ec62b236df240 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 20 May 2018 12:36:40 +0200 Subject: [PATCH 079/118] Update post-image.sh --- buildroot-external/board/rpi3/post-image.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/board/rpi3/post-image.sh b/buildroot-external/board/rpi3/post-image.sh index 6f40e1083fe..c34b8f1d6c4 100755 --- a/buildroot-external/board/rpi3/post-image.sh +++ b/buildroot-external/board/rpi3/post-image.sh @@ -37,6 +37,7 @@ cp -r ${BINARIES_DIR}/rpi-firmware/overlays ${BOOT_DATA}/ echo "dtparam=audio=on" ) > ${BOOT_DATA}/config.txt +touch ${BOOT_DATA}/cmdline.txt # Create other layers create_boot_image ${BINARIES_DIR} From fe16b125f3b4bef87583ef047c45cd92d6778945 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 20 May 2018 13:12:33 +0200 Subject: [PATCH 080/118] Add Raspberrypi2 support --- buildroot-external/board/rpi2/barebox.config | 55 ++++++++++++ buildroot-external/board/rpi2/info | 3 + buildroot-external/board/rpi2/post-image.sh | 47 +++++++++++ buildroot-external/configs/rpi2_defconfig | 88 ++++++++++++++++++++ 4 files changed, 193 insertions(+) create mode 100644 buildroot-external/board/rpi2/barebox.config create mode 100644 buildroot-external/board/rpi2/info create mode 100755 buildroot-external/board/rpi2/post-image.sh create mode 100644 buildroot-external/configs/rpi2_defconfig diff --git a/buildroot-external/board/rpi2/barebox.config b/buildroot-external/board/rpi2/barebox.config new file mode 100644 index 00000000000..e9a985961c4 --- /dev/null +++ b/buildroot-external/board/rpi2/barebox.config @@ -0,0 +1,55 @@ +CONFIG_ARCH_BCM283X=y +CONFIG_MACH_RPI2=y +CONFIG_AEABI=y +CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y +CONFIG_ARM_UNWIND=y +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_MMU=y +CONFIG_MALLOC_SIZE=0x0 +CONFIG_MALLOC_TLSF=y +CONFIG_KALLSYMS=y +CONFIG_PROMPT="HassOS-boot:" +CONFIG_CMDLINE_EDITING=y +CONFIG_AUTO_COMPLETE=y +CONFIG_MENU=y +# CONFIG_TIMESTAMP is not set +CONFIG_BOOTM_SHOW_TYPE=y +CONFIG_BOOTM_OFTREE=y +CONFIG_FLEXIBLE_BOOTARGS=y +# CONFIG_PARTITION_DISK_DOS is not set +CONFIG_PARTITION_DISK_EFI=y +# CONFIG_PARTITION_DISK_EFI_GPT_NO_FORCE is not set +# CONFIG_PARTITION_DISK_EFI_GPT_COMPARE is not set +CONFIG_DEFAULT_ENVIRONMENT_PATH="/build/buildroot-external/barebox-env" +CONFIG_STATE=y +CONFIG_BOOTCHOOSER=y +# CONFIG_CMD_VERSION is not set +CONFIG_CMD_BOOT=y +CONFIG_CMD_UIMAGE=y +CONFIG_CMD_AUTOMOUNT=y +CONFIG_CMD_NV=y +CONFIG_CMD_EXPORT=y +CONFIG_CMD_GLOBAL=y +CONFIG_CMD_BASENAME=y +CONFIG_CMD_DIRNAME=y +CONFIG_CMD_READLINK=y +CONFIG_CMD_GETOPT=y +CONFIG_CMD_MENUTREE=y +CONFIG_CMD_TIMEOUT=y +CONFIG_CMD_DETECT=y +CONFIG_CMD_STATE=y +CONFIG_CMD_BOOTCHOOSER=y +CONFIG_SERIAL_AMBA_PL011=y +# CONFIG_SPI is not set +CONFIG_MCI=y +CONFIG_MCI_BCM283X=y +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_BCM2835=y +CONFIG_GPIO_BCM283X=y +# CONFIG_PINCTRL is not set +CONFIG_REGULATOR=y +CONFIG_FS_FAT=y +CONFIG_FS_FAT_WRITE=y +CONFIG_FS_FAT_LFN=y +CONFIG_FS_SQUASHFS=y +CONFIG_LZ4_DECOMPRESS=y diff --git a/buildroot-external/board/rpi2/info b/buildroot-external/board/rpi2/info new file mode 100644 index 00000000000..7319f718303 --- /dev/null +++ b/buildroot-external/board/rpi2/info @@ -0,0 +1,3 @@ +BOARD_ID=rpi2 +BOARD_NAME="RaspberryPi 2" +CHASSIS=embedded diff --git a/buildroot-external/board/rpi2/post-image.sh b/buildroot-external/board/rpi2/post-image.sh new file mode 100755 index 00000000000..2b1070af403 --- /dev/null +++ b/buildroot-external/board/rpi2/post-image.sh @@ -0,0 +1,47 @@ +#!/bin/bash +set -e + +SCRIPT_DIR=${BR2_EXTERNAL_HASSOS_PATH}/scripts +BOARD_DIR=${2} +BOOT_DATA=${BINARIES_DIR}/boot + +. ${SCRIPT_DIR}/hdd-image.sh +. ${BR2_EXTERNAL_HASSOS_PATH}/info +. ${BOARD_DIR}/info + +# Filename +IMAGE_FILE=${BINARIES_DIR}/${HASSOS_ID}_${BOARD_ID}-${VERSION_MAJOR}.${VERSION_BUILD}.img + +# Init boot data +rm -rf ${BOOT_DATA} +mkdir -p ${BOOT_DATA} + +cp ${BINARIES_DIR}/barebox.bin ${BOOT_DATA}/ +cp -t ${BOOT_DATA} \ + ${BINARIES_DIR}/bcm2709-rpi-2-b.dtb \ + ${BINARIES_DIR}/rpi-firmware/bootcode.bin \ + ${BINARIES_DIR}/rpi-firmware/fixup.dat \ + ${BINARIES_DIR}/rpi-firmware/start.elf +cp -r ${BINARIES_DIR}/rpi-firmware/overlays ${BOOT_DATA}/ + +# Update Boot options +( + echo "kernel=barebox.bin" + echo "cmdline=\"\"" + echo "gpu_mem=16" + echo "disable_splash=1" + echo "dtparam=i2c_arm=on" + echo "dtparam=spi=on" + echo "dtparam=audio=on" +) > ${BOOT_DATA}/config.txt + + +# Create other layers +create_boot_image ${BINARIES_DIR} +create_overlay_image ${BINARIES_DIR} + +create_disk_image ${BINARIES_DIR} ${IMAGE_FILE} 2 +fix_disk_image_mbr ${IMAGE_FILE} + +rm -rf ${IMAGE_FILE}.gz +gzip ${IMAGE_FILE} diff --git a/buildroot-external/configs/rpi2_defconfig b/buildroot-external/configs/rpi2_defconfig new file mode 100644 index 00000000000..d20b6605ee4 --- /dev/null +++ b/buildroot-external/configs/rpi2_defconfig @@ -0,0 +1,88 @@ +BR2_arm=y +BR2_cortex_a53=y +BR2_ARM_FPU_VFPV4=y +BR2_DL_DIR="/cache/dl" +BR2_CCACHE=y +BR2_CCACHE_DIR="/cache/cc" +BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches" +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +BR2_GCC_VERSION_7_X=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y +BR2_TARGET_GENERIC_HOSTNAME="hassio" +BR2_TARGET_GENERIC_ISSUE="Welcome to HassOS" +BR2_INIT_SYSTEMD=y +BR2_TARGET_GENERIC_GETTY_PORT="tty1" +# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set +BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_HASSOS_PATH)/rootfs-overlay" +BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi2/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi2" +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rpi-4.14.y" +BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config" +BR2_LINUX_KERNEL_LZ4=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2709-rpi-2-b" +BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config" +BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y +BR2_PACKAGE_JQ=y +BR2_PACKAGE_DOSFSTOOLS=y +BR2_PACKAGE_E2FSPROGS=y +BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y +BR2_PACKAGE_RPI_FIRMWARE=y +BR2_PACKAGE_DT_UTILS=y +BR2_PACKAGE_GPTFDISK=y +BR2_PACKAGE_GPTFDISK_SGDISK=y +BR2_PACKAGE_CA_CERTIFICATES=y +BR2_PACKAGE_LIBDNET=y +BR2_PACKAGE_LIBCGROUP=y +BR2_PACKAGE_LIBCGROUP_TOOLS=y +BR2_PACKAGE_AVAHI=y +BR2_PACKAGE_AVAHI_DAEMON=y +BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y +BR2_PACKAGE_DROPBEAR=y +# BR2_PACKAGE_DROPBEAR_CLIENT is not set +# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set +BR2_PACKAGE_NETWORK_MANAGER=y +BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER=y +BR2_PACKAGE_DOCKER_ENGINE=y +BR2_PACKAGE_RAUC=y +BR2_PACKAGE_RAUC_NETWORK=y +# BR2_PACKAGE_SYSTEMD_HWDB is not set +# BR2_PACKAGE_SYSTEMD_NETWORKD is not set +BR2_PACKAGE_SYSTEMD_RANDOMSEED=y +# BR2_PACKAGE_SYSTEMD_RESOLVED is not set +BR2_PACKAGE_UTIL_LINUX_PARTX=y +BR2_PACKAGE_UTIL_LINUX_ZRAMCTL=y +BR2_TARGET_ROOTFS_SQUASHFS=y +BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_TARGET_BAREBOX=y +BR2_TARGET_BAREBOX_CUSTOM_VERSION=y +BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2018.05.0" +BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y +BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi3/barebox.config" +BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/barebox-env" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_E2FSPROGS=y +BR2_PACKAGE_HOST_GPTFDISK=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_RAUC=y +BR2_PACKAGE_MINGETTY=y +BR2_PACKAGE_HASSOS=y +BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armhf-hassio-supervisor" +BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="103.3" +BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi3-homeassistant" +BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" +BR2_PACKAGE_HASSOS_CLI="homeassistant/armhf-hassio-cli" +BR2_PACKAGE_HASSOS_CLI_VERSION="3" +BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" +BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" +BR2_PACKAGE_APPARMOR=y From 648360e9c7d7bddfcb376fd5639ce632455d0793 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 20 May 2018 13:14:04 +0200 Subject: [PATCH 081/118] Update post-image.sh --- buildroot-external/board/rpi2/post-image.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/board/rpi2/post-image.sh b/buildroot-external/board/rpi2/post-image.sh index 2b1070af403..687376b47c3 100755 --- a/buildroot-external/board/rpi2/post-image.sh +++ b/buildroot-external/board/rpi2/post-image.sh @@ -35,6 +35,7 @@ cp -r ${BINARIES_DIR}/rpi-firmware/overlays ${BOOT_DATA}/ echo "dtparam=audio=on" ) > ${BOOT_DATA}/config.txt +touch ${BOOT_DATA}/cmdline.txt # Create other layers create_boot_image ${BINARIES_DIR} From 8bb2746659d339dddcfd3dd97b1eba4f8a918e6f Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 20 May 2018 15:41:36 +0200 Subject: [PATCH 082/118] Fix options for rpi2 --- buildroot-external/board/rpi2/barebox.config | 1 - buildroot-external/configs/rpi2_defconfig | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/buildroot-external/board/rpi2/barebox.config b/buildroot-external/board/rpi2/barebox.config index e9a985961c4..cdeed5a9408 100644 --- a/buildroot-external/board/rpi2/barebox.config +++ b/buildroot-external/board/rpi2/barebox.config @@ -5,7 +5,6 @@ CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y CONFIG_ARM_UNWIND=y # CONFIG_LOCALVERSION_AUTO is not set CONFIG_MMU=y -CONFIG_MALLOC_SIZE=0x0 CONFIG_MALLOC_TLSF=y CONFIG_KALLSYMS=y CONFIG_PROMPT="HassOS-boot:" diff --git a/buildroot-external/configs/rpi2_defconfig b/buildroot-external/configs/rpi2_defconfig index d20b6605ee4..437306bb7ad 100644 --- a/buildroot-external/configs/rpi2_defconfig +++ b/buildroot-external/configs/rpi2_defconfig @@ -1,5 +1,5 @@ BR2_arm=y -BR2_cortex_a53=y +BR2_cortex_a7=y BR2_ARM_FPU_VFPV4=y BR2_DL_DIR="/cache/dl" BR2_CCACHE=y From 304dd74b94e2cdfc04c0a446fbd3868f419449ca Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 20 May 2018 20:03:53 +0200 Subject: [PATCH 083/118] Update rpi2_defconfig --- buildroot-external/configs/rpi2_defconfig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/configs/rpi2_defconfig b/buildroot-external/configs/rpi2_defconfig index 437306bb7ad..04e1dddb762 100644 --- a/buildroot-external/configs/rpi2_defconfig +++ b/buildroot-external/configs/rpi2_defconfig @@ -68,7 +68,7 @@ BR2_TARGET_BAREBOX=y BR2_TARGET_BAREBOX_CUSTOM_VERSION=y BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2018.05.0" BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y -BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi3/barebox.config" +BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi2/barebox.config" BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/barebox-env" BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_E2FSPROGS=y From e6acda91c7ebe710633acd56bf27ec411bf878eb Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 22 May 2018 23:28:26 +0000 Subject: [PATCH 084/118] Fix DTS rpi2 --- buildroot-external/barebox-env/boot/system0 | 2 +- buildroot-external/barebox-env/boot/system1 | 2 +- buildroot-external/board/rpi2/barebox.config | 7 +- ...rpi-2-re-enable-booting-from-SD-card.patch | 29 ++++++ .../0002-Add-HassOS-bootchoiser-state.patch | 88 +++++++++++++++++++ buildroot-external/configs/rpi2_defconfig | 2 +- 6 files changed, 125 insertions(+), 5 deletions(-) create mode 100644 buildroot-external/board/rpi2/patches/barebox/0001-ARM-dts-bcm2836-rpi-2-re-enable-booting-from-SD-card.patch create mode 100644 buildroot-external/board/rpi2/patches/barebox/0002-Add-HassOS-bootchoiser-state.patch diff --git a/buildroot-external/barebox-env/boot/system0 b/buildroot-external/barebox-env/boot/system0 index 4239b465cdb..f1b789561c2 100644 --- a/buildroot-external/barebox-env/boot/system0 +++ b/buildroot-external/barebox-env/boot/system0 @@ -1,5 +1,5 @@ #!/bin/sh -global bootm.image="/mnt/disk1/boot/bzImage" +global bootm.image="/mnt/disk0.1/boot/bzImage" global linux.bootargs.dyn.root="root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro" diff --git a/buildroot-external/barebox-env/boot/system1 b/buildroot-external/barebox-env/boot/system1 index 3926d411215..c7fdcead390 100644 --- a/buildroot-external/barebox-env/boot/system1 +++ b/buildroot-external/barebox-env/boot/system1 @@ -1,4 +1,4 @@ #!/bin/sh -global bootm.image="/mnt/disk2/boot/bzImage" +global bootm.image="/mnt/disk0.2/boot/bzImage" global linux.bootargs.dyn.root="root=PARTUUID=a3ec664e-32ce-4665-95ea-7ae90ce9aa20 rootfstype=squashfs ro" diff --git a/buildroot-external/board/rpi2/barebox.config b/buildroot-external/board/rpi2/barebox.config index cdeed5a9408..370c51e9973 100644 --- a/buildroot-external/board/rpi2/barebox.config +++ b/buildroot-external/board/rpi2/barebox.config @@ -1,5 +1,6 @@ CONFIG_ARCH_BCM283X=y CONFIG_MACH_RPI2=y +CONFIG_MACH_RPI_DEBUG_UART_RPI2=y CONFIG_AEABI=y CONFIG_ARM_OPTIMZED_STRING_FUNCTIONS=y CONFIG_ARM_UNWIND=y @@ -22,6 +23,7 @@ CONFIG_PARTITION_DISK_EFI=y CONFIG_DEFAULT_ENVIRONMENT_PATH="/build/buildroot-external/barebox-env" CONFIG_STATE=y CONFIG_BOOTCHOOSER=y +CONFIG_DEBUG_LL=y # CONFIG_CMD_VERSION is not set CONFIG_CMD_BOOT=y CONFIG_CMD_UIMAGE=y @@ -36,14 +38,15 @@ CONFIG_CMD_GETOPT=y CONFIG_CMD_MENUTREE=y CONFIG_CMD_TIMEOUT=y CONFIG_CMD_DETECT=y +CONFIG_CMD_OF_DUMP=y CONFIG_CMD_STATE=y CONFIG_CMD_BOOTCHOOSER=y CONFIG_SERIAL_AMBA_PL011=y # CONFIG_SPI is not set CONFIG_MCI=y +CONFIG_MCI_STARTUP=y CONFIG_MCI_BCM283X=y -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_BCM2835=y +CONFIG_STATE_DRV=y CONFIG_GPIO_BCM283X=y # CONFIG_PINCTRL is not set CONFIG_REGULATOR=y diff --git a/buildroot-external/board/rpi2/patches/barebox/0001-ARM-dts-bcm2836-rpi-2-re-enable-booting-from-SD-card.patch b/buildroot-external/board/rpi2/patches/barebox/0001-ARM-dts-bcm2836-rpi-2-re-enable-booting-from-SD-card.patch new file mode 100644 index 00000000000..eb106a3f44b --- /dev/null +++ b/buildroot-external/board/rpi2/patches/barebox/0001-ARM-dts-bcm2836-rpi-2-re-enable-booting-from-SD-card.patch @@ -0,0 +1,29 @@ +From ef723a74044c8b3ed29a1f3d048debd50fc9df96 Mon Sep 17 00:00:00 2001 +From: Pascal Vizeli +Date: Tue, 22 May 2018 20:11:13 +0000 +Subject: [PATCH 1/1] ARM: dts: bcm2836-rpi-2: re-enable booting from SD card + +--- + arch/arm/dts/bcm2836-rpi-2.dts | 9 +++++++++ + 1 file changed, 9 insertions(+) + +diff --git a/arch/arm/dts/bcm2836-rpi-2.dts b/arch/arm/dts/bcm2836-rpi-2.dts +index 42b6abb18..2fa1c8bb4 100644 +--- a/arch/arm/dts/bcm2836-rpi-2.dts ++++ b/arch/arm/dts/bcm2836-rpi-2.dts +@@ -9,3 +9,12 @@ + reg = <0x0 0x0>; + }; + }; ++ ++&sdhci { ++ status = "okay"; ++}; ++ ++&sdhost { ++ status = "disabled"; ++}; ++ +-- +2.17.0 + diff --git a/buildroot-external/board/rpi2/patches/barebox/0002-Add-HassOS-bootchoiser-state.patch b/buildroot-external/board/rpi2/patches/barebox/0002-Add-HassOS-bootchoiser-state.patch new file mode 100644 index 00000000000..7f38b0592ca --- /dev/null +++ b/buildroot-external/board/rpi2/patches/barebox/0002-Add-HassOS-bootchoiser-state.patch @@ -0,0 +1,88 @@ +From af010303ac0e920ac517dc6d742b5ed703841005 Mon Sep 17 00:00:00 2001 +From: Pascal Vizeli +Date: Tue, 22 May 2018 21:08:15 +0000 +Subject: [PATCH 1/1] Add HassOS bootchoiser state + +--- + arch/arm/dts/bcm2836-rpi-2.dts | 68 ++++++++++++++++++++++++++++++++++ + 1 file changed, 68 insertions(+) + +diff --git a/arch/arm/dts/bcm2836-rpi-2.dts b/arch/arm/dts/bcm2836-rpi-2.dts +index 2fa1c8bb4..d882a9f86 100644 +--- a/arch/arm/dts/bcm2836-rpi-2.dts ++++ b/arch/arm/dts/bcm2836-rpi-2.dts +@@ -18,3 +18,71 @@ + status = "disabled"; + }; + ++/ { ++ ++ aliases { ++ state = &state; ++ }; ++ ++ state: state { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ magic = <0xef98423f>; ++ compatible = "barebox,state"; ++ backend = <&backend_state>; ++ backend-type = "raw"; ++ backend-stridesize = <4048>; ++ ++ bootstate { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ system0 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ remaining_attempts@0 { ++ reg = <0x0 0x4>; ++ type = "uint32"; ++ default = <3>; ++ }; ++ priority@4 { ++ reg = <0x4 0x4>; ++ type = "uint32"; ++ default = <20>; ++ }; ++ }; ++ system1 { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ remaining_attempts@8 { ++ reg = <0x8 0x4>; ++ type = "uint32"; ++ default = <0>; ++ }; ++ priority@c { ++ reg = <0xc 0x4>; ++ type = "uint32"; ++ default = <10>; ++ }; ++ }; ++ last_chosen@10 { ++ reg = <0x10 0x4>; ++ type = "uint32"; ++ }; ++ }; ++ }; ++}; ++ ++&sdhci { ++ partitions { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ compatible = "fixed-partitions"; ++ ++ backend_state: partition@22100000 { ++ label = "state"; ++ reg = <0x22100000 0x800000>; ++ }; ++ }; ++}; ++ +-- +2.17.0 + diff --git a/buildroot-external/configs/rpi2_defconfig b/buildroot-external/configs/rpi2_defconfig index 04e1dddb762..1d8ab838028 100644 --- a/buildroot-external/configs/rpi2_defconfig +++ b/buildroot-external/configs/rpi2_defconfig @@ -4,7 +4,7 @@ BR2_ARM_FPU_VFPV4=y BR2_DL_DIR="/cache/dl" BR2_CCACHE=y BR2_CCACHE_DIR="/cache/cc" -BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches" +BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches $(BR2_EXTERNAL_HASSOS_PATH)/board/rpi2/patches" BR2_TOOLCHAIN_BUILDROOT_GLIBC=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y BR2_GCC_VERSION_7_X=y From 50cc88832d8da9ca089e54ecae832ade8702fc29 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Fri, 25 May 2018 15:06:08 +0000 Subject: [PATCH 085/118] Runable rpi2 --- buildroot-external/barebox-env/bin/init | 3 --- buildroot-external/barebox-env/boot/system0 | 9 ++++++++- buildroot-external/barebox-env/boot/system1 | 11 ++++++++++- buildroot-external/board/ova/barebox.config | 2 -- .../board/rpi2/barebox-env/init/fix-devicetree | 3 +++ buildroot-external/board/rpi2/barebox.config | 8 +++----- buildroot-external/board/rpi2/post-image.sh | 2 -- buildroot-external/board/rpi3/barebox.config | 1 - buildroot-external/configs/rpi2_defconfig | 2 +- buildroot-external/kernel.config | 1 + 10 files changed, 26 insertions(+), 16 deletions(-) create mode 100644 buildroot-external/board/rpi2/barebox-env/init/fix-devicetree diff --git a/buildroot-external/barebox-env/bin/init b/buildroot-external/barebox-env/bin/init index 2ec2a484df0..29678ded514 100644 --- a/buildroot-external/barebox-env/bin/init +++ b/buildroot-external/barebox-env/bin/init @@ -5,9 +5,6 @@ export PATH=/env/bin global linux.bootargs.base global linux.bootargs.dyn.root -# Init board specific stuff -[ -e /env/config-board ] && /env/config-board - # Autostart for i in /env/init/*; do . $i diff --git a/buildroot-external/barebox-env/boot/system0 b/buildroot-external/barebox-env/boot/system0 index f1b789561c2..7f2564386b2 100644 --- a/buildroot-external/barebox-env/boot/system0 +++ b/buildroot-external/barebox-env/boot/system0 @@ -1,5 +1,12 @@ #!/bin/sh -global bootm.image="/mnt/disk0.1/boot/bzImage" global linux.bootargs.dyn.root="root=PARTUUID=8d3d53e3-6d49-4c38-8349-aff6859e82fd rootfstype=squashfs ro" +mkdir -p /mnt/system +mount -t squashfs /dev/disk0.hassos-system0 /mnt/system + +if [ -f "/mnt/system/boot/bzImage" ]; then + global bootm.image="/mnt/system/boot/bzImage" +else + global bootm.image="/mnt/system/boot/zImage" +fi diff --git a/buildroot-external/barebox-env/boot/system1 b/buildroot-external/barebox-env/boot/system1 index c7fdcead390..5d6fd6650cb 100644 --- a/buildroot-external/barebox-env/boot/system1 +++ b/buildroot-external/barebox-env/boot/system1 @@ -1,4 +1,13 @@ #!/bin/sh -global bootm.image="/mnt/disk0.2/boot/bzImage" global linux.bootargs.dyn.root="root=PARTUUID=a3ec664e-32ce-4665-95ea-7ae90ce9aa20 rootfstype=squashfs ro" + +mkdir -p /mnt/system +mount -t squashfs /dev/disk0.hassos-system1 /mnt/system + +if [ -f "/mnt/system/boot/bzImage" ]; then + global bootm.image="/mnt/system/boot/bzImage" +else + global bootm.image="/mnt/system/boot/zImage" +fi + diff --git a/buildroot-external/board/ova/barebox.config b/buildroot-external/board/ova/barebox.config index 24a3e34fbd3..24c2dd4032b 100644 --- a/buildroot-external/board/ova/barebox.config +++ b/buildroot-external/board/ova/barebox.config @@ -18,8 +18,6 @@ CONFIG_STATE=y CONFIG_BOOTCHOOSER=y # CONFIG_CMD_VERSION is not set CONFIG_CMD_BOOT=y -CONFIG_CMD_UIMAGE=y -CONFIG_CMD_AUTOMOUNT=y CONFIG_CMD_NV=y CONFIG_CMD_EXPORT=y CONFIG_CMD_GLOBAL=y diff --git a/buildroot-external/board/rpi2/barebox-env/init/fix-devicetree b/buildroot-external/board/rpi2/barebox-env/init/fix-devicetree new file mode 100644 index 00000000000..7173a84c3d4 --- /dev/null +++ b/buildroot-external/board/rpi2/barebox-env/init/fix-devicetree @@ -0,0 +1,3 @@ +#!/bin/sh + +of_fixup_status /soc/mmc@7e202000/ diff --git a/buildroot-external/board/rpi2/barebox.config b/buildroot-external/board/rpi2/barebox.config index 370c51e9973..7e21c077eab 100644 --- a/buildroot-external/board/rpi2/barebox.config +++ b/buildroot-external/board/rpi2/barebox.config @@ -20,14 +20,13 @@ CONFIG_FLEXIBLE_BOOTARGS=y CONFIG_PARTITION_DISK_EFI=y # CONFIG_PARTITION_DISK_EFI_GPT_NO_FORCE is not set # CONFIG_PARTITION_DISK_EFI_GPT_COMPARE is not set -CONFIG_DEFAULT_ENVIRONMENT_PATH="/build/buildroot-external/barebox-env" +CONFIG_DEFAULT_ENVIRONMENT_PATH="/build/buildroot-external/barebox-env /build/buildroot-external/board/rpi2/barebox-env" CONFIG_STATE=y CONFIG_BOOTCHOOSER=y CONFIG_DEBUG_LL=y # CONFIG_CMD_VERSION is not set CONFIG_CMD_BOOT=y -CONFIG_CMD_UIMAGE=y -CONFIG_CMD_AUTOMOUNT=y +# CONFIG_CMD_BOOTU is not set CONFIG_CMD_NV=y CONFIG_CMD_EXPORT=y CONFIG_CMD_GLOBAL=y @@ -38,13 +37,12 @@ CONFIG_CMD_GETOPT=y CONFIG_CMD_MENUTREE=y CONFIG_CMD_TIMEOUT=y CONFIG_CMD_DETECT=y -CONFIG_CMD_OF_DUMP=y +CONFIG_CMD_OF_FIXUP_STATUS=y CONFIG_CMD_STATE=y CONFIG_CMD_BOOTCHOOSER=y CONFIG_SERIAL_AMBA_PL011=y # CONFIG_SPI is not set CONFIG_MCI=y -CONFIG_MCI_STARTUP=y CONFIG_MCI_BCM283X=y CONFIG_STATE_DRV=y CONFIG_GPIO_BCM283X=y diff --git a/buildroot-external/board/rpi2/post-image.sh b/buildroot-external/board/rpi2/post-image.sh index 687376b47c3..fb5bb92fbe3 100755 --- a/buildroot-external/board/rpi2/post-image.sh +++ b/buildroot-external/board/rpi2/post-image.sh @@ -27,8 +27,6 @@ cp -r ${BINARIES_DIR}/rpi-firmware/overlays ${BOOT_DATA}/ # Update Boot options ( echo "kernel=barebox.bin" - echo "cmdline=\"\"" - echo "gpu_mem=16" echo "disable_splash=1" echo "dtparam=i2c_arm=on" echo "dtparam=spi=on" diff --git a/buildroot-external/board/rpi3/barebox.config b/buildroot-external/board/rpi3/barebox.config index df0e271303f..c5aa0424b0a 100644 --- a/buildroot-external/board/rpi3/barebox.config +++ b/buildroot-external/board/rpi3/barebox.config @@ -25,7 +25,6 @@ CONFIG_STATE=y CONFIG_BOOTCHOOSER=y # CONFIG_CMD_VERSION is not set CONFIG_CMD_BOOT=y -CONFIG_CMD_UIMAGE=y CONFIG_CMD_AUTOMOUNT=y CONFIG_CMD_NV=y CONFIG_CMD_EXPORT=y diff --git a/buildroot-external/configs/rpi2_defconfig b/buildroot-external/configs/rpi2_defconfig index 1d8ab838028..f426e4582a2 100644 --- a/buildroot-external/configs/rpi2_defconfig +++ b/buildroot-external/configs/rpi2_defconfig @@ -69,7 +69,7 @@ BR2_TARGET_BAREBOX_CUSTOM_VERSION=y BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2018.05.0" BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi2/barebox.config" -BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/barebox-env" +BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/barebox-env $(BR2_EXTERNAL_HASSOS_PATH)/board/rpi2/barebox-env" BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_E2FSPROGS=y BR2_PACKAGE_HOST_GPTFDISK=y diff --git a/buildroot-external/kernel.config b/buildroot-external/kernel.config index 1daab52e77c..3bb3cebc03b 100644 --- a/buildroot-external/kernel.config +++ b/buildroot-external/kernel.config @@ -1,4 +1,5 @@ CONFIG_KERNEL_LZ4=y +CONFIG_CMDLINE="" CONFIG_ZRAM=y CONFIG_ZSMALLOC=y From 0638bac388b68c88d10d265aca60f913a56b0eac Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 27 May 2018 09:36:28 +0000 Subject: [PATCH 086/118] Add barebox overlay support --- .../init/{fix-devicetree => dt-sdcard} | 0 ...drivers-of-implement-overlay-support.patch | 429 + ...dtc-Update-to-upstream-version-1.4.6.patch | 9483 +++++++++++++++++ 3 files changed, 9912 insertions(+) rename buildroot-external/board/rpi2/barebox-env/init/{fix-devicetree => dt-sdcard} (100%) create mode 100644 buildroot-external/patches/barebox/0001-drivers-of-implement-overlay-support.patch create mode 100644 buildroot-external/patches/barebox/0002-scripts-dtc-Update-to-upstream-version-1.4.6.patch diff --git a/buildroot-external/board/rpi2/barebox-env/init/fix-devicetree b/buildroot-external/board/rpi2/barebox-env/init/dt-sdcard similarity index 100% rename from buildroot-external/board/rpi2/barebox-env/init/fix-devicetree rename to buildroot-external/board/rpi2/barebox-env/init/dt-sdcard diff --git a/buildroot-external/patches/barebox/0001-drivers-of-implement-overlay-support.patch b/buildroot-external/patches/barebox/0001-drivers-of-implement-overlay-support.patch new file mode 100644 index 00000000000..3dd6fb4b477 --- /dev/null +++ b/buildroot-external/patches/barebox/0001-drivers-of-implement-overlay-support.patch @@ -0,0 +1,429 @@ +From 059762285f200a6e2527a4447d35f34d66b07bc2 Mon Sep 17 00:00:00 2001 +From: Pascal Vizeli +Date: Sun, 27 May 2018 09:33:20 +0000 +Subject: [PATCH 1/2] drivers: of: implement overlay support + +Signed-off-by: Pascal Vizeli +--- + Documentation/user/devicetree.rst | 101 +++++++++++++++++++++++++++++- + arch/sandbox/dts/Makefile | 5 +- + arch/sandbox/dts/sandbox.dts | 6 ++ + commands/oftree.c | 65 +++++++++++++++++-- + drivers/of/Kconfig | 6 ++ + drivers/of/Makefile | 1 + + include/of.h | 71 +++++++++++++++++++++ + scripts/Makefile.lib | 5 +- + 8 files changed, 251 insertions(+), 9 deletions(-) + +diff --git a/Documentation/user/devicetree.rst b/Documentation/user/devicetree.rst +index 17934d86e..b2220997d 100644 +--- a/Documentation/user/devicetree.rst ++++ b/Documentation/user/devicetree.rst +@@ -21,7 +21,7 @@ The internal devicetree + ----------------------- + + The devicetree consulted by barebox plays a special role. It is referred to +-as the "internal devicetree." The barebox devicetree commands work on this ++as the "internal devicetree". The barebox devicetree commands work on this + devicetree. The devicetree source (DTS) files are kept in sync with the kernel DTS + files. As the FDT files are meant to be backward compatible, it should always be possible + to start a kernel with the barebox internal devicetree. However, since the barebox +@@ -83,3 +83,102 @@ you can exchange the internal devicetree during runtime using the + + oftree -f + oftree -l /new/dtb ++ ++Devicetree overlays ++------------------- ++ ++Since version 3.19, the Linux kernel supports applying "devicetree overlays" to ++its loaded device tree. This can be used to inform the kernel about additional ++non-discoverable devices after the system has booted, which is useful for modular ++boards and FPGAs. The details of the overlay format are specified in the Linux ++`kernel documentation `_ ++and an updated DTC is required to compile the overlays. ++ ++The use cases for overlays in barebox are a bit different: ++ ++* some of the modular devices are needed to boot Linux to userspace, but barebox ++ can detect which module variant is connected ++* one of several parallel or LVDS displays (which use timing data from devicetree) ++ can be connected to the SoC and should be used for boot messages ++* a generic Linux (distribution) kernel should be booted on a modular ++ system and support additional hardware on modules ++ ++barebox supports applying overlays in the internal devicetree was well using the ++:ref:`command_oftree` command with option ``-o``: ++ ++.. code-block:: sh ++ ++ $ ./barebox -d arch/sandbox/dts/sandbox.dtb -i arch/sandbox/dts/sandbox-overlay.dtbo ++ add fd0 backed by file arch/sandbox/dts/sandbox-overlay.dtbo ++ ++ barebox 2015.02.0 #26 Wed Mar 4 09:41:19 CET 2015 ++ ... ++ barebox@barebox sandbox:/ of_dump ++ ... ++ dummy@0 { ++ status = "disabled"; ++ linux,phandle = <0x1>; ++ phandle = <0x1>; ++ }; ++ dummy@1 { ++ status = "disabled"; ++ linux,phandle = <0x2>; ++ phandle = <0x2>; ++ }; ++ __symbols__ { ++ dummy0 = "/dummy@0"; ++ dummy1 = "/dummy@1"; ++ }; ++ ... ++ barebox@barebox sandbox:/ of_dump -f /dev/fd0 ++ { ++ fragment@0 { ++ target = <0xdeadbeef>; ++ __overlay__ { ++ status = "okay"; ++ child { ++ compatible = "barebox,dummy"; ++ }; ++ }; ++ }; ++ fragment@1 { ++ target = <0xdeadbeef>; ++ __overlay__ { ++ status = "okay"; ++ child { ++ compatible = "barebox,dummy"; ++ }; ++ }; ++ }; ++ __fixups__ { ++ dummy0 = "/fragment@0:target:0"; ++ dummy1 = "/fragment@1:target:0"; ++ }; ++ }; ++ barebox@barebox sandbox:/ oftree -o /dev/fd0 ++ barebox@barebox sandbox:/ of_dump ++ ... ++ dummy@0 { ++ linux,phandle = <0x1>; ++ phandle = <0x1>; ++ status = "okay"; ++ child { ++ compatible = "barebox,dummy"; ++ }; ++ }; ++ dummy@1 { ++ linux,phandle = <0x2>; ++ phandle = <0x2>; ++ status = "okay"; ++ child { ++ compatible = "barebox,dummy"; ++ }; ++ }; ++ __symbols__ { ++ dummy0 = "/dummy@0"; ++ dummy1 = "/dummy@1"; ++ }; ++ ... ++ ++If you need to use a different base devicetree instead of the one compiled into ++barebox, it needs to be replaced as described in the previous section. +diff --git a/arch/sandbox/dts/Makefile b/arch/sandbox/dts/Makefile +index 6f6838857..ede219e6f 100644 +--- a/arch/sandbox/dts/Makefile ++++ b/arch/sandbox/dts/Makefile +@@ -1,6 +1,7 @@ + ifeq ($(CONFIG_OFTREE),y) + dtb-y += \ +- sandbox.dtb ++ sandbox.dtb \ ++ sandbox-overlay.dtbo + endif + + # just to build a built-in.o. Otherwise compilation fails when no devicetree is +@@ -8,4 +9,4 @@ endif + obj- += dummy.o + + always := $(dtb-y) +-clean-files := *.dtb *.dtb.S .*.dtc .*.pre .*.dts ++clean-files := *.dtb *.dtb.S .*.dtc .*.pre .*.dts *.dtbo +diff --git a/arch/sandbox/dts/sandbox.dts b/arch/sandbox/dts/sandbox.dts +index 2595aa13f..1b99a4960 100644 +--- a/arch/sandbox/dts/sandbox.dts ++++ b/arch/sandbox/dts/sandbox.dts +@@ -3,5 +3,11 @@ + #include "skeleton.dtsi" + + / { ++ dummy0: dummy@0 { ++ status = "disabled"; ++ }; + ++ dummy1: dummy@1 { ++ status = "disabled"; ++ }; + }; +diff --git a/commands/oftree.c b/commands/oftree.c +index 8a47c0be5..e0624ad34 100644 +--- a/commands/oftree.c ++++ b/commands/oftree.c +@@ -2,6 +2,7 @@ + * oftree.c - device tree command support + * + * Copyright (c) 2011 Sascha Hauer , Pengutronix ++ * Copyright (C) 2015 Pengutronix, Jan Luebbe + * + * based on U-Boot code by: + * +@@ -48,11 +49,14 @@ static int do_oftree(int argc, char *argv[]) + int probe = 0; + char *load = NULL; + char *save = NULL; ++ char *overlay = NULL; + int free_of = 0; + int ret; + struct device_node *root; ++ int ovinfo_cnt; ++ struct of_overlay_info *ovinfo; + +- while ((opt = getopt(argc, argv, "pfl:s:")) > 0) { ++ while ((opt = getopt(argc, argv, "pfl:o:s:")) > 0) { + switch (opt) { + case 'l': + load = optarg; +@@ -68,6 +72,9 @@ static int do_oftree(int argc, char *argv[]) + case 'f': + free_of = 1; + break; ++ case 'o': ++ overlay = optarg; ++ break; + case 's': + save = optarg; + break; +@@ -84,7 +91,7 @@ static int do_oftree(int argc, char *argv[]) + return 0; + } + +- if (!probe && !load && !save) ++ if (!probe && !load && !save && !overlay) + return COMMAND_ERROR_USAGE; + + if (save) { +@@ -123,6 +130,53 @@ static int do_oftree(int argc, char *argv[]) + } + } + ++ if (IS_ENABLED(CONFIG_OFTREE_OVERLAY) && overlay) { ++ struct device_node *ov; ++ ++ root = of_get_root_node(); ++ if (!root) { ++ printf("no oftree loaded\n"); ++ goto out; ++ } ++ ++ fdt = read_file(overlay, &size); ++ if (!fdt) { ++ printf("unable to read %s\n", overlay); ++ return 1; ++ } ++ ++ ov = of_unflatten_dtb(fdt); ++ free(fdt); ++ ++ if (IS_ERR(ov)) { ++ printf("parse oftree: %s\n", strerror(-ret)); ++ return PTR_ERR(ov); ++ } ++ ++ ret = of_resolve(ov); ++ if (ret) { ++ printf("resolve oftree overlay: %s\n", strerror(-ret)); ++ of_delete_node(ov); ++ goto out; ++ } ++ ++ ret = of_build_overlay_info(ov, &ovinfo_cnt, &ovinfo); ++ if (ret) { ++ printf("prepare oftree overlay: %s\n", strerror(-ret)); ++ of_delete_node(ov); ++ goto out; ++ } ++ ++ ret = of_overlay(ovinfo_cnt, ovinfo); ++ if (ret) { ++ printf("apply oftree overlay: %s\n", strerror(-ret)); ++ of_delete_node(ov); ++ goto out; ++ } ++ ++ of_delete_node(ov); ++ } ++ + if (probe) { + ret = of_probe(); + if (ret) +@@ -137,8 +191,9 @@ out: + + BAREBOX_CMD_HELP_START(oftree) + BAREBOX_CMD_HELP_TEXT("Options:") +-BAREBOX_CMD_HELP_OPT ("-l ", "Load to internal devicetree\n") +-BAREBOX_CMD_HELP_OPT ("-s ", "save internal devicetree to \n") ++BAREBOX_CMD_HELP_OPT ("-l ", "load to internal devicetree") ++BAREBOX_CMD_HELP_OPT ("-s ", "save internal devicetree to ") ++BAREBOX_CMD_HELP_OPT ("-o ", "apply overlay to internal devicetree") + BAREBOX_CMD_HELP_OPT ("-p", "probe devices from stored device tree") + BAREBOX_CMD_HELP_OPT ("-f", "free stored device tree") + BAREBOX_CMD_HELP_END +@@ -146,7 +201,7 @@ BAREBOX_CMD_HELP_END + BAREBOX_CMD_START(oftree) + .cmd = do_oftree, + BAREBOX_CMD_DESC("handle device trees") +- BAREBOX_CMD_OPTS("[-lspf]") ++ BAREBOX_CMD_OPTS("[-lsopf]") + BAREBOX_CMD_GROUP(CMD_GRP_MISC) + BAREBOX_CMD_HELP(cmd_oftree_help) + BAREBOX_CMD_END +diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig +index a1fac0e61..d90bd9c6b 100644 +--- a/drivers/of/Kconfig ++++ b/drivers/of/Kconfig +@@ -15,6 +15,12 @@ config OFDEVICE + select DTC + bool "Enable probing of devices from the devicetree" + ++config OFTREE_OVERLAY ++ bool "Enable support for devicetree overlays" ++ depends on OFTREE ++ help ++ Allows you to modify the live tree using overlays. ++ + config OF_ADDRESS_PCI + bool + +diff --git a/drivers/of/Makefile b/drivers/of/Makefile +index ec4387006..323543461 100644 +--- a/drivers/of/Makefile ++++ b/drivers/of/Makefile +@@ -6,3 +6,4 @@ obj-y += partition.o + obj-y += of_net.o + obj-$(CONFIG_MTD) += of_mtd.o + obj-$(CONFIG_OF_BAREBOX_DRIVERS) += barebox.o ++obj-$(CONFIG_OFTREE_OVERLAY) += resolver.o overlay.o +diff --git a/include/of.h b/include/of.h +index fec51bb94..91476ae47 100644 +--- a/include/of.h ++++ b/include/of.h +@@ -730,6 +730,8 @@ static inline struct device_node *of_find_matching_node( + #define for_each_available_child_of_node(parent, child) \ + for (child = of_get_next_available_child(parent, NULL); child != NULL; \ + child = of_get_next_available_child(parent, child)) ++#define for_each_property_of_node(dn, pp) \ ++ list_for_each_entry(pp, &dn->properties, list) + + /** + * of_property_read_bool - Findfrom a property +@@ -850,4 +852,73 @@ static inline struct device_node *of_find_root_node(struct device_node *node) + + return node; + } ++ ++/* illegal phandle value (set when unresolved) */ ++#define OF_PHANDLE_ILLEGAL 0xdeadbeef ++ ++#ifdef CONFIG_OFTREE_OVERLAY ++ ++extern int of_resolve(struct device_node *resolve); ++ ++#else ++ ++static inline int of_resolve(struct device_node *resolve) ++{ ++ return -ENOSYS; ++} ++ ++#endif ++ ++/** ++ * Overlay support ++ */ ++ ++/** ++ * struct of_overlay_info - Holds a single overlay info ++ * @target: target of the overlay operation ++ * @overlay: pointer to the overlay contents node ++ * ++ * Holds a single overlay state. ++ */ ++struct of_overlay_info { ++ struct device_node *target; ++ struct device_node *overlay; ++}; ++ ++#ifdef CONFIG_OFTREE_OVERLAY ++ ++extern int of_overlay(int count, struct of_overlay_info *ovinfo_tab); ++ ++extern int of_fill_overlay_info(struct device_node *info_node, ++ struct of_overlay_info *ovinfo); ++extern int of_build_overlay_info(struct device_node *tree, ++ int *cntp, struct of_overlay_info **ovinfop); ++extern int of_free_overlay_info(int cnt, struct of_overlay_info *ovinfo); ++ ++#else ++ ++static inline int of_overlay(int count, struct of_overlay_info *ovinfo_tab) ++{ ++ return -ENOSYS; ++} ++ ++static inline int of_fill_overlay_info(struct device_node *info_node, ++ struct of_overlay_info *ovinfo) ++{ ++ return -ENOSYS; ++} ++ ++static inline int of_build_overlay_info(struct device_node *tree, ++ int *cntp, struct of_overlay_info **ovinfop) ++{ ++ return -ENOSYS; ++} ++ ++static inline int of_free_overlay_info(int cnt, struct of_overlay_info *ovinfo) ++{ ++ return -ENOSYS; ++} ++ ++#endif ++ + #endif /* __OF_H */ +diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib +index 272b5981e..e7cea55c4 100644 +--- a/scripts/Makefile.lib ++++ b/scripts/Makefile.lib +@@ -261,7 +261,7 @@ $(obj)/%.dtb.S: $(obj)/%.dtb $(srctree)/scripts/gen-dtb-s FORCE + + quiet_cmd_dtc = DTC $@ + cmd_dtc = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ +- $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 \ ++ $(objtree)/scripts/dtc/dtc -@ -O dtb -o $@ -b 0 \ + -i $(srctree)/arch/$(SRCARCH)/dts $(DTC_FLAGS) \ + -i $(srctree)/dts/src/$(SRCARCH) \ + -d $(depfile).dtc $(dtc-tmp) ; \ +@@ -270,6 +270,9 @@ cmd_dtc = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \ + $(obj)/%.dtb: $(src)/%.dts FORCE + $(call if_changed_dep,dtc) + ++$(obj)/%.dtbo: $(src)/%.dtso FORCE ++ $(call if_changed_dep,dtc) ++ + dtc-tmp = $(subst $(comma),_,$(dot-target).dts) + + obj-y += $(patsubst %,%.bbenv$(DEFAULT_COMPRESSION_SUFFIX).o,$(bbenv-y)) +-- +2.17.0 + diff --git a/buildroot-external/patches/barebox/0002-scripts-dtc-Update-to-upstream-version-1.4.6.patch b/buildroot-external/patches/barebox/0002-scripts-dtc-Update-to-upstream-version-1.4.6.patch new file mode 100644 index 00000000000..2635cc8ee44 --- /dev/null +++ b/buildroot-external/patches/barebox/0002-scripts-dtc-Update-to-upstream-version-1.4.6.patch @@ -0,0 +1,9483 @@ +From b283776d26027ce237276f57e4522f5d0b6aab3f Mon Sep 17 00:00:00 2001 +From: Pascal Vizeli +Date: Sun, 27 May 2018 09:34:21 +0000 +Subject: [PATCH 2/2] scripts/dtc: Update to upstream version 1.4.6 + +Signed-off-by: Pascal Vizeli +--- + scripts/dtc/.gitignore | 1 - + scripts/dtc/Makefile | 8 +- + scripts/dtc/checks.c | 1194 +++++++++++++++++++++----- + scripts/dtc/data.c | 16 +- + scripts/dtc/dtc-lexer.l | 63 +- + scripts/dtc/dtc-lexer.lex.c_shipped | 894 +++++++++---------- + scripts/dtc/dtc-parser.tab.c_shipped | 813 ++++++++++-------- + scripts/dtc/dtc-parser.tab.h_shipped | 54 +- + scripts/dtc/dtc-parser.y | 91 +- + scripts/dtc/dtc.c | 139 ++- + scripts/dtc/dtc.h | 62 +- + scripts/dtc/fdt.c | 24 +- + scripts/dtc/fdt.h | 6 +- + scripts/dtc/fdt_empty_tree.c | 1 - + scripts/dtc/fdt_ro.c | 288 ++++++- + scripts/dtc/fdt_rw.c | 121 +-- + scripts/dtc/fdt_strerror.c | 6 + + scripts/dtc/fdt_sw.c | 40 +- + scripts/dtc/fdt_wip.c | 43 +- + scripts/dtc/fdtdump.c | 136 +-- + scripts/dtc/fdtget.c | 60 +- + scripts/dtc/fdtput.c | 142 ++- + scripts/dtc/flattree.c | 105 +-- + scripts/dtc/fstree.c | 5 +- + scripts/dtc/libfdt.h | 429 +++++++-- + scripts/dtc/libfdt_env.h | 60 +- + scripts/dtc/libfdt_internal.h | 32 +- + scripts/dtc/livetree.c | 356 +++++++- + scripts/dtc/srcpos.c | 42 +- + scripts/dtc/srcpos.h | 18 +- + scripts/dtc/treesource.c | 20 +- + scripts/dtc/update-dtc-source.sh | 46 +- + scripts/dtc/util.c | 44 +- + scripts/dtc/util.h | 33 +- + scripts/dtc/version_gen.h | 2 +- + 35 files changed, 3666 insertions(+), 1728 deletions(-) + +diff --git a/scripts/dtc/.gitignore b/scripts/dtc/.gitignore +index 80f6b50fd..cdabdc95a 100644 +--- a/scripts/dtc/.gitignore ++++ b/scripts/dtc/.gitignore +@@ -2,4 +2,3 @@ dtc + dtc-lexer.lex.c + dtc-parser.tab.c + dtc-parser.tab.h +-fdtget +diff --git a/scripts/dtc/Makefile b/scripts/dtc/Makefile +index 05973b12a..06aaa8c55 100644 +--- a/scripts/dtc/Makefile ++++ b/scripts/dtc/Makefile +@@ -1,17 +1,15 @@ + # scripts/dtc makefile + +-hostprogs-y := dtc fdtget ++hostprogs-y := dtc + always := $(hostprogs-y) + + dtc-objs := dtc.o flattree.o fstree.o data.o livetree.o treesource.o \ + srcpos.o checks.o util.o + dtc-objs += dtc-lexer.lex.o dtc-parser.tab.o + +-libfdt-objs = fdt.o fdt_ro.o fdt_strerror.o fdt_wip.o ++libfdt-objs = fdt.o fdt_ro.o fdt_strerror.o fdt_wip.o fdt_overlay.o + libfdt-objs += fdt_empty_tree.o fdt_rw.o fdt_sw.o + +-fdtget-objs += fdtget.o $(libfdt-objs) util.o +- + # Source files need to get at the userspace version of libfdt_env.h to compile + + HOSTCFLAGS_DTC := -I$(src) +@@ -33,7 +31,7 @@ HOSTCFLAGS_fdt_wip.o := $(HOSTCFLAGS_DTC) + HOSTCFLAGS_fdt_empty_tree.o := $(HOSTCFLAGS_DTC) + HOSTCFLAGS_fdt_rw.o := $(HOSTCFLAGS_DTC) + HOSTCFLAGS_fdt_sw.o := $(HOSTCFLAGS_DTC) +-HOSTCFLAGS_fdtget.o := $(HOSTCFLAGS_DTC) ++HOSTCFLAGS_fdt_overlay.o := $(HOSTCFLAGS_DTC) + + HOSTCFLAGS_dtc-lexer.lex.o := $(HOSTCFLAGS_DTC) + HOSTCFLAGS_dtc-parser.tab.o := $(HOSTCFLAGS_DTC) +diff --git a/scripts/dtc/checks.c b/scripts/dtc/checks.c +index 3bf0fa4a4..815eaf140 100644 +--- a/scripts/dtc/checks.c ++++ b/scripts/dtc/checks.c +@@ -40,16 +40,11 @@ enum checkstatus { + + struct check; + +-typedef void (*tree_check_fn)(struct check *c, struct node *dt); +-typedef void (*node_check_fn)(struct check *c, struct node *dt, struct node *node); +-typedef void (*prop_check_fn)(struct check *c, struct node *dt, +- struct node *node, struct property *prop); ++typedef void (*check_fn)(struct check *c, struct dt_info *dti, struct node *node); + + struct check { + const char *name; +- tree_check_fn tree_fn; +- node_check_fn node_fn; +- prop_check_fn prop_fn; ++ check_fn fn; + void *data; + bool warn, error; + enum checkstatus status; +@@ -58,91 +53,80 @@ struct check { + struct check **prereq; + }; + +-#define CHECK_ENTRY(nm, tfn, nfn, pfn, d, w, e, ...) \ +- static struct check *nm##_prereqs[] = { __VA_ARGS__ }; \ +- static struct check nm = { \ +- .name = #nm, \ +- .tree_fn = (tfn), \ +- .node_fn = (nfn), \ +- .prop_fn = (pfn), \ +- .data = (d), \ +- .warn = (w), \ +- .error = (e), \ ++#define CHECK_ENTRY(nm_, fn_, d_, w_, e_, ...) \ ++ static struct check *nm_##_prereqs[] = { __VA_ARGS__ }; \ ++ static struct check nm_ = { \ ++ .name = #nm_, \ ++ .fn = (fn_), \ ++ .data = (d_), \ ++ .warn = (w_), \ ++ .error = (e_), \ + .status = UNCHECKED, \ +- .num_prereqs = ARRAY_SIZE(nm##_prereqs), \ +- .prereq = nm##_prereqs, \ ++ .num_prereqs = ARRAY_SIZE(nm_##_prereqs), \ ++ .prereq = nm_##_prereqs, \ + }; +-#define WARNING(nm, tfn, nfn, pfn, d, ...) \ +- CHECK_ENTRY(nm, tfn, nfn, pfn, d, true, false, __VA_ARGS__) +-#define ERROR(nm, tfn, nfn, pfn, d, ...) \ +- CHECK_ENTRY(nm, tfn, nfn, pfn, d, false, true, __VA_ARGS__) +-#define CHECK(nm, tfn, nfn, pfn, d, ...) \ +- CHECK_ENTRY(nm, tfn, nfn, pfn, d, false, false, __VA_ARGS__) +- +-#define TREE_WARNING(nm, d, ...) \ +- WARNING(nm, check_##nm, NULL, NULL, d, __VA_ARGS__) +-#define TREE_ERROR(nm, d, ...) \ +- ERROR(nm, check_##nm, NULL, NULL, d, __VA_ARGS__) +-#define TREE_CHECK(nm, d, ...) \ +- CHECK(nm, check_##nm, NULL, NULL, d, __VA_ARGS__) +-#define NODE_WARNING(nm, d, ...) \ +- WARNING(nm, NULL, check_##nm, NULL, d, __VA_ARGS__) +-#define NODE_ERROR(nm, d, ...) \ +- ERROR(nm, NULL, check_##nm, NULL, d, __VA_ARGS__) +-#define NODE_CHECK(nm, d, ...) \ +- CHECK(nm, NULL, check_##nm, NULL, d, __VA_ARGS__) +-#define PROP_WARNING(nm, d, ...) \ +- WARNING(nm, NULL, NULL, check_##nm, d, __VA_ARGS__) +-#define PROP_ERROR(nm, d, ...) \ +- ERROR(nm, NULL, NULL, check_##nm, d, __VA_ARGS__) +-#define PROP_CHECK(nm, d, ...) \ +- CHECK(nm, NULL, NULL, check_##nm, d, __VA_ARGS__) +- +-#ifdef __GNUC__ +-static inline void check_msg(struct check *c, const char *fmt, ...) __attribute__((format (printf, 2, 3))); +-#endif +-static inline void check_msg(struct check *c, const char *fmt, ...) ++#define WARNING(nm_, fn_, d_, ...) \ ++ CHECK_ENTRY(nm_, fn_, d_, true, false, __VA_ARGS__) ++#define ERROR(nm_, fn_, d_, ...) \ ++ CHECK_ENTRY(nm_, fn_, d_, false, true, __VA_ARGS__) ++#define CHECK(nm_, fn_, d_, ...) \ ++ CHECK_ENTRY(nm_, fn_, d_, false, false, __VA_ARGS__) ++ ++static inline void PRINTF(5, 6) check_msg(struct check *c, struct dt_info *dti, ++ struct node *node, ++ struct property *prop, ++ const char *fmt, ...) + { + va_list ap; + va_start(ap, fmt); + + if ((c->warn && (quiet < 1)) + || (c->error && (quiet < 2))) { +- fprintf(stderr, "%s (%s): ", ++ fprintf(stderr, "%s: %s (%s): ", ++ strcmp(dti->outname, "-") ? dti->outname : "", + (c->error) ? "ERROR" : "Warning", c->name); ++ if (node) { ++ fprintf(stderr, "%s", node->fullpath); ++ if (prop) ++ fprintf(stderr, ":%s", prop->name); ++ fputs(": ", stderr); ++ } + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + } ++ va_end(ap); + } + +-#define FAIL(c, ...) \ +- do { \ +- TRACE((c), "\t\tFAILED at %s:%d", __FILE__, __LINE__); \ +- (c)->status = FAILED; \ +- check_msg((c), __VA_ARGS__); \ ++#define FAIL(c, dti, node, ...) \ ++ do { \ ++ TRACE((c), "\t\tFAILED at %s:%d", __FILE__, __LINE__); \ ++ (c)->status = FAILED; \ ++ check_msg((c), dti, node, NULL, __VA_ARGS__); \ + } while (0) + +-static void check_nodes_props(struct check *c, struct node *dt, struct node *node) ++#define FAIL_PROP(c, dti, node, prop, ...) \ ++ do { \ ++ TRACE((c), "\t\tFAILED at %s:%d", __FILE__, __LINE__); \ ++ (c)->status = FAILED; \ ++ check_msg((c), dti, node, prop, __VA_ARGS__); \ ++ } while (0) ++ ++ ++static void check_nodes_props(struct check *c, struct dt_info *dti, struct node *node) + { + struct node *child; +- struct property *prop; + + TRACE(c, "%s", node->fullpath); +- if (c->node_fn) +- c->node_fn(c, dt, node); +- +- if (c->prop_fn) +- for_each_property(node, prop) { +- TRACE(c, "%s\t'%s'", node->fullpath, prop->name); +- c->prop_fn(c, dt, node, prop); +- } ++ if (c->fn) ++ c->fn(c, dti, node); + + for_each_child(node, child) +- check_nodes_props(c, dt, child); ++ check_nodes_props(c, dti, child); + } + +-static bool run_check(struct check *c, struct node *dt) ++static bool run_check(struct check *c, struct dt_info *dti) + { ++ struct node *dt = dti->dt; + bool error = false; + int i; + +@@ -155,10 +139,10 @@ static bool run_check(struct check *c, struct node *dt) + + for (i = 0; i < c->num_prereqs; i++) { + struct check *prq = c->prereq[i]; +- error = error || run_check(prq, dt); ++ error = error || run_check(prq, dti); + if (prq->status != PASSED) { + c->status = PREREQ; +- check_msg(c, "Failed prerequisite '%s'", ++ check_msg(c, dti, NULL, NULL, "Failed prerequisite '%s'", + c->prereq[i]->name); + } + } +@@ -166,11 +150,8 @@ static bool run_check(struct check *c, struct node *dt) + if (c->status != UNCHECKED) + goto out; + +- if (c->node_fn || c->prop_fn) +- check_nodes_props(c, dt, dt); ++ check_nodes_props(c, dti, dt); + +- if (c->tree_fn) +- c->tree_fn(c, dt); + if (c->status == UNCHECKED) + c->status = PASSED; + +@@ -188,13 +169,14 @@ out: + */ + + /* A check which always fails, for testing purposes only */ +-static inline void check_always_fail(struct check *c, struct node *dt) ++static inline void check_always_fail(struct check *c, struct dt_info *dti, ++ struct node *node) + { +- FAIL(c, "always_fail check"); ++ FAIL(c, dti, node, "always_fail check"); + } +-TREE_CHECK(always_fail, NULL); ++CHECK(always_fail, check_always_fail, NULL); + +-static void check_is_string(struct check *c, struct node *root, ++static void check_is_string(struct check *c, struct dt_info *dti, + struct node *node) + { + struct property *prop; +@@ -205,15 +187,43 @@ static void check_is_string(struct check *c, struct node *root, + return; /* Not present, assumed ok */ + + if (!data_is_one_string(prop->val)) +- FAIL(c, "\"%s\" property in %s is not a string", +- propname, node->fullpath); ++ FAIL_PROP(c, dti, node, prop, "property is not a string"); + } + #define WARNING_IF_NOT_STRING(nm, propname) \ +- WARNING(nm, NULL, check_is_string, NULL, (propname)) ++ WARNING(nm, check_is_string, (propname)) + #define ERROR_IF_NOT_STRING(nm, propname) \ +- ERROR(nm, NULL, check_is_string, NULL, (propname)) ++ ERROR(nm, check_is_string, (propname)) ++ ++static void check_is_string_list(struct check *c, struct dt_info *dti, ++ struct node *node) ++{ ++ int rem, l; ++ struct property *prop; ++ char *propname = c->data; ++ char *str; ++ ++ prop = get_property(node, propname); ++ if (!prop) ++ return; /* Not present, assumed ok */ ++ ++ str = prop->val.val; ++ rem = prop->val.len; ++ while (rem > 0) { ++ l = strnlen(str, rem); ++ if (l == rem) { ++ FAIL_PROP(c, dti, node, prop, "property is not a string list"); ++ break; ++ } ++ rem -= l + 1; ++ str += l + 1; ++ } ++} ++#define WARNING_IF_NOT_STRING_LIST(nm, propname) \ ++ WARNING(nm, check_is_string_list, (propname)) ++#define ERROR_IF_NOT_STRING_LIST(nm, propname) \ ++ ERROR(nm, check_is_string_list, (propname)) + +-static void check_is_cell(struct check *c, struct node *root, ++static void check_is_cell(struct check *c, struct dt_info *dti, + struct node *node) + { + struct property *prop; +@@ -224,19 +234,18 @@ static void check_is_cell(struct check *c, struct node *root, + return; /* Not present, assumed ok */ + + if (prop->val.len != sizeof(cell_t)) +- FAIL(c, "\"%s\" property in %s is not a single cell", +- propname, node->fullpath); ++ FAIL_PROP(c, dti, node, prop, "property is not a single cell"); + } + #define WARNING_IF_NOT_CELL(nm, propname) \ +- WARNING(nm, NULL, check_is_cell, NULL, (propname)) ++ WARNING(nm, check_is_cell, (propname)) + #define ERROR_IF_NOT_CELL(nm, propname) \ +- ERROR(nm, NULL, check_is_cell, NULL, (propname)) ++ ERROR(nm, check_is_cell, (propname)) + + /* + * Structural check functions + */ + +-static void check_duplicate_node_names(struct check *c, struct node *dt, ++static void check_duplicate_node_names(struct check *c, struct dt_info *dti, + struct node *node) + { + struct node *child, *child2; +@@ -246,12 +255,11 @@ static void check_duplicate_node_names(struct check *c, struct node *dt, + child2; + child2 = child2->next_sibling) + if (streq(child->name, child2->name)) +- FAIL(c, "Duplicate node name %s", +- child->fullpath); ++ FAIL(c, dti, node, "Duplicate node name"); + } +-NODE_ERROR(duplicate_node_names, NULL); ++ERROR(duplicate_node_names, check_duplicate_node_names, NULL); + +-static void check_duplicate_property_names(struct check *c, struct node *dt, ++static void check_duplicate_property_names(struct check *c, struct dt_info *dti, + struct node *node) + { + struct property *prop, *prop2; +@@ -261,48 +269,116 @@ static void check_duplicate_property_names(struct check *c, struct node *dt, + if (prop2->deleted) + continue; + if (streq(prop->name, prop2->name)) +- FAIL(c, "Duplicate property name %s in %s", +- prop->name, node->fullpath); ++ FAIL_PROP(c, dti, node, prop, "Duplicate property name"); + } + } + } +-NODE_ERROR(duplicate_property_names, NULL); ++ERROR(duplicate_property_names, check_duplicate_property_names, NULL); + + #define LOWERCASE "abcdefghijklmnopqrstuvwxyz" + #define UPPERCASE "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + #define DIGITS "0123456789" + #define PROPNODECHARS LOWERCASE UPPERCASE DIGITS ",._+*#?-" ++#define PROPNODECHARSSTRICT LOWERCASE UPPERCASE DIGITS ",-" + +-static void check_node_name_chars(struct check *c, struct node *dt, ++static void check_node_name_chars(struct check *c, struct dt_info *dti, + struct node *node) + { + int n = strspn(node->name, c->data); + + if (n < strlen(node->name)) +- FAIL(c, "Bad character '%c' in node %s", +- node->name[n], node->fullpath); ++ FAIL(c, dti, node, "Bad character '%c' in node name", ++ node->name[n]); + } +-NODE_ERROR(node_name_chars, PROPNODECHARS "@"); ++ERROR(node_name_chars, check_node_name_chars, PROPNODECHARS "@"); + +-static void check_node_name_format(struct check *c, struct node *dt, ++static void check_node_name_chars_strict(struct check *c, struct dt_info *dti, ++ struct node *node) ++{ ++ int n = strspn(node->name, c->data); ++ ++ if (n < node->basenamelen) ++ FAIL(c, dti, node, "Character '%c' not recommended in node name", ++ node->name[n]); ++} ++CHECK(node_name_chars_strict, check_node_name_chars_strict, PROPNODECHARSSTRICT); ++ ++static void check_node_name_format(struct check *c, struct dt_info *dti, + struct node *node) + { + if (strchr(get_unitname(node), '@')) +- FAIL(c, "Node %s has multiple '@' characters in name", +- node->fullpath); ++ FAIL(c, dti, node, "multiple '@' characters in node name"); ++} ++ERROR(node_name_format, check_node_name_format, NULL, &node_name_chars); ++ ++static void check_unit_address_vs_reg(struct check *c, struct dt_info *dti, ++ struct node *node) ++{ ++ const char *unitname = get_unitname(node); ++ struct property *prop = get_property(node, "reg"); ++ ++ if (!prop) { ++ prop = get_property(node, "ranges"); ++ if (prop && !prop->val.len) ++ prop = NULL; ++ } ++ ++ if (prop) { ++ if (!unitname[0]) ++ FAIL(c, dti, node, "node has a reg or ranges property, but no unit name"); ++ } else { ++ if (unitname[0]) ++ FAIL(c, dti, node, "node has a unit name, but no reg property"); ++ } ++} ++WARNING(unit_address_vs_reg, check_unit_address_vs_reg, NULL); ++ ++static void check_property_name_chars(struct check *c, struct dt_info *dti, ++ struct node *node) ++{ ++ struct property *prop; ++ ++ for_each_property(node, prop) { ++ int n = strspn(prop->name, c->data); ++ ++ if (n < strlen(prop->name)) ++ FAIL_PROP(c, dti, node, prop, "Bad character '%c' in property name", ++ prop->name[n]); ++ } + } +-NODE_ERROR(node_name_format, NULL, &node_name_chars); ++ERROR(property_name_chars, check_property_name_chars, PROPNODECHARS); + +-static void check_property_name_chars(struct check *c, struct node *dt, +- struct node *node, struct property *prop) ++static void check_property_name_chars_strict(struct check *c, ++ struct dt_info *dti, ++ struct node *node) + { +- int n = strspn(prop->name, c->data); ++ struct property *prop; ++ ++ for_each_property(node, prop) { ++ const char *name = prop->name; ++ int n = strspn(name, c->data); + +- if (n < strlen(prop->name)) +- FAIL(c, "Bad character '%c' in property name \"%s\", node %s", +- prop->name[n], prop->name, node->fullpath); ++ if (n == strlen(prop->name)) ++ continue; ++ ++ /* Certain names are whitelisted */ ++ if (streq(name, "device_type")) ++ continue; ++ ++ /* ++ * # is only allowed at the beginning of property names not counting ++ * the vendor prefix. ++ */ ++ if (name[n] == '#' && ((n == 0) || (name[n-1] == ','))) { ++ name += n + 1; ++ n = strspn(name, c->data); ++ } ++ if (n < strlen(name)) ++ FAIL_PROP(c, dti, node, prop, "Character '%c' not recommended in property name", ++ name[n]); ++ } + } +-PROP_ERROR(property_name_chars, PROPNODECHARS); ++CHECK(property_name_chars_strict, check_property_name_chars_strict, PROPNODECHARSSTRICT); + + #define DESCLABEL_FMT "%s%s%s%s%s" + #define DESCLABEL_ARGS(node,prop,mark) \ +@@ -311,10 +387,11 @@ PROP_ERROR(property_name_chars, PROPNODECHARS); + ((prop) ? (prop)->name : ""), \ + ((prop) ? "' in " : ""), (node)->fullpath + +-static void check_duplicate_label(struct check *c, struct node *dt, ++static void check_duplicate_label(struct check *c, struct dt_info *dti, + const char *label, struct node *node, + struct property *prop, struct marker *mark) + { ++ struct node *dt = dti->dt; + struct node *othernode = NULL; + struct property *otherprop = NULL; + struct marker *othermark = NULL; +@@ -331,50 +408,49 @@ static void check_duplicate_label(struct check *c, struct node *dt, + return; + + if ((othernode != node) || (otherprop != prop) || (othermark != mark)) +- FAIL(c, "Duplicate label '%s' on " DESCLABEL_FMT ++ FAIL(c, dti, node, "Duplicate label '%s' on " DESCLABEL_FMT + " and " DESCLABEL_FMT, + label, DESCLABEL_ARGS(node, prop, mark), + DESCLABEL_ARGS(othernode, otherprop, othermark)); + } + +-static void check_duplicate_label_node(struct check *c, struct node *dt, ++static void check_duplicate_label_node(struct check *c, struct dt_info *dti, + struct node *node) + { + struct label *l; ++ struct property *prop; + + for_each_label(node->labels, l) +- check_duplicate_label(c, dt, l->label, node, NULL, NULL); +-} +-static void check_duplicate_label_prop(struct check *c, struct node *dt, +- struct node *node, struct property *prop) +-{ +- struct marker *m = prop->val.markers; +- struct label *l; ++ check_duplicate_label(c, dti, l->label, node, NULL, NULL); ++ ++ for_each_property(node, prop) { ++ struct marker *m = prop->val.markers; + +- for_each_label(prop->labels, l) +- check_duplicate_label(c, dt, l->label, node, prop, NULL); ++ for_each_label(prop->labels, l) ++ check_duplicate_label(c, dti, l->label, node, prop, NULL); + +- for_each_marker_of_type(m, LABEL) +- check_duplicate_label(c, dt, m->ref, node, prop, m); ++ for_each_marker_of_type(m, LABEL) ++ check_duplicate_label(c, dti, m->ref, node, prop, m); ++ } + } +-ERROR(duplicate_label, NULL, check_duplicate_label_node, +- check_duplicate_label_prop, NULL); ++ERROR(duplicate_label, check_duplicate_label_node, NULL); + +-static void check_explicit_phandles(struct check *c, struct node *root, +- struct node *node, struct property *prop) ++static cell_t check_phandle_prop(struct check *c, struct dt_info *dti, ++ struct node *node, const char *propname) + { ++ struct node *root = dti->dt; ++ struct property *prop; + struct marker *m; +- struct node *other; + cell_t phandle; + +- if (!streq(prop->name, "phandle") +- && !streq(prop->name, "linux,phandle")) +- return; ++ prop = get_property(node, propname); ++ if (!prop) ++ return 0; + + if (prop->val.len != sizeof(cell_t)) { +- FAIL(c, "%s has bad length (%d) %s property", +- node->fullpath, prop->val.len, prop->name); +- return; ++ FAIL_PROP(c, dti, node, prop, "bad length (%d) %s property", ++ prop->val.len, prop->name); ++ return 0; + } + + m = prop->val.markers; +@@ -384,42 +460,65 @@ static void check_explicit_phandles(struct check *c, struct node *root, + /* "Set this node's phandle equal to some + * other node's phandle". That's nonsensical + * by construction. */ { +- FAIL(c, "%s in %s is a reference to another node", +- prop->name, node->fullpath); +- return; ++ FAIL(c, dti, node, "%s is a reference to another node", ++ prop->name); + } + /* But setting this node's phandle equal to its own + * phandle is allowed - that means allocate a unique + * phandle for this node, even if it's not otherwise + * referenced. The value will be filled in later, so +- * no further checking for now. */ +- return; ++ * we treat it as having no phandle data for now. */ ++ return 0; + } + + phandle = propval_cell(prop); + + if ((phandle == 0) || (phandle == -1)) { +- FAIL(c, "%s has bad value (0x%x) in %s property", +- node->fullpath, phandle, prop->name); +- return; ++ FAIL_PROP(c, dti, node, prop, "bad value (0x%x) in %s property", ++ phandle, prop->name); ++ return 0; + } + +- if (node->phandle && (node->phandle != phandle)) +- FAIL(c, "%s has %s property which replaces existing phandle information", +- node->fullpath, prop->name); ++ return phandle; ++} ++ ++static void check_explicit_phandles(struct check *c, struct dt_info *dti, ++ struct node *node) ++{ ++ struct node *root = dti->dt; ++ struct node *other; ++ cell_t phandle, linux_phandle; ++ ++ /* Nothing should have assigned phandles yet */ ++ assert(!node->phandle); ++ ++ phandle = check_phandle_prop(c, dti, node, "phandle"); ++ ++ linux_phandle = check_phandle_prop(c, dti, node, "linux,phandle"); ++ ++ if (!phandle && !linux_phandle) ++ /* No valid phandles; nothing further to check */ ++ return; ++ ++ if (linux_phandle && phandle && (phandle != linux_phandle)) ++ FAIL(c, dti, node, "mismatching 'phandle' and 'linux,phandle'" ++ " properties"); ++ ++ if (linux_phandle && !phandle) ++ phandle = linux_phandle; + + other = get_node_by_phandle(root, phandle); + if (other && (other != node)) { +- FAIL(c, "%s has duplicated phandle 0x%x (seen before at %s)", +- node->fullpath, phandle, other->fullpath); ++ FAIL(c, dti, node, "duplicated phandle 0x%x (seen before at %s)", ++ phandle, other->fullpath); + return; + } + + node->phandle = phandle; + } +-PROP_ERROR(explicit_phandles, NULL); ++ERROR(explicit_phandles, check_explicit_phandles, NULL); + +-static void check_name_properties(struct check *c, struct node *root, ++static void check_name_properties(struct check *c, struct dt_info *dti, + struct node *node) + { + struct property **pp, *prop = NULL; +@@ -435,8 +534,8 @@ static void check_name_properties(struct check *c, struct node *root, + + if ((prop->val.len != node->basenamelen+1) + || (memcmp(prop->val.val, node->name, node->basenamelen) != 0)) { +- FAIL(c, "\"name\" property in %s is incorrect (\"%s\" instead" +- " of base node name)", node->fullpath, prop->val.val); ++ FAIL(c, dti, node, "\"name\" property is incorrect (\"%s\" instead" ++ " of base node name)", prop->val.val); + } else { + /* The name property is correct, and therefore redundant. + * Delete it */ +@@ -447,60 +546,73 @@ static void check_name_properties(struct check *c, struct node *root, + } + } + ERROR_IF_NOT_STRING(name_is_string, "name"); +-NODE_ERROR(name_properties, NULL, &name_is_string); ++ERROR(name_properties, check_name_properties, NULL, &name_is_string); + + /* + * Reference fixup functions + */ + +-static void fixup_phandle_references(struct check *c, struct node *dt, +- struct node *node, struct property *prop) ++static void fixup_phandle_references(struct check *c, struct dt_info *dti, ++ struct node *node) + { +- struct marker *m = prop->val.markers; +- struct node *refnode; +- cell_t phandle; ++ struct node *dt = dti->dt; ++ struct property *prop; + +- for_each_marker_of_type(m, REF_PHANDLE) { +- assert(m->offset + sizeof(cell_t) <= prop->val.len); ++ for_each_property(node, prop) { ++ struct marker *m = prop->val.markers; ++ struct node *refnode; ++ cell_t phandle; ++ ++ for_each_marker_of_type(m, REF_PHANDLE) { ++ assert(m->offset + sizeof(cell_t) <= prop->val.len); ++ ++ refnode = get_node_by_ref(dt, m->ref); ++ if (! refnode) { ++ if (!(dti->dtsflags & DTSF_PLUGIN)) ++ FAIL(c, dti, node, "Reference to non-existent node or " ++ "label \"%s\"\n", m->ref); ++ else /* mark the entry as unresolved */ ++ *((fdt32_t *)(prop->val.val + m->offset)) = ++ cpu_to_fdt32(0xffffffff); ++ continue; ++ } + +- refnode = get_node_by_ref(dt, m->ref); +- if (! refnode) { +- FAIL(c, "Reference to non-existent node or label \"%s\"\n", +- m->ref); +- continue; ++ phandle = get_node_phandle(dt, refnode); ++ *((fdt32_t *)(prop->val.val + m->offset)) = cpu_to_fdt32(phandle); + } +- +- phandle = get_node_phandle(dt, refnode); +- *((cell_t *)(prop->val.val + m->offset)) = cpu_to_fdt32(phandle); + } + } +-ERROR(phandle_references, NULL, NULL, fixup_phandle_references, NULL, ++ERROR(phandle_references, fixup_phandle_references, NULL, + &duplicate_node_names, &explicit_phandles); + +-static void fixup_path_references(struct check *c, struct node *dt, +- struct node *node, struct property *prop) ++static void fixup_path_references(struct check *c, struct dt_info *dti, ++ struct node *node) + { +- struct marker *m = prop->val.markers; +- struct node *refnode; +- char *path; ++ struct node *dt = dti->dt; ++ struct property *prop; + +- for_each_marker_of_type(m, REF_PATH) { +- assert(m->offset <= prop->val.len); ++ for_each_property(node, prop) { ++ struct marker *m = prop->val.markers; ++ struct node *refnode; ++ char *path; + +- refnode = get_node_by_ref(dt, m->ref); +- if (!refnode) { +- FAIL(c, "Reference to non-existent node or label \"%s\"\n", +- m->ref); +- continue; +- } ++ for_each_marker_of_type(m, REF_PATH) { ++ assert(m->offset <= prop->val.len); + +- path = refnode->fullpath; +- prop->val = data_insert_at_marker(prop->val, m, path, +- strlen(path) + 1); ++ refnode = get_node_by_ref(dt, m->ref); ++ if (!refnode) { ++ FAIL(c, dti, node, "Reference to non-existent node or label \"%s\"\n", ++ m->ref); ++ continue; ++ } ++ ++ path = refnode->fullpath; ++ prop->val = data_insert_at_marker(prop->val, m, path, ++ strlen(path) + 1); ++ } + } + } +-ERROR(path_references, NULL, NULL, fixup_path_references, NULL, +- &duplicate_node_names); ++ERROR(path_references, fixup_path_references, NULL, &duplicate_node_names); + + /* + * Semantic checks +@@ -512,8 +624,47 @@ WARNING_IF_NOT_CELL(interrupt_cells_is_cell, "#interrupt-cells"); + WARNING_IF_NOT_STRING(device_type_is_string, "device_type"); + WARNING_IF_NOT_STRING(model_is_string, "model"); + WARNING_IF_NOT_STRING(status_is_string, "status"); ++WARNING_IF_NOT_STRING(label_is_string, "label"); ++ ++WARNING_IF_NOT_STRING_LIST(compatible_is_string_list, "compatible"); ++ ++static void check_names_is_string_list(struct check *c, struct dt_info *dti, ++ struct node *node) ++{ ++ struct property *prop; ++ ++ for_each_property(node, prop) { ++ const char *s = strrchr(prop->name, '-'); ++ if (!s || !streq(s, "-names")) ++ continue; ++ ++ c->data = prop->name; ++ check_is_string_list(c, dti, node); ++ } ++} ++WARNING(names_is_string_list, check_names_is_string_list, NULL); ++ ++static void check_alias_paths(struct check *c, struct dt_info *dti, ++ struct node *node) ++{ ++ struct property *prop; + +-static void fixup_addr_size_cells(struct check *c, struct node *dt, ++ if (!streq(node->name, "aliases")) ++ return; ++ ++ for_each_property(node, prop) { ++ if (!prop->val.val || !get_node_by_path(dti->dt, prop->val.val)) { ++ FAIL_PROP(c, dti, node, prop, "aliases property is not a valid node (%s)", ++ prop->val.val); ++ continue; ++ } ++ if (strspn(prop->name, LOWERCASE DIGITS "-") != strlen(prop->name)) ++ FAIL(c, dti, node, "aliases property name must include only lowercase and '-'"); ++ } ++} ++WARNING(alias_paths, check_alias_paths, NULL); ++ ++static void fixup_addr_size_cells(struct check *c, struct dt_info *dti, + struct node *node) + { + struct property *prop; +@@ -529,7 +680,7 @@ static void fixup_addr_size_cells(struct check *c, struct node *dt, + if (prop) + node->size_cells = propval_cell(prop); + } +-WARNING(addr_size_cells, NULL, fixup_addr_size_cells, NULL, NULL, ++WARNING(addr_size_cells, fixup_addr_size_cells, NULL, + &address_cells_is_cell, &size_cells_is_cell); + + #define node_addr_cells(n) \ +@@ -537,7 +688,7 @@ WARNING(addr_size_cells, NULL, fixup_addr_size_cells, NULL, NULL, + #define node_size_cells(n) \ + (((n)->size_cells == -1) ? 1 : (n)->size_cells) + +-static void check_reg_format(struct check *c, struct node *dt, ++static void check_reg_format(struct check *c, struct dt_info *dti, + struct node *node) + { + struct property *prop; +@@ -548,25 +699,25 @@ static void check_reg_format(struct check *c, struct node *dt, + return; /* No "reg", that's fine */ + + if (!node->parent) { +- FAIL(c, "Root node has a \"reg\" property"); ++ FAIL(c, dti, node, "Root node has a \"reg\" property"); + return; + } + + if (prop->val.len == 0) +- FAIL(c, "\"reg\" property in %s is empty", node->fullpath); ++ FAIL_PROP(c, dti, node, prop, "property is empty"); + + addr_cells = node_addr_cells(node->parent); + size_cells = node_size_cells(node->parent); + entrylen = (addr_cells + size_cells) * sizeof(cell_t); + +- if ((prop->val.len % entrylen) != 0) +- FAIL(c, "\"reg\" property in %s has invalid length (%d bytes) " +- "(#address-cells == %d, #size-cells == %d)", +- node->fullpath, prop->val.len, addr_cells, size_cells); ++ if (!entrylen || (prop->val.len % entrylen) != 0) ++ FAIL_PROP(c, dti, node, prop, "property has invalid length (%d bytes) " ++ "(#address-cells == %d, #size-cells == %d)", ++ prop->val.len, addr_cells, size_cells); + } +-NODE_WARNING(reg_format, NULL, &addr_size_cells); ++WARNING(reg_format, check_reg_format, NULL, &addr_size_cells); + +-static void check_ranges_format(struct check *c, struct node *dt, ++static void check_ranges_format(struct check *c, struct dt_info *dti, + struct node *node) + { + struct property *prop; +@@ -577,7 +728,7 @@ static void check_ranges_format(struct check *c, struct node *dt, + return; + + if (!node->parent) { +- FAIL(c, "Root node has a \"ranges\" property"); ++ FAIL_PROP(c, dti, node, prop, "Root node has a \"ranges\" property"); + return; + } + +@@ -589,28 +740,237 @@ static void check_ranges_format(struct check *c, struct node *dt, + + if (prop->val.len == 0) { + if (p_addr_cells != c_addr_cells) +- FAIL(c, "%s has empty \"ranges\" property but its " +- "#address-cells (%d) differs from %s (%d)", +- node->fullpath, c_addr_cells, node->parent->fullpath, +- p_addr_cells); ++ FAIL_PROP(c, dti, node, prop, "empty \"ranges\" property but its " ++ "#address-cells (%d) differs from %s (%d)", ++ c_addr_cells, node->parent->fullpath, ++ p_addr_cells); + if (p_size_cells != c_size_cells) +- FAIL(c, "%s has empty \"ranges\" property but its " +- "#size-cells (%d) differs from %s (%d)", +- node->fullpath, c_size_cells, node->parent->fullpath, +- p_size_cells); ++ FAIL_PROP(c, dti, node, prop, "empty \"ranges\" property but its " ++ "#size-cells (%d) differs from %s (%d)", ++ c_size_cells, node->parent->fullpath, ++ p_size_cells); + } else if ((prop->val.len % entrylen) != 0) { +- FAIL(c, "\"ranges\" property in %s has invalid length (%d bytes) " +- "(parent #address-cells == %d, child #address-cells == %d, " +- "#size-cells == %d)", node->fullpath, prop->val.len, +- p_addr_cells, c_addr_cells, c_size_cells); ++ FAIL_PROP(c, dti, node, prop, "\"ranges\" property has invalid length (%d bytes) " ++ "(parent #address-cells == %d, child #address-cells == %d, " ++ "#size-cells == %d)", prop->val.len, ++ p_addr_cells, c_addr_cells, c_size_cells); ++ } ++} ++WARNING(ranges_format, check_ranges_format, NULL, &addr_size_cells); ++ ++static const struct bus_type pci_bus = { ++ .name = "PCI", ++}; ++ ++static void check_pci_bridge(struct check *c, struct dt_info *dti, struct node *node) ++{ ++ struct property *prop; ++ cell_t *cells; ++ ++ prop = get_property(node, "device_type"); ++ if (!prop || !streq(prop->val.val, "pci")) ++ return; ++ ++ node->bus = &pci_bus; ++ ++ if (!strprefixeq(node->name, node->basenamelen, "pci") && ++ !strprefixeq(node->name, node->basenamelen, "pcie")) ++ FAIL(c, dti, node, "node name is not \"pci\" or \"pcie\""); ++ ++ prop = get_property(node, "ranges"); ++ if (!prop) ++ FAIL(c, dti, node, "missing ranges for PCI bridge (or not a bridge)"); ++ ++ if (node_addr_cells(node) != 3) ++ FAIL(c, dti, node, "incorrect #address-cells for PCI bridge"); ++ if (node_size_cells(node) != 2) ++ FAIL(c, dti, node, "incorrect #size-cells for PCI bridge"); ++ ++ prop = get_property(node, "bus-range"); ++ if (!prop) ++ return; ++ ++ if (prop->val.len != (sizeof(cell_t) * 2)) { ++ FAIL_PROP(c, dti, node, prop, "value must be 2 cells"); ++ return; ++ } ++ cells = (cell_t *)prop->val.val; ++ if (fdt32_to_cpu(cells[0]) > fdt32_to_cpu(cells[1])) ++ FAIL_PROP(c, dti, node, prop, "1st cell must be less than or equal to 2nd cell"); ++ if (fdt32_to_cpu(cells[1]) > 0xff) ++ FAIL_PROP(c, dti, node, prop, "maximum bus number must be less than 256"); ++} ++WARNING(pci_bridge, check_pci_bridge, NULL, ++ &device_type_is_string, &addr_size_cells); ++ ++static void check_pci_device_bus_num(struct check *c, struct dt_info *dti, struct node *node) ++{ ++ struct property *prop; ++ unsigned int bus_num, min_bus, max_bus; ++ cell_t *cells; ++ ++ if (!node->parent || (node->parent->bus != &pci_bus)) ++ return; ++ ++ prop = get_property(node, "reg"); ++ if (!prop) ++ return; ++ ++ cells = (cell_t *)prop->val.val; ++ bus_num = (fdt32_to_cpu(cells[0]) & 0x00ff0000) >> 16; ++ ++ prop = get_property(node->parent, "bus-range"); ++ if (!prop) { ++ min_bus = max_bus = 0; ++ } else { ++ cells = (cell_t *)prop->val.val; ++ min_bus = fdt32_to_cpu(cells[0]); ++ max_bus = fdt32_to_cpu(cells[0]); ++ } ++ if ((bus_num < min_bus) || (bus_num > max_bus)) ++ FAIL_PROP(c, dti, node, prop, "PCI bus number %d out of range, expected (%d - %d)", ++ bus_num, min_bus, max_bus); ++} ++WARNING(pci_device_bus_num, check_pci_device_bus_num, NULL, ®_format, &pci_bridge); ++ ++static void check_pci_device_reg(struct check *c, struct dt_info *dti, struct node *node) ++{ ++ struct property *prop; ++ const char *unitname = get_unitname(node); ++ char unit_addr[5]; ++ unsigned int dev, func, reg; ++ cell_t *cells; ++ ++ if (!node->parent || (node->parent->bus != &pci_bus)) ++ return; ++ ++ prop = get_property(node, "reg"); ++ if (!prop) { ++ FAIL(c, dti, node, "missing PCI reg property"); ++ return; ++ } ++ ++ cells = (cell_t *)prop->val.val; ++ if (cells[1] || cells[2]) ++ FAIL_PROP(c, dti, node, prop, "PCI reg config space address cells 2 and 3 must be 0"); ++ ++ reg = fdt32_to_cpu(cells[0]); ++ dev = (reg & 0xf800) >> 11; ++ func = (reg & 0x700) >> 8; ++ ++ if (reg & 0xff000000) ++ FAIL_PROP(c, dti, node, prop, "PCI reg address is not configuration space"); ++ if (reg & 0x000000ff) ++ FAIL_PROP(c, dti, node, prop, "PCI reg config space address register number must be 0"); ++ ++ if (func == 0) { ++ snprintf(unit_addr, sizeof(unit_addr), "%x", dev); ++ if (streq(unitname, unit_addr)) ++ return; ++ } ++ ++ snprintf(unit_addr, sizeof(unit_addr), "%x,%x", dev, func); ++ if (streq(unitname, unit_addr)) ++ return; ++ ++ FAIL(c, dti, node, "PCI unit address format error, expected \"%s\"", ++ unit_addr); ++} ++WARNING(pci_device_reg, check_pci_device_reg, NULL, ®_format, &pci_bridge); ++ ++static const struct bus_type simple_bus = { ++ .name = "simple-bus", ++}; ++ ++static bool node_is_compatible(struct node *node, const char *compat) ++{ ++ struct property *prop; ++ const char *str, *end; ++ ++ prop = get_property(node, "compatible"); ++ if (!prop) ++ return false; ++ ++ for (str = prop->val.val, end = str + prop->val.len; str < end; ++ str += strnlen(str, end - str) + 1) { ++ if (strprefixeq(str, end - str, compat)) ++ return true; + } ++ return false; ++} ++ ++static void check_simple_bus_bridge(struct check *c, struct dt_info *dti, struct node *node) ++{ ++ if (node_is_compatible(node, "simple-bus")) ++ node->bus = &simple_bus; + } +-NODE_WARNING(ranges_format, NULL, &addr_size_cells); ++WARNING(simple_bus_bridge, check_simple_bus_bridge, NULL, &addr_size_cells); ++ ++static void check_simple_bus_reg(struct check *c, struct dt_info *dti, struct node *node) ++{ ++ struct property *prop; ++ const char *unitname = get_unitname(node); ++ char unit_addr[17]; ++ unsigned int size; ++ uint64_t reg = 0; ++ cell_t *cells = NULL; ++ ++ if (!node->parent || (node->parent->bus != &simple_bus)) ++ return; ++ ++ prop = get_property(node, "reg"); ++ if (prop) ++ cells = (cell_t *)prop->val.val; ++ else { ++ prop = get_property(node, "ranges"); ++ if (prop && prop->val.len) ++ /* skip of child address */ ++ cells = ((cell_t *)prop->val.val) + node_addr_cells(node); ++ } ++ ++ if (!cells) { ++ if (node->parent->parent && !(node->bus == &simple_bus)) ++ FAIL(c, dti, node, "missing or empty reg/ranges property"); ++ return; ++ } ++ ++ size = node_addr_cells(node->parent); ++ while (size--) ++ reg = (reg << 32) | fdt32_to_cpu(*(cells++)); ++ ++ snprintf(unit_addr, sizeof(unit_addr), "%"PRIx64, reg); ++ if (!streq(unitname, unit_addr)) ++ FAIL(c, dti, node, "simple-bus unit address format error, expected \"%s\"", ++ unit_addr); ++} ++WARNING(simple_bus_reg, check_simple_bus_reg, NULL, ®_format, &simple_bus_bridge); ++ ++static void check_unit_address_format(struct check *c, struct dt_info *dti, ++ struct node *node) ++{ ++ const char *unitname = get_unitname(node); ++ ++ if (node->parent && node->parent->bus) ++ return; ++ ++ if (!unitname[0]) ++ return; ++ ++ if (!strncmp(unitname, "0x", 2)) { ++ FAIL(c, dti, node, "unit name should not have leading \"0x\""); ++ /* skip over 0x for next test */ ++ unitname += 2; ++ } ++ if (unitname[0] == '0' && isxdigit(unitname[1])) ++ FAIL(c, dti, node, "unit name should not have leading 0s"); ++} ++WARNING(unit_address_format, check_unit_address_format, NULL, ++ &node_name_format, &pci_bridge, &simple_bus_bridge); + + /* + * Style checks + */ +-static void check_avoid_default_addr_size(struct check *c, struct node *dt, ++static void check_avoid_default_addr_size(struct check *c, struct dt_info *dti, + struct node *node) + { + struct property *reg, *ranges; +@@ -625,31 +985,377 @@ static void check_avoid_default_addr_size(struct check *c, struct node *dt, + return; + + if (node->parent->addr_cells == -1) +- FAIL(c, "Relying on default #address-cells value for %s", +- node->fullpath); ++ FAIL(c, dti, node, "Relying on default #address-cells value"); + + if (node->parent->size_cells == -1) +- FAIL(c, "Relying on default #size-cells value for %s", +- node->fullpath); ++ FAIL(c, dti, node, "Relying on default #size-cells value"); ++} ++WARNING(avoid_default_addr_size, check_avoid_default_addr_size, NULL, ++ &addr_size_cells); ++ ++static void check_avoid_unnecessary_addr_size(struct check *c, struct dt_info *dti, ++ struct node *node) ++{ ++ struct property *prop; ++ struct node *child; ++ bool has_reg = false; ++ ++ if (!node->parent || node->addr_cells < 0 || node->size_cells < 0) ++ return; ++ ++ if (get_property(node, "ranges") || !node->children) ++ return; ++ ++ for_each_child(node, child) { ++ prop = get_property(child, "reg"); ++ if (prop) ++ has_reg = true; ++ } ++ ++ if (!has_reg) ++ FAIL(c, dti, node, "unnecessary #address-cells/#size-cells without \"ranges\" or child \"reg\" property"); + } +-NODE_WARNING(avoid_default_addr_size, NULL, &addr_size_cells); ++WARNING(avoid_unnecessary_addr_size, check_avoid_unnecessary_addr_size, NULL, &avoid_default_addr_size); + + static void check_obsolete_chosen_interrupt_controller(struct check *c, +- struct node *dt) ++ struct dt_info *dti, ++ struct node *node) + { ++ struct node *dt = dti->dt; + struct node *chosen; + struct property *prop; + ++ if (node != dt) ++ return; ++ ++ + chosen = get_node_by_path(dt, "/chosen"); + if (!chosen) + return; + + prop = get_property(chosen, "interrupt-controller"); + if (prop) +- FAIL(c, "/chosen has obsolete \"interrupt-controller\" " +- "property"); ++ FAIL_PROP(c, dti, node, prop, ++ "/chosen has obsolete \"interrupt-controller\" property"); ++} ++WARNING(obsolete_chosen_interrupt_controller, ++ check_obsolete_chosen_interrupt_controller, NULL); ++ ++static void check_chosen_node_is_root(struct check *c, struct dt_info *dti, ++ struct node *node) ++{ ++ if (!streq(node->name, "chosen")) ++ return; ++ ++ if (node->parent != dti->dt) ++ FAIL(c, dti, node, "chosen node must be at root node"); + } +-TREE_WARNING(obsolete_chosen_interrupt_controller, NULL); ++WARNING(chosen_node_is_root, check_chosen_node_is_root, NULL); ++ ++static void check_chosen_node_bootargs(struct check *c, struct dt_info *dti, ++ struct node *node) ++{ ++ struct property *prop; ++ ++ if (!streq(node->name, "chosen")) ++ return; ++ ++ prop = get_property(node, "bootargs"); ++ if (!prop) ++ return; ++ ++ c->data = prop->name; ++ check_is_string(c, dti, node); ++} ++WARNING(chosen_node_bootargs, check_chosen_node_bootargs, NULL); ++ ++static void check_chosen_node_stdout_path(struct check *c, struct dt_info *dti, ++ struct node *node) ++{ ++ struct property *prop; ++ ++ if (!streq(node->name, "chosen")) ++ return; ++ ++ prop = get_property(node, "stdout-path"); ++ if (!prop) { ++ prop = get_property(node, "linux,stdout-path"); ++ if (!prop) ++ return; ++ FAIL_PROP(c, dti, node, prop, "Use 'stdout-path' instead"); ++ } ++ ++ c->data = prop->name; ++ check_is_string(c, dti, node); ++} ++WARNING(chosen_node_stdout_path, check_chosen_node_stdout_path, NULL); ++ ++struct provider { ++ const char *prop_name; ++ const char *cell_name; ++ bool optional; ++}; ++ ++static void check_property_phandle_args(struct check *c, ++ struct dt_info *dti, ++ struct node *node, ++ struct property *prop, ++ const struct provider *provider) ++{ ++ struct node *root = dti->dt; ++ int cell, cellsize = 0; ++ ++ if (prop->val.len % sizeof(cell_t)) { ++ FAIL_PROP(c, dti, node, prop, ++ "property size (%d) is invalid, expected multiple of %zu", ++ prop->val.len, sizeof(cell_t)); ++ return; ++ } ++ ++ for (cell = 0; cell < prop->val.len / sizeof(cell_t); cell += cellsize + 1) { ++ struct node *provider_node; ++ struct property *cellprop; ++ int phandle; ++ ++ phandle = propval_cell_n(prop, cell); ++ /* ++ * Some bindings use a cell value 0 or -1 to skip over optional ++ * entries when each index position has a specific definition. ++ */ ++ if (phandle == 0 || phandle == -1) { ++ /* Give up if this is an overlay with external references */ ++ if (dti->dtsflags & DTSF_PLUGIN) ++ break; ++ ++ cellsize = 0; ++ continue; ++ } ++ ++ /* If we have markers, verify the current cell is a phandle */ ++ if (prop->val.markers) { ++ struct marker *m = prop->val.markers; ++ for_each_marker_of_type(m, REF_PHANDLE) { ++ if (m->offset == (cell * sizeof(cell_t))) ++ break; ++ } ++ if (!m) ++ FAIL_PROP(c, dti, node, prop, ++ "cell %d is not a phandle reference", ++ cell); ++ } ++ ++ provider_node = get_node_by_phandle(root, phandle); ++ if (!provider_node) { ++ FAIL_PROP(c, dti, node, prop, ++ "Could not get phandle node for (cell %d)", ++ cell); ++ break; ++ } ++ ++ cellprop = get_property(provider_node, provider->cell_name); ++ if (cellprop) { ++ cellsize = propval_cell(cellprop); ++ } else if (provider->optional) { ++ cellsize = 0; ++ } else { ++ FAIL(c, dti, node, "Missing property '%s' in node %s or bad phandle (referred from %s[%d])", ++ provider->cell_name, ++ provider_node->fullpath, ++ prop->name, cell); ++ break; ++ } ++ ++ if (prop->val.len < ((cell + cellsize + 1) * sizeof(cell_t))) { ++ FAIL_PROP(c, dti, node, prop, ++ "property size (%d) too small for cell size %d", ++ prop->val.len, cellsize); ++ } ++ } ++} ++ ++static void check_provider_cells_property(struct check *c, ++ struct dt_info *dti, ++ struct node *node) ++{ ++ struct provider *provider = c->data; ++ struct property *prop; ++ ++ prop = get_property(node, provider->prop_name); ++ if (!prop) ++ return; ++ ++ check_property_phandle_args(c, dti, node, prop, provider); ++} ++#define WARNING_PROPERTY_PHANDLE_CELLS(nm, propname, cells_name, ...) \ ++ static struct provider nm##_provider = { (propname), (cells_name), __VA_ARGS__ }; \ ++ WARNING(nm##_property, check_provider_cells_property, &nm##_provider, &phandle_references); ++ ++WARNING_PROPERTY_PHANDLE_CELLS(clocks, "clocks", "#clock-cells"); ++WARNING_PROPERTY_PHANDLE_CELLS(cooling_device, "cooling-device", "#cooling-cells"); ++WARNING_PROPERTY_PHANDLE_CELLS(dmas, "dmas", "#dma-cells"); ++WARNING_PROPERTY_PHANDLE_CELLS(hwlocks, "hwlocks", "#hwlock-cells"); ++WARNING_PROPERTY_PHANDLE_CELLS(interrupts_extended, "interrupts-extended", "#interrupt-cells"); ++WARNING_PROPERTY_PHANDLE_CELLS(io_channels, "io-channels", "#io-channel-cells"); ++WARNING_PROPERTY_PHANDLE_CELLS(iommus, "iommus", "#iommu-cells"); ++WARNING_PROPERTY_PHANDLE_CELLS(mboxes, "mboxes", "#mbox-cells"); ++WARNING_PROPERTY_PHANDLE_CELLS(msi_parent, "msi-parent", "#msi-cells", true); ++WARNING_PROPERTY_PHANDLE_CELLS(mux_controls, "mux-controls", "#mux-control-cells"); ++WARNING_PROPERTY_PHANDLE_CELLS(phys, "phys", "#phy-cells"); ++WARNING_PROPERTY_PHANDLE_CELLS(power_domains, "power-domains", "#power-domain-cells"); ++WARNING_PROPERTY_PHANDLE_CELLS(pwms, "pwms", "#pwm-cells"); ++WARNING_PROPERTY_PHANDLE_CELLS(resets, "resets", "#reset-cells"); ++WARNING_PROPERTY_PHANDLE_CELLS(sound_dai, "sound-dai", "#sound-dai-cells"); ++WARNING_PROPERTY_PHANDLE_CELLS(thermal_sensors, "thermal-sensors", "#thermal-sensor-cells"); ++ ++static bool prop_is_gpio(struct property *prop) ++{ ++ char *str; ++ ++ /* ++ * *-gpios and *-gpio can appear in property names, ++ * so skip over any false matches (only one known ATM) ++ */ ++ if (strstr(prop->name, "nr-gpio")) ++ return false; ++ ++ str = strrchr(prop->name, '-'); ++ if (str) ++ str++; ++ else ++ str = prop->name; ++ if (!(streq(str, "gpios") || streq(str, "gpio"))) ++ return false; ++ ++ return true; ++} ++ ++static void check_gpios_property(struct check *c, ++ struct dt_info *dti, ++ struct node *node) ++{ ++ struct property *prop; ++ ++ /* Skip GPIO hog nodes which have 'gpios' property */ ++ if (get_property(node, "gpio-hog")) ++ return; ++ ++ for_each_property(node, prop) { ++ struct provider provider; ++ ++ if (!prop_is_gpio(prop)) ++ continue; ++ ++ provider.prop_name = prop->name; ++ provider.cell_name = "#gpio-cells"; ++ provider.optional = false; ++ check_property_phandle_args(c, dti, node, prop, &provider); ++ } ++ ++} ++WARNING(gpios_property, check_gpios_property, NULL, &phandle_references); ++ ++static void check_deprecated_gpio_property(struct check *c, ++ struct dt_info *dti, ++ struct node *node) ++{ ++ struct property *prop; ++ ++ for_each_property(node, prop) { ++ char *str; ++ ++ if (!prop_is_gpio(prop)) ++ continue; ++ ++ str = strstr(prop->name, "gpio"); ++ if (!streq(str, "gpio")) ++ continue; ++ ++ FAIL_PROP(c, dti, node, prop, ++ "'[*-]gpio' is deprecated, use '[*-]gpios' instead"); ++ } ++ ++} ++CHECK(deprecated_gpio_property, check_deprecated_gpio_property, NULL); ++ ++static bool node_is_interrupt_provider(struct node *node) ++{ ++ struct property *prop; ++ ++ prop = get_property(node, "interrupt-controller"); ++ if (prop) ++ return true; ++ ++ prop = get_property(node, "interrupt-map"); ++ if (prop) ++ return true; ++ ++ return false; ++} ++static void check_interrupts_property(struct check *c, ++ struct dt_info *dti, ++ struct node *node) ++{ ++ struct node *root = dti->dt; ++ struct node *irq_node = NULL, *parent = node; ++ struct property *irq_prop, *prop = NULL; ++ int irq_cells, phandle; ++ ++ irq_prop = get_property(node, "interrupts"); ++ if (!irq_prop) ++ return; ++ ++ if (irq_prop->val.len % sizeof(cell_t)) ++ FAIL_PROP(c, dti, node, irq_prop, "size (%d) is invalid, expected multiple of %zu", ++ irq_prop->val.len, sizeof(cell_t)); ++ ++ while (parent && !prop) { ++ if (parent != node && node_is_interrupt_provider(parent)) { ++ irq_node = parent; ++ break; ++ } ++ ++ prop = get_property(parent, "interrupt-parent"); ++ if (prop) { ++ phandle = propval_cell(prop); ++ /* Give up if this is an overlay with external references */ ++ if ((phandle == 0 || phandle == -1) && ++ (dti->dtsflags & DTSF_PLUGIN)) ++ return; ++ ++ irq_node = get_node_by_phandle(root, phandle); ++ if (!irq_node) { ++ FAIL_PROP(c, dti, parent, prop, "Bad phandle"); ++ return; ++ } ++ if (!node_is_interrupt_provider(irq_node)) ++ FAIL(c, dti, irq_node, ++ "Missing interrupt-controller or interrupt-map property"); ++ ++ break; ++ } ++ ++ parent = parent->parent; ++ } ++ ++ if (!irq_node) { ++ FAIL(c, dti, node, "Missing interrupt-parent"); ++ return; ++ } ++ ++ prop = get_property(irq_node, "#interrupt-cells"); ++ if (!prop) { ++ FAIL(c, dti, irq_node, "Missing #interrupt-cells in interrupt-parent"); ++ return; ++ } ++ ++ irq_cells = propval_cell(prop); ++ if (irq_prop->val.len % (irq_cells * sizeof(cell_t))) { ++ FAIL_PROP(c, dti, node, prop, ++ "size is (%d), expected multiple of %d", ++ irq_prop->val.len, (int)(irq_cells * sizeof(cell_t))); ++ } ++} ++WARNING(interrupts_property, check_interrupts_property, &phandle_references); + + static struct check *check_table[] = { + &duplicate_node_names, &duplicate_property_names, +@@ -663,11 +1369,52 @@ static struct check *check_table[] = { + + &address_cells_is_cell, &size_cells_is_cell, &interrupt_cells_is_cell, + &device_type_is_string, &model_is_string, &status_is_string, ++ &label_is_string, ++ ++ &compatible_is_string_list, &names_is_string_list, ++ ++ &property_name_chars_strict, ++ &node_name_chars_strict, + + &addr_size_cells, ®_format, &ranges_format, + ++ &unit_address_vs_reg, ++ &unit_address_format, ++ ++ &pci_bridge, ++ &pci_device_reg, ++ &pci_device_bus_num, ++ ++ &simple_bus_bridge, ++ &simple_bus_reg, ++ + &avoid_default_addr_size, ++ &avoid_unnecessary_addr_size, + &obsolete_chosen_interrupt_controller, ++ &chosen_node_is_root, &chosen_node_bootargs, &chosen_node_stdout_path, ++ ++ &clocks_property, ++ &cooling_device_property, ++ &dmas_property, ++ &hwlocks_property, ++ &interrupts_extended_property, ++ &io_channels_property, ++ &iommus_property, ++ &mboxes_property, ++ &msi_parent_property, ++ &mux_controls_property, ++ &phys_property, ++ &power_domains_property, ++ &pwms_property, ++ &resets_property, ++ &sound_dai_property, ++ &thermal_sensors_property, ++ ++ &deprecated_gpio_property, ++ &gpios_property, ++ &interrupts_property, ++ ++ &alias_paths, + + &always_fail, + }; +@@ -733,9 +1480,8 @@ void parse_checks_option(bool warn, bool error, const char *arg) + die("Unrecognized check name \"%s\"\n", name); + } + +-void process_checks(bool force, struct boot_info *bi) ++void process_checks(bool force, struct dt_info *dti) + { +- struct node *dt = bi->dt; + int i; + int error = 0; + +@@ -743,7 +1489,7 @@ void process_checks(bool force, struct boot_info *bi) + struct check *c = check_table[i]; + + if (c->warn || c->error) +- error = error || run_check(c, dt); ++ error = error || run_check(c, dti); + } + + if (error) { +diff --git a/scripts/dtc/data.c b/scripts/dtc/data.c +index 8cae23746..aa37a16c8 100644 +--- a/scripts/dtc/data.c ++++ b/scripts/dtc/data.c +@@ -171,9 +171,9 @@ struct data data_merge(struct data d1, struct data d2) + struct data data_append_integer(struct data d, uint64_t value, int bits) + { + uint8_t value_8; +- uint16_t value_16; +- uint32_t value_32; +- uint64_t value_64; ++ fdt16_t value_16; ++ fdt32_t value_32; ++ fdt64_t value_64; + + switch (bits) { + case 8: +@@ -197,14 +197,14 @@ struct data data_append_integer(struct data d, uint64_t value, int bits) + } + } + +-struct data data_append_re(struct data d, const struct fdt_reserve_entry *re) ++struct data data_append_re(struct data d, uint64_t address, uint64_t size) + { +- struct fdt_reserve_entry bere; ++ struct fdt_reserve_entry re; + +- bere.address = cpu_to_fdt64(re->address); +- bere.size = cpu_to_fdt64(re->size); ++ re.address = cpu_to_fdt64(address); ++ re.size = cpu_to_fdt64(size); + +- return data_append_data(d, &bere, sizeof(bere)); ++ return data_append_data(d, &re, sizeof(re)); + } + + struct data data_append_cell(struct data d, cell_t word) +diff --git a/scripts/dtc/dtc-lexer.l b/scripts/dtc/dtc-lexer.l +index 0ee1caf03..fd825ebba 100644 +--- a/scripts/dtc/dtc-lexer.l ++++ b/scripts/dtc/dtc-lexer.l +@@ -62,7 +62,8 @@ static int dts_version = 1; + + static void push_input_file(const char *filename); + static bool pop_input_file(void); +-static void lexical_error(const char *fmt, ...); ++static void PRINTF(1, 2) lexical_error(const char *fmt, ...); ++ + %} + + %% +@@ -73,24 +74,32 @@ static void lexical_error(const char *fmt, ...); + } + + <*>^"#"(line)?[ \t]+[0-9]+[ \t]+{STRING}([ \t]+[0-9]+)? { +- char *line, *tmp, *fn; ++ char *line, *fnstart, *fnend; ++ struct data fn; + /* skip text before line # */ + line = yytext; + while (!isdigit((unsigned char)*line)) + line++; +- /* skip digits in line # */ +- tmp = line; +- while (!isspace((unsigned char)*tmp)) +- tmp++; +- /* "NULL"-terminate line # */ +- *tmp = '\0'; +- /* start of filename */ +- fn = strchr(tmp + 1, '"') + 1; +- /* strip trailing " from filename */ +- tmp = strchr(fn, '"'); +- *tmp = 0; ++ ++ /* regexp ensures that first and list " ++ * in the whole yytext are those at ++ * beginning and end of the filename string */ ++ fnstart = memchr(yytext, '"', yyleng); ++ for (fnend = yytext + yyleng - 1; ++ *fnend != '"'; fnend--) ++ ; ++ assert(fnstart && fnend && (fnend > fnstart)); ++ ++ fn = data_copy_escape_string(fnstart + 1, ++ fnend - fnstart - 1); ++ ++ /* Don't allow nuls in filenames */ ++ if (memchr(fn.val, '\0', fn.len - 1)) ++ lexical_error("nul in line number directive"); ++ + /* -1 since #line is the number of the next line */ +- srcpos_set_line(xstrdup(fn), atoi(line) - 1); ++ srcpos_set_line(xstrdup(fn.val), atoi(line) - 1); ++ data_free(fn); + } + + <*><> { +@@ -113,6 +122,11 @@ static void lexical_error(const char *fmt, ...); + return DT_V1; + } + ++<*>"/plugin/" { ++ DPRINT("Keyword: /plugin/\n"); ++ return DT_PLUGIN; ++ } ++ + <*>"/memreserve/" { + DPRINT("Keyword: /memreserve/\n"); + BEGIN_DEFAULT(); +@@ -153,7 +167,10 @@ static void lexical_error(const char *fmt, ...); + errno = 0; + yylval.integer = strtoull(yytext, &e, 0); + +- assert(!(*e) || !e[strspn(e, "UL")]); ++ if (*e && e[strspn(e, "UL")]) { ++ lexical_error("Bad integer literal '%s'", ++ yytext); ++ } + + if (errno == ERANGE) + lexical_error("Integer literal '%s' out of range", +@@ -173,16 +190,16 @@ static void lexical_error(const char *fmt, ...); + if (d.len == 1) { + lexical_error("Empty character literal"); + yylval.integer = 0; +- return DT_CHAR_LITERAL; +- } +- +- yylval.integer = (unsigned char)d.val[0]; ++ } else { ++ yylval.integer = (unsigned char)d.val[0]; + +- if (d.len > 2) +- lexical_error("Character literal has %d" +- " characters instead of 1", +- d.len - 1); ++ if (d.len > 2) ++ lexical_error("Character literal has %d" ++ " characters instead of 1", ++ d.len - 1); ++ } + ++ data_free(d); + return DT_CHAR_LITERAL; + } + +diff --git a/scripts/dtc/dtc-lexer.lex.c_shipped b/scripts/dtc/dtc-lexer.lex.c_shipped +index 11cd78e72..f032b24b2 100644 +--- a/scripts/dtc/dtc-lexer.lex.c_shipped ++++ b/scripts/dtc/dtc-lexer.lex.c_shipped +@@ -1,6 +1,6 @@ +-#line 2 "dtc-lexer.lex.c" ++#line 2 "dtc-lexer.l.c" + +-#line 4 "dtc-lexer.lex.c" ++#line 4 "dtc-lexer.l.c" + + #define YY_INT_ALIGNED short int + +@@ -8,8 +8,8 @@ + + #define FLEX_SCANNER + #define YY_FLEX_MAJOR_VERSION 2 +-#define YY_FLEX_MINOR_VERSION 5 +-#define YY_FLEX_SUBMINOR_VERSION 39 ++#define YY_FLEX_MINOR_VERSION 6 ++#define YY_FLEX_SUBMINOR_VERSION 4 + #if YY_FLEX_SUBMINOR_VERSION > 0 + #define FLEX_BETA + #endif +@@ -84,60 +84,48 @@ typedef unsigned int flex_uint32_t; + #define UINT32_MAX (4294967295U) + #endif + ++#ifndef SIZE_MAX ++#define SIZE_MAX (~(size_t)0) ++#endif ++ + #endif /* ! C99 */ + + #endif /* ! FLEXINT_H */ + +-#ifdef __cplusplus +- +-/* The "const" storage-class-modifier is valid. */ +-#define YY_USE_CONST +- +-#else /* ! __cplusplus */ +- +-/* C99 requires __STDC__ to be defined as 1. */ +-#if defined (__STDC__) +- +-#define YY_USE_CONST ++/* begin standard C++ headers. */ + +-#endif /* defined (__STDC__) */ +-#endif /* ! __cplusplus */ +- +-#ifdef YY_USE_CONST ++/* TODO: this is always defined, so inline it */ + #define yyconst const ++ ++#if defined(__GNUC__) && __GNUC__ >= 3 ++#define yynoreturn __attribute__((__noreturn__)) + #else +-#define yyconst ++#define yynoreturn + #endif + + /* Returned upon end-of-file. */ + #define YY_NULL 0 + +-/* Promotes a possibly negative, possibly signed char to an unsigned +- * integer for use as an array index. If the signed char is negative, +- * we want to instead treat it as an 8-bit unsigned char, hence the +- * double cast. ++/* 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) ((unsigned int) (unsigned char) c) ++#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_NEW_FILE yyrestart( yyin ) + #define YY_END_OF_BUFFER_CHAR 0 + + /* Size of default input buffer. */ +@@ -167,14 +155,14 @@ typedef struct yy_buffer_state *YY_BUFFER_STATE; + typedef size_t yy_size_t; + #endif + +-extern yy_size_t yyleng; ++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 +- ++ + #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) + +@@ -191,7 +179,6 @@ extern FILE *yyin, *yyout; + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) +- + #define unput(c) yyunput( c, (yytext_ptr) ) + + #ifndef YY_STRUCT_YY_BUFFER_STATE +@@ -206,12 +193,12 @@ struct yy_buffer_state + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ +- yy_size_t yy_buf_size; ++ int yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ +- yy_size_t yy_n_chars; ++ 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 +@@ -234,7 +221,7 @@ struct yy_buffer_state + + 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. + */ +@@ -262,7 +249,7 @@ 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 = 0; /**< Stack as an array. */ ++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 +@@ -273,7 +260,6 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + #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. + */ +@@ -281,11 +267,11 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ + + /* yy_hold_char holds the character lost when yytext is formed. */ + static char yy_hold_char; +-static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ +-yy_size_t yyleng; ++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 = (char *) 0; ++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 */ + +@@ -294,87 +280,83 @@ static int yy_start = 0; /* start state number */ + */ + 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 ); ++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 ); + +-#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) ++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 (yyconst char *yy_str ); +-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); ++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 * ); ++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_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_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() 1 ++#define yywrap() (/*CONSTCOND*/1) + #define YY_SKIP_YYWRAP ++typedef flex_uint8_t YY_CHAR; + +-typedef unsigned char YY_CHAR; +- +-FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; ++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 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 yy_fatal_error (yyconst char msg[] ); ++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 = (size_t) (yy_cp - 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 30 +-#define YY_END_OF_BUFFER 31 ++#define YY_NUM_RULES 31 ++#define YY_END_OF_BUFFER 32 + /* This struct is not used in this scanner, + but its presence is necessary. */ + struct yy_trans_info +@@ -382,28 +364,29 @@ struct yy_trans_info + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +-static yyconst flex_int16_t yy_accept[159] = ++static const flex_int16_t yy_accept[166] = + { 0, +- 0, 0, 0, 0, 0, 0, 0, 0, 31, 29, +- 18, 18, 29, 29, 29, 29, 29, 29, 29, 29, +- 29, 29, 29, 29, 29, 29, 15, 16, 16, 29, +- 16, 10, 10, 18, 26, 0, 3, 0, 27, 12, +- 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, +- 21, 23, 25, 24, 22, 0, 9, 28, 0, 0, +- 0, 14, 14, 16, 16, 16, 10, 10, 10, 0, +- 12, 0, 11, 0, 0, 0, 20, 0, 0, 0, +- 0, 0, 0, 0, 0, 16, 10, 10, 10, 0, +- 13, 19, 0, 0, 0, 0, 0, 0, 0, 0, +- +- 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 16, 6, 0, 0, 0, 0, 0, 0, 2, +- 0, 0, 0, 0, 0, 0, 0, 0, 4, 17, +- 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, +- 5, 8, 0, 0, 0, 0, 7, 0 ++ 0, 0, 0, 0, 0, 0, 0, 0, 32, 30, ++ 19, 19, 30, 30, 30, 30, 30, 30, 30, 30, ++ 30, 30, 30, 30, 30, 30, 16, 17, 17, 30, ++ 17, 11, 11, 19, 27, 0, 3, 0, 28, 13, ++ 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, ++ 0, 22, 24, 26, 25, 23, 0, 10, 29, 0, ++ 0, 0, 15, 15, 17, 17, 17, 11, 11, 11, ++ 0, 13, 0, 12, 0, 0, 0, 21, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 17, 11, 11, ++ 11, 0, 14, 20, 0, 0, 0, 0, 0, 0, ++ ++ 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 17, 7, 0, 0, 0, ++ 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, ++ 0, 0, 0, 0, 4, 18, 0, 0, 5, 2, ++ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ++ 0, 0, 1, 0, 0, 0, 0, 6, 9, 0, ++ 0, 0, 0, 8, 0 + } ; + +-static yyconst flex_int32_t yy_ec[256] = ++static const YY_CHAR yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, +@@ -416,9 +399,9 @@ static yyconst flex_int32_t yy_ec[256] = + 22, 22, 22, 22, 24, 22, 22, 25, 22, 22, + 1, 26, 27, 1, 22, 1, 21, 28, 29, 30, + +- 31, 21, 22, 22, 32, 22, 22, 33, 34, 35, +- 36, 37, 22, 38, 39, 40, 41, 42, 22, 25, +- 43, 22, 44, 45, 46, 1, 1, 1, 1, 1, ++ 31, 21, 32, 22, 33, 22, 22, 34, 35, 36, ++ 37, 38, 22, 39, 40, 41, 42, 43, 22, 25, ++ 44, 22, 45, 46, 47, 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, +@@ -435,163 +418,165 @@ static yyconst flex_int32_t yy_ec[256] = + 1, 1, 1, 1, 1 + } ; + +-static yyconst flex_int32_t yy_meta[47] = ++static const YY_CHAR yy_meta[48] = + { 0, + 1, 1, 1, 1, 1, 1, 2, 3, 1, 2, + 2, 2, 4, 5, 5, 5, 6, 1, 1, 1, + 7, 8, 8, 8, 8, 1, 1, 7, 7, 7, + 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, +- 8, 8, 8, 3, 1, 4 ++ 8, 8, 8, 8, 3, 1, 4 + } ; + +-static yyconst flex_int16_t yy_base[173] = ++static const flex_int16_t yy_base[180] = + { 0, +- 0, 383, 34, 382, 65, 381, 37, 105, 387, 391, +- 54, 111, 367, 110, 109, 109, 112, 41, 366, 104, +- 367, 338, 124, 117, 0, 144, 391, 0, 121, 0, +- 135, 155, 140, 179, 391, 160, 391, 379, 391, 0, +- 368, 141, 391, 167, 370, 376, 346, 103, 342, 345, +- 391, 391, 391, 391, 391, 358, 391, 391, 175, 342, +- 338, 391, 355, 0, 185, 339, 184, 347, 346, 0, +- 0, 322, 175, 357, 175, 363, 352, 324, 330, 323, +- 332, 326, 201, 324, 329, 322, 391, 333, 181, 309, +- 391, 341, 340, 313, 320, 338, 178, 311, 146, 317, +- +- 314, 315, 335, 331, 303, 300, 309, 299, 308, 188, +- 336, 335, 391, 305, 320, 281, 283, 271, 203, 288, +- 281, 271, 266, 264, 245, 242, 208, 104, 391, 391, +- 244, 218, 204, 219, 206, 224, 201, 212, 204, 229, +- 215, 208, 207, 200, 219, 391, 233, 221, 200, 181, +- 391, 391, 149, 122, 86, 41, 391, 391, 245, 251, +- 259, 263, 267, 273, 280, 284, 292, 300, 304, 310, +- 318, 326 ++ 0, 393, 35, 392, 66, 391, 38, 107, 397, 401, ++ 55, 113, 377, 112, 111, 111, 114, 42, 376, 106, ++ 377, 347, 126, 120, 0, 147, 401, 0, 124, 0, ++ 137, 158, 170, 163, 401, 153, 401, 389, 401, 0, ++ 378, 120, 401, 131, 380, 386, 355, 139, 351, 355, ++ 351, 401, 401, 401, 401, 401, 367, 401, 401, 185, ++ 350, 346, 401, 364, 0, 185, 347, 189, 356, 355, ++ 0, 0, 330, 180, 366, 141, 372, 361, 332, 338, ++ 331, 341, 334, 326, 205, 331, 337, 329, 401, 341, ++ 167, 316, 401, 349, 348, 320, 328, 346, 180, 318, ++ ++ 324, 209, 324, 320, 322, 342, 338, 309, 306, 315, ++ 305, 315, 312, 192, 342, 341, 401, 293, 306, 282, ++ 268, 252, 255, 203, 285, 282, 272, 268, 252, 233, ++ 232, 239, 208, 107, 401, 401, 238, 211, 401, 211, ++ 212, 208, 228, 203, 215, 207, 233, 222, 212, 211, ++ 203, 227, 401, 237, 225, 204, 185, 401, 401, 149, ++ 128, 88, 42, 401, 401, 253, 259, 267, 271, 275, ++ 281, 288, 292, 300, 308, 312, 318, 326, 334 + } ; + +-static yyconst flex_int16_t yy_def[173] = ++static const flex_int16_t yy_def[180] = + { 0, +- 158, 1, 1, 3, 158, 5, 1, 1, 158, 158, +- 158, 158, 158, 159, 160, 161, 158, 158, 158, 158, +- 162, 158, 158, 158, 163, 162, 158, 164, 165, 164, +- 164, 158, 158, 158, 158, 159, 158, 159, 158, 166, +- 158, 161, 158, 161, 167, 168, 158, 158, 158, 158, +- 158, 158, 158, 158, 158, 162, 158, 158, 158, 158, +- 158, 158, 162, 164, 165, 164, 158, 158, 158, 169, +- 166, 170, 161, 167, 167, 168, 158, 158, 158, 158, +- 158, 158, 158, 158, 158, 164, 158, 158, 169, 170, +- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, +- +- 158, 164, 158, 158, 158, 158, 158, 158, 158, 171, +- 158, 164, 158, 158, 158, 158, 158, 158, 171, 158, +- 171, 158, 158, 158, 158, 158, 158, 158, 158, 158, +- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, +- 172, 158, 158, 158, 172, 158, 172, 158, 158, 158, +- 158, 158, 158, 158, 158, 158, 158, 0, 158, 158, +- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, +- 158, 158 ++ 165, 1, 1, 3, 165, 5, 1, 1, 165, 165, ++ 165, 165, 165, 166, 167, 168, 165, 165, 165, 165, ++ 169, 165, 165, 165, 170, 169, 165, 171, 172, 171, ++ 171, 165, 165, 165, 165, 166, 165, 166, 165, 173, ++ 165, 168, 165, 168, 174, 175, 165, 165, 165, 165, ++ 165, 165, 165, 165, 165, 165, 169, 165, 165, 165, ++ 165, 165, 165, 169, 171, 172, 171, 165, 165, 165, ++ 176, 173, 177, 168, 174, 174, 175, 165, 165, 165, ++ 165, 165, 165, 165, 165, 165, 165, 171, 165, 165, ++ 176, 177, 165, 165, 165, 165, 165, 165, 165, 165, ++ ++ 165, 165, 165, 165, 171, 165, 165, 165, 165, 165, ++ 165, 165, 165, 178, 165, 171, 165, 165, 165, 165, ++ 165, 165, 165, 178, 165, 178, 165, 165, 165, 165, ++ 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, ++ 165, 165, 165, 165, 165, 165, 165, 179, 165, 165, ++ 165, 179, 165, 179, 165, 165, 165, 165, 165, 165, ++ 165, 165, 165, 165, 0, 165, 165, 165, 165, 165, ++ 165, 165, 165, 165, 165, 165, 165, 165, 165 + } ; + +-static yyconst flex_int16_t yy_nxt[438] = ++static const flex_int16_t yy_nxt[449] = + { 0, + 10, 11, 12, 11, 13, 14, 10, 15, 16, 10, + 10, 10, 17, 10, 10, 10, 10, 18, 19, 20, + 21, 21, 21, 21, 21, 10, 10, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, +- 21, 21, 21, 10, 22, 10, 24, 25, 25, 25, +- 32, 33, 33, 157, 26, 34, 34, 34, 51, 52, +- 27, 26, 26, 26, 26, 10, 11, 12, 11, 13, +- 14, 28, 15, 16, 28, 28, 28, 24, 28, 28, +- 28, 10, 18, 19, 20, 29, 29, 29, 29, 29, +- 30, 10, 29, 29, 29, 29, 29, 29, 29, 29, +- +- 29, 29, 29, 29, 29, 29, 29, 29, 10, 22, +- 10, 23, 34, 34, 34, 37, 39, 43, 32, 33, +- 33, 45, 54, 55, 46, 59, 45, 64, 156, 46, +- 64, 64, 64, 79, 44, 38, 59, 57, 134, 47, +- 135, 48, 80, 49, 47, 50, 48, 99, 61, 43, +- 50, 110, 41, 67, 67, 67, 60, 63, 63, 63, +- 57, 155, 68, 69, 63, 37, 44, 66, 67, 67, +- 67, 63, 63, 63, 63, 73, 59, 68, 69, 70, +- 34, 34, 34, 43, 75, 38, 154, 92, 83, 83, +- 83, 64, 44, 120, 64, 64, 64, 67, 67, 67, +- +- 44, 57, 99, 68, 69, 107, 68, 69, 120, 127, +- 108, 153, 152, 121, 83, 83, 83, 133, 133, 133, +- 146, 133, 133, 133, 146, 140, 140, 140, 121, 141, +- 140, 140, 140, 151, 141, 158, 150, 149, 148, 144, +- 147, 143, 142, 139, 147, 36, 36, 36, 36, 36, +- 36, 36, 36, 40, 138, 137, 136, 40, 40, 42, +- 42, 42, 42, 42, 42, 42, 42, 56, 56, 56, +- 56, 62, 132, 62, 64, 131, 130, 64, 129, 64, +- 64, 65, 128, 158, 65, 65, 65, 65, 71, 127, +- 71, 71, 74, 74, 74, 74, 74, 74, 74, 74, +- +- 76, 76, 76, 76, 76, 76, 76, 76, 89, 126, +- 89, 90, 125, 90, 90, 124, 90, 90, 119, 119, +- 119, 119, 119, 119, 119, 119, 145, 145, 145, 145, +- 145, 145, 145, 145, 123, 122, 59, 59, 118, 117, +- 116, 115, 114, 113, 45, 112, 108, 111, 109, 106, +- 105, 104, 46, 103, 91, 87, 102, 101, 100, 98, +- 97, 96, 95, 94, 93, 77, 75, 91, 88, 87, +- 86, 57, 85, 84, 57, 82, 81, 78, 77, 75, +- 72, 158, 58, 57, 53, 35, 158, 31, 23, 23, +- 9, 158, 158, 158, 158, 158, 158, 158, 158, 158, +- +- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, +- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, +- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, +- 158, 158, 158, 158, 158, 158, 158 ++ 21, 21, 21, 21, 10, 22, 10, 24, 25, 25, ++ 25, 32, 33, 33, 164, 26, 34, 34, 34, 52, ++ 53, 27, 26, 26, 26, 26, 10, 11, 12, 11, ++ 13, 14, 28, 15, 16, 28, 28, 28, 24, 28, ++ 28, 28, 10, 18, 19, 20, 29, 29, 29, 29, ++ 29, 30, 10, 29, 29, 29, 29, 29, 29, 29, ++ ++ 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, ++ 10, 22, 10, 23, 34, 34, 34, 37, 39, 43, ++ 32, 33, 33, 45, 55, 56, 46, 60, 43, 45, ++ 65, 163, 46, 65, 65, 65, 44, 38, 60, 74, ++ 58, 47, 141, 48, 142, 44, 49, 47, 50, 48, ++ 76, 51, 62, 94, 50, 41, 44, 51, 37, 61, ++ 64, 64, 64, 58, 34, 34, 34, 64, 162, 80, ++ 67, 68, 68, 68, 64, 64, 64, 64, 38, 81, ++ 69, 70, 71, 68, 68, 68, 60, 161, 43, 69, ++ 70, 65, 69, 70, 65, 65, 65, 125, 85, 85, ++ ++ 85, 58, 68, 68, 68, 44, 102, 110, 125, 133, ++ 102, 69, 70, 111, 114, 160, 159, 126, 85, 85, ++ 85, 140, 140, 140, 140, 140, 140, 153, 126, 147, ++ 147, 147, 153, 148, 147, 147, 147, 158, 148, 165, ++ 157, 156, 155, 151, 150, 149, 146, 154, 145, 144, ++ 143, 139, 154, 36, 36, 36, 36, 36, 36, 36, ++ 36, 40, 138, 137, 136, 40, 40, 42, 42, 42, ++ 42, 42, 42, 42, 42, 57, 57, 57, 57, 63, ++ 135, 63, 65, 134, 165, 65, 133, 65, 65, 66, ++ 132, 131, 66, 66, 66, 66, 72, 130, 72, 72, ++ ++ 75, 75, 75, 75, 75, 75, 75, 75, 77, 77, ++ 77, 77, 77, 77, 77, 77, 91, 129, 91, 92, ++ 128, 92, 92, 127, 92, 92, 124, 124, 124, 124, ++ 124, 124, 124, 124, 152, 152, 152, 152, 152, 152, ++ 152, 152, 60, 60, 123, 122, 121, 120, 119, 118, ++ 117, 45, 116, 111, 115, 113, 112, 109, 108, 107, ++ 46, 106, 93, 89, 105, 104, 103, 101, 100, 99, ++ 98, 97, 96, 95, 78, 76, 93, 90, 89, 88, ++ 58, 87, 86, 58, 84, 83, 82, 79, 78, 76, ++ 73, 165, 59, 58, 54, 35, 165, 31, 23, 23, ++ ++ 9, 165, 165, 165, 165, 165, 165, 165, 165, 165, ++ 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, ++ 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, ++ 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, ++ 165, 165, 165, 165, 165, 165, 165, 165 + } ; + +-static yyconst flex_int16_t yy_chk[438] = ++static const flex_int16_t yy_chk[449] = + { 0, + 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, 3, 3, 3, 3, +- 7, 7, 7, 156, 3, 11, 11, 11, 18, 18, +- 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, ++ 1, 1, 1, 1, 1, 1, 1, 3, 3, 3, ++ 3, 7, 7, 7, 163, 3, 11, 11, 11, 18, ++ 18, 3, 3, 3, 3, 3, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + + 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, +- 5, 8, 12, 12, 12, 14, 15, 16, 8, 8, +- 8, 17, 20, 20, 17, 23, 24, 29, 155, 24, +- 29, 29, 29, 48, 16, 14, 31, 29, 128, 17, +- 128, 17, 48, 17, 24, 17, 24, 99, 24, 42, +- 24, 99, 15, 33, 33, 33, 23, 26, 26, 26, +- 26, 154, 33, 33, 26, 36, 42, 31, 32, 32, +- 32, 26, 26, 26, 26, 44, 59, 32, 32, 32, +- 34, 34, 34, 73, 75, 36, 153, 75, 59, 59, +- 59, 65, 44, 110, 65, 65, 65, 67, 67, 67, +- +- 73, 65, 83, 89, 89, 97, 67, 67, 119, 127, +- 97, 150, 149, 110, 83, 83, 83, 133, 133, 133, +- 141, 127, 127, 127, 145, 136, 136, 136, 119, 136, +- 140, 140, 140, 148, 140, 147, 144, 143, 142, 139, +- 141, 138, 137, 135, 145, 159, 159, 159, 159, 159, +- 159, 159, 159, 160, 134, 132, 131, 160, 160, 161, +- 161, 161, 161, 161, 161, 161, 161, 162, 162, 162, +- 162, 163, 126, 163, 164, 125, 124, 164, 123, 164, +- 164, 165, 122, 121, 165, 165, 165, 165, 166, 120, +- 166, 166, 167, 167, 167, 167, 167, 167, 167, 167, +- +- 168, 168, 168, 168, 168, 168, 168, 168, 169, 118, +- 169, 170, 117, 170, 170, 116, 170, 170, 171, 171, +- 171, 171, 171, 171, 171, 171, 172, 172, 172, 172, +- 172, 172, 172, 172, 115, 114, 112, 111, 109, 108, +- 107, 106, 105, 104, 103, 102, 101, 100, 98, 96, +- 95, 94, 93, 92, 90, 88, 86, 85, 84, 82, +- 81, 80, 79, 78, 77, 76, 74, 72, 69, 68, +- 66, 63, 61, 60, 56, 50, 49, 47, 46, 45, ++ 5, 5, 5, 8, 12, 12, 12, 14, 15, 16, ++ 8, 8, 8, 17, 20, 20, 17, 23, 42, 24, ++ 29, 162, 24, 29, 29, 29, 16, 14, 31, 44, ++ 29, 17, 134, 17, 134, 42, 17, 24, 17, 24, ++ 76, 17, 24, 76, 24, 15, 44, 24, 36, 23, ++ 26, 26, 26, 26, 34, 34, 34, 26, 161, 48, ++ 31, 32, 32, 32, 26, 26, 26, 26, 36, 48, ++ 32, 32, 32, 33, 33, 33, 60, 160, 74, 91, ++ 91, 66, 33, 33, 66, 66, 66, 114, 60, 60, ++ ++ 60, 66, 68, 68, 68, 74, 85, 99, 124, 133, ++ 102, 68, 68, 99, 102, 157, 156, 114, 85, 85, ++ 85, 133, 133, 133, 140, 140, 140, 148, 124, 143, ++ 143, 143, 152, 143, 147, 147, 147, 155, 147, 154, ++ 151, 150, 149, 146, 145, 144, 142, 148, 141, 138, ++ 137, 132, 152, 166, 166, 166, 166, 166, 166, 166, ++ 166, 167, 131, 130, 129, 167, 167, 168, 168, 168, ++ 168, 168, 168, 168, 168, 169, 169, 169, 169, 170, ++ 128, 170, 171, 127, 126, 171, 125, 171, 171, 172, ++ 123, 122, 172, 172, 172, 172, 173, 121, 173, 173, ++ ++ 174, 174, 174, 174, 174, 174, 174, 174, 175, 175, ++ 175, 175, 175, 175, 175, 175, 176, 120, 176, 177, ++ 119, 177, 177, 118, 177, 177, 178, 178, 178, 178, ++ 178, 178, 178, 178, 179, 179, 179, 179, 179, 179, ++ 179, 179, 116, 115, 113, 112, 111, 110, 109, 108, ++ 107, 106, 105, 104, 103, 101, 100, 98, 97, 96, ++ 95, 94, 92, 90, 88, 87, 86, 84, 83, 82, ++ 81, 80, 79, 78, 77, 75, 73, 70, 69, 67, ++ 64, 62, 61, 57, 51, 50, 49, 47, 46, 45, + 41, 38, 22, 21, 19, 13, 9, 6, 4, 2, +- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, + +- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, +- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, +- 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, +- 158, 158, 158, 158, 158, 158, 158 ++ 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, ++ 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, ++ 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, ++ 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, ++ 165, 165, 165, 165, 165, 165, 165, 165 + } ; + + static yy_state_type yy_last_accepting_state; +@@ -608,7 +593,7 @@ int yy_flex_debug = 0; + #define YY_MORE_ADJ 0 + #define YY_RESTORE_YY_MORE_OFFSET + char *yytext; +-#line 1 "dtc-lexer.l" ++#line 1 "" + /* + * (C) Copyright David Gibson , IBM Corporation. 2005. + * +@@ -632,7 +617,7 @@ char *yytext; + + + +-#line 37 "dtc-lexer.l" ++#line 37 "" + #include "dtc.h" + #include "srcpos.h" + #include "dtc-parser.tab.h" +@@ -661,8 +646,10 @@ static int dts_version = 1; + + static void push_input_file(const char *filename); + static bool pop_input_file(void); +-static void lexical_error(const char *fmt, ...); +-#line 666 "dtc-lexer.lex.c" ++static void PRINTF(1, 2) lexical_error(const char *fmt, ...); ++ ++#line 652 "dtc-lexer.l.c" ++#line 653 "dtc-lexer.l.c" + + #define INITIAL 0 + #define BYTESTRING 1 +@@ -681,36 +668,36 @@ static void lexical_error(const char *fmt, ...); + #define YY_EXTRA_TYPE void * + #endif + +-static int yy_init_globals (void ); ++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 yylex_destroy ( void ); + +-int yyget_debug (void ); ++int yyget_debug ( void ); + +-void yyset_debug (int debug_flag ); ++void yyset_debug ( int debug_flag ); + +-YY_EXTRA_TYPE yyget_extra (void ); ++YY_EXTRA_TYPE yyget_extra ( void ); + +-void yyset_extra (YY_EXTRA_TYPE user_defined ); ++void yyset_extra ( YY_EXTRA_TYPE user_defined ); + +-FILE *yyget_in (void ); ++FILE *yyget_in ( void ); + +-void yyset_in (FILE * in_str ); ++void yyset_in ( FILE * _in_str ); + +-FILE *yyget_out (void ); ++FILE *yyget_out ( void ); + +-void yyset_out (FILE * out_str ); ++void yyset_out ( FILE * _out_str ); + +-yy_size_t yyget_leng (void ); ++ int yyget_leng ( void ); + +-char *yyget_text (void ); ++char *yyget_text ( void ); + +-int yyget_lineno (void ); ++int yyget_lineno ( void ); + +-void yyset_lineno (int line_number ); ++void yyset_lineno ( int _line_number ); + + /* Macros after this point can all be overridden by user definitions in + * section 1. +@@ -718,26 +705,29 @@ void yyset_lineno (int line_number ); + + #ifndef YY_SKIP_YYWRAP + #ifdef __cplusplus +-extern "C" int yywrap (void ); ++extern "C" int yywrap ( void ); + #else +-extern int yywrap (void ); ++extern int yywrap ( void ); ++#endif + #endif ++ ++#ifndef YY_NO_UNPUT ++ + #endif + + #ifndef yytext_ptr +-static void yy_flex_strncpy (char *,yyconst char *,int ); ++static void yy_flex_strncpy ( char *, const char *, int ); + #endif + + #ifdef YY_NEED_STRLEN +-static int yy_flex_strlen (yyconst char * ); ++static int yy_flex_strlen ( const char * ); + #endif + + #ifndef YY_NO_INPUT +- + #ifdef __cplusplus +-static int yyinput (void ); ++static int yyinput ( void ); + #else +-static int input (void ); ++static int input ( void ); + #endif + + #endif +@@ -757,7 +747,7 @@ static int input (void ); + /* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +-#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) ++#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, +@@ -768,7 +758,7 @@ static int input (void ); + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ +- size_t n; \ ++ int n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ +@@ -781,7 +771,7 @@ static int input (void ); + else \ + { \ + errno=0; \ +- while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ ++ while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ +@@ -836,7 +826,7 @@ extern int yylex (void); + + /* Code executed at the end of each rule. */ + #ifndef YY_BREAK +-#define YY_BREAK break; ++#define YY_BREAK /*LINTED*/break; + #endif + + #define YY_RULE_SETUP \ +@@ -849,9 +839,9 @@ extern int yylex (void); + */ + YY_DECL + { +- register yy_state_type yy_current_state; +- register char *yy_cp, *yy_bp; +- register int yy_act; ++ yy_state_type yy_current_state; ++ char *yy_cp, *yy_bp; ++ int yy_act; + + if ( !(yy_init) ) + { +@@ -873,18 +863,18 @@ YY_DECL + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = +- yy_create_buffer(yyin,YY_BUF_SIZE ); ++ yy_create_buffer( yyin, YY_BUF_SIZE ); + } + +- yy_load_buffer_state( ); ++ yy_load_buffer_state( ); + } + + { +-#line 68 "dtc-lexer.l" ++#line 69 "" + +-#line 886 "dtc-lexer.lex.c" ++#line 876 "dtc-lexer.l.c" + +- while ( 1 ) /* loops until end-of-file is reached */ ++ while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + +@@ -901,7 +891,7 @@ YY_DECL + yy_match: + do + { +- register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; ++ YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; +@@ -910,13 +900,13 @@ yy_match: + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; +- if ( yy_current_state >= 159 ) +- yy_c = yy_meta[(unsigned int) yy_c]; ++ if ( yy_current_state >= 166 ) ++ yy_c = yy_meta[yy_c]; + } +- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++ yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + ++yy_cp; + } +- while ( yy_current_state != 158 ); ++ while ( yy_current_state != 165 ); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + +@@ -939,7 +929,7 @@ do_action: /* This label is used only to access EOF actions. */ + case 1: + /* rule 1 can match eol */ + YY_RULE_SETUP +-#line 69 "dtc-lexer.l" ++#line 70 "" + { + char *name = strchr(yytext, '\"') + 1; + yytext[yyleng-1] = '\0'; +@@ -949,33 +939,41 @@ YY_RULE_SETUP + case 2: + /* rule 2 can match eol */ + YY_RULE_SETUP +-#line 75 "dtc-lexer.l" ++#line 76 "" + { +- char *line, *tmp, *fn; ++ char *line, *fnstart, *fnend; ++ struct data fn; + /* skip text before line # */ + line = yytext; + while (!isdigit((unsigned char)*line)) + line++; +- /* skip digits in line # */ +- tmp = line; +- while (!isspace((unsigned char)*tmp)) +- tmp++; +- /* "NULL"-terminate line # */ +- *tmp = '\0'; +- /* start of filename */ +- fn = strchr(tmp + 1, '"') + 1; +- /* strip trailing " from filename */ +- tmp = strchr(fn, '"'); +- *tmp = 0; ++ ++ /* regexp ensures that first and list " ++ * in the whole yytext are those at ++ * beginning and end of the filename string */ ++ fnstart = memchr(yytext, '"', yyleng); ++ for (fnend = yytext + yyleng - 1; ++ *fnend != '"'; fnend--) ++ ; ++ assert(fnstart && fnend && (fnend > fnstart)); ++ ++ fn = data_copy_escape_string(fnstart + 1, ++ fnend - fnstart - 1); ++ ++ /* Don't allow nuls in filenames */ ++ if (memchr(fn.val, '\0', fn.len - 1)) ++ lexical_error("nul in line number directive"); ++ + /* -1 since #line is the number of the next line */ +- srcpos_set_line(xstrdup(fn), atoi(line) - 1); ++ srcpos_set_line(xstrdup(fn.val), atoi(line) - 1); ++ data_free(fn); + } + YY_BREAK + case YY_STATE_EOF(INITIAL): + case YY_STATE_EOF(BYTESTRING): + case YY_STATE_EOF(PROPNODENAME): + case YY_STATE_EOF(V1): +-#line 96 "dtc-lexer.l" ++#line 105 "" + { + if (!pop_input_file()) { + yyterminate(); +@@ -985,7 +983,7 @@ case YY_STATE_EOF(V1): + case 3: + /* rule 3 can match eol */ + YY_RULE_SETUP +-#line 102 "dtc-lexer.l" ++#line 111 "" + { + DPRINT("String: %s\n", yytext); + yylval.data = data_copy_escape_string(yytext+1, +@@ -995,7 +993,7 @@ YY_RULE_SETUP + YY_BREAK + case 4: + YY_RULE_SETUP +-#line 109 "dtc-lexer.l" ++#line 118 "" + { + DPRINT("Keyword: /dts-v1/\n"); + dts_version = 1; +@@ -1005,25 +1003,33 @@ YY_RULE_SETUP + YY_BREAK + case 5: + YY_RULE_SETUP +-#line 116 "dtc-lexer.l" ++#line 125 "" ++{ ++ DPRINT("Keyword: /plugin/\n"); ++ return DT_PLUGIN; ++ } ++ YY_BREAK ++case 6: ++YY_RULE_SETUP ++#line 130 "" + { + DPRINT("Keyword: /memreserve/\n"); + BEGIN_DEFAULT(); + return DT_MEMRESERVE; + } + YY_BREAK +-case 6: ++case 7: + YY_RULE_SETUP +-#line 122 "dtc-lexer.l" ++#line 136 "" + { + DPRINT("Keyword: /bits/\n"); + BEGIN_DEFAULT(); + return DT_BITS; + } + YY_BREAK +-case 7: ++case 8: + YY_RULE_SETUP +-#line 128 "dtc-lexer.l" ++#line 142 "" + { + DPRINT("Keyword: /delete-property/\n"); + DPRINT("\n"); +@@ -1031,9 +1037,9 @@ YY_RULE_SETUP + return DT_DEL_PROP; + } + YY_BREAK +-case 8: ++case 9: + YY_RULE_SETUP +-#line 135 "dtc-lexer.l" ++#line 149 "" + { + DPRINT("Keyword: /delete-node/\n"); + DPRINT("\n"); +@@ -1041,9 +1047,9 @@ YY_RULE_SETUP + return DT_DEL_NODE; + } + YY_BREAK +-case 9: ++case 10: + YY_RULE_SETUP +-#line 142 "dtc-lexer.l" ++#line 156 "" + { + DPRINT("Label: %s\n", yytext); + yylval.labelref = xstrdup(yytext); +@@ -1051,9 +1057,9 @@ YY_RULE_SETUP + return DT_LABEL; + } + YY_BREAK +-case 10: ++case 11: + YY_RULE_SETUP +-#line 149 "dtc-lexer.l" ++#line 163 "" + { + char *e; + DPRINT("Integer Literal: '%s'\n", yytext); +@@ -1061,7 +1067,10 @@ YY_RULE_SETUP + errno = 0; + yylval.integer = strtoull(yytext, &e, 0); + +- assert(!(*e) || !e[strspn(e, "UL")]); ++ if (*e && e[strspn(e, "UL")]) { ++ lexical_error("Bad integer literal '%s'", ++ yytext); ++ } + + if (errno == ERANGE) + lexical_error("Integer literal '%s' out of range", +@@ -1073,10 +1082,10 @@ YY_RULE_SETUP + return DT_LITERAL; + } + YY_BREAK +-case 11: +-/* rule 11 can match eol */ ++case 12: ++/* rule 12 can match eol */ + YY_RULE_SETUP +-#line 168 "dtc-lexer.l" ++#line 185 "" + { + struct data d; + DPRINT("Character literal: %s\n", yytext); +@@ -1085,31 +1094,31 @@ YY_RULE_SETUP + if (d.len == 1) { + lexical_error("Empty character literal"); + yylval.integer = 0; +- return DT_CHAR_LITERAL; +- } ++ } else { ++ yylval.integer = (unsigned char)d.val[0]; + +- yylval.integer = (unsigned char)d.val[0]; +- +- if (d.len > 2) +- lexical_error("Character literal has %d" +- " characters instead of 1", +- d.len - 1); ++ if (d.len > 2) ++ lexical_error("Character literal has %d" ++ " characters instead of 1", ++ d.len - 1); ++ } + ++ data_free(d); + return DT_CHAR_LITERAL; + } + YY_BREAK +-case 12: ++case 13: + YY_RULE_SETUP +-#line 189 "dtc-lexer.l" ++#line 206 "" + { /* label reference */ + DPRINT("Ref: %s\n", yytext+1); + yylval.labelref = xstrdup(yytext+1); + return DT_REF; + } + YY_BREAK +-case 13: ++case 14: + YY_RULE_SETUP +-#line 195 "dtc-lexer.l" ++#line 212 "" + { /* new-style path reference */ + yytext[yyleng-1] = '\0'; + DPRINT("Ref: %s\n", yytext+2); +@@ -1117,27 +1126,27 @@ YY_RULE_SETUP + return DT_REF; + } + YY_BREAK +-case 14: ++case 15: + YY_RULE_SETUP +-#line 202 "dtc-lexer.l" ++#line 219 "" + { + yylval.byte = strtol(yytext, NULL, 16); + DPRINT("Byte: %02x\n", (int)yylval.byte); + return DT_BYTE; + } + YY_BREAK +-case 15: ++case 16: + YY_RULE_SETUP +-#line 208 "dtc-lexer.l" ++#line 225 "" + { + DPRINT("/BYTESTRING\n"); + BEGIN_DEFAULT(); + return ']'; + } + YY_BREAK +-case 16: ++case 17: + YY_RULE_SETUP +-#line 214 "dtc-lexer.l" ++#line 231 "" + { + DPRINT("PropNodeName: %s\n", yytext); + yylval.propnodename = xstrdup((yytext[0] == '\\') ? +@@ -1146,75 +1155,75 @@ YY_RULE_SETUP + return DT_PROPNODENAME; + } + YY_BREAK +-case 17: ++case 18: + YY_RULE_SETUP +-#line 222 "dtc-lexer.l" ++#line 239 "" + { + DPRINT("Binary Include\n"); + return DT_INCBIN; + } + YY_BREAK +-case 18: +-/* rule 18 can match eol */ +-YY_RULE_SETUP +-#line 227 "dtc-lexer.l" +-/* eat whitespace */ +- YY_BREAK + case 19: + /* rule 19 can match eol */ + YY_RULE_SETUP +-#line 228 "dtc-lexer.l" +-/* eat C-style comments */ ++#line 244 "" ++/* eat whitespace */ + YY_BREAK + case 20: + /* rule 20 can match eol */ + YY_RULE_SETUP +-#line 229 "dtc-lexer.l" +-/* eat C++-style comments */ ++#line 245 "" ++/* eat C-style comments */ + YY_BREAK + case 21: ++/* rule 21 can match eol */ + YY_RULE_SETUP +-#line 231 "dtc-lexer.l" +-{ return DT_LSHIFT; }; ++#line 246 "" ++/* eat C++-style comments */ + YY_BREAK + case 22: + YY_RULE_SETUP +-#line 232 "dtc-lexer.l" +-{ return DT_RSHIFT; }; ++#line 248 "" ++{ return DT_LSHIFT; }; + YY_BREAK + case 23: + YY_RULE_SETUP +-#line 233 "dtc-lexer.l" +-{ return DT_LE; }; ++#line 249 "" ++{ return DT_RSHIFT; }; + YY_BREAK + case 24: + YY_RULE_SETUP +-#line 234 "dtc-lexer.l" +-{ return DT_GE; }; ++#line 250 "" ++{ return DT_LE; }; + YY_BREAK + case 25: + YY_RULE_SETUP +-#line 235 "dtc-lexer.l" +-{ return DT_EQ; }; ++#line 251 "" ++{ return DT_GE; }; + YY_BREAK + case 26: + YY_RULE_SETUP +-#line 236 "dtc-lexer.l" +-{ return DT_NE; }; ++#line 252 "" ++{ return DT_EQ; }; + YY_BREAK + case 27: + YY_RULE_SETUP +-#line 237 "dtc-lexer.l" +-{ return DT_AND; }; ++#line 253 "" ++{ return DT_NE; }; + YY_BREAK + case 28: + YY_RULE_SETUP +-#line 238 "dtc-lexer.l" +-{ return DT_OR; }; ++#line 254 "" ++{ return DT_AND; }; + YY_BREAK + case 29: + YY_RULE_SETUP +-#line 240 "dtc-lexer.l" ++#line 255 "" ++{ return DT_OR; }; ++ YY_BREAK ++case 30: ++YY_RULE_SETUP ++#line 257 "" + { + DPRINT("Char: %c (\\x%02x)\n", yytext[0], + (unsigned)yytext[0]); +@@ -1230,12 +1239,12 @@ YY_RULE_SETUP + return yytext[0]; + } + YY_BREAK +-case 30: ++case 31: + YY_RULE_SETUP +-#line 255 "dtc-lexer.l" ++#line 272 "" + ECHO; + YY_BREAK +-#line 1239 "dtc-lexer.lex.c" ++#line 1248 "dtc-lexer.l.c" + + case YY_END_OF_BUFFER: + { +@@ -1312,7 +1321,7 @@ ECHO; + { + (yy_did_buffer_switch_on_eof) = 0; + +- if ( yywrap( ) ) ++ if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up +@@ -1377,9 +1386,9 @@ ECHO; + */ + static int yy_get_next_buffer (void) + { +- register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; +- register char *source = (yytext_ptr); +- register int number_to_move, i; ++ 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] ) +@@ -1408,7 +1417,7 @@ static int yy_get_next_buffer (void) + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ +- number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; ++ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); +@@ -1421,7 +1430,7 @@ static int yy_get_next_buffer (void) + + else + { +- yy_size_t num_to_read = ++ int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) +@@ -1435,7 +1444,7 @@ static int yy_get_next_buffer (void) + + if ( b->yy_is_our_buffer ) + { +- yy_size_t new_size = b->yy_buf_size * 2; ++ int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; +@@ -1444,11 +1453,12 @@ static int yy_get_next_buffer (void) + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ +- yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); ++ 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 = 0; ++ b->yy_ch_buf = NULL; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( +@@ -1476,7 +1486,7 @@ static int yy_get_next_buffer (void) + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; +- yyrestart(yyin ); ++ yyrestart( yyin ); + } + + else +@@ -1490,12 +1500,15 @@ static int yy_get_next_buffer (void) + else + ret_val = EOB_ACT_CONTINUE_SCAN; + +- if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { ++ 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. */ +- yy_size_t 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,new_size ); ++ 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; +@@ -1511,15 +1524,15 @@ static int yy_get_next_buffer (void) + + static yy_state_type yy_get_previous_state (void) + { +- register yy_state_type yy_current_state; +- register char *yy_cp; ++ yy_state_type yy_current_state; ++ char *yy_cp; + + yy_current_state = (yy_start); + yy_current_state += YY_AT_BOL(); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { +- register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); ++ YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; +@@ -1528,10 +1541,10 @@ static int yy_get_next_buffer (void) + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; +- if ( yy_current_state >= 159 ) +- yy_c = yy_meta[(unsigned int) yy_c]; ++ if ( yy_current_state >= 166 ) ++ yy_c = yy_meta[yy_c]; + } +- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++ yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + } + + return yy_current_state; +@@ -1544,10 +1557,10 @@ static int yy_get_next_buffer (void) + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) + { +- register int yy_is_jam; +- register char *yy_cp = (yy_c_buf_p); ++ int yy_is_jam; ++ char *yy_cp = (yy_c_buf_p); + +- register YY_CHAR yy_c = 1; ++ YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; +@@ -1556,15 +1569,19 @@ static int yy_get_next_buffer (void) + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; +- if ( yy_current_state >= 159 ) +- yy_c = yy_meta[(unsigned int) yy_c]; ++ if ( yy_current_state >= 166 ) ++ yy_c = yy_meta[yy_c]; + } +- yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; +- yy_is_jam = (yy_current_state == 158); ++ yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; ++ yy_is_jam = (yy_current_state == 165); + + return yy_is_jam ? 0 : yy_current_state; + } + ++#ifndef YY_NO_UNPUT ++ ++#endif ++ + #ifndef YY_NO_INPUT + #ifdef __cplusplus + static int yyinput (void) +@@ -1589,7 +1606,7 @@ static int yy_get_next_buffer (void) + + else + { /* need more input */ +- yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); ++ int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) +@@ -1606,14 +1623,14 @@ static int yy_get_next_buffer (void) + */ + + /* Reset buffer status. */ +- yyrestart(yyin ); ++ yyrestart( yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { +- if ( yywrap( ) ) +- return EOF; ++ if ( yywrap( ) ) ++ return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +@@ -1652,11 +1669,11 @@ static int yy_get_next_buffer (void) + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = +- yy_create_buffer(yyin,YY_BUF_SIZE ); ++ yy_create_buffer( yyin, YY_BUF_SIZE ); + } + +- yy_init_buffer(YY_CURRENT_BUFFER,input_file ); +- yy_load_buffer_state( ); ++ yy_init_buffer( YY_CURRENT_BUFFER, input_file ); ++ yy_load_buffer_state( ); + } + + /** Switch to a different input buffer. +@@ -1684,7 +1701,7 @@ static int yy_get_next_buffer (void) + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; +- yy_load_buffer_state( ); ++ yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag +@@ -1712,7 +1729,7 @@ static void yy_load_buffer_state (void) + { + YY_BUFFER_STATE b; + +- b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); ++ b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + +@@ -1721,13 +1738,13 @@ static void yy_load_buffer_state (void) + /* 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(b->yy_buf_size + 2 ); ++ 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 ); ++ yy_init_buffer( b, file ); + + return b; + } +@@ -1746,9 +1763,9 @@ static void yy_load_buffer_state (void) + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) +- yyfree((void *) b->yy_ch_buf ); ++ yyfree( (void *) b->yy_ch_buf ); + +- yyfree((void *) b ); ++ yyfree( (void *) b ); + } + + /* Initializes or reinitializes a buffer. +@@ -1760,7 +1777,7 @@ static void yy_load_buffer_state (void) + { + int oerrno = errno; + +- yy_flush_buffer(b ); ++ yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; +@@ -1803,7 +1820,7 @@ static void yy_load_buffer_state (void) + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) +- yy_load_buffer_state( ); ++ yy_load_buffer_state( ); + } + + /** Pushes the new state onto the stack. The new state becomes +@@ -1834,7 +1851,7 @@ void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ +- yy_load_buffer_state( ); ++ yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } + +@@ -1853,7 +1870,7 @@ void yypop_buffer_state (void) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { +- yy_load_buffer_state( ); ++ yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } + } +@@ -1871,15 +1888,15 @@ static void yyensure_buffer_stack (void) + * 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; ++ 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; +@@ -1888,7 +1905,7 @@ static void yyensure_buffer_stack (void) + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ +- int grow_size = 8 /* arbitrary grow size */; ++ 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 +@@ -1908,7 +1925,7 @@ static void yyensure_buffer_stack (void) + * @param base the character buffer + * @param size the size in bytes of the character buffer + * +- * @return the newly allocated buffer state object. ++ * @return the newly allocated buffer state object. + */ + YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) + { +@@ -1918,23 +1935,23 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) + 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 0; ++ return NULL; + +- b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); ++ 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 = size - 2; /* "- 2" to take care of EOB's */ ++ 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 = 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 ); ++ yy_switch_to_buffer( b ); + + return b; + } +@@ -1947,10 +1964,10 @@ YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +-YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) ++YY_BUFFER_STATE yy_scan_string (const char * yystr ) + { + +- return yy_scan_bytes(yystr,strlen(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 +@@ -1960,16 +1977,16 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) + * + * @return the newly allocated buffer state object. + */ +-YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) ++YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) + { + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; +- yy_size_t i; ++ int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ +- n = _yybytes_len + 2; +- buf = (char *) yyalloc(n ); ++ n = (yy_size_t) (_yybytes_len + 2); ++ buf = (char *) yyalloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + +@@ -1978,7 +1995,7 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + +- b = yy_scan_buffer(buf,n ); ++ b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + +@@ -1994,9 +2011,9 @@ YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len + #define YY_EXIT_FAILURE 2 + #endif + +-static void yy_fatal_error (yyconst char* msg ) ++static void yynoreturn yy_fatal_error (const char* msg ) + { +- (void) fprintf( stderr, "%s\n", msg ); ++ fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); + } + +@@ -2024,7 +2041,7 @@ static void yy_fatal_error (yyconst char* msg ) + */ + int yyget_lineno (void) + { +- ++ + return yylineno; + } + +@@ -2047,7 +2064,7 @@ FILE *yyget_out (void) + /** Get the length of the current token. + * + */ +-yy_size_t yyget_leng (void) ++int yyget_leng (void) + { + return yyleng; + } +@@ -2062,29 +2079,29 @@ char *yyget_text (void) + } + + /** Set the current line number. +- * @param line_number ++ * @param _line_number line number + * + */ +-void yyset_lineno (int line_number ) ++void yyset_lineno (int _line_number ) + { + +- yylineno = line_number; ++ yylineno = _line_number; + } + + /** Set the input stream. This does not discard the current + * input buffer. +- * @param in_str A readable stream. ++ * @param _in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +-void yyset_in (FILE * in_str ) ++void yyset_in (FILE * _in_str ) + { +- yyin = in_str ; ++ yyin = _in_str ; + } + +-void yyset_out (FILE * out_str ) ++void yyset_out (FILE * _out_str ) + { +- yyout = out_str ; ++ yyout = _out_str ; + } + + int yyget_debug (void) +@@ -2092,9 +2109,9 @@ int yyget_debug (void) + return yy_flex_debug; + } + +-void yyset_debug (int bdebug ) ++void yyset_debug (int _bdebug ) + { +- yy_flex_debug = bdebug ; ++ yy_flex_debug = _bdebug ; + } + + static int yy_init_globals (void) +@@ -2103,10 +2120,10 @@ static int yy_init_globals (void) + * This function is called from yylex_destroy(), so don't allocate here. + */ + +- (yy_buffer_stack) = 0; ++ (yy_buffer_stack) = NULL; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; +- (yy_c_buf_p) = (char *) 0; ++ (yy_c_buf_p) = NULL; + (yy_init) = 0; + (yy_start) = 0; + +@@ -2115,8 +2132,8 @@ static int yy_init_globals (void) + yyin = stdin; + yyout = stdout; + #else +- yyin = (FILE *) 0; +- yyout = (FILE *) 0; ++ yyin = NULL; ++ yyout = NULL; + #endif + + /* For future reference: Set errno on error, since we are called by +@@ -2131,7 +2148,7 @@ int yylex_destroy (void) + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ +- yy_delete_buffer(YY_CURRENT_BUFFER ); ++ yy_delete_buffer( YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } +@@ -2152,18 +2169,19 @@ int yylex_destroy (void) + */ + + #ifndef yytext_ptr +-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) ++static void yy_flex_strncpy (char* s1, const char * s2, int n ) + { +- register int i; ++ ++ int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; + } + #endif + + #ifdef YY_NEED_STRLEN +-static int yy_flex_strlen (yyconst char * s ) ++static int yy_flex_strlen (const char * s ) + { +- register int n; ++ int n; + for ( n = 0; s[n]; ++n ) + ; + +@@ -2173,11 +2191,12 @@ static int yy_flex_strlen (yyconst char * s ) + + void *yyalloc (yy_size_t size ) + { +- return (void *) malloc( 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 +@@ -2185,18 +2204,17 @@ void *yyrealloc (void * ptr, yy_size_t size ) + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ +- return (void *) realloc( (char *) ptr, size ); ++ return realloc(ptr, size); + } + + void yyfree (void * ptr ) + { +- free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ ++ free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ + } + + #define YYTABLES_NAME "yytables" + +-#line 254 "dtc-lexer.l" +- ++#line 272 "" + + + static void push_input_file(const char *filename) +@@ -2207,7 +2225,7 @@ static void push_input_file(const char *filename) + + yyin = current_srcfile->f; + +- yypush_buffer_state(yy_create_buffer(yyin,YY_BUF_SIZE)); ++ yypush_buffer_state(yy_create_buffer(yyin, YY_BUF_SIZE)); + } + + +diff --git a/scripts/dtc/dtc-parser.tab.c_shipped b/scripts/dtc/dtc-parser.tab.c_shipped +index 27fac4b9c..06a6e9414 100644 +--- a/scripts/dtc/dtc-parser.tab.c_shipped ++++ b/scripts/dtc/dtc-parser.tab.c_shipped +@@ -1,8 +1,8 @@ +-/* A Bison parser, made by GNU Bison 3.0.2. */ ++/* A Bison parser, made by GNU Bison 3.0.4. */ + + /* Bison implementation for Yacc-like parsers in C + +- Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. ++ 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 +@@ -44,7 +44,7 @@ + #define YYBISON 1 + + /* Bison version. */ +-#define YYBISON_VERSION "3.0.2" ++#define YYBISON_VERSION "3.0.4" + + /* Skeleton name. */ + #define YYSKELETON_NAME "yacc.c" +@@ -65,6 +65,7 @@ + #line 20 "dtc-parser.y" /* yacc.c:339 */ + + #include ++#include + + #include "dtc.h" + #include "srcpos.h" +@@ -77,10 +78,10 @@ extern void yyerror(char const *s); + treesource_error = true; \ + } while (0) + +-extern struct boot_info *the_boot_info; ++extern struct dt_info *parser_output; + extern bool treesource_error; + +-#line 84 "dtc-parser.tab.c" /* yacc.c:339 */ ++#line 85 "dtc-parser.tab.c" /* yacc.c:339 */ + + # ifndef YY_NULLPTR + # if defined __cplusplus && 201103L <= __cplusplus +@@ -116,35 +117,36 @@ extern int yydebug; + enum yytokentype + { + DT_V1 = 258, +- DT_MEMRESERVE = 259, +- DT_LSHIFT = 260, +- DT_RSHIFT = 261, +- DT_LE = 262, +- DT_GE = 263, +- DT_EQ = 264, +- DT_NE = 265, +- DT_AND = 266, +- DT_OR = 267, +- DT_BITS = 268, +- DT_DEL_PROP = 269, +- DT_DEL_NODE = 270, +- DT_PROPNODENAME = 271, +- DT_LITERAL = 272, +- DT_CHAR_LITERAL = 273, +- DT_BYTE = 274, +- DT_STRING = 275, +- DT_LABEL = 276, +- DT_REF = 277, +- DT_INCBIN = 278 ++ DT_PLUGIN = 259, ++ DT_MEMRESERVE = 260, ++ DT_LSHIFT = 261, ++ DT_RSHIFT = 262, ++ DT_LE = 263, ++ DT_GE = 264, ++ DT_EQ = 265, ++ DT_NE = 266, ++ DT_AND = 267, ++ DT_OR = 268, ++ DT_BITS = 269, ++ DT_DEL_PROP = 270, ++ DT_DEL_NODE = 271, ++ DT_PROPNODENAME = 272, ++ DT_LITERAL = 273, ++ DT_CHAR_LITERAL = 274, ++ DT_BYTE = 275, ++ DT_STRING = 276, ++ DT_LABEL = 277, ++ DT_REF = 278, ++ DT_INCBIN = 279 + }; + #endif + + /* Value type. */ + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +-typedef union YYSTYPE YYSTYPE; ++ + union YYSTYPE + { +-#line 38 "dtc-parser.y" /* yacc.c:355 */ ++#line 39 "dtc-parser.y" /* yacc.c:355 */ + + char *propnodename; + char *labelref; +@@ -162,9 +164,12 @@ union YYSTYPE + struct node *nodelist; + struct reserve_info *re; + uint64_t integer; ++ unsigned int flags; + +-#line 167 "dtc-parser.tab.c" /* yacc.c:355 */ ++#line 170 "dtc-parser.tab.c" /* yacc.c:355 */ + }; ++ ++typedef union YYSTYPE YYSTYPE; + # define YYSTYPE_IS_TRIVIAL 1 + # define YYSTYPE_IS_DECLARED 1 + #endif +@@ -192,7 +197,7 @@ int yyparse (void); + + /* Copy the second part of user declarations. */ + +-#line 196 "dtc-parser.tab.c" /* yacc.c:358 */ ++#line 201 "dtc-parser.tab.c" /* yacc.c:358 */ + + #ifdef short + # undef short +@@ -434,23 +439,23 @@ union yyalloc + #endif /* !YYCOPY_NEEDED */ + + /* YYFINAL -- State number of the termination state. */ +-#define YYFINAL 4 ++#define YYFINAL 6 + /* YYLAST -- Last index in YYTABLE. */ +-#define YYLAST 133 ++#define YYLAST 140 + + /* YYNTOKENS -- Number of terminals. */ +-#define YYNTOKENS 47 ++#define YYNTOKENS 48 + /* YYNNTS -- Number of nonterminals. */ +-#define YYNNTS 28 ++#define YYNNTS 30 + /* YYNRULES -- Number of rules. */ +-#define YYNRULES 79 ++#define YYNRULES 85 + /* YYNSTATES -- Number of states. */ +-#define YYNSTATES 141 ++#define YYNSTATES 151 + + /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ + #define YYUNDEFTOK 2 +-#define YYMAXUTOK 278 ++#define YYMAXUTOK 279 + + #define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) +@@ -462,16 +467,16 @@ 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, 46, 2, 2, 2, 44, 40, 2, +- 32, 34, 43, 41, 33, 42, 2, 25, 2, 2, +- 2, 2, 2, 2, 2, 2, 2, 2, 37, 24, +- 35, 28, 29, 36, 2, 2, 2, 2, 2, 2, ++ 2, 2, 2, 47, 2, 2, 2, 45, 41, 2, ++ 33, 35, 44, 42, 34, 43, 2, 26, 2, 2, ++ 2, 2, 2, 2, 2, 2, 2, 2, 38, 25, ++ 36, 29, 30, 37, 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, 30, 2, 31, 39, 2, 2, 2, 2, 2, ++ 2, 31, 2, 32, 40, 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, 26, 38, 27, 45, 2, 2, 2, ++ 2, 2, 2, 27, 39, 28, 46, 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, +@@ -486,21 +491,22 @@ static const yytype_uint8 yytranslate[] = + 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 ++ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 + }; + + #if YYDEBUG + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ + static const yytype_uint16 yyrline[] = + { +- 0, 104, 104, 113, 116, 123, 127, 135, 139, 143, +- 153, 168, 176, 179, 186, 190, 194, 198, 206, 210, +- 214, 218, 222, 238, 248, 256, 259, 263, 270, 286, +- 291, 310, 324, 331, 332, 333, 340, 344, 345, 349, +- 350, 354, 355, 359, 360, 364, 365, 369, 370, 374, +- 375, 376, 380, 381, 382, 383, 384, 388, 389, 390, +- 394, 395, 396, 400, 401, 402, 403, 407, 408, 409, +- 410, 415, 418, 422, 430, 433, 437, 445, 449, 453 ++ 0, 109, 109, 117, 121, 128, 129, 139, 142, 149, ++ 153, 161, 165, 169, 180, 191, 210, 225, 233, 236, ++ 243, 247, 251, 255, 263, 267, 271, 275, 279, 295, ++ 305, 313, 316, 320, 327, 343, 348, 367, 381, 388, ++ 389, 390, 397, 401, 402, 406, 407, 411, 412, 416, ++ 417, 421, 422, 426, 427, 431, 432, 433, 437, 438, ++ 439, 440, 441, 445, 446, 447, 451, 452, 453, 457, ++ 458, 467, 476, 480, 481, 482, 483, 488, 491, 495, ++ 503, 506, 510, 518, 522, 526 + }; + #endif + +@@ -509,19 +515,20 @@ static const yytype_uint16 yyrline[] = + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ + static const char *const yytname[] = + { +- "$end", "error", "$undefined", "DT_V1", "DT_MEMRESERVE", "DT_LSHIFT", +- "DT_RSHIFT", "DT_LE", "DT_GE", "DT_EQ", "DT_NE", "DT_AND", "DT_OR", +- "DT_BITS", "DT_DEL_PROP", "DT_DEL_NODE", "DT_PROPNODENAME", "DT_LITERAL", +- "DT_CHAR_LITERAL", "DT_BYTE", "DT_STRING", "DT_LABEL", "DT_REF", +- "DT_INCBIN", "';'", "'/'", "'{'", "'}'", "'='", "'>'", "'['", "']'", +- "'('", "','", "')'", "'<'", "'?'", "':'", "'|'", "'^'", "'&'", "'+'", +- "'-'", "'*'", "'%'", "'~'", "'!'", "$accept", "sourcefile", +- "memreserves", "memreserve", "devicetree", "nodedef", "proplist", +- "propdef", "propdata", "propdataprefix", "arrayprefix", "integer_prim", +- "integer_expr", "integer_trinary", "integer_or", "integer_and", +- "integer_bitor", "integer_bitxor", "integer_bitand", "integer_eq", +- "integer_rela", "integer_shift", "integer_add", "integer_mul", +- "integer_unary", "bytestring", "subnodes", "subnode", YY_NULLPTR ++ "$end", "error", "$undefined", "DT_V1", "DT_PLUGIN", "DT_MEMRESERVE", ++ "DT_LSHIFT", "DT_RSHIFT", "DT_LE", "DT_GE", "DT_EQ", "DT_NE", "DT_AND", ++ "DT_OR", "DT_BITS", "DT_DEL_PROP", "DT_DEL_NODE", "DT_PROPNODENAME", ++ "DT_LITERAL", "DT_CHAR_LITERAL", "DT_BYTE", "DT_STRING", "DT_LABEL", ++ "DT_REF", "DT_INCBIN", "';'", "'/'", "'{'", "'}'", "'='", "'>'", "'['", ++ "']'", "'('", "','", "')'", "'<'", "'?'", "':'", "'|'", "'^'", "'&'", ++ "'+'", "'-'", "'*'", "'%'", "'~'", "'!'", "$accept", "sourcefile", ++ "header", "headers", "memreserves", "memreserve", "devicetree", ++ "nodedef", "proplist", "propdef", "propdata", "propdataprefix", ++ "arrayprefix", "integer_prim", "integer_expr", "integer_trinary", ++ "integer_or", "integer_and", "integer_bitor", "integer_bitxor", ++ "integer_bitand", "integer_eq", "integer_rela", "integer_shift", ++ "integer_add", "integer_mul", "integer_unary", "bytestring", "subnodes", ++ "subnode", YY_NULLPTR + }; + #endif + +@@ -532,16 +539,16 @@ 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, 59, 47, 123, 125, 61, 62, +- 91, 93, 40, 44, 41, 60, 63, 58, 124, 94, +- 38, 43, 45, 42, 37, 126, 33 ++ 275, 276, 277, 278, 279, 59, 47, 123, 125, 61, ++ 62, 91, 93, 40, 44, 41, 60, 63, 58, 124, ++ 94, 38, 43, 45, 42, 37, 126, 33 + }; + # endif + +-#define YYPACT_NINF -38 ++#define YYPACT_NINF -81 + + #define yypact_value_is_default(Yystate) \ +- (!!((Yystate) == (-38))) ++ (!!((Yystate) == (-81))) + + #define YYTABLE_NINF -1 + +@@ -552,21 +559,22 @@ static const yytype_uint16 yytoknum[] = + STATE-NUM. */ + static const yytype_int8 yypact[] = + { +- 21, 11, 45, 10, -38, 9, 10, 15, 10, -38, +- -38, -9, 9, -38, 56, 40, -38, -9, -9, -9, +- -38, 51, -38, -6, 75, 49, 52, 48, 50, 3, +- 66, 33, 0, -38, 65, -38, -38, 68, 56, 56, +- -38, -38, -38, -38, -9, -9, -9, -9, -9, -9, +- -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, +- -9, -9, -9, -38, 42, 69, -38, -38, 75, 55, +- 49, 52, 48, 50, 3, 3, 66, 66, 66, 66, +- 33, 33, 0, 0, -38, -38, -38, 78, 79, -11, +- 42, -38, 70, 42, -38, -9, 72, 74, -38, -38, +- -38, -38, -38, 76, -38, -38, -38, -38, -38, 18, +- -1, -38, -38, -38, -38, 82, -38, -38, -38, 71, +- -38, -38, 32, 67, 81, -3, -38, -38, -38, -38, +- -38, 43, -38, -38, -38, 9, -38, 73, 9, 77, +- -38 ++ 11, 17, 23, 11, 10, 56, -81, -81, 21, 10, ++ -5, 10, 39, -81, -81, -13, 21, -81, 44, 44, ++ 43, -81, -81, -13, -13, -13, -81, 38, -81, -2, ++ 67, 53, 55, 57, 41, 1, 75, 42, -19, -81, ++ 58, -81, -81, -81, 73, 74, 44, 44, -81, -81, ++ -81, -81, -13, -13, -13, -13, -13, -13, -13, -13, ++ -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, ++ -13, -81, 46, 76, 44, -81, -81, 67, 61, 53, ++ 55, 57, 41, 1, 1, 75, 75, 75, 75, 42, ++ 42, -19, -19, -81, -81, -81, 83, 85, 45, 46, ++ -81, 77, 46, -81, -81, -13, 78, 79, -81, -81, ++ -81, -81, -81, 81, -81, -81, -81, -81, -81, 16, ++ 22, -81, -81, -81, -81, 89, -81, -81, -81, 80, ++ -81, -81, -6, 72, 88, 35, -81, -81, -81, -81, ++ -81, 52, -81, -81, -81, 21, -81, 82, 21, 84, ++ -81 + }; + + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. +@@ -574,37 +582,38 @@ static const yytype_int8 yypact[] = + means the default is an error. */ + static const yytype_uint8 yydefact[] = + { +- 0, 0, 0, 3, 1, 0, 0, 0, 3, 33, +- 34, 0, 0, 6, 0, 2, 4, 0, 0, 0, +- 67, 0, 36, 37, 39, 41, 43, 45, 47, 49, +- 52, 59, 62, 66, 0, 12, 7, 0, 0, 0, +- 68, 69, 70, 35, 0, 0, 0, 0, 0, 0, ++ 0, 0, 0, 5, 7, 3, 1, 6, 0, 0, ++ 0, 7, 0, 39, 40, 0, 0, 10, 0, 0, ++ 2, 8, 4, 0, 0, 0, 73, 0, 42, 43, ++ 45, 47, 49, 51, 53, 55, 58, 65, 68, 72, ++ 0, 18, 13, 11, 0, 0, 0, 0, 74, 75, ++ 76, 41, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +- 0, 0, 0, 5, 74, 0, 9, 8, 40, 0, +- 42, 44, 46, 48, 50, 51, 55, 56, 54, 53, +- 57, 58, 60, 61, 64, 63, 65, 0, 0, 0, +- 0, 13, 0, 74, 10, 0, 0, 0, 15, 25, +- 77, 17, 79, 0, 76, 75, 38, 16, 78, 0, +- 0, 11, 24, 14, 26, 0, 18, 27, 21, 0, +- 71, 29, 0, 0, 0, 0, 32, 31, 19, 30, +- 28, 0, 72, 73, 20, 0, 23, 0, 0, 0, +- 22 ++ 0, 9, 80, 0, 0, 15, 12, 46, 0, 48, ++ 50, 52, 54, 56, 57, 61, 62, 60, 59, 63, ++ 64, 66, 67, 70, 69, 71, 0, 0, 0, 0, ++ 19, 0, 80, 16, 14, 0, 0, 0, 21, 31, ++ 83, 23, 85, 0, 82, 81, 44, 22, 84, 0, ++ 0, 17, 30, 20, 32, 0, 24, 33, 27, 0, ++ 77, 35, 0, 0, 0, 0, 38, 37, 25, 36, ++ 34, 0, 78, 79, 26, 0, 29, 0, 0, 0, ++ 28 + }; + + /* YYPGOTO[NTERM-NUM]. */ + static const yytype_int8 yypgoto[] = + { +- -38, -38, 96, 99, -38, -37, -38, -20, -38, -38, +- -38, -5, 62, 13, -38, 80, 63, 84, 64, 61, +- 28, 14, 24, 25, -14, -38, 20, 26 ++ -81, -81, -81, 107, 100, 103, -81, -18, -81, -80, ++ -81, -81, -81, -8, 62, 9, -81, 65, 64, 66, ++ 69, 63, 30, 15, 26, 27, -21, -81, 20, 24 + }; + + /* YYDEFGOTO[NTERM-NUM]. */ +-static const yytype_int8 yydefgoto[] = ++static const yytype_int16 yydefgoto[] = + { +- -1, 2, 7, 8, 15, 36, 64, 91, 109, 110, +- 122, 20, 21, 22, 23, 24, 25, 26, 27, 28, +- 29, 30, 31, 32, 33, 125, 92, 93 ++ -1, 2, 3, 4, 10, 11, 20, 42, 72, 100, ++ 119, 120, 132, 26, 27, 28, 29, 30, 31, 32, ++ 33, 34, 35, 36, 37, 38, 39, 135, 101, 102 + }; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If +@@ -612,85 +621,90 @@ static const yytype_int8 yydefgoto[] = + number is the opposite. If YYTABLE_NINF, syntax error. */ + static const yytype_uint8 yytable[] = + { +- 12, 66, 67, 40, 41, 42, 44, 34, 9, 10, +- 52, 53, 115, 98, 5, 35, 132, 99, 133, 116, +- 117, 118, 119, 11, 1, 60, 9, 10, 134, 120, +- 45, 6, 54, 17, 121, 3, 18, 19, 55, 112, +- 14, 11, 113, 61, 62, 4, 84, 85, 86, 9, +- 10, 114, 100, 126, 127, 37, 87, 88, 89, 50, +- 51, 128, 38, 90, 11, 39, 76, 77, 78, 79, +- 101, 56, 57, 104, 58, 59, 135, 136, 74, 75, +- 80, 81, 35, 82, 83, 43, 46, 47, 49, 63, +- 65, 48, 95, 94, 96, 97, 107, 103, 108, 123, +- 111, 131, 130, 124, 16, 13, 138, 69, 106, 70, +- 73, 140, 72, 105, 0, 0, 102, 129, 0, 0, +- 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, +- 137, 71, 0, 139 ++ 16, 43, 48, 49, 50, 13, 14, 68, 40, 60, ++ 61, 52, 13, 14, 1, 8, 136, 137, 18, 111, ++ 15, 19, 114, 6, 138, 69, 70, 15, 75, 76, ++ 23, 62, 9, 24, 25, 53, 125, 63, 122, 13, ++ 14, 123, 5, 126, 127, 128, 129, 93, 94, 95, ++ 124, 58, 59, 130, 15, 142, 104, 143, 131, 44, ++ 12, 96, 97, 98, 22, 45, 46, 144, 99, 47, ++ 108, 41, 41, 51, 109, 85, 86, 87, 88, 54, ++ 110, 64, 65, 71, 66, 67, 145, 146, 83, 84, ++ 89, 90, 55, 91, 92, 56, 73, 74, 57, 105, ++ 106, 103, 107, 117, 118, 113, 121, 133, 140, 141, ++ 7, 21, 17, 134, 116, 78, 148, 77, 79, 150, ++ 82, 80, 115, 112, 139, 81, 0, 0, 0, 0, ++ 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, ++ 149 + }; + + static const yytype_int16 yycheck[] = + { +- 5, 38, 39, 17, 18, 19, 12, 12, 17, 18, +- 7, 8, 13, 24, 4, 26, 19, 28, 21, 20, +- 21, 22, 23, 32, 3, 25, 17, 18, 31, 30, +- 36, 21, 29, 42, 35, 24, 45, 46, 35, 21, +- 25, 32, 24, 43, 44, 0, 60, 61, 62, 17, +- 18, 33, 89, 21, 22, 15, 14, 15, 16, 9, +- 10, 29, 22, 21, 32, 25, 52, 53, 54, 55, +- 90, 5, 6, 93, 41, 42, 33, 34, 50, 51, +- 56, 57, 26, 58, 59, 34, 11, 38, 40, 24, +- 22, 39, 37, 24, 16, 16, 24, 27, 24, 17, +- 24, 20, 35, 32, 8, 6, 33, 45, 95, 46, +- 49, 34, 48, 93, -1, -1, 90, 122, -1, -1, +- -1, -1, -1, -1, 44, -1, -1, -1, -1, -1, +- 135, 47, -1, 138 ++ 8, 19, 23, 24, 25, 18, 19, 26, 16, 8, ++ 9, 13, 18, 19, 3, 5, 22, 23, 23, 99, ++ 33, 26, 102, 0, 30, 44, 45, 33, 46, 47, ++ 43, 30, 22, 46, 47, 37, 14, 36, 22, 18, ++ 19, 25, 25, 21, 22, 23, 24, 68, 69, 70, ++ 34, 10, 11, 31, 33, 20, 74, 22, 36, 16, ++ 4, 15, 16, 17, 25, 22, 23, 32, 22, 26, ++ 25, 27, 27, 35, 29, 60, 61, 62, 63, 12, ++ 98, 6, 7, 25, 42, 43, 34, 35, 58, 59, ++ 64, 65, 39, 66, 67, 40, 23, 23, 41, 38, ++ 17, 25, 17, 25, 25, 28, 25, 18, 36, 21, ++ 3, 11, 9, 33, 105, 53, 34, 52, 54, 35, ++ 57, 55, 102, 99, 132, 56, -1, -1, -1, -1, ++ -1, -1, -1, -1, -1, -1, -1, 145, -1, -1, ++ 148 + }; + + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ + static const yytype_uint8 yystos[] = + { +- 0, 3, 48, 24, 0, 4, 21, 49, 50, 17, +- 18, 32, 58, 50, 25, 51, 49, 42, 45, 46, +- 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, +- 68, 69, 70, 71, 58, 26, 52, 15, 22, 25, +- 71, 71, 71, 34, 12, 36, 11, 38, 39, 40, +- 9, 10, 7, 8, 29, 35, 5, 6, 41, 42, +- 25, 43, 44, 24, 53, 22, 52, 52, 62, 59, +- 63, 64, 65, 66, 67, 67, 68, 68, 68, 68, +- 69, 69, 70, 70, 71, 71, 71, 14, 15, 16, +- 21, 54, 73, 74, 24, 37, 16, 16, 24, 28, +- 52, 54, 74, 27, 54, 73, 60, 24, 24, 55, +- 56, 24, 21, 24, 33, 13, 20, 21, 22, 23, +- 30, 35, 57, 17, 32, 72, 21, 22, 29, 58, +- 35, 20, 19, 21, 31, 33, 34, 58, 33, 58, +- 34 ++ 0, 3, 49, 50, 51, 25, 0, 51, 5, 22, ++ 52, 53, 4, 18, 19, 33, 61, 53, 23, 26, ++ 54, 52, 25, 43, 46, 47, 61, 62, 63, 64, ++ 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, ++ 61, 27, 55, 55, 16, 22, 23, 26, 74, 74, ++ 74, 35, 13, 37, 12, 39, 40, 41, 10, 11, ++ 8, 9, 30, 36, 6, 7, 42, 43, 26, 44, ++ 45, 25, 56, 23, 23, 55, 55, 65, 62, 66, ++ 67, 68, 69, 70, 70, 71, 71, 71, 71, 72, ++ 72, 73, 73, 74, 74, 74, 15, 16, 17, 22, ++ 57, 76, 77, 25, 55, 38, 17, 17, 25, 29, ++ 55, 57, 77, 28, 57, 76, 63, 25, 25, 58, ++ 59, 25, 22, 25, 34, 14, 21, 22, 23, 24, ++ 31, 36, 60, 18, 33, 75, 22, 23, 30, 61, ++ 36, 21, 20, 22, 32, 34, 35, 61, 34, 61, ++ 35 + }; + + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ + static const yytype_uint8 yyr1[] = + { +- 0, 47, 48, 49, 49, 50, 50, 51, 51, 51, +- 51, 52, 53, 53, 54, 54, 54, 54, 55, 55, +- 55, 55, 55, 55, 55, 56, 56, 56, 57, 57, +- 57, 57, 57, 58, 58, 58, 59, 60, 60, 61, +- 61, 62, 62, 63, 63, 64, 64, 65, 65, 66, +- 66, 66, 67, 67, 67, 67, 67, 68, 68, 68, +- 69, 69, 69, 70, 70, 70, 70, 71, 71, 71, +- 71, 72, 72, 72, 73, 73, 73, 74, 74, 74 ++ 0, 48, 49, 50, 50, 51, 51, 52, 52, 53, ++ 53, 54, 54, 54, 54, 54, 54, 55, 56, 56, ++ 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, ++ 58, 59, 59, 59, 60, 60, 60, 60, 60, 61, ++ 61, 61, 62, 63, 63, 64, 64, 65, 65, 66, ++ 66, 67, 67, 68, 68, 69, 69, 69, 70, 70, ++ 70, 70, 70, 71, 71, 71, 72, 72, 72, 73, ++ 73, 73, 73, 74, 74, 74, 74, 75, 75, 75, ++ 76, 76, 76, 77, 77, 77 + }; + + /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ + static const yytype_uint8 yyr2[] = + { +- 0, 2, 4, 0, 2, 4, 2, 2, 3, 3, +- 4, 5, 0, 2, 4, 2, 3, 2, 2, 3, +- 4, 2, 9, 5, 2, 0, 2, 2, 3, 1, +- 2, 2, 2, 1, 1, 3, 1, 1, 5, 1, +- 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, +- 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, +- 3, 3, 1, 3, 3, 3, 1, 1, 2, 2, +- 2, 0, 2, 2, 0, 2, 2, 2, 3, 2 ++ 0, 2, 3, 2, 4, 1, 2, 0, 2, 4, ++ 2, 2, 3, 2, 4, 3, 4, 5, 0, 2, ++ 4, 2, 3, 2, 2, 3, 4, 2, 9, 5, ++ 2, 0, 2, 2, 3, 1, 2, 2, 2, 1, ++ 1, 3, 1, 1, 5, 1, 3, 1, 3, 1, ++ 3, 1, 3, 1, 3, 1, 3, 3, 1, 3, ++ 3, 3, 3, 3, 3, 1, 3, 3, 1, 3, ++ 3, 3, 1, 1, 2, 2, 2, 0, 2, 2, ++ 0, 2, 2, 2, 3, 2 + }; + + +@@ -1460,79 +1474,144 @@ yyreduce: + switch (yyn) + { + case 2: +-#line 105 "dtc-parser.y" /* yacc.c:1646 */ ++#line 110 "dtc-parser.y" /* yacc.c:1646 */ + { +- the_boot_info = build_boot_info((yyvsp[-1].re), (yyvsp[0].node), +- guess_boot_cpuid((yyvsp[0].node))); ++ parser_output = build_dt_info((yyvsp[-2].flags), (yyvsp[-1].re), (yyvsp[0].node), ++ guess_boot_cpuid((yyvsp[0].node))); + } +-#line 1469 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1483 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + + case 3: +-#line 113 "dtc-parser.y" /* yacc.c:1646 */ ++#line 118 "dtc-parser.y" /* yacc.c:1646 */ + { +- (yyval.re) = NULL; ++ (yyval.flags) = DTSF_V1; + } +-#line 1477 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1491 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + + case 4: +-#line 117 "dtc-parser.y" /* yacc.c:1646 */ ++#line 122 "dtc-parser.y" /* yacc.c:1646 */ ++ { ++ (yyval.flags) = DTSF_V1 | DTSF_PLUGIN; ++ } ++#line 1499 "dtc-parser.tab.c" /* yacc.c:1646 */ ++ break; ++ ++ case 6: ++#line 130 "dtc-parser.y" /* yacc.c:1646 */ ++ { ++ if ((yyvsp[0].flags) != (yyvsp[-1].flags)) ++ ERROR(&(yylsp[0]), "Header flags don't match earlier ones"); ++ (yyval.flags) = (yyvsp[-1].flags); ++ } ++#line 1509 "dtc-parser.tab.c" /* yacc.c:1646 */ ++ break; ++ ++ case 7: ++#line 139 "dtc-parser.y" /* yacc.c:1646 */ ++ { ++ (yyval.re) = NULL; ++ } ++#line 1517 "dtc-parser.tab.c" /* yacc.c:1646 */ ++ break; ++ ++ case 8: ++#line 143 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.re) = chain_reserve_entry((yyvsp[-1].re), (yyvsp[0].re)); + } +-#line 1485 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1525 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 5: +-#line 124 "dtc-parser.y" /* yacc.c:1646 */ ++ case 9: ++#line 150 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.re) = build_reserve_entry((yyvsp[-2].integer), (yyvsp[-1].integer)); + } +-#line 1493 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1533 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 6: +-#line 128 "dtc-parser.y" /* yacc.c:1646 */ ++ case 10: ++#line 154 "dtc-parser.y" /* yacc.c:1646 */ + { + add_label(&(yyvsp[0].re)->labels, (yyvsp[-1].labelref)); + (yyval.re) = (yyvsp[0].re); + } +-#line 1502 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1542 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 7: +-#line 136 "dtc-parser.y" /* yacc.c:1646 */ ++ case 11: ++#line 162 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.node) = name_node((yyvsp[0].node), ""); + } +-#line 1510 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1550 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 8: +-#line 140 "dtc-parser.y" /* yacc.c:1646 */ ++ case 12: ++#line 166 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.node) = merge_nodes((yyvsp[-2].node), (yyvsp[0].node)); + } +-#line 1518 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1558 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 9: +-#line 144 "dtc-parser.y" /* yacc.c:1646 */ ++ case 13: ++#line 170 "dtc-parser.y" /* yacc.c:1646 */ + { +- struct node *target = get_node_by_ref((yyvsp[-2].node), (yyvsp[-1].labelref)); ++ /* ++ * We rely on the rule being always: ++ * versioninfo plugindecl memreserves devicetree ++ * so $-1 is what we want (plugindecl) ++ */ ++ if (!((yyvsp[(-1) - (2)].flags) & DTSF_PLUGIN)) ++ ERROR(&(yylsp[0]), "Label or path %s not found", (yyvsp[-1].labelref)); ++ (yyval.node) = add_orphan_node(name_node(build_node(NULL, NULL), ""), (yyvsp[0].node), (yyvsp[-1].labelref)); ++ } ++#line 1573 "dtc-parser.tab.c" /* yacc.c:1646 */ ++ break; + +- if (target) ++ case 14: ++#line 181 "dtc-parser.y" /* yacc.c:1646 */ ++ { ++ struct node *target = get_node_by_ref((yyvsp[-3].node), (yyvsp[-1].labelref)); ++ ++ if (target) { ++ add_label(&target->labels, (yyvsp[-2].labelref)); + merge_nodes(target, (yyvsp[0].node)); +- else ++ } else + ERROR(&(yylsp[-1]), "Label or path %s not found", (yyvsp[-1].labelref)); ++ (yyval.node) = (yyvsp[-3].node); ++ } ++#line 1588 "dtc-parser.tab.c" /* yacc.c:1646 */ ++ break; ++ ++ case 15: ++#line 192 "dtc-parser.y" /* yacc.c:1646 */ ++ { ++ struct node *target = get_node_by_ref((yyvsp[-2].node), (yyvsp[-1].labelref)); ++ ++ if (target) { ++ merge_nodes(target, (yyvsp[0].node)); ++ } else { ++ /* ++ * We rely on the rule being always: ++ * versioninfo plugindecl memreserves devicetree ++ * so $-1 is what we want (plugindecl) ++ */ ++ if ((yyvsp[(-1) - (3)].flags) & DTSF_PLUGIN) ++ add_orphan_node((yyvsp[-2].node), (yyvsp[0].node), (yyvsp[-1].labelref)); ++ else ++ ERROR(&(yylsp[-1]), "Label or path %s not found", (yyvsp[-1].labelref)); ++ } + (yyval.node) = (yyvsp[-2].node); + } +-#line 1532 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1611 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 10: +-#line 154 "dtc-parser.y" /* yacc.c:1646 */ ++ case 16: ++#line 211 "dtc-parser.y" /* yacc.c:1646 */ + { + struct node *target = get_node_by_ref((yyvsp[-3].node), (yyvsp[-1].labelref)); + +@@ -1544,100 +1623,100 @@ yyreduce: + + (yyval.node) = (yyvsp[-3].node); + } +-#line 1548 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1627 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 11: +-#line 169 "dtc-parser.y" /* yacc.c:1646 */ ++ case 17: ++#line 226 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.node) = build_node((yyvsp[-3].proplist), (yyvsp[-2].nodelist)); + } +-#line 1556 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1635 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 12: +-#line 176 "dtc-parser.y" /* yacc.c:1646 */ ++ case 18: ++#line 233 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.proplist) = NULL; + } +-#line 1564 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1643 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 13: +-#line 180 "dtc-parser.y" /* yacc.c:1646 */ ++ case 19: ++#line 237 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.proplist) = chain_property((yyvsp[0].prop), (yyvsp[-1].proplist)); + } +-#line 1572 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1651 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 14: +-#line 187 "dtc-parser.y" /* yacc.c:1646 */ ++ case 20: ++#line 244 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.prop) = build_property((yyvsp[-3].propnodename), (yyvsp[-1].data)); + } +-#line 1580 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1659 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 15: +-#line 191 "dtc-parser.y" /* yacc.c:1646 */ ++ case 21: ++#line 248 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.prop) = build_property((yyvsp[-1].propnodename), empty_data); + } +-#line 1588 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1667 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 16: +-#line 195 "dtc-parser.y" /* yacc.c:1646 */ ++ case 22: ++#line 252 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.prop) = build_property_delete((yyvsp[-1].propnodename)); + } +-#line 1596 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1675 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 17: +-#line 199 "dtc-parser.y" /* yacc.c:1646 */ ++ case 23: ++#line 256 "dtc-parser.y" /* yacc.c:1646 */ + { + add_label(&(yyvsp[0].prop)->labels, (yyvsp[-1].labelref)); + (yyval.prop) = (yyvsp[0].prop); + } +-#line 1605 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1684 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 18: +-#line 207 "dtc-parser.y" /* yacc.c:1646 */ ++ case 24: ++#line 264 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.data) = data_merge((yyvsp[-1].data), (yyvsp[0].data)); + } +-#line 1613 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1692 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 19: +-#line 211 "dtc-parser.y" /* yacc.c:1646 */ ++ case 25: ++#line 268 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.data) = data_merge((yyvsp[-2].data), (yyvsp[-1].array).data); + } +-#line 1621 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1700 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 20: +-#line 215 "dtc-parser.y" /* yacc.c:1646 */ ++ case 26: ++#line 272 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.data) = data_merge((yyvsp[-3].data), (yyvsp[-1].data)); + } +-#line 1629 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1708 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 21: +-#line 219 "dtc-parser.y" /* yacc.c:1646 */ ++ case 27: ++#line 276 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.data) = data_add_marker((yyvsp[-1].data), REF_PATH, (yyvsp[0].labelref)); + } +-#line 1637 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1716 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 22: +-#line 223 "dtc-parser.y" /* yacc.c:1646 */ ++ case 28: ++#line 280 "dtc-parser.y" /* yacc.c:1646 */ + { + FILE *f = srcfile_relative_open((yyvsp[-5].data).val, NULL); + struct data d; +@@ -1653,11 +1732,11 @@ yyreduce: + (yyval.data) = data_merge((yyvsp[-8].data), d); + fclose(f); + } +-#line 1657 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1736 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 23: +-#line 239 "dtc-parser.y" /* yacc.c:1646 */ ++ case 29: ++#line 296 "dtc-parser.y" /* yacc.c:1646 */ + { + FILE *f = srcfile_relative_open((yyvsp[-1].data).val, NULL); + struct data d = empty_data; +@@ -1667,43 +1746,43 @@ yyreduce: + (yyval.data) = data_merge((yyvsp[-4].data), d); + fclose(f); + } +-#line 1671 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1750 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 24: +-#line 249 "dtc-parser.y" /* yacc.c:1646 */ ++ case 30: ++#line 306 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref)); + } +-#line 1679 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1758 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 25: +-#line 256 "dtc-parser.y" /* yacc.c:1646 */ ++ case 31: ++#line 313 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.data) = empty_data; + } +-#line 1687 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1766 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 26: +-#line 260 "dtc-parser.y" /* yacc.c:1646 */ ++ case 32: ++#line 317 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.data) = (yyvsp[-1].data); + } +-#line 1695 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1774 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 27: +-#line 264 "dtc-parser.y" /* yacc.c:1646 */ ++ case 33: ++#line 321 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref)); + } +-#line 1703 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1782 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 28: +-#line 271 "dtc-parser.y" /* yacc.c:1646 */ ++ case 34: ++#line 328 "dtc-parser.y" /* yacc.c:1646 */ + { + unsigned long long bits; + +@@ -1719,20 +1798,20 @@ yyreduce: + (yyval.array).data = empty_data; + (yyval.array).bits = bits; + } +-#line 1723 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1802 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 29: +-#line 287 "dtc-parser.y" /* yacc.c:1646 */ ++ case 35: ++#line 344 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.array).data = empty_data; + (yyval.array).bits = 32; + } +-#line 1732 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1811 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 30: +-#line 292 "dtc-parser.y" /* yacc.c:1646 */ ++ case 36: ++#line 349 "dtc-parser.y" /* yacc.c:1646 */ + { + if ((yyvsp[-1].array).bits < 64) { + uint64_t mask = (1ULL << (yyvsp[-1].array).bits) - 1; +@@ -1751,11 +1830,11 @@ yyreduce: + + (yyval.array).data = data_append_integer((yyvsp[-1].array).data, (yyvsp[0].integer), (yyvsp[-1].array).bits); + } +-#line 1755 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1834 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 31: +-#line 311 "dtc-parser.y" /* yacc.c:1646 */ ++ case 37: ++#line 368 "dtc-parser.y" /* yacc.c:1646 */ + { + uint64_t val = ~0ULL >> (64 - (yyvsp[-1].array).bits); + +@@ -1769,233 +1848,247 @@ yyreduce: + + (yyval.array).data = data_append_integer((yyvsp[-1].array).data, val, (yyvsp[-1].array).bits); + } +-#line 1773 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1852 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 32: +-#line 325 "dtc-parser.y" /* yacc.c:1646 */ ++ case 38: ++#line 382 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.array).data = data_add_marker((yyvsp[-1].array).data, LABEL, (yyvsp[0].labelref)); + } +-#line 1781 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1860 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 35: +-#line 334 "dtc-parser.y" /* yacc.c:1646 */ ++ case 41: ++#line 391 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.integer) = (yyvsp[-1].integer); + } +-#line 1789 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1868 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 38: +-#line 345 "dtc-parser.y" /* yacc.c:1646 */ ++ case 44: ++#line 402 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-4].integer) ? (yyvsp[-2].integer) : (yyvsp[0].integer); } +-#line 1795 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1874 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 40: +-#line 350 "dtc-parser.y" /* yacc.c:1646 */ ++ case 46: ++#line 407 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) || (yyvsp[0].integer); } +-#line 1801 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1880 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 42: +-#line 355 "dtc-parser.y" /* yacc.c:1646 */ ++ case 48: ++#line 412 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) && (yyvsp[0].integer); } +-#line 1807 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1886 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 44: +-#line 360 "dtc-parser.y" /* yacc.c:1646 */ ++ case 50: ++#line 417 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) | (yyvsp[0].integer); } +-#line 1813 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1892 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 46: +-#line 365 "dtc-parser.y" /* yacc.c:1646 */ ++ case 52: ++#line 422 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) ^ (yyvsp[0].integer); } +-#line 1819 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1898 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 48: +-#line 370 "dtc-parser.y" /* yacc.c:1646 */ ++ case 54: ++#line 427 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) & (yyvsp[0].integer); } +-#line 1825 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1904 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 50: +-#line 375 "dtc-parser.y" /* yacc.c:1646 */ ++ case 56: ++#line 432 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) == (yyvsp[0].integer); } +-#line 1831 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1910 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 51: +-#line 376 "dtc-parser.y" /* yacc.c:1646 */ ++ case 57: ++#line 433 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) != (yyvsp[0].integer); } +-#line 1837 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1916 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 53: +-#line 381 "dtc-parser.y" /* yacc.c:1646 */ ++ case 59: ++#line 438 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) < (yyvsp[0].integer); } +-#line 1843 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1922 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 54: +-#line 382 "dtc-parser.y" /* yacc.c:1646 */ ++ case 60: ++#line 439 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) > (yyvsp[0].integer); } +-#line 1849 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1928 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 55: +-#line 383 "dtc-parser.y" /* yacc.c:1646 */ ++ case 61: ++#line 440 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) <= (yyvsp[0].integer); } +-#line 1855 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1934 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 56: +-#line 384 "dtc-parser.y" /* yacc.c:1646 */ ++ case 62: ++#line 441 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) >= (yyvsp[0].integer); } +-#line 1861 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1940 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 57: +-#line 388 "dtc-parser.y" /* yacc.c:1646 */ ++ case 63: ++#line 445 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) << (yyvsp[0].integer); } +-#line 1867 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1946 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 58: +-#line 389 "dtc-parser.y" /* yacc.c:1646 */ ++ case 64: ++#line 446 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) >> (yyvsp[0].integer); } +-#line 1873 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1952 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 60: +-#line 394 "dtc-parser.y" /* yacc.c:1646 */ ++ case 66: ++#line 451 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) + (yyvsp[0].integer); } +-#line 1879 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1958 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 61: +-#line 395 "dtc-parser.y" /* yacc.c:1646 */ ++ case 67: ++#line 452 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) - (yyvsp[0].integer); } +-#line 1885 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1964 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 63: +-#line 400 "dtc-parser.y" /* yacc.c:1646 */ ++ case 69: ++#line 457 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = (yyvsp[-2].integer) * (yyvsp[0].integer); } +-#line 1891 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 1970 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 64: +-#line 401 "dtc-parser.y" /* yacc.c:1646 */ +- { (yyval.integer) = (yyvsp[-2].integer) / (yyvsp[0].integer); } +-#line 1897 "dtc-parser.tab.c" /* yacc.c:1646 */ ++ case 70: ++#line 459 "dtc-parser.y" /* yacc.c:1646 */ ++ { ++ if ((yyvsp[0].integer) != 0) { ++ (yyval.integer) = (yyvsp[-2].integer) / (yyvsp[0].integer); ++ } else { ++ ERROR(&(yyloc), "Division by zero"); ++ (yyval.integer) = 0; ++ } ++ } ++#line 1983 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 65: +-#line 402 "dtc-parser.y" /* yacc.c:1646 */ +- { (yyval.integer) = (yyvsp[-2].integer) % (yyvsp[0].integer); } +-#line 1903 "dtc-parser.tab.c" /* yacc.c:1646 */ ++ case 71: ++#line 468 "dtc-parser.y" /* yacc.c:1646 */ ++ { ++ if ((yyvsp[0].integer) != 0) { ++ (yyval.integer) = (yyvsp[-2].integer) % (yyvsp[0].integer); ++ } else { ++ ERROR(&(yyloc), "Division by zero"); ++ (yyval.integer) = 0; ++ } ++ } ++#line 1996 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 68: +-#line 408 "dtc-parser.y" /* yacc.c:1646 */ ++ case 74: ++#line 481 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = -(yyvsp[0].integer); } +-#line 1909 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 2002 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 69: +-#line 409 "dtc-parser.y" /* yacc.c:1646 */ ++ case 75: ++#line 482 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = ~(yyvsp[0].integer); } +-#line 1915 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 2008 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 70: +-#line 410 "dtc-parser.y" /* yacc.c:1646 */ ++ case 76: ++#line 483 "dtc-parser.y" /* yacc.c:1646 */ + { (yyval.integer) = !(yyvsp[0].integer); } +-#line 1921 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 2014 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 71: +-#line 415 "dtc-parser.y" /* yacc.c:1646 */ ++ case 77: ++#line 488 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.data) = empty_data; + } +-#line 1929 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 2022 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 72: +-#line 419 "dtc-parser.y" /* yacc.c:1646 */ ++ case 78: ++#line 492 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.data) = data_append_byte((yyvsp[-1].data), (yyvsp[0].byte)); + } +-#line 1937 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 2030 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 73: +-#line 423 "dtc-parser.y" /* yacc.c:1646 */ ++ case 79: ++#line 496 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.data) = data_add_marker((yyvsp[-1].data), LABEL, (yyvsp[0].labelref)); + } +-#line 1945 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 2038 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 74: +-#line 430 "dtc-parser.y" /* yacc.c:1646 */ ++ case 80: ++#line 503 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.nodelist) = NULL; + } +-#line 1953 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 2046 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 75: +-#line 434 "dtc-parser.y" /* yacc.c:1646 */ ++ case 81: ++#line 507 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.nodelist) = chain_node((yyvsp[-1].node), (yyvsp[0].nodelist)); + } +-#line 1961 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 2054 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 76: +-#line 438 "dtc-parser.y" /* yacc.c:1646 */ ++ case 82: ++#line 511 "dtc-parser.y" /* yacc.c:1646 */ + { + ERROR(&(yylsp[0]), "Properties must precede subnodes"); + YYERROR; + } +-#line 1970 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 2063 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 77: +-#line 446 "dtc-parser.y" /* yacc.c:1646 */ ++ case 83: ++#line 519 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.node) = name_node((yyvsp[0].node), (yyvsp[-1].propnodename)); + } +-#line 1978 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 2071 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 78: +-#line 450 "dtc-parser.y" /* yacc.c:1646 */ ++ case 84: ++#line 523 "dtc-parser.y" /* yacc.c:1646 */ + { + (yyval.node) = name_node(build_node_delete(), (yyvsp[-1].propnodename)); + } +-#line 1986 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 2079 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + +- case 79: +-#line 454 "dtc-parser.y" /* yacc.c:1646 */ ++ case 85: ++#line 527 "dtc-parser.y" /* yacc.c:1646 */ + { + add_label(&(yyvsp[0].node)->labels, (yyvsp[-1].labelref)); + (yyval.node) = (yyvsp[0].node); + } +-#line 1995 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 2088 "dtc-parser.tab.c" /* yacc.c:1646 */ + break; + + +-#line 1999 "dtc-parser.tab.c" /* yacc.c:1646 */ ++#line 2092 "dtc-parser.tab.c" /* yacc.c:1646 */ + default: break; + } + /* User semantic actions sometimes alter yychar, and that requires +@@ -2230,7 +2323,7 @@ yyreturn: + #endif + return yyresult; + } +-#line 460 "dtc-parser.y" /* yacc.c:1906 */ ++#line 533 "dtc-parser.y" /* yacc.c:1906 */ + + + void yyerror(char const *s) +diff --git a/scripts/dtc/dtc-parser.tab.h_shipped b/scripts/dtc/dtc-parser.tab.h_shipped +index 30867c688..6aa512c1b 100644 +--- a/scripts/dtc/dtc-parser.tab.h_shipped ++++ b/scripts/dtc/dtc-parser.tab.h_shipped +@@ -1,8 +1,8 @@ +-/* A Bison parser, made by GNU Bison 3.0.2. */ ++/* A Bison parser, made by GNU Bison 3.0.4. */ + + /* Bison interface for Yacc-like parsers in C + +- Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. ++ 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 +@@ -46,35 +46,36 @@ extern int yydebug; + enum yytokentype + { + DT_V1 = 258, +- DT_MEMRESERVE = 259, +- DT_LSHIFT = 260, +- DT_RSHIFT = 261, +- DT_LE = 262, +- DT_GE = 263, +- DT_EQ = 264, +- DT_NE = 265, +- DT_AND = 266, +- DT_OR = 267, +- DT_BITS = 268, +- DT_DEL_PROP = 269, +- DT_DEL_NODE = 270, +- DT_PROPNODENAME = 271, +- DT_LITERAL = 272, +- DT_CHAR_LITERAL = 273, +- DT_BYTE = 274, +- DT_STRING = 275, +- DT_LABEL = 276, +- DT_REF = 277, +- DT_INCBIN = 278 ++ DT_PLUGIN = 259, ++ DT_MEMRESERVE = 260, ++ DT_LSHIFT = 261, ++ DT_RSHIFT = 262, ++ DT_LE = 263, ++ DT_GE = 264, ++ DT_EQ = 265, ++ DT_NE = 266, ++ DT_AND = 267, ++ DT_OR = 268, ++ DT_BITS = 269, ++ DT_DEL_PROP = 270, ++ DT_DEL_NODE = 271, ++ DT_PROPNODENAME = 272, ++ DT_LITERAL = 273, ++ DT_CHAR_LITERAL = 274, ++ DT_BYTE = 275, ++ DT_STRING = 276, ++ DT_LABEL = 277, ++ DT_REF = 278, ++ DT_INCBIN = 279 + }; + #endif + + /* Value type. */ + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +-typedef union YYSTYPE YYSTYPE; ++ + union YYSTYPE + { +-#line 38 "dtc-parser.y" /* yacc.c:1909 */ ++#line 39 "dtc-parser.y" /* yacc.c:1909 */ + + char *propnodename; + char *labelref; +@@ -92,9 +93,12 @@ union YYSTYPE + struct node *nodelist; + struct reserve_info *re; + uint64_t integer; ++ unsigned int flags; + +-#line 97 "dtc-parser.tab.h" /* yacc.c:1909 */ ++#line 99 "dtc-parser.tab.h" /* yacc.c:1909 */ + }; ++ ++typedef union YYSTYPE YYSTYPE; + # define YYSTYPE_IS_TRIVIAL 1 + # define YYSTYPE_IS_DECLARED 1 + #endif +diff --git a/scripts/dtc/dtc-parser.y b/scripts/dtc/dtc-parser.y +index ea57e0a05..44af170ab 100644 +--- a/scripts/dtc/dtc-parser.y ++++ b/scripts/dtc/dtc-parser.y +@@ -19,6 +19,7 @@ + */ + %{ + #include ++#include + + #include "dtc.h" + #include "srcpos.h" +@@ -31,7 +32,7 @@ extern void yyerror(char const *s); + treesource_error = true; \ + } while (0) + +-extern struct boot_info *the_boot_info; ++extern struct dt_info *parser_output; + extern bool treesource_error; + %} + +@@ -52,9 +53,11 @@ extern bool treesource_error; + struct node *nodelist; + struct reserve_info *re; + uint64_t integer; ++ unsigned int flags; + } + + %token DT_V1 ++%token DT_PLUGIN + %token DT_MEMRESERVE + %token DT_LSHIFT DT_RSHIFT DT_LE DT_GE DT_EQ DT_NE DT_AND DT_OR + %token DT_BITS +@@ -71,6 +74,8 @@ extern bool treesource_error; + + %type propdata + %type propdataprefix ++%type header ++%type headers + %type memreserve + %type memreserves + %type arrayprefix +@@ -101,10 +106,31 @@ extern bool treesource_error; + %% + + sourcefile: +- DT_V1 ';' memreserves devicetree ++ headers memreserves devicetree + { +- the_boot_info = build_boot_info($3, $4, +- guess_boot_cpuid($4)); ++ parser_output = build_dt_info($1, $2, $3, ++ guess_boot_cpuid($3)); ++ } ++ ; ++ ++header: ++ DT_V1 ';' ++ { ++ $$ = DTSF_V1; ++ } ++ | DT_V1 ';' DT_PLUGIN ';' ++ { ++ $$ = DTSF_V1 | DTSF_PLUGIN; ++ } ++ ; ++ ++headers: ++ header ++ | header headers ++ { ++ if ($2 != $1) ++ ERROR(&@2, "Header flags don't match earlier ones"); ++ $$ = $1; + } + ; + +@@ -140,14 +166,45 @@ devicetree: + { + $$ = merge_nodes($1, $3); + } ++ | DT_REF nodedef ++ { ++ /* ++ * We rely on the rule being always: ++ * versioninfo plugindecl memreserves devicetree ++ * so $-1 is what we want (plugindecl) ++ */ ++ if (!($-1 & DTSF_PLUGIN)) ++ ERROR(&@2, "Label or path %s not found", $1); ++ $$ = add_orphan_node(name_node(build_node(NULL, NULL), ""), $2, $1); ++ } ++ | devicetree DT_LABEL DT_REF nodedef ++ { ++ struct node *target = get_node_by_ref($1, $3); ++ ++ if (target) { ++ add_label(&target->labels, $2); ++ merge_nodes(target, $4); ++ } else ++ ERROR(&@3, "Label or path %s not found", $3); ++ $$ = $1; ++ } + | devicetree DT_REF nodedef + { + struct node *target = get_node_by_ref($1, $2); + +- if (target) ++ if (target) { + merge_nodes(target, $3); +- else +- ERROR(&@2, "Label or path %s not found", $2); ++ } else { ++ /* ++ * We rely on the rule being always: ++ * versioninfo plugindecl memreserves devicetree ++ * so $-1 is what we want (plugindecl) ++ */ ++ if ($-1 & DTSF_PLUGIN) ++ add_orphan_node($1, $3, $2); ++ else ++ ERROR(&@2, "Label or path %s not found", $2); ++ } + $$ = $1; + } + | devicetree DT_DEL_NODE DT_REF ';' +@@ -398,8 +455,24 @@ integer_add: + + integer_mul: + integer_mul '*' integer_unary { $$ = $1 * $3; } +- | integer_mul '/' integer_unary { $$ = $1 / $3; } +- | integer_mul '%' integer_unary { $$ = $1 % $3; } ++ | integer_mul '/' integer_unary ++ { ++ if ($3 != 0) { ++ $$ = $1 / $3; ++ } else { ++ ERROR(&@$, "Division by zero"); ++ $$ = 0; ++ } ++ } ++ | integer_mul '%' integer_unary ++ { ++ if ($3 != 0) { ++ $$ = $1 % $3; ++ } else { ++ ERROR(&@$, "Division by zero"); ++ $$ = 0; ++ } ++ } + | integer_unary + ; + +diff --git a/scripts/dtc/dtc.c b/scripts/dtc/dtc.c +index 8c4add69a..c36994e6e 100644 +--- a/scripts/dtc/dtc.c ++++ b/scripts/dtc/dtc.c +@@ -18,6 +18,8 @@ + * USA + */ + ++#include ++ + #include "dtc.h" + #include "srcpos.h" + +@@ -28,7 +30,16 @@ int quiet; /* Level of quietness */ + int reservenum; /* Number of memory reservation slots */ + int minsize; /* Minimum blob size */ + int padsize; /* Additional padding to blob */ +-int phandle_format = PHANDLE_BOTH; /* Use linux,phandle or phandle properties */ ++int alignsize; /* Additional padding to blob accroding to the alignsize */ ++int phandle_format = PHANDLE_EPAPR; /* Use linux,phandle or phandle properties */ ++int generate_symbols; /* enable symbols & fixup support */ ++int generate_fixups; /* suppress generation of fixups on symbol support */ ++int auto_label_aliases; /* auto generate labels -> aliases */ ++ ++static int is_power_of_2(int x) ++{ ++ return (x > 0) && ((x & (x - 1)) == 0); ++} + + static void fill_fullpaths(struct node *tree, const char *prefix) + { +@@ -48,10 +59,8 @@ static void fill_fullpaths(struct node *tree, const char *prefix) + } + + /* Usage related data. */ +-#define FDT_VERSION(version) _FDT_VERSION(version) +-#define _FDT_VERSION(version) #version + static const char usage_synopsis[] = "dtc [options] "; +-static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:fb:i:H:sW:E:hv"; ++static const char usage_short_opts[] = "qI:O:o:V:d:R:S:p:a:fb:i:H:sW:E:@Ahv"; + static struct option const usage_long_opts[] = { + {"quiet", no_argument, NULL, 'q'}, + {"in-format", a_argument, NULL, 'I'}, +@@ -62,6 +71,7 @@ static struct option const usage_long_opts[] = { + {"reserve", a_argument, NULL, 'R'}, + {"space", a_argument, NULL, 'S'}, + {"pad", a_argument, NULL, 'p'}, ++ {"align", a_argument, NULL, 'a'}, + {"boot-cpu", a_argument, NULL, 'b'}, + {"force", no_argument, NULL, 'f'}, + {"include", a_argument, NULL, 'i'}, +@@ -69,6 +79,8 @@ static struct option const usage_long_opts[] = { + {"phandle", a_argument, NULL, 'H'}, + {"warning", a_argument, NULL, 'W'}, + {"error", a_argument, NULL, 'E'}, ++ {"symbols", no_argument, NULL, '@'}, ++ {"auto-alias", no_argument, NULL, 'A'}, + {"help", no_argument, NULL, 'h'}, + {"version", no_argument, NULL, 'v'}, + {NULL, no_argument, NULL, 0x0}, +@@ -84,11 +96,12 @@ static const char * const usage_opts_help[] = { + "\t\tdts - device tree source text\n" + "\t\tdtb - device tree blob\n" + "\t\tasm - assembler source", +- "\n\tBlob version to produce, defaults to "FDT_VERSION(DEFAULT_FDT_VERSION)" (for dtb and asm output)", ++ "\n\tBlob version to produce, defaults to "stringify(DEFAULT_FDT_VERSION)" (for dtb and asm output)", + "\n\tOutput dependency file", + "\n\tMake space for reserve map entries (for dtb and asm output)", + "\n\tMake the blob at least long (extra space)", + "\n\tAdd padding to the blob of long (extra space)", ++ "\n\tMake the blob align to the (extra space)", + "\n\tSet the physical boot cpu", + "\n\tTry to produce output even if the input tree has errors", + "\n\tAdd a path to search for include files", +@@ -99,16 +112,62 @@ static const char * const usage_opts_help[] = { + "\t\tboth - Both \"linux,phandle\" and \"phandle\" properties", + "\n\tEnable/disable warnings (prefix with \"no-\")", + "\n\tEnable/disable errors (prefix with \"no-\")", ++ "\n\tEnable generation of symbols", ++ "\n\tEnable auto-alias of labels", + "\n\tPrint this help and exit", + "\n\tPrint version and exit", + NULL, + }; + ++static const char *guess_type_by_name(const char *fname, const char *fallback) ++{ ++ const char *s; ++ ++ s = strrchr(fname, '.'); ++ if (s == NULL) ++ return fallback; ++ if (!strcasecmp(s, ".dts")) ++ return "dts"; ++ if (!strcasecmp(s, ".dtb")) ++ return "dtb"; ++ return fallback; ++} ++ ++static const char *guess_input_format(const char *fname, const char *fallback) ++{ ++ struct stat statbuf; ++ fdt32_t magic; ++ FILE *f; ++ ++ if (stat(fname, &statbuf) != 0) ++ return fallback; ++ ++ if (S_ISDIR(statbuf.st_mode)) ++ return "fs"; ++ ++ if (!S_ISREG(statbuf.st_mode)) ++ return fallback; ++ ++ f = fopen(fname, "r"); ++ if (f == NULL) ++ return fallback; ++ if (fread(&magic, 4, 1, f) != 1) { ++ fclose(f); ++ return fallback; ++ } ++ fclose(f); ++ ++ if (fdt32_to_cpu(magic) == FDT_MAGIC) ++ return "dtb"; ++ ++ return guess_type_by_name(fname, fallback); ++} ++ + int main(int argc, char *argv[]) + { +- struct boot_info *bi; +- const char *inform = "dts"; +- const char *outform = "dts"; ++ struct dt_info *dti; ++ const char *inform = NULL; ++ const char *outform = NULL; + const char *outname = "-"; + const char *depname = NULL; + bool force = false, sort = false; +@@ -122,6 +181,7 @@ int main(int argc, char *argv[]) + reservenum = 0; + minsize = 0; + padsize = 0; ++ alignsize = 0; + + while ((opt = util_getopt_long()) != EOF) { + switch (opt) { +@@ -149,6 +209,12 @@ int main(int argc, char *argv[]) + case 'p': + padsize = strtol(optarg, NULL, 0); + break; ++ case 'a': ++ alignsize = strtol(optarg, NULL, 0); ++ if (!is_power_of_2(alignsize)) ++ die("Invalid argument \"%d\" to -a option\n", ++ alignsize); ++ break; + case 'f': + force = true; + break; +@@ -187,6 +253,13 @@ int main(int argc, char *argv[]) + parse_checks_option(false, true, optarg); + break; + ++ case '@': ++ generate_symbols = 1; ++ break; ++ case 'A': ++ auto_label_aliases = 1; ++ break; ++ + case 'h': + usage(NULL); + default: +@@ -213,28 +286,58 @@ int main(int argc, char *argv[]) + fprintf(depfile, "%s:", outname); + } + ++ if (inform == NULL) ++ inform = guess_input_format(arg, "dts"); ++ if (outform == NULL) { ++ outform = guess_type_by_name(outname, NULL); ++ if (outform == NULL) { ++ if (streq(inform, "dts")) ++ outform = "dtb"; ++ else ++ outform = "dts"; ++ } ++ } + if (streq(inform, "dts")) +- bi = dt_from_source(arg); ++ dti = dt_from_source(arg); + else if (streq(inform, "fs")) +- bi = dt_from_fs(arg); ++ dti = dt_from_fs(arg); + else if(streq(inform, "dtb")) +- bi = dt_from_blob(arg); ++ dti = dt_from_blob(arg); + else + die("Unknown input format \"%s\"\n", inform); + ++ dti->outname = outname; ++ + if (depfile) { + fputc('\n', depfile); + fclose(depfile); + } + + if (cmdline_boot_cpuid != -1) +- bi->boot_cpuid_phys = cmdline_boot_cpuid; ++ dti->boot_cpuid_phys = cmdline_boot_cpuid; ++ ++ fill_fullpaths(dti->dt, ""); ++ ++ /* on a plugin, generate by default */ ++ if (dti->dtsflags & DTSF_PLUGIN) { ++ generate_fixups = 1; ++ } + +- fill_fullpaths(bi->dt, ""); +- process_checks(force, bi); ++ process_checks(force, dti); ++ ++ if (auto_label_aliases) ++ generate_label_tree(dti, "aliases", false); ++ ++ if (generate_symbols) ++ generate_label_tree(dti, "__symbols__", true); ++ ++ if (generate_fixups) { ++ generate_fixups_tree(dti, "__fixups__"); ++ generate_local_fixups_tree(dti, "__local_fixups__"); ++ } + + if (sort) +- sort_tree(bi); ++ sort_tree(dti); + + if (streq(outname, "-")) { + outf = stdout; +@@ -246,11 +349,11 @@ int main(int argc, char *argv[]) + } + + if (streq(outform, "dts")) { +- dt_to_source(outf, bi); ++ dt_to_source(outf, dti); + } else if (streq(outform, "dtb")) { +- dt_to_blob(outf, bi, outversion); ++ dt_to_blob(outf, dti, outversion); + } else if (streq(outform, "asm")) { +- dt_to_asm(outf, bi, outversion); ++ dt_to_asm(outf, dti, outversion); + } else if (streq(outform, "null")) { + /* do nothing */ + } else { +diff --git a/scripts/dtc/dtc.h b/scripts/dtc/dtc.h +index 56212c8df..3b18a42b8 100644 +--- a/scripts/dtc/dtc.h ++++ b/scripts/dtc/dtc.h +@@ -1,5 +1,5 @@ +-#ifndef _DTC_H +-#define _DTC_H ++#ifndef DTC_H ++#define DTC_H + + /* + * (C) Copyright David Gibson , IBM Corporation. 2005. +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -43,7 +44,6 @@ + #define debug(...) + #endif + +- + #define DEFAULT_FDT_VERSION 17 + + /* +@@ -53,7 +53,11 @@ extern int quiet; /* Level of quietness */ + extern int reservenum; /* Number of memory reservation slots */ + extern int minsize; /* Minimum blob size */ + extern int padsize; /* Additional padding to blob */ ++extern int alignsize; /* Additional padding to blob accroding to the alignsize */ + extern int phandle_format; /* Use linux,phandle or phandle properties */ ++extern int generate_symbols; /* generate symbols for nodes with labels */ ++extern int generate_fixups; /* generate fixups */ ++extern int auto_label_aliases; /* auto generate labels -> aliases */ + + #define PHANDLE_LEGACY 0x1 + #define PHANDLE_EPAPR 0x2 +@@ -63,7 +67,8 @@ typedef uint32_t cell_t; + + + #define streq(a, b) (strcmp((a), (b)) == 0) +-#define strneq(a, b, n) (strncmp((a), (b), (n)) == 0) ++#define strstarts(s, prefix) (strncmp((s), (prefix), strlen(prefix)) == 0) ++#define strprefixeq(a, n, b) (strlen(b) == (n) && (memcmp(a, b, n) == 0)) + + #define ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1)) + +@@ -110,7 +115,7 @@ struct data data_insert_at_marker(struct data d, struct marker *m, + struct data data_merge(struct data d1, struct data d2); + struct data data_append_cell(struct data d, cell_t word); + struct data data_append_integer(struct data d, uint64_t word, int bits); +-struct data data_append_re(struct data d, const struct fdt_reserve_entry *re); ++struct data data_append_re(struct data d, uint64_t address, uint64_t size); + struct data data_append_addr(struct data d, uint64_t addr); + struct data data_append_byte(struct data d, uint8_t byte); + struct data data_append_zeroes(struct data d, int len); +@@ -132,6 +137,10 @@ struct label { + struct label *next; + }; + ++struct bus_type { ++ const char *name; ++}; ++ + struct property { + bool deleted; + char *name; +@@ -158,6 +167,7 @@ struct node { + int addr_cells, size_cells; + + struct label *labels; ++ const struct bus_type *bus; + }; + + #define for_each_label_withdel(l0, l) \ +@@ -194,6 +204,7 @@ struct node *build_node_delete(void); + struct node *name_node(struct node *node, char *name); + struct node *chain_node(struct node *first, struct node *list); + struct node *merge_nodes(struct node *old_node, struct node *new_node); ++struct node *add_orphan_node(struct node *old_node, struct node *new_node, char *ref); + + void add_property(struct node *node, struct property *prop); + void delete_property_by_name(struct node *node, char *name); +@@ -201,10 +212,13 @@ void delete_property(struct property *prop); + void add_child(struct node *parent, struct node *child); + void delete_node_by_name(struct node *parent, char *name); + void delete_node(struct node *node); ++void append_to_property(struct node *node, ++ char *name, const void *data, int len); + + const char *get_unitname(struct node *node); + struct property *get_property(struct node *node, const char *propname); + cell_t propval_cell(struct property *prop); ++cell_t propval_cell_n(struct property *prop, int n); + struct property *get_property_by_label(struct node *tree, const char *label, + struct node **node); + struct marker *get_marker_label(struct node *tree, const char *label, +@@ -221,7 +235,7 @@ uint32_t guess_boot_cpuid(struct node *tree); + /* Boot info (tree plus memreserve information */ + + struct reserve_info { +- struct fdt_reserve_entry re; ++ uint64_t address, size; + + struct reserve_info *next; + +@@ -235,35 +249,45 @@ struct reserve_info *add_reserve_entry(struct reserve_info *list, + struct reserve_info *new); + + +-struct boot_info { ++struct dt_info { ++ unsigned int dtsflags; + struct reserve_info *reservelist; +- struct node *dt; /* the device tree */ + uint32_t boot_cpuid_phys; ++ struct node *dt; /* the device tree */ ++ const char *outname; /* filename being written to, "-" for stdout */ + }; + +-struct boot_info *build_boot_info(struct reserve_info *reservelist, +- struct node *tree, uint32_t boot_cpuid_phys); +-void sort_tree(struct boot_info *bi); ++/* DTS version flags definitions */ ++#define DTSF_V1 0x0001 /* /dts-v1/ */ ++#define DTSF_PLUGIN 0x0002 /* /plugin/ */ ++ ++struct dt_info *build_dt_info(unsigned int dtsflags, ++ struct reserve_info *reservelist, ++ struct node *tree, uint32_t boot_cpuid_phys); ++void sort_tree(struct dt_info *dti); ++void generate_label_tree(struct dt_info *dti, char *name, bool allocph); ++void generate_fixups_tree(struct dt_info *dti, char *name); ++void generate_local_fixups_tree(struct dt_info *dti, char *name); + + /* Checks */ + + void parse_checks_option(bool warn, bool error, const char *arg); +-void process_checks(bool force, struct boot_info *bi); ++void process_checks(bool force, struct dt_info *dti); + + /* Flattened trees */ + +-void dt_to_blob(FILE *f, struct boot_info *bi, int version); +-void dt_to_asm(FILE *f, struct boot_info *bi, int version); ++void dt_to_blob(FILE *f, struct dt_info *dti, int version); ++void dt_to_asm(FILE *f, struct dt_info *dti, int version); + +-struct boot_info *dt_from_blob(const char *fname); ++struct dt_info *dt_from_blob(const char *fname); + + /* Tree source */ + +-void dt_to_source(FILE *f, struct boot_info *bi); +-struct boot_info *dt_from_source(const char *f); ++void dt_to_source(FILE *f, struct dt_info *dti); ++struct dt_info *dt_from_source(const char *f); + + /* FS trees */ + +-struct boot_info *dt_from_fs(const char *dirname); ++struct dt_info *dt_from_fs(const char *dirname); + +-#endif /* _DTC_H */ ++#endif /* DTC_H */ +diff --git a/scripts/dtc/fdt.c b/scripts/dtc/fdt.c +index 2ce6a4417..7855a1787 100644 +--- a/scripts/dtc/fdt.c ++++ b/scripts/dtc/fdt.c +@@ -76,18 +76,19 @@ int fdt_check_header(const void *fdt) + + const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int len) + { +- const char *p; ++ unsigned absoffset = offset + fdt_off_dt_struct(fdt); ++ ++ if ((absoffset < offset) ++ || ((absoffset + len) < absoffset) ++ || (absoffset + len) > fdt_totalsize(fdt)) ++ return NULL; + + if (fdt_version(fdt) >= 0x11) + if (((offset + len) < offset) + || ((offset + len) > fdt_size_dt_struct(fdt))) + return NULL; + +- p = _fdt_offset_ptr(fdt, offset); +- +- if (p + len < p) +- return NULL; +- return p; ++ return fdt_offset_ptr_(fdt, offset); + } + + uint32_t fdt_next_tag(const void *fdt, int startoffset, int *nextoffset) +@@ -122,6 +123,9 @@ uint32_t fdt_next_tag(const void *fdt, int startoffset, int *nextoffset) + /* skip-name offset, length and value */ + offset += sizeof(struct fdt_property) - FDT_TAGSIZE + + fdt32_to_cpu(*lenp); ++ if (fdt_version(fdt) < 0x10 && fdt32_to_cpu(*lenp) >= 8 && ++ ((offset - fdt32_to_cpu(*lenp)) % 8) != 0) ++ offset += 4; + break; + + case FDT_END: +@@ -140,7 +144,7 @@ uint32_t fdt_next_tag(const void *fdt, int startoffset, int *nextoffset) + return tag; + } + +-int _fdt_check_node_offset(const void *fdt, int offset) ++int fdt_check_node_offset_(const void *fdt, int offset) + { + if ((offset < 0) || (offset % FDT_TAGSIZE) + || (fdt_next_tag(fdt, offset, &offset) != FDT_BEGIN_NODE)) +@@ -149,7 +153,7 @@ int _fdt_check_node_offset(const void *fdt, int offset) + return offset; + } + +-int _fdt_check_prop_offset(const void *fdt, int offset) ++int fdt_check_prop_offset_(const void *fdt, int offset) + { + if ((offset < 0) || (offset % FDT_TAGSIZE) + || (fdt_next_tag(fdt, offset, &offset) != FDT_PROP)) +@@ -164,7 +168,7 @@ int fdt_next_node(const void *fdt, int offset, int *depth) + uint32_t tag; + + if (offset >= 0) +- if ((nextoffset = _fdt_check_node_offset(fdt, offset)) < 0) ++ if ((nextoffset = fdt_check_node_offset_(fdt, offset)) < 0) + return nextoffset; + + do { +@@ -226,7 +230,7 @@ int fdt_next_subnode(const void *fdt, int offset) + return offset; + } + +-const char *_fdt_find_string(const char *strtab, int tabsize, const char *s) ++const char *fdt_find_string_(const char *strtab, int tabsize, const char *s) + { + int len = strlen(s) + 1; + const char *last = strtab + tabsize - len; +diff --git a/scripts/dtc/fdt.h b/scripts/dtc/fdt.h +index 526aedb51..74961f902 100644 +--- a/scripts/dtc/fdt.h ++++ b/scripts/dtc/fdt.h +@@ -1,5 +1,5 @@ +-#ifndef _FDT_H +-#define _FDT_H ++#ifndef FDT_H ++#define FDT_H + /* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. +@@ -108,4 +108,4 @@ struct fdt_property { + #define FDT_V16_SIZE FDT_V3_SIZE + #define FDT_V17_SIZE (FDT_V16_SIZE + sizeof(fdt32_t)) + +-#endif /* _FDT_H */ ++#endif /* FDT_H */ +diff --git a/scripts/dtc/fdt_empty_tree.c b/scripts/dtc/fdt_empty_tree.c +index f72d13b1d..f2ae9b77c 100644 +--- a/scripts/dtc/fdt_empty_tree.c ++++ b/scripts/dtc/fdt_empty_tree.c +@@ -81,4 +81,3 @@ int fdt_create_empty_tree(void *buf, int bufsize) + + return fdt_open_into(buf, buf, bufsize); + } +- +diff --git a/scripts/dtc/fdt_ro.c b/scripts/dtc/fdt_ro.c +index 50007f61c..dfb3236da 100644 +--- a/scripts/dtc/fdt_ro.c ++++ b/scripts/dtc/fdt_ro.c +@@ -55,12 +55,13 @@ + + #include "libfdt_internal.h" + +-static int _fdt_nodename_eq(const void *fdt, int offset, ++static int fdt_nodename_eq_(const void *fdt, int offset, + const char *s, int len) + { +- const char *p = fdt_offset_ptr(fdt, offset + FDT_TAGSIZE, len+1); ++ int olen; ++ const char *p = fdt_get_name(fdt, offset, &olen); + +- if (! p) ++ if (!p || olen < len) + /* short match */ + return 0; + +@@ -80,7 +81,7 @@ const char *fdt_string(const void *fdt, int stroffset) + return (const char *)fdt + fdt_off_dt_strings(fdt) + stroffset; + } + +-static int _fdt_string_eq(const void *fdt, int stroffset, ++static int fdt_string_eq_(const void *fdt, int stroffset, + const char *s, int len) + { + const char *p = fdt_string(fdt, stroffset); +@@ -88,11 +89,37 @@ static int _fdt_string_eq(const void *fdt, int stroffset, + return (strlen(p) == len) && (memcmp(p, s, len) == 0); + } + ++uint32_t fdt_get_max_phandle(const void *fdt) ++{ ++ uint32_t max_phandle = 0; ++ int offset; ++ ++ for (offset = fdt_next_node(fdt, -1, NULL);; ++ offset = fdt_next_node(fdt, offset, NULL)) { ++ uint32_t phandle; ++ ++ if (offset == -FDT_ERR_NOTFOUND) ++ return max_phandle; ++ ++ if (offset < 0) ++ return (uint32_t)-1; ++ ++ phandle = fdt_get_phandle(fdt, offset); ++ if (phandle == (uint32_t)-1) ++ continue; ++ ++ if (phandle > max_phandle) ++ max_phandle = phandle; ++ } ++ ++ return 0; ++} ++ + int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size) + { + FDT_CHECK_HEADER(fdt); +- *address = fdt64_to_cpu(_fdt_mem_rsv(fdt, n)->address); +- *size = fdt64_to_cpu(_fdt_mem_rsv(fdt, n)->size); ++ *address = fdt64_to_cpu(fdt_mem_rsv_(fdt, n)->address); ++ *size = fdt64_to_cpu(fdt_mem_rsv_(fdt, n)->size); + return 0; + } + +@@ -100,12 +127,12 @@ int fdt_num_mem_rsv(const void *fdt) + { + int i = 0; + +- while (fdt64_to_cpu(_fdt_mem_rsv(fdt, i)->size) != 0) ++ while (fdt64_to_cpu(fdt_mem_rsv_(fdt, i)->size) != 0) + i++; + return i; + } + +-static int _nextprop(const void *fdt, int offset) ++static int nextprop_(const void *fdt, int offset) + { + uint32_t tag; + int nextoffset; +@@ -140,7 +167,7 @@ int fdt_subnode_offset_namelen(const void *fdt, int offset, + (offset >= 0) && (depth >= 0); + offset = fdt_next_node(fdt, offset, &depth)) + if ((depth == 1) +- && _fdt_nodename_eq(fdt, offset, name, namelen)) ++ && fdt_nodename_eq_(fdt, offset, name, namelen)) + return offset; + + if (depth < 0) +@@ -154,9 +181,9 @@ int fdt_subnode_offset(const void *fdt, int parentoffset, + return fdt_subnode_offset_namelen(fdt, parentoffset, name, strlen(name)); + } + +-int fdt_path_offset(const void *fdt, const char *path) ++int fdt_path_offset_namelen(const void *fdt, const char *path, int namelen) + { +- const char *end = path + strlen(path); ++ const char *end = path + namelen; + const char *p = path; + int offset = 0; + +@@ -164,7 +191,7 @@ int fdt_path_offset(const void *fdt, const char *path) + + /* see if we have an alias */ + if (*path != '/') { +- const char *q = strchr(path, '/'); ++ const char *q = memchr(path, '/', end - p); + + if (!q) + q = end; +@@ -177,14 +204,15 @@ int fdt_path_offset(const void *fdt, const char *path) + p = q; + } + +- while (*p) { ++ while (p < end) { + const char *q; + +- while (*p == '/') ++ while (*p == '/') { + p++; +- if (! *p) +- return offset; +- q = strchr(p, '/'); ++ if (p == end) ++ return offset; ++ } ++ q = memchr(p, '/', end - p); + if (! q) + q = end; + +@@ -198,19 +226,42 @@ int fdt_path_offset(const void *fdt, const char *path) + return offset; + } + ++int fdt_path_offset(const void *fdt, const char *path) ++{ ++ return fdt_path_offset_namelen(fdt, path, strlen(path)); ++} ++ + const char *fdt_get_name(const void *fdt, int nodeoffset, int *len) + { +- const struct fdt_node_header *nh = _fdt_offset_ptr(fdt, nodeoffset); ++ const struct fdt_node_header *nh = fdt_offset_ptr_(fdt, nodeoffset); ++ const char *nameptr; + int err; + + if (((err = fdt_check_header(fdt)) != 0) +- || ((err = _fdt_check_node_offset(fdt, nodeoffset)) < 0)) ++ || ((err = fdt_check_node_offset_(fdt, nodeoffset)) < 0)) + goto fail; + ++ nameptr = nh->name; ++ ++ if (fdt_version(fdt) < 0x10) { ++ /* ++ * For old FDT versions, match the naming conventions of V16: ++ * give only the leaf name (after all /). The actual tree ++ * contents are loosely checked. ++ */ ++ const char *leaf; ++ leaf = strrchr(nameptr, '/'); ++ if (leaf == NULL) { ++ err = -FDT_ERR_BADSTRUCTURE; ++ goto fail; ++ } ++ nameptr = leaf+1; ++ } ++ + if (len) +- *len = strlen(nh->name); ++ *len = strlen(nameptr); + +- return nh->name; ++ return nameptr; + + fail: + if (len) +@@ -222,34 +273,34 @@ int fdt_first_property_offset(const void *fdt, int nodeoffset) + { + int offset; + +- if ((offset = _fdt_check_node_offset(fdt, nodeoffset)) < 0) ++ if ((offset = fdt_check_node_offset_(fdt, nodeoffset)) < 0) + return offset; + +- return _nextprop(fdt, offset); ++ return nextprop_(fdt, offset); + } + + int fdt_next_property_offset(const void *fdt, int offset) + { +- if ((offset = _fdt_check_prop_offset(fdt, offset)) < 0) ++ if ((offset = fdt_check_prop_offset_(fdt, offset)) < 0) + return offset; + +- return _nextprop(fdt, offset); ++ return nextprop_(fdt, offset); + } + +-const struct fdt_property *fdt_get_property_by_offset(const void *fdt, +- int offset, +- int *lenp) ++static const struct fdt_property *fdt_get_property_by_offset_(const void *fdt, ++ int offset, ++ int *lenp) + { + int err; + const struct fdt_property *prop; + +- if ((err = _fdt_check_prop_offset(fdt, offset)) < 0) { ++ if ((err = fdt_check_prop_offset_(fdt, offset)) < 0) { + if (lenp) + *lenp = err; + return NULL; + } + +- prop = _fdt_offset_ptr(fdt, offset); ++ prop = fdt_offset_ptr_(fdt, offset); + + if (lenp) + *lenp = fdt32_to_cpu(prop->len); +@@ -257,23 +308,44 @@ const struct fdt_property *fdt_get_property_by_offset(const void *fdt, + return prop; + } + +-const struct fdt_property *fdt_get_property_namelen(const void *fdt, +- int offset, +- const char *name, +- int namelen, int *lenp) ++const struct fdt_property *fdt_get_property_by_offset(const void *fdt, ++ int offset, ++ int *lenp) ++{ ++ /* Prior to version 16, properties may need realignment ++ * and this API does not work. fdt_getprop_*() will, however. */ ++ ++ if (fdt_version(fdt) < 0x10) { ++ if (lenp) ++ *lenp = -FDT_ERR_BADVERSION; ++ return NULL; ++ } ++ ++ return fdt_get_property_by_offset_(fdt, offset, lenp); ++} ++ ++static const struct fdt_property *fdt_get_property_namelen_(const void *fdt, ++ int offset, ++ const char *name, ++ int namelen, ++ int *lenp, ++ int *poffset) + { + for (offset = fdt_first_property_offset(fdt, offset); + (offset >= 0); + (offset = fdt_next_property_offset(fdt, offset))) { + const struct fdt_property *prop; + +- if (!(prop = fdt_get_property_by_offset(fdt, offset, lenp))) { ++ if (!(prop = fdt_get_property_by_offset_(fdt, offset, lenp))) { + offset = -FDT_ERR_INTERNAL; + break; + } +- if (_fdt_string_eq(fdt, fdt32_to_cpu(prop->nameoff), +- name, namelen)) ++ if (fdt_string_eq_(fdt, fdt32_to_cpu(prop->nameoff), ++ name, namelen)) { ++ if (poffset) ++ *poffset = offset; + return prop; ++ } + } + + if (lenp) +@@ -281,6 +353,25 @@ const struct fdt_property *fdt_get_property_namelen(const void *fdt, + return NULL; + } + ++ ++const struct fdt_property *fdt_get_property_namelen(const void *fdt, ++ int offset, ++ const char *name, ++ int namelen, int *lenp) ++{ ++ /* Prior to version 16, properties may need realignment ++ * and this API does not work. fdt_getprop_*() will, however. */ ++ if (fdt_version(fdt) < 0x10) { ++ if (lenp) ++ *lenp = -FDT_ERR_BADVERSION; ++ return NULL; ++ } ++ ++ return fdt_get_property_namelen_(fdt, offset, name, namelen, lenp, ++ NULL); ++} ++ ++ + const struct fdt_property *fdt_get_property(const void *fdt, + int nodeoffset, + const char *name, int *lenp) +@@ -292,12 +383,18 @@ const struct fdt_property *fdt_get_property(const void *fdt, + const void *fdt_getprop_namelen(const void *fdt, int nodeoffset, + const char *name, int namelen, int *lenp) + { ++ int poffset; + const struct fdt_property *prop; + +- prop = fdt_get_property_namelen(fdt, nodeoffset, name, namelen, lenp); +- if (! prop) ++ prop = fdt_get_property_namelen_(fdt, nodeoffset, name, namelen, lenp, ++ &poffset); ++ if (!prop) + return NULL; + ++ /* Handle realignment */ ++ if (fdt_version(fdt) < 0x10 && (poffset + sizeof(*prop)) % 8 && ++ fdt32_to_cpu(prop->len) >= 8) ++ return prop->data + 4; + return prop->data; + } + +@@ -306,11 +403,16 @@ const void *fdt_getprop_by_offset(const void *fdt, int offset, + { + const struct fdt_property *prop; + +- prop = fdt_get_property_by_offset(fdt, offset, lenp); ++ prop = fdt_get_property_by_offset_(fdt, offset, lenp); + if (!prop) + return NULL; + if (namep) + *namep = fdt_string(fdt, fdt32_to_cpu(prop->nameoff)); ++ ++ /* Handle realignment */ ++ if (fdt_version(fdt) < 0x10 && (offset + sizeof(*prop)) % 8 && ++ fdt32_to_cpu(prop->len) >= 8) ++ return prop->data + 4; + return prop->data; + } + +@@ -532,6 +634,106 @@ int fdt_stringlist_contains(const char *strlist, int listlen, const char *str) + return 0; + } + ++int fdt_stringlist_count(const void *fdt, int nodeoffset, const char *property) ++{ ++ const char *list, *end; ++ int length, count = 0; ++ ++ list = fdt_getprop(fdt, nodeoffset, property, &length); ++ if (!list) ++ return length; ++ ++ end = list + length; ++ ++ while (list < end) { ++ length = strnlen(list, end - list) + 1; ++ ++ /* Abort if the last string isn't properly NUL-terminated. */ ++ if (list + length > end) ++ return -FDT_ERR_BADVALUE; ++ ++ list += length; ++ count++; ++ } ++ ++ return count; ++} ++ ++int fdt_stringlist_search(const void *fdt, int nodeoffset, const char *property, ++ const char *string) ++{ ++ int length, len, idx = 0; ++ const char *list, *end; ++ ++ list = fdt_getprop(fdt, nodeoffset, property, &length); ++ if (!list) ++ return length; ++ ++ len = strlen(string) + 1; ++ end = list + length; ++ ++ while (list < end) { ++ length = strnlen(list, end - list) + 1; ++ ++ /* Abort if the last string isn't properly NUL-terminated. */ ++ if (list + length > end) ++ return -FDT_ERR_BADVALUE; ++ ++ if (length == len && memcmp(list, string, length) == 0) ++ return idx; ++ ++ list += length; ++ idx++; ++ } ++ ++ return -FDT_ERR_NOTFOUND; ++} ++ ++const char *fdt_stringlist_get(const void *fdt, int nodeoffset, ++ const char *property, int idx, ++ int *lenp) ++{ ++ const char *list, *end; ++ int length; ++ ++ list = fdt_getprop(fdt, nodeoffset, property, &length); ++ if (!list) { ++ if (lenp) ++ *lenp = length; ++ ++ return NULL; ++ } ++ ++ end = list + length; ++ ++ while (list < end) { ++ length = strnlen(list, end - list) + 1; ++ ++ /* Abort if the last string isn't properly NUL-terminated. */ ++ if (list + length > end) { ++ if (lenp) ++ *lenp = -FDT_ERR_BADVALUE; ++ ++ return NULL; ++ } ++ ++ if (idx == 0) { ++ if (lenp) ++ *lenp = length - 1; ++ ++ return list; ++ } ++ ++ list += length; ++ idx--; ++ } ++ ++ if (lenp) ++ *lenp = -FDT_ERR_NOTFOUND; ++ ++ return NULL; ++} ++ + int fdt_node_check_compatible(const void *fdt, int nodeoffset, + const char *compatible) + { +@@ -541,10 +743,8 @@ int fdt_node_check_compatible(const void *fdt, int nodeoffset, + prop = fdt_getprop(fdt, nodeoffset, "compatible", &len); + if (!prop) + return len; +- if (fdt_stringlist_contains(prop, len, compatible)) +- return 0; +- else +- return 1; ++ ++ return !fdt_stringlist_contains(prop, len, compatible); + } + + int fdt_node_offset_by_compatible(const void *fdt, int startoffset, +diff --git a/scripts/dtc/fdt_rw.c b/scripts/dtc/fdt_rw.c +index 70adec6c3..9b829051e 100644 +--- a/scripts/dtc/fdt_rw.c ++++ b/scripts/dtc/fdt_rw.c +@@ -55,8 +55,8 @@ + + #include "libfdt_internal.h" + +-static int _fdt_blocks_misordered(const void *fdt, +- int mem_rsv_size, int struct_size) ++static int fdt_blocks_misordered_(const void *fdt, ++ int mem_rsv_size, int struct_size) + { + return (fdt_off_mem_rsvmap(fdt) < FDT_ALIGN(sizeof(struct fdt_header), 8)) + || (fdt_off_dt_struct(fdt) < +@@ -67,13 +67,13 @@ static int _fdt_blocks_misordered(const void *fdt, + (fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt))); + } + +-static int _fdt_rw_check_header(void *fdt) ++static int fdt_rw_check_header_(void *fdt) + { + FDT_CHECK_HEADER(fdt); + + if (fdt_version(fdt) < 17) + return -FDT_ERR_BADVERSION; +- if (_fdt_blocks_misordered(fdt, sizeof(struct fdt_reserve_entry), ++ if (fdt_blocks_misordered_(fdt, sizeof(struct fdt_reserve_entry), + fdt_size_dt_struct(fdt))) + return -FDT_ERR_BADLAYOUT; + if (fdt_version(fdt) > 17) +@@ -84,35 +84,37 @@ static int _fdt_rw_check_header(void *fdt) + + #define FDT_RW_CHECK_HEADER(fdt) \ + { \ +- int __err; \ +- if ((__err = _fdt_rw_check_header(fdt)) != 0) \ +- return __err; \ ++ int err_; \ ++ if ((err_ = fdt_rw_check_header_(fdt)) != 0) \ ++ return err_; \ + } + +-static inline int _fdt_data_size(void *fdt) ++static inline int fdt_data_size_(void *fdt) + { + return fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt); + } + +-static int _fdt_splice(void *fdt, void *splicepoint, int oldlen, int newlen) ++static int fdt_splice_(void *fdt, void *splicepoint, int oldlen, int newlen) + { + char *p = splicepoint; +- char *end = (char *)fdt + _fdt_data_size(fdt); ++ char *end = (char *)fdt + fdt_data_size_(fdt); + + if (((p + oldlen) < p) || ((p + oldlen) > end)) + return -FDT_ERR_BADOFFSET; ++ if ((p < (char *)fdt) || ((end - oldlen + newlen) < (char *)fdt)) ++ return -FDT_ERR_BADOFFSET; + if ((end - oldlen + newlen) > ((char *)fdt + fdt_totalsize(fdt))) + return -FDT_ERR_NOSPACE; + memmove(p + newlen, p + oldlen, end - p - oldlen); + return 0; + } + +-static int _fdt_splice_mem_rsv(void *fdt, struct fdt_reserve_entry *p, ++static int fdt_splice_mem_rsv_(void *fdt, struct fdt_reserve_entry *p, + int oldn, int newn) + { + int delta = (newn - oldn) * sizeof(*p); + int err; +- err = _fdt_splice(fdt, p, oldn * sizeof(*p), newn * sizeof(*p)); ++ err = fdt_splice_(fdt, p, oldn * sizeof(*p), newn * sizeof(*p)); + if (err) + return err; + fdt_set_off_dt_struct(fdt, fdt_off_dt_struct(fdt) + delta); +@@ -120,13 +122,13 @@ static int _fdt_splice_mem_rsv(void *fdt, struct fdt_reserve_entry *p, + return 0; + } + +-static int _fdt_splice_struct(void *fdt, void *p, ++static int fdt_splice_struct_(void *fdt, void *p, + int oldlen, int newlen) + { + int delta = newlen - oldlen; + int err; + +- if ((err = _fdt_splice(fdt, p, oldlen, newlen))) ++ if ((err = fdt_splice_(fdt, p, oldlen, newlen))) + return err; + + fdt_set_size_dt_struct(fdt, fdt_size_dt_struct(fdt) + delta); +@@ -134,20 +136,20 @@ static int _fdt_splice_struct(void *fdt, void *p, + return 0; + } + +-static int _fdt_splice_string(void *fdt, int newlen) ++static int fdt_splice_string_(void *fdt, int newlen) + { + void *p = (char *)fdt + + fdt_off_dt_strings(fdt) + fdt_size_dt_strings(fdt); + int err; + +- if ((err = _fdt_splice(fdt, p, 0, newlen))) ++ if ((err = fdt_splice_(fdt, p, 0, newlen))) + return err; + + fdt_set_size_dt_strings(fdt, fdt_size_dt_strings(fdt) + newlen); + return 0; + } + +-static int _fdt_find_add_string(void *fdt, const char *s) ++static int fdt_find_add_string_(void *fdt, const char *s) + { + char *strtab = (char *)fdt + fdt_off_dt_strings(fdt); + const char *p; +@@ -155,13 +157,13 @@ static int _fdt_find_add_string(void *fdt, const char *s) + int len = strlen(s) + 1; + int err; + +- p = _fdt_find_string(strtab, fdt_size_dt_strings(fdt), s); ++ p = fdt_find_string_(strtab, fdt_size_dt_strings(fdt), s); + if (p) + /* found it */ + return (p - strtab); + + new = strtab + fdt_size_dt_strings(fdt); +- err = _fdt_splice_string(fdt, len); ++ err = fdt_splice_string_(fdt, len); + if (err) + return err; + +@@ -176,8 +178,8 @@ int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size) + + FDT_RW_CHECK_HEADER(fdt); + +- re = _fdt_mem_rsv_w(fdt, fdt_num_mem_rsv(fdt)); +- err = _fdt_splice_mem_rsv(fdt, re, 0, 1); ++ re = fdt_mem_rsv_w_(fdt, fdt_num_mem_rsv(fdt)); ++ err = fdt_splice_mem_rsv_(fdt, re, 0, 1); + if (err) + return err; + +@@ -188,31 +190,27 @@ int fdt_add_mem_rsv(void *fdt, uint64_t address, uint64_t size) + + int fdt_del_mem_rsv(void *fdt, int n) + { +- struct fdt_reserve_entry *re = _fdt_mem_rsv_w(fdt, n); +- int err; ++ struct fdt_reserve_entry *re = fdt_mem_rsv_w_(fdt, n); + + FDT_RW_CHECK_HEADER(fdt); + + if (n >= fdt_num_mem_rsv(fdt)) + return -FDT_ERR_NOTFOUND; + +- err = _fdt_splice_mem_rsv(fdt, re, 1, 0); +- if (err) +- return err; +- return 0; ++ return fdt_splice_mem_rsv_(fdt, re, 1, 0); + } + +-static int _fdt_resize_property(void *fdt, int nodeoffset, const char *name, ++static int fdt_resize_property_(void *fdt, int nodeoffset, const char *name, + int len, struct fdt_property **prop) + { + int oldlen; + int err; + + *prop = fdt_get_property_w(fdt, nodeoffset, name, &oldlen); +- if (! (*prop)) ++ if (!*prop) + return oldlen; + +- if ((err = _fdt_splice_struct(fdt, (*prop)->data, FDT_TAGALIGN(oldlen), ++ if ((err = fdt_splice_struct_(fdt, (*prop)->data, FDT_TAGALIGN(oldlen), + FDT_TAGALIGN(len)))) + return err; + +@@ -220,7 +218,7 @@ static int _fdt_resize_property(void *fdt, int nodeoffset, const char *name, + return 0; + } + +-static int _fdt_add_property(void *fdt, int nodeoffset, const char *name, ++static int fdt_add_property_(void *fdt, int nodeoffset, const char *name, + int len, struct fdt_property **prop) + { + int proplen; +@@ -228,17 +226,17 @@ static int _fdt_add_property(void *fdt, int nodeoffset, const char *name, + int namestroff; + int err; + +- if ((nextoffset = _fdt_check_node_offset(fdt, nodeoffset)) < 0) ++ if ((nextoffset = fdt_check_node_offset_(fdt, nodeoffset)) < 0) + return nextoffset; + +- namestroff = _fdt_find_add_string(fdt, name); ++ namestroff = fdt_find_add_string_(fdt, name); + if (namestroff < 0) + return namestroff; + +- *prop = _fdt_offset_ptr_w(fdt, nextoffset); ++ *prop = fdt_offset_ptr_w_(fdt, nextoffset); + proplen = sizeof(**prop) + FDT_TAGALIGN(len); + +- err = _fdt_splice_struct(fdt, *prop, 0, proplen); ++ err = fdt_splice_struct_(fdt, *prop, 0, proplen); + if (err) + return err; + +@@ -262,7 +260,7 @@ int fdt_set_name(void *fdt, int nodeoffset, const char *name) + + newlen = strlen(name); + +- err = _fdt_splice_struct(fdt, namep, FDT_TAGALIGN(oldlen+1), ++ err = fdt_splice_struct_(fdt, namep, FDT_TAGALIGN(oldlen+1), + FDT_TAGALIGN(newlen+1)); + if (err) + return err; +@@ -271,21 +269,36 @@ int fdt_set_name(void *fdt, int nodeoffset, const char *name) + return 0; + } + +-int fdt_setprop(void *fdt, int nodeoffset, const char *name, +- const void *val, int len) ++int fdt_setprop_placeholder(void *fdt, int nodeoffset, const char *name, ++ int len, void **prop_data) + { + struct fdt_property *prop; + int err; + + FDT_RW_CHECK_HEADER(fdt); + +- err = _fdt_resize_property(fdt, nodeoffset, name, len, &prop); ++ err = fdt_resize_property_(fdt, nodeoffset, name, len, &prop); + if (err == -FDT_ERR_NOTFOUND) +- err = _fdt_add_property(fdt, nodeoffset, name, len, &prop); ++ err = fdt_add_property_(fdt, nodeoffset, name, len, &prop); ++ if (err) ++ return err; ++ ++ *prop_data = prop->data; ++ return 0; ++} ++ ++int fdt_setprop(void *fdt, int nodeoffset, const char *name, ++ const void *val, int len) ++{ ++ void *prop_data; ++ int err; ++ ++ err = fdt_setprop_placeholder(fdt, nodeoffset, name, len, &prop_data); + if (err) + return err; + +- memcpy(prop->data, val, len); ++ if (len) ++ memcpy(prop_data, val, len); + return 0; + } + +@@ -300,7 +313,7 @@ int fdt_appendprop(void *fdt, int nodeoffset, const char *name, + prop = fdt_get_property_w(fdt, nodeoffset, name, &oldlen); + if (prop) { + newlen = len + oldlen; +- err = _fdt_splice_struct(fdt, prop->data, ++ err = fdt_splice_struct_(fdt, prop->data, + FDT_TAGALIGN(oldlen), + FDT_TAGALIGN(newlen)); + if (err) +@@ -308,7 +321,7 @@ int fdt_appendprop(void *fdt, int nodeoffset, const char *name, + prop->len = cpu_to_fdt32(newlen); + memcpy(prop->data + oldlen, val, len); + } else { +- err = _fdt_add_property(fdt, nodeoffset, name, len, &prop); ++ err = fdt_add_property_(fdt, nodeoffset, name, len, &prop); + if (err) + return err; + memcpy(prop->data, val, len); +@@ -324,11 +337,11 @@ int fdt_delprop(void *fdt, int nodeoffset, const char *name) + FDT_RW_CHECK_HEADER(fdt); + + prop = fdt_get_property_w(fdt, nodeoffset, name, &len); +- if (! prop) ++ if (!prop) + return len; + + proplen = sizeof(*prop) + FDT_TAGALIGN(len); +- return _fdt_splice_struct(fdt, prop, proplen, 0); ++ return fdt_splice_struct_(fdt, prop, proplen, 0); + } + + int fdt_add_subnode_namelen(void *fdt, int parentoffset, +@@ -356,10 +369,10 @@ int fdt_add_subnode_namelen(void *fdt, int parentoffset, + tag = fdt_next_tag(fdt, offset, &nextoffset); + } while ((tag == FDT_PROP) || (tag == FDT_NOP)); + +- nh = _fdt_offset_ptr_w(fdt, offset); ++ nh = fdt_offset_ptr_w_(fdt, offset); + nodelen = sizeof(*nh) + FDT_TAGALIGN(namelen+1) + FDT_TAGSIZE; + +- err = _fdt_splice_struct(fdt, nh, 0, nodelen); ++ err = fdt_splice_struct_(fdt, nh, 0, nodelen); + if (err) + return err; + +@@ -383,15 +396,15 @@ int fdt_del_node(void *fdt, int nodeoffset) + + FDT_RW_CHECK_HEADER(fdt); + +- endoffset = _fdt_node_end_offset(fdt, nodeoffset); ++ endoffset = fdt_node_end_offset_(fdt, nodeoffset); + if (endoffset < 0) + return endoffset; + +- return _fdt_splice_struct(fdt, _fdt_offset_ptr_w(fdt, nodeoffset), ++ return fdt_splice_struct_(fdt, fdt_offset_ptr_w_(fdt, nodeoffset), + endoffset - nodeoffset, 0); + } + +-static void _fdt_packblocks(const char *old, char *new, ++static void fdt_packblocks_(const char *old, char *new, + int mem_rsv_size, int struct_size) + { + int mem_rsv_off, struct_off, strings_off; +@@ -437,7 +450,7 @@ int fdt_open_into(const void *fdt, void *buf, int bufsize) + return struct_size; + } + +- if (!_fdt_blocks_misordered(fdt, mem_rsv_size, struct_size)) { ++ if (!fdt_blocks_misordered_(fdt, mem_rsv_size, struct_size)) { + /* no further work necessary */ + err = fdt_move(fdt, buf, bufsize); + if (err) +@@ -465,7 +478,7 @@ int fdt_open_into(const void *fdt, void *buf, int bufsize) + return -FDT_ERR_NOSPACE; + } + +- _fdt_packblocks(fdt, tmp, mem_rsv_size, struct_size); ++ fdt_packblocks_(fdt, tmp, mem_rsv_size, struct_size); + memmove(buf, tmp, newsize); + + fdt_set_magic(buf, FDT_MAGIC); +@@ -485,8 +498,8 @@ int fdt_pack(void *fdt) + + mem_rsv_size = (fdt_num_mem_rsv(fdt)+1) + * sizeof(struct fdt_reserve_entry); +- _fdt_packblocks(fdt, fdt, mem_rsv_size, fdt_size_dt_struct(fdt)); +- fdt_set_totalsize(fdt, _fdt_data_size(fdt)); ++ fdt_packblocks_(fdt, fdt, mem_rsv_size, fdt_size_dt_struct(fdt)); ++ fdt_set_totalsize(fdt, fdt_data_size_(fdt)); + + return 0; + } +diff --git a/scripts/dtc/fdt_strerror.c b/scripts/dtc/fdt_strerror.c +index e6c3ceee8..9677a1887 100644 +--- a/scripts/dtc/fdt_strerror.c ++++ b/scripts/dtc/fdt_strerror.c +@@ -69,6 +69,7 @@ static struct fdt_errtabent fdt_errtable[] = { + + FDT_ERRTABENT(FDT_ERR_BADOFFSET), + FDT_ERRTABENT(FDT_ERR_BADPATH), ++ FDT_ERRTABENT(FDT_ERR_BADPHANDLE), + FDT_ERRTABENT(FDT_ERR_BADSTATE), + + FDT_ERRTABENT(FDT_ERR_TRUNCATED), +@@ -76,6 +77,11 @@ static struct fdt_errtabent fdt_errtable[] = { + FDT_ERRTABENT(FDT_ERR_BADVERSION), + FDT_ERRTABENT(FDT_ERR_BADSTRUCTURE), + FDT_ERRTABENT(FDT_ERR_BADLAYOUT), ++ FDT_ERRTABENT(FDT_ERR_INTERNAL), ++ FDT_ERRTABENT(FDT_ERR_BADNCELLS), ++ FDT_ERRTABENT(FDT_ERR_BADVALUE), ++ FDT_ERRTABENT(FDT_ERR_BADOVERLAY), ++ FDT_ERRTABENT(FDT_ERR_NOPHANDLES), + }; + #define FDT_ERRTABSIZE (sizeof(fdt_errtable) / sizeof(fdt_errtable[0])) + +diff --git a/scripts/dtc/fdt_sw.c b/scripts/dtc/fdt_sw.c +index 6a804859f..6d33cc29d 100644 +--- a/scripts/dtc/fdt_sw.c ++++ b/scripts/dtc/fdt_sw.c +@@ -55,7 +55,7 @@ + + #include "libfdt_internal.h" + +-static int _fdt_sw_check_header(void *fdt) ++static int fdt_sw_check_header_(void *fdt) + { + if (fdt_magic(fdt) != FDT_SW_MAGIC) + return -FDT_ERR_BADMAGIC; +@@ -66,11 +66,11 @@ static int _fdt_sw_check_header(void *fdt) + #define FDT_SW_CHECK_HEADER(fdt) \ + { \ + int err; \ +- if ((err = _fdt_sw_check_header(fdt)) != 0) \ ++ if ((err = fdt_sw_check_header_(fdt)) != 0) \ + return err; \ + } + +-static void *_fdt_grab_space(void *fdt, size_t len) ++static void *fdt_grab_space_(void *fdt, size_t len) + { + int offset = fdt_size_dt_struct(fdt); + int spaceleft; +@@ -82,7 +82,7 @@ static void *_fdt_grab_space(void *fdt, size_t len) + return NULL; + + fdt_set_size_dt_struct(fdt, offset + len); +- return _fdt_offset_ptr_w(fdt, offset); ++ return fdt_offset_ptr_w_(fdt, offset); + } + + int fdt_create(void *buf, int bufsize) +@@ -174,7 +174,7 @@ int fdt_begin_node(void *fdt, const char *name) + + FDT_SW_CHECK_HEADER(fdt); + +- nh = _fdt_grab_space(fdt, sizeof(*nh) + FDT_TAGALIGN(namelen)); ++ nh = fdt_grab_space_(fdt, sizeof(*nh) + FDT_TAGALIGN(namelen)); + if (! nh) + return -FDT_ERR_NOSPACE; + +@@ -189,7 +189,7 @@ int fdt_end_node(void *fdt) + + FDT_SW_CHECK_HEADER(fdt); + +- en = _fdt_grab_space(fdt, FDT_TAGSIZE); ++ en = fdt_grab_space_(fdt, FDT_TAGSIZE); + if (! en) + return -FDT_ERR_NOSPACE; + +@@ -197,7 +197,7 @@ int fdt_end_node(void *fdt) + return 0; + } + +-static int _fdt_find_add_string(void *fdt, const char *s) ++static int fdt_find_add_string_(void *fdt, const char *s) + { + char *strtab = (char *)fdt + fdt_totalsize(fdt); + const char *p; +@@ -205,7 +205,7 @@ static int _fdt_find_add_string(void *fdt, const char *s) + int len = strlen(s) + 1; + int struct_top, offset; + +- p = _fdt_find_string(strtab - strtabsize, strtabsize, s); ++ p = fdt_find_string_(strtab - strtabsize, strtabsize, s); + if (p) + return p - strtab; + +@@ -220,25 +220,37 @@ static int _fdt_find_add_string(void *fdt, const char *s) + return offset; + } + +-int fdt_property(void *fdt, const char *name, const void *val, int len) ++int fdt_property_placeholder(void *fdt, const char *name, int len, void **valp) + { + struct fdt_property *prop; + int nameoff; + + FDT_SW_CHECK_HEADER(fdt); + +- nameoff = _fdt_find_add_string(fdt, name); ++ nameoff = fdt_find_add_string_(fdt, name); + if (nameoff == 0) + return -FDT_ERR_NOSPACE; + +- prop = _fdt_grab_space(fdt, sizeof(*prop) + FDT_TAGALIGN(len)); ++ prop = fdt_grab_space_(fdt, sizeof(*prop) + FDT_TAGALIGN(len)); + if (! prop) + return -FDT_ERR_NOSPACE; + + prop->tag = cpu_to_fdt32(FDT_PROP); + prop->nameoff = cpu_to_fdt32(nameoff); + prop->len = cpu_to_fdt32(len); +- memcpy(prop->data, val, len); ++ *valp = prop->data; ++ return 0; ++} ++ ++int fdt_property(void *fdt, const char *name, const void *val, int len) ++{ ++ void *ptr; ++ int ret; ++ ++ ret = fdt_property_placeholder(fdt, name, len, &ptr); ++ if (ret) ++ return ret; ++ memcpy(ptr, val, len); + return 0; + } + +@@ -253,7 +265,7 @@ int fdt_finish(void *fdt) + FDT_SW_CHECK_HEADER(fdt); + + /* Add terminator */ +- end = _fdt_grab_space(fdt, sizeof(*end)); ++ end = fdt_grab_space_(fdt, sizeof(*end)); + if (! end) + return -FDT_ERR_NOSPACE; + *end = cpu_to_fdt32(FDT_END); +@@ -269,7 +281,7 @@ int fdt_finish(void *fdt) + while ((tag = fdt_next_tag(fdt, offset, &nextoffset)) != FDT_END) { + if (tag == FDT_PROP) { + struct fdt_property *prop = +- _fdt_offset_ptr_w(fdt, offset); ++ fdt_offset_ptr_w_(fdt, offset); + int nameoff; + + nameoff = fdt32_to_cpu(prop->nameoff); +diff --git a/scripts/dtc/fdt_wip.c b/scripts/dtc/fdt_wip.c +index c5bbb68d3..534c1cbbb 100644 +--- a/scripts/dtc/fdt_wip.c ++++ b/scripts/dtc/fdt_wip.c +@@ -55,24 +55,45 @@ + + #include "libfdt_internal.h" + ++int fdt_setprop_inplace_namelen_partial(void *fdt, int nodeoffset, ++ const char *name, int namelen, ++ uint32_t idx, const void *val, ++ int len) ++{ ++ void *propval; ++ int proplen; ++ ++ propval = fdt_getprop_namelen_w(fdt, nodeoffset, name, namelen, ++ &proplen); ++ if (!propval) ++ return proplen; ++ ++ if (proplen < (len + idx)) ++ return -FDT_ERR_NOSPACE; ++ ++ memcpy((char *)propval + idx, val, len); ++ return 0; ++} ++ + int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name, + const void *val, int len) + { +- void *propval; ++ const void *propval; + int proplen; + +- propval = fdt_getprop_w(fdt, nodeoffset, name, &proplen); +- if (! propval) ++ propval = fdt_getprop(fdt, nodeoffset, name, &proplen); ++ if (!propval) + return proplen; + + if (proplen != len) + return -FDT_ERR_NOSPACE; + +- memcpy(propval, val, len); +- return 0; ++ return fdt_setprop_inplace_namelen_partial(fdt, nodeoffset, name, ++ strlen(name), 0, ++ val, len); + } + +-static void _fdt_nop_region(void *start, int len) ++static void fdt_nop_region_(void *start, int len) + { + fdt32_t *p; + +@@ -86,15 +107,15 @@ int fdt_nop_property(void *fdt, int nodeoffset, const char *name) + int len; + + prop = fdt_get_property_w(fdt, nodeoffset, name, &len); +- if (! prop) ++ if (!prop) + return len; + +- _fdt_nop_region(prop, len + sizeof(*prop)); ++ fdt_nop_region_(prop, len + sizeof(*prop)); + + return 0; + } + +-int _fdt_node_end_offset(void *fdt, int offset) ++int fdt_node_end_offset_(void *fdt, int offset) + { + int depth = 0; + +@@ -108,11 +129,11 @@ int fdt_nop_node(void *fdt, int nodeoffset) + { + int endoffset; + +- endoffset = _fdt_node_end_offset(fdt, nodeoffset); ++ endoffset = fdt_node_end_offset_(fdt, nodeoffset); + if (endoffset < 0) + return endoffset; + +- _fdt_nop_region(fdt_offset_ptr_w(fdt, nodeoffset, 0), ++ fdt_nop_region_(fdt_offset_ptr_w(fdt, nodeoffset, 0), + endoffset - nodeoffset); + return 0; + } +diff --git a/scripts/dtc/fdtdump.c b/scripts/dtc/fdtdump.c +index 95a6a2016..7d460a50b 100644 +--- a/scripts/dtc/fdtdump.c ++++ b/scripts/dtc/fdtdump.c +@@ -1,17 +1,16 @@ ++// SPDX-License-Identifier: GPL-2.0 + /* + * fdtdump.c - Contributed by Pantelis Antoniou + */ + +-#include + #include + #include + #include + #include + #include + +-#include +-#include + #include ++#include + + #include "util.h" + +@@ -19,29 +18,33 @@ + #define PALIGN(p, a) ((void *)(ALIGN((unsigned long)(p), (a)))) + #define GET_CELL(p) (p += 4, *((const uint32_t *)(p-4))) + +-static const char *tagname(uint32_t tag) ++static void print_data(const char *data, int len) + { +- static const char * const names[] = { +-#define TN(t) [t] = #t +- TN(FDT_BEGIN_NODE), +- TN(FDT_END_NODE), +- TN(FDT_PROP), +- TN(FDT_NOP), +- TN(FDT_END), +-#undef TN +- }; +- if (tag < ARRAY_SIZE(names)) +- if (names[tag]) +- return names[tag]; +- return "FDT_???"; ++ int i; ++ const char *p = data; ++ ++ /* no data, don't print */ ++ if (len == 0) ++ return; ++ ++ if (util_is_printable_string(data, len)) { ++ printf(" = \"%s\"", (const char *)data); ++ } else if ((len % 4) == 0) { ++ printf(" = <"); ++ for (i = 0; i < len; i += 4) ++ printf("0x%08x%s", fdt32_to_cpu(GET_CELL(p)), ++ i < (len - 4) ? " " : ""); ++ printf(">"); ++ } else { ++ printf(" = ["); ++ for (i = 0; i < len; i++) ++ printf("%02x%s", *p++, i < len - 1 ? " " : ""); ++ printf("]"); ++ } + } + +-#define dumpf(fmt, args...) \ +- do { if (debug) printf("// " fmt, ## args); } while (0) +- +-static void dump_blob(void *blob, bool debug) ++static void dump_blob(void *blob) + { +- uintptr_t blob_off = (uintptr_t)blob; + struct fdt_header *bph = blob; + uint32_t off_mem_rsvmap = fdt32_to_cpu(bph->off_mem_rsvmap); + uint32_t off_dt = fdt32_to_cpu(bph->off_dt_struct); +@@ -88,15 +91,14 @@ static void dump_blob(void *blob, bool debug) + if (addr == 0 && size == 0) + break; + +- printf("/memreserve/ %#llx %#llx;\n", ++ printf("/memreserve/ %llx %llx;\n", + (unsigned long long)addr, (unsigned long long)size); + } + + p = p_struct; + while ((tag = fdt32_to_cpu(GET_CELL(p))) != FDT_END) { + +- dumpf("%04zx: tag: 0x%08x (%s)\n", +- (uintptr_t)p - blob_off - 4, tag, tagname(tag)); ++ /* printf("tag: 0x%08x (%d)\n", tag, p - p_struct); */ + + if (tag == FDT_BEGIN_NODE) { + s = p; +@@ -135,93 +137,27 @@ static void dump_blob(void *blob, bool debug) + + p = PALIGN(p + sz, 4); + +- dumpf("%04zx: string: %s\n", (uintptr_t)s - blob_off, s); +- dumpf("%04zx: value\n", (uintptr_t)t - blob_off); + printf("%*s%s", depth * shift, "", s); +- utilfdt_print_data(t, sz); ++ print_data(t, sz); + printf(";\n"); + } + } + +-/* Usage related data. */ +-static const char usage_synopsis[] = "fdtdump [options] "; +-static const char usage_short_opts[] = "ds" USAGE_COMMON_SHORT_OPTS; +-static struct option const usage_long_opts[] = { +- {"debug", no_argument, NULL, 'd'}, +- {"scan", no_argument, NULL, 's'}, +- USAGE_COMMON_LONG_OPTS +-}; +-static const char * const usage_opts_help[] = { +- "Dump debug information while decoding the file", +- "Scan for an embedded fdt in file", +- USAGE_COMMON_OPTS_HELP +-}; + + int main(int argc, char *argv[]) + { +- int opt; +- const char *file; + char *buf; +- bool debug = false; +- bool scan = false; +- off_t len; +- +- while ((opt = util_getopt_long()) != EOF) { +- switch (opt) { +- case_USAGE_COMMON_FLAGS + +- case 'd': +- debug = true; +- break; +- case 's': +- scan = true; +- break; +- } +- } +- if (optind != argc - 1) +- usage("missing input filename"); +- file = argv[optind]; +- +- buf = utilfdt_read_len(file, &len); +- if (!buf) +- die("could not read: %s\n", file); +- +- /* try and locate an embedded fdt in a bigger blob */ +- if (scan) { +- unsigned char smagic[4]; +- char *p = buf; +- char *endp = buf + len; +- +- fdt_set_magic(smagic, FDT_MAGIC); +- +- /* poor man's memmem */ +- while (true) { +- p = memchr(p, smagic[0], endp - p - 4); +- if (!p) +- break; +- if (fdt_magic(p) == FDT_MAGIC) { +- /* try and validate the main struct */ +- off_t this_len = endp - p; +- fdt32_t max_version = 17; +- if (fdt_version(p) <= max_version && +- fdt_last_comp_version(p) < max_version && +- fdt_totalsize(p) < this_len && +- fdt_off_dt_struct(p) < this_len && +- fdt_off_dt_strings(p) < this_len) +- break; +- if (debug) +- printf("%s: skipping fdt magic at offset %#zx\n", +- file, p - buf); +- } +- ++p; +- } +- if (!p) +- die("%s: could not locate fdt magic\n", file); +- printf("%s: found fdt at offset %#zx\n", file, p - buf); +- buf = p; ++ if (argc < 2) { ++ fprintf(stderr, "supply input filename\n"); ++ return 5; + } + +- dump_blob(buf, debug); ++ buf = utilfdt_read(argv[1]); ++ if (buf) ++ dump_blob(buf); ++ else ++ return 10; + + return 0; + } +diff --git a/scripts/dtc/fdtget.c b/scripts/dtc/fdtget.c +index 437741922..c2fbab2a5 100644 +--- a/scripts/dtc/fdtget.c ++++ b/scripts/dtc/fdtget.c +@@ -277,33 +277,33 @@ static int do_fdtget(struct display_info *disp, const char *filename, + return 0; + } + +-/* Usage related data. */ +-static const char usage_synopsis[] = +- "read values from device tree\n" ++static const char *usage_msg = ++ "fdtget - read values from device tree\n" ++ "\n" ++ "Each value is printed on a new line.\n\n" ++ "Usage:\n" + " fdtget
[ ]...\n" + " fdtget -p
[ ]...\n" +- "\n" +- "Each value is printed on a new line.\n" ++ "Options:\n" ++ "\t-t \tType of data\n" ++ "\t-p\t\tList properties for each node\n" ++ "\t-l\t\tList subnodes for each node\n" ++ "\t-d\t\tDefault value to display when the property is " ++ "missing\n" ++ "\t-h\t\tPrint this help\n\n" + USAGE_TYPE_MSG; +-static const char usage_short_opts[] = "t:pld:" USAGE_COMMON_SHORT_OPTS; +-static struct option const usage_long_opts[] = { +- {"type", a_argument, NULL, 't'}, +- {"properties", no_argument, NULL, 'p'}, +- {"list", no_argument, NULL, 'l'}, +- {"default", a_argument, NULL, 'd'}, +- USAGE_COMMON_LONG_OPTS, +-}; +-static const char * const usage_opts_help[] = { +- "Type of data", +- "List properties for each node", +- "List subnodes for each node", +- "Default value to display when the property is missing", +- USAGE_COMMON_OPTS_HELP +-}; ++ ++static void usage(const char *msg) ++{ ++ if (msg) ++ fprintf(stderr, "Error: %s\n\n", msg); ++ ++ fprintf(stderr, "%s", usage_msg); ++ exit(2); ++} + + int main(int argc, char *argv[]) + { +- int opt; + char *filename = NULL; + struct display_info disp; + int args_per_step = 2; +@@ -312,14 +312,20 @@ int main(int argc, char *argv[]) + memset(&disp, '\0', sizeof(disp)); + disp.size = -1; + disp.mode = MODE_SHOW_VALUE; +- while ((opt = util_getopt_long()) != EOF) { +- switch (opt) { +- case_USAGE_COMMON_FLAGS ++ for (;;) { ++ int c = getopt(argc, argv, "d:hlpt:"); ++ if (c == -1) ++ break; ++ ++ switch (c) { ++ case 'h': ++ case '?': ++ usage(NULL); + + case 't': + if (utilfdt_decode_type(optarg, &disp.type, + &disp.size)) +- usage("invalid type string"); ++ usage("Invalid type string"); + break; + + case 'p': +@@ -341,7 +347,7 @@ int main(int argc, char *argv[]) + if (optind < argc) + filename = argv[optind++]; + if (!filename) +- usage("missing filename"); ++ usage("Missing filename"); + + argv += optind; + argc -= optind; +@@ -352,7 +358,7 @@ int main(int argc, char *argv[]) + + /* Check for node, property arguments */ + if (args_per_step == 2 && (argc % 2)) +- usage("must have an even number of arguments"); ++ usage("Must have an even number of arguments"); + + if (do_fdtget(&disp, filename, argv, argc, args_per_step)) + return 1; +diff --git a/scripts/dtc/fdtput.c b/scripts/dtc/fdtput.c +index 2a8d67447..f2197f519 100644 +--- a/scripts/dtc/fdtput.c ++++ b/scripts/dtc/fdtput.c +@@ -96,7 +96,12 @@ static int encode_value(struct display_info *disp, char **arg, int arg_count, + /* enlarge our value buffer by a suitable margin if needed */ + if (upto + len > value_size) { + value_size = (upto + len) + 500; +- value = xrealloc(value, value_size); ++ value = realloc(value, value_size); ++ if (!value) { ++ fprintf(stderr, "Out of mmory: cannot alloc " ++ "%d bytes\n", value_size); ++ return -1; ++ } + } + + ptr = value + upto; +@@ -126,59 +131,19 @@ static int encode_value(struct display_info *disp, char **arg, int arg_count, + return 0; + } + +-#define ALIGN(x) (((x) + (FDT_TAGSIZE) - 1) & ~((FDT_TAGSIZE) - 1)) +- +-static char *_realloc_fdt(char *fdt, int delta) +-{ +- int new_sz = fdt_totalsize(fdt) + delta; +- fdt = xrealloc(fdt, new_sz); +- fdt_open_into(fdt, fdt, new_sz); +- return fdt; +-} +- +-static char *realloc_node(char *fdt, const char *name) +-{ +- int delta; +- /* FDT_BEGIN_NODE, node name in off_struct and FDT_END_NODE */ +- delta = sizeof(struct fdt_node_header) + ALIGN(strlen(name) + 1) +- + FDT_TAGSIZE; +- return _realloc_fdt(fdt, delta); +-} +- +-static char *realloc_property(char *fdt, int nodeoffset, +- const char *name, int newlen) +-{ +- int delta = 0; +- int oldlen = 0; +- +- if (!fdt_get_property(fdt, nodeoffset, name, &oldlen)) +- /* strings + property header */ +- delta = sizeof(struct fdt_property) + strlen(name) + 1; +- +- if (newlen > oldlen) +- /* actual value in off_struct */ +- delta += ALIGN(newlen) - ALIGN(oldlen); +- +- return _realloc_fdt(fdt, delta); +-} +- +-static int store_key_value(char **blob, const char *node_name, ++static int store_key_value(void *blob, const char *node_name, + const char *property, const char *buf, int len) + { + int node; + int err; + +- node = fdt_path_offset(*blob, node_name); ++ node = fdt_path_offset(blob, node_name); + if (node < 0) { + report_error(node_name, -1, node); + return -1; + } + +- err = fdt_setprop(*blob, node, property, buf, len); +- if (err == -FDT_ERR_NOSPACE) { +- *blob = realloc_property(*blob, node, property, len); +- err = fdt_setprop(*blob, node, property, buf, len); +- } ++ err = fdt_setprop(blob, node, property, buf, len); + if (err) { + report_error(property, -1, err); + return -1; +@@ -196,7 +161,7 @@ static int store_key_value(char **blob, const char *node_name, + * @param in_path Path to process + * @return 0 if ok, -1 on error + */ +-static int create_paths(char **blob, const char *in_path) ++static int create_paths(void *blob, const char *in_path) + { + const char *path = in_path; + const char *sep; +@@ -212,11 +177,10 @@ static int create_paths(char **blob, const char *in_path) + if (!sep) + sep = path + strlen(path); + +- node = fdt_subnode_offset_namelen(*blob, offset, path, ++ node = fdt_subnode_offset_namelen(blob, offset, path, + sep - path); + if (node == -FDT_ERR_NOTFOUND) { +- *blob = realloc_node(*blob, path); +- node = fdt_add_subnode_namelen(*blob, offset, path, ++ node = fdt_add_subnode_namelen(blob, offset, path, + sep - path); + } + if (node < 0) { +@@ -239,7 +203,7 @@ static int create_paths(char **blob, const char *in_path) + * @param node_name Name of node to create + * @return new node offset if found, or -1 on failure + */ +-static int create_node(char **blob, const char *node_name) ++static int create_node(void *blob, const char *node_name) + { + int node = 0; + char *p; +@@ -251,17 +215,15 @@ static int create_node(char **blob, const char *node_name) + } + *p = '\0'; + +- *blob = realloc_node(*blob, p + 1); +- + if (p > node_name) { +- node = fdt_path_offset(*blob, node_name); ++ node = fdt_path_offset(blob, node_name); + if (node < 0) { + report_error(node_name, -1, node); + return -1; + } + } + +- node = fdt_add_subnode(*blob, node, p + 1); ++ node = fdt_add_subnode(blob, node, p + 1); + if (node < 0) { + report_error(p + 1, -1, node); + return -1; +@@ -288,64 +250,66 @@ static int do_fdtput(struct display_info *disp, const char *filename, + * store them into the property. + */ + assert(arg_count >= 2); +- if (disp->auto_path && create_paths(&blob, *arg)) ++ if (disp->auto_path && create_paths(blob, *arg)) + return -1; + if (encode_value(disp, arg + 2, arg_count - 2, &value, &len) || +- store_key_value(&blob, *arg, arg[1], value, len)) ++ store_key_value(blob, *arg, arg[1], value, len)) + ret = -1; + break; + case OPER_CREATE_NODE: + for (; ret >= 0 && arg_count--; arg++) { + if (disp->auto_path) +- ret = create_paths(&blob, *arg); ++ ret = create_paths(blob, *arg); + else +- ret = create_node(&blob, *arg); ++ ret = create_node(blob, *arg); + } + break; + } +- if (ret >= 0) { +- fdt_pack(blob); ++ if (ret >= 0) + ret = utilfdt_write(filename, blob); +- } + + free(blob); + return ret; + } + +-/* Usage related data. */ +-static const char usage_synopsis[] = +- "write a property value to a device tree\n" +- " fdtput
[...]\n" +- " fdtput -c
[...]\n" ++static const char *usage_msg = ++ "fdtput - write a property value to a device tree\n" + "\n" + "The command line arguments are joined together into a single value.\n" ++ "\n" ++ "Usage:\n" ++ " fdtput
[...]\n" ++ " fdtput -c
[...]\n" ++ "Options:\n" ++ "\t-c\t\tCreate nodes if they don't already exist\n" ++ "\t-p\t\tAutomatically create nodes as needed for the node path\n" ++ "\t-t \tType of data\n" ++ "\t-v\t\tVerbose: display each value decoded from command line\n" ++ "\t-h\t\tPrint this help\n\n" + USAGE_TYPE_MSG; +-static const char usage_short_opts[] = "cpt:v" USAGE_COMMON_SHORT_OPTS; +-static struct option const usage_long_opts[] = { +- {"create", no_argument, NULL, 'c'}, +- {"auto-path", no_argument, NULL, 'p'}, +- {"type", a_argument, NULL, 't'}, +- {"verbose", no_argument, NULL, 'v'}, +- USAGE_COMMON_LONG_OPTS, +-}; +-static const char * const usage_opts_help[] = { +- "Create nodes if they don't already exist", +- "Automatically create nodes as needed for the node path", +- "Type of data", +- "Display each value decoded from command line", +- USAGE_COMMON_OPTS_HELP +-}; ++ ++static void usage(const char *msg) ++{ ++ if (msg) ++ fprintf(stderr, "Error: %s\n\n", msg); ++ ++ fprintf(stderr, "%s", usage_msg); ++ exit(2); ++} + + int main(int argc, char *argv[]) + { +- int opt; + struct display_info disp; + char *filename = NULL; + + memset(&disp, '\0', sizeof(disp)); + disp.size = -1; + disp.oper = OPER_WRITE_PROP; +- while ((opt = util_getopt_long()) != EOF) { ++ for (;;) { ++ int c = getopt(argc, argv, "chpt:v"); ++ if (c == -1) ++ break; ++ + /* + * TODO: add options to: + * - delete property +@@ -353,13 +317,15 @@ int main(int argc, char *argv[]) + * - rename node + * - pack fdt before writing + * - set amount of free space when writing ++ * - expand fdt if value doesn't fit + */ +- switch (opt) { +- case_USAGE_COMMON_FLAGS +- ++ switch (c) { + case 'c': + disp.oper = OPER_CREATE_NODE; + break; ++ case 'h': ++ case '?': ++ usage(NULL); + case 'p': + disp.auto_path = 1; + break; +@@ -378,16 +344,16 @@ int main(int argc, char *argv[]) + if (optind < argc) + filename = argv[optind++]; + if (!filename) +- usage("missing filename"); ++ usage("Missing filename"); + + argv += optind; + argc -= optind; + + if (disp.oper == OPER_WRITE_PROP) { + if (argc < 1) +- usage("missing node"); ++ usage("Missing node"); + if (argc < 2) +- usage("missing property"); ++ usage("Missing property"); + } + + if (do_fdtput(&disp, filename, argv, argc)) +diff --git a/scripts/dtc/flattree.c b/scripts/dtc/flattree.c +index bd99fa2d3..8d268fb78 100644 +--- a/scripts/dtc/flattree.c ++++ b/scripts/dtc/flattree.c +@@ -49,7 +49,7 @@ static struct version_info { + + struct emitter { + void (*cell)(void *, cell_t); +- void (*string)(void *, char *, int); ++ void (*string)(void *, const char *, int); + void (*align)(void *, int); + void (*data)(void *, struct data); + void (*beginnode)(void *, struct label *labels); +@@ -64,7 +64,7 @@ static void bin_emit_cell(void *e, cell_t val) + *dtbuf = data_append_cell(*dtbuf, val); + } + +-static void bin_emit_string(void *e, char *str, int len) ++static void bin_emit_string(void *e, const char *str, int len) + { + struct data *dtbuf = e; + +@@ -144,22 +144,14 @@ static void asm_emit_cell(void *e, cell_t val) + (val >> 8) & 0xff, val & 0xff); + } + +-static void asm_emit_string(void *e, char *str, int len) ++static void asm_emit_string(void *e, const char *str, int len) + { + FILE *f = e; +- char c = 0; + +- if (len != 0) { +- /* XXX: ewww */ +- c = str[len]; +- str[len] = '\0'; +- } +- +- fprintf(f, "\t.string\t\"%s\"\n", str); +- +- if (len != 0) { +- str[len] = c; +- } ++ if (len != 0) ++ fprintf(f, "\t.string\t\"%.*s\"\n", len, str); ++ else ++ fprintf(f, "\t.string\t\"%s\"\n", str); + } + + static void asm_emit_align(void *e, int a) +@@ -179,7 +171,7 @@ static void asm_emit_data(void *e, struct data d) + emit_offset_label(f, m->ref, m->offset); + + while ((d.len - off) >= sizeof(uint32_t)) { +- asm_emit_cell(e, fdt32_to_cpu(*((uint32_t *)(d.val+off)))); ++ asm_emit_cell(e, fdt32_to_cpu(*((fdt32_t *)(d.val+off)))); + off += sizeof(uint32_t); + } + +@@ -318,17 +310,16 @@ static struct data flatten_reserve_list(struct reserve_info *reservelist, + { + struct reserve_info *re; + struct data d = empty_data; +- static struct fdt_reserve_entry null_re = {0,0}; + int j; + + for (re = reservelist; re; re = re->next) { +- d = data_append_re(d, &re->re); ++ d = data_append_re(d, re->address, re->size); + } + /* + * Add additional reserved slots if the user asked for them. + */ + for (j = 0; j < reservenum; j++) { +- d = data_append_re(d, &null_re); ++ d = data_append_re(d, 0, 0); + } + + return d; +@@ -366,7 +357,7 @@ static void make_fdt_header(struct fdt_header *fdt, + fdt->size_dt_struct = cpu_to_fdt32(dtsize); + } + +-void dt_to_blob(FILE *f, struct boot_info *bi, int version) ++void dt_to_blob(FILE *f, struct dt_info *dti, int version) + { + struct version_info *vi = NULL; + int i; +@@ -384,29 +375,36 @@ void dt_to_blob(FILE *f, struct boot_info *bi, int version) + if (!vi) + die("Unknown device tree blob version %d\n", version); + +- flatten_tree(bi->dt, &bin_emitter, &dtbuf, &strbuf, vi); ++ flatten_tree(dti->dt, &bin_emitter, &dtbuf, &strbuf, vi); + bin_emit_cell(&dtbuf, FDT_END); + +- reservebuf = flatten_reserve_list(bi->reservelist, vi); ++ reservebuf = flatten_reserve_list(dti->reservelist, vi); + + /* Make header */ + make_fdt_header(&fdt, vi, reservebuf.len, dtbuf.len, strbuf.len, +- bi->boot_cpuid_phys); ++ dti->boot_cpuid_phys); + + /* + * If the user asked for more space than is used, adjust the totalsize. + */ + if (minsize > 0) { + padlen = minsize - fdt32_to_cpu(fdt.totalsize); +- if ((padlen < 0) && (quiet < 1)) +- fprintf(stderr, +- "Warning: blob size %d >= minimum size %d\n", +- fdt32_to_cpu(fdt.totalsize), minsize); ++ if (padlen < 0) { ++ padlen = 0; ++ if (quiet < 1) ++ fprintf(stderr, ++ "Warning: blob size %d >= minimum size %d\n", ++ fdt32_to_cpu(fdt.totalsize), minsize); ++ } + } + + if (padsize > 0) + padlen = padsize; + ++ if (alignsize > 0) ++ padlen = ALIGN(fdt32_to_cpu(fdt.totalsize) + padlen, alignsize) ++ - fdt32_to_cpu(fdt.totalsize); ++ + if (padlen > 0) { + int tsize = fdt32_to_cpu(fdt.totalsize); + tsize += padlen; +@@ -460,7 +458,7 @@ static void dump_stringtable_asm(FILE *f, struct data strbuf) + } + } + +-void dt_to_asm(FILE *f, struct boot_info *bi, int version) ++void dt_to_asm(FILE *f, struct dt_info *dti, int version) + { + struct version_info *vi = NULL; + int i; +@@ -500,7 +498,7 @@ void dt_to_asm(FILE *f, struct boot_info *bi, int version) + + if (vi->flags & FTF_BOOTCPUID) { + fprintf(f, "\t/* boot_cpuid_phys */\n"); +- asm_emit_cell(f, bi->boot_cpuid_phys); ++ asm_emit_cell(f, dti->boot_cpuid_phys); + } + + if (vi->flags & FTF_STRTABSIZE) { +@@ -530,18 +528,18 @@ void dt_to_asm(FILE *f, struct boot_info *bi, int version) + * Use .long on high and low halfs of u64s to avoid .quad + * as it appears .quad isn't available in some assemblers. + */ +- for (re = bi->reservelist; re; re = re->next) { ++ for (re = dti->reservelist; re; re = re->next) { + struct label *l; + + for_each_label(re->labels, l) { + fprintf(f, "\t.globl\t%s\n", l->label); + fprintf(f, "%s:\n", l->label); + } +- ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->re.address >> 32)); ++ ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->address >> 32)); + ASM_EMIT_BELONG(f, "0x%08x", +- (unsigned int)(re->re.address & 0xffffffff)); +- ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->re.size >> 32)); +- ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->re.size & 0xffffffff)); ++ (unsigned int)(re->address & 0xffffffff)); ++ ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->size >> 32)); ++ ASM_EMIT_BELONG(f, "0x%08x", (unsigned int)(re->size & 0xffffffff)); + } + for (i = 0; i < reservenum; i++) { + fprintf(f, "\t.long\t0, 0\n\t.long\t0, 0\n"); +@@ -550,7 +548,7 @@ void dt_to_asm(FILE *f, struct boot_info *bi, int version) + fprintf(f, "\t.long\t0, 0\n\t.long\t0, 0\n"); + + emit_label(f, symprefix, "struct_start"); +- flatten_tree(bi->dt, &asm_emitter, f, &strbuf, vi); ++ flatten_tree(dti->dt, &asm_emitter, f, &strbuf, vi); + + fprintf(f, "\t/* FDT_END */\n"); + asm_emit_cell(f, FDT_END); +@@ -572,6 +570,8 @@ void dt_to_asm(FILE *f, struct boot_info *bi, int version) + if (padsize > 0) { + fprintf(f, "\t.space\t%d, 0\n", padsize); + } ++ if (alignsize > 0) ++ asm_emit_align(f, alignsize); + emit_label(f, symprefix, "blob_abs_end"); + + data_free(strbuf); +@@ -600,7 +600,7 @@ static void flat_read_chunk(struct inbuf *inb, void *p, int len) + + static uint32_t flat_read_word(struct inbuf *inb) + { +- uint32_t val; ++ fdt32_t val; + + assert(((inb->ptr - inb->base) % sizeof(val)) == 0); + +@@ -709,13 +709,15 @@ static struct reserve_info *flat_read_mem_reserve(struct inbuf *inb) + * First pass, count entries. + */ + while (1) { ++ uint64_t address, size; ++ + flat_read_chunk(inb, &re, sizeof(re)); +- re.address = fdt64_to_cpu(re.address); +- re.size = fdt64_to_cpu(re.size); +- if (re.size == 0) ++ address = fdt64_to_cpu(re.address); ++ size = fdt64_to_cpu(re.size); ++ if (size == 0) + break; + +- new = build_reserve_entry(re.address, re.size); ++ new = build_reserve_entry(address, size); + reservelist = add_reserve_entry(reservelist, new); + } + +@@ -729,7 +731,7 @@ static char *nodename_from_path(const char *ppath, const char *cpath) + + plen = strlen(ppath); + +- if (!strneq(ppath, cpath, plen)) ++ if (!strstarts(cpath, ppath)) + die("Path \"%s\" is not valid as a child of \"%s\"\n", + cpath, ppath); + +@@ -797,13 +799,18 @@ static struct node *unflatten_tree(struct inbuf *dtbuf, + } + } while (val != FDT_END_NODE); + ++ if (node->name != flatname) { ++ free(flatname); ++ } ++ + return node; + } + + +-struct boot_info *dt_from_blob(const char *fname) ++struct dt_info *dt_from_blob(const char *fname) + { + FILE *f; ++ fdt32_t magic_buf, totalsize_buf; + uint32_t magic, totalsize, version, size_dt, boot_cpuid_phys; + uint32_t off_dt, off_str, off_mem_rsvmap; + int rc; +@@ -820,7 +827,7 @@ struct boot_info *dt_from_blob(const char *fname) + + f = srcfile_relative_open(fname, NULL); + +- rc = fread(&magic, sizeof(magic), 1, f); ++ rc = fread(&magic_buf, sizeof(magic_buf), 1, f); + if (ferror(f)) + die("Error reading DT blob magic number: %s\n", + strerror(errno)); +@@ -831,11 +838,11 @@ struct boot_info *dt_from_blob(const char *fname) + die("Mysterious short read reading magic number\n"); + } + +- magic = fdt32_to_cpu(magic); ++ magic = fdt32_to_cpu(magic_buf); + if (magic != FDT_MAGIC) + die("Blob has incorrect magic number\n"); + +- rc = fread(&totalsize, sizeof(totalsize), 1, f); ++ rc = fread(&totalsize_buf, sizeof(totalsize_buf), 1, f); + if (ferror(f)) + die("Error reading DT blob size: %s\n", strerror(errno)); + if (rc < 1) { +@@ -845,7 +852,7 @@ struct boot_info *dt_from_blob(const char *fname) + die("Mysterious short read reading blob size\n"); + } + +- totalsize = fdt32_to_cpu(totalsize); ++ totalsize = fdt32_to_cpu(totalsize_buf); + if (totalsize < FDT_V1_SIZE) + die("DT blob size (%d) is too small\n", totalsize); + +@@ -889,7 +896,7 @@ struct boot_info *dt_from_blob(const char *fname) + + if (version >= 3) { + uint32_t size_str = fdt32_to_cpu(fdt->size_dt_strings); +- if (off_str+size_str > totalsize) ++ if ((off_str+size_str < off_str) || (off_str+size_str > totalsize)) + die("String table extends past total size\n"); + inbuf_init(&strbuf, blob + off_str, blob + off_str + size_str); + } else { +@@ -898,7 +905,7 @@ struct boot_info *dt_from_blob(const char *fname) + + if (version >= 17) { + size_dt = fdt32_to_cpu(fdt->size_dt_struct); +- if (off_dt+size_dt > totalsize) ++ if ((off_dt+size_dt < off_dt) || (off_dt+size_dt > totalsize)) + die("Structure block extends past total size\n"); + } + +@@ -929,5 +936,5 @@ struct boot_info *dt_from_blob(const char *fname) + + fclose(f); + +- return build_boot_info(reservelist, tree, boot_cpuid_phys); ++ return build_dt_info(DTSF_V1, reservelist, tree, boot_cpuid_phys); + } +diff --git a/scripts/dtc/fstree.c b/scripts/dtc/fstree.c +index 6d1beec95..ae7d06c3c 100644 +--- a/scripts/dtc/fstree.c ++++ b/scripts/dtc/fstree.c +@@ -79,13 +79,12 @@ static struct node *read_fstree(const char *dirname) + return tree; + } + +-struct boot_info *dt_from_fs(const char *dirname) ++struct dt_info *dt_from_fs(const char *dirname) + { + struct node *tree; + + tree = read_fstree(dirname); + tree = name_node(tree, ""); + +- return build_boot_info(NULL, tree, guess_boot_cpuid(tree)); ++ return build_dt_info(DTSF_V1, NULL, tree, guess_boot_cpuid(tree)); + } +- +diff --git a/scripts/dtc/libfdt.h b/scripts/dtc/libfdt.h +index 32d52276d..1e27780e1 100644 +--- a/scripts/dtc/libfdt.h ++++ b/scripts/dtc/libfdt.h +@@ -1,5 +1,5 @@ +-#ifndef _LIBFDT_H +-#define _LIBFDT_H ++#ifndef LIBFDT_H ++#define LIBFDT_H + /* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. +@@ -51,17 +51,17 @@ + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +-#include +-#include ++#include "libfdt_env.h" ++#include "fdt.h" + +-#define FDT_FIRST_SUPPORTED_VERSION 0x10 ++#define FDT_FIRST_SUPPORTED_VERSION 0x02 + #define FDT_LAST_SUPPORTED_VERSION 0x11 + + /* Error codes: informative error codes */ + #define FDT_ERR_NOTFOUND 1 + /* FDT_ERR_NOTFOUND: The requested node or property does not exist */ + #define FDT_ERR_EXISTS 2 +- /* FDT_ERR_EXISTS: Attemped to create a node or property which ++ /* FDT_ERR_EXISTS: Attempted to create a node or property which + * already exists */ + #define FDT_ERR_NOSPACE 3 + /* FDT_ERR_NOSPACE: Operation needed to expand the device +@@ -79,8 +79,10 @@ + * (e.g. missing a leading / for a function which requires an + * absolute path) */ + #define FDT_ERR_BADPHANDLE 6 +- /* FDT_ERR_BADPHANDLE: Function was passed an invalid phandle +- * value. phandle values of 0 and -1 are not permitted. */ ++ /* FDT_ERR_BADPHANDLE: Function was passed an invalid phandle. ++ * This can be caused either by an invalid phandle property ++ * length, or the phandle value was either 0 or -1, which are ++ * not permitted. */ + #define FDT_ERR_BADSTATE 7 + /* FDT_ERR_BADSTATE: Function was passed an incomplete device + * tree created by the sequential-write functions, which is +@@ -121,13 +123,29 @@ + /* FDT_ERR_BADNCELLS: Device tree has a #address-cells, #size-cells + * or similar property with a bad format or value */ + +-#define FDT_ERR_MAX 14 ++#define FDT_ERR_BADVALUE 15 ++ /* FDT_ERR_BADVALUE: Device tree has a property with an unexpected ++ * value. For example: a property expected to contain a string list ++ * is not NUL-terminated within the length of its value. */ ++ ++#define FDT_ERR_BADOVERLAY 16 ++ /* FDT_ERR_BADOVERLAY: The device tree overlay, while ++ * correctly structured, cannot be applied due to some ++ * unexpected or missing value, property or node. */ ++ ++#define FDT_ERR_NOPHANDLES 17 ++ /* FDT_ERR_NOPHANDLES: The device tree doesn't have any ++ * phandle available anymore without causing an overflow */ ++ ++#define FDT_ERR_MAX 17 + + /**********************************************************************/ + /* Low-level functions (you probably don't need these) */ + /**********************************************************************/ + ++#ifndef SWIG /* This function is not useful in Python */ + const void *fdt_offset_ptr(const void *fdt, int offset, unsigned int checklen); ++#endif + static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen) + { + return (void *)(uintptr_t)fdt_offset_ptr(fdt, offset, checklen); +@@ -163,40 +181,67 @@ int fdt_first_subnode(const void *fdt, int offset); + */ + int fdt_next_subnode(const void *fdt, int offset); + ++/** ++ * fdt_for_each_subnode - iterate over all subnodes of a parent ++ * ++ * @node: child node (int, lvalue) ++ * @fdt: FDT blob (const void *) ++ * @parent: parent node (int) ++ * ++ * This is actually a wrapper around a for loop and would be used like so: ++ * ++ * fdt_for_each_subnode(node, fdt, parent) { ++ * Use node ++ * ... ++ * } ++ * ++ * if ((node < 0) && (node != -FDT_ERR_NOT_FOUND)) { ++ * Error handling ++ * } ++ * ++ * Note that this is implemented as a macro and @node is used as ++ * iterator in the loop. The parent variable be constant or even a ++ * literal. ++ * ++ */ ++#define fdt_for_each_subnode(node, fdt, parent) \ ++ for (node = fdt_first_subnode(fdt, parent); \ ++ node >= 0; \ ++ node = fdt_next_subnode(fdt, node)) ++ + /**********************************************************************/ + /* General functions */ + /**********************************************************************/ +- + #define fdt_get_header(fdt, field) \ + (fdt32_to_cpu(((const struct fdt_header *)(fdt))->field)) +-#define fdt_magic(fdt) (fdt_get_header(fdt, magic)) ++#define fdt_magic(fdt) (fdt_get_header(fdt, magic)) + #define fdt_totalsize(fdt) (fdt_get_header(fdt, totalsize)) + #define fdt_off_dt_struct(fdt) (fdt_get_header(fdt, off_dt_struct)) + #define fdt_off_dt_strings(fdt) (fdt_get_header(fdt, off_dt_strings)) + #define fdt_off_mem_rsvmap(fdt) (fdt_get_header(fdt, off_mem_rsvmap)) + #define fdt_version(fdt) (fdt_get_header(fdt, version)) +-#define fdt_last_comp_version(fdt) (fdt_get_header(fdt, last_comp_version)) +-#define fdt_boot_cpuid_phys(fdt) (fdt_get_header(fdt, boot_cpuid_phys)) +-#define fdt_size_dt_strings(fdt) (fdt_get_header(fdt, size_dt_strings)) ++#define fdt_last_comp_version(fdt) (fdt_get_header(fdt, last_comp_version)) ++#define fdt_boot_cpuid_phys(fdt) (fdt_get_header(fdt, boot_cpuid_phys)) ++#define fdt_size_dt_strings(fdt) (fdt_get_header(fdt, size_dt_strings)) + #define fdt_size_dt_struct(fdt) (fdt_get_header(fdt, size_dt_struct)) + +-#define __fdt_set_hdr(name) \ ++#define fdt_set_hdr_(name) \ + static inline void fdt_set_##name(void *fdt, uint32_t val) \ + { \ +- struct fdt_header *fdth = (struct fdt_header*)fdt; \ ++ struct fdt_header *fdth = (struct fdt_header *)fdt; \ + fdth->name = cpu_to_fdt32(val); \ + } +-__fdt_set_hdr(magic); +-__fdt_set_hdr(totalsize); +-__fdt_set_hdr(off_dt_struct); +-__fdt_set_hdr(off_dt_strings); +-__fdt_set_hdr(off_mem_rsvmap); +-__fdt_set_hdr(version); +-__fdt_set_hdr(last_comp_version); +-__fdt_set_hdr(boot_cpuid_phys); +-__fdt_set_hdr(size_dt_strings); +-__fdt_set_hdr(size_dt_struct); +-#undef __fdt_set_hdr ++fdt_set_hdr_(magic); ++fdt_set_hdr_(totalsize); ++fdt_set_hdr_(off_dt_struct); ++fdt_set_hdr_(off_dt_strings); ++fdt_set_hdr_(off_mem_rsvmap); ++fdt_set_hdr_(version); ++fdt_set_hdr_(last_comp_version); ++fdt_set_hdr_(boot_cpuid_phys); ++fdt_set_hdr_(size_dt_strings); ++fdt_set_hdr_(size_dt_struct); ++#undef fdt_set_hdr_ + + /** + * fdt_check_header - sanity check a device tree or possible device tree +@@ -253,6 +298,21 @@ int fdt_move(const void *fdt, void *buf, int bufsize); + */ + const char *fdt_string(const void *fdt, int stroffset); + ++/** ++ * fdt_get_max_phandle - retrieves the highest phandle in a tree ++ * @fdt: pointer to the device tree blob ++ * ++ * fdt_get_max_phandle retrieves the highest phandle in the given ++ * device tree. This will ignore badly formatted phandles, or phandles ++ * with a value of 0 or -1. ++ * ++ * returns: ++ * the highest phandle on success ++ * 0, if no phandle was found in the device tree ++ * -1, if an error occurred ++ */ ++uint32_t fdt_get_max_phandle(const void *fdt); ++ + /** + * fdt_num_mem_rsv - retrieve the number of memory reserve map entries + * @fdt: pointer to the device tree blob +@@ -295,8 +355,10 @@ int fdt_get_mem_rsv(const void *fdt, int n, uint64_t *address, uint64_t *size); + * useful for finding subnodes based on a portion of a larger string, + * such as a full path. + */ ++#ifndef SWIG /* Not available in Python */ + int fdt_subnode_offset_namelen(const void *fdt, int parentoffset, + const char *name, int namelen); ++#endif + /** + * fdt_subnode_offset - find a subnode of a given node + * @fdt: pointer to the device tree blob +@@ -313,8 +375,9 @@ int fdt_subnode_offset_namelen(const void *fdt, int parentoffset, + * returns: + * structure block offset of the requested subnode (>=0), on success + * -FDT_ERR_NOTFOUND, if the requested subnode does not exist +- * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag +- * -FDT_ERR_BADMAGIC, ++ * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE ++ * tag ++ * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, + * -FDT_ERR_BADSTRUCTURE, +@@ -322,6 +385,19 @@ int fdt_subnode_offset_namelen(const void *fdt, int parentoffset, + */ + int fdt_subnode_offset(const void *fdt, int parentoffset, const char *name); + ++/** ++ * fdt_path_offset_namelen - find a tree node by its full path ++ * @fdt: pointer to the device tree blob ++ * @path: full path of the node to locate ++ * @namelen: number of characters of path to consider ++ * ++ * Identical to fdt_path_offset(), but only consider the first namelen ++ * characters of path as the path name. ++ */ ++#ifndef SWIG /* Not available in Python */ ++int fdt_path_offset_namelen(const void *fdt, const char *path, int namelen); ++#endif ++ + /** + * fdt_path_offset - find a tree node by its full path + * @fdt: pointer to the device tree blob +@@ -335,7 +411,8 @@ int fdt_subnode_offset(const void *fdt, int parentoffset, const char *name); + * address). + * + * returns: +- * structure block offset of the node with the requested path (>=0), on success ++ * structure block offset of the node with the requested path (>=0), on ++ * success + * -FDT_ERR_BADPATH, given path does not begin with '/' or is invalid + * -FDT_ERR_NOTFOUND, if the requested node does not exist + * -FDT_ERR_BADMAGIC, +@@ -359,10 +436,12 @@ int fdt_path_offset(const void *fdt, const char *path); + * + * returns: + * pointer to the node's name, on success +- * If lenp is non-NULL, *lenp contains the length of that name (>=0) ++ * If lenp is non-NULL, *lenp contains the length of that name ++ * (>=0) + * NULL, on error + * if lenp is non-NULL *lenp contains an error code (<0): +- * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag ++ * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE ++ * tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, standard meanings +@@ -410,6 +489,33 @@ int fdt_first_property_offset(const void *fdt, int nodeoffset); + */ + int fdt_next_property_offset(const void *fdt, int offset); + ++/** ++ * fdt_for_each_property_offset - iterate over all properties of a node ++ * ++ * @property_offset: property offset (int, lvalue) ++ * @fdt: FDT blob (const void *) ++ * @node: node offset (int) ++ * ++ * This is actually a wrapper around a for loop and would be used like so: ++ * ++ * fdt_for_each_property_offset(property, fdt, node) { ++ * Use property ++ * ... ++ * } ++ * ++ * if ((property < 0) && (property != -FDT_ERR_NOT_FOUND)) { ++ * Error handling ++ * } ++ * ++ * Note that this is implemented as a macro and property is used as ++ * iterator in the loop. The node variable can be constant or even a ++ * literal. ++ */ ++#define fdt_for_each_property_offset(property, fdt, node) \ ++ for (property = fdt_first_property_offset(fdt, node); \ ++ property >= 0; \ ++ property = fdt_next_property_offset(fdt, property)) ++ + /** + * fdt_get_property_by_offset - retrieve the property at a given offset + * @fdt: pointer to the device tree blob +@@ -421,6 +527,9 @@ int fdt_next_property_offset(const void *fdt, int offset); + * offset. If lenp is non-NULL, the length of the property value is + * also returned, in the integer pointed to by lenp. + * ++ * Note that this code only works on device tree versions >= 16. fdt_getprop() ++ * works on all versions. ++ * + * returns: + * pointer to the structure representing the property + * if lenp is non-NULL, *lenp contains the length of the property +@@ -446,13 +555,15 @@ const struct fdt_property *fdt_get_property_by_offset(const void *fdt, + * @namelen: number of characters of name to consider + * @lenp: pointer to an integer variable (will be overwritten) or NULL + * +- * Identical to fdt_get_property_namelen(), but only examine the first +- * namelen characters of name for matching the property name. ++ * Identical to fdt_get_property(), but only examine the first namelen ++ * characters of name for matching the property name. + */ ++#ifndef SWIG /* Not available in Python */ + const struct fdt_property *fdt_get_property_namelen(const void *fdt, + int nodeoffset, + const char *name, + int namelen, int *lenp); ++#endif + + /** + * fdt_get_property - find a given property in a given node +@@ -474,7 +585,8 @@ const struct fdt_property *fdt_get_property_namelen(const void *fdt, + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_NOTFOUND, node does not have named property +- * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag ++ * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE ++ * tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, +@@ -522,8 +634,10 @@ static inline struct fdt_property *fdt_get_property_w(void *fdt, int nodeoffset, + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ ++#ifndef SWIG /* This function is not useful in Python */ + const void *fdt_getprop_by_offset(const void *fdt, int offset, + const char **namep, int *lenp); ++#endif + + /** + * fdt_getprop_namelen - get property value based on substring +@@ -536,8 +650,17 @@ const void *fdt_getprop_by_offset(const void *fdt, int offset, + * Identical to fdt_getprop(), but only examine the first namelen + * characters of name for matching the property name. + */ ++#ifndef SWIG /* Not available in Python */ + const void *fdt_getprop_namelen(const void *fdt, int nodeoffset, + const char *name, int namelen, int *lenp); ++static inline void *fdt_getprop_namelen_w(void *fdt, int nodeoffset, ++ const char *name, int namelen, ++ int *lenp) ++{ ++ return (void *)(uintptr_t)fdt_getprop_namelen(fdt, nodeoffset, name, ++ namelen, lenp); ++} ++#endif + + /** + * fdt_getprop - retrieve the value of a given property +@@ -559,7 +682,8 @@ const void *fdt_getprop_namelen(const void *fdt, int nodeoffset, + * NULL, on error + * if lenp is non-NULL, *lenp contains an error code (<0): + * -FDT_ERR_NOTFOUND, node does not have named property +- * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag ++ * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE ++ * tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, +@@ -597,11 +721,13 @@ uint32_t fdt_get_phandle(const void *fdt, int nodeoffset); + * Identical to fdt_get_alias(), but only examine the first namelen + * characters of name for matching the alias name. + */ ++#ifndef SWIG /* Not available in Python */ + const char *fdt_get_alias_namelen(const void *fdt, + const char *name, int namelen); ++#endif + + /** +- * fdt_get_alias - retreive the path referenced by a given alias ++ * fdt_get_alias - retrieve the path referenced by a given alias + * @fdt: pointer to the device tree blob + * @name: name of the alias th look up + * +@@ -631,7 +757,7 @@ const char *fdt_get_alias(const void *fdt, const char *name); + * 0, on success + * buf contains the absolute path of the node at + * nodeoffset, as a NUL-terminated string. +- * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag ++ * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_NOSPACE, the path of the given node is longer than (bufsize-1) + * characters and will not fit in the given buffer. + * -FDT_ERR_BADMAGIC, +@@ -661,11 +787,11 @@ int fdt_get_path(const void *fdt, int nodeoffset, char *buf, int buflen); + * structure from the start to nodeoffset. + * + * returns: +- + * structure block offset of the node at node offset's ancestor + * of depth supernodedepth (>=0), on success +- * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag +-* -FDT_ERR_NOTFOUND, supernodedepth was greater than the depth of nodeoffset ++ * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag ++ * -FDT_ERR_NOTFOUND, supernodedepth was greater than the depth of ++ * nodeoffset + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, +@@ -687,7 +813,7 @@ int fdt_supernode_atdepth_offset(const void *fdt, int nodeoffset, + * + * returns: + * depth of the node at nodeoffset (>=0), on success +- * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag ++ * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, +@@ -710,7 +836,7 @@ int fdt_node_depth(const void *fdt, int nodeoffset); + * returns: + * structure block offset of the parent of the node at nodeoffset + * (>=0), on success +- * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag ++ * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, +@@ -750,7 +876,7 @@ int fdt_parent_offset(const void *fdt, int nodeoffset); + * on success + * -FDT_ERR_NOTFOUND, no node matching the criterion exists in the + * tree after startoffset +- * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag ++ * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, +@@ -797,7 +923,7 @@ int fdt_node_offset_by_phandle(const void *fdt, uint32_t phandle); + * 1, if the node has a 'compatible' property, but it does not list + * the given string + * -FDT_ERR_NOTFOUND, if the given node has no 'compatible' property +- * -FDT_ERR_BADOFFSET, if nodeoffset does not refer to a BEGIN_NODE tag ++ * -FDT_ERR_BADOFFSET, if nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, +@@ -834,7 +960,7 @@ int fdt_node_check_compatible(const void *fdt, int nodeoffset, + * on success + * -FDT_ERR_NOTFOUND, no node matching the criterion exists in the + * tree after startoffset +- * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag ++ * -FDT_ERR_BADOFFSET, nodeoffset does not refer to a BEGIN_NODE tag + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, +@@ -857,6 +983,68 @@ int fdt_node_offset_by_compatible(const void *fdt, int startoffset, + */ + int fdt_stringlist_contains(const char *strlist, int listlen, const char *str); + ++/** ++ * fdt_stringlist_count - count the number of strings in a string list ++ * @fdt: pointer to the device tree blob ++ * @nodeoffset: offset of a tree node ++ * @property: name of the property containing the string list ++ * @return: ++ * the number of strings in the given property ++ * -FDT_ERR_BADVALUE if the property value is not NUL-terminated ++ * -FDT_ERR_NOTFOUND if the property does not exist ++ */ ++int fdt_stringlist_count(const void *fdt, int nodeoffset, const char *property); ++ ++/** ++ * fdt_stringlist_search - find a string in a string list and return its index ++ * @fdt: pointer to the device tree blob ++ * @nodeoffset: offset of a tree node ++ * @property: name of the property containing the string list ++ * @string: string to look up in the string list ++ * ++ * Note that it is possible for this function to succeed on property values ++ * that are not NUL-terminated. That's because the function will stop after ++ * finding the first occurrence of @string. This can for example happen with ++ * small-valued cell properties, such as #address-cells, when searching for ++ * the empty string. ++ * ++ * @return: ++ * the index of the string in the list of strings ++ * -FDT_ERR_BADVALUE if the property value is not NUL-terminated ++ * -FDT_ERR_NOTFOUND if the property does not exist or does not contain ++ * the given string ++ */ ++int fdt_stringlist_search(const void *fdt, int nodeoffset, const char *property, ++ const char *string); ++ ++/** ++ * fdt_stringlist_get() - obtain the string at a given index in a string list ++ * @fdt: pointer to the device tree blob ++ * @nodeoffset: offset of a tree node ++ * @property: name of the property containing the string list ++ * @index: index of the string to return ++ * @lenp: return location for the string length or an error code on failure ++ * ++ * Note that this will successfully extract strings from properties with ++ * non-NUL-terminated values. For example on small-valued cell properties ++ * this function will return the empty string. ++ * ++ * If non-NULL, the length of the string (on success) or a negative error-code ++ * (on failure) will be stored in the integer pointer to by lenp. ++ * ++ * @return: ++ * A pointer to the string at the given index in the string list or NULL on ++ * failure. On success the length of the string will be stored in the memory ++ * location pointed to by the lenp parameter, if non-NULL. On failure one of ++ * the following negative error codes will be returned in the lenp parameter ++ * (if non-NULL): ++ * -FDT_ERR_BADVALUE if the property value is not NUL-terminated ++ * -FDT_ERR_NOTFOUND if the property does not exist ++ */ ++const char *fdt_stringlist_get(const void *fdt, int nodeoffset, ++ const char *property, int index, ++ int *lenp); ++ + /**********************************************************************/ + /* Read-only functions (addressing related) */ + /**********************************************************************/ +@@ -882,7 +1070,8 @@ int fdt_stringlist_contains(const char *strlist, int listlen, const char *str); + * returns: + * 0 <= n < FDT_MAX_NCELLS, on success + * 2, if the node has no #address-cells property +- * -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid #address-cells property ++ * -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid ++ * #address-cells property + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, +@@ -902,7 +1091,8 @@ int fdt_address_cells(const void *fdt, int nodeoffset); + * returns: + * 0 <= n < FDT_MAX_NCELLS, on success + * 2, if the node has no #address-cells property +- * -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid #size-cells property ++ * -FDT_ERR_BADNCELLS, if the node has a badly formatted or invalid ++ * #size-cells property + * -FDT_ERR_BADMAGIC, + * -FDT_ERR_BADVERSION, + * -FDT_ERR_BADSTATE, +@@ -916,6 +1106,29 @@ int fdt_size_cells(const void *fdt, int nodeoffset); + /* Write-in-place functions */ + /**********************************************************************/ + ++/** ++ * fdt_setprop_inplace_namelen_partial - change a property's value, ++ * but not its size ++ * @fdt: pointer to the device tree blob ++ * @nodeoffset: offset of the node whose property to change ++ * @name: name of the property to change ++ * @namelen: number of characters of name to consider ++ * @idx: index of the property to change in the array ++ * @val: pointer to data to replace the property value with ++ * @len: length of the property value ++ * ++ * Identical to fdt_setprop_inplace(), but modifies the given property ++ * starting from the given index, and using only the first characters ++ * of the name. It is useful when you want to manipulate only one value of ++ * an array and you have a string that doesn't end with \0. ++ */ ++#ifndef SWIG /* Not available in Python */ ++int fdt_setprop_inplace_namelen_partial(void *fdt, int nodeoffset, ++ const char *name, int namelen, ++ uint32_t idx, const void *val, ++ int len); ++#endif ++ + /** + * fdt_setprop_inplace - change a property's value, but not its size + * @fdt: pointer to the device tree blob +@@ -944,8 +1157,10 @@ int fdt_size_cells(const void *fdt, int nodeoffset); + * -FDT_ERR_BADSTRUCTURE, + * -FDT_ERR_TRUNCATED, standard meanings + */ ++#ifndef SWIG /* Not available in Python */ + int fdt_setprop_inplace(void *fdt, int nodeoffset, const char *name, + const void *val, int len); ++#endif + + /** + * fdt_setprop_inplace_u32 - change the value of a 32-bit integer property +@@ -1102,6 +1317,22 @@ static inline int fdt_property_cell(void *fdt, const char *name, uint32_t val) + { + return fdt_property_u32(fdt, name, val); + } ++ ++/** ++ * fdt_property_placeholder - add a new property and return a ptr to its value ++ * ++ * @fdt: pointer to the device tree blob ++ * @name: name of property to add ++ * @len: length of property value in bytes ++ * @valp: returns a pointer to where where the value should be placed ++ * ++ * returns: ++ * 0, on success ++ * -FDT_ERR_BADMAGIC, ++ * -FDT_ERR_NOSPACE, standard meanings ++ */ ++int fdt_property_placeholder(void *fdt, const char *name, int len, void **valp); ++ + #define fdt_property_string(fdt, name, str) \ + fdt_property(fdt, name, str, strlen(str)+1) + int fdt_end_node(void *fdt); +@@ -1220,6 +1451,37 @@ int fdt_set_name(void *fdt, int nodeoffset, const char *name); + int fdt_setprop(void *fdt, int nodeoffset, const char *name, + const void *val, int len); + ++/** ++ * fdt_setprop_placeholder - allocate space for a property ++ * @fdt: pointer to the device tree blob ++ * @nodeoffset: offset of the node whose property to change ++ * @name: name of the property to change ++ * @len: length of the property value ++ * @prop_data: return pointer to property data ++ * ++ * fdt_setprop_placeholer() allocates the named property in the given node. ++ * If the property exists it is resized. In either case a pointer to the ++ * property data is returned. ++ * ++ * This function may insert or delete data from the blob, and will ++ * therefore change the offsets of some existing nodes. ++ * ++ * returns: ++ * 0, on success ++ * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to ++ * contain the new property value ++ * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag ++ * -FDT_ERR_BADLAYOUT, ++ * -FDT_ERR_BADMAGIC, ++ * -FDT_ERR_BADVERSION, ++ * -FDT_ERR_BADSTATE, ++ * -FDT_ERR_BADSTRUCTURE, ++ * -FDT_ERR_BADLAYOUT, ++ * -FDT_ERR_TRUNCATED, standard meanings ++ */ ++int fdt_setprop_placeholder(void *fdt, int nodeoffset, const char *name, ++ int len, void **prop_data); ++ + /** + * fdt_setprop_u32 - set a property to a 32-bit integer + * @fdt: pointer to the device tree blob +@@ -1332,6 +1594,36 @@ static inline int fdt_setprop_cell(void *fdt, int nodeoffset, const char *name, + #define fdt_setprop_string(fdt, nodeoffset, name, str) \ + fdt_setprop((fdt), (nodeoffset), (name), (str), strlen(str)+1) + ++ ++/** ++ * fdt_setprop_empty - set a property to an empty value ++ * @fdt: pointer to the device tree blob ++ * @nodeoffset: offset of the node whose property to change ++ * @name: name of the property to change ++ * ++ * fdt_setprop_empty() sets the value of the named property in the ++ * given node to an empty (zero length) value, or creates a new empty ++ * property if it does not already exist. ++ * ++ * This function may insert or delete data from the blob, and will ++ * therefore change the offsets of some existing nodes. ++ * ++ * returns: ++ * 0, on success ++ * -FDT_ERR_NOSPACE, there is insufficient free space in the blob to ++ * contain the new property value ++ * -FDT_ERR_BADOFFSET, nodeoffset did not point to FDT_BEGIN_NODE tag ++ * -FDT_ERR_BADLAYOUT, ++ * -FDT_ERR_BADMAGIC, ++ * -FDT_ERR_BADVERSION, ++ * -FDT_ERR_BADSTATE, ++ * -FDT_ERR_BADSTRUCTURE, ++ * -FDT_ERR_BADLAYOUT, ++ * -FDT_ERR_TRUNCATED, standard meanings ++ */ ++#define fdt_setprop_empty(fdt, nodeoffset, name) \ ++ fdt_setprop((fdt), (nodeoffset), (name), NULL, 0) ++ + /** + * fdt_appendprop - append to or create a property + * @fdt: pointer to the device tree blob +@@ -1509,8 +1801,10 @@ int fdt_delprop(void *fdt, int nodeoffset, const char *name); + * creating subnodes based on a portion of a larger string, such as a + * full path. + */ ++#ifndef SWIG /* Not available in Python */ + int fdt_add_subnode_namelen(void *fdt, int parentoffset, + const char *name, int namelen); ++#endif + + /** + * fdt_add_subnode - creates a new node +@@ -1526,9 +1820,11 @@ int fdt_add_subnode_namelen(void *fdt, int parentoffset, + * change the offsets of some existing nodes. + + * returns: +- * structure block offset of the created nodeequested subnode (>=0), on success ++ * structure block offset of the created nodeequested subnode (>=0), on ++ * success + * -FDT_ERR_NOTFOUND, if the requested subnode does not exist +- * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE tag ++ * -FDT_ERR_BADOFFSET, if parentoffset did not point to an FDT_BEGIN_NODE ++ * tag + * -FDT_ERR_EXISTS, if the node at parentoffset already has a subnode of + * the given name + * -FDT_ERR_NOSPACE, if there is insufficient free space in the +@@ -1566,10 +1862,41 @@ int fdt_add_subnode(void *fdt, int parentoffset, const char *name); + */ + int fdt_del_node(void *fdt, int nodeoffset); + ++/** ++ * fdt_overlay_apply - Applies a DT overlay on a base DT ++ * @fdt: pointer to the base device tree blob ++ * @fdto: pointer to the device tree overlay blob ++ * ++ * fdt_overlay_apply() will apply the given device tree overlay on the ++ * given base device tree. ++ * ++ * Expect the base device tree to be modified, even if the function ++ * returns an error. ++ * ++ * returns: ++ * 0, on success ++ * -FDT_ERR_NOSPACE, there's not enough space in the base device tree ++ * -FDT_ERR_NOTFOUND, the overlay points to some inexistant nodes or ++ * properties in the base DT ++ * -FDT_ERR_BADPHANDLE, ++ * -FDT_ERR_BADOVERLAY, ++ * -FDT_ERR_NOPHANDLES, ++ * -FDT_ERR_INTERNAL, ++ * -FDT_ERR_BADLAYOUT, ++ * -FDT_ERR_BADMAGIC, ++ * -FDT_ERR_BADOFFSET, ++ * -FDT_ERR_BADPATH, ++ * -FDT_ERR_BADVERSION, ++ * -FDT_ERR_BADSTRUCTURE, ++ * -FDT_ERR_BADSTATE, ++ * -FDT_ERR_TRUNCATED, standard meanings ++ */ ++int fdt_overlay_apply(void *fdt, void *fdto); ++ + /**********************************************************************/ + /* Debugging / informational functions */ + /**********************************************************************/ + + const char *fdt_strerror(int errval); + +-#endif /* _LIBFDT_H */ ++#endif /* LIBFDT_H */ +diff --git a/scripts/dtc/libfdt_env.h b/scripts/dtc/libfdt_env.h +index 9dea97dff..bd2474628 100644 +--- a/scripts/dtc/libfdt_env.h ++++ b/scripts/dtc/libfdt_env.h +@@ -1,5 +1,5 @@ +-#ifndef _LIBFDT_ENV_H +-#define _LIBFDT_ENV_H ++#ifndef LIBFDT_ENV_H ++#define LIBFDT_ENV_H + /* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. +@@ -54,19 +54,20 @@ + + #include + #include ++#include + #include + + #ifdef __CHECKER__ +-#define __force __attribute__((force)) +-#define __bitwise __attribute__((bitwise)) ++#define FDT_FORCE __attribute__((force)) ++#define FDT_BITWISE __attribute__((bitwise)) + #else +-#define __force +-#define __bitwise ++#define FDT_FORCE ++#define FDT_BITWISE + #endif + +-typedef uint16_t __bitwise fdt16_t; +-typedef uint32_t __bitwise fdt32_t; +-typedef uint64_t __bitwise fdt64_t; ++typedef uint16_t FDT_BITWISE fdt16_t; ++typedef uint32_t FDT_BITWISE fdt32_t; ++typedef uint64_t FDT_BITWISE fdt64_t; + + #define EXTRACT_BYTE(x, n) ((unsigned long long)((uint8_t *)&x)[n]) + #define CPU_TO_FDT16(x) ((EXTRACT_BYTE(x, 0) << 8) | EXTRACT_BYTE(x, 1)) +@@ -79,33 +80,60 @@ typedef uint64_t __bitwise fdt64_t; + + static inline uint16_t fdt16_to_cpu(fdt16_t x) + { +- return (__force uint16_t)CPU_TO_FDT16(x); ++ return (FDT_FORCE uint16_t)CPU_TO_FDT16(x); + } + static inline fdt16_t cpu_to_fdt16(uint16_t x) + { +- return (__force fdt16_t)CPU_TO_FDT16(x); ++ return (FDT_FORCE fdt16_t)CPU_TO_FDT16(x); + } + + static inline uint32_t fdt32_to_cpu(fdt32_t x) + { +- return (__force uint32_t)CPU_TO_FDT32(x); ++ return (FDT_FORCE uint32_t)CPU_TO_FDT32(x); + } + static inline fdt32_t cpu_to_fdt32(uint32_t x) + { +- return (__force fdt32_t)CPU_TO_FDT32(x); ++ return (FDT_FORCE fdt32_t)CPU_TO_FDT32(x); + } + + static inline uint64_t fdt64_to_cpu(fdt64_t x) + { +- return (__force uint64_t)CPU_TO_FDT64(x); ++ return (FDT_FORCE uint64_t)CPU_TO_FDT64(x); + } + static inline fdt64_t cpu_to_fdt64(uint64_t x) + { +- return (__force fdt64_t)CPU_TO_FDT64(x); ++ return (FDT_FORCE fdt64_t)CPU_TO_FDT64(x); + } + #undef CPU_TO_FDT64 + #undef CPU_TO_FDT32 + #undef CPU_TO_FDT16 + #undef EXTRACT_BYTE + +-#endif /* _LIBFDT_ENV_H */ ++#ifdef __APPLE__ ++#include ++ ++/* strnlen() is not available on Mac OS < 10.7 */ ++# if !defined(MAC_OS_X_VERSION_10_7) || (MAC_OS_X_VERSION_MAX_ALLOWED < \ ++ MAC_OS_X_VERSION_10_7) ++ ++#define strnlen fdt_strnlen ++ ++/* ++ * fdt_strnlen: returns the length of a string or max_count - which ever is ++ * smallest. ++ * Input 1 string: the string whose size is to be determined ++ * Input 2 max_count: the maximum value returned by this function ++ * Output: length of the string or max_count (the smallest of the two) ++ */ ++static inline size_t fdt_strnlen(const char *string, size_t max_count) ++{ ++ const char *p = memchr(string, 0, max_count); ++ return p ? p - string : max_count; ++} ++ ++#endif /* !defined(MAC_OS_X_VERSION_10_7) || (MAC_OS_X_VERSION_MAX_ALLOWED < ++ MAC_OS_X_VERSION_10_7) */ ++ ++#endif /* __APPLE__ */ ++ ++#endif /* LIBFDT_ENV_H */ +diff --git a/scripts/dtc/libfdt_internal.h b/scripts/dtc/libfdt_internal.h +index 02cfa6fb6..7681e1922 100644 +--- a/scripts/dtc/libfdt_internal.h ++++ b/scripts/dtc/libfdt_internal.h +@@ -1,5 +1,5 @@ +-#ifndef _LIBFDT_INTERNAL_H +-#define _LIBFDT_INTERNAL_H ++#ifndef LIBFDT_INTERNAL_H ++#define LIBFDT_INTERNAL_H + /* + * libfdt - Flat Device Tree manipulation + * Copyright (C) 2006 David Gibson, IBM Corporation. +@@ -57,27 +57,27 @@ + + #define FDT_CHECK_HEADER(fdt) \ + { \ +- int __err; \ +- if ((__err = fdt_check_header(fdt)) != 0) \ +- return __err; \ ++ int err_; \ ++ if ((err_ = fdt_check_header(fdt)) != 0) \ ++ return err_; \ + } + +-int _fdt_check_node_offset(const void *fdt, int offset); +-int _fdt_check_prop_offset(const void *fdt, int offset); +-const char *_fdt_find_string(const char *strtab, int tabsize, const char *s); +-int _fdt_node_end_offset(void *fdt, int nodeoffset); ++int fdt_check_node_offset_(const void *fdt, int offset); ++int fdt_check_prop_offset_(const void *fdt, int offset); ++const char *fdt_find_string_(const char *strtab, int tabsize, const char *s); ++int fdt_node_end_offset_(void *fdt, int nodeoffset); + +-static inline const void *_fdt_offset_ptr(const void *fdt, int offset) ++static inline const void *fdt_offset_ptr_(const void *fdt, int offset) + { + return (const char *)fdt + fdt_off_dt_struct(fdt) + offset; + } + +-static inline void *_fdt_offset_ptr_w(void *fdt, int offset) ++static inline void *fdt_offset_ptr_w_(void *fdt, int offset) + { +- return (void *)(uintptr_t)_fdt_offset_ptr(fdt, offset); ++ return (void *)(uintptr_t)fdt_offset_ptr_(fdt, offset); + } + +-static inline const struct fdt_reserve_entry *_fdt_mem_rsv(const void *fdt, int n) ++static inline const struct fdt_reserve_entry *fdt_mem_rsv_(const void *fdt, int n) + { + const struct fdt_reserve_entry *rsv_table = + (const struct fdt_reserve_entry *) +@@ -85,11 +85,11 @@ static inline const struct fdt_reserve_entry *_fdt_mem_rsv(const void *fdt, int + + return rsv_table + n; + } +-static inline struct fdt_reserve_entry *_fdt_mem_rsv_w(void *fdt, int n) ++static inline struct fdt_reserve_entry *fdt_mem_rsv_w_(void *fdt, int n) + { +- return (void *)(uintptr_t)_fdt_mem_rsv(fdt, n); ++ return (void *)(uintptr_t)fdt_mem_rsv_(fdt, n); + } + + #define FDT_SW_MAGIC (~FDT_MAGIC) + +-#endif /* _LIBFDT_INTERNAL_H */ ++#endif /* LIBFDT_INTERNAL_H */ +diff --git a/scripts/dtc/livetree.c b/scripts/dtc/livetree.c +index e229b8443..57b7db2ed 100644 +--- a/scripts/dtc/livetree.c ++++ b/scripts/dtc/livetree.c +@@ -204,7 +204,7 @@ struct node *merge_nodes(struct node *old_node, struct node *new_node) + } + } + +- /* if no collision occured, add child to the old node. */ ++ /* if no collision occurred, add child to the old node. */ + if (new_child) + add_child(old_node, new_child); + } +@@ -216,6 +216,29 @@ struct node *merge_nodes(struct node *old_node, struct node *new_node) + return old_node; + } + ++struct node * add_orphan_node(struct node *dt, struct node *new_node, char *ref) ++{ ++ static unsigned int next_orphan_fragment = 0; ++ struct node *node; ++ struct property *p; ++ struct data d = empty_data; ++ char *name; ++ ++ d = data_add_marker(d, REF_PHANDLE, ref); ++ d = data_append_integer(d, 0xffffffff, 32); ++ ++ p = build_property("target", d); ++ ++ xasprintf(&name, "fragment@%u", ++ next_orphan_fragment++); ++ name_node(new_node, "__overlay__"); ++ node = build_node(p, new_node); ++ name_node(node, name); ++ ++ add_child(dt, node); ++ return dt; ++} ++ + struct node *chain_node(struct node *first, struct node *list) + { + assert(first->next_sibling == NULL); +@@ -242,7 +265,7 @@ void delete_property_by_name(struct node *node, char *name) + struct property *prop = node->proplist; + + while (prop) { +- if (!strcmp(prop->name, name)) { ++ if (streq(prop->name, name)) { + delete_property(prop); + return; + } +@@ -275,7 +298,7 @@ void delete_node_by_name(struct node *parent, char *name) + struct node *node = parent->children; + + while (node) { +- if (!strcmp(node->name, name)) { ++ if (streq(node->name, name)) { + delete_node(node); + return; + } +@@ -296,14 +319,31 @@ void delete_node(struct node *node) + delete_labels(&node->labels); + } + ++void append_to_property(struct node *node, ++ char *name, const void *data, int len) ++{ ++ struct data d; ++ struct property *p; ++ ++ p = get_property(node, name); ++ if (p) { ++ d = data_append_data(p->val, data, len); ++ p->val = d; ++ } else { ++ d = data_append_data(empty_data, data, len); ++ p = build_property(name, d); ++ add_property(node, p); ++ } ++} ++ + struct reserve_info *build_reserve_entry(uint64_t address, uint64_t size) + { + struct reserve_info *new = xmalloc(sizeof(*new)); + + memset(new, 0, sizeof(*new)); + +- new->re.address = address; +- new->re.size = size; ++ new->address = address; ++ new->size = size; + + return new; + } +@@ -335,17 +375,19 @@ struct reserve_info *add_reserve_entry(struct reserve_info *list, + return list; + } + +-struct boot_info *build_boot_info(struct reserve_info *reservelist, +- struct node *tree, uint32_t boot_cpuid_phys) ++struct dt_info *build_dt_info(unsigned int dtsflags, ++ struct reserve_info *reservelist, ++ struct node *tree, uint32_t boot_cpuid_phys) + { +- struct boot_info *bi; ++ struct dt_info *dti; + +- bi = xmalloc(sizeof(*bi)); +- bi->reservelist = reservelist; +- bi->dt = tree; +- bi->boot_cpuid_phys = boot_cpuid_phys; ++ dti = xmalloc(sizeof(*dti)); ++ dti->dtsflags = dtsflags; ++ dti->reservelist = reservelist; ++ dti->dt = tree; ++ dti->boot_cpuid_phys = boot_cpuid_phys; + +- return bi; ++ return dti; + } + + /* +@@ -374,7 +416,13 @@ struct property *get_property(struct node *node, const char *propname) + cell_t propval_cell(struct property *prop) + { + assert(prop->val.len == sizeof(cell_t)); +- return fdt32_to_cpu(*((cell_t *)prop->val.val)); ++ return fdt32_to_cpu(*((fdt32_t *)prop->val.val)); ++} ++ ++cell_t propval_cell_n(struct property *prop, int n) ++{ ++ assert(prop->val.len / sizeof(cell_t) >= n); ++ return fdt32_to_cpu(*((fdt32_t *)prop->val.val + n)); + } + + struct property *get_property_by_label(struct node *tree, const char *label, +@@ -459,7 +507,8 @@ struct node *get_node_by_path(struct node *tree, const char *path) + p = strchr(path, '/'); + + for_each_child(tree, child) { +- if (p && strneq(path, child->name, p-path)) ++ if (p && (strlen(child->name) == p-path) && ++ strprefixeq(path, p - path, child->name)) + return get_node_by_path(child, p+1); + else if (!p && streq(path, child->name)) + return child; +@@ -492,7 +541,10 @@ struct node *get_node_by_phandle(struct node *tree, cell_t phandle) + { + struct node *child, *node; + +- assert((phandle != 0) && (phandle != -1)); ++ if ((phandle == 0) || (phandle == -1)) { ++ assert(generate_fixups); ++ return NULL; ++ } + + if (tree->phandle == phandle) { + if (tree->deleted) +@@ -580,24 +632,24 @@ static int cmp_reserve_info(const void *ax, const void *bx) + a = *((const struct reserve_info * const *)ax); + b = *((const struct reserve_info * const *)bx); + +- if (a->re.address < b->re.address) ++ if (a->address < b->address) + return -1; +- else if (a->re.address > b->re.address) ++ else if (a->address > b->address) + return 1; +- else if (a->re.size < b->re.size) ++ else if (a->size < b->size) + return -1; +- else if (a->re.size > b->re.size) ++ else if (a->size > b->size) + return 1; + else + return 0; + } + +-static void sort_reserve_entries(struct boot_info *bi) ++static void sort_reserve_entries(struct dt_info *dti) + { + struct reserve_info *ri, **tbl; + int n = 0, i = 0; + +- for (ri = bi->reservelist; ++ for (ri = dti->reservelist; + ri; + ri = ri->next) + n++; +@@ -607,14 +659,14 @@ static void sort_reserve_entries(struct boot_info *bi) + + tbl = xmalloc(n * sizeof(*tbl)); + +- for (ri = bi->reservelist; ++ for (ri = dti->reservelist; + ri; + ri = ri->next) + tbl[i++] = ri; + + qsort(tbl, n, sizeof(*tbl), cmp_reserve_info); + +- bi->reservelist = tbl[0]; ++ dti->reservelist = tbl[0]; + for (i = 0; i < (n-1); i++) + tbl[i]->next = tbl[i+1]; + tbl[n-1]->next = NULL; +@@ -704,8 +756,258 @@ static void sort_node(struct node *node) + sort_node(c); + } + +-void sort_tree(struct boot_info *bi) ++void sort_tree(struct dt_info *dti) ++{ ++ sort_reserve_entries(dti); ++ sort_node(dti->dt); ++} ++ ++/* utility helper to avoid code duplication */ ++static struct node *build_and_name_child_node(struct node *parent, char *name) ++{ ++ struct node *node; ++ ++ node = build_node(NULL, NULL); ++ name_node(node, xstrdup(name)); ++ add_child(parent, node); ++ ++ return node; ++} ++ ++static struct node *build_root_node(struct node *dt, char *name) ++{ ++ struct node *an; ++ ++ an = get_subnode(dt, name); ++ if (!an) ++ an = build_and_name_child_node(dt, name); ++ ++ if (!an) ++ die("Could not build root node /%s\n", name); ++ ++ return an; ++} ++ ++static bool any_label_tree(struct dt_info *dti, struct node *node) ++{ ++ struct node *c; ++ ++ if (node->labels) ++ return true; ++ ++ for_each_child(node, c) ++ if (any_label_tree(dti, c)) ++ return true; ++ ++ return false; ++} ++ ++static void generate_label_tree_internal(struct dt_info *dti, ++ struct node *an, struct node *node, ++ bool allocph) + { +- sort_reserve_entries(bi); +- sort_node(bi->dt); ++ struct node *dt = dti->dt; ++ struct node *c; ++ struct property *p; ++ struct label *l; ++ ++ /* if there are labels */ ++ if (node->labels) { ++ ++ /* now add the label in the node */ ++ for_each_label(node->labels, l) { ++ ++ /* check whether the label already exists */ ++ p = get_property(an, l->label); ++ if (p) { ++ fprintf(stderr, "WARNING: label %s already" ++ " exists in /%s", l->label, ++ an->name); ++ continue; ++ } ++ ++ /* insert it */ ++ p = build_property(l->label, ++ data_copy_mem(node->fullpath, ++ strlen(node->fullpath) + 1)); ++ add_property(an, p); ++ } ++ ++ /* force allocation of a phandle for this node */ ++ if (allocph) ++ (void)get_node_phandle(dt, node); ++ } ++ ++ for_each_child(node, c) ++ generate_label_tree_internal(dti, an, c, allocph); ++} ++ ++static bool any_fixup_tree(struct dt_info *dti, struct node *node) ++{ ++ struct node *c; ++ struct property *prop; ++ struct marker *m; ++ ++ for_each_property(node, prop) { ++ m = prop->val.markers; ++ for_each_marker_of_type(m, REF_PHANDLE) { ++ if (!get_node_by_ref(dti->dt, m->ref)) ++ return true; ++ } ++ } ++ ++ for_each_child(node, c) { ++ if (any_fixup_tree(dti, c)) ++ return true; ++ } ++ ++ return false; ++} ++ ++static void add_fixup_entry(struct dt_info *dti, struct node *fn, ++ struct node *node, struct property *prop, ++ struct marker *m) ++{ ++ char *entry; ++ ++ /* m->ref can only be a REF_PHANDLE, but check anyway */ ++ assert(m->type == REF_PHANDLE); ++ ++ /* there shouldn't be any ':' in the arguments */ ++ if (strchr(node->fullpath, ':') || strchr(prop->name, ':')) ++ die("arguments should not contain ':'\n"); ++ ++ xasprintf(&entry, "%s:%s:%u", ++ node->fullpath, prop->name, m->offset); ++ append_to_property(fn, m->ref, entry, strlen(entry) + 1); ++ ++ free(entry); ++} ++ ++static void generate_fixups_tree_internal(struct dt_info *dti, ++ struct node *fn, ++ struct node *node) ++{ ++ struct node *dt = dti->dt; ++ struct node *c; ++ struct property *prop; ++ struct marker *m; ++ struct node *refnode; ++ ++ for_each_property(node, prop) { ++ m = prop->val.markers; ++ for_each_marker_of_type(m, REF_PHANDLE) { ++ refnode = get_node_by_ref(dt, m->ref); ++ if (!refnode) ++ add_fixup_entry(dti, fn, node, prop, m); ++ } ++ } ++ ++ for_each_child(node, c) ++ generate_fixups_tree_internal(dti, fn, c); ++} ++ ++static bool any_local_fixup_tree(struct dt_info *dti, struct node *node) ++{ ++ struct node *c; ++ struct property *prop; ++ struct marker *m; ++ ++ for_each_property(node, prop) { ++ m = prop->val.markers; ++ for_each_marker_of_type(m, REF_PHANDLE) { ++ if (get_node_by_ref(dti->dt, m->ref)) ++ return true; ++ } ++ } ++ ++ for_each_child(node, c) { ++ if (any_local_fixup_tree(dti, c)) ++ return true; ++ } ++ ++ return false; ++} ++ ++static void add_local_fixup_entry(struct dt_info *dti, ++ struct node *lfn, struct node *node, ++ struct property *prop, struct marker *m, ++ struct node *refnode) ++{ ++ struct node *wn, *nwn; /* local fixup node, walk node, new */ ++ fdt32_t value_32; ++ char **compp; ++ int i, depth; ++ ++ /* walk back retreiving depth */ ++ depth = 0; ++ for (wn = node; wn; wn = wn->parent) ++ depth++; ++ ++ /* allocate name array */ ++ compp = xmalloc(sizeof(*compp) * depth); ++ ++ /* store names in the array */ ++ for (wn = node, i = depth - 1; wn; wn = wn->parent, i--) ++ compp[i] = wn->name; ++ ++ /* walk the path components creating nodes if they don't exist */ ++ for (wn = lfn, i = 1; i < depth; i++, wn = nwn) { ++ /* if no node exists, create it */ ++ nwn = get_subnode(wn, compp[i]); ++ if (!nwn) ++ nwn = build_and_name_child_node(wn, compp[i]); ++ } ++ ++ free(compp); ++ ++ value_32 = cpu_to_fdt32(m->offset); ++ append_to_property(wn, prop->name, &value_32, sizeof(value_32)); ++} ++ ++static void generate_local_fixups_tree_internal(struct dt_info *dti, ++ struct node *lfn, ++ struct node *node) ++{ ++ struct node *dt = dti->dt; ++ struct node *c; ++ struct property *prop; ++ struct marker *m; ++ struct node *refnode; ++ ++ for_each_property(node, prop) { ++ m = prop->val.markers; ++ for_each_marker_of_type(m, REF_PHANDLE) { ++ refnode = get_node_by_ref(dt, m->ref); ++ if (refnode) ++ add_local_fixup_entry(dti, lfn, node, prop, m, refnode); ++ } ++ } ++ ++ for_each_child(node, c) ++ generate_local_fixups_tree_internal(dti, lfn, c); ++} ++ ++void generate_label_tree(struct dt_info *dti, char *name, bool allocph) ++{ ++ if (!any_label_tree(dti, dti->dt)) ++ return; ++ generate_label_tree_internal(dti, build_root_node(dti->dt, name), ++ dti->dt, allocph); ++} ++ ++void generate_fixups_tree(struct dt_info *dti, char *name) ++{ ++ if (!any_fixup_tree(dti, dti->dt)) ++ return; ++ generate_fixups_tree_internal(dti, build_root_node(dti->dt, name), ++ dti->dt); ++} ++ ++void generate_local_fixups_tree(struct dt_info *dti, char *name) ++{ ++ if (!any_local_fixup_tree(dti, dti->dt)) ++ return; ++ generate_local_fixups_tree_internal(dti, build_root_node(dti->dt, name), ++ dti->dt); + } +diff --git a/scripts/dtc/srcpos.c b/scripts/dtc/srcpos.c +index f534c22a8..cb6ed0e3e 100644 +--- a/scripts/dtc/srcpos.c ++++ b/scripts/dtc/srcpos.c +@@ -209,8 +209,6 @@ struct srcpos srcpos_empty = { + .file = NULL, + }; + +-#define TAB_SIZE 8 +- + void srcpos_update(struct srcpos *pos, const char *text, int len) + { + int i; +@@ -224,9 +222,6 @@ void srcpos_update(struct srcpos *pos, const char *text, int len) + if (text[i] == '\n') { + current_srcfile->lineno++; + current_srcfile->colno = 1; +- } else if (text[i] == '\t') { +- current_srcfile->colno = +- ALIGN(current_srcfile->colno, TAB_SIZE); + } else { + current_srcfile->colno++; + } +@@ -246,46 +241,27 @@ srcpos_copy(struct srcpos *pos) + return pos_new; + } + +- +- +-void +-srcpos_dump(struct srcpos *pos) +-{ +- printf("file : \"%s\"\n", +- pos->file ? (char *) pos->file : ""); +- printf("first_line : %d\n", pos->first_line); +- printf("first_column: %d\n", pos->first_column); +- printf("last_line : %d\n", pos->last_line); +- printf("last_column : %d\n", pos->last_column); +- printf("file : %s\n", pos->file->name); +-} +- +- + char * + srcpos_string(struct srcpos *pos) + { + const char *fname = ""; + char *pos_str; +- int rc; + +- if (pos) ++ if (pos->file && pos->file->name) + fname = pos->file->name; + + + if (pos->first_line != pos->last_line) +- rc = asprintf(&pos_str, "%s:%d.%d-%d.%d", fname, +- pos->first_line, pos->first_column, +- pos->last_line, pos->last_column); ++ xasprintf(&pos_str, "%s:%d.%d-%d.%d", fname, ++ pos->first_line, pos->first_column, ++ pos->last_line, pos->last_column); + else if (pos->first_column != pos->last_column) +- rc = asprintf(&pos_str, "%s:%d.%d-%d", fname, +- pos->first_line, pos->first_column, +- pos->last_column); ++ xasprintf(&pos_str, "%s:%d.%d-%d", fname, ++ pos->first_line, pos->first_column, ++ pos->last_column); + else +- rc = asprintf(&pos_str, "%s:%d.%d", fname, +- pos->first_line, pos->first_column); +- +- if (rc == -1) +- die("Couldn't allocate in srcpos string"); ++ xasprintf(&pos_str, "%s:%d.%d", fname, ++ pos->first_line, pos->first_column); + + return pos_str; + } +diff --git a/scripts/dtc/srcpos.h b/scripts/dtc/srcpos.h +index f81827bd6..9ded12a38 100644 +--- a/scripts/dtc/srcpos.h ++++ b/scripts/dtc/srcpos.h +@@ -17,11 +17,12 @@ + * USA + */ + +-#ifndef _SRCPOS_H_ +-#define _SRCPOS_H_ ++#ifndef SRCPOS_H ++#define SRCPOS_H + + #include + #include ++#include "util.h" + + struct srcfile_state { + FILE *f; +@@ -105,15 +106,12 @@ extern struct srcpos srcpos_empty; + extern void srcpos_update(struct srcpos *pos, const char *text, int len); + extern struct srcpos *srcpos_copy(struct srcpos *pos); + extern char *srcpos_string(struct srcpos *pos); +-extern void srcpos_dump(struct srcpos *pos); + +-extern void srcpos_verror(struct srcpos *pos, const char *prefix, +- const char *fmt, va_list va) +- __attribute__((format(printf, 3, 0))); +-extern void srcpos_error(struct srcpos *pos, const char *prefix, +- const char *fmt, ...) +- __attribute__((format(printf, 3, 4))); ++extern void PRINTF(3, 0) srcpos_verror(struct srcpos *pos, const char *prefix, ++ const char *fmt, va_list va); ++extern void PRINTF(3, 4) srcpos_error(struct srcpos *pos, const char *prefix, ++ const char *fmt, ...); + + extern void srcpos_set_line(char *f, int l); + +-#endif /* _SRCPOS_H_ */ ++#endif /* SRCPOS_H */ +diff --git a/scripts/dtc/treesource.c b/scripts/dtc/treesource.c +index a55d1d128..2461a3d06 100644 +--- a/scripts/dtc/treesource.c ++++ b/scripts/dtc/treesource.c +@@ -25,12 +25,12 @@ extern FILE *yyin; + extern int yyparse(void); + extern YYLTYPE yylloc; + +-struct boot_info *the_boot_info; ++struct dt_info *parser_output; + bool treesource_error; + +-struct boot_info *dt_from_source(const char *fname) ++struct dt_info *dt_from_source(const char *fname) + { +- the_boot_info = NULL; ++ parser_output = NULL; + treesource_error = false; + + srcfile_push(fname); +@@ -43,7 +43,7 @@ struct boot_info *dt_from_source(const char *fname) + if (treesource_error) + die("Syntax error parsing input tree\n"); + +- return the_boot_info; ++ return parser_output; + } + + static void write_prefix(FILE *f, int level) +@@ -137,7 +137,7 @@ static void write_propval_string(FILE *f, struct data val) + static void write_propval_cells(FILE *f, struct data val) + { + void *propend = val.val + val.len; +- cell_t *cp = (cell_t *)val.val; ++ fdt32_t *cp = (fdt32_t *)val.val; + struct marker *m = val.markers; + + fprintf(f, "<"); +@@ -263,22 +263,22 @@ static void write_tree_source_node(FILE *f, struct node *tree, int level) + } + + +-void dt_to_source(FILE *f, struct boot_info *bi) ++void dt_to_source(FILE *f, struct dt_info *dti) + { + struct reserve_info *re; + + fprintf(f, "/dts-v1/;\n\n"); + +- for (re = bi->reservelist; re; re = re->next) { ++ for (re = dti->reservelist; re; re = re->next) { + struct label *l; + + for_each_label(re->labels, l) + fprintf(f, "%s: ", l->label); + fprintf(f, "/memreserve/\t0x%016llx 0x%016llx;\n", +- (unsigned long long)re->re.address, +- (unsigned long long)re->re.size); ++ (unsigned long long)re->address, ++ (unsigned long long)re->size); + } + +- write_tree_source_node(f, bi->dt, 0); ++ write_tree_source_node(f, dti->dt, 0); + } + +diff --git a/scripts/dtc/update-dtc-source.sh b/scripts/dtc/update-dtc-source.sh +index 075d1d7af..1a009fd19 100755 +--- a/scripts/dtc/update-dtc-source.sh ++++ b/scripts/dtc/update-dtc-source.sh +@@ -1,9 +1,10 @@ + #!/bin/sh ++# SPDX-License-Identifier: GPL-2.0 + # Simple script to update the version of DTC carried by the Linux kernel + # + # This script assumes that the dtc and the linux git trees are in the + # same directory. After building dtc in the dtc directory, it copies the +-# source files and generated source files into the scripts/dtc directory ++# source files and generated source file(s) into the scripts/dtc directory + # in the kernel and creates a git commit updating them to the new + # version. + # +@@ -32,16 +33,24 @@ DTC_LINUX_PATH=`pwd`/scripts/dtc + + DTC_SOURCE="checks.c data.c dtc.c dtc.h flattree.c fstree.c livetree.c srcpos.c \ + srcpos.h treesource.c util.c util.h version_gen.h Makefile.dtc \ +- dtc-lexer.l dtc-parser.y fdtdump.c fdtput.c fdtget.c" +-DTC_LIB="fdt.c fdt.h fdt_addresses.c fdt_empty_tree.c fdt_ro.c fdt_rw.c \ +- fdt_strerror.c fdt_sw.c fdt_wip.c libfdt.h libfdt_env.h \ +- libfdt_internal.h" +-DTC_GENERATED="dtc-lexer.lex.c dtc-parser.tab.c dtc-parser.tab.h" ++ dtc-lexer.l dtc-parser.y" ++LIBFDT_SOURCE="Makefile.libfdt fdt.c fdt.h fdt_addresses.c fdt_empty_tree.c \ ++ fdt_overlay.c fdt_ro.c fdt_rw.c fdt_strerror.c fdt_sw.c \ ++ fdt_wip.c libfdt.h libfdt_env.h libfdt_internal.h" ++ ++get_last_dtc_version() { ++ git log --oneline scripts/dtc/ | grep 'upstream' | head -1 | sed -e 's/^.* \(.*\)/\1/' ++} ++ ++last_dtc_ver=$(get_last_dtc_version) + + # Build DTC + cd $DTC_UPSTREAM_PATH + make clean + make check ++dtc_version=$(git describe HEAD) ++dtc_log=$(git log --oneline ${last_dtc_ver}..) ++ + + # Copy the files into the Linux tree + cd $DTC_LINUX_PATH +@@ -49,13 +58,22 @@ for f in $DTC_SOURCE; do + cp ${DTC_UPSTREAM_PATH}/${f} ${f} + git add ${f} + done +-for f in $DTC_LIB; do +- cp ${DTC_UPSTREAM_PATH}/libfdt/${f} ${f} +- git add ${f} +-done +-for f in $DTC_GENERATED; do +- cp ${DTC_UPSTREAM_PATH}/$f ${f}_shipped +- git add ${f}_shipped ++for f in $LIBFDT_SOURCE; do ++ cp ${DTC_UPSTREAM_PATH}/libfdt/${f} libfdt/${f} ++ git add libfdt/${f} + done + +-git commit -e -v -m "scripts/dtc: Update to upstream version [CHANGEME]" ++sed -i -- 's/#include /#include "libfdt_env.h"/g' ./libfdt/libfdt.h ++sed -i -- 's/#include /#include "fdt.h"/g' ./libfdt/libfdt.h ++git add ./libfdt/libfdt.h ++ ++commit_msg=$(cat << EOF ++scripts/dtc: Update to upstream version ${dtc_version} ++ ++This adds the following commits from upstream: ++ ++${dtc_log} ++EOF ++) ++ ++git commit -e -v -s -m "${commit_msg}" +diff --git a/scripts/dtc/util.c b/scripts/dtc/util.c +index 9d65226df..9953c32a0 100644 +--- a/scripts/dtc/util.c ++++ b/scripts/dtc/util.c +@@ -46,6 +46,36 @@ char *xstrdup(const char *s) + return d; + } + ++/* based in part from (3) vsnprintf */ ++int xasprintf(char **strp, const char *fmt, ...) ++{ ++ int n, size = 128; /* start with 128 bytes */ ++ char *p; ++ va_list ap; ++ ++ /* initial pointer is NULL making the fist realloc to be malloc */ ++ p = NULL; ++ while (1) { ++ p = xrealloc(p, size); ++ ++ /* Try to print in the allocated space. */ ++ va_start(ap, fmt); ++ n = vsnprintf(p, size, fmt, ap); ++ va_end(ap); ++ ++ /* If that worked, return the string. */ ++ if (n > -1 && n < size) ++ break; ++ /* Else try again with more space. */ ++ if (n > -1) /* glibc 2.1 */ ++ size = n + 1; /* precisely what is needed */ ++ else /* glibc 2.0 */ ++ size *= 2; /* twice the old size */ ++ } ++ *strp = p; ++ return strlen(p); ++} ++ + char *join_path(const char *path, const char *name) + { + int lenp = strlen(path); +@@ -152,7 +182,6 @@ char get_escape_char(const char *s, int *i) + int j = *i + 1; + char val; + +- assert(c); + switch (c) { + case 'a': + val = '\a'; +@@ -349,7 +378,6 @@ int utilfdt_decode_type(const char *fmt, int *type, int *size) + void utilfdt_print_data(const char *data, int len) + { + int i; +- const char *p = data; + const char *s; + + /* no data, don't print */ +@@ -368,7 +396,7 @@ void utilfdt_print_data(const char *data, int len) + } while (s < data + len); + + } else if ((len % 4) == 0) { +- const uint32_t *cell = (const uint32_t *)data; ++ const fdt32_t *cell = (const fdt32_t *)data; + + printf(" = <"); + for (i = 0, len /= 4; i < len; i++) +@@ -376,6 +404,7 @@ void utilfdt_print_data(const char *data, int len) + i < (len - 1) ? " " : ""); + printf(">"); + } else { ++ const unsigned char *p = (const unsigned char *)data; + printf(" = ["); + for (i = 0; i < len; i++) + printf("%02x%s", *p++, i < len - 1 ? " " : ""); +@@ -383,15 +412,16 @@ void utilfdt_print_data(const char *data, int len) + } + } + +-void util_version(void) ++void NORETURN util_version(void) + { + printf("Version: %s\n", DTC_VERSION); + exit(0); + } + +-void util_usage(const char *errmsg, const char *synopsis, +- const char *short_opts, struct option const long_opts[], +- const char * const opts_help[]) ++void NORETURN util_usage(const char *errmsg, const char *synopsis, ++ const char *short_opts, ++ struct option const long_opts[], ++ const char * const opts_help[]) + { + FILE *fp = errmsg ? stderr : stdout; + const char a_arg[] = ""; +diff --git a/scripts/dtc/util.h b/scripts/dtc/util.h +index ccfdf4b12..66fba8ea7 100644 +--- a/scripts/dtc/util.h ++++ b/scripts/dtc/util.h +@@ -1,5 +1,5 @@ +-#ifndef _UTIL_H +-#define _UTIL_H ++#ifndef UTIL_H ++#define UTIL_H + + #include + #include +@@ -25,15 +25,27 @@ + * USA + */ + ++#ifdef __GNUC__ ++#define PRINTF(i, j) __attribute__((format (printf, i, j))) ++#define NORETURN __attribute__((noreturn)) ++#else ++#define PRINTF(i, j) ++#define NORETURN ++#endif ++ + #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) + +-static inline void __attribute__((noreturn)) die(const char *str, ...) ++#define stringify(s) stringify_(s) ++#define stringify_(s) #s ++ ++static inline void NORETURN PRINTF(1, 2) die(const char *str, ...) + { + va_list ap; + + va_start(ap, str); + fprintf(stderr, "FATAL ERROR: "); + vfprintf(stderr, str, ap); ++ va_end(ap); + exit(1); + } + +@@ -52,12 +64,14 @@ static inline void *xrealloc(void *p, size_t len) + void *new = realloc(p, len); + + if (!new) +- die("realloc() failed (len=%d)\n", len); ++ die("realloc() failed (len=%zd)\n", len); + + return new; + } + + extern char *xstrdup(const char *s); ++ ++extern int PRINTF(2, 3) xasprintf(char **strp, const char *fmt, ...); + extern char *join_path(const char *path, const char *name); + + /** +@@ -186,7 +200,7 @@ void utilfdt_print_data(const char *data, int len); + /** + * Show source version and exit + */ +-void util_version(void) __attribute__((noreturn)); ++void NORETURN util_version(void); + + /** + * Show usage and exit +@@ -200,9 +214,10 @@ void util_version(void) __attribute__((noreturn)); + * @param long_opts The structure of long options + * @param opts_help An array of help strings (should align with long_opts) + */ +-void util_usage(const char *errmsg, const char *synopsis, +- const char *short_opts, struct option const long_opts[], +- const char * const opts_help[]) __attribute__((noreturn)); ++void NORETURN util_usage(const char *errmsg, const char *synopsis, ++ const char *short_opts, ++ struct option const long_opts[], ++ const char * const opts_help[]); + + /** + * Show usage and exit +@@ -248,4 +263,4 @@ void util_usage(const char *errmsg, const char *synopsis, + case 'V': util_version(); \ + case '?': usage("unknown option"); + +-#endif /* _UTIL_H */ ++#endif /* UTIL_H */ +diff --git a/scripts/dtc/version_gen.h b/scripts/dtc/version_gen.h +index 607afac1c..89d4e0ad1 100644 +--- a/scripts/dtc/version_gen.h ++++ b/scripts/dtc/version_gen.h +@@ -1 +1 @@ +-#define DTC_VERSION "DTC 1.4.1" ++#define DTC_VERSION "DTC 1.4.6" +-- +2.17.0 + From 9e141e782fef1ff06460f8055f1a3ac771cde6a3 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 27 May 2018 13:22:31 +0200 Subject: [PATCH 087/118] Add overlay initial support (#23) * Add overlay initial support * Create load * Cleanup NL * Reorg dts files * Update update-dtb.sh --- buildroot-external/barebox-env/bin/init | 3 +++ buildroot-external/barebox-env/overlay/load | 5 +++++ buildroot-external/board/ova/post-image.sh | 2 +- .../barebox-state.dtb => fdt/barebox-state-efi.dtb} | Bin .../barebox-state.dts => fdt/barebox-state-efi.dts} | 1 - scripts/update-dtb.sh | 2 +- 6 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 buildroot-external/barebox-env/overlay/load rename buildroot-external/{board/ova/barebox-state.dtb => fdt/barebox-state-efi.dtb} (100%) rename buildroot-external/{board/ova/barebox-state.dts => fdt/barebox-state-efi.dts} (99%) diff --git a/buildroot-external/barebox-env/bin/init b/buildroot-external/barebox-env/bin/init index 29678ded514..81c766df89d 100644 --- a/buildroot-external/barebox-env/bin/init +++ b/buildroot-external/barebox-env/bin/init @@ -10,6 +10,9 @@ for i in /env/init/*; do . $i done +# Overlays +. /env/overlay/load + echo "- Hit m for menu or wait for autoboot -" timeout -a 1 -s -v key diff --git a/buildroot-external/barebox-env/overlay/load b/buildroot-external/barebox-env/overlay/load new file mode 100644 index 00000000000..9a4bfe153a4 --- /dev/null +++ b/buildroot-external/barebox-env/overlay/load @@ -0,0 +1,5 @@ +#!/bin/sh + +for i in /env/overlay/*.dbto; do + oftree -o $i +done diff --git a/buildroot-external/board/ova/post-image.sh b/buildroot-external/board/ova/post-image.sh index 448f3711e85..f719f0e5b11 100755 --- a/buildroot-external/board/ova/post-image.sh +++ b/buildroot-external/board/ova/post-image.sh @@ -18,7 +18,7 @@ mkdir -p ${BOOT_DATA}/EFI/BOOT mkdir -p ${BOOT_DATA}/EFI/barebox cp ${BINARIES_DIR}/barebox.bin ${BOOT_DATA}/EFI/BOOT/BOOTx64.EFI -cp ${BOARD_DIR}/barebox-state.dtb ${BOOT_DATA}/EFI/barebox/state.dtb +cp ${BR2_EXTERNAL_HASSOS_PATH}/fdt/barebox-state-efi.dtb ${BOOT_DATA}/EFI/barebox/state.dtb # Create other layers create_boot_image ${BINARIES_DIR} diff --git a/buildroot-external/board/ova/barebox-state.dtb b/buildroot-external/fdt/barebox-state-efi.dtb similarity index 100% rename from buildroot-external/board/ova/barebox-state.dtb rename to buildroot-external/fdt/barebox-state-efi.dtb diff --git a/buildroot-external/board/ova/barebox-state.dts b/buildroot-external/fdt/barebox-state-efi.dts similarity index 99% rename from buildroot-external/board/ova/barebox-state.dts rename to buildroot-external/fdt/barebox-state-efi.dts index 927ff662425..f337146bf40 100644 --- a/buildroot-external/board/ova/barebox-state.dts +++ b/buildroot-external/fdt/barebox-state-efi.dts @@ -60,7 +60,6 @@ backend_state: state { partuuid = "33236519-7f32-4dff-8002-3390b62c309d"; - }; }; diff --git a/scripts/update-dtb.sh b/scripts/update-dtb.sh index 1417d7026d7..2b1406320af 100755 --- a/scripts/update-dtb.sh +++ b/scripts/update-dtb.sh @@ -1,3 +1,3 @@ #!/bin/sh -dtc -O dtb -o buildroot-external/board/ova/barebox-state.dtb buildroot-external/board/ova/barebox-state.dts +dtc -O dtb -o buildroot-external/fdt/barebox-state-efi.dtb buildroot-external/fdt/barebox-state-efi.dts From d784ba8c365d45ab3b34d037eac0bb87639b19ce Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 27 May 2018 11:43:24 +0000 Subject: [PATCH 088/118] Add overlay for state to rpi --- buildroot-external/barebox-env/overlay/load | 2 +- .../rpi2/barebox-env/barebox-state-rpi.dtbo | Bin 0 -> 879 bytes .../board/rpi2/barebox-env/init/dt-sdcard | 3 -- buildroot-external/board/rpi2/barebox.config | 3 +- buildroot-external/fdt/barebox-state-efi.dtb | Bin 1097 -> 1075 bytes buildroot-external/fdt/barebox-state-rpi.dtbo | Bin 0 -> 879 bytes buildroot-external/fdt/barebox-state-rpi.dtso | 37 ++++++++++++++++++ scripts/update-dtb.sh | 4 +- 8 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 buildroot-external/board/rpi2/barebox-env/barebox-state-rpi.dtbo delete mode 100644 buildroot-external/board/rpi2/barebox-env/init/dt-sdcard create mode 100644 buildroot-external/fdt/barebox-state-rpi.dtbo create mode 100644 buildroot-external/fdt/barebox-state-rpi.dtso diff --git a/buildroot-external/barebox-env/overlay/load b/buildroot-external/barebox-env/overlay/load index 9a4bfe153a4..577f85111e8 100644 --- a/buildroot-external/barebox-env/overlay/load +++ b/buildroot-external/barebox-env/overlay/load @@ -1,5 +1,5 @@ #!/bin/sh -for i in /env/overlay/*.dbto; do +for i in /env/overlay/*.dtbo; do oftree -o $i done diff --git a/buildroot-external/board/rpi2/barebox-env/barebox-state-rpi.dtbo b/buildroot-external/board/rpi2/barebox-env/barebox-state-rpi.dtbo new file mode 100644 index 0000000000000000000000000000000000000000..99106b64956c0be88a4f8d12e984a528d0b522d2 GIT binary patch literal 879 zcma)4yH3L}6m`p^bO6D?$N~!tRhtMQ)B!Ou@&!nd8@sJlH;!T#Q6@f*kssj~fODOs zZpuSgy15UZoa=k+xBZWI#>3`9ox_e`hm>Gpul-tvjc=>UTH}IG<}!1)179JM zZHhjz;95yy9%Z5VGD)aR`(0Q^D9cA$3Myi?D+_#)um6W{2gr_@@umL*J#$_-<&?>6 zgW~`hoxA2dS<7kWi?Mo=qPOw)I^S&^M*~_wmpr@hm)3D7eaUn0Asn8Pf-k;U_q#zx z{p(q4A7+jl_`ftHjqf)2ptW7jM@HMA^%XGp{naH!{k8k(he<=&9MPW@yijJ5SG0b{ zWALVdcQACkm`FD)l_|9$%tOFLzhP9s#G4q>2>rE5xo(~U_0?FVZa=-XS|`wa)4f}s znbGwvEIZ>u6w=yWDz!#x)w8VP)Xa146y7V-d?Yn1r@o(WV&Je|o*)IRaAA+cg= MtYdJg@*O1m0tY#*(*OVf literal 0 HcmV?d00001 diff --git a/buildroot-external/board/rpi2/barebox-env/init/dt-sdcard b/buildroot-external/board/rpi2/barebox-env/init/dt-sdcard deleted file mode 100644 index 7173a84c3d4..00000000000 --- a/buildroot-external/board/rpi2/barebox-env/init/dt-sdcard +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh - -of_fixup_status /soc/mmc@7e202000/ diff --git a/buildroot-external/board/rpi2/barebox.config b/buildroot-external/board/rpi2/barebox.config index 7e21c077eab..1cca2014faf 100644 --- a/buildroot-external/board/rpi2/barebox.config +++ b/buildroot-external/board/rpi2/barebox.config @@ -37,9 +37,10 @@ CONFIG_CMD_GETOPT=y CONFIG_CMD_MENUTREE=y CONFIG_CMD_TIMEOUT=y CONFIG_CMD_DETECT=y -CONFIG_CMD_OF_FIXUP_STATUS=y +CONFIG_CMD_OFTREE=y CONFIG_CMD_STATE=y CONFIG_CMD_BOOTCHOOSER=y +CONFIG_OFTREE_OVERLAY=y CONFIG_SERIAL_AMBA_PL011=y # CONFIG_SPI is not set CONFIG_MCI=y diff --git a/buildroot-external/fdt/barebox-state-efi.dtb b/buildroot-external/fdt/barebox-state-efi.dtb index fc1ead0ccf8780baad5e1276f0b4106a3e9b01fc..297ab8ba7243121a200d395ae0a00ceaec2996f3 100644 GIT binary patch delta 62 zcmX@fv6(~T0`I@K3=AyB3=9kw3=GVBfV2h>3j(nK5Q9KDP`qWMMmzK5{meBS1sREX IDLJVO0FBWN3IG5A delta 78 zcmdnYagsyh0`I@K3=Axu3=9kw3=GU?fV2h>3j(nK5Q9K1P<+Zpjdo^EW+0CRh)XB0 WU~cBi$;>OQ&?(4B%uC5hWdHzB8xS1; diff --git a/buildroot-external/fdt/barebox-state-rpi.dtbo b/buildroot-external/fdt/barebox-state-rpi.dtbo new file mode 100644 index 0000000000000000000000000000000000000000..99106b64956c0be88a4f8d12e984a528d0b522d2 GIT binary patch literal 879 zcma)4yH3L}6m`p^bO6D?$N~!tRhtMQ)B!Ou@&!nd8@sJlH;!T#Q6@f*kssj~fODOs zZpuSgy15UZoa=k+xBZWI#>3`9ox_e`hm>Gpul-tvjc=>UTH}IG<}!1)179JM zZHhjz;95yy9%Z5VGD)aR`(0Q^D9cA$3Myi?D+_#)um6W{2gr_@@umL*J#$_-<&?>6 zgW~`hoxA2dS<7kWi?Mo=qPOw)I^S&^M*~_wmpr@hm)3D7eaUn0Asn8Pf-k;U_q#zx z{p(q4A7+jl_`ftHjqf)2ptW7jM@HMA^%XGp{naH!{k8k(he<=&9MPW@yijJ5SG0b{ zWALVdcQACkm`FD)l_|9$%tOFLzhP9s#G4q>2>rE5xo(~U_0?FVZa=-XS|`wa)4f}s znbGwvEIZ>u6w=yWDz!#x)w8VP)Xa146y7V-d?Yn1r@o(WV&Je|o*)IRaAA+cg= MtYdJg@*O1m0tY#*(*OVf literal 0 HcmV?d00001 diff --git a/buildroot-external/fdt/barebox-state-rpi.dtso b/buildroot-external/fdt/barebox-state-rpi.dtso new file mode 100644 index 00000000000..907baf32ba3 --- /dev/null +++ b/buildroot-external/fdt/barebox-state-rpi.dtso @@ -0,0 +1,37 @@ +/dts-v1/; +/plugin/; + +/ { + + fragment@0 { + target = <&sdhci>; + __overlay__ { + status = "disabled"; + }; + }; + + fragment@1 { + target = <&sdhost>; + __overlay__ { + status = "okay"; + partitions { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fixed-partitions"; + + backend_state_sdhost: partition@22100000 { + label = "state"; + reg = <0x22100000 0x800000>; + }; + }; + }; + }; + + fragment@2 { + target = <&state>; + __overlay__ { + backend = <&backend_state_sdhost>; + }; + }; +}; + diff --git a/scripts/update-dtb.sh b/scripts/update-dtb.sh index 2b1406320af..e634c75cab1 100755 --- a/scripts/update-dtb.sh +++ b/scripts/update-dtb.sh @@ -1,3 +1,5 @@ #!/bin/sh -dtc -O dtb -o buildroot-external/fdt/barebox-state-efi.dtb buildroot-external/fdt/barebox-state-efi.dts +dtc -I dts -O dtb -o buildroot-external/fdt/barebox-state-efi.dtb buildroot-external/fdt/barebox-state-efi.dts + +dtc -@ -I dts -O dtb -o buildroot-external/fdt/barebox-state-rpi.dtbo buildroot-external/fdt/barebox-state-rpi.dtso From 073fefb5d592d476b72ea5af61300cb878db9eb5 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 27 May 2018 14:42:26 +0000 Subject: [PATCH 089/118] Bugfix missing files --- ...drivers-of-implement-overlay-support.patch | 612 +++++++++++- ...dtc-Update-to-upstream-version-1.4.6.patch | 926 +++++++++++++++++- 2 files changed, 1527 insertions(+), 11 deletions(-) diff --git a/buildroot-external/patches/barebox/0001-drivers-of-implement-overlay-support.patch b/buildroot-external/patches/barebox/0001-drivers-of-implement-overlay-support.patch index 3dd6fb4b477..c510a91f0b0 100644 --- a/buildroot-external/patches/barebox/0001-drivers-of-implement-overlay-support.patch +++ b/buildroot-external/patches/barebox/0001-drivers-of-implement-overlay-support.patch @@ -1,19 +1,23 @@ -From 059762285f200a6e2527a4447d35f34d66b07bc2 Mon Sep 17 00:00:00 2001 +From 0ea63818330f3ebe989a56df89c1f49c63e7d761 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli -Date: Sun, 27 May 2018 09:33:20 +0000 +Date: Sun, 27 May 2018 14:40:45 +0000 Subject: [PATCH 1/2] drivers: of: implement overlay support Signed-off-by: Pascal Vizeli --- - Documentation/user/devicetree.rst | 101 +++++++++++++++++++++++++++++- + Documentation/user/devicetree.rst | 101 ++++++++- arch/sandbox/dts/Makefile | 5 +- - arch/sandbox/dts/sandbox.dts | 6 ++ - commands/oftree.c | 65 +++++++++++++++++-- - drivers/of/Kconfig | 6 ++ + arch/sandbox/dts/sandbox.dts | 6 + + commands/oftree.c | 65 +++++- + drivers/of/Kconfig | 6 + drivers/of/Makefile | 1 + - include/of.h | 71 +++++++++++++++++++++ + drivers/of/overlay.c | 234 ++++++++++++++++++++ + drivers/of/resolver.c | 346 ++++++++++++++++++++++++++++++ + include/of.h | 71 ++++++ scripts/Makefile.lib | 5 +- - 8 files changed, 251 insertions(+), 9 deletions(-) + 10 files changed, 831 insertions(+), 9 deletions(-) + create mode 100644 drivers/of/overlay.c + create mode 100644 drivers/of/resolver.c diff --git a/Documentation/user/devicetree.rst b/Documentation/user/devicetree.rst index 17934d86e..b2220997d 100644 @@ -314,6 +318,598 @@ index ec4387006..323543461 100644 obj-$(CONFIG_MTD) += of_mtd.o obj-$(CONFIG_OF_BAREBOX_DRIVERS) += barebox.o +obj-$(CONFIG_OFTREE_OVERLAY) += resolver.o overlay.o +diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c +new file mode 100644 +index 000000000..a711a353f +--- /dev/null ++++ b/drivers/of/overlay.c +@@ -0,0 +1,234 @@ ++/* ++ * Functions for working with device tree overlays ++ * ++ * Copyright (C) 2012 Pantelis Antoniou ++ * Copyright (C) 2012 Texas Instruments Inc. ++ * Copyright (C) 2015 Pengutronix, Jan Luebbe ++ * ++ * 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. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/** ++ * Apply a single overlay node recursively. ++ * ++ * All the property notifiers are appropriately called. ++ * Note that the in case of an error the target node is left ++ * in a inconsistent state. Error recovery should be performed ++ * by recording the modification using the of notifiers. ++ */ ++static int of_overlay_apply_one(struct device_node *target, ++ const struct device_node *overlay) ++{ ++ struct device_node *child, *tchild; ++ struct property *prop; ++ int ret; ++ ++ /* sanity checks */ ++ if (target == NULL || overlay == NULL) ++ return -EINVAL; ++ ++ for_each_property_of_node(overlay, prop) { ++ /* don't touch, 'name' */ ++ if (of_prop_cmp(prop->name, "name") == 0) ++ continue; ++ ++ of_delete_property(of_find_property(target, prop->name, NULL)); ++ ++ if (of_new_property(target, prop->name, prop->value, prop->length) == NULL) ++ return -ENOMEM; ++ } ++ ++ for_each_child_of_node(overlay, child) { ++ tchild = of_get_child_by_name(target, child->name); ++ if (tchild != NULL) { ++ /* apply overlay recursively */ ++ ret = of_overlay_apply_one(tchild, child); ++ ++ if (ret != 0) ++ return ret; ++ } else { ++ /* create new child */ ++ tchild = of_new_node(target, child->name); ++ if (tchild == NULL) ++ return -ENOMEM; ++ ++ /* apply the overlay */ ++ ret = of_overlay_apply_one(tchild, child); ++ if (ret != 0) { ++ of_delete_node(tchild); ++ return ret; ++ } ++ } ++ } ++ ++ return 0; ++} ++ ++/** ++ * of_overlay - Apply @count overlays pointed at by @ovinfo_tab ++ * @count: Number of of_overlay_info's ++ * @ovinfo_tab: Array of overlay_info's to apply ++ * ++ * Applies the overlays given, while handling all error conditions ++ * appropriately. Either the operation succeeds, or if it fails the ++ * live tree is reverted to the state before the attempt. ++ * Returns 0, or an error if the overlay attempt failed. ++ */ ++int of_overlay(int count, struct of_overlay_info *ovinfo_tab) ++{ ++ struct of_overlay_info *ovinfo; ++ int i, err; ++ ++ if (!ovinfo_tab) ++ return -EINVAL; ++ ++ for (i = 0; i < count; i++) { ++ ovinfo = &ovinfo_tab[i]; ++ err = of_overlay_apply_one(ovinfo->target, ovinfo->overlay); ++ if (err != 0) { ++ pr_err("%s: overlay failed '%s'\n", ++ __func__, ovinfo->target->full_name); ++ goto err_fail; ++ } ++ } ++ ++ return 0; ++ ++err_fail: ++ return err; ++} ++ ++/** ++ * of_fill_overlay_info - Fill an overlay info structure ++ * @info_node: Device node containing the overlay ++ * @ovinfo: Pointer to the overlay info structure to fill ++ * ++ * Fills an overlay info structure with the overlay information ++ * from a device node. This device node must have a target property ++ * which contains a phandle of the overlay target node, and an ++ * __overlay__ child node which has the overlay contents. ++ * Both ovinfo->target & ovinfo->overlay have their references taken. ++ * ++ * Returns 0 on success, or a negative error value. ++ */ ++int of_fill_overlay_info(struct device_node *info_node, ++ struct of_overlay_info *ovinfo) ++{ ++ const char *target_path; ++ u32 target_handle; ++ int ret; ++ ++ if (!info_node || !ovinfo) ++ return -EINVAL; ++ ++ ret = of_property_read_u32(info_node, "target", &target_handle); ++ if (ret == 0) { ++ ovinfo->target = of_find_node_by_phandle(target_handle); ++ } else { ++ ret = of_property_read_string(info_node, "target-path", &target_path); ++ if (ret == 0) { ++ ovinfo->target = of_find_node_by_path(target_path); ++ } ++ } ++ if (ovinfo->target == NULL) ++ goto err_fail; ++ ++ ovinfo->overlay = of_get_child_by_name(info_node, "__overlay__"); ++ if (ovinfo->overlay == NULL) ++ goto err_fail; ++ ++ return 0; ++ ++err_fail: ++ memset(ovinfo, 0, sizeof(*ovinfo)); ++ return -EINVAL; ++} ++ ++/** ++ * of_build_overlay_info - Build an overlay info array ++ * @tree: Device node containing all the overlays ++ * @cntp: Pointer to where the overlay info count will be help ++ * @ovinfop: Pointer to the pointer of an overlay info structure. ++ * ++ * Helper function that given a tree containing overlay information, ++ * allocates and builds an overlay info array containing it, ready ++ * for use using of_overlay. ++ * ++ * Returns 0 on success with the @cntp @ovinfop pointers valid, ++ * while on error a negative error value is returned. ++ */ ++int of_build_overlay_info(struct device_node *tree, ++ int *cntp, struct of_overlay_info **ovinfop) ++{ ++ struct device_node *node; ++ struct of_overlay_info *ovinfo; ++ int cnt, err; ++ ++ if (tree == NULL || cntp == NULL || ovinfop == NULL) ++ return -EINVAL; ++ ++ /* worst case; every child is a node */ ++ cnt = 0; ++ for_each_child_of_node(tree, node) ++ cnt++; ++ ++ ovinfo = kzalloc(cnt * sizeof(*ovinfo), GFP_KERNEL); ++ if (ovinfo == NULL) ++ return -ENOMEM; ++ ++ cnt = 0; ++ for_each_child_of_node(tree, node) { ++ memset(&ovinfo[cnt], 0, sizeof(*ovinfo)); ++ err = of_fill_overlay_info(node, &ovinfo[cnt]); ++ if (err == 0) ++ cnt++; ++ } ++ ++ /* if nothing filled, return error */ ++ if (cnt == 0) { ++ kfree(ovinfo); ++ return -ENODEV; ++ } ++ ++ *cntp = cnt; ++ *ovinfop = ovinfo; ++ ++ return 0; ++} ++ ++/** ++ * of_free_overlay_info - Free an overlay info array ++ * @count: Number of of_overlay_info's ++ * @ovinfo_tab: Array of overlay_info's to free ++ * ++ * Releases the memory of a previously allocate ovinfo array ++ * by of_build_overlay_info. ++ * Returns 0, or an error if the arguments are bogus. ++ */ ++int of_free_overlay_info(int count, struct of_overlay_info *ovinfo_tab) ++{ ++ struct of_overlay_info *ovinfo; ++ int i; ++ ++ if (!ovinfo_tab || count < 0) ++ return -EINVAL; ++ ++ /* do it in reverse */ ++ for (i = count - 1; i >= 0; i--) ++ ovinfo = &ovinfo_tab[i]; ++ ++ kfree(ovinfo_tab); ++ ++ return 0; ++} +diff --git a/drivers/of/resolver.c b/drivers/of/resolver.c +new file mode 100644 +index 000000000..62476093c +--- /dev/null ++++ b/drivers/of/resolver.c +@@ -0,0 +1,346 @@ ++/* ++ * Functions for dealing with DT resolution ++ * ++ * Copyright (C) 2012 Pantelis Antoniou ++ * Copyright (C) 2012 Texas Instruments Inc. ++ * Copyright (C) 2015 Pengutronix, Jan Luebbe ++ * ++ * 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. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/** ++ * Adjust a subtree's phandle values by a given delta. ++ * Makes sure not to just adjust the device node's phandle value, ++ * but modify the phandle properties values as well. ++ */ ++static void of_adjust_tree_phandles(struct device_node *node, ++ int phandle_delta) ++{ ++ struct device_node *child; ++ struct property *prop; ++ phandle phandle; ++ ++ /* first adjust the node's phandle direct value */ ++ if (node->phandle != 0 && node->phandle != OF_PHANDLE_ILLEGAL) ++ node->phandle += phandle_delta; ++ ++ /* now adjust phandle & linux,phandle values */ ++ for_each_property_of_node(node, prop) { ++ /* only look for these two */ ++ if (of_prop_cmp(prop->name, "phandle") != 0 && ++ of_prop_cmp(prop->name, "linux,phandle") != 0) ++ continue; ++ ++ /* must be big enough */ ++ if (prop->length < 4) ++ continue; ++ ++ /* read phandle value */ ++ phandle = be32_to_cpu(*(uint32_t *)prop->value); ++ if (phandle == OF_PHANDLE_ILLEGAL) /* unresolved */ ++ continue; ++ ++ /* adjust */ ++ *(uint32_t *)prop->value = cpu_to_be32(node->phandle); ++ } ++ ++ /* now do the children recursively */ ++ for_each_child_of_node(node, child) ++ of_adjust_tree_phandles(child, phandle_delta); ++} ++ ++/** ++ * Adjust the local phandle references by the given phandle delta. ++ * Assumes the existances of a __local_fixups__ node at the root ++ * of the tree. Does not take any devtree locks so make sure you ++ * call this on a tree which is at the detached state. ++ */ ++static int of_adjust_tree_phandle_references(struct device_node *node, ++ int phandle_delta) ++{ ++ phandle phandle; ++ struct device_node *refnode, *child; ++ struct property *rprop, *sprop; ++ char *propval, *propcur, *propend, *nodestr, *propstr, *s; ++ int offset, propcurlen; ++ int err; ++ bool found = false; ++ ++ /* locate the symbols & fixups nodes on resolve */ ++ for_each_child_of_node(node, child) ++ if (of_node_cmp(child->name, "__local_fixups__") == 0) { ++ found = true; ++ break; ++ } ++ ++ /* no local fixups */ ++ if (!found) ++ return 0; ++ ++ /* find the local fixups property */ ++ for_each_property_of_node(child, rprop) { ++ /* skip properties added automatically */ ++ if (of_prop_cmp(rprop->name, "name") == 0) ++ continue; ++ ++ /* make a copy */ ++ propval = kmalloc(rprop->length, GFP_KERNEL); ++ if (propval == NULL) { ++ pr_err("%s: Could not copy value of '%s'\n", ++ __func__, rprop->name); ++ return -ENOMEM; ++ } ++ memcpy(propval, rprop->value, rprop->length); ++ ++ propend = propval + rprop->length; ++ for (propcur = propval; propcur < propend; ++ propcur += propcurlen + 1) { ++ ++ propcurlen = strlen(propcur); ++ ++ nodestr = propcur; ++ s = strchr(propcur, ':'); ++ if (s == NULL) { ++ pr_err("%s: Illegal symbol entry '%s' (1)\n", ++ __func__, propcur); ++ err = -EINVAL; ++ goto err_fail; ++ } ++ *s++ = '\0'; ++ ++ propstr = s; ++ s = strchr(s, ':'); ++ if (s == NULL) { ++ pr_err("%s: Illegal symbol entry '%s' (2)\n", ++ __func__, (char *)rprop->value); ++ err = -EINVAL; ++ goto err_fail; ++ } ++ ++ *s++ = '\0'; ++ offset = simple_strtoul(s, NULL, 10); ++ ++ /* look into the resolve node for the full path */ ++ refnode = of_find_node_by_path_from(node, nodestr); ++ if (refnode == NULL) { ++ pr_warn("%s: Could not find refnode '%s'\n", ++ __func__, (char *)rprop->value); ++ continue; ++ } ++ ++ /* now find the property */ ++ found = false; ++ for_each_property_of_node(refnode, sprop) ++ if (of_prop_cmp(sprop->name, propstr) == 0) { ++ found = true; ++ break; ++ } ++ ++ if (!found) { ++ pr_err("%s: Could not find property '%s'\n", ++ __func__, (char *)rprop->value); ++ err = -ENOENT; ++ goto err_fail; ++ } ++ ++ phandle = be32_to_cpu(*(uint32_t *) ++ (sprop->value + offset)); ++ *(uint32_t *)(sprop->value + offset) = ++ cpu_to_be32(phandle + phandle_delta); ++ } ++ ++ kfree(propval); ++ } ++ ++ return 0; ++ ++err_fail: ++ kfree(propval); ++ return err; ++} ++ ++/** ++ * of_resolve - Resolve the given node against the live tree. ++ * ++ * @resolve: Node to resolve ++ * ++ * Perform dynamic Device Tree resolution against the live tree ++ * to the given node to resolve. This depends on the live tree ++ * having a __symbols__ node, and the resolve node the __fixups__ & ++ * __local_fixups__ nodes (if needed). ++ * The result of the operation is a resolve node that it's contents ++ * are fit to be inserted or operate upon the live tree. ++ * Returns 0 on success or a negative error value on error. ++ */ ++int of_resolve(struct device_node *resolve) ++{ ++ struct device_node *child, *refnode; ++ struct device_node *root_sym, *resolve_sym, *resolve_fix; ++ struct property *rprop, *sprop; ++ const char *refpath; ++ char *propval, *propcur, *propend, *nodestr, *propstr, *s; ++ int offset, propcurlen; ++ phandle phandle, phandle_delta; ++ int err; ++ bool found = false; ++ ++ /* the resolve node must exist */ ++ if (resolve == NULL) { ++ return -EINVAL; ++ } ++ ++ /* first we need to adjust the phandles */ ++ phandle_delta = of_get_tree_max_phandle(NULL) + 1; ++ of_adjust_tree_phandles(resolve, phandle_delta); ++ err = of_adjust_tree_phandle_references(resolve, phandle_delta); ++ if (err != 0) ++ return err; ++ ++ root_sym = NULL; ++ resolve_sym = NULL; ++ resolve_fix = NULL; ++ ++ /* this may fail (if no fixups are required) */ ++ root_sym = of_find_node_by_path("/__symbols__"); ++ ++ /* locate the symbols & fixups nodes on resolve */ ++ for_each_child_of_node(resolve, child) { ++ if (resolve_sym == NULL && ++ of_node_cmp(child->name, "__symbols__") == 0) ++ resolve_sym = child; ++ ++ if (resolve_fix == NULL && ++ of_node_cmp(child->name, "__fixups__") == 0) ++ resolve_fix = child; ++ ++ /* both found, don't bother anymore */ ++ if (resolve_sym != NULL && resolve_fix != NULL) ++ break; ++ } ++ ++ /* we do allow for the case where no fixups are needed */ ++ if (resolve_fix == NULL) ++ goto merge_sym; ++ ++ /* we need to fixup, but no root symbols... */ ++ if (root_sym == NULL) ++ return -EINVAL; ++ ++ for_each_property_of_node(resolve_fix, rprop) { ++ /* skip properties added automatically */ ++ if (of_prop_cmp(rprop->name, "name") == 0) ++ continue; ++ ++ err = of_property_read_string(root_sym, ++ rprop->name, &refpath); ++ if (err != 0) { ++ pr_err("%s: Could not find symbol '%s'\n", ++ __func__, rprop->name); ++ goto err_fail; ++ } ++ ++ refnode = of_find_node_by_path(refpath); ++ if (refnode == NULL) { ++ pr_err("%s: Could not find node by path '%s'\n", ++ __func__, refpath); ++ err = -ENOENT; ++ goto err_fail; ++ } ++ ++ phandle = refnode->phandle; ++ ++ pr_debug("%s: %s phandle is 0x%08x\n", ++ __func__, rprop->name, phandle); ++ ++ /* make a copy */ ++ propval = kmalloc(rprop->length, GFP_KERNEL); ++ if (propval == NULL) { ++ pr_err("%s: Could not copy value of '%s'\n", ++ __func__, rprop->name); ++ err = -ENOMEM; ++ goto err_fail; ++ } ++ ++ memcpy(propval, rprop->value, rprop->length); ++ ++ propend = propval + rprop->length; ++ for (propcur = propval; propcur < propend; ++ propcur += propcurlen + 1) { ++ propcurlen = strlen(propcur); ++ ++ nodestr = propcur; ++ s = strchr(propcur, ':'); ++ if (s == NULL) { ++ pr_err("%s: Illegal symbol " ++ "entry '%s' (1)\n", ++ __func__, (char *)rprop->value); ++ kfree(propval); ++ err = -EINVAL; ++ goto err_fail; ++ } ++ *s++ = '\0'; ++ ++ propstr = s; ++ s = strchr(s, ':'); ++ if (s == NULL) { ++ pr_err("%s: Illegal symbol " ++ "entry '%s' (2)\n", ++ __func__, (char *)rprop->value); ++ kfree(propval); ++ err = -EINVAL; ++ goto err_fail; ++ } ++ ++ *s++ = '\0'; ++ offset = simple_strtoul(s, NULL, 10); ++ ++ /* look into the resolve node for the full path */ ++ refnode = of_find_node_by_path_from(resolve, nodestr); ++ if (refnode == NULL) { ++ pr_err("%s: Could not find refnode '%s'\n", ++ __func__, (char *)rprop->value); ++ kfree(propval); ++ err = -ENOENT; ++ goto err_fail; ++ } ++ ++ /* now find the property */ ++ found = false; ++ for_each_property_of_node(refnode, sprop) ++ if (of_prop_cmp(sprop->name, propstr) == 0) { ++ found = true; ++ break; ++ } ++ ++ if (!found) { ++ pr_err("%s: Could not find property '%s'\n", ++ __func__, (char *)rprop->value); ++ kfree(propval); ++ err = -ENOENT; ++ goto err_fail; ++ } ++ ++ *(uint32_t *)(sprop->value + offset) = ++ cpu_to_be32(phandle); ++ } ++ ++ kfree(propval); ++ } ++ ++merge_sym: ++ return 0; ++ ++err_fail: ++ return err; ++} diff --git a/include/of.h b/include/of.h index fec51bb94..91476ae47 100644 --- a/include/of.h diff --git a/buildroot-external/patches/barebox/0002-scripts-dtc-Update-to-upstream-version-1.4.6.patch b/buildroot-external/patches/barebox/0002-scripts-dtc-Update-to-upstream-version-1.4.6.patch index 2635cc8ee44..438fd6d149a 100644 --- a/buildroot-external/patches/barebox/0002-scripts-dtc-Update-to-upstream-version-1.4.6.patch +++ b/buildroot-external/patches/barebox/0002-scripts-dtc-Update-to-upstream-version-1.4.6.patch @@ -1,6 +1,6 @@ -From b283776d26027ce237276f57e4522f5d0b6aab3f Mon Sep 17 00:00:00 2001 +From d898e0f7e552b781b767bb9edabb66d0a6cbb019 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli -Date: Sun, 27 May 2018 09:34:21 +0000 +Date: Sun, 27 May 2018 14:41:33 +0000 Subject: [PATCH 2/2] scripts/dtc: Update to upstream version 1.4.6 Signed-off-by: Pascal Vizeli @@ -19,6 +19,7 @@ Signed-off-by: Pascal Vizeli scripts/dtc/fdt.c | 24 +- scripts/dtc/fdt.h | 6 +- scripts/dtc/fdt_empty_tree.c | 1 - + scripts/dtc/fdt_overlay.c | 912 ++++++++++++++++++++ scripts/dtc/fdt_ro.c | 288 ++++++- scripts/dtc/fdt_rw.c | 121 +-- scripts/dtc/fdt_strerror.c | 6 + @@ -40,7 +41,8 @@ Signed-off-by: Pascal Vizeli scripts/dtc/util.c | 44 +- scripts/dtc/util.h | 33 +- scripts/dtc/version_gen.h | 2 +- - 35 files changed, 3666 insertions(+), 1728 deletions(-) + 36 files changed, 4578 insertions(+), 1728 deletions(-) + create mode 100644 scripts/dtc/fdt_overlay.c diff --git a/scripts/dtc/.gitignore b/scripts/dtc/.gitignore index 80f6b50fd..cdabdc95a 100644 @@ -5679,6 +5681,924 @@ index f72d13b1d..f2ae9b77c 100644 return fdt_open_into(buf, buf, bufsize); } - +diff --git a/scripts/dtc/fdt_overlay.c b/scripts/dtc/fdt_overlay.c +new file mode 100644 +index 000000000..bf75388ec +--- /dev/null ++++ b/scripts/dtc/fdt_overlay.c +@@ -0,0 +1,912 @@ ++/* ++ * libfdt - Flat Device Tree manipulation ++ * Copyright (C) 2016 Free Electrons ++ * Copyright (C) 2016 NextThing Co. ++ * ++ * libfdt is dual licensed: you can use it either under the terms of ++ * the GPL, or the BSD license, at your option. ++ * ++ * a) This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * 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., 51 Franklin St, Fifth Floor, Boston, ++ * MA 02110-1301 USA ++ * ++ * Alternatively, ++ * ++ * b) 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. ++ * ++ * 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. ++ */ ++#include "libfdt_env.h" ++ ++#include ++#include ++ ++#include "libfdt_internal.h" ++ ++/** ++ * overlay_get_target_phandle - retrieves the target phandle of a fragment ++ * @fdto: pointer to the device tree overlay blob ++ * @fragment: node offset of the fragment in the overlay ++ * ++ * overlay_get_target_phandle() retrieves the target phandle of an ++ * overlay fragment when that fragment uses a phandle (target ++ * property) instead of a path (target-path property). ++ * ++ * returns: ++ * the phandle pointed by the target property ++ * 0, if the phandle was not found ++ * -1, if the phandle was malformed ++ */ ++static uint32_t overlay_get_target_phandle(const void *fdto, int fragment) ++{ ++ const fdt32_t *val; ++ int len; ++ ++ val = fdt_getprop(fdto, fragment, "target", &len); ++ if (!val) ++ return 0; ++ ++ if ((len != sizeof(*val)) || (fdt32_to_cpu(*val) == (uint32_t)-1)) ++ return (uint32_t)-1; ++ ++ return fdt32_to_cpu(*val); ++} ++ ++/** ++ * overlay_get_target - retrieves the offset of a fragment's target ++ * @fdt: Base device tree blob ++ * @fdto: Device tree overlay blob ++ * @fragment: node offset of the fragment in the overlay ++ * @pathp: pointer which receives the path of the target (or NULL) ++ * ++ * overlay_get_target() retrieves the target offset in the base ++ * device tree of a fragment, no matter how the actual targetting is ++ * done (through a phandle or a path) ++ * ++ * returns: ++ * the targetted node offset in the base device tree ++ * Negative error code on error ++ */ ++static int overlay_get_target(const void *fdt, const void *fdto, ++ int fragment, char const **pathp) ++{ ++ uint32_t phandle; ++ const char *path = NULL; ++ int path_len = 0, ret; ++ ++ /* Try first to do a phandle based lookup */ ++ phandle = overlay_get_target_phandle(fdto, fragment); ++ if (phandle == (uint32_t)-1) ++ return -FDT_ERR_BADPHANDLE; ++ ++ /* no phandle, try path */ ++ if (!phandle) { ++ /* And then a path based lookup */ ++ path = fdt_getprop(fdto, fragment, "target-path", &path_len); ++ if (path) ++ ret = fdt_path_offset(fdt, path); ++ else ++ ret = path_len; ++ } else ++ ret = fdt_node_offset_by_phandle(fdt, phandle); ++ ++ /* ++ * If we haven't found either a target or a ++ * target-path property in a node that contains a ++ * __overlay__ subnode (we wouldn't be called ++ * otherwise), consider it a improperly written ++ * overlay ++ */ ++ if (ret < 0 && path_len == -FDT_ERR_NOTFOUND) ++ ret = -FDT_ERR_BADOVERLAY; ++ ++ /* return on error */ ++ if (ret < 0) ++ return ret; ++ ++ /* return pointer to path (if available) */ ++ if (pathp) ++ *pathp = path ? path : NULL; ++ ++ return ret; ++} ++ ++/** ++ * overlay_phandle_add_offset - Increases a phandle by an offset ++ * @fdt: Base device tree blob ++ * @node: Device tree overlay blob ++ * @name: Name of the property to modify (phandle or linux,phandle) ++ * @delta: offset to apply ++ * ++ * overlay_phandle_add_offset() increments a node phandle by a given ++ * offset. ++ * ++ * returns: ++ * 0 on success. ++ * Negative error code on error ++ */ ++static int overlay_phandle_add_offset(void *fdt, int node, ++ const char *name, uint32_t delta) ++{ ++ const fdt32_t *val; ++ uint32_t adj_val; ++ int len; ++ ++ val = fdt_getprop(fdt, node, name, &len); ++ if (!val) ++ return len; ++ ++ if (len != sizeof(*val)) ++ return -FDT_ERR_BADPHANDLE; ++ ++ adj_val = fdt32_to_cpu(*val); ++ if ((adj_val + delta) < adj_val) ++ return -FDT_ERR_NOPHANDLES; ++ ++ adj_val += delta; ++ if (adj_val == (uint32_t)-1) ++ return -FDT_ERR_NOPHANDLES; ++ ++ return fdt_setprop_inplace_u32(fdt, node, name, adj_val); ++} ++ ++/** ++ * overlay_adjust_node_phandles - Offsets the phandles of a node ++ * @fdto: Device tree overlay blob ++ * @node: Offset of the node we want to adjust ++ * @delta: Offset to shift the phandles of ++ * ++ * overlay_adjust_node_phandles() adds a constant to all the phandles ++ * of a given node. This is mainly use as part of the overlay ++ * application process, when we want to update all the overlay ++ * phandles to not conflict with the overlays of the base device tree. ++ * ++ * returns: ++ * 0 on success ++ * Negative error code on failure ++ */ ++static int overlay_adjust_node_phandles(void *fdto, int node, ++ uint32_t delta) ++{ ++ int child; ++ int ret; ++ ++ ret = overlay_phandle_add_offset(fdto, node, "phandle", delta); ++ if (ret && ret != -FDT_ERR_NOTFOUND) ++ return ret; ++ ++ ret = overlay_phandle_add_offset(fdto, node, "linux,phandle", delta); ++ if (ret && ret != -FDT_ERR_NOTFOUND) ++ return ret; ++ ++ fdt_for_each_subnode(child, fdto, node) { ++ ret = overlay_adjust_node_phandles(fdto, child, delta); ++ if (ret) ++ return ret; ++ } ++ ++ return 0; ++} ++ ++/** ++ * overlay_adjust_local_phandles - Adjust the phandles of a whole overlay ++ * @fdto: Device tree overlay blob ++ * @delta: Offset to shift the phandles of ++ * ++ * overlay_adjust_local_phandles() adds a constant to all the ++ * phandles of an overlay. This is mainly use as part of the overlay ++ * application process, when we want to update all the overlay ++ * phandles to not conflict with the overlays of the base device tree. ++ * ++ * returns: ++ * 0 on success ++ * Negative error code on failure ++ */ ++static int overlay_adjust_local_phandles(void *fdto, uint32_t delta) ++{ ++ /* ++ * Start adjusting the phandles from the overlay root ++ */ ++ return overlay_adjust_node_phandles(fdto, 0, delta); ++} ++ ++/** ++ * overlay_update_local_node_references - Adjust the overlay references ++ * @fdto: Device tree overlay blob ++ * @tree_node: Node offset of the node to operate on ++ * @fixup_node: Node offset of the matching local fixups node ++ * @delta: Offset to shift the phandles of ++ * ++ * overlay_update_local_nodes_references() update the phandles ++ * pointing to a node within the device tree overlay by adding a ++ * constant delta. ++ * ++ * This is mainly used as part of a device tree application process, ++ * where you want the device tree overlays phandles to not conflict ++ * with the ones from the base device tree before merging them. ++ * ++ * returns: ++ * 0 on success ++ * Negative error code on failure ++ */ ++static int overlay_update_local_node_references(void *fdto, ++ int tree_node, ++ int fixup_node, ++ uint32_t delta) ++{ ++ int fixup_prop; ++ int fixup_child; ++ int ret; ++ ++ fdt_for_each_property_offset(fixup_prop, fdto, fixup_node) { ++ const fdt32_t *fixup_val; ++ const char *tree_val; ++ const char *name; ++ int fixup_len; ++ int tree_len; ++ int i; ++ ++ fixup_val = fdt_getprop_by_offset(fdto, fixup_prop, ++ &name, &fixup_len); ++ if (!fixup_val) ++ return fixup_len; ++ ++ if (fixup_len % sizeof(uint32_t)) ++ return -FDT_ERR_BADOVERLAY; ++ ++ tree_val = fdt_getprop(fdto, tree_node, name, &tree_len); ++ if (!tree_val) { ++ if (tree_len == -FDT_ERR_NOTFOUND) ++ return -FDT_ERR_BADOVERLAY; ++ ++ return tree_len; ++ } ++ ++ for (i = 0; i < (fixup_len / sizeof(uint32_t)); i++) { ++ fdt32_t adj_val; ++ uint32_t poffset; ++ ++ poffset = fdt32_to_cpu(fixup_val[i]); ++ ++ /* ++ * phandles to fixup can be unaligned. ++ * ++ * Use a memcpy for the architectures that do ++ * not support unaligned accesses. ++ */ ++ memcpy(&adj_val, tree_val + poffset, sizeof(adj_val)); ++ ++ adj_val = cpu_to_fdt32(fdt32_to_cpu(adj_val) + delta); ++ ++ ret = fdt_setprop_inplace_namelen_partial(fdto, ++ tree_node, ++ name, ++ strlen(name), ++ poffset, ++ &adj_val, ++ sizeof(adj_val)); ++ if (ret == -FDT_ERR_NOSPACE) ++ return -FDT_ERR_BADOVERLAY; ++ ++ if (ret) ++ return ret; ++ } ++ } ++ ++ fdt_for_each_subnode(fixup_child, fdto, fixup_node) { ++ const char *fixup_child_name = fdt_get_name(fdto, fixup_child, ++ NULL); ++ int tree_child; ++ ++ tree_child = fdt_subnode_offset(fdto, tree_node, ++ fixup_child_name); ++ if (tree_child == -FDT_ERR_NOTFOUND) ++ return -FDT_ERR_BADOVERLAY; ++ if (tree_child < 0) ++ return tree_child; ++ ++ ret = overlay_update_local_node_references(fdto, ++ tree_child, ++ fixup_child, ++ delta); ++ if (ret) ++ return ret; ++ } ++ ++ return 0; ++} ++ ++/** ++ * overlay_update_local_references - Adjust the overlay references ++ * @fdto: Device tree overlay blob ++ * @delta: Offset to shift the phandles of ++ * ++ * overlay_update_local_references() update all the phandles pointing ++ * to a node within the device tree overlay by adding a constant ++ * delta to not conflict with the base overlay. ++ * ++ * This is mainly used as part of a device tree application process, ++ * where you want the device tree overlays phandles to not conflict ++ * with the ones from the base device tree before merging them. ++ * ++ * returns: ++ * 0 on success ++ * Negative error code on failure ++ */ ++static int overlay_update_local_references(void *fdto, uint32_t delta) ++{ ++ int fixups; ++ ++ fixups = fdt_path_offset(fdto, "/__local_fixups__"); ++ if (fixups < 0) { ++ /* There's no local phandles to adjust, bail out */ ++ if (fixups == -FDT_ERR_NOTFOUND) ++ return 0; ++ ++ return fixups; ++ } ++ ++ /* ++ * Update our local references from the root of the tree ++ */ ++ return overlay_update_local_node_references(fdto, 0, fixups, ++ delta); ++} ++ ++/** ++ * overlay_fixup_one_phandle - Set an overlay phandle to the base one ++ * @fdt: Base Device Tree blob ++ * @fdto: Device tree overlay blob ++ * @symbols_off: Node offset of the symbols node in the base device tree ++ * @path: Path to a node holding a phandle in the overlay ++ * @path_len: number of path characters to consider ++ * @name: Name of the property holding the phandle reference in the overlay ++ * @name_len: number of name characters to consider ++ * @poffset: Offset within the overlay property where the phandle is stored ++ * @label: Label of the node referenced by the phandle ++ * ++ * overlay_fixup_one_phandle() resolves an overlay phandle pointing to ++ * a node in the base device tree. ++ * ++ * This is part of the device tree overlay application process, when ++ * you want all the phandles in the overlay to point to the actual ++ * base dt nodes. ++ * ++ * returns: ++ * 0 on success ++ * Negative error code on failure ++ */ ++static int overlay_fixup_one_phandle(void *fdt, void *fdto, ++ int symbols_off, ++ const char *path, uint32_t path_len, ++ const char *name, uint32_t name_len, ++ int poffset, const char *label) ++{ ++ const char *symbol_path; ++ uint32_t phandle; ++ fdt32_t phandle_prop; ++ int symbol_off, fixup_off; ++ int prop_len; ++ ++ if (symbols_off < 0) ++ return symbols_off; ++ ++ symbol_path = fdt_getprop(fdt, symbols_off, label, ++ &prop_len); ++ if (!symbol_path) ++ return prop_len; ++ ++ symbol_off = fdt_path_offset(fdt, symbol_path); ++ if (symbol_off < 0) ++ return symbol_off; ++ ++ phandle = fdt_get_phandle(fdt, symbol_off); ++ if (!phandle) ++ return -FDT_ERR_NOTFOUND; ++ ++ fixup_off = fdt_path_offset_namelen(fdto, path, path_len); ++ if (fixup_off == -FDT_ERR_NOTFOUND) ++ return -FDT_ERR_BADOVERLAY; ++ if (fixup_off < 0) ++ return fixup_off; ++ ++ phandle_prop = cpu_to_fdt32(phandle); ++ return fdt_setprop_inplace_namelen_partial(fdto, fixup_off, ++ name, name_len, poffset, ++ &phandle_prop, ++ sizeof(phandle_prop)); ++}; ++ ++/** ++ * overlay_fixup_phandle - Set an overlay phandle to the base one ++ * @fdt: Base Device Tree blob ++ * @fdto: Device tree overlay blob ++ * @symbols_off: Node offset of the symbols node in the base device tree ++ * @property: Property offset in the overlay holding the list of fixups ++ * ++ * overlay_fixup_phandle() resolves all the overlay phandles pointed ++ * to in a __fixups__ property, and updates them to match the phandles ++ * in use in the base device tree. ++ * ++ * This is part of the device tree overlay application process, when ++ * you want all the phandles in the overlay to point to the actual ++ * base dt nodes. ++ * ++ * returns: ++ * 0 on success ++ * Negative error code on failure ++ */ ++static int overlay_fixup_phandle(void *fdt, void *fdto, int symbols_off, ++ int property) ++{ ++ const char *value; ++ const char *label; ++ int len; ++ ++ value = fdt_getprop_by_offset(fdto, property, ++ &label, &len); ++ if (!value) { ++ if (len == -FDT_ERR_NOTFOUND) ++ return -FDT_ERR_INTERNAL; ++ ++ return len; ++ } ++ ++ do { ++ const char *path, *name, *fixup_end; ++ const char *fixup_str = value; ++ uint32_t path_len, name_len; ++ uint32_t fixup_len; ++ char *sep, *endptr; ++ int poffset, ret; ++ ++ fixup_end = memchr(value, '\0', len); ++ if (!fixup_end) ++ return -FDT_ERR_BADOVERLAY; ++ fixup_len = fixup_end - fixup_str; ++ ++ len -= fixup_len + 1; ++ value += fixup_len + 1; ++ ++ path = fixup_str; ++ sep = memchr(fixup_str, ':', fixup_len); ++ if (!sep || *sep != ':') ++ return -FDT_ERR_BADOVERLAY; ++ ++ path_len = sep - path; ++ if (path_len == (fixup_len - 1)) ++ return -FDT_ERR_BADOVERLAY; ++ ++ fixup_len -= path_len + 1; ++ name = sep + 1; ++ sep = memchr(name, ':', fixup_len); ++ if (!sep || *sep != ':') ++ return -FDT_ERR_BADOVERLAY; ++ ++ name_len = sep - name; ++ if (!name_len) ++ return -FDT_ERR_BADOVERLAY; ++ ++ poffset = strtoul(sep + 1, &endptr, 10); ++ if ((*endptr != '\0') || (endptr <= (sep + 1))) ++ return -FDT_ERR_BADOVERLAY; ++ ++ ret = overlay_fixup_one_phandle(fdt, fdto, symbols_off, ++ path, path_len, name, name_len, ++ poffset, label); ++ if (ret) ++ return ret; ++ } while (len > 0); ++ ++ return 0; ++} ++ ++/** ++ * overlay_fixup_phandles - Resolve the overlay phandles to the base ++ * device tree ++ * @fdt: Base Device Tree blob ++ * @fdto: Device tree overlay blob ++ * ++ * overlay_fixup_phandles() resolves all the overlay phandles pointing ++ * to nodes in the base device tree. ++ * ++ * This is one of the steps of the device tree overlay application ++ * process, when you want all the phandles in the overlay to point to ++ * the actual base dt nodes. ++ * ++ * returns: ++ * 0 on success ++ * Negative error code on failure ++ */ ++static int overlay_fixup_phandles(void *fdt, void *fdto) ++{ ++ int fixups_off, symbols_off; ++ int property; ++ ++ /* We can have overlays without any fixups */ ++ fixups_off = fdt_path_offset(fdto, "/__fixups__"); ++ if (fixups_off == -FDT_ERR_NOTFOUND) ++ return 0; /* nothing to do */ ++ if (fixups_off < 0) ++ return fixups_off; ++ ++ /* And base DTs without symbols */ ++ symbols_off = fdt_path_offset(fdt, "/__symbols__"); ++ if ((symbols_off < 0 && (symbols_off != -FDT_ERR_NOTFOUND))) ++ return symbols_off; ++ ++ fdt_for_each_property_offset(property, fdto, fixups_off) { ++ int ret; ++ ++ ret = overlay_fixup_phandle(fdt, fdto, symbols_off, property); ++ if (ret) ++ return ret; ++ } ++ ++ return 0; ++} ++ ++/** ++ * overlay_apply_node - Merges a node into the base device tree ++ * @fdt: Base Device Tree blob ++ * @target: Node offset in the base device tree to apply the fragment to ++ * @fdto: Device tree overlay blob ++ * @node: Node offset in the overlay holding the changes to merge ++ * ++ * overlay_apply_node() merges a node into a target base device tree ++ * node pointed. ++ * ++ * This is part of the final step in the device tree overlay ++ * application process, when all the phandles have been adjusted and ++ * resolved and you just have to merge overlay into the base device ++ * tree. ++ * ++ * returns: ++ * 0 on success ++ * Negative error code on failure ++ */ ++static int overlay_apply_node(void *fdt, int target, ++ void *fdto, int node) ++{ ++ int property; ++ int subnode; ++ ++ fdt_for_each_property_offset(property, fdto, node) { ++ const char *name; ++ const void *prop; ++ int prop_len; ++ int ret; ++ ++ prop = fdt_getprop_by_offset(fdto, property, &name, ++ &prop_len); ++ if (prop_len == -FDT_ERR_NOTFOUND) ++ return -FDT_ERR_INTERNAL; ++ if (prop_len < 0) ++ return prop_len; ++ ++ ret = fdt_setprop(fdt, target, name, prop, prop_len); ++ if (ret) ++ return ret; ++ } ++ ++ fdt_for_each_subnode(subnode, fdto, node) { ++ const char *name = fdt_get_name(fdto, subnode, NULL); ++ int nnode; ++ int ret; ++ ++ nnode = fdt_add_subnode(fdt, target, name); ++ if (nnode == -FDT_ERR_EXISTS) { ++ nnode = fdt_subnode_offset(fdt, target, name); ++ if (nnode == -FDT_ERR_NOTFOUND) ++ return -FDT_ERR_INTERNAL; ++ } ++ ++ if (nnode < 0) ++ return nnode; ++ ++ ret = overlay_apply_node(fdt, nnode, fdto, subnode); ++ if (ret) ++ return ret; ++ } ++ ++ return 0; ++} ++ ++/** ++ * overlay_merge - Merge an overlay into its base device tree ++ * @fdt: Base Device Tree blob ++ * @fdto: Device tree overlay blob ++ * ++ * overlay_merge() merges an overlay into its base device tree. ++ * ++ * This is the next to last step in the device tree overlay application ++ * process, when all the phandles have been adjusted and resolved and ++ * you just have to merge overlay into the base device tree. ++ * ++ * returns: ++ * 0 on success ++ * Negative error code on failure ++ */ ++static int overlay_merge(void *fdt, void *fdto) ++{ ++ int fragment; ++ ++ fdt_for_each_subnode(fragment, fdto, 0) { ++ int overlay; ++ int target; ++ int ret; ++ ++ /* ++ * Each fragments will have an __overlay__ node. If ++ * they don't, it's not supposed to be merged ++ */ ++ overlay = fdt_subnode_offset(fdto, fragment, "__overlay__"); ++ if (overlay == -FDT_ERR_NOTFOUND) ++ continue; ++ ++ if (overlay < 0) ++ return overlay; ++ ++ target = overlay_get_target(fdt, fdto, fragment, NULL); ++ if (target < 0) ++ return target; ++ ++ ret = overlay_apply_node(fdt, target, fdto, overlay); ++ if (ret) ++ return ret; ++ } ++ ++ return 0; ++} ++ ++static int get_path_len(const void *fdt, int nodeoffset) ++{ ++ int len = 0, namelen; ++ const char *name; ++ ++ FDT_CHECK_HEADER(fdt); ++ ++ for (;;) { ++ name = fdt_get_name(fdt, nodeoffset, &namelen); ++ if (!name) ++ return namelen; ++ ++ /* root? we're done */ ++ if (namelen == 0) ++ break; ++ ++ nodeoffset = fdt_parent_offset(fdt, nodeoffset); ++ if (nodeoffset < 0) ++ return nodeoffset; ++ len += namelen + 1; ++ } ++ ++ /* in case of root pretend it's "/" */ ++ if (len == 0) ++ len++; ++ return len; ++} ++ ++/** ++ * overlay_symbol_update - Update the symbols of base tree after a merge ++ * @fdt: Base Device Tree blob ++ * @fdto: Device tree overlay blob ++ * ++ * overlay_symbol_update() updates the symbols of the base tree with the ++ * symbols of the applied overlay ++ * ++ * This is the last step in the device tree overlay application ++ * process, allowing the reference of overlay symbols by subsequent ++ * overlay operations. ++ * ++ * returns: ++ * 0 on success ++ * Negative error code on failure ++ */ ++static int overlay_symbol_update(void *fdt, void *fdto) ++{ ++ int root_sym, ov_sym, prop, path_len, fragment, target; ++ int len, frag_name_len, ret, rel_path_len; ++ const char *s, *e; ++ const char *path; ++ const char *name; ++ const char *frag_name; ++ const char *rel_path; ++ const char *target_path; ++ char *buf; ++ void *p; ++ ++ ov_sym = fdt_subnode_offset(fdto, 0, "__symbols__"); ++ ++ /* if no overlay symbols exist no problem */ ++ if (ov_sym < 0) ++ return 0; ++ ++ root_sym = fdt_subnode_offset(fdt, 0, "__symbols__"); ++ ++ /* it no root symbols exist we should create them */ ++ if (root_sym == -FDT_ERR_NOTFOUND) ++ root_sym = fdt_add_subnode(fdt, 0, "__symbols__"); ++ ++ /* any error is fatal now */ ++ if (root_sym < 0) ++ return root_sym; ++ ++ /* iterate over each overlay symbol */ ++ fdt_for_each_property_offset(prop, fdto, ov_sym) { ++ path = fdt_getprop_by_offset(fdto, prop, &name, &path_len); ++ if (!path) ++ return path_len; ++ ++ /* verify it's a string property (terminated by a single \0) */ ++ if (path_len < 1 || memchr(path, '\0', path_len) != &path[path_len - 1]) ++ return -FDT_ERR_BADVALUE; ++ ++ /* keep end marker to avoid strlen() */ ++ e = path + path_len; ++ ++ /* format: //__overlay__/ */ ++ ++ if (*path != '/') ++ return -FDT_ERR_BADVALUE; ++ ++ /* get fragment name first */ ++ s = strchr(path + 1, '/'); ++ if (!s) ++ return -FDT_ERR_BADOVERLAY; ++ ++ frag_name = path + 1; ++ frag_name_len = s - path - 1; ++ ++ /* verify format; safe since "s" lies in \0 terminated prop */ ++ len = sizeof("/__overlay__/") - 1; ++ if ((e - s) < len || memcmp(s, "/__overlay__/", len)) ++ return -FDT_ERR_BADOVERLAY; ++ ++ rel_path = s + len; ++ rel_path_len = e - rel_path; ++ ++ /* find the fragment index in which the symbol lies */ ++ ret = fdt_subnode_offset_namelen(fdto, 0, frag_name, ++ frag_name_len); ++ /* not found? */ ++ if (ret < 0) ++ return -FDT_ERR_BADOVERLAY; ++ fragment = ret; ++ ++ /* an __overlay__ subnode must exist */ ++ ret = fdt_subnode_offset(fdto, fragment, "__overlay__"); ++ if (ret < 0) ++ return -FDT_ERR_BADOVERLAY; ++ ++ /* get the target of the fragment */ ++ ret = overlay_get_target(fdt, fdto, fragment, &target_path); ++ if (ret < 0) ++ return ret; ++ target = ret; ++ ++ /* if we have a target path use */ ++ if (!target_path) { ++ ret = get_path_len(fdt, target); ++ if (ret < 0) ++ return ret; ++ len = ret; ++ } else { ++ len = strlen(target_path); ++ } ++ ++ ret = fdt_setprop_placeholder(fdt, root_sym, name, ++ len + (len > 1) + rel_path_len + 1, &p); ++ if (ret < 0) ++ return ret; ++ ++ if (!target_path) { ++ /* again in case setprop_placeholder changed it */ ++ ret = overlay_get_target(fdt, fdto, fragment, &target_path); ++ if (ret < 0) ++ return ret; ++ target = ret; ++ } ++ ++ buf = p; ++ if (len > 1) { /* target is not root */ ++ if (!target_path) { ++ ret = fdt_get_path(fdt, target, buf, len + 1); ++ if (ret < 0) ++ return ret; ++ } else ++ memcpy(buf, target_path, len + 1); ++ ++ } else ++ len--; ++ ++ buf[len] = '/'; ++ memcpy(buf + len + 1, rel_path, rel_path_len); ++ buf[len + 1 + rel_path_len] = '\0'; ++ } ++ ++ return 0; ++} ++ ++int fdt_overlay_apply(void *fdt, void *fdto) ++{ ++ uint32_t delta = fdt_get_max_phandle(fdt); ++ int ret; ++ ++ FDT_CHECK_HEADER(fdt); ++ FDT_CHECK_HEADER(fdto); ++ ++ ret = overlay_adjust_local_phandles(fdto, delta); ++ if (ret) ++ goto err; ++ ++ ret = overlay_update_local_references(fdto, delta); ++ if (ret) ++ goto err; ++ ++ ret = overlay_fixup_phandles(fdt, fdto); ++ if (ret) ++ goto err; ++ ++ ret = overlay_merge(fdt, fdto); ++ if (ret) ++ goto err; ++ ++ ret = overlay_symbol_update(fdt, fdto); ++ if (ret) ++ goto err; ++ ++ /* ++ * The overlay has been damaged, erase its magic. ++ */ ++ fdt_set_magic(fdto, ~0); ++ ++ return 0; ++ ++err: ++ /* ++ * The overlay might have been damaged, erase its magic. ++ */ ++ fdt_set_magic(fdto, ~0); ++ ++ /* ++ * The base device tree might have been damaged, erase its ++ * magic. ++ */ ++ fdt_set_magic(fdt, ~0); ++ ++ return ret; ++} diff --git a/scripts/dtc/fdt_ro.c b/scripts/dtc/fdt_ro.c index 50007f61c..dfb3236da 100644 --- a/scripts/dtc/fdt_ro.c From 7c80363623a51822823ad42acec007410e532537 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 27 May 2018 16:46:59 +0200 Subject: [PATCH 090/118] Make image smaller --- buildroot-external/board/rpi2/post-image.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/board/rpi2/post-image.sh b/buildroot-external/board/rpi2/post-image.sh index fb5bb92fbe3..b5b736be17f 100755 --- a/buildroot-external/board/rpi2/post-image.sh +++ b/buildroot-external/board/rpi2/post-image.sh @@ -43,4 +43,4 @@ create_disk_image ${BINARIES_DIR} ${IMAGE_FILE} 2 fix_disk_image_mbr ${IMAGE_FILE} rm -rf ${IMAGE_FILE}.gz -gzip ${IMAGE_FILE} +gzip --best ${IMAGE_FILE} From d0297886ddb692faa83519799c6f6e07d25dd0ba Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 27 May 2018 14:56:27 +0000 Subject: [PATCH 091/118] Fix overlay script --- .../{ => overlay}/barebox-state-rpi.dtbo | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename buildroot-external/board/rpi2/barebox-env/{ => overlay}/barebox-state-rpi.dtbo (100%) diff --git a/buildroot-external/board/rpi2/barebox-env/barebox-state-rpi.dtbo b/buildroot-external/board/rpi2/barebox-env/overlay/barebox-state-rpi.dtbo similarity index 100% rename from buildroot-external/board/rpi2/barebox-env/barebox-state-rpi.dtbo rename to buildroot-external/board/rpi2/barebox-env/overlay/barebox-state-rpi.dtbo From 8df611eaf1fbbe4fce48ac991c50e79fc61690ba Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 27 May 2018 15:20:09 +0000 Subject: [PATCH 092/118] use central barebox config --- buildroot-external/barebox.config | 42 +++++++++++ buildroot-external/configs/ova_defconfig | 1 + buildroot-external/configs/rpi2_defconfig | 1 + buildroot-external/configs/rpi3_defconfig | 89 ----------------------- 4 files changed, 44 insertions(+), 89 deletions(-) create mode 100644 buildroot-external/barebox.config delete mode 100644 buildroot-external/configs/rpi3_defconfig diff --git a/buildroot-external/barebox.config b/buildroot-external/barebox.config new file mode 100644 index 00000000000..b6e606a91ac --- /dev/null +++ b/buildroot-external/barebox.config @@ -0,0 +1,42 @@ +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_CMD_VERSION is not set +# CONFIG_TIMESTAMP is not set + +CONFIG_PROMPT="HassOS-boot:" +CONFIG_CMDLINE_EDITING=y +CONFIG_AUTO_COMPLETE=y +CONFIG_MENU=y +CONFIG_BOOTM_SHOW_TYPE=y +CONFIG_BOOTM_OFTREE=y +CONFIG_FLEXIBLE_BOOTARGS=y + +# CONFIG_PARTITION_DISK_DOS is not set +CONFIG_PARTITION_DISK_EFI=y +# CONFIG_PARTITION_DISK_EFI_GPT_NO_FORCE is not set +# CONFIG_PARTITION_DISK_EFI_GPT_COMPARE is not set + +CONFIG_STATE=y +CONFIG_STATE_DRV=y +CONFIG_BOOTCHOOSER=y +CONFIG_CMD_BOOT=y +CONFIG_CMD_NV=y +CONFIG_CMD_EXPORT=y +CONFIG_CMD_GLOBAL=y +CONFIG_CMD_BASENAME=y +CONFIG_CMD_DIRNAME=y +CONFIG_CMD_READLINK=y +CONFIG_CMD_GETOPT=y +CONFIG_CMD_MENUTREE=y +CONFIG_CMD_TIMEOUT=y +CONFIG_CMD_OFTREE=y +CONFIG_CMD_STATE=y +CONFIG_CMD_BOOTCHOOSER=y + +CONFIG_OFTREE=y +CONFIG_OFTREE_OVERLAY=y + +CONFIG_FS_FAT=y +CONFIG_FS_FAT_WRITE=y +CONFIG_FS_FAT_LFN=y +CONFIG_FS_SQUASHFS=y +CONFIG_LZ4_DECOMPRESS=y diff --git a/buildroot-external/configs/ova_defconfig b/buildroot-external/configs/ova_defconfig index a308a7e631b..90f3b43310f 100644 --- a/buildroot-external/configs/ova_defconfig +++ b/buildroot-external/configs/ova_defconfig @@ -63,6 +63,7 @@ BR2_TARGET_BAREBOX_CUSTOM_VERSION=y BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2018.05.0" BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/barebox.config" +BR2_TARGET_BAREBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/barebox.config" BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/board/ova/barebox-env $(BR2_EXTERNAL_HASSOS_PATH)/barebox-env" BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_E2FSPROGS=y diff --git a/buildroot-external/configs/rpi2_defconfig b/buildroot-external/configs/rpi2_defconfig index f426e4582a2..998b699dbb9 100644 --- a/buildroot-external/configs/rpi2_defconfig +++ b/buildroot-external/configs/rpi2_defconfig @@ -69,6 +69,7 @@ BR2_TARGET_BAREBOX_CUSTOM_VERSION=y BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2018.05.0" BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi2/barebox.config" +BR2_TARGET_BAREBOX_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/barebox.config" BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/barebox-env $(BR2_EXTERNAL_HASSOS_PATH)/board/rpi2/barebox-env" BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_E2FSPROGS=y diff --git a/buildroot-external/configs/rpi3_defconfig b/buildroot-external/configs/rpi3_defconfig deleted file mode 100644 index 21e58538388..00000000000 --- a/buildroot-external/configs/rpi3_defconfig +++ /dev/null @@ -1,89 +0,0 @@ -BR2_arm=y -BR2_cortex_a53=y -BR2_ARM_FPU_VFPV4=y -BR2_DL_DIR="/cache/dl" -BR2_CCACHE=y -BR2_CCACHE_DIR="/cache/cc" -BR2_GLOBAL_PATCH_DIR="$(BR2_EXTERNAL_HASSOS_PATH)/patches $(BR2_EXTERNAL_HASSOS_PATH)/board/rpi3/patches" -BR2_TOOLCHAIN_BUILDROOT_GLIBC=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y -BR2_GCC_VERSION_7_X=y -BR2_TOOLCHAIN_BUILDROOT_CXX=y -BR2_TARGET_GENERIC_HOSTNAME="hassio" -BR2_TARGET_GENERIC_ISSUE="Welcome to HassOS" -BR2_INIT_SYSTEMD=y -BR2_TARGET_GENERIC_GETTY_PORT="tty1" -# BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW is not set -BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_HASSOS_PATH)/rootfs-overlay" -BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/scripts/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi3/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi3" -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rpi-4.14.y" -BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config" -BR2_LINUX_KERNEL_LZ4=y -BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3" -BR2_LINUX_KERNEL_INSTALL_TARGET=y -BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y -BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y -BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config" -BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y -BR2_PACKAGE_JQ=y -BR2_PACKAGE_DOSFSTOOLS=y -BR2_PACKAGE_E2FSPROGS=y -BR2_PACKAGE_E2FSPROGS_RESIZE2FS=y -BR2_PACKAGE_RPI_FIRMWARE=y -BR2_PACKAGE_RPI_WIFI_FIRMWARE=y -BR2_PACKAGE_DT_UTILS=y -BR2_PACKAGE_GPTFDISK=y -BR2_PACKAGE_GPTFDISK_SGDISK=y -BR2_PACKAGE_CA_CERTIFICATES=y -BR2_PACKAGE_LIBDNET=y -BR2_PACKAGE_LIBCGROUP=y -BR2_PACKAGE_LIBCGROUP_TOOLS=y -BR2_PACKAGE_AVAHI=y -BR2_PACKAGE_AVAHI_DAEMON=y -BR2_PACKAGE_AVAHI_LIBDNSSD_COMPATIBILITY=y -BR2_PACKAGE_DROPBEAR=y -# BR2_PACKAGE_DROPBEAR_CLIENT is not set -# BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set -BR2_PACKAGE_NETWORK_MANAGER=y -BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER=y -BR2_PACKAGE_DOCKER_ENGINE=y -BR2_PACKAGE_RAUC=y -BR2_PACKAGE_RAUC_NETWORK=y -# BR2_PACKAGE_SYSTEMD_HWDB is not set -# BR2_PACKAGE_SYSTEMD_NETWORKD is not set -BR2_PACKAGE_SYSTEMD_RANDOMSEED=y -# BR2_PACKAGE_SYSTEMD_RESOLVED is not set -BR2_PACKAGE_UTIL_LINUX_PARTX=y -BR2_PACKAGE_UTIL_LINUX_ZRAMCTL=y -BR2_TARGET_ROOTFS_SQUASHFS=y -BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y -# BR2_TARGET_ROOTFS_TAR is not set -BR2_TARGET_BAREBOX=y -BR2_TARGET_BAREBOX_CUSTOM_VERSION=y -BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2018.05.0" -BR2_TARGET_BAREBOX_USE_CUSTOM_CONFIG=y -BR2_TARGET_BAREBOX_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_HASSOS_PATH)/board/rpi3/barebox.config" -BR2_TARGET_BAREBOX_CUSTOM_EMBEDDED_ENV_PATH="$(BR2_EXTERNAL_HASSOS_PATH)/barebox-env" -BR2_PACKAGE_HOST_DOSFSTOOLS=y -BR2_PACKAGE_HOST_E2FSPROGS=y -BR2_PACKAGE_HOST_GPTFDISK=y -BR2_PACKAGE_HOST_MTOOLS=y -BR2_PACKAGE_HOST_RAUC=y -BR2_PACKAGE_MINGETTY=y -BR2_PACKAGE_HASSOS=y -BR2_PACKAGE_HASSOS_SUPERVISOR="homeassistant/armhf-hassio-supervisor" -BR2_PACKAGE_HASSOS_SUPERVISOR_VERSION="103.3" -BR2_PACKAGE_HASSOS_SUPERVISOR_ARGS="-e HOMEASSISTANT_REPOSITORY=homeassistant/raspberrypi3-homeassistant" -BR2_PACKAGE_HASSOS_SUPERVISOR_PROFILE="hassio-supervisor" -BR2_PACKAGE_HASSOS_CLI="homeassistant/armhf-hassio-cli" -BR2_PACKAGE_HASSOS_CLI_VERSION="3" -BR2_PACKAGE_HASSOS_CLI_PROFILE="docker-default" -BR2_PACKAGE_HASSOS_APPARMOR_DIR="supervisor/apparmor" -BR2_PACKAGE_APPARMOR=y From 7db3226a8ec79465f4fe697cb8338d7c8bc57eeb Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Sun, 27 May 2018 20:02:11 +0200 Subject: [PATCH 093/118] Optimize Rauc-Good service (#24) * Update rauc-good.service * Update rauc-good.timer --- .../rootfs-overlay/usr/lib/systemd/system/rauc-good.service | 1 + .../rootfs-overlay/usr/lib/systemd/system/rauc-good.timer | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.service b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.service index f07f2fbb9ed..1e7935471b0 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.service +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.service @@ -7,3 +7,4 @@ RefuseManualStop=true [Service] Type=oneshot ExecStart=/usr/bin/rauc status mark-good +RemainAfterExit=true diff --git a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.timer b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.timer index fa79b78fd40..2d40168705f 100644 --- a/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.timer +++ b/buildroot-external/rootfs-overlay/usr/lib/systemd/system/rauc-good.timer @@ -2,7 +2,7 @@ Description=HassOS mark boot partition as good [Timer] -OnBootSec=1min +OnBootSec=30sec [Install] WantedBy=timers.target From b13086072c01c26ab17fa3d653d0ef339bd7fe2c Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 28 May 2018 14:58:22 +0200 Subject: [PATCH 094/118] Update buildroot & docker (#25) * Update docker & buildroot * Fix * fix versions --- .gitattributes | 3 - buildroot-external/configs/ova_defconfig | 3 +- buildroot-external/configs/rpi2_defconfig | 3 +- buildroot-patches/0001-go-bump-to-1.10.patch | 37 - ...kage.patch => 0001-tini-new-package.patch} | 6 +- ...002-docker-containerd-bump-to-v1.1.0.patch | 54 + ...003-docker-containerd-bump-to-v1.0.2.patch | 123 -- .../0003-runc-bump-to-1.0-rc5.patch | 45 + ...04-docker-engine-bump-to-v18.03.1-ce.patch | 123 ++ .../0004-runc-bump-to-9f9c96235cc.patch | 74 - ...ngine-add-support-for-init-processes.patch | 92 - ...p-to-8436c5cdbc627b9c51f9a02742c5a39.patch | 45 + ...etworkManager-allow-to-wait-on-boot.patch} | 0 ...06-docker-engine-bump-to-v17.12.1-ce.patch | 180 -- ...spberry-pi-firmware-for-kernel-4.14.patch} | 15 +- ...d-BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF.patch | 64 - ...008-package-rauc-Version-bump-to-0.3.patch | 45 - ...-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL.patch | 63 - ...x-passing-of-host-CFLAGS-and-LDFLAGS.patch | 46 - .../0012-Add-apparmor-support-to-docker.patch | 60 - ...013-package-rauc-Version-bump-to-0.4.patch | 34 - buildroot/.flake8 | 3 + buildroot/.gitlab-ci.yml | 42 +- buildroot/.gitlab-ci.yml.in | 16 +- buildroot/CHANGES | 237 ++ buildroot/Config.in | 58 +- buildroot/Config.in.legacy | 869 ++++++-- buildroot/DEVELOPERS | 174 +- buildroot/Makefile | 73 +- buildroot/arch/Config.in | 119 +- buildroot/arch/Config.in.arc | 2 +- buildroot/arch/Config.in.arm | 4 +- buildroot/arch/Config.in.bfin | 102 - buildroot/arch/Config.in.m68k | 2 +- buildroot/arch/Config.in.mips | 13 +- buildroot/arch/Config.in.powerpc | 4 +- buildroot/arch/Config.in.sh | 2 +- buildroot/arch/Config.in.sparc | 2 +- buildroot/arch/Config.in.x86 | 30 +- buildroot/arch/Config.in.xtensa | 20 +- buildroot/arch/arch.mk.xtensa | 2 +- buildroot/board/amarula/vyasa/extlinux.conf | 4 + buildroot/board/amarula/vyasa/genimage.cfg | 21 + .../board/amarula/vyasa/linux_gmac.fragment | 3 + buildroot/board/amarula/vyasa/post-build.sh | 9 + buildroot/board/amarula/vyasa/readme.txt | 31 + .../arcturus/aarch64-ucls1012a/post-image.sh | 6 + .../arcturus/aarch64-ucls1012a/readme.txt | 74 + .../rootfs_overlay/etc/init.d/S09modload | 14 + buildroot/board/asus/tinker/extlinux.conf | 4 + buildroot/board/asus/tinker/genimage.cfg | 15 + buildroot/board/asus/tinker/post-build.sh | 9 + buildroot/board/asus/tinker/readme.txt | 37 + buildroot/board/atmel/flasher.sh | 15 +- buildroot/board/beaglebone/uEnv.txt | 8 +- ...dts-tpm.patch => linux-4.15-dts-tpm.patch} | 0 ...linux-4.6.fragment => linux-4.15.fragment} | 0 buildroot/board/ci40/genimage.cfg | 12 - buildroot/board/ci40/post-build.sh | 4 - buildroot/board/ci40/readme.txt | 65 - buildroot/board/embest/riotboard/readme.txt | 46 - .../boot/extlinux/extlinux.conf | 6 - .../firefly/firefly-rk3288/extlinux.conf | 6 - .../firefly/firefly-rk3288/post-build.sh | 3 - .../firefly/firefly-rk3288/post-image.sh | 20 - .../board/firefly/firefly-rk3288/readme.txt | 40 - .../board/firefly/firefly-rk3288/sd-image.cfg | 22 - .../common/imx/genimage.cfg.template_imx8 | 40 + .../common/imx/imx8-bootloader-prepare.sh | 16 + .../board/freescale/common/imx/post-image.sh | 10 +- .../freescale/imx31_3stack/linux.fragment | 1 - .../board/freescale/imx31_3stack/readme.txt | 92 - ...-failure-when-no-IVT-offset-is-found.patch | 55 + .../board/freescale/imx8mqevk/readme.txt | 86 + .../freescale/mpc8315erdb/linux-4.5.config | 70 - .../board/freescale/mpc8315erdb/readme.txt | 40 - .../board/freescale/p1010rdb/linux-4.1.config | 70 - buildroot/board/freescale/p1010rdb/readme.txt | 40 - buildroot/board/freescale/p1025twr/readme.txt | 25 + .../board/freescale/t1040d4rdb/readme.txt | 24 + buildroot/board/gdb/bfin-bf512/linux.config | 87 - buildroot/board/gdb/bfin-bf512/readme.txt | 11 - buildroot/board/gdb/post-build.sh | 4 - .../orangepi-zero-plus2/linux-extras.config | 10 + ...s-orange-pi-zero-plus2-enable-ap6212.patch | 73 + ...ange-pi-zero-plus2-fix-sdcard-detect.patch | 30 - .../lib/firmware/brcm/brcmfmac43430-sdio.txt | 54 + .../{linux-4.13.config => linux-4.15.config} | 2 - buildroot/board/qemu/aarch64-virt/readme.txt | 2 +- .../board/qemu/ppc64-e5500/linux.fragment | 10 + buildroot/board/qemu/ppc64-e5500/readme.txt | 7 + buildroot/board/qemu/x86/linux-4.15.config | 2 + buildroot/board/qemu/x86_64/linux-4.15.config | 3 + .../raspberrypi/genimage-raspberrypi0.cfg | 1 - .../raspberrypi/genimage-raspberrypi0w.cfg | 31 + .../raspberrypi/genimage-raspberrypi3.cfg | 1 + buildroot/board/raspberrypi/readme.txt | 3 +- buildroot/board/raspberrypi0w | 1 + .../board/solidrun/clearfog/boot.scr.txt | 5 + .../board/solidrun/clearfog/genimage.cfg | 16 + .../board/solidrun/clearfog/linux.fragment | 1 + .../board/solidrun/clearfog/post-build.sh | 3 + buildroot/board/solidrun/clearfog/readme.txt | 68 + buildroot/board/synopsys/hsdk/genimage.cfg | 27 + buildroot/board/synopsys/hsdk/linux.fragment | 2 + buildroot/board/synopsys/hsdk/readme.txt | 33 + buildroot/board/synopsys/hsdk/uboot.env.txt | 9 + .../fs-overlay/boot/syslinux/syslinux.cfg | 0 .../linux-4.14.config} | 4 +- .../technologic/{ts5x00 => ts5500}/readme.txt | 2 +- .../board/telit/evk-pro3/barebox.fragment | 2 - buildroot/board/telit/evk-pro3/linux.fragment | 3 - ...0001-watchdog-add-keep-alive-support.patch | 99 - ...tchdog-add-at91sam9-watchdog-support.patch | 237 -- ...at91sam9260-9g20-add-wathdog-support.patch | 36 - ...at91sam9260-9g20-fix-wathdog-support.patch | 26 - .../0001-kernel-add-support-for-gcc-5.patch | 97 - ...inux-use-static-inline-in-ARM-ftrace.patch | 52 - buildroot/board/telit/evk-pro3/readme.txt | 28 - buildroot/boot/at91bootstrap/Config.in | 8 +- buildroot/boot/at91bootstrap/at91bootstrap.mk | 2 +- buildroot/boot/at91bootstrap3/Config.in | 12 +- buildroot/boot/at91dataflashboot/Config.in | 2 +- buildroot/boot/barebox/barebox/Config.in | 1 - buildroot/boot/grub2/grub2.mk | 4 +- buildroot/boot/lpc32xxcdl/Config.in | 2 +- buildroot/boot/lpc32xxcdl/lpc32xxcdl.mk | 8 +- buildroot/boot/mxs-bootlets/Config.in | 8 +- ...inux-Use-the-host-toolchain-to-build.patch | 53 + buildroot/boot/syslinux/Config.in | 1 - buildroot/boot/syslinux/syslinux.mk | 2 +- buildroot/boot/uboot/Config.in | 70 +- buildroot/boot/uboot/uboot.hash | 2 +- buildroot/boot/uboot/uboot.mk | 30 +- .../configs/amarula_vyasa_rk3288_defconfig | 46 + .../configs/arcturus_ucls1012a_defconfig | 36 + .../configs/asus_tinker_rk3288_defconfig | 45 + buildroot/configs/at91sam9260eknf_defconfig | 2 +- buildroot/configs/at91sam9g20dfc_defconfig | 9 +- buildroot/configs/at91sam9g45m10ek_defconfig | 2 +- buildroot/configs/at91sam9rlek_defconfig | 2 +- buildroot/configs/at91sam9x5ek_defconfig | 9 +- buildroot/configs/at91sam9x5ek_dev_defconfig | 9 +- buildroot/configs/at91sam9x5ek_mmc_defconfig | 9 +- .../configs/at91sam9x5ek_mmc_dev_defconfig | 9 +- .../atmel_sama5d27_som1_ek_mmc_dev_defconfig | 9 +- .../atmel_sama5d2_xplained_mmc_defconfig | 9 +- .../atmel_sama5d2_xplained_mmc_dev_defconfig | 9 +- .../configs/atmel_sama5d3_xplained_defconfig | 9 +- .../atmel_sama5d3_xplained_dev_defconfig | 9 +- .../atmel_sama5d3_xplained_mmc_defconfig | 9 +- .../atmel_sama5d3_xplained_mmc_dev_defconfig | 9 +- buildroot/configs/atmel_sama5d3xek_defconfig | 12 +- .../configs/atmel_sama5d4_xplained_defconfig | 9 +- .../atmel_sama5d4_xplained_dev_defconfig | 9 +- .../atmel_sama5d4_xplained_mmc_defconfig | 9 +- .../atmel_sama5d4_xplained_mmc_dev_defconfig | 9 +- buildroot/configs/bananapro_defconfig | 4 +- buildroot/configs/beaglebone_defconfig | 8 +- buildroot/configs/chromebook_snow_defconfig | 8 +- buildroot/configs/ci20_defconfig | 5 +- buildroot/configs/ci40_defconfig | 48 - buildroot/configs/firefly_rk3288_defconfig | 32 - .../configs/firefly_rk3288_demo_defconfig | 40 - .../configs/freescale_imx31_3stack_defconfig | 20 - .../freescale_imx6dlsabreauto_defconfig | 1 + .../configs/freescale_imx6dlsabresd_defconfig | 1 + .../freescale_imx6qsabreauto_defconfig | 1 + .../configs/freescale_imx6qsabresd_defconfig | 1 + .../freescale_imx6sololiteevk_defconfig | 38 - .../configs/freescale_imx6sxsabresd_defconfig | 1 + .../configs/freescale_imx6ulevk_defconfig | 36 - .../configs/freescale_imx7dsabresd_defconfig | 1 + .../configs/freescale_imx8mqevk_defconfig | 41 + .../configs/freescale_mpc8315erdb_defconfig | 28 - .../configs/freescale_p1010rdb_pa_defconfig | 27 - .../configs/freescale_p1025twr_defconfig | 24 + .../configs/freescale_t1040d4rdb_defconfig | 24 + buildroot/configs/galileo_defconfig | 5 +- buildroot/configs/gdb_bfin_bf512_defconfig | 33 - buildroot/configs/grinn_chiliboard_defconfig | 10 +- buildroot/configs/grinn_liteboard_defconfig | 7 +- buildroot/configs/imx6-sabresd_defconfig | 1 + buildroot/configs/imx6ulevk_defconfig | 1 + buildroot/configs/mx25pdk_defconfig | 9 +- buildroot/configs/mx53loco_defconfig | 9 +- buildroot/configs/mx6cubox_defconfig | 9 +- buildroot/configs/odroidc2_defconfig | 5 +- .../olimex_a20_olinuxino_lime2_defconfig | 4 +- .../olimex_a20_olinuxino_lime_defconfig | 4 +- .../olimex_a20_olinuxino_lime_mali_defconfig | 10 +- buildroot/configs/orangepi_pc_plus_defconfig | 1 + buildroot/configs/orangepi_zero_defconfig | 1 + .../configs/orangepi_zero_plus2_defconfig | 24 +- buildroot/configs/qemu_aarch64_virt_defconfig | 9 +- buildroot/configs/qemu_arm_vexpress_defconfig | 6 +- buildroot/configs/qemu_ppc64_e5500_defconfig | 21 + buildroot/configs/raspberrypi0_defconfig | 11 +- buildroot/configs/raspberrypi0w_defconfig | 30 + buildroot/configs/raspberrypi2_defconfig | 9 +- buildroot/configs/raspberrypi3_64_defconfig | 9 +- buildroot/configs/raspberrypi3_defconfig | 11 +- .../configs/raspberrypi3_qt5we_defconfig | 11 +- buildroot/configs/raspberrypi_defconfig | 9 +- buildroot/configs/riotboard_defconfig | 36 - buildroot/configs/roseapplepi_defconfig | 5 +- buildroot/configs/s6lx9_microboard_defconfig | 1 - .../configs/snps_arc700_axs101_defconfig | 1 + .../configs/snps_archs38_axs103_defconfig | 1 + buildroot/configs/snps_archs38_hsdk_defconfig | 40 + buildroot/configs/snps_archs38_vdk_defconfig | 1 + buildroot/configs/socrates_cyclone5_defconfig | 5 +- buildroot/configs/solidrun_clearfog_defconfig | 44 + .../solidrun_macchiatobin_mainline_defconfig | 3 +- .../solidrun_macchiatobin_marvell_defconfig | 8 +- buildroot/configs/telit_evk_pro3_defconfig | 32 - buildroot/configs/ts4900_defconfig | 2 + .../{ts5x00_defconfig => ts5500_defconfig} | 10 +- buildroot/configs/ts7680_defconfig | 5 +- buildroot/configs/wandboard_defconfig | 11 +- buildroot/configs/warp7_defconfig | 9 +- buildroot/configs/zynq_microzed_defconfig | 5 +- buildroot/configs/zynq_zc706_defconfig | 5 +- buildroot/configs/zynq_zed_defconfig | 9 +- .../docs/manual/adding-packages-cargo.txt | 2 +- .../docs/manual/adding-packages-directory.txt | 4 +- .../docs/manual/adding-packages-generic.txt | 38 +- .../docs/manual/adding-packages-golang.txt | 119 + .../docs/manual/adding-packages-meson.txt | 4 +- .../docs/manual/adding-packages-tips.txt | 43 +- buildroot/docs/manual/adding-packages.txt | 7 +- buildroot/docs/manual/common-usage.txt | 4 +- buildroot/docs/manual/contribute.txt | 4 + buildroot/docs/manual/manual.html | 240 +- buildroot/docs/manual/manual.pdf | Bin 523246 -> 532213 bytes buildroot/docs/manual/manual.text | 307 ++- .../manual/using-buildroot-development.txt | 16 + buildroot/docs/website/download.html | 39 +- buildroot/docs/website/favicon.png | Bin 0 -> 1800 bytes buildroot/docs/website/footer.html | 2 +- buildroot/docs/website/news.html | 108 +- buildroot/fs/common.mk | 113 +- buildroot/fs/cpio/Config.in | 6 +- buildroot/fs/cpio/cpio.mk | 6 +- buildroot/fs/cramfs/Config.in | 22 +- buildroot/fs/cramfs/cramfs.mk | 12 +- buildroot/fs/ext2/Config.in | 22 +- buildroot/fs/initramfs/Config.in | 3 +- buildroot/fs/initramfs/initramfs.mk | 3 +- buildroot/fs/iso9660/iso9660.mk | 31 +- buildroot/fs/jffs2/Config.in | 23 +- buildroot/fs/squashfs/Config.in | 3 + buildroot/fs/squashfs/squashfs.mk | 2 + buildroot/fs/tar/Config.in | 2 +- buildroot/fs/tar/tar.mk | 2 + buildroot/fs/ubi/Config.in | 11 +- buildroot/fs/ubi/ubi.mk | 6 +- buildroot/fs/yaffs2/{yaffs.mk => yaffs2.mk} | 0 buildroot/linux/Config.ext.in | 15 +- buildroot/linux/Config.in | 108 +- buildroot/linux/linux-ext-aufs.mk | 2 +- .../linux/linux-ext-ev3dev-linux-drivers.mk | 2 +- buildroot/linux/linux-ext-fbtft.mk | 2 +- buildroot/linux/linux-ext-rtai.mk | 6 +- buildroot/linux/linux-ext-xenomai.mk | 4 +- buildroot/linux/linux.mk | 90 +- .../package/18xx-ti-utils/18xx-ti-utils.hash | 3 + .../package/18xx-ti-utils/18xx-ti-utils.mk | 30 + buildroot/package/18xx-ti-utils/Config.in | 14 + buildroot/package/Config.in | 55 +- buildroot/package/Config.in.host | 3 + buildroot/package/Makefile.in | 20 +- buildroot/package/abootimg/Config.in | 10 + buildroot/package/abootimg/abootimg.hash | 3 + buildroot/package/abootimg/abootimg.mk | 23 + ...use-install-1-to-install-executables.patch | 67 + buildroot/package/acpitool/Config.in | 2 - ...01-Don-t-use-fork-on-noMMU-platforms.patch | 59 + buildroot/package/alsa-lib/0001-no-mmu.patch | 45 - ...dummy-definitions-of-RTLD_-if-neces.patch} | 54 +- ...nally-enable-libdl-in-AM_PATH_ALSA-.patch} | 17 +- buildroot/package/alsa-lib/alsa-lib.hash | 4 +- buildroot/package/alsa-lib/alsa-lib.mk | 8 +- buildroot/package/alsa-utils/alsa-utils.hash | 2 +- buildroot/package/alsa-utils/alsa-utils.mk | 2 +- .../package/amd-catalyst/amd-catalyst.mk | 2 +- .../package/android-tools/android-tools.mk | 4 +- buildroot/package/angularjs/angularjs.mk | 2 +- buildroot/package/apache/apache.hash | 5 +- buildroot/package/apache/apache.mk | 10 +- buildroot/package/apr-util/apr-util.mk | 18 + buildroot/package/armadillo/Config.in | 2 - ...uild-fix-issues-building-without-ssl.patch | 57 + buildroot/package/asterisk/asterisk.mk | 2 +- buildroot/package/atest/Config.in | 2 - ...use-install-1-to-install-executables.patch | 67 + buildroot/package/autofs/Config.in | 9 +- buildroot/package/autofs/autofs.mk | 9 +- buildroot/package/avahi/avahi.mk | 10 + buildroot/package/avahi/avahi_sysusers.conf | 5 + buildroot/package/avrdude/Config.in | 2 - buildroot/package/azmq/azmq.hash | 5 +- buildroot/package/azmq/azmq.mk | 2 +- .../azure-iot-sdk-c/azure-iot-sdk-c.mk | 2 +- buildroot/package/bash-completion/Config.in | 15 + .../bash-completion/bash-completion.hash | 3 + .../bash-completion/bash-completion.mk | 16 + buildroot/package/bash/bash.hash | 4 +- buildroot/package/bash/bash.mk | 12 +- buildroot/package/bind/S81named | 1 - buildroot/package/bind/bind.mk | 4 +- .../binutils/2.27/0905-bfin-rofixup-bug.patch | 21 - .../2.28.1/0905-bfin-rofixup-bug.patch | 21 - ...R-BUG-.rofixup-section-size-mismatch.patch | 31 - ...R-BUG-.rofixup-section-size-mismatch.patch | 31 - buildroot/package/binutils/Config.in.host | 2 +- .../0002-ld-makefile.patch | 0 .../0003-check-ldrunpath-length.patch | 0 .../0004-add-sysroot-fix-from-bug-3049.patch | 0 .../0005-poison-system-directories.patch | 0 buildroot/package/binutils/binutils.hash | 2 +- buildroot/package/binutils/binutils.mk | 22 +- buildroot/package/bluez-alsa/Config.in | 36 + buildroot/package/bluez-alsa/bluez-alsa.hash | 3 + buildroot/package/bluez-alsa/bluez-alsa.mk | 43 + ...all-only-be-build-if-readline-is-pre.patch | 32 + ...-Remove-include-linux-if_bridge.h-to.patch | 45 - buildroot/package/bluez5_utils/Config.in | 10 +- .../package/bluez5_utils/bluez5_utils.hash | 4 +- .../package/bluez5_utils/bluez5_utils.mk | 14 +- buildroot/package/boinc/boinc-client.service | 10 - buildroot/package/boinc/boinc.hash | 2 +- buildroot/package/boinc/boinc.mk | 10 +- buildroot/package/bootstrap/bootstrap.hash | 4 +- buildroot/package/bootstrap/bootstrap.mk | 6 +- ...g-BUILD_SHARED_LIBS-to-choose-static.patch | 144 ++ ...-CMake-to-not-check-for-a-C-compiler.patch | 31 + buildroot/package/brotli/Config.in | 12 + buildroot/package/brotli/brotli.hash | 5 + buildroot/package/brotli/brotli.mk | 17 + ...-static-library-and-headers-in-insta.patch | 4 +- ...ogs-convert-add-missing-types-header.patch | 39 - ...0003-btrfs.static-needs-libbtrfsutil.patch | 39 + .../package/btrfs-progs/btrfs-progs.hash | 4 +- buildroot/package/btrfs-progs/btrfs-progs.mk | 9 +- ...trip-non-l-arguments-returned-by-pkg.patch | 2 +- ...-per-arch-Makefile-before-Makefile.f.patch | 46 - ...rc-sparc64-Makefile-define-ARCH_FPIC.patch | 79 - ...httpd-fix-handling-of-range-requests.patch | 27 - ...2-fix-runCnt-overflow-from-bug-10431.patch | 101 - .../0007-unlzma-fix-SEGV-closes-10436.patch | 34 - buildroot/package/busybox/Config.in | 2 - buildroot/package/busybox/S10mdev | 3 +- .../package/busybox/busybox-minimal.config | 93 +- buildroot/package/busybox/busybox.config | 87 +- buildroot/package/busybox/busybox.hash | 10 +- buildroot/package/busybox/busybox.mk | 20 +- buildroot/package/busybox/inittab | 4 + buildroot/package/c-ares/c-ares.hash | 2 +- buildroot/package/c-ares/c-ares.mk | 2 +- .../cache-calibrator/cache-calibrator.mk | 2 +- .../cairo/0001-blackfin-build-fix.patch | 55 - ...uild.patch => 0001-fix-nofork-build.patch} | 0 ...uild.patch => 0002-fix-gcc-49-build.patch} | 0 buildroot/package/can-utils/Config.in | 7 +- buildroot/package/can-utils/can-utils.hash | 3 +- buildroot/package/can-utils/can-utils.mk | 3 +- buildroot/package/cargo-bin/cargo-bin.hash | 8 +- buildroot/package/cargo-bin/cargo-bin.mk | 2 +- buildroot/package/cargo/cargo.hash | 6 +- buildroot/package/cargo/cargo.mk | 8 +- buildroot/package/ccache/ccache.mk | 5 + buildroot/package/ccid/Config.in | 2 +- buildroot/package/ccid/ccid.hash | 6 +- buildroot/package/ccid/ccid.mk | 6 +- buildroot/package/chipmunk/Config.in | 12 + buildroot/package/chipmunk/chipmunk.hash | 5 + buildroot/package/chipmunk/chipmunk.mk | 28 + buildroot/package/cifs-utils/cifs-utils.mk | 6 +- buildroot/package/circus/Config.in | 6 +- buildroot/package/cjson/cjson.hash | 2 +- buildroot/package/cjson/cjson.mk | 2 +- ...c-fix-build-error-due-to-missing-soc.patch | 34 + buildroot/package/clamav/0001-clamdscan.patch | 21 - ...acktrace-if-using-uClibc-without-ba.patch} | 22 +- ...n-libs-curl.m4-fix-curl-config-detec.patch | 75 + buildroot/package/clamav/clamav.hash | 2 +- buildroot/package/clamav/clamav.mk | 4 +- buildroot/package/clang/Config.in | 26 + buildroot/package/clang/clang.hash | 3 + buildroot/package/clang/clang.mk | 93 + buildroot/package/clapack/Config.in | 4 - buildroot/package/coreutils/coreutils.mk | 11 +- buildroot/package/cppzmq/Config.in | 6 +- buildroot/package/cracklib/cracklib.mk | 2 +- buildroot/package/cramfs/0001-endian.patch | 288 --- buildroot/package/cramfs/0002-cygwin_IO.patch | 15 - .../cramfs/0003-fix-missing-types.patch | 17 - buildroot/package/cramfs/Config.in | 2 +- buildroot/package/cramfs/Config.in.host | 2 +- buildroot/package/cramfs/cramfs.hash | 2 +- buildroot/package/cramfs/cramfs.mk | 4 +- ...-DoS-in-ASN.1-decoders-CVE-2016-9939.patch | 69 - buildroot/package/cryptopp/cryptopp.hash | 7 +- buildroot/package/cryptopp/cryptopp.mk | 4 +- buildroot/package/cryptsetup/cryptsetup.hash | 2 +- buildroot/package/cryptsetup/cryptsetup.mk | 2 +- ...lative-linking-with-absolute-linking.patch | 46 + .../package/cups-filters/cups-filters.hash | 3 +- .../package/cups-filters/cups-filters.mk | 5 +- ...05-Fix-builds-without-PAM-Issue-5283.patch | 189 ++ buildroot/package/cups/cups.hash | 3 +- buildroot/package/cups/cups.mk | 3 +- buildroot/package/czmq/Config.in | 6 +- buildroot/package/czmq/czmq.hash | 6 +- buildroot/package/czmq/czmq.mk | 12 +- buildroot/package/dahdi-linux/dahdi-linux.mk | 2 +- buildroot/package/dash/dash.mk | 8 + buildroot/package/dbus/S30dbus | 3 - buildroot/package/dbus/dbus.hash | 4 +- buildroot/package/dbus/dbus.mk | 2 +- buildroot/package/devmem2/devmem2.mk | 2 +- buildroot/package/dhcpcd/S41dhcpcd | 1 - buildroot/package/dhcpcd/dhcpcd.hash | 6 +- buildroot/package/dhcpcd/dhcpcd.mk | 4 +- buildroot/package/dhrystone/dhrystone.mk | 2 +- buildroot/package/dmraid/S20dmraid | 2 - ...ildcard-NSEC-records.-CVE-2017-15107.patch | 212 -- ...ation-errors-introduced-in-4fe6744a2.patch | 29 - buildroot/package/dnsmasq/S80dnsmasq | 1 - buildroot/package/dnsmasq/dnsmasq.hash | 4 +- buildroot/package/dnsmasq/dnsmasq.mk | 2 +- buildroot/package/docker-compose/Config.in | 29 + .../docker-compose/docker-compose.hash | 4 + .../package/docker-compose/docker-compose.mk | 13 + buildroot/package/docker-containerd/Config.in | 12 - .../docker-containerd/docker-containerd.hash | 2 +- .../docker-containerd/docker-containerd.mk | 61 +- buildroot/package/docker-engine/Config.in | 27 +- .../package/docker-engine/docker-engine.hash | 2 +- .../package/docker-engine/docker-engine.mk | 92 +- buildroot/package/docker-proxy/Config.in | 19 + .../package/docker-proxy/docker-proxy.hash | 2 + .../package/docker-proxy/docker-proxy.mk | 21 + buildroot/package/doom-wad/doom-wad.mk | 2 +- .../dovecot-pigeonhole.hash | 2 +- .../dovecot-pigeonhole/dovecot-pigeonhole.mk | 6 +- buildroot/package/dovecot/dovecot.hash | 2 +- buildroot/package/dovecot/dovecot.mk | 11 +- ...ngle-server-ecdsa-key-when-R-is-used.patch | 113 + buildroot/package/dropbear/Config.in | 1 + buildroot/package/dropbear/dropbear.hash | 2 +- buildroot/package/dropbear/dropbear.mk | 46 +- .../dtv-scan-tables/dtv-scan-tables.hash | 4 +- .../dtv-scan-tables/dtv-scan-tables.mk | 11 +- buildroot/package/dvblast/Config.in | 2 - buildroot/package/e2fsprogs/e2fsprogs.hash | 4 +- buildroot/package/e2fsprogs/e2fsprogs.mk | 2 +- buildroot/package/ebtables/Config.in | 3 - buildroot/package/ecryptfs-utils/Config.in | 4 + ...tch => 0001-Allow-build-with-uClibc.patch} | 0 ...-dont-use-fshort-wchar-when-building.patch | 28 - ...ra-const-keywords-gcc-7-gripes-about.patch | 51 - buildroot/package/efibootmgr/Config.in | 5 +- buildroot/package/efibootmgr/efibootmgr.hash | 3 +- buildroot/package/efibootmgr/efibootmgr.mk | 12 +- ...tch => 0001-Allow-build-with-uClibc.patch} | 2 +- ...-avoid-the-multiple-definitions-bug-.patch | 29 - ...extra-const-that-gcc-complains-about.patch | 47 - buildroot/package/efivar/Config.in | 8 +- buildroot/package/efivar/efivar.hash | 3 +- buildroot/package/efivar/efivar.mk | 9 +- buildroot/package/efl/efl.hash | 4 +- buildroot/package/efl/efl.mk | 2 +- buildroot/package/elfutils/Config.in | 4 - .../package/enlightenment/enlightenment.hash | 4 +- .../package/enlightenment/enlightenment.mk | 16 +- buildroot/package/erlang/0001-build-fix.patch | 13 - ...ruct-libatomic_ops-we-do-require-CA.patch} | 0 ...lator-reorder-inclued-headers-paths.patch} | 0 ...with-LDLIBS-instead-of-LIBS-for-DED.patch} | 0 buildroot/package/erlang/erlang.hash | 5 +- buildroot/package/erlang/erlang.mk | 4 +- buildroot/package/espeak/espeak.mk | 2 +- buildroot/package/ethtool/ethtool.hash | 3 +- buildroot/package/ethtool/ethtool.mk | 4 +- buildroot/package/eudev/S10udev | 8 +- buildroot/package/eudev/eudev.mk | 3 - buildroot/package/execline/execline.hash | 4 +- buildroot/package/execline/execline.mk | 2 +- .../0001-Build-buildconfig-for-the-host.patch | 2 +- .../0002-src-Makefile-disable-Werror.patch | 32 + buildroot/package/fan-ctrl/fan-ctrl.mk | 2 +- .../fbgrab/0100-fix-pixfmt-report.patch | 24 + .../0001-bfin-disable-optimization.patch | 26 - ...reads.patch => 0001-ffmpeg-pthreads.patch} | 0 buildroot/package/ffmpeg/ffmpeg.mk | 12 +- buildroot/package/filemq/Config.in | 6 +- .../0001-src-cpp-fix-cmake-3.11-build.patch | 80 + buildroot/package/flannel/flannel.mk | 32 +- buildroot/package/flare-engine/Config.in | 19 + .../package/flare-engine/flare-engine.hash | 3 + .../package/flare-engine/flare-engine.mk | 17 + buildroot/package/flare-game/Config.in | 13 + buildroot/package/flare-game/flare-game.hash | 3 + buildroot/package/flare-game/flare-game.mk | 18 + buildroot/package/flashrom/flashrom.hash | 6 +- buildroot/package/flashrom/flashrom.mk | 4 +- .../package/flatbuffers/flatbuffers.hash | 2 +- buildroot/package/flatbuffers/flatbuffers.mk | 2 +- buildroot/package/freescale-imx/Config.in | 9 +- .../freescale-imx/firmware-imx/Config.in | 2 +- .../firmware-imx/firmware-imx.mk | 31 +- .../gpu-amd-bin-mx51/gpu-amd-bin-mx51.mk | 2 +- .../freescale-imx/imx-alsa-plugins/Config.in | 22 + .../imx-alsa-plugins/imx-alsa-plugins.hash | 3 + .../imx-alsa-plugins/imx-alsa-plugins.mk | 21 + .../freescale-imx/imx-codec/imx-codec.mk | 2 +- .../freescale-imx/imx-gpu-g2d/imx-gpu-g2d.mk | 2 +- .../freescale-imx/imx-gpu-viv/imx-gpu-viv.mk | 2 +- .../freescale-imx/imx-parser/imx-parser.mk | 2 +- .../package/freescale-imx/imx-vpu/imx-vpu.mk | 2 +- .../freescale-imx/imx-vpuwrap/imx-vpuwrap.mk | 2 +- .../package/freescale-imx/libz160/libz160.mk | 2 +- .../freeswitch-mod-bcg729.hash | 2 +- .../freeswitch-mod-bcg729.mk | 2 +- buildroot/package/freeswitch/freeswitch.mk | 11 + buildroot/package/freetype/Config.in | 2 +- buildroot/package/freetype/freetype.hash | 10 +- buildroot/package/freetype/freetype.mk | 2 +- buildroot/package/gauche/gauche.mk | 2 +- .../package/gawk/0001-no-versioned.patch | 10 - buildroot/package/gawk/Config.in | 5 +- buildroot/package/gawk/gawk.hash | 5 +- buildroot/package/gawk/gawk.mk | 10 +- .../4.9.4/0002-m68k-coldfire-pr68467.patch | 48 + .../gcc/4.9.4/891-fix-m68k-uclinux.patch | 18 - .../5.5.0/0001-m68k-coldfire-pr68467.patch | 48 + .../gcc/5.5.0/891-fix-m68k-uclinux.patch | 18 - .../6.4.0/0001-m68k-coldfire-pr68467.patch | 48 + .../gcc/6.4.0/891-fix-m68k-uclinux.patch | 18 - ...mkmap-symver-support-skip_underscore.patch | 60 - ...in-use-the-generic-linker-version-in.patch | 1944 ----------------- ...DWARF-compilation-with-FDPIC-targets.patch | 59 - .../gcc/6.4.0/895-bfin-define-REENTRANT.patch | 17 - .../7.3.0/0001-m68k-coldfire-pr68467.patch | 48 + .../gcc/7.3.0/0891-fix-m68k-uclinux.patch | 30 - buildroot/package/gcc/Config.in.host | 9 +- .../0001-fix-checking-for-jumps.patch | 49 - .../0100-uclibc-conf.patch | 0 .../0860-cilk-fix-build-without-wchar.patch | 0 .../0900-remove-selftests.patch | 0 buildroot/package/gcc/gcc-final/gcc-final.mk | 6 +- .../package/gcc/gcc-initial/gcc-initial.mk | 5 + buildroot/package/gcc/gcc.hash | 2 +- buildroot/package/gcc/gcc.mk | 43 +- ...-Revert-sim-unify-SIM_CPU-definition.patch | 372 ---- ...-proc_service-definition-with-GLIBC.patch} | 0 ...-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch} | 0 ...pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch} | 0 ...Fix-gdbserver-build-on-uClibc-noMMU.patch} | 0 ...s.h.patch => 0010-use-asm-sgidefs.h.patch} | 0 ...-proc_service-definition-with-GLIBC.patch} | 0 ...ut-common-mach-model-defines-into-ar.patch | 155 -- ...-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch} | 0 ...pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch} | 0 ...Fix-gdbserver-build-on-uClibc-noMMU.patch} | 0 ...s.h.patch => 0005-use-asm-sgidefs.h.patch} | 0 buildroot/package/gdb/Config.in | 1 - buildroot/package/gdb/Config.in.host | 2 +- buildroot/package/gdb/gdb.hash | 2 +- buildroot/package/gdb/gdb.mk | 12 +- .../0001-Fix-cross-compilation-issue.patch | 4 + .../package/ghostscript/ghostscript.hash | 9 +- buildroot/package/ghostscript/ghostscript.mk | 7 +- buildroot/package/git/git.hash | 2 +- buildroot/package/git/git.mk | 2 +- buildroot/package/glibc/glibc.hash | 8 +- buildroot/package/glibc/glibc.mk | 13 +- buildroot/package/gnupg/Config.in.host | 2 +- buildroot/package/gnupg2/gnupg2.hash | 8 +- buildroot/package/gnupg2/gnupg2.mk | 4 +- buildroot/package/gnutls/gnutls.hash | 4 +- buildroot/package/gnutls/gnutls.mk | 2 +- ...explicit-option-for-crosscompilation.patch | 40 + buildroot/package/go/go.hash | 2 +- buildroot/package/go/go.mk | 35 +- buildroot/package/gptfdisk/Config.in | 1 - .../0001-disable-double-promotion.patch | 23 - .../gstreamer/gst-plugins-bad/Config.in | 1 - buildroot/package/gstreamer1/Config.in | 2 + .../gstreamer1/gst1-interpipe/Config.in | 10 + .../gst1-interpipe/gst1-interpipe.hash | 5 + .../gst1-interpipe/gst1-interpipe.mk | 21 + .../gst1-plugins-bad/gst1-plugins-bad.mk | 25 +- .../gstreamer1/gst1-plugins-good/Config.in | 2 - ...d-with-newer-x264-with-support-for-m.patch | 106 + .../gstreamer1-editing-services/Config.in | 19 + .../gstreamer1-editing-services.hash | 6 + .../gstreamer1-editing-services.mk | 40 + buildroot/package/gtest/gtest.hash | 1 + .../package/gtksourceview/gtksourceview.hash | 4 +- .../package/gtksourceview/gtksourceview.mk | 2 +- .../0001-Don-t-require-a-C-compiler.patch | 37 + buildroot/package/hackrf/Config.in | 16 + buildroot/package/hackrf/hackrf.hash | 3 + buildroot/package/hackrf/hackrf.mk | 26 + buildroot/package/haveged/S21haveged | 2 - buildroot/package/hostapd/Config.in | 57 +- buildroot/package/hostapd/hostapd.mk | 59 +- ...Panel-remove-0xe2-from-MetersPanel.c.patch | 52 + ...eHeader-open-files-using-binary-mode.patch | 50 + buildroot/package/htop/htop.hash | 6 +- buildroot/package/htop/htop.mk | 2 +- ...ake-error-when-DBUILD_SHARED_LIBS-ON.patch | 28 + .../i2pd/0002-Install-libi2pdclient.patch | 69 + ....txt-don-t-install-source-and-licens.patch | 58 + buildroot/package/i2pd/Config.in | 37 + buildroot/package/i2pd/S99i2pd | 38 + buildroot/package/i2pd/i2pd.hash | 3 + buildroot/package/i2pd/i2pd.mk | 63 + buildroot/package/i2pd/i2pd.service | 29 + .../0003-detect-compiler-symbol-prefix.patch | 116 - ...h => 0003-link-icudata-as-data-only.patch} | 0 ...0004-fix-static-linking-with-icu-uc.patch} | 0 buildroot/package/icu/icu.hash | 4 +- buildroot/package/icu/icu.mk | 2 +- .../package/imagemagick/imagemagick.hash | 3 +- buildroot/package/imagemagick/imagemagick.mk | 2 +- ...overriding-bl32-and-bl33-not-only-bl.patch | 58 + .../0002-add-ldflags-to-link-step.patch | 26 + buildroot/package/imx-mkimage/Config.in.host | 7 + .../package/imx-mkimage/imx-mkimage.hash | 3 + buildroot/package/imx-mkimage/imx-mkimage.mk | 25 + buildroot/package/inadyn/inadyn.hash | 6 +- buildroot/package/inadyn/inadyn.mk | 2 +- .../package/inotify-tools/0001-gcc6.patch | 49 - .../package/inotify-tools/inotify-tools.hash | 3 +- .../package/inotify-tools/inotify-tools.mk | 4 +- .../intel-microcode/intel-microcode.hash | 2 +- .../intel-microcode/intel-microcode.mk | 4 +- ...workaround-to-the-libc-compat.h-copy.patch | 38 - .../0001-arpd-remove-pthread-dependency.patch | 37 + buildroot/package/iproute2/iproute2.hash | 2 +- buildroot/package/iproute2/iproute2.mk | 39 +- buildroot/package/iprutils/Config.in | 1 - buildroot/package/ipsec-tools/Config.in | 8 +- buildroot/package/ipsec-tools/ipsec-tools.mk | 6 +- ...t-reference-to-u_int8_t-with-uint8_t.patch | 28 - buildroot/package/ipset/ipset.hash | 6 +- buildroot/package/ipset/ipset.mk | 2 +- ..._bpf-Fix-build-with-old-kernel-versi.patch | 49 + ...-nfsynproxy-fix-build-with-musl-libc.patch | 44 - buildroot/package/iptables/iptables.hash | 6 +- buildroot/package/iptables/iptables.mk | 2 +- buildroot/package/iqvlinux/Config.in | 18 - buildroot/package/iqvlinux/iqvlinux.hash | 5 - buildroot/package/iqvlinux/iqvlinux.mk | 21 - buildroot/package/irrlicht/irrlicht.mk | 2 +- buildroot/package/irssi/irssi.hash | 2 +- buildroot/package/irssi/irssi.mk | 2 +- buildroot/package/iw/iw.hash | 4 +- buildroot/package/iw/iw.mk | 5 +- buildroot/package/jamvm/Config.in | 16 +- buildroot/package/janus-gateway/Config.in | 28 +- .../package/janus-gateway/janus-gateway.mk | 28 +- buildroot/package/jimtcl/jimtcl.mk | 6 +- .../package/jquery-mobile/jquery-mobile.mk | 2 +- .../jquery-sparkline/jquery-sparkline.mk | 2 +- buildroot/package/jquery-ui-themes/Config.in | 96 +- .../jquery-ui-themes/jquery-ui-themes.mk | 2 +- buildroot/package/jquery-ui/jquery-ui.mk | 2 +- .../jquery-validation/jquery-validation.mk | 2 +- buildroot/package/jquery/jquery.mk | 2 +- .../json-for-modern-cpp.hash | 4 +- .../json-for-modern-cpp.mk | 2 +- buildroot/package/jsoncpp/jsoncpp.hash | 3 +- buildroot/package/jsoncpp/jsoncpp.mk | 8 +- ...uild-with-Linux-kernel-headers-v4.15.patch | 59 - .../0001-configure.ac-do-not-force-PIE.patch | 38 + buildroot/package/keepalived/keepalived.hash | 3 +- buildroot/package/keepalived/keepalived.mk | 4 +- buildroot/package/kexec/Config.in | 2 +- buildroot/package/kmod/kmod.mk | 2 +- buildroot/package/kodi-adsp-basic/Config.in | 12 - .../kodi-adsp-basic/kodi-adsp-basic.hash | 2 - .../kodi-adsp-basic/kodi-adsp-basic.mk | 15 - .../package/kodi-adsp-freesurround/Config.in | 11 - .../kodi-adsp-freesurround.hash | 2 - .../kodi-adsp-freesurround.mk | 15 - .../kodi-inputstream-adaptive.hash | 2 +- .../kodi-inputstream-adaptive.mk | 2 +- buildroot/package/kodi/Config.in | 5 - buildroot/package/kodi/kodi.mk | 13 +- buildroot/package/ktap/ktap.hash | 3 +- buildroot/package/ktap/ktap.mk | 2 +- ...ILL_ARRAY-macro-to-prevent-warning-o.patch | 56 - buildroot/package/kvazaar/kvazaar.hash | 3 +- buildroot/package/kvazaar/kvazaar.mk | 2 +- ...cms2.pc.in-thread-library-dependency.patch | 26 - ...2-Added-an-extra-check-to-MLU-bounds.patch | 27 - buildroot/package/lcms2/lcms2.hash | 7 +- buildroot/package/lcms2/lcms2.mk | 4 +- buildroot/package/leveldb/Config.in | 3 - buildroot/package/lftp/lftp.hash | 9 +- buildroot/package/lftp/lftp.mk | 2 +- buildroot/package/libaacs/libaacs.hash | 3 + buildroot/package/libaio/libaio.hash | 3 + buildroot/package/libao/libao.hash | 3 + buildroot/package/libarchive/libarchive.hash | 1 + .../package/libargtable2/libargtable2.hash | 1 + buildroot/package/libart/libart.hash | 3 + buildroot/package/libasplib/libasplib.hash | 1 + buildroot/package/libass/libass.hash | 3 +- buildroot/package/libass/libass.mk | 6 +- .../package/libatasmart/libatasmart.hash | 1 + buildroot/package/libb64/libb64.hash | 3 + buildroot/package/libb64/libb64.mk | 2 +- buildroot/package/libbdplus/libbdplus.hash | 3 + .../package/libbroadvoice/libbroadvoice.hash | 1 + ...laration-protection-for-glibc-alread.patch | 80 + ...2-Fix-build-for-openrisc-with-uClibc.patch | 48 + ...3-Handle-systems-missing-sys-cdefs.h.patch | 230 ++ buildroot/package/libbsd/Config.in | 7 +- buildroot/package/libbson/libbson.hash | 4 +- buildroot/package/libbson/libbson.mk | 2 +- ...01-Fix-compilation-without-pthread.h.patch | 47 + buildroot/package/libcap-ng/libcap-ng.hash | 4 +- buildroot/package/libcap-ng/libcap-ng.mk | 4 +- buildroot/package/libcap/libcap.hash | 3 + buildroot/package/libcap/libcap.mk | 3 + buildroot/package/libcdaudio/libcdaudio.hash | 1 + buildroot/package/libcddb/libcddb.hash | 1 + buildroot/package/libcdio-paranoia/Config.in | 8 + .../libcdio-paranoia/libcdio-paranoia.hash | 3 + .../libcdio-paranoia/libcdio-paranoia.mk | 19 + buildroot/package/libcdio/libcdio.hash | 5 +- buildroot/package/libcdio/libcdio.mk | 2 +- buildroot/package/libcec/libcec.hash | 1 + buildroot/package/libcec/libcec.mk | 7 + buildroot/package/libcgi/libcgi.hash | 3 + buildroot/package/libcgi/libcgi.mk | 1 + buildroot/package/libcgicc/libcgicc.hash | 6 +- buildroot/package/libcgicc/libcgicc.mk | 4 +- buildroot/package/libcgroup/libcgroup.hash | 1 + buildroot/package/libcli/libcli.hash | 1 + buildroot/package/libcoap/libcoap.hash | 3 + .../0001-Add-disable-doc-option.patch | 54 + buildroot/package/libconfig/Config.in | 2 +- buildroot/package/libconfig/libconfig.hash | 3 +- buildroot/package/libconfig/libconfig.mk | 6 +- buildroot/package/libconfuse/libconfuse.hash | 7 +- buildroot/package/libconfuse/libconfuse.mk | 2 +- .../0001-fix-xlocale-header-check.patch | 55 - ...dk-fix-building-as-a-static-library.patch} | 0 .../0002-fix-template-whitespace-syntax.patch | 75 + ...-include-sys-time-for-struct-timeval.patch | 28 - .../libcpprestsdk/0003-fix-strand.patch | 28 - .../package/libcpprestsdk/libcpprestsdk.hash | 2 +- .../package/libcpprestsdk/libcpprestsdk.mk | 2 +- buildroot/package/libcroco/libcroco.hash | 3 + buildroot/package/libcsv/libcsv.hash | 1 + buildroot/package/libcue/libcue.hash | 3 +- buildroot/package/libcue/libcue.mk | 15 +- buildroot/package/libcuefile/libcuefile.hash | 3 + buildroot/package/libcurl/libcurl.hash | 4 +- buildroot/package/libcurl/libcurl.mk | 9 +- buildroot/package/libdaemon/libdaemon.hash | 1 + buildroot/package/libdcadec/libdcadec.hash | 1 + buildroot/package/libdmtx/libdmtx.hash | 1 + buildroot/package/libdnet/libdnet.hash | 1 + buildroot/package/libdri2/libdri2.hash | 1 + buildroot/package/libdrm/libdrm.hash | 10 +- buildroot/package/libdrm/libdrm.mk | 2 +- buildroot/package/libdvbcsa/libdvbcsa.hash | 3 + buildroot/package/libdvbpsi/libdvbpsi.hash | 11 +- buildroot/package/libdvbpsi/libdvbpsi.mk | 2 +- buildroot/package/libdvbsi/libdvbsi.hash | 3 + buildroot/package/libdvdcss/libdvdcss.hash | 7 +- buildroot/package/libdvdcss/libdvdcss.mk | 2 +- buildroot/package/libdvdnav/libdvdnav.hash | 7 +- buildroot/package/libdvdnav/libdvdnav.mk | 2 +- buildroot/package/libdvdread/libdvdread.hash | 7 +- buildroot/package/libdvdread/libdvdread.mk | 2 +- buildroot/package/libeXosip2/libeXosip2.hash | 1 + ...nteger-Use-limits-instead-of-climits.patch | 28 + buildroot/package/libebml/libebml.hash | 3 +- buildroot/package/libebml/libebml.mk | 6 +- .../0001-check-bsd-functions-in-libbsd.patch | 6 +- buildroot/package/libedit/libedit.hash | 3 +- buildroot/package/libedit/libedit.mk | 11 +- buildroot/package/libee/libee.hash | 3 + buildroot/package/libenca/libenca.hash | 1 + ...001-Forward-EGL-cflags-into-epoxy.pc.patch | 32 - buildroot/package/libepoxy/libepoxy.hash | 7 +- buildroot/package/libepoxy/libepoxy.mk | 4 +- buildroot/package/liberation/liberation.hash | 1 + buildroot/package/libesmtp/libesmtp.hash | 2 + buildroot/package/libestr/libestr.hash | 3 + buildroot/package/libev/Config.in | 2 - buildroot/package/libev/libev.hash | 1 + buildroot/package/libevdev/libevdev.hash | 13 +- buildroot/package/libevdev/libevdev.mk | 2 +- buildroot/package/libevent/libevent.hash | 1 + buildroot/package/libevent/libevent.mk | 4 +- buildroot/package/libexif/libexif.hash | 1 + .../0001-m4-fix-detection-of-atomics.patch | 86 - .../package/libfastjson/libfastjson.hash | 3 +- buildroot/package/libfastjson/libfastjson.mk | 2 +- buildroot/package/libfcgi/libfcgi.hash | 1 + buildroot/package/libfcgi/libfcgi.mk | 2 +- .../package/libfm-extra/libfm-extra.hash | 8 +- buildroot/package/libfm-extra/libfm-extra.mk | 2 +- .../0001-modules-fix-cross-compilation.patch | 27 + buildroot/package/libfm/libfm.hash | 8 +- buildroot/package/libfm/libfm.mk | 4 +- .../package/libfreefare/libfreefare.hash | 3 + .../package/libfreeglut/libfreeglut.hash | 3 + .../0005-Manage-powf64-with-glibc.patch | 725 ++++++ buildroot/package/libfreeimage/Config.in | 3 - .../package/libfreeimage/libfreeimage.hash | 3 + .../package/libfreeimage/libfreeimage.mk | 2 +- buildroot/package/libftdi/Config.in | 2 +- buildroot/package/libftdi/libftdi.mk | 2 +- buildroot/package/libftdi1/libftdi1.hash | 5 + buildroot/package/libfuse/libfuse.hash | 4 + buildroot/package/libg7221/libg7221.hash | 1 + buildroot/package/libgee/libgee.hash | 7 +- buildroot/package/libgee/libgee.mk | 2 +- ...GEO_NORMALIZE_DISABLE_TOWGS84-define.patch | 20 + buildroot/package/libgeotiff/libgeotiff.hash | 3 +- buildroot/package/libgeotiff/libgeotiff.mk | 2 +- buildroot/package/libglade/libglade.hash | 3 + buildroot/package/libglfw/libglfw.hash | 1 + ...gobject-fix-compilation-with-gcc-4.7.patch | 50 + buildroot/package/libglib2/libglib2.hash | 4 +- buildroot/package/libglib2/libglib2.mk | 6 +- buildroot/package/libglob/libglob.hash | 1 + buildroot/package/libglu/libglu.hash | 1 + .../package/libgpg-error/libgpg-error.hash | 6 +- .../package/libgpg-error/libgpg-error.mk | 5 +- buildroot/package/libgpgme/libgpgme.hash | 8 +- buildroot/package/libgpgme/libgpgme.mk | 2 +- buildroot/package/libgphoto2/libgphoto2.hash | 9 +- buildroot/package/libgphoto2/libgphoto2.mk | 2 +- buildroot/package/libgpiod/libgpiod.hash | 2 +- buildroot/package/libgpiod/libgpiod.mk | 2 +- buildroot/package/libgsasl/Config.in | 4 + buildroot/package/libgsasl/libgsasl.hash | 5 + buildroot/package/libgsm/libgsm.hash | 1 + buildroot/package/libgtk2/libgtk2.hash | 7 +- buildroot/package/libgtk2/libgtk2.mk | 2 +- buildroot/package/libgtk3/libgtk3.hash | 7 +- buildroot/package/libgtk3/libgtk3.mk | 2 +- buildroot/package/libgudev/libgudev.hash | 7 +- buildroot/package/libgudev/libgudev.mk | 3 +- buildroot/package/libhid/libhid.hash | 1 + ...tion-when-calling-ln-at-install-time.patch | 30 +- .../package/libhttpparser/libhttpparser.hash | 3 +- .../package/libhttpparser/libhttpparser.mk | 2 +- buildroot/package/libical/libical.hash | 1 + buildroot/package/libiconv/libiconv.hash | 4 + buildroot/package/libid3tag/libid3tag.hash | 2 + ....c-decode_digit-Fix-integer-overflow.patch | 36 - ...e-intprops.h-for-gcc-7-compatibility.patch | 333 --- buildroot/package/libidn/libidn.hash | 11 +- buildroot/package/libidn/libidn.mk | 4 +- buildroot/package/libiio/libiio.hash | 3 +- buildroot/package/libiio/libiio.mk | 2 +- buildroot/package/libilbc/libilbc.hash | 1 + .../package/libimxvpuapi/libimxvpuapi.hash | 1 + buildroot/package/libiscsi/libiscsi.hash | 3 + buildroot/package/libite/libite.hash | 6 +- buildroot/package/libite/libite.mk | 4 +- buildroot/package/libjpeg/libjpeg.hash | 3 +- buildroot/package/libjpeg/libjpeg.mk | 2 +- buildroot/package/libjson/libjson.hash | 1 + buildroot/package/libjson/libjson.mk | 2 +- ...01-Fix-getrandom-call-in-kcapi-rng.c.patch | 31 + ...e-sufficient-memory-size-for-message.patch | 31 - ...0002-Do-not-compile-unused-functions.patch | 35 - ...Unify-code-to-read-from-seed-sources.patch | 132 -- ...ernal.h-make-inline-functions-static.patch | 103 - buildroot/package/libkcapi/Config.in | 21 +- buildroot/package/libkcapi/libkcapi.hash | 5 +- buildroot/package/libkcapi/libkcapi.mk | 34 +- buildroot/package/libkrb5/Config.in | 18 + buildroot/package/libkrb5/libkrb5.hash | 5 + buildroot/package/libkrb5/libkrb5.mk | 59 + buildroot/package/libksba/libksba.hash | 7 + buildroot/package/libldns/libldns.hash | 3 + ...0001-blas-don-t-overwrite-ar-options.patch | 5 +- buildroot/package/liblinear/liblinear.hash | 3 +- buildroot/package/liblinear/liblinear.mk | 2 +- buildroot/package/libllcp/libllcp.hash | 1 + ...001-server-use-correct-poll.h-header.patch | 32 + buildroot/package/liblo/liblo.hash | 9 +- buildroot/package/liblo/liblo.mk | 11 +- .../liblog4c-localtime.hash | 1 + buildroot/package/liblogging/liblogging.hash | 5 +- buildroot/package/liblogging/liblogging.mk | 2 +- buildroot/package/libmad/libmad.hash | 1 + .../package/libmatroska/libmatroska.hash | 3 +- buildroot/package/libmatroska/libmatroska.mk | 6 +- ...er-realpath-to-canonicalize_file_nam.patch | 37 - buildroot/package/libmbim/libmbim.hash | 2 +- buildroot/package/libmbim/libmbim.mk | 2 +- buildroot/package/libmbus/libmbus.hash | 1 + buildroot/package/libmcrypt/libmcrypt.hash | 1 + buildroot/package/libmediaart/Config.in | 8 +- buildroot/package/libmediaart/libmediaart.mk | 6 +- .../package/libmemcached/libmemcached.hash | 3 + buildroot/package/libmhash/libmhash.hash | 1 + .../package/libmicrohttpd/libmicrohttpd.hash | 2 +- .../package/libmicrohttpd/libmicrohttpd.mk | 11 +- .../package/libminiupnpc/libminiupnpc.hash | 1 + buildroot/package/libmms/libmms.hash | 3 +- buildroot/package/libmms/libmms.mk | 2 +- buildroot/package/libmng/libmng.hash | 3 + buildroot/package/libmnl/libmnl.hash | 3 + buildroot/package/libmodbus/libmodbus.hash | 1 + buildroot/package/libmodplug/libmodplug.hash | 1 + buildroot/package/libmpd/libmpd.hash | 1 + .../package/libmpdclient/libmpdclient.hash | 5 +- .../package/libmpdclient/libmpdclient.mk | 35 +- buildroot/package/libmpeg2/libmpeg2.hash | 1 + buildroot/package/libnatpmp/libnatpmp.hash | 1 + buildroot/package/libndp/libndp.hash | 3 +- buildroot/package/libndp/libndp.mk | 2 +- .../libnetfilter_acct/libnetfilter_acct.hash | 3 + .../libnetfilter_cthelper.hash | 3 + .../libnetfilter_cttimeout.hash | 3 + .../libnetfilter_log/libnetfilter_log.hash | 3 + buildroot/package/libnfc/libnfc.hash | 1 + .../package/libnfnetlink/libnfnetlink.hash | 3 + ...igure-failure-when-building-without-.patch | 45 - buildroot/package/libnice/Config.in | 7 +- buildroot/package/libnice/libnice.hash | 7 +- buildroot/package/libnice/libnice.mk | 6 +- buildroot/package/libnpth/libnpth.hash | 3 + buildroot/package/libnspr/Config.in | 2 +- buildroot/package/libnspr/libnspr.hash | 4 +- buildroot/package/libnspr/libnspr.mk | 5 +- .../0002-add-zlib-include-dir-variable.patch | 49 + ...-Build-Hacl_Poly1305_64_o_on_Aarch64.patch | 38 + ...d-stringop-truncation-warning-r-fran.patch | 33 + buildroot/package/libnss/Config.in | 4 + buildroot/package/libnss/libnss.hash | 4 +- buildroot/package/libnss/libnss.mk | 50 +- buildroot/package/liboauth/liboauth.hash | 1 + buildroot/package/libogg/libogg.hash | 3 + buildroot/package/libopenssl/libopenssl.hash | 6 +- buildroot/package/libopenssl/libopenssl.mk | 2 +- buildroot/package/libosip2/libosip2.hash | 3 + buildroot/package/libostree/libostree.hash | 2 +- buildroot/package/libostree/libostree.mk | 2 +- .../libpam-radius-auth.hash | 3 + buildroot/package/libpcap/libpcap.hash | 3 + .../package/libpciaccess/libpciaccess.hash | 3 + buildroot/package/libpjsip/libpjsip.hash | 6 +- buildroot/package/libpjsip/libpjsip.mk | 2 +- buildroot/package/libplayer/Config.in | 5 - buildroot/package/libplayer/libplayer.mk | 8 +- ...ix-to-symbol-names-in-version-script.patch | 55 - buildroot/package/libqmi/libqmi.hash | 2 +- buildroot/package/libqmi/libqmi.mk | 2 +- ...-dcraw_common-rename-internal-powf64.patch | 348 +++ ...ild-with-musl-and-older-Linux-kernel.patch | 38 - buildroot/package/libressl/libressl.hash | 4 +- buildroot/package/libressl/libressl.mk | 2 +- ...-build.patch => 0001-fix-musl-build.patch} | 0 .../0001-workaround-blackfin-issue.patch | 24 - ...follow-standard-semantics-for-DESTD.patch} | 0 ...ve.patch => 0003-revert-ln-relative.patch} | 0 ...follow-standard-semantics-for-DESTD.patch} | 0 .../0001-workaround-blackfin-issue.patch | 25 - ...y.patch => 0002-support-static-only.patch} | 0 .../0002-workaround-blackfin-issue.patch | 26 - ...ve.patch => 0003-revert-ln-relative.patch} | 0 .../libsigrokdecode/libsigrokdecode.hash | 3 +- .../libsigrokdecode/libsigrokdecode.mk | 2 +- buildroot/package/libsigsegv/libsigsegv.hash | 5 +- buildroot/package/libsigsegv/libsigsegv.mk | 2 +- buildroot/package/libsoil/libsoil.mk | 2 +- buildroot/package/libss7/Config.in | 1 + ...002-acinclude.m4-add-mbedtls-to-LIBS.patch | 31 + buildroot/package/libtomcrypt/libtomcrypt.mk | 4 +- .../package/libunistring/libunistring.hash | 6 +- .../package/libunistring/libunistring.mk | 10 +- buildroot/package/libupnp/libupnp.hash | 2 +- buildroot/package/libupnp/libupnp.mk | 2 +- buildroot/package/libupnp18/libupnp18.mk | 8 + ...-compilation-with-uclibc-on-arm-m68k.patch | 36 + buildroot/package/libupnpp/libupnpp.hash | 7 +- buildroot/package/libupnpp/libupnpp.mk | 6 +- buildroot/package/liburiparser/Config.in | 2 +- .../package/liburiparser/liburiparser.hash | 6 +- .../package/liburiparser/liburiparser.mk | 4 +- buildroot/package/libusbgx/libusbgx.hash | 4 +- buildroot/package/libusbgx/libusbgx.mk | 2 +- buildroot/package/libuv/libuv.hash | 2 +- buildroot/package/libuv/libuv.mk | 2 +- .../libva-intel-driver.hash | 4 +- .../libva-intel-driver/libva-intel-driver.mk | 2 +- .../package/libva-utils/libva-utils.hash | 4 +- buildroot/package/libva-utils/libva-utils.mk | 2 +- buildroot/package/libva/libva.hash | 4 +- buildroot/package/libva/libva.mk | 2 +- ...on-t-allow-for-more-than-256-channel.patch | 36 - ...orbis_analysis_header_out-Don-t-clea.patch | 56 - buildroot/package/libvorbis/libvorbis.hash | 4 +- buildroot/package/libvorbis/libvorbis.mk | 2 +- buildroot/package/libvpx/Config.in | 2 - buildroot/package/libvpx/libvpx.hash | 4 +- buildroot/package/libvpx/libvpx.mk | 5 +- .../package/libwebsockets/libwebsockets.hash | 3 +- .../package/libwebsockets/libwebsockets.mk | 2 +- buildroot/package/libxslt/libxslt.mk | 6 - buildroot/package/libyaml/libyaml.hash | 1 + buildroot/package/linux-firmware/Config.in | 20 + .../linux-firmware/linux-firmware.hash | 4 + .../package/linux-firmware/linux-firmware.mk | 27 + .../package/linux-headers/Config.in.host | 23 +- .../package/linux-headers/linux-headers.mk | 3 + .../linux-syscall-support.mk | 2 +- buildroot/package/linux-tools/Config.in | 14 +- .../package/linux-tools/linux-tool-perf.mk.in | 12 +- ...type-in-ORC-readMem-client-interface.patch | 37 + buildroot/package/llvm/Config.in | 48 + buildroot/package/llvm/llvm.hash | 3 + buildroot/package/llvm/llvm.mk | 277 +++ buildroot/package/log4cplus/Config.in | 10 +- buildroot/package/log4cplus/log4cplus.hash | 3 +- buildroot/package/log4cplus/log4cplus.mk | 4 +- buildroot/package/lshw/Config.in | 3 + buildroot/package/lshw/lshw.mk | 1 + buildroot/package/lsof/lsof.mk | 2 +- .../package/ltp-testsuite/ltp-testsuite.mk | 10 +- buildroot/package/ltrace/Config.in | 19 +- buildroot/package/lua-ev/Config.in | 1 - buildroot/package/lua/lua.mk | 6 +- buildroot/package/luainterpreter/Config.in | 4 + .../package/luainterpreter/luainterpreter.mk | 2 +- buildroot/package/luarocks/luarocks.hash | 2 +- buildroot/package/luarocks/luarocks.mk | 6 +- ...ilation-on-toolchain-without-prlimit.patch | 98 - ...lxc_monitor-include-missing-stddef.h.patch | 40 + ...with-static-libcap-and-shared-gnutls.patch | 73 + ...legacy-PR_-G-S-ET_NO_NEW_PRIVS-handl.patch | 49 - buildroot/package/lxc/lxc.hash | 2 +- buildroot/package/lxc/lxc.mk | 17 +- ...-t-build-host-tools-with-target-LDFL.patch | 41 + ...rictive-conditions-for-clock_gettime.patch | 58 + ...ib-allow-to-disable-shared-libraries.patch | 59 + buildroot/package/lz4/lz4.hash | 4 +- buildroot/package/lz4/lz4.mk | 21 +- buildroot/package/lzip/lzip.hash | 6 +- buildroot/package/lzip/lzip.mk | 4 +- ...pport-GLIBC-glob-interface-version-2.patch | 31 + buildroot/package/make/make.mk | 4 +- buildroot/package/mariadb/mariadb.hash | 4 +- buildroot/package/mariadb/mariadb.mk | 2 +- ...1-dhm-Fix-typo-in-RFC-5114-constants.patch | 33 - buildroot/package/mbedtls/mbedtls.hash | 6 +- buildroot/package/mbedtls/mbedtls.mk | 2 +- buildroot/package/memcached/memcached.hash | 7 +- buildroot/package/memcached/memcached.mk | 2 +- buildroot/package/menu-cache/menu-cache.hash | 9 +- buildroot/package/menu-cache/menu-cache.mk | 4 +- ...-makes-opengl-an-optional-component.patch} | 56 +- .../package/mesa3d-demos/mesa3d-demos.hash | 7 +- .../package/mesa3d-demos/mesa3d-demos.mk | 5 +- .../package/mesa3d-headers/mesa3d-headers.mk | 3 +- ...detection-with-musl-based-toolchains.patch | 67 - ...ert-order-for-wayland-scanner-check.patch} | 0 ...03-configure.ac-rework-latomic-check.patch | 124 ++ buildroot/package/mesa3d/Config.in | 59 + buildroot/package/mesa3d/mesa3d.hash | 10 +- buildroot/package/mesa3d/mesa3d.mk | 23 +- buildroot/package/meson/meson.hash | 4 +- buildroot/package/meson/meson.mk | 2 +- .../micropython-lib/micropython-lib.hash | 2 +- .../micropython-lib/micropython-lib.mk | 2 +- buildroot/package/micropython/Config.in | 3 - .../package/micropython/micropython.hash | 2 +- buildroot/package/micropython/micropython.mk | 7 +- buildroot/package/minissdpd/minissdpd.hash | 4 +- buildroot/package/minissdpd/minissdpd.mk | 2 +- buildroot/package/mkpasswd/mkpasswd.c | 5 + buildroot/package/mksh/mksh.mk | 8 + buildroot/package/modem-manager/Config.in | 2 +- .../package/modem-manager/S44modem-manager | 7 +- .../package/modem-manager/modem-manager.hash | 2 +- .../package/modem-manager/modem-manager.mk | 3 +- buildroot/package/mongrel2/Config.in | 6 +- buildroot/package/mono/Config.in | 2 +- buildroot/package/motion/motion.mk | 2 +- buildroot/package/mpd-mpc/mpd-mpc.hash | 3 +- buildroot/package/mpd-mpc/mpd-mpc.mk | 29 +- buildroot/package/mpd/Config.in | 20 +- buildroot/package/mpd/S95mpd | 1 - buildroot/package/mpd/mpd.hash | 3 +- buildroot/package/mpd/mpd.mk | 27 +- .../mplayer/0001-disable-install-strip.patch | 23 - ...0002-mpdemux-live555-async-interface.patch | 126 -- .../mplayer/0003-configure-armv8.patch | 43 - .../package/mplayer/0004-configure-zlib.patch | 30 - .../package/mplayer/0005-tremor-ogg.patch | 29 - buildroot/package/mplayer/0006-musl-ldt.patch | 22 - buildroot/package/mplayer/0007-fixmmx.patch | 77 - buildroot/package/mplayer/Config.in | 42 - buildroot/package/mplayer/mplayer.hash | 4 - buildroot/package/mplayer/mplayer.mk | 391 ---- buildroot/package/mpv/mpv.mk | 9 +- buildroot/package/msmtp/msmtp.hash | 3 + buildroot/package/msmtp/msmtp.mk | 19 +- .../0001-Fix-build-with-musl-libc.patch | 62 + .../multicat/0001-Fix-missing-pthread.patch | 20 - .../multicat/0002-Fix-musl-build.patch | 47 - ...Fix-have-clock-nanosleep-with-uclibc.patch | 24 - buildroot/package/multicat/multicat.hash | 7 +- buildroot/package/multicat/multicat.mk | 6 +- .../musl-compat-headers.mk | 2 +- buildroot/package/musl/musl.hash | 5 +- buildroot/package/musl/musl.mk | 2 +- buildroot/package/mutt/mutt.hash | 3 +- buildroot/package/mutt/mutt.mk | 2 +- .../0001-nasmlib-Drop-unused-seg_init.patch | 32 + buildroot/package/nasm/nasm.hash | 2 +- buildroot/package/nasm/nasm.mk | 2 +- buildroot/package/ncmpc/ncmpc.hash | 5 +- buildroot/package/ncmpc/ncmpc.mk | 36 +- .../ncurses/0001-gcc-5.x-MKlib_gen.patch | 5 +- .../ncurses/0002-recognise-uclinux.patch | 29 - buildroot/package/ncurses/Config.in | 12 +- buildroot/package/ncurses/ncurses.hash | 2 +- buildroot/package/ncurses/ncurses.mk | 6 +- buildroot/package/neard/S53neard | 6 +- .../netcat-openbsd/netcat-openbsd.hash | 2 +- .../package/netcat-openbsd/netcat-openbsd.mk | 2 +- buildroot/package/netcat/netcat.mk | 13 + buildroot/package/netplug/S29netplug | 2 - buildroot/package/netsnmp/S59snmpd | 3 - .../network-manager/S45network-manager | 11 +- buildroot/package/nfs-utils/Config.in | 2 +- buildroot/package/nfs-utils/S60nfs | 5 - .../0001-src-fix-build-with-older-glibc.patch | 38 - buildroot/package/nftables/nftables.hash | 6 +- buildroot/package/nftables/nftables.mk | 11 +- ...-AC_CHECK_HEADER-call-to-test-for-li.patch | 30 - buildroot/package/nmap/Config.in | 47 +- buildroot/package/nmap/nmap.hash | 6 +- buildroot/package/nmap/nmap.mk | 60 +- buildroot/package/nmon/nmon.mk | 2 +- buildroot/package/nodejs/nodejs.hash | 7 +- buildroot/package/nodejs/nodejs.mk | 2 +- buildroot/package/ntp/0003-ntpq-fpic.patch | 23 - buildroot/package/ntp/S49ntp | 6 +- buildroot/package/ntp/ntp.hash | 7 +- buildroot/package/ntp/ntp.mk | 9 +- .../package/nvidia-driver/nvidia-driver.mk | 2 +- .../nvidia-tegra23-codecs.mk | 2 +- buildroot/package/openal/openal.hash | 2 +- buildroot/package/openal/openal.mk | 2 +- ...01-Complete-support-for-MIPS-n32-ABI.patch | 116 - ...0001-Makefile.arm-remove-march-flags.patch | 55 + ...0002-Makefile.arm-remove-march-flags.patch | 73 - ...REREQ-checks-to-avoid-breaking-non-g.patch | 73 + ...d-when-__GLIBC_PREREQ-is-not-defined.patch | 45 + buildroot/package/openblas/Config.in | 4 +- buildroot/package/openblas/openblas.hash | 3 +- buildroot/package/openblas/openblas.mk | 2 +- buildroot/package/opencv3/opencv3.mk | 1 + buildroot/package/openldap/openldap.hash | 11 +- buildroot/package/openldap/openldap.mk | 6 +- buildroot/package/openntpd/S49ntp | 1 - buildroot/package/openocd/openocd.mk | 7 +- .../0001-configure-ac-detect-mips-abi.patch | 44 - ... 0001-fix-pam-uclibc-pthreads-clash.patch} | 0 ...ly-set-seccomp-audit-arch-for-mips64.patch | 63 - ...e.patch => 0002-fix-howmany-include.patch} | 0 ...sd-getpagesize.c-include-includes.h-.patch | 35 - buildroot/package/openssh/openssh.hash | 4 +- buildroot/package/openssh/openssh.mk | 12 +- .../opentyrian-data/opentyrian-data.mk | 2 +- buildroot/package/openvpn/S60openvpn | 6 +- buildroot/package/openvpn/openvpn.hash | 3 +- buildroot/package/openvpn/openvpn.mk | 15 +- buildroot/package/opus-tools/opus-tools.hash | 3 + buildroot/package/opus-tools/opus-tools.mk | 2 +- buildroot/package/opus/opus.hash | 3 + buildroot/package/opusfile/opusfile.hash | 3 + buildroot/package/opusfile/opusfile.mk | 4 +- buildroot/package/p7zip/0001-bfin.patch | 19 - ...s-to-be-missing-for-ed-style-patches.patch | 37 + ...mmand-execution-in-ed-style-patches-.patch | 157 ++ buildroot/package/patch/Config.in | 2 + buildroot/package/patch/patch.mk | 4 +- buildroot/package/pciutils/Config.in | 2 - buildroot/package/pcmanfm/pcmanfm.hash | 7 +- buildroot/package/pcmanfm/pcmanfm.mk | 2 +- buildroot/package/pcsc-lite/Config.in | 2 +- buildroot/package/pcsc-lite/pcsc-lite.hash | 3 +- buildroot/package/pcsc-lite/pcsc-lite.mk | 11 +- buildroot/package/perl/perl.hash | 12 +- buildroot/package/perl/perl.mk | 6 +- buildroot/package/php-zmq/Config.in | 6 +- ... 0006-Call-apxs-with-correct-prefix.patch} | 0 .../php/0006-avoid-bfin-gcc-segfault.patch | 17 - ...t_compat.h-add-missing-php.h-include.patch | 71 + ...t-sockets-make-AI_IDN-usage-optional.patch | 55 - ...uild-empty-php_load_zend_extension_c.patch | 62 - buildroot/package/php/Config.in | 8 +- buildroot/package/php/php.hash | 2 +- buildroot/package/php/php.mk | 12 +- ...-with-libc-s-without-cispeed-cospeed.patch | 49 + buildroot/package/picocom/picocom.hash | 2 +- buildroot/package/picocom/picocom.mk | 2 +- buildroot/package/pixiewps/Config.in | 11 + buildroot/package/pixiewps/pixiewps.hash | 3 + buildroot/package/pixiewps/pixiewps.mk | 21 + buildroot/package/pkg-cmake.mk | 14 +- buildroot/package/pkg-download.mk | 175 +- buildroot/package/pkg-generic.mk | 144 +- buildroot/package/pkg-golang.mk | 132 ++ buildroot/package/pkg-kconfig.mk | 32 +- buildroot/package/pkg-luarocks.mk | 2 +- buildroot/package/pkg-virtual.mk | 5 + buildroot/package/pkgconf/pkg-config.in | 2 +- buildroot/package/pngquant/pngquant.mk | 2 +- buildroot/package/poco/Config.in | 21 +- buildroot/package/poco/poco.mk | 5 + buildroot/package/postgresql/Config.in | 1 + buildroot/package/postgresql/pg_config | 5 +- buildroot/package/postgresql/postgresql.mk | 1 + buildroot/package/powerpc-utils/Config.in | 2 +- buildroot/package/powertop/Config.in | 2 - .../0001-proc-sig-fix-build-for-sparc.patch | 43 + .../package/procps-ng/0001-remove-index.patch | 16 - ...02-use-pkgconfig-for-ncursesw-cflags.patch | 57 - ...-include-dlfcn.h-only-when-necessary.patch | 32 - buildroot/package/procps-ng/procps-ng.hash | 9 +- buildroot/package/procps-ng/procps-ng.mk | 9 +- buildroot/package/proftpd/S50proftpd | 4 +- .../package/prosody/0001-enable-syslog.patch | 25 + .../package/prosody/0002-add-pidfile.patch | 26 + buildroot/package/prosody/Config.in | 9 +- buildroot/package/prosody/S50prosody | 6 +- buildroot/package/prosody/prosody.cfg.lua | 184 -- buildroot/package/prosody/prosody.hash | 11 +- buildroot/package/prosody/prosody.mk | 32 +- buildroot/package/ptpd2/ptpd2.mk | 6 - ...nly-define-memfd_create-if-not-alrea.patch | 64 + buildroot/package/pulseaudio/pulseaudio.mk | 3 + .../Config.in | 7 + .../python-backports-ssl-match-hostname.hash | 4 + .../python-backports-ssl-match-hostname.mk | 14 + .../package/python-cached-property/Config.in | 6 + .../python-cached-property.hash | 4 + .../python-cached-property.mk | 14 + .../package/python-cython/Config.in.host | 7 + .../package/python-cython/python-cython.hash | 6 + .../package/python-cython/python-cython.mk | 14 + buildroot/package/python-daemonize/Config.in | 8 + .../python-daemonize/python-daemonize.hash | 3 + .../python-daemonize/python-daemonize.mk | 14 + .../python-decorator/python-decorator.mk | 1 + .../package/python-docker-pycreds/Config.in | 7 + .../python-docker-pycreds.hash | 4 + .../python-docker-pycreds.mk | 14 + .../0001-setup.py-make-pip-optional.patch | 50 + buildroot/package/python-docker/Config.in | 15 + .../package/python-docker/python-docker.hash | 4 + .../package/python-docker/python-docker.mk | 14 + buildroot/package/python-dockerpty/Config.in | 7 + .../python-dockerpty/python-dockerpty.hash | 4 + .../python-dockerpty/python-dockerpty.mk | 14 + .../package/python-flask-sqlalchemy/Config.in | 9 + .../python-flask-sqlalchemy.hash | 4 + .../python-flask-sqlalchemy.mk | 14 + .../package/python-functools32/Config.in | 8 + .../python-functools32.hash | 4 + .../python-functools32/python-functools32.mk | 14 + buildroot/package/python-influxdb/Config.in | 10 + .../python-influxdb/python-influxdb.hash | 5 + .../python-influxdb/python-influxdb.mk | 14 + buildroot/package/python-jsonmodels/Config.in | 9 + .../python-jsonmodels/python-jsonmodels.hash | 4 + .../python-jsonmodels/python-jsonmodels.mk | 14 + buildroot/package/python-jsonschema/Config.in | 1 + buildroot/package/python-libusb1/Config.in | 11 + .../python-libusb1/python-libusb1.hash | 4 + .../package/python-libusb1/python-libusb1.mk | 15 + buildroot/package/python-networkx/Config.in | 9 + .../python-networkx/python-networkx.hash | 4 + .../python-networkx/python-networkx.mk | 17 + buildroot/package/python-psycopg2/Config.in | 22 + .../python-psycopg2/python-psycopg2.hash | 4 + .../python-psycopg2/python-psycopg2.mk | 20 + buildroot/package/python-pymodbus/Config.in | 7 + .../python-pymodbus/python-pymodbus.hash | 3 + .../python-pymodbus/python-pymodbus.mk | 13 + buildroot/package/python-pytz/python-pytz.mk | 2 +- buildroot/package/python-pyzmq/Config.in | 6 +- .../package/python-raven/python-raven.hash | 6 +- .../package/python-raven/python-raven.mk | 4 +- .../package/python-remi/python-remi.hash | 2 +- buildroot/package/python-remi/python-remi.mk | 2 +- buildroot/package/python-requests/Config.in | 1 + .../python-schedule/python-schedule.hash | 4 +- .../python-schedule/python-schedule.mk | 4 +- .../python-simplegeneric.mk | 2 +- buildroot/package/python-sqlalchemy/Config.in | 13 + .../python-sqlalchemy/python-sqlalchemy.hash | 4 + .../python-sqlalchemy/python-sqlalchemy.mk | 14 + .../package/python-subprocess32/Config.in | 13 + .../python-subprocess32.hash | 4 + .../python-subprocess32.mk | 14 + buildroot/package/python-texttable/Config.in | 6 + .../python-texttable/python-texttable.hash | 4 + .../python-texttable/python-texttable.mk | 14 + buildroot/package/python-visitor/Config.in | 6 + .../python-visitor/python-visitor.hash | 4 + .../package/python-visitor/python-visitor.mk | 14 + ...workaround-to-support-uClibc-library.patch | 43 + buildroot/package/python-watchdog/Config.in | 7 +- buildroot/package/python-webpy/Config.in | 1 + .../package/python-webpy/python-webpy.hash | 4 +- .../package/python-webpy/python-webpy.mk | 4 +- .../package/python-websocket-client/Config.in | 9 + .../python-websocket-client.hash | 4 + .../python-websocket-client.mk | 14 + ...ehavior-of-recv-in-the-CLOSING-state.patch | 261 +++ buildroot/package/python-xlrd/Config.in.host | 7 + buildroot/package/python-xlrd/python-xlrd.mk | 1 + buildroot/package/python-yieldfrom/Config.in | 8 + .../python-yieldfrom/python-yieldfrom.hash | 4 + .../python-yieldfrom/python-yieldfrom.mk | 15 + .../python/0035-GCC8-alignment-fix.patch | 65 + .../qemu/0002-memfd-fix-configure-test.patch | 58 + buildroot/package/qemu/Config.in.host | 42 +- buildroot/package/qemu/qemu.mk | 236 +- buildroot/package/qt5/Config.in | 4 +- buildroot/package/qt5/qt5.mk | 6 +- buildroot/package/qt5/qt53d/qt53d.hash | 4 +- buildroot/package/qt5/qt53d/qt53d.mk | 12 +- ...tbase-Fix-build-error-when-using-EGL.patch | 37 + ...tbase-Fix-build-error-when-using-EGL.patch | 37 + buildroot/package/qt5/qt5base/Config.in | 1 + .../qt5/qt5base/{qmake.conf => qmake.conf.in} | 2 + buildroot/package/qt5/qt5base/qt5base.hash | 4 +- buildroot/package/qt5/qt5base/qt5base.mk | 22 +- .../package/qt5/qt5canvas3d/qt5canvas3d.hash | 4 +- .../package/qt5/qt5canvas3d/qt5canvas3d.mk | 2 +- .../package/qt5/qt5charts/qt5charts.hash | 4 +- buildroot/package/qt5/qt5charts/qt5charts.mk | 2 +- .../qt5/qt5connectivity/qt5connectivity.hash | 4 +- .../qt5/qt5connectivity/qt5connectivity.mk | 2 +- .../qt5/qt5declarative/qt5declarative.hash | 4 +- .../qt5/qt5declarative/qt5declarative.mk | 2 +- .../package/qt5/qt5enginio/qt5enginio.mk | 2 +- .../qt5graphicaleffects.hash | 4 +- .../qt5graphicaleffects.mk | 2 +- .../qt5/qt5imageformats/qt5imageformats.hash | 4 +- .../qt5/qt5imageformats/qt5imageformats.mk | 2 +- .../package/qt5/qt5location/qt5location.hash | 7 +- .../package/qt5/qt5location/qt5location.mk | 4 +- .../qt5/qt5multimedia/qt5multimedia.hash | 4 +- .../qt5/qt5multimedia/qt5multimedia.mk | 17 +- .../qt5quickcontrols/qt5quickcontrols.hash | 7 +- .../qt5/qt5quickcontrols/qt5quickcontrols.mk | 4 +- .../qt5quickcontrols2/qt5quickcontrols2.hash | 4 +- .../qt5quickcontrols2/qt5quickcontrols2.mk | 2 +- .../package/qt5/qt5script/qt5script.hash | 10 +- buildroot/package/qt5/qt5script/qt5script.mk | 20 +- buildroot/package/qt5/qt5scxml/qt5scxml.hash | 4 +- buildroot/package/qt5/qt5scxml/qt5scxml.mk | 7 +- .../package/qt5/qt5sensors/qt5sensors.hash | 4 +- .../package/qt5/qt5sensors/qt5sensors.mk | 2 +- .../qt5/qt5serialbus/qt5serialbus.hash | 4 +- .../package/qt5/qt5serialbus/qt5serialbus.mk | 2 +- .../qt5/qt5serialport/qt5serialport.hash | 7 +- .../qt5/qt5serialport/qt5serialport.mk | 4 +- buildroot/package/qt5/qt5svg/qt5svg.hash | 4 +- buildroot/package/qt5/qt5svg/qt5svg.mk | 2 +- buildroot/package/qt5/qt5tools/qt5tools.hash | 4 +- buildroot/package/qt5/qt5tools/qt5tools.mk | 2 +- .../qt5virtualkeyboard.hash | 4 +- .../qt5virtualkeyboard/qt5virtualkeyboard.mk | 2 +- ...Fix-compilation-for-Renesas-R-Car-M3.patch | 44 + .../package/qt5/qt5wayland/qt5wayland.hash | 4 +- .../package/qt5/qt5wayland/qt5wayland.mk | 9 +- .../qt5/qt5webchannel/qt5webchannel.hash | 4 +- .../qt5/qt5webchannel/qt5webchannel.mk | 2 +- buildroot/package/qt5/qt5webengine/Config.in | 7 + .../qt5/qt5webengine/host-pkg-config.in | 6 + .../qt5/qt5webengine/qt5webengine.hash | 4 +- .../package/qt5/qt5webengine/qt5webengine.mk | 15 +- .../qt5webkit-examples/qt5webkit-examples.mk | 2 +- ...-Detect-32-bits-armv8-a-architecture.patch | 48 + ...-Detect-32-bits-armv8-a-architecture.patch | 48 + buildroot/package/qt5/qt5webkit/qt5webkit.mk | 9 +- .../qt5/qt5websockets/qt5websockets.hash | 4 +- .../qt5/qt5websockets/qt5websockets.mk | 3 +- .../qt5/qt5x11extras/qt5x11extras.hash | 4 +- .../package/qt5/qt5x11extras/qt5x11extras.mk | 2 +- .../qt5/qt5xmlpatterns/qt5xmlpatterns.hash | 6 +- .../qt5/qt5xmlpatterns/qt5xmlpatterns.mk | 4 +- buildroot/package/qt5cinex/qt5cinex.mk | 2 +- ...sing-__P-definition-for-musl-compile.patch | 36 + buildroot/package/quotatool/Config.in | 7 + buildroot/package/quotatool/quotatool.hash | 5 + buildroot/package/quotatool/quotatool.mk | 17 + buildroot/package/rapidjson/rapidjson.hash | 1 + buildroot/package/rapidxml/rapidxml.mk | 2 +- ...mmc-add-workaround-for-older-kernels.patch | 33 + ...dline.pc.in-fix-Requires.private-val.patch | 62 + buildroot/package/readline/readline.mk | 17 +- buildroot/package/reaver/Config.in | 9 + buildroot/package/reaver/reaver.hash | 3 + buildroot/package/reaver/reaver.mk | 23 + buildroot/package/rhash/rhash.hash | 9 +- buildroot/package/rhash/rhash.mk | 2 +- .../riemann-c-client/riemann-c-client.mk | 5 - buildroot/package/rpi-bt-firmware/Config.in | 5 +- .../rpi-bt-firmware/rpi-bt-firmware.hash | 3 +- .../rpi-bt-firmware/rpi-bt-firmware.mk | 15 +- .../package/rpi-firmware/rpi-firmware.mk | 7 +- buildroot/package/rpi-wifi-firmware/Config.in | 11 +- .../rpi-wifi-firmware/rpi-wifi-firmware.hash | 3 +- .../rpi-wifi-firmware/rpi-wifi-firmware.mk | 16 +- buildroot/package/ruby/ruby.mk | 7 - buildroot/package/runc/runc.hash | 2 +- buildroot/package/runc/runc.mk | 43 +- buildroot/package/rust-bin/rust-bin.hash | 60 +- buildroot/package/rust-bin/rust-bin.mk | 8 +- buildroot/package/rust/rust.hash | 4 +- buildroot/package/rust/rust.mk | 2 +- buildroot/package/rygel/rygel.hash | 4 +- buildroot/package/rygel/rygel.mk | 2 +- .../package/s6-linux-init/s6-linux-init.hash | 4 +- .../package/s6-linux-init/s6-linux-init.mk | 2 +- buildroot/package/s6-rc/s6-rc.hash | 2 +- buildroot/package/s6-rc/s6-rc.mk | 2 +- buildroot/package/s6/s6.hash | 2 +- buildroot/package/s6/s6.mk | 2 +- .../0001-Add-disable-doc-option.patch | 59 + ...Fix-install-when-HAVE_WCHAR-is-unset.patch | 50 - buildroot/package/safeclib/safeclib.hash | 2 +- buildroot/package/safeclib/safeclib.mk | 2 +- buildroot/package/sam-ba/sam-ba.mk | 11 +- ...01-libreplace-disable-libbsd-support.patch | 6 +- .../0004-libgpo-fix-build-without-ads.patch | 49 + buildroot/package/samba4/samba4-cache.txt | 1 + buildroot/package/samba4/samba4.hash | 5 +- buildroot/package/samba4/samba4.mk | 2 +- buildroot/package/screen/screen.mk | 9 +- .../0001-make-cross-compiler-friendly.patch | 167 -- buildroot/package/sdl2/sdl2.hash | 6 +- buildroot/package/sdl2/sdl2.mk | 2 +- buildroot/package/sdl2_image/sdl2_image.hash | 3 +- buildroot/package/sdl2_image/sdl2_image.mk | 2 +- buildroot/package/ser2net/Config.in | 2 +- buildroot/package/ser2net/ser2net.hash | 6 +- buildroot/package/ser2net/ser2net.mk | 2 +- buildroot/package/setools/Config.in | 2 + buildroot/package/setools/setools.mk | 16 +- buildroot/package/sg3_utils/Config.in | 2 - ...0002-No-runtime-tests-for-type-sizes.patch | 40 +- buildroot/package/skalibs/skalibs.hash | 2 +- buildroot/package/skalibs/skalibs.mk | 2 +- .../skeleton-init-common.mk | 7 + .../skeleton-init-systemd.mk | 6 - buildroot/package/skeleton/skeleton.mk | 12 + .../0001-Fix-building-against-LibreSSL.patch | 78 + buildroot/package/sngrep/sngrep.hash | 6 +- buildroot/package/sngrep/sngrep.mk | 5 +- ...in-Avoid-path-poisoning-with-libpcap.patch | 35 + ...ow-to-override-the-INADDR_NONE-check.patch | 44 + ...vert-AC_RUN_IFELSE-to-AC_CHECK_MEMBE.patch | 239 ++ ...vert-AC_RUN_IFELSE-to-AC_COMPILE_IFE.patch | 48 + buildroot/package/snort/0005-fix-sparc.patch | 28 + buildroot/package/snort/Config.in | 26 + buildroot/package/snort/snort.hash | 6 + buildroot/package/snort/snort.mk | 34 + buildroot/package/speex/speex.mk | 4 - buildroot/package/spidev_test/spidev_test.mk | 2 +- buildroot/package/sqlite/Config.in | 7 + buildroot/package/sqlite/sqlite.hash | 4 +- buildroot/package/sqlite/sqlite.mk | 13 +- buildroot/package/squashfs/0001-musl.patch | 71 - buildroot/package/squashfs/Config.in | 6 + buildroot/package/squashfs/squashfs.hash | 5 +- buildroot/package/squashfs/squashfs.mk | 14 +- buildroot/package/squid/S97squid | 1 - buildroot/package/squid/squid.mk | 8 +- .../package/strace/0001-m68k-fix-build.patch | 97 + buildroot/package/strace/Config.in | 3 + buildroot/package/strace/strace.hash | 7 +- buildroot/package/strace/strace.mk | 12 +- buildroot/package/sudo/sudo.hash | 4 +- buildroot/package/sudo/sudo.mk | 4 +- .../sunxi-mali-mainline-driver/Config.in | 25 + .../sunxi-mali-mainline-driver.mk | 34 + .../package/sunxi-mali-mainline/Config.in | 40 + buildroot/package/sunxi-mali-mainline/egl.pc | 12 + .../package/sunxi-mali-mainline/glesv2.pc | 12 + .../sunxi-mali-mainline.mk | 34 + ...pat.h-introduce-compatibility-header.patch | 87 - ...build-if-DOWNLOAD-is-set-but-no-JSON.patch | 107 - buildroot/package/swupdate/swupdate.config | 25 +- buildroot/package/swupdate/swupdate.hash | 2 +- buildroot/package/swupdate/swupdate.mk | 8 +- buildroot/package/syslog-ng/syslog-ng.conf | 2 +- buildroot/package/syslog-ng/syslog-ng.mk | 2 + ...-include-libmount-h-in-a-header-file.patch | 75 + .../0005-basic-macros-rename-noreturn.patch | 201 ++ buildroot/package/systemd/Config.in | 3 + buildroot/package/systemd/systemd.mk | 14 + buildroot/package/sysvinit/inittab | 6 +- buildroot/package/tar/tar.mk | 7 +- ...add-install-target-to-the-CMakeLists.patch | 48 - ...ve-explicit-uses-of-__ptrace_request.patch | 103 - ...nonicalize_file_name-for-all-c-libs-.patch | 46 - buildroot/package/tcf-agent/Config.in | 5 +- buildroot/package/tcf-agent/tcf-agent.hash | 2 +- buildroot/package/tcf-agent/tcf-agent.mk | 2 +- buildroot/package/tcl/tcl.hash | 1 + buildroot/package/tcl/tcl.mk | 2 +- buildroot/package/tcllib/tcllib.hash | 1 + buildroot/package/tcllib/tcllib.mk | 2 +- .../package/tesseract-ocr/tesseract-ocr.mk | 2 +- buildroot/package/ti-cgt-pru/ti-cgt-pru.mk | 4 +- buildroot/package/ti-gfx/ti-gfx.mk | 4 +- buildroot/package/ti-sgx-km/Config.in | 10 +- buildroot/package/ti-sgx-km/ti-sgx-km.mk | 8 +- buildroot/package/time/time.hash | 2 +- buildroot/package/time/time.mk | 10 +- buildroot/package/tini/tini.hash | 2 +- buildroot/package/tini/tini.mk | 2 +- buildroot/package/tinycbor/tinycbor.hash | 2 +- buildroot/package/tinycbor/tinycbor.mk | 10 +- buildroot/package/tinyhttpd/S85tinyhttpd | 1 - buildroot/package/tk/Config.in | 18 + buildroot/package/tk/tk.hash | 3 + buildroot/package/tk/tk.mk | 31 + buildroot/package/tmux/tmux.mk | 8 + buildroot/package/tor/0001-openssl-libz.patch | 108 +- buildroot/package/tor/tor.hash | 2 +- buildroot/package/tor/tor.mk | 2 +- buildroot/package/tovid/Config.in | 19 +- buildroot/package/tovid/tovid.hash | 3 +- buildroot/package/tovid/tovid.mk | 4 +- buildroot/package/tpm2-abrmd/Config.in | 28 + buildroot/package/tpm2-abrmd/S80tpm2-abrmd | 74 + buildroot/package/tpm2-abrmd/tpm2-abrmd.hash | 3 + buildroot/package/tpm2-abrmd/tpm2-abrmd.mk | 36 + .../0001-Fix-build-with-LibreSSL.patch | 64 + ...-type-may-be-used-uninitialized-warn.patch | 36 + buildroot/package/tpm2-tools/Config.in | 26 + buildroot/package/tpm2-tools/tpm2-tools.hash | 3 + buildroot/package/tpm2-tools/tpm2-tools.mk | 17 + ....cpp-add-missing-inclusion-of-sys-se.patch | 33 + buildroot/package/tpm2-tss/Config.in | 35 + buildroot/package/tpm2-tss/tpm2-tss.hash | 3 + buildroot/package/tpm2-tss/tpm2-tss.mk | 18 + buildroot/package/transmission/Config.in | 5 - .../package/transmission/S92transmission | 3 - .../package/transmission/transmission.mk | 12 +- buildroot/package/tremor/tremor.hash | 3 + buildroot/package/tremor/tremor.mk | 6 +- .../package/triggerhappy/S10triggerhappy | 6 +- ...0002-memfd-fix-build-with-glibc-2.27.patch | 87 + buildroot/package/ts4900-fpga/ts4900-fpga.mk | 2 +- buildroot/package/tslib/tslib.hash | 4 +- buildroot/package/tslib/tslib.mk | 2 +- buildroot/package/tvheadend/Config.in | 2 +- buildroot/package/tvheadend/S99tvheadend | 5 +- .../package/uboot-tools/uboot-tools.hash | 2 +- buildroot/package/uboot-tools/uboot-tools.mk | 2 +- ...6-fix-build-with-musl-and-older-kenr.patch | 45 + ...ldconfig-add-glibc-compatibility-fix.patch | 54 + ...ock_nanosleep-independent-of-thread-.patch | 34 + buildroot/package/uclibc/Config.in | 3 +- buildroot/package/uclibc/uclibc.hash | 2 +- buildroot/package/uclibc/uclibc.mk | 12 +- ...tsetup.c-do-not-include-bits-types.h.patch | 32 + ...ect-readline-via-pkg-config-when-pos.patch | 60 + buildroot/package/udftools/Config.in | 12 + buildroot/package/udftools/udftools.hash | 3 + buildroot/package/udftools/udftools.mk | 14 + buildroot/package/unixodbc/unixodbc.hash | 8 +- buildroot/package/unixodbc/unixodbc.mk | 2 +- buildroot/package/unscd/unscd.mk | 2 +- buildroot/package/upmpdcli/S99upmpdcli | 6 +- buildroot/package/upmpdcli/upmpdcli.hash | 7 +- buildroot/package/upmpdcli/upmpdcli.mk | 2 +- buildroot/package/urg/urg.mk | 2 +- .../usb_modeswitch/usb_modeswitch.hash | 3 +- .../package/usb_modeswitch/usb_modeswitch.mk | 3 +- .../usb_modeswitch_data.hash | 3 +- .../usb_modeswitch_data.mk | 2 +- .../0001-docs-add-ISC-licence.patch | 38 - buildroot/package/util-linux/util-linux.hash | 4 +- buildroot/package/util-linux/util-linux.mk | 9 +- .../valgrind/0004-Fixes-for-musl-libc.patch | 99 - buildroot/package/valgrind/Config.in | 1 + buildroot/package/valgrind/valgrind.hash | 6 +- buildroot/package/valgrind/valgrind.mk | 7 +- buildroot/package/vde2/vde2.hash | 3 + ...ding-of-statically-linked-vlc-binary.patch | 40 + buildroot/package/vlc/0001-vlc-static.patch | 24 - ...d-check-for-libgcrypt-config-program.patch | 9 +- ...3-automake-add-subdir-objects-option.patch | 18 +- ...it-function-declaration-compile-fla.patch} | 20 +- ...e-name-of-the-vorbis-and-ogg-librar.patch} | 17 +- ...me-X11-is-available-when-Qt5-is-used.patch | 28 + buildroot/package/vlc/0006-qt-x11.patch | 16 - ...on-t-assume-strerror_l-is-available.patch} | 30 +- ...-and-add-required-realtime-library-.patch} | 8 +- ...atch => 0009-Changes-for-ffmpeg-3.0.patch} | 178 +- ...0-Fix-build-when-using-C99-and-C-11.patch} | 13 +- ...ch => 0011-compat-fix-static_assert.patch} | 18 +- ...-Fix-build-with-libupnp-above-1.6.23.patch | 4 +- ...-build-support-and-fix-10bit-support.patch | 213 ++ buildroot/package/vte/Config.in | 33 + buildroot/package/vte/vte.hash | 3 + buildroot/package/vte/vte.mk | 15 + buildroot/package/waf/waf.mk | 2 +- ...1-issue-32-no-multiple-format-chunks.patch | 64 + ...e-size-of-unknown-chunks-before-mall.patch | 75 + .../wayland-protocols/wayland-protocols.hash | 8 +- .../wayland-protocols/wayland-protocols.mk | 2 +- ...tures-with-non-empty-__USER_LABEL_PR.patch | 57 - ...nfigure-add-option-to-disable-tests.patch} | 39 +- buildroot/package/wayland/wayland.hash | 10 +- buildroot/package/wayland/wayland.mk | 2 +- ...-shared-struct-timespec-is-in-time.h.patch | 44 - buildroot/package/weston/weston.hash | 10 +- buildroot/package/weston/weston.mk | 2 +- buildroot/package/wget/wget.hash | 5 +- buildroot/package/wget/wget.mk | 2 +- buildroot/package/whetstone/whetstone.mk | 2 +- .../wilc1000-firmware/wilc1000-firmware.mk | 2 +- buildroot/package/wine/Config.in | 19 +- buildroot/package/wine/wine.mk | 8 +- buildroot/package/wireguard/wireguard.hash | 4 +- buildroot/package/wireguard/wireguard.mk | 2 +- buildroot/package/wireshark/wireshark.hash | 4 +- buildroot/package/wireshark/wireshark.mk | 2 +- buildroot/package/wmctrl/wmctrl.mk | 4 + ...tiple-libraries-being-returned-for-B.patch | 80 + buildroot/package/woff2/Config.in | 9 + buildroot/package/woff2/woff2.hash | 5 + buildroot/package/woff2/woff2.mk | 30 + ...-the-creation-of-dummy-fips.h-header.patch | 33 + buildroot/package/wolfssl/wolfssl.hash | 2 +- buildroot/package/wolfssl/wolfssl.mk | 2 +- buildroot/package/x11r7/libxcb/libxcb.hash | 9 +- buildroot/package/x11r7/libxcb/libxcb.mk | 2 +- .../x11r7/xapp_appres/xapp_appres.hash | 9 +- .../package/x11r7/xapp_appres/xapp_appres.mk | 2 +- .../x11r7/xapp_editres/xapp_editres.hash | 9 +- .../x11r7/xapp_editres/xapp_editres.mk | 2 +- .../x11r7/xapp_iceauth/xapp_iceauth.hash | 9 +- .../x11r7/xapp_iceauth/xapp_iceauth.mk | 2 +- .../package/x11r7/xapp_ico/xapp_ico.hash | 9 +- buildroot/package/x11r7/xapp_ico/xapp_ico.mk | 2 +- .../x11r7/xapp_listres/xapp_listres.hash | 9 +- .../x11r7/xapp_listres/xapp_listres.mk | 2 +- .../xapp_mkfontscale/xapp_mkfontscale.hash | 9 +- .../xapp_mkfontscale/xapp_mkfontscale.mk | 2 +- .../x11r7/xapp_oclock/xapp_oclock.hash | 9 +- .../package/x11r7/xapp_oclock/xapp_oclock.mk | 2 +- .../package/x11r7/xapp_twm/xapp_twm.hash | 9 +- buildroot/package/x11r7/xapp_twm/xapp_twm.mk | 2 +- .../x11r7/xapp_viewres/xapp_viewres.hash | 9 +- .../x11r7/xapp_viewres/xapp_viewres.mk | 2 +- .../xapp_xbacklight/xapp_xbacklight.hash | 9 +- .../x11r7/xapp_xbacklight/xapp_xbacklight.mk | 2 +- .../x11r7/xapp_xdriinfo/xapp_xdriinfo.hash | 9 +- .../x11r7/xapp_xdriinfo/xapp_xdriinfo.mk | 2 +- .../package/x11r7/xapp_xeyes/xapp_xeyes.hash | 9 +- .../package/x11r7/xapp_xeyes/xapp_xeyes.mk | 2 +- .../x11r7/xapp_xfontsel/xapp_xfontsel.hash | 9 +- .../x11r7/xapp_xfontsel/xapp_xfontsel.mk | 2 +- .../package/x11r7/xapp_xinit/xapp_xinit.hash | 9 +- .../package/x11r7/xapp_xinit/xapp_xinit.mk | 2 +- .../x11r7/xapp_xkbcomp/xapp_xkbcomp.hash | 12 +- .../x11r7/xapp_xkbcomp/xapp_xkbcomp.mk | 2 +- .../package/x11r7/xapp_xkill/xapp_xkill.hash | 9 +- .../package/x11r7/xapp_xkill/xapp_xkill.mk | 2 +- .../package/x11r7/xapp_xload/xapp_xload.hash | 9 +- .../package/x11r7/xapp_xload/xapp_xload.mk | 2 +- .../xapp_xlsclients/xapp_xlsclients.hash | 9 +- .../x11r7/xapp_xlsclients/xapp_xlsclients.mk | 2 +- .../x11r7/xapp_xlsfonts/xapp_xlsfonts.hash | 9 +- .../x11r7/xapp_xlsfonts/xapp_xlsfonts.mk | 2 +- .../x11r7/xapp_xmessage/xapp_xmessage.hash | 9 +- .../x11r7/xapp_xmessage/xapp_xmessage.mk | 2 +- .../package/x11r7/xapp_xpr/xapp_xpr.hash | 9 +- buildroot/package/x11r7/xapp_xpr/xapp_xpr.mk | 2 +- .../package/x11r7/xapp_xprop/xapp_xprop.hash | 9 +- .../package/x11r7/xapp_xprop/xapp_xprop.mk | 2 +- .../package/x11r7/xapp_xrdb/xapp_xrdb.hash | 9 +- .../package/x11r7/xapp_xrdb/xapp_xrdb.mk | 2 +- .../x11r7/xapp_xrefresh/xapp_xrefresh.hash | 9 +- .../x11r7/xapp_xrefresh/xapp_xrefresh.mk | 2 +- .../package/x11r7/xapp_xset/xapp_xset.hash | 9 +- .../package/x11r7/xapp_xset/xapp_xset.mk | 2 +- .../x11r7/xapp_xsetroot/xapp_xsetroot.hash | 9 +- .../x11r7/xapp_xsetroot/xapp_xsetroot.mk | 2 +- .../package/x11r7/xapp_xsm/xapp_xsm.hash | 9 +- buildroot/package/x11r7/xapp_xsm/xapp_xsm.mk | 2 +- .../package/x11r7/xapp_xwd/xapp_xwd.hash | 9 +- buildroot/package/x11r7/xapp_xwd/xapp_xwd.mk | 2 +- .../x11r7/xapp_xwininfo/xapp_xwininfo.hash | 9 +- .../x11r7/xapp_xwininfo/xapp_xwininfo.mk | 2 +- .../package/x11r7/xapp_xwud/xapp_xwud.hash | 9 +- .../package/x11r7/xapp_xwud/xapp_xwud.mk | 2 +- .../0001-Make-whitespace-use-consistent.patch | 212 -- ...-is-a-function-and-needs-parentheses.patch | 70 - .../package/x11r7/xcb-proto/xcb-proto.hash | 9 +- .../package/x11r7/xcb-proto/xcb-proto.mk | 2 +- .../package/x11r7/xcb-util/xcb-util.hash | 3 +- buildroot/package/x11r7/xcb-util/xcb-util.mk | 6 +- .../x11r7/xdata_xbitmaps/xdata_xbitmaps.hash | 9 +- .../x11r7/xdata_xbitmaps/xdata_xbitmaps.mk | 2 +- .../xdata_xcursor-themes.hash | 9 +- .../xdata_xcursor-themes.mk | 2 +- .../xdriver_xf86-input-libinput.hash | 12 +- .../xdriver_xf86-input-libinput.mk | 2 +- .../xdriver_xf86-video-amdgpu.hash | 12 +- .../xdriver_xf86-video-amdgpu.mk | 2 +- .../xdriver_xf86-video-ati.hash | 12 +- .../xdriver_xf86-video-ati.mk | 2 +- .../xdriver_xf86-video-intel.hash | 3 + .../xdriver_xf86-video-intel.mk | 2 +- .../xdriver_xf86-video-vesa.hash | 9 +- .../xdriver_xf86-video-vesa.mk | 2 +- .../xkeyboard-config/xkeyboard-config.hash | 11 +- .../xkeyboard-config/xkeyboard-config.mk | 5 +- .../xlib_libxshmfence/xlib_libxshmfence.hash | 9 +- .../xlib_libxshmfence/xlib_libxshmfence.mk | 5 +- .../package/x11r7/xserver_xorg-server/S40xorg | 46 + .../xserver_xorg-server.mk | 5 + ...ection-when-using-without-crypt-cryp.patch | 27 - buildroot/package/x11vnc/x11vnc.hash | 2 +- buildroot/package/x11vnc/x11vnc.mk | 2 +- buildroot/package/x264/x264.hash | 3 +- buildroot/package/x264/x264.mk | 2 +- buildroot/package/x265/x265.hash | 2 +- buildroot/package/x265/x265.mk | 4 +- .../xen/0003-memfd-fix-configure-test.patch | 62 + buildroot/package/xen/xen.mk | 4 +- buildroot/package/xenomai/Config.in | 2 +- .../xerces/0001-fix-CVE-2017-12627.patch | 22 + ...-do-dynamic-linking-of-libtool-libra.patch | 31 +- ...orkqueue-add-missing-pthreads-header.patch | 41 + ...4-xfs_scrub-add-missing-paths-header.patch | 37 + ...-fix-cross-compile-with-libunistring.patch | 37 + ...-fix-build-with-older-kernel-headers.patch | 63 + buildroot/package/xfsprogs/xfsprogs.hash | 2 +- buildroot/package/xfsprogs/xfsprogs.mk | 6 +- buildroot/package/xterm/xterm.mk | 3 + .../xutil_util-macros/xutil_util-macros.hash | 9 +- .../xutil_util-macros/xutil_util-macros.mk | 2 +- buildroot/package/xz/xz.mk | 5 + buildroot/package/ympd/ympd.hash | 3 +- buildroot/package/ympd/ympd.mk | 15 +- ...make-kernel-specific-flags-cacheable.patch | 199 -- ...-serach-for-dladdr-only-on-libunwind.patch | 45 + ...nclude.m4-check-if-latomic-is-needed.patch | 70 + ...-pkg-config-files-for-static-linking.patch | 29 - buildroot/package/zeromq/Config.in | 6 +- buildroot/package/zeromq/zeromq.hash | 9 +- buildroot/package/zeromq/zeromq.mk | 13 +- buildroot/package/zmqpp/Config.in | 6 +- buildroot/package/zmqpp/zmqpp.mk | 11 +- ...Add-time.h-includes-where-appropiate.patch | 194 -- .../package/znc/0002-csocket-timeh.patch | 19 - buildroot/package/znc/Config.in | 7 +- buildroot/package/znc/znc.hash | 3 +- buildroot/package/znc/znc.mk | 7 +- buildroot/package/zsh/Config.in | 1 - buildroot/package/zsh/zsh.hash | 6 +- buildroot/package/zsh/zsh.mk | 11 +- ...stall-target-into-pc-static-shared-a.patch | 51 + ...ate-include-directory-before-headers.patch | 45 + buildroot/package/zstd/zstd.mk | 36 +- .../package/zynq-boot-bin/zynq-boot-bin.mk | 2 +- buildroot/package/zyre/Config.in | 6 +- buildroot/package/zyre/zyre.hash | 2 +- buildroot/package/zyre/zyre.mk | 2 +- .../autobuild/br-aarch64-glibc.config | 2 +- .../autobuild/br-arcle-hs38.config | 2 +- .../autobuild/br-arm-basic.config | 4 +- .../autobuild/br-arm-cortex-a9-glibc.config | 4 +- .../autobuild/br-arm-cortex-a9-musl.config | 4 +- .../autobuild/br-arm-cortex-m4-full.config | 4 +- .../autobuild/br-arm-full-nothread.config | 4 +- .../autobuild/br-arm-full-static.config | 4 +- .../autobuild/br-arm-full.config | 4 +- .../autobuild/br-arm-internal-glibc.config | 4 + .../autobuild/br-arm-internal-musl.config | 4 + .../autobuild/br-bfin-full.config | 12 - .../autobuild/br-i386-pentium-mmx-musl.config | 4 +- .../autobuild/br-i386-pentium4-full.config | 2 +- .../autobuild/br-m68k-5208-full.config | 4 +- .../autobuild/br-m68k-68040-full.config | 4 +- .../autobuild/br-microblazeel-full.config | 3 +- .../autobuild/br-mips32r6-el-hf-glibc.config | 4 +- .../autobuild/br-mips64-n64-full.config | 4 +- .../autobuild/br-mips64r6-el-hf-glibc.config | 4 +- .../autobuild/br-mipsel-o32-full.config | 4 +- .../autobuild/br-nios2-glibc.config | 5 +- .../autobuild/br-openrisc-uclibc.config | 5 +- .../br-powerpc-603e-basic-cpp.config | 4 +- .../autobuild/br-powerpc-e500mc-full.config | 4 +- .../br-powerpc64-power7-glibc.config | 4 +- .../br-powerpc64le-power8-glibc.config | 4 +- .../autobuild/br-sh4-full.config | 4 +- .../autobuild/br-sparc-uclibc.config | 2 +- .../autobuild/br-sparc64-glibc.config | 2 +- .../autobuild/br-x86-64-core2-full.config | 4 +- .../autobuild/br-x86-64-musl.config | 4 +- .../autobuild/br-xtensa-full-internal.config | 1 - .../autobuild/br-xtensa-full.config | 4 +- .../autobuild/toolchain-configs.csv | 31 +- .../support/dependencies/check-host-lzip.mk | 2 +- .../support/dependencies/check-host-tar.mk | 2 +- .../support/dependencies/check-host-tar.sh | 7 +- .../support/dependencies/check-host-xzcat.mk | 2 +- .../support/dependencies/dependencies.mk | 14 +- .../support/dependencies/dependencies.sh | 59 +- buildroot/support/docker/Dockerfile | 11 +- buildroot/support/download/bzr | 25 +- buildroot/support/download/cvs | 34 +- buildroot/support/download/dl-wrapper | 154 +- buildroot/support/download/{cp => file} | 21 +- buildroot/support/download/git | 185 +- buildroot/support/download/hg | 25 +- buildroot/support/download/scp | 19 +- buildroot/support/download/svn | 25 +- buildroot/support/download/wget | 27 +- buildroot/support/kconfig/README.buildroot | 1 + buildroot/support/scripts/brpkgutil.py | 13 +- buildroot/support/scripts/check-bin-arch | 57 +- buildroot/support/scripts/check-uniq-files | 20 +- buildroot/support/scripts/fix-rpath | 6 + buildroot/support/scripts/graph-depends | 315 +-- buildroot/support/scripts/pkg-stats | 859 ++++---- buildroot/support/scripts/xorg-release | 180 -- buildroot/support/testing/infra/basetest.py | 2 + buildroot/support/testing/infra/builder.py | 11 +- buildroot/support/testing/run-tests | 1 - .../support/testing/tests/boot/test_atf.py | 4 +- .../testing/tests/core/test_post_scripts.py | 23 +- .../tests/package/test_python_cryptography.py | 34 + .../testing/tests/package/test_rust.py | 1 + .../testing/tests/package/test_syslog_ng.py | 34 + buildroot/system/Config.in | 128 +- buildroot/system/skeleton/dev/fd | 1 + buildroot/system/skeleton/dev/stderr | 1 + buildroot/system/skeleton/dev/stdin | 1 + buildroot/system/skeleton/dev/stdout | 1 + buildroot/toolchain/Config.in | 487 ++++- buildroot/toolchain/helpers.mk | 2 +- .../toolchain/toolchain-buildroot/Config.in | 6 +- buildroot/toolchain/toolchain-common.in | 469 ---- .../toolchain/toolchain-external/Config.in | 11 +- .../pkg-toolchain-external.mk | 6 +- .../Config.in | 6 +- .../Config.in | 6 +- .../Config.in | 1 - .../Config.in.options | 25 +- buildroot/toolchain/toolchain-wrapper.c | 3 + buildroot/toolchain/toolchain-wrapper.mk | 12 +- buildroot/toolchain/toolchain.mk | 24 +- buildroot/toolchain/toolchain/toolchain.mk | 15 +- buildroot/utils/check-package | 45 +- buildroot/utils/checkpackagelib/lib_config.py | 6 + buildroot/utils/checkpackagelib/lib_mk.py | 11 +- buildroot/utils/genrandconfig | 41 +- buildroot/utils/scanpypi | 84 +- buildroot/utils/size-stats-compare | 7 +- buildroot/utils/test-pkg | 56 +- 1887 files changed, 22076 insertions(+), 18029 deletions(-) delete mode 100644 .gitattributes delete mode 100644 buildroot-patches/0001-go-bump-to-1.10.patch rename buildroot-patches/{0002-tini-new-package.patch => 0001-tini-new-package.patch} (95%) create mode 100644 buildroot-patches/0002-docker-containerd-bump-to-v1.1.0.patch delete mode 100644 buildroot-patches/0003-docker-containerd-bump-to-v1.0.2.patch create mode 100644 buildroot-patches/0003-runc-bump-to-1.0-rc5.patch create mode 100644 buildroot-patches/0004-docker-engine-bump-to-v18.03.1-ce.patch delete mode 100644 buildroot-patches/0004-runc-bump-to-9f9c96235cc.patch delete mode 100644 buildroot-patches/0005-docker-engine-add-support-for-init-processes.patch create mode 100644 buildroot-patches/0005-docker-proxy-bump-to-8436c5cdbc627b9c51f9a02742c5a39.patch rename buildroot-patches/{0011-NetworkManager-allow-to-wait-on-boot.patch => 0006-NetworkManager-allow-to-wait-on-boot.patch} (100%) delete mode 100644 buildroot-patches/0006-docker-engine-bump-to-v17.12.1-ce.patch rename buildroot-patches/{0014-Pump-raspberry-pi-firmware-for-kernel-4.14.patch => 0007-Pump-raspberry-pi-firmware-for-kernel-4.14.patch} (72%) delete mode 100644 buildroot-patches/0007-linux-add-BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF.patch delete mode 100644 buildroot-patches/0008-package-rauc-Version-bump-to-0.3.patch delete mode 100644 buildroot-patches/0009-linux-add-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL.patch delete mode 100644 buildroot-patches/0010-linux-fix-passing-of-host-CFLAGS-and-LDFLAGS.patch delete mode 100644 buildroot-patches/0012-Add-apparmor-support-to-docker.patch delete mode 100644 buildroot-patches/0013-package-rauc-Version-bump-to-0.4.patch delete mode 100644 buildroot/arch/Config.in.bfin create mode 100644 buildroot/board/amarula/vyasa/extlinux.conf create mode 100644 buildroot/board/amarula/vyasa/genimage.cfg create mode 100644 buildroot/board/amarula/vyasa/linux_gmac.fragment create mode 100755 buildroot/board/amarula/vyasa/post-build.sh create mode 100644 buildroot/board/amarula/vyasa/readme.txt create mode 100755 buildroot/board/arcturus/aarch64-ucls1012a/post-image.sh create mode 100644 buildroot/board/arcturus/aarch64-ucls1012a/readme.txt create mode 100755 buildroot/board/arcturus/aarch64-ucls1012a/rootfs_overlay/etc/init.d/S09modload create mode 100644 buildroot/board/asus/tinker/extlinux.conf create mode 100644 buildroot/board/asus/tinker/genimage.cfg create mode 100755 buildroot/board/asus/tinker/post-build.sh create mode 100644 buildroot/board/asus/tinker/readme.txt rename buildroot/board/chromebook/snow/{linux-4.6-dts-tpm.patch => linux-4.15-dts-tpm.patch} (100%) rename buildroot/board/chromebook/snow/{linux-4.6.fragment => linux-4.15.fragment} (100%) delete mode 100644 buildroot/board/ci40/genimage.cfg delete mode 100755 buildroot/board/ci40/post-build.sh delete mode 100644 buildroot/board/ci40/readme.txt delete mode 100644 buildroot/board/embest/riotboard/readme.txt delete mode 100644 buildroot/board/embest/riotboard/rootfs_overlay/boot/extlinux/extlinux.conf delete mode 100644 buildroot/board/firefly/firefly-rk3288/extlinux.conf delete mode 100755 buildroot/board/firefly/firefly-rk3288/post-build.sh delete mode 100755 buildroot/board/firefly/firefly-rk3288/post-image.sh delete mode 100644 buildroot/board/firefly/firefly-rk3288/readme.txt delete mode 100644 buildroot/board/firefly/firefly-rk3288/sd-image.cfg create mode 100644 buildroot/board/freescale/common/imx/genimage.cfg.template_imx8 create mode 100755 buildroot/board/freescale/common/imx/imx8-bootloader-prepare.sh delete mode 100644 buildroot/board/freescale/imx31_3stack/linux.fragment delete mode 100644 buildroot/board/freescale/imx31_3stack/readme.txt create mode 100644 buildroot/board/freescale/imx6sabre/patches/uboot/0002-imximage-Remove-failure-when-no-IVT-offset-is-found.patch create mode 100644 buildroot/board/freescale/imx8mqevk/readme.txt delete mode 100644 buildroot/board/freescale/mpc8315erdb/linux-4.5.config delete mode 100644 buildroot/board/freescale/mpc8315erdb/readme.txt delete mode 100644 buildroot/board/freescale/p1010rdb/linux-4.1.config delete mode 100644 buildroot/board/freescale/p1010rdb/readme.txt create mode 100644 buildroot/board/freescale/p1025twr/readme.txt create mode 100644 buildroot/board/freescale/t1040d4rdb/readme.txt delete mode 100644 buildroot/board/gdb/bfin-bf512/linux.config delete mode 100644 buildroot/board/gdb/bfin-bf512/readme.txt delete mode 100755 buildroot/board/gdb/post-build.sh create mode 100644 buildroot/board/orangepi/orangepi-zero-plus2/linux-extras.config create mode 100644 buildroot/board/orangepi/orangepi-zero-plus2/patches/linux/linux-0001-arm64-dts-orange-pi-zero-plus2-enable-ap6212.patch delete mode 100644 buildroot/board/orangepi/orangepi-zero-plus2/patches/linux/linux-0001-arm64-dts-orange-pi-zero-plus2-fix-sdcard-detect.patch create mode 100644 buildroot/board/orangepi/orangepi-zero-plus2/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt rename buildroot/board/qemu/aarch64-virt/{linux-4.13.config => linux-4.15.config} (97%) create mode 100644 buildroot/board/qemu/ppc64-e5500/linux.fragment create mode 100644 buildroot/board/qemu/ppc64-e5500/readme.txt create mode 100644 buildroot/board/raspberrypi/genimage-raspberrypi0w.cfg create mode 120000 buildroot/board/raspberrypi0w create mode 100644 buildroot/board/solidrun/clearfog/boot.scr.txt create mode 100644 buildroot/board/solidrun/clearfog/genimage.cfg create mode 100644 buildroot/board/solidrun/clearfog/linux.fragment create mode 100755 buildroot/board/solidrun/clearfog/post-build.sh create mode 100644 buildroot/board/solidrun/clearfog/readme.txt create mode 100644 buildroot/board/synopsys/hsdk/genimage.cfg create mode 100644 buildroot/board/synopsys/hsdk/linux.fragment create mode 100644 buildroot/board/synopsys/hsdk/readme.txt create mode 100644 buildroot/board/synopsys/hsdk/uboot.env.txt rename buildroot/board/technologic/{ts5x00 => ts5500}/fs-overlay/boot/syslinux/syslinux.cfg (100%) rename buildroot/board/technologic/{ts5x00/linux-3.17.config => ts5500/linux-4.14.config} (98%) rename buildroot/board/technologic/{ts5x00 => ts5500}/readme.txt (98%) delete mode 100644 buildroot/board/telit/evk-pro3/barebox.fragment delete mode 100644 buildroot/board/telit/evk-pro3/linux.fragment delete mode 100644 buildroot/board/telit/evk-pro3/patches/barebox/0001-watchdog-add-keep-alive-support.patch delete mode 100644 buildroot/board/telit/evk-pro3/patches/barebox/0002-watchdog-add-at91sam9-watchdog-support.patch delete mode 100644 buildroot/board/telit/evk-pro3/patches/barebox/0003-at91sam9260-9g20-add-wathdog-support.patch delete mode 100644 buildroot/board/telit/evk-pro3/patches/barebox/0004-at91sam9260-9g20-fix-wathdog-support.patch delete mode 100644 buildroot/board/telit/evk-pro3/patches/linux/0001-kernel-add-support-for-gcc-5.patch delete mode 100644 buildroot/board/telit/evk-pro3/patches/linux/0002-ARM-8158-1-LLVMLinux-use-static-inline-in-ARM-ftrace.patch delete mode 100644 buildroot/board/telit/evk-pro3/readme.txt create mode 100644 buildroot/boot/syslinux/0011-extlinux-Use-the-host-toolchain-to-build.patch create mode 100644 buildroot/configs/amarula_vyasa_rk3288_defconfig create mode 100644 buildroot/configs/arcturus_ucls1012a_defconfig create mode 100644 buildroot/configs/asus_tinker_rk3288_defconfig delete mode 100644 buildroot/configs/ci40_defconfig delete mode 100644 buildroot/configs/firefly_rk3288_defconfig delete mode 100644 buildroot/configs/firefly_rk3288_demo_defconfig delete mode 100644 buildroot/configs/freescale_imx31_3stack_defconfig delete mode 100644 buildroot/configs/freescale_imx6sololiteevk_defconfig delete mode 100644 buildroot/configs/freescale_imx6ulevk_defconfig create mode 100644 buildroot/configs/freescale_imx8mqevk_defconfig delete mode 100644 buildroot/configs/freescale_mpc8315erdb_defconfig delete mode 100644 buildroot/configs/freescale_p1010rdb_pa_defconfig create mode 100644 buildroot/configs/freescale_p1025twr_defconfig create mode 100644 buildroot/configs/freescale_t1040d4rdb_defconfig delete mode 100644 buildroot/configs/gdb_bfin_bf512_defconfig create mode 100644 buildroot/configs/qemu_ppc64_e5500_defconfig create mode 100644 buildroot/configs/raspberrypi0w_defconfig delete mode 100644 buildroot/configs/riotboard_defconfig create mode 100644 buildroot/configs/snps_archs38_hsdk_defconfig create mode 100644 buildroot/configs/solidrun_clearfog_defconfig delete mode 100644 buildroot/configs/telit_evk_pro3_defconfig rename buildroot/configs/{ts5x00_defconfig => ts5500_defconfig} (55%) create mode 100644 buildroot/docs/manual/adding-packages-golang.txt create mode 100644 buildroot/docs/website/favicon.png rename buildroot/fs/yaffs2/{yaffs.mk => yaffs2.mk} (100%) create mode 100644 buildroot/package/18xx-ti-utils/18xx-ti-utils.hash create mode 100644 buildroot/package/18xx-ti-utils/18xx-ti-utils.mk create mode 100644 buildroot/package/18xx-ti-utils/Config.in create mode 100644 buildroot/package/abootimg/Config.in create mode 100644 buildroot/package/abootimg/abootimg.hash create mode 100644 buildroot/package/abootimg/abootimg.mk create mode 100644 buildroot/package/acl/0003-all-use-install-1-to-install-executables.patch create mode 100644 buildroot/package/alsa-lib/0001-Don-t-use-fork-on-noMMU-platforms.patch delete mode 100644 buildroot/package/alsa-lib/0001-no-mmu.patch rename buildroot/package/alsa-lib/{0002-dlmisc.patch => 0002-alsa-lib-provide-dummy-definitions-of-RTLD_-if-neces.patch} (53%) rename buildroot/package/alsa-lib/{0003-conditional-enabling-of-libdl-in-m4.patch => 0003-alsa-lib-conditionally-enable-libdl-in-AM_PATH_ALSA-.patch} (66%) create mode 100644 buildroot/package/asterisk/0006-build-fix-issues-building-without-ssl.patch create mode 100644 buildroot/package/attr/0004-all-use-install-1-to-install-executables.patch create mode 100644 buildroot/package/avahi/avahi_sysusers.conf create mode 100644 buildroot/package/bash-completion/Config.in create mode 100644 buildroot/package/bash-completion/bash-completion.hash create mode 100644 buildroot/package/bash-completion/bash-completion.mk delete mode 100644 buildroot/package/binutils/2.27/0905-bfin-rofixup-bug.patch delete mode 100644 buildroot/package/binutils/2.28.1/0905-bfin-rofixup-bug.patch delete mode 100644 buildroot/package/binutils/2.29.1/0006-Fixes-LINKER-BUG-.rofixup-section-size-mismatch.patch delete mode 100644 buildroot/package/binutils/2.30/0006-Fixes-LINKER-BUG-.rofixup-section-size-mismatch.patch rename buildroot/package/binutils/{arc-2017.09-release => arc-2018.03-rc1}/0002-ld-makefile.patch (100%) rename buildroot/package/binutils/{arc-2017.09-release => arc-2018.03-rc1}/0003-check-ldrunpath-length.patch (100%) rename buildroot/package/binutils/{arc-2017.09-release => arc-2018.03-rc1}/0004-add-sysroot-fix-from-bug-3049.patch (100%) rename buildroot/package/binutils/{arc-2017.09-release => arc-2018.03-rc1}/0005-poison-system-directories.patch (100%) create mode 100644 buildroot/package/bluez-alsa/Config.in create mode 100644 buildroot/package/bluez-alsa/bluez-alsa.hash create mode 100644 buildroot/package/bluez-alsa/bluez-alsa.mk create mode 100644 buildroot/package/bluez5_utils/0001-bt_shell-APIs-shall-only-be-build-if-readline-is-pre.patch delete mode 100644 buildroot/package/bluez5_utils/0001-tools-bneptest.c-Remove-include-linux-if_bridge.h-to.patch delete mode 100644 buildroot/package/boinc/boinc-client.service create mode 100644 buildroot/package/brotli/0001-CMake-Allow-using-BUILD_SHARED_LIBS-to-choose-static.patch create mode 100644 buildroot/package/brotli/0001-Tell-CMake-to-not-check-for-a-C-compiler.patch create mode 100644 buildroot/package/brotli/Config.in create mode 100644 buildroot/package/brotli/brotli.hash create mode 100644 buildroot/package/brotli/brotli.mk delete mode 100644 buildroot/package/btrfs-progs/0003-btrfs-progs-convert-add-missing-types-header.patch create mode 100644 buildroot/package/btrfs-progs/0003-btrfs.static-needs-libbtrfsutil.patch delete mode 100644 buildroot/package/busybox/0003-Makefile-include-per-arch-Makefile-before-Makefile.f.patch delete mode 100644 buildroot/package/busybox/0004-arch-sparc-sparc64-Makefile-define-ARCH_FPIC.patch delete mode 100644 buildroot/package/busybox/0005-httpd-fix-handling-of-range-requests.patch delete mode 100644 buildroot/package/busybox/0006-bunzip2-fix-runCnt-overflow-from-bug-10431.patch delete mode 100644 buildroot/package/busybox/0007-unlzma-fix-SEGV-closes-10436.patch delete mode 100644 buildroot/package/cairo/0001-blackfin-build-fix.patch rename buildroot/package/cairo/{0003-fix-nofork-build.patch => 0001-fix-nofork-build.patch} (100%) rename buildroot/package/cairo/{0005-fix-gcc-49-build.patch => 0002-fix-gcc-49-build.patch} (100%) create mode 100644 buildroot/package/chipmunk/Config.in create mode 100644 buildroot/package/chipmunk/chipmunk.hash create mode 100644 buildroot/package/chipmunk/chipmunk.mk create mode 100644 buildroot/package/clamav/0001-clamdscan-proto.c-fix-build-error-due-to-missing-soc.patch delete mode 100644 buildroot/package/clamav/0001-clamdscan.patch rename buildroot/package/clamav/{0002-backtrace-uClibc.patch => 0002-mbox-do-not-use-backtrace-if-using-uClibc-without-ba.patch} (53%) create mode 100644 buildroot/package/clamav/0003-m4-reorganization-libs-curl.m4-fix-curl-config-detec.patch create mode 100644 buildroot/package/clang/Config.in create mode 100644 buildroot/package/clang/clang.hash create mode 100644 buildroot/package/clang/clang.mk delete mode 100644 buildroot/package/cramfs/0001-endian.patch delete mode 100644 buildroot/package/cramfs/0002-cygwin_IO.patch delete mode 100644 buildroot/package/cramfs/0003-fix-missing-types.patch delete mode 100644 buildroot/package/cryptopp/0001-Fix-possible-DoS-in-ASN.1-decoders-CVE-2016-9939.patch create mode 100644 buildroot/package/cups-filters/0001-Replace-relative-linking-with-absolute-linking.patch create mode 100644 buildroot/package/cups/0005-Fix-builds-without-PAM-Issue-5283.patch delete mode 100644 buildroot/package/dnsmasq/0001-DNSSEC-fix-for-wildcard-NSEC-records.-CVE-2017-15107.patch delete mode 100644 buildroot/package/dnsmasq/0002-Fix-DNSSEC-validation-errors-introduced-in-4fe6744a2.patch create mode 100644 buildroot/package/docker-compose/Config.in create mode 100644 buildroot/package/docker-compose/docker-compose.hash create mode 100644 buildroot/package/docker-compose/docker-compose.mk create mode 100644 buildroot/package/docker-proxy/Config.in create mode 100644 buildroot/package/docker-proxy/docker-proxy.hash create mode 100644 buildroot/package/docker-proxy/docker-proxy.mk create mode 100644 buildroot/package/dropbear/0001-only-advertise-single-server-ecdsa-key-when-R-is-used.patch rename buildroot/package/efibootmgr/{0002-Allow-build-with-uClibc.patch => 0001-Allow-build-with-uClibc.patch} (100%) delete mode 100644 buildroot/package/efibootmgr/0001-dont-use-fshort-wchar-when-building.patch delete mode 100644 buildroot/package/efibootmgr/0003-Remove-extra-const-keywords-gcc-7-gripes-about.patch rename buildroot/package/efivar/{0002-Allow-build-with-uClibc.patch => 0001-Allow-build-with-uClibc.patch} (96%) delete mode 100644 buildroot/package/efivar/0001-Use-z-muldefs-to-avoid-the-multiple-definitions-bug-.patch delete mode 100644 buildroot/package/efivar/0003-Remove-some-extra-const-that-gcc-complains-about.patch delete mode 100644 buildroot/package/erlang/0001-build-fix.patch rename buildroot/package/erlang/{0002-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch => 0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch} (100%) rename buildroot/package/erlang/{0003-erts-emulator-reorder-inclued-headers-paths.patch => 0002-erts-emulator-reorder-inclued-headers-paths.patch} (100%) rename buildroot/package/erlang/{0004-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch => 0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch} (100%) create mode 100644 buildroot/package/faketime/0002-src-Makefile-disable-Werror.patch create mode 100644 buildroot/package/fbgrab/0100-fix-pixfmt-report.patch delete mode 100644 buildroot/package/ffmpeg/0001-bfin-disable-optimization.patch rename buildroot/package/ffmpeg/{0002-ffmpeg-pthreads.patch => 0001-ffmpeg-pthreads.patch} (100%) create mode 100644 buildroot/package/flann/0001-src-cpp-fix-cmake-3.11-build.patch create mode 100644 buildroot/package/flare-engine/Config.in create mode 100644 buildroot/package/flare-engine/flare-engine.hash create mode 100644 buildroot/package/flare-engine/flare-engine.mk create mode 100644 buildroot/package/flare-game/Config.in create mode 100644 buildroot/package/flare-game/flare-game.hash create mode 100644 buildroot/package/flare-game/flare-game.mk create mode 100644 buildroot/package/freescale-imx/imx-alsa-plugins/Config.in create mode 100644 buildroot/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.hash create mode 100644 buildroot/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.mk create mode 100644 buildroot/package/gcc/4.9.4/0002-m68k-coldfire-pr68467.patch delete mode 100644 buildroot/package/gcc/4.9.4/891-fix-m68k-uclinux.patch create mode 100644 buildroot/package/gcc/5.5.0/0001-m68k-coldfire-pr68467.patch delete mode 100644 buildroot/package/gcc/5.5.0/891-fix-m68k-uclinux.patch create mode 100644 buildroot/package/gcc/6.4.0/0001-m68k-coldfire-pr68467.patch delete mode 100644 buildroot/package/gcc/6.4.0/891-fix-m68k-uclinux.patch delete mode 100644 buildroot/package/gcc/6.4.0/892-libgcc-mkmap-symver-support-skip_underscore.patch delete mode 100644 buildroot/package/gcc/6.4.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch delete mode 100644 buildroot/package/gcc/6.4.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch delete mode 100644 buildroot/package/gcc/6.4.0/895-bfin-define-REENTRANT.patch create mode 100644 buildroot/package/gcc/7.3.0/0001-m68k-coldfire-pr68467.patch delete mode 100644 buildroot/package/gcc/7.3.0/0891-fix-m68k-uclinux.patch delete mode 100644 buildroot/package/gcc/arc-2017.09-release/0001-fix-checking-for-jumps.patch rename buildroot/package/gcc/{arc-2017.09-release => arc-2018.03-rc1}/0100-uclibc-conf.patch (100%) rename buildroot/package/gcc/{arc-2017.09-release => arc-2018.03-rc1}/0860-cilk-fix-build-without-wchar.patch (100%) rename buildroot/package/gcc/{arc-2017.09-release => arc-2018.03-rc1}/0900-remove-selftests.patch (100%) delete mode 100644 buildroot/package/gdb/7.10.1/0006-Revert-sim-unify-SIM_CPU-definition.patch rename buildroot/package/gdb/7.10.1/{0007-Sync-proc_service-definition-with-GLIBC.patch => 0006-Sync-proc_service-definition-with-GLIBC.patch} (100%) rename buildroot/package/gdb/7.10.1/{0008-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch => 0007-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch} (100%) rename buildroot/package/gdb/7.10.1/{0009-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch => 0008-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch} (100%) rename buildroot/package/gdb/7.10.1/{0010-Fix-gdbserver-build-on-uClibc-noMMU.patch => 0009-Fix-gdbserver-build-on-uClibc-noMMU.patch} (100%) rename buildroot/package/gdb/7.10.1/{0011-use-asm-sgidefs.h.patch => 0010-use-asm-sgidefs.h.patch} (100%) rename buildroot/package/gdb/7.11.1/{0002-Sync-proc_service-definition-with-GLIBC.patch => 0001-Sync-proc_service-definition-with-GLIBC.patch} (100%) delete mode 100644 buildroot/package/gdb/7.11.1/0001-sim-bfin-split-out-common-mach-model-defines-into-ar.patch rename buildroot/package/gdb/7.11.1/{0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch => 0002-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch} (100%) rename buildroot/package/gdb/7.11.1/{0004-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch => 0003-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch} (100%) rename buildroot/package/gdb/7.11.1/{0005-Fix-gdbserver-build-on-uClibc-noMMU.patch => 0004-Fix-gdbserver-build-on-uClibc-noMMU.patch} (100%) rename buildroot/package/gdb/7.11.1/{0006-use-asm-sgidefs.h.patch => 0005-use-asm-sgidefs.h.patch} (100%) create mode 100644 buildroot/package/go/0001-build.go-explicit-option-for-crosscompilation.patch delete mode 100644 buildroot/package/graphite2/0001-disable-double-promotion.patch create mode 100644 buildroot/package/gstreamer1/gst1-interpipe/Config.in create mode 100644 buildroot/package/gstreamer1/gst1-interpipe/gst1-interpipe.hash create mode 100644 buildroot/package/gstreamer1/gst1-interpipe/gst1-interpipe.mk create mode 100644 buildroot/package/gstreamer1/gst1-plugins-ugly/0001-x264enc-fix-build-with-newer-x264-with-support-for-m.patch create mode 100644 buildroot/package/gstreamer1/gstreamer1-editing-services/Config.in create mode 100644 buildroot/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.hash create mode 100644 buildroot/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.mk create mode 100644 buildroot/package/hackrf/0001-Don-t-require-a-C-compiler.patch create mode 100644 buildroot/package/hackrf/Config.in create mode 100644 buildroot/package/hackrf/hackrf.hash create mode 100644 buildroot/package/hackrf/hackrf.mk create mode 100644 buildroot/package/htop/0001-MetersPanel-remove-0xe2-from-MetersPanel.c.patch create mode 100644 buildroot/package/htop/0002-MakeHeader-open-files-using-binary-mode.patch create mode 100644 buildroot/package/i2pd/0001-Fix-cmake-error-when-DBUILD_SHARED_LIBS-ON.patch create mode 100644 buildroot/package/i2pd/0002-Install-libi2pdclient.patch create mode 100644 buildroot/package/i2pd/0003-build-CMakeLists.txt-don-t-install-source-and-licens.patch create mode 100644 buildroot/package/i2pd/Config.in create mode 100644 buildroot/package/i2pd/S99i2pd create mode 100644 buildroot/package/i2pd/i2pd.hash create mode 100644 buildroot/package/i2pd/i2pd.mk create mode 100644 buildroot/package/i2pd/i2pd.service delete mode 100644 buildroot/package/icu/0003-detect-compiler-symbol-prefix.patch rename buildroot/package/icu/{0004-link-icudata-as-data-only.patch => 0003-link-icudata-as-data-only.patch} (100%) rename buildroot/package/icu/{0005-fix-static-linking-with-icu-uc.patch => 0004-fix-static-linking-with-icu-uc.patch} (100%) create mode 100644 buildroot/package/imx-mkimage/0001-add-support-for-overriding-bl32-and-bl33-not-only-bl.patch create mode 100644 buildroot/package/imx-mkimage/0002-add-ldflags-to-link-step.patch create mode 100644 buildroot/package/imx-mkimage/Config.in.host create mode 100644 buildroot/package/imx-mkimage/imx-mkimage.hash create mode 100644 buildroot/package/imx-mkimage/imx-mkimage.mk delete mode 100644 buildroot/package/inotify-tools/0001-gcc6.patch delete mode 100644 buildroot/package/iproute2/0001-Add-the-musl-workaround-to-the-libc-compat.h-copy.patch create mode 100644 buildroot/package/iproute2/0001-arpd-remove-pthread-dependency.patch delete mode 100644 buildroot/package/ipset/0001-Replace-the-last-reference-to-u_int8_t-with-uint8_t.patch create mode 100644 buildroot/package/iptables/0001-extensions-libxt_bpf-Fix-build-with-old-kernel-versi.patch delete mode 100644 buildroot/package/iptables/0001-utils-nfsynproxy-fix-build-with-musl-libc.patch delete mode 100644 buildroot/package/iqvlinux/Config.in delete mode 100644 buildroot/package/iqvlinux/iqvlinux.hash delete mode 100644 buildroot/package/iqvlinux/iqvlinux.mk delete mode 100644 buildroot/package/keepalived/0001-Fix-build-with-Linux-kernel-headers-v4.15.patch create mode 100644 buildroot/package/keepalived/0001-configure.ac-do-not-force-PIE.patch delete mode 100644 buildroot/package/kodi-adsp-basic/Config.in delete mode 100644 buildroot/package/kodi-adsp-basic/kodi-adsp-basic.hash delete mode 100644 buildroot/package/kodi-adsp-basic/kodi-adsp-basic.mk delete mode 100644 buildroot/package/kodi-adsp-freesurround/Config.in delete mode 100644 buildroot/package/kodi-adsp-freesurround/kodi-adsp-freesurround.hash delete mode 100644 buildroot/package/kodi-adsp-freesurround/kodi-adsp-freesurround.mk delete mode 100644 buildroot/package/kvazaar/0001-Modify-and-use-FILL_ARRAY-macro-to-prevent-warning-o.patch delete mode 100644 buildroot/package/lcms2/0001-Fix-lcms2.pc.in-thread-library-dependency.patch delete mode 100644 buildroot/package/lcms2/0002-Added-an-extra-check-to-MLU-bounds.patch create mode 100644 buildroot/package/libbsd/0001-Fix-function-declaration-protection-for-glibc-alread.patch create mode 100644 buildroot/package/libbsd/0002-Fix-build-for-openrisc-with-uClibc.patch create mode 100644 buildroot/package/libbsd/0003-Handle-systems-missing-sys-cdefs.h.patch create mode 100644 buildroot/package/libcap-ng/0001-Fix-compilation-without-pthread.h.patch create mode 100644 buildroot/package/libcdio-paranoia/Config.in create mode 100644 buildroot/package/libcdio-paranoia/libcdio-paranoia.hash create mode 100644 buildroot/package/libcdio-paranoia/libcdio-paranoia.mk create mode 100644 buildroot/package/libconfig/0001-Add-disable-doc-option.patch delete mode 100644 buildroot/package/libcpprestsdk/0001-fix-xlocale-header-check.patch rename buildroot/package/libcpprestsdk/{0004-libcpprestsdk-fix-building-as-a-static-library.patch => 0001-libcpprestsdk-fix-building-as-a-static-library.patch} (100%) create mode 100644 buildroot/package/libcpprestsdk/0002-fix-template-whitespace-syntax.patch delete mode 100644 buildroot/package/libcpprestsdk/0002-include-sys-time-for-struct-timeval.patch delete mode 100644 buildroot/package/libcpprestsdk/0003-fix-strand.patch create mode 100644 buildroot/package/libebml/0001-EbmlSInteger-Use-limits-instead-of-climits.patch delete mode 100644 buildroot/package/libepoxy/0001-Forward-EGL-cflags-into-epoxy.pc.patch delete mode 100644 buildroot/package/libfastjson/0001-m4-fix-detection-of-atomics.patch create mode 100644 buildroot/package/libfm/0001-modules-fix-cross-compilation.patch create mode 100644 buildroot/package/libfreeimage/0005-Manage-powf64-with-glibc.patch create mode 100644 buildroot/package/libgeotiff/0002-fix-GEO_NORMALIZE_DISABLE_TOWGS84-define.patch create mode 100644 buildroot/package/libglib2/0003-gobject-fix-compilation-with-gcc-4.7.patch delete mode 100644 buildroot/package/libidn/0001-lib-punycode.c-decode_digit-Fix-integer-overflow.patch delete mode 100644 buildroot/package/libidn/0002-Update-intprops.h-for-gcc-7-compatibility.patch create mode 100644 buildroot/package/libkcapi/0001-Fix-getrandom-call-in-kcapi-rng.c.patch delete mode 100644 buildroot/package/libkcapi/0001-Have-sufficient-memory-size-for-message.patch delete mode 100644 buildroot/package/libkcapi/0002-Do-not-compile-unused-functions.patch delete mode 100644 buildroot/package/libkcapi/0003-Unify-code-to-read-from-seed-sources.patch delete mode 100644 buildroot/package/libkcapi/0004-internal.h-make-inline-functions-static.patch create mode 100644 buildroot/package/libkrb5/Config.in create mode 100644 buildroot/package/libkrb5/libkrb5.hash create mode 100644 buildroot/package/libkrb5/libkrb5.mk create mode 100644 buildroot/package/liblo/0001-server-use-correct-poll.h-header.patch delete mode 100644 buildroot/package/libmbim/0001-mbim-device-prefer-realpath-to-canonicalize_file_nam.patch delete mode 100644 buildroot/package/libnice/0001-configure-Fix-configure-failure-when-building-without-.patch create mode 100644 buildroot/package/libnss/0002-add-zlib-include-dir-variable.patch create mode 100644 buildroot/package/libnss/0003-Build-Hacl_Poly1305_64_o_on_Aarch64.patch create mode 100644 buildroot/package/libnss/0004-Bug-1438426-Avoid-stringop-truncation-warning-r-fran.patch delete mode 100644 buildroot/package/libpng/0002-Don-t-append-prefix-to-symbol-names-in-version-script.patch create mode 100644 buildroot/package/libraw/0003-internal-dcraw_common-rename-internal-powf64.patch delete mode 100644 buildroot/package/libressl/0002-Fix-build-with-musl-and-older-Linux-kernel.patch rename buildroot/package/libselinux/{0002-fix-musl-build.patch => 0001-fix-musl-build.patch} (100%) delete mode 100644 buildroot/package/libselinux/0001-workaround-blackfin-issue.patch rename buildroot/package/libselinux/{0003-libselinux-build-follow-standard-semantics-for-DESTD.patch => 0002-libselinux-build-follow-standard-semantics-for-DESTD.patch} (100%) rename buildroot/package/libselinux/{0004-revert-ln-relative.patch => 0003-revert-ln-relative.patch} (100%) rename buildroot/package/libsemanage/{0002-libsemanage-build-follow-standard-semantics-for-DESTD.patch => 0001-libsemanage-build-follow-standard-semantics-for-DESTD.patch} (100%) delete mode 100644 buildroot/package/libsemanage/0001-workaround-blackfin-issue.patch rename buildroot/package/libsepol/{0003-support-static-only.patch => 0002-support-static-only.patch} (100%) delete mode 100644 buildroot/package/libsepol/0002-workaround-blackfin-issue.patch rename buildroot/package/libsepol/{0004-revert-ln-relative.patch => 0003-revert-ln-relative.patch} (100%) create mode 100644 buildroot/package/libssh2/0002-acinclude.m4-add-mbedtls-to-LIBS.patch create mode 100644 buildroot/package/libupnpp/0001-Fix-cross-compilation-with-uclibc-on-arm-m68k.patch delete mode 100644 buildroot/package/libvorbis/0001-CVE-2017-14633-Don-t-allow-for-more-than-256-channel.patch delete mode 100644 buildroot/package/libvorbis/0002-CVE-2017-14632-vorbis_analysis_header_out-Don-t-clea.patch create mode 100644 buildroot/package/llvm/0001-Fix-return-type-in-ORC-readMem-client-interface.patch create mode 100644 buildroot/package/llvm/Config.in create mode 100644 buildroot/package/llvm/llvm.hash create mode 100644 buildroot/package/llvm/llvm.mk delete mode 100644 buildroot/package/lxc/0001-Fix-compilation-on-toolchain-without-prlimit.patch create mode 100644 buildroot/package/lxc/0001-lxc-tools-lxc_monitor-include-missing-stddef.h.patch create mode 100644 buildroot/package/lxc/0002-Fix-compilation-with-static-libcap-and-shared-gnutls.patch delete mode 100644 buildroot/package/lxc/0002-lxc-start.c-Fix-legacy-PR_-G-S-ET_NO_NEW_PRIVS-handl.patch create mode 100644 buildroot/package/lynx/0001-src-chrtrans-don-t-build-host-tools-with-target-LDFL.patch create mode 100644 buildroot/package/lz4/0001-use-more-restrictive-conditions-for-clock_gettime.patch create mode 100644 buildroot/package/lz4/0002-lib-allow-to-disable-shared-libraries.patch create mode 100644 buildroot/package/make/0001-configure.ac-Support-GLIBC-glob-interface-version-2.patch delete mode 100644 buildroot/package/mbedtls/0001-dhm-Fix-typo-in-RFC-5114-constants.patch rename buildroot/package/mesa3d-demos/{0001-demos-optional-gl.patch => 0001-demos-makes-opengl-an-optional-component.patch} (52%) delete mode 100644 buildroot/package/mesa3d/0002-Fix-endianess-detection-with-musl-based-toolchains.patch rename buildroot/package/mesa3d/{0003-configure.ac-invert-order-for-wayland-scanner-check.patch => 0002-configure.ac-invert-order-for-wayland-scanner-check.patch} (100%) create mode 100644 buildroot/package/mesa3d/0003-configure.ac-rework-latomic-check.patch delete mode 100644 buildroot/package/mplayer/0001-disable-install-strip.patch delete mode 100644 buildroot/package/mplayer/0002-mpdemux-live555-async-interface.patch delete mode 100644 buildroot/package/mplayer/0003-configure-armv8.patch delete mode 100644 buildroot/package/mplayer/0004-configure-zlib.patch delete mode 100644 buildroot/package/mplayer/0005-tremor-ogg.patch delete mode 100644 buildroot/package/mplayer/0006-musl-ldt.patch delete mode 100644 buildroot/package/mplayer/0007-fixmmx.patch delete mode 100644 buildroot/package/mplayer/Config.in delete mode 100644 buildroot/package/mplayer/mplayer.hash delete mode 100644 buildroot/package/mplayer/mplayer.mk create mode 100644 buildroot/package/multicat/0001-Fix-build-with-musl-libc.patch delete mode 100644 buildroot/package/multicat/0001-Fix-missing-pthread.patch delete mode 100644 buildroot/package/multicat/0002-Fix-musl-build.patch delete mode 100644 buildroot/package/multicat/0003-Fix-have-clock-nanosleep-with-uclibc.patch create mode 100644 buildroot/package/nasm/0001-nasmlib-Drop-unused-seg_init.patch delete mode 100644 buildroot/package/ncurses/0002-recognise-uclinux.patch delete mode 100644 buildroot/package/nftables/0001-src-fix-build-with-older-glibc.patch delete mode 100644 buildroot/package/nmap/0002-configure.ac-fix-AC_CHECK_HEADER-call-to-test-for-li.patch delete mode 100644 buildroot/package/ntp/0003-ntpq-fpic.patch delete mode 100644 buildroot/package/openblas/0001-Complete-support-for-MIPS-n32-ABI.patch create mode 100644 buildroot/package/openblas/0001-Makefile.arm-remove-march-flags.patch delete mode 100644 buildroot/package/openblas/0002-Makefile.arm-remove-march-flags.patch create mode 100644 buildroot/package/openblas/0002-Rework-__GLIBC_PREREQ-checks-to-avoid-breaking-non-g.patch create mode 100644 buildroot/package/openblas/0003-Fix-build-when-__GLIBC_PREREQ-is-not-defined.patch delete mode 100644 buildroot/package/openssh/0001-configure-ac-detect-mips-abi.patch rename buildroot/package/openssh/{0003-fix-pam-uclibc-pthreads-clash.patch => 0001-fix-pam-uclibc-pthreads-clash.patch} (100%) delete mode 100644 buildroot/package/openssh/0002-configure-ac-properly-set-seccomp-audit-arch-for-mips64.patch rename buildroot/package/openssh/{0004-fix-howmany-include.patch => 0002-fix-howmany-include.patch} (100%) delete mode 100644 buildroot/package/openssh/0005-openbsd-compat-bsd-getpagesize.c-include-includes.h-.patch delete mode 100644 buildroot/package/p7zip/0001-bfin.patch create mode 100644 buildroot/package/patch/0002-Allow-input-files-to-be-missing-for-ed-style-patches.patch create mode 100644 buildroot/package/patch/0003-Fix-arbitrary-command-execution-in-ed-style-patches-.patch rename buildroot/package/php/{0007-Call-apxs-with-correct-prefix.patch => 0006-Call-apxs-with-correct-prefix.patch} (100%) delete mode 100644 buildroot/package/php/0006-avoid-bfin-gcc-segfault.patch create mode 100644 buildroot/package/php/0007-ext-xml-expat_compat.h-add-missing-php.h-include.patch delete mode 100644 buildroot/package/php/0008-ext-sockets-make-AI_IDN-usage-optional.patch delete mode 100644 buildroot/package/php/0009-main-php_ini.c-build-empty-php_load_zend_extension_c.patch create mode 100644 buildroot/package/picocom/0001-Compile-with-libc-s-without-cispeed-cospeed.patch create mode 100644 buildroot/package/pixiewps/Config.in create mode 100644 buildroot/package/pixiewps/pixiewps.hash create mode 100644 buildroot/package/pixiewps/pixiewps.mk create mode 100644 buildroot/package/pkg-golang.mk create mode 100644 buildroot/package/procps-ng/0001-proc-sig-fix-build-for-sparc.patch delete mode 100644 buildroot/package/procps-ng/0001-remove-index.patch delete mode 100644 buildroot/package/procps-ng/0002-use-pkgconfig-for-ncursesw-cflags.patch delete mode 100644 buildroot/package/procps-ng/0003-ps-output.c-include-dlfcn.h-only-when-necessary.patch create mode 100644 buildroot/package/prosody/0001-enable-syslog.patch create mode 100644 buildroot/package/prosody/0002-add-pidfile.patch delete mode 100644 buildroot/package/prosody/prosody.cfg.lua create mode 100644 buildroot/package/pulseaudio/0002-memfd-wrappers-only-define-memfd_create-if-not-alrea.patch create mode 100644 buildroot/package/python-backports-ssl-match-hostname/Config.in create mode 100644 buildroot/package/python-backports-ssl-match-hostname/python-backports-ssl-match-hostname.hash create mode 100644 buildroot/package/python-backports-ssl-match-hostname/python-backports-ssl-match-hostname.mk create mode 100644 buildroot/package/python-cached-property/Config.in create mode 100644 buildroot/package/python-cached-property/python-cached-property.hash create mode 100644 buildroot/package/python-cached-property/python-cached-property.mk create mode 100644 buildroot/package/python-cython/Config.in.host create mode 100644 buildroot/package/python-cython/python-cython.hash create mode 100644 buildroot/package/python-cython/python-cython.mk create mode 100644 buildroot/package/python-daemonize/Config.in create mode 100644 buildroot/package/python-daemonize/python-daemonize.hash create mode 100644 buildroot/package/python-daemonize/python-daemonize.mk create mode 100644 buildroot/package/python-docker-pycreds/Config.in create mode 100644 buildroot/package/python-docker-pycreds/python-docker-pycreds.hash create mode 100644 buildroot/package/python-docker-pycreds/python-docker-pycreds.mk create mode 100644 buildroot/package/python-docker/0001-setup.py-make-pip-optional.patch create mode 100644 buildroot/package/python-docker/Config.in create mode 100644 buildroot/package/python-docker/python-docker.hash create mode 100644 buildroot/package/python-docker/python-docker.mk create mode 100644 buildroot/package/python-dockerpty/Config.in create mode 100644 buildroot/package/python-dockerpty/python-dockerpty.hash create mode 100644 buildroot/package/python-dockerpty/python-dockerpty.mk create mode 100644 buildroot/package/python-flask-sqlalchemy/Config.in create mode 100644 buildroot/package/python-flask-sqlalchemy/python-flask-sqlalchemy.hash create mode 100644 buildroot/package/python-flask-sqlalchemy/python-flask-sqlalchemy.mk create mode 100644 buildroot/package/python-functools32/Config.in create mode 100644 buildroot/package/python-functools32/python-functools32.hash create mode 100644 buildroot/package/python-functools32/python-functools32.mk create mode 100644 buildroot/package/python-influxdb/Config.in create mode 100644 buildroot/package/python-influxdb/python-influxdb.hash create mode 100644 buildroot/package/python-influxdb/python-influxdb.mk create mode 100644 buildroot/package/python-jsonmodels/Config.in create mode 100644 buildroot/package/python-jsonmodels/python-jsonmodels.hash create mode 100644 buildroot/package/python-jsonmodels/python-jsonmodels.mk create mode 100644 buildroot/package/python-libusb1/Config.in create mode 100644 buildroot/package/python-libusb1/python-libusb1.hash create mode 100644 buildroot/package/python-libusb1/python-libusb1.mk create mode 100644 buildroot/package/python-networkx/Config.in create mode 100644 buildroot/package/python-networkx/python-networkx.hash create mode 100644 buildroot/package/python-networkx/python-networkx.mk create mode 100644 buildroot/package/python-psycopg2/Config.in create mode 100644 buildroot/package/python-psycopg2/python-psycopg2.hash create mode 100644 buildroot/package/python-psycopg2/python-psycopg2.mk create mode 100644 buildroot/package/python-pymodbus/Config.in create mode 100644 buildroot/package/python-pymodbus/python-pymodbus.hash create mode 100644 buildroot/package/python-pymodbus/python-pymodbus.mk create mode 100644 buildroot/package/python-sqlalchemy/Config.in create mode 100644 buildroot/package/python-sqlalchemy/python-sqlalchemy.hash create mode 100644 buildroot/package/python-sqlalchemy/python-sqlalchemy.mk create mode 100644 buildroot/package/python-subprocess32/Config.in create mode 100644 buildroot/package/python-subprocess32/python-subprocess32.hash create mode 100644 buildroot/package/python-subprocess32/python-subprocess32.mk create mode 100644 buildroot/package/python-texttable/Config.in create mode 100644 buildroot/package/python-texttable/python-texttable.hash create mode 100644 buildroot/package/python-texttable/python-texttable.mk create mode 100644 buildroot/package/python-visitor/Config.in create mode 100644 buildroot/package/python-visitor/python-visitor.hash create mode 100644 buildroot/package/python-visitor/python-visitor.mk create mode 100644 buildroot/package/python-watchdog/0001-Add-a-workaround-to-support-uClibc-library.patch create mode 100644 buildroot/package/python-websocket-client/Config.in create mode 100644 buildroot/package/python-websocket-client/python-websocket-client.hash create mode 100644 buildroot/package/python-websocket-client/python-websocket-client.mk create mode 100644 buildroot/package/python-websockets/0001-Fix-behavior-of-recv-in-the-CLOSING-state.patch create mode 100644 buildroot/package/python-xlrd/Config.in.host create mode 100644 buildroot/package/python-yieldfrom/Config.in create mode 100644 buildroot/package/python-yieldfrom/python-yieldfrom.hash create mode 100644 buildroot/package/python-yieldfrom/python-yieldfrom.mk create mode 100644 buildroot/package/python/0035-GCC8-alignment-fix.patch create mode 100644 buildroot/package/qemu/0002-memfd-fix-configure-test.patch create mode 100644 buildroot/package/qt5/qt5base/5.10.1/0001-qtbase-Fix-build-error-when-using-EGL.patch create mode 100644 buildroot/package/qt5/qt5base/5.6.3/0002-qtbase-Fix-build-error-when-using-EGL.patch rename buildroot/package/qt5/qt5base/{qmake.conf => qmake.conf.in} (98%) create mode 100644 buildroot/package/qt5/qt5wayland/5.10.1/0001-Fix-compilation-for-Renesas-R-Car-M3.patch create mode 100644 buildroot/package/qt5/qt5webengine/host-pkg-config.in create mode 100644 buildroot/package/qt5/qt5webkit/5.6.3/0005-Detect-32-bits-armv8-a-architecture.patch create mode 100644 buildroot/package/qt5/qt5webkit/5.9.1/0003-Detect-32-bits-armv8-a-architecture.patch create mode 100644 buildroot/package/quotatool/0001-fix-missing-__P-definition-for-musl-compile.patch create mode 100644 buildroot/package/quotatool/Config.in create mode 100644 buildroot/package/quotatool/quotatool.hash create mode 100644 buildroot/package/quotatool/quotatool.mk create mode 100644 buildroot/package/rauc/0001-emmc-add-workaround-for-older-kernels.patch create mode 100644 buildroot/package/readline/0001-configure.ac-readline.pc.in-fix-Requires.private-val.patch create mode 100644 buildroot/package/reaver/Config.in create mode 100644 buildroot/package/reaver/reaver.hash create mode 100644 buildroot/package/reaver/reaver.mk create mode 100644 buildroot/package/safeclib/0001-Add-disable-doc-option.patch delete mode 100644 buildroot/package/safeclib/0001-Fix-install-when-HAVE_WCHAR-is-unset.patch create mode 100644 buildroot/package/samba4/0004-libgpo-fix-build-without-ads.patch delete mode 100644 buildroot/package/sdl2/0001-make-cross-compiler-friendly.patch create mode 100644 buildroot/package/sngrep/0001-Fix-building-against-LibreSSL.patch create mode 100644 buildroot/package/snort/0001-configure.in-Avoid-path-poisoning-with-libpcap.patch create mode 100644 buildroot/package/snort/0002-configure.in-Allow-to-override-the-INADDR_NONE-check.patch create mode 100644 buildroot/package/snort/0003-configure.in-convert-AC_RUN_IFELSE-to-AC_CHECK_MEMBE.patch create mode 100644 buildroot/package/snort/0004-configure.in-convert-AC_RUN_IFELSE-to-AC_COMPILE_IFE.patch create mode 100644 buildroot/package/snort/0005-fix-sparc.patch create mode 100644 buildroot/package/snort/Config.in create mode 100644 buildroot/package/snort/snort.hash create mode 100644 buildroot/package/snort/snort.mk delete mode 100644 buildroot/package/squashfs/0001-musl.patch create mode 100644 buildroot/package/strace/0001-m68k-fix-build.patch create mode 100644 buildroot/package/sunxi-mali-mainline-driver/Config.in create mode 100644 buildroot/package/sunxi-mali-mainline-driver/sunxi-mali-mainline-driver.mk create mode 100644 buildroot/package/sunxi-mali-mainline/Config.in create mode 100644 buildroot/package/sunxi-mali-mainline/egl.pc create mode 100644 buildroot/package/sunxi-mali-mainline/glesv2.pc create mode 100644 buildroot/package/sunxi-mali-mainline/sunxi-mali-mainline.mk delete mode 100644 buildroot/package/swupdate/0001-compat.h-introduce-compatibility-header.patch delete mode 100644 buildroot/package/swupdate/0002-Fix-build-if-DOWNLOAD-is-set-but-no-JSON.patch create mode 100644 buildroot/package/systemd/0004-core-dont-include-libmount-h-in-a-header-file.patch create mode 100644 buildroot/package/systemd/0005-basic-macros-rename-noreturn.patch delete mode 100644 buildroot/package/tcf-agent/0001-agent-add-install-target-to-the-CMakeLists.patch delete mode 100644 buildroot/package/tcf-agent/0002-linux-remove-explicit-uses-of-__ptrace_request.patch delete mode 100644 buildroot/package/tcf-agent/0003-linux-provide-canonicalize_file_name-for-all-c-libs-.patch create mode 100644 buildroot/package/tk/Config.in create mode 100644 buildroot/package/tk/tk.hash create mode 100644 buildroot/package/tk/tk.mk create mode 100644 buildroot/package/tpm2-abrmd/Config.in create mode 100755 buildroot/package/tpm2-abrmd/S80tpm2-abrmd create mode 100644 buildroot/package/tpm2-abrmd/tpm2-abrmd.hash create mode 100644 buildroot/package/tpm2-abrmd/tpm2-abrmd.mk create mode 100644 buildroot/package/tpm2-tools/0001-Fix-build-with-LibreSSL.patch create mode 100644 buildroot/package/tpm2-tools/0001-tpm2_certify-fix-type-may-be-used-uninitialized-warn.patch create mode 100644 buildroot/package/tpm2-tools/Config.in create mode 100644 buildroot/package/tpm2-tools/tpm2-tools.hash create mode 100644 buildroot/package/tpm2-tools/tpm2-tools.mk create mode 100644 buildroot/package/tpm2-tss/0001-tcti-tcti_socket.cpp-add-missing-inclusion-of-sys-se.patch create mode 100644 buildroot/package/tpm2-tss/Config.in create mode 100644 buildroot/package/tpm2-tss/tpm2-tss.hash create mode 100644 buildroot/package/tpm2-tss/tpm2-tss.mk create mode 100644 buildroot/package/tremor/tremor.hash create mode 100644 buildroot/package/trinity/0002-memfd-fix-build-with-glibc-2.27.patch create mode 100644 buildroot/package/uclibc-ng-test/0001-misc-tst-syscall6-fix-build-with-musl-and-older-kenr.patch create mode 100644 buildroot/package/uclibc/0001-Revert-ldconfig-add-glibc-compatibility-fix.patch create mode 100644 buildroot/package/uclibc/0002-librt-declare-clock_nanosleep-independent-of-thread-.patch create mode 100644 buildroot/package/udftools/0001-pktsetup-pktsetup.c-do-not-include-bits-types.h.patch create mode 100644 buildroot/package/udftools/0002-configure.ac-detect-readline-via-pkg-config-when-pos.patch create mode 100644 buildroot/package/udftools/Config.in create mode 100644 buildroot/package/udftools/udftools.hash create mode 100644 buildroot/package/udftools/udftools.mk delete mode 100644 buildroot/package/util-linux/0001-docs-add-ISC-licence.patch delete mode 100644 buildroot/package/valgrind/0004-Fixes-for-musl-libc.patch create mode 100644 buildroot/package/vlc/0001-Disable-building-of-statically-linked-vlc-binary.patch delete mode 100644 buildroot/package/vlc/0001-vlc-static.patch rename buildroot/package/vlc/{0004-implicit-function-declaration.patch => 0004-Drop-error-implicit-function-declaration-compile-fla.patch} (63%) rename buildroot/package/vlc/{0005-libvorbisidec.patch => 0005-Don-t-hardcode-the-name-of-the-vorbis-and-ogg-librar.patch} (54%) create mode 100644 buildroot/package/vlc/0006-Don-t-assume-X11-is-available-when-Qt5-is-used.patch delete mode 100644 buildroot/package/vlc/0006-qt-x11.patch rename buildroot/package/vlc/{0007-strerror.patch => 0007-Don-t-assume-strerror_l-is-available.patch} (68%) rename buildroot/package/vlc/{0008-fix-fallback-code-and-add-required-realtime-library.patch => 0008-fix-fallback-code-and-add-required-realtime-library-.patch} (87%) rename buildroot/package/vlc/{0009-ffmpeg-3.0.patch => 0009-Changes-for-ffmpeg-3.0.patch} (77%) rename buildroot/package/vlc/{0010-static-assert.patch => 0010-Fix-build-when-using-C99-and-C-11.patch} (69%) rename buildroot/package/vlc/{0011-static-assert.patch => 0011-compat-fix-static_assert.patch} (65%) create mode 100644 buildroot/package/vlc/0013-x264-drop-148-build-support-and-fix-10bit-support.patch create mode 100644 buildroot/package/vte/Config.in create mode 100644 buildroot/package/vte/vte.hash create mode 100644 buildroot/package/vte/vte.mk create mode 100644 buildroot/package/wavpack/0005-issue-30-issue-31-issue-32-no-multiple-format-chunks.patch create mode 100644 buildroot/package/wavpack/0006-issue-33-sanitize-size-of-unknown-chunks-before-mall.patch delete mode 100644 buildroot/package/wayland/0001-Support-architectures-with-non-empty-__USER_LABEL_PR.patch rename buildroot/package/wayland/{0002-configure-add-option-to-disable-tests.patch => 0001-configure-add-option-to-disable-tests.patch} (60%) delete mode 100644 buildroot/package/weston/0002-shared-struct-timespec-is-in-time.h.patch create mode 100644 buildroot/package/woff2/0001-CMake-Handle-multiple-libraries-being-returned-for-B.patch create mode 100644 buildroot/package/woff2/Config.in create mode 100644 buildroot/package/woff2/woff2.hash create mode 100644 buildroot/package/woff2/woff2.mk create mode 100644 buildroot/package/wolfssl/0001-Fix-issue-with-the-creation-of-dummy-fips.h-header.patch delete mode 100644 buildroot/package/x11r7/xcb-proto/0001-Make-whitespace-use-consistent.patch delete mode 100644 buildroot/package/x11r7/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch create mode 100644 buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.hash create mode 100755 buildroot/package/x11r7/xserver_xorg-server/S40xorg delete mode 100644 buildroot/package/x11vnc/0001-Fix-compiler-detection-when-using-without-crypt-cryp.patch create mode 100644 buildroot/package/xen/0003-memfd-fix-configure-test.patch create mode 100644 buildroot/package/xerces/0001-fix-CVE-2017-12627.patch create mode 100644 buildroot/package/xfsprogs/0003-workqueue-add-missing-pthreads-header.patch create mode 100644 buildroot/package/xfsprogs/0004-xfs_scrub-add-missing-paths-header.patch create mode 100644 buildroot/package/xfsprogs/0005-xfs_scrub-fix-cross-compile-with-libunistring.patch create mode 100644 buildroot/package/xfsprogs/0006-xfs_scrub-fix-build-with-older-kernel-headers.patch delete mode 100644 buildroot/package/zeromq/0001-acinclude.m4-make-kernel-specific-flags-cacheable.patch create mode 100644 buildroot/package/zeromq/0001-configure.ac-serach-for-dladdr-only-on-libunwind.patch create mode 100644 buildroot/package/zeromq/0002-acinclude.m4-check-if-latomic-is-needed.patch delete mode 100644 buildroot/package/zeromq/0002-libzmq-Fix-pkg-config-files-for-static-linking.patch delete mode 100644 buildroot/package/znc/0001-Add-time.h-includes-where-appropiate.patch delete mode 100644 buildroot/package/znc/0002-csocket-timeh.patch create mode 100644 buildroot/package/zstd/0001-Split-library-install-target-into-pc-static-shared-a.patch create mode 100644 buildroot/package/zstd/0002-lib-Makefile-create-include-directory-before-headers.patch create mode 100644 buildroot/support/config-fragments/autobuild/br-arm-internal-glibc.config create mode 100644 buildroot/support/config-fragments/autobuild/br-arm-internal-musl.config delete mode 100644 buildroot/support/config-fragments/autobuild/br-bfin-full.config rename buildroot/support/download/{cp => file} (61%) delete mode 100755 buildroot/support/scripts/xorg-release create mode 100644 buildroot/support/testing/tests/package/test_python_cryptography.py create mode 100644 buildroot/support/testing/tests/package/test_syslog_ng.py create mode 120000 buildroot/system/skeleton/dev/fd create mode 120000 buildroot/system/skeleton/dev/stderr create mode 120000 buildroot/system/skeleton/dev/stdin create mode 120000 buildroot/system/skeleton/dev/stdout delete mode 100644 buildroot/toolchain/toolchain-common.in diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index c40ff6f7372..00000000000 --- a/.gitattributes +++ /dev/null @@ -1,3 +0,0 @@ -# Ensure Docker script files uses LF to support Docker for Windows. -# Ensure "git config --global core.autocrlf input" before you clone -* text eol=lf diff --git a/buildroot-external/configs/ova_defconfig b/buildroot-external/configs/ova_defconfig index 90f3b43310f..53ed9fdd0c7 100644 --- a/buildroot-external/configs/ova_defconfig +++ b/buildroot-external/configs/ova_defconfig @@ -23,8 +23,8 @@ BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/kernel.config $(BR2_EXTERNAL_HASSOS_PATH)/board/ova/kernel.config" BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_INSTALL_TARGET=y -BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config" BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y BR2_PACKAGE_JQ=y @@ -45,6 +45,7 @@ BR2_PACKAGE_DROPBEAR=y # BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set BR2_PACKAGE_NETWORK_MANAGER=y BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER=y +BR2_PACKAGE_TINI=y BR2_PACKAGE_DOCKER_ENGINE=y BR2_PACKAGE_OPENVMTOOLS=y BR2_PACKAGE_RAUC=y diff --git a/buildroot-external/configs/rpi2_defconfig b/buildroot-external/configs/rpi2_defconfig index 998b699dbb9..594f55fe7c6 100644 --- a/buildroot-external/configs/rpi2_defconfig +++ b/buildroot-external/configs/rpi2_defconfig @@ -28,8 +28,8 @@ BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2709-rpi-2-b" BR2_LINUX_KERNEL_INSTALL_TARGET=y -BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y +BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y BR2_PACKAGE_BUSYBOX_CONFIG="$(BR2_EXTERNAL_HASSOS_PATH)/busybox.config" BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES=y BR2_PACKAGE_JQ=y @@ -52,6 +52,7 @@ BR2_PACKAGE_DROPBEAR=y # BR2_PACKAGE_IFUPDOWN_SCRIPTS is not set BR2_PACKAGE_NETWORK_MANAGER=y BR2_PACKAGE_NETWORK_MANAGER_MODEM_MANAGER=y +BR2_PACKAGE_TINI=y BR2_PACKAGE_DOCKER_ENGINE=y BR2_PACKAGE_RAUC=y BR2_PACKAGE_RAUC_NETWORK=y diff --git a/buildroot-patches/0001-go-bump-to-1.10.patch b/buildroot-patches/0001-go-bump-to-1.10.patch deleted file mode 100644 index 8a1f96339c7..00000000000 --- a/buildroot-patches/0001-go-bump-to-1.10.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 5d912b53f76ac2c994ab2376f8a366944b4b2f87 Mon Sep 17 00:00:00 2001 -From: Christian Stewart -Date: Mon, 19 Feb 2018 02:24:01 -0500 -Subject: [PATCH] go: bump to 1.10 - -This commit bumps the Go programming language to the 1.10 release. - -Signed-off-by: Christian Stewart ---- - package/go/go.hash | 2 +- - package/go/go.mk | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/package/go/go.hash b/package/go/go.hash -index 445a0b7..73c1578 100644 ---- a/package/go/go.hash -+++ b/package/go/go.hash -@@ -1,2 +1,2 @@ - # From https://golang.org/dl/ --sha256 a4ab229028ed167ba1986825751463605264e44868362ca8e7accc8be057e993 go1.9.src.tar.gz -+sha256 f3de49289405fda5fd1483a8fe6bd2fa5469e005fd567df64485c4fa000c7f24 go1.10.src.tar.gz -diff --git a/package/go/go.mk b/package/go/go.mk -index 23facbd..4d55e16 100644 ---- a/package/go/go.mk -+++ b/package/go/go.mk -@@ -4,7 +4,7 @@ - # - ################################################################################ - --GO_VERSION = 1.9 -+GO_VERSION = 1.10 - GO_SITE = https://storage.googleapis.com/golang - GO_SOURCE = go$(GO_VERSION).src.tar.gz - --- -2.9.0.windows.1 - diff --git a/buildroot-patches/0002-tini-new-package.patch b/buildroot-patches/0001-tini-new-package.patch similarity index 95% rename from buildroot-patches/0002-tini-new-package.patch rename to buildroot-patches/0001-tini-new-package.patch index 0f213f4b0a1..3100b8c008f 100644 --- a/buildroot-patches/0002-tini-new-package.patch +++ b/buildroot-patches/0001-tini-new-package.patch @@ -14,7 +14,7 @@ Signed-off-by: Christian Stewart Changes since v2: - - Upgraded to v0.17.0 + - Upgraded to v0.18.0 - Added hash for license file --- package/Config.in | 1 + @@ -67,7 +67,7 @@ index 0000000..c4f85c4 +++ b/package/tini/tini.hash @@ -0,0 +1,3 @@ +# Locally computed -+sha256 5244691718f6856db74dcf6dbb3576a901e737f41412e7895747f0ccb4ccaff0 tini-v0.17.0.tar.gz ++sha256 1097675352d6317b547e73f9dc7c6839fd0bb0d96dafc2e5c95506bb324049a2 tini-v0.18.0.tar.gz +sha256 e5f46bca81266bdd511cf08018d66866870531794569c04f9b45f50dd23c28b0 LICENSE diff --git a/package/tini/tini.mk b/package/tini/tini.mk new file mode 100644 @@ -81,7 +81,7 @@ index 0000000..9f9d986 +# +################################################################################ + -+TINI_VERSION = v0.17.0 ++TINI_VERSION = v0.18.0 +TINI_SITE = $(call github,krallin,tini,$(TINI_VERSION)) + +TINI_LICENSE = MIT diff --git a/buildroot-patches/0002-docker-containerd-bump-to-v1.1.0.patch b/buildroot-patches/0002-docker-containerd-bump-to-v1.1.0.patch new file mode 100644 index 00000000000..96b86e24a95 --- /dev/null +++ b/buildroot-patches/0002-docker-containerd-bump-to-v1.1.0.patch @@ -0,0 +1,54 @@ +From 534557f34b9ab95fb38fc2cd0fe04829264ee653 Mon Sep 17 00:00:00 2001 +From: Pascal Vizeli +Date: Mon, 28 May 2018 12:40:28 +0000 +Subject: [PATCH 1/1] docker-containerd: bump to v1.1.0 + +Signed-off-by: Pascal Vizeli +--- + package/docker-containerd/docker-containerd.hash | 2 +- + package/docker-containerd/docker-containerd.mk | 13 +++++-------- + 2 files changed, 6 insertions(+), 9 deletions(-) + +diff --git a/package/docker-containerd/docker-containerd.hash b/package/docker-containerd/docker-containerd.hash +index 992eb5b01a..257c607841 100644 +--- a/package/docker-containerd/docker-containerd.hash ++++ b/package/docker-containerd/docker-containerd.hash +@@ -1,2 +1,2 @@ + # Computed locally +-sha256 da89086a7c643702a2ddecec67a45d3d8e4b0d610dd19036be63e6bd54cc1a85 docker-containerd-9048e5e50717ea4497b757314bad98ea3763c145.tar.gz ++sha256 08f057ece7e518b14cce2e9737228a5a899a7b58b78248a03e02f4a6c079eeaf docker-containerd-v1.1.0.tar.gz +diff --git a/package/docker-containerd/docker-containerd.mk b/package/docker-containerd/docker-containerd.mk +index 88e27b5ed4..49c3d8ec0d 100644 +--- a/package/docker-containerd/docker-containerd.mk ++++ b/package/docker-containerd/docker-containerd.mk +@@ -4,22 +4,19 @@ + # + ################################################################################ + +-DOCKER_CONTAINERD_VERSION = 9048e5e50717ea4497b757314bad98ea3763c145 +-DOCKER_CONTAINERD_SITE = $(call github,docker,containerd,$(DOCKER_CONTAINERD_VERSION)) ++DOCKER_CONTAINERD_VERSION = v1.1.0 ++DOCKER_CONTAINERD_SITE = $(call github,containerd,containerd,$(DOCKER_CONTAINERD_VERSION)) + DOCKER_CONTAINERD_LICENSE = Apache-2.0 + DOCKER_CONTAINERD_LICENSE_FILES = LICENSE.code + +-DOCKER_CONTAINERD_WORKSPACE = vendor +- +-DOCKER_CONTAINERD_LDFLAGS = \ +- -X github.com/docker/containerd.GitCommit=$(DOCKER_CONTAINERD_VERSION) +- +-DOCKER_CONTAINERD_BUILD_TARGETS = ctr containerd containerd-shim ++DOCKER_CONTAINERD_BUILD_TARGETS = cmd/ctr cmd/containerd cmd/containerd-shim ++DOCKER_CONTAINERD_TAGS = apparmor no_btrfs + + DOCKER_CONTAINERD_INSTALL_BINS = containerd containerd-shim + + define DOCKER_CONTAINERD_INSTALL_SYMLINKS + ln -fs runc $(TARGET_DIR)/usr/bin/docker-runc ++ ln -fs containerd $(TARGET_DIR)/usr/bin/docker-containerd + ln -fs containerd-shim $(TARGET_DIR)/usr/bin/docker-containerd-shim + endef + +-- +2.17.0 + diff --git a/buildroot-patches/0003-docker-containerd-bump-to-v1.0.2.patch b/buildroot-patches/0003-docker-containerd-bump-to-v1.0.2.patch deleted file mode 100644 index 7d63c7bf907..00000000000 --- a/buildroot-patches/0003-docker-containerd-bump-to-v1.0.2.patch +++ /dev/null @@ -1,123 +0,0 @@ -From 32bad70efcef45070b301cf0797e3b8491439396 Mon Sep 17 00:00:00 2001 -From: Christian Stewart -Date: Wed, 20 Sep 2017 03:10:56 +0100 -Subject: [PATCH] docker-containerd: bump to v1.0.2 - -This commit bumps docker-containerd to v1.0.2. - -This is a requisite bump for the upgrade of docker-engine to v17.12.1-ce-rc1. - -This patch also enables seccomp in containerd if the target system uses it. - -Signed-off-by: Christian Stewart ---- - package/docker-containerd/Config.in | 12 ++++++++ - package/docker-containerd/docker-containerd.hash | 2 +- - package/docker-containerd/docker-containerd.mk | 38 ++++++++++++++++++------ - 3 files changed, 42 insertions(+), 10 deletions(-) - -diff --git a/package/docker-containerd/Config.in b/package/docker-containerd/Config.in -index 2f7bf71..851345f 100644 ---- a/package/docker-containerd/Config.in -+++ b/package/docker-containerd/Config.in -@@ -15,6 +15,18 @@ config BR2_PACKAGE_DOCKER_CONTAINERD - - https://github.com/docker/containerd - -+if BR2_PACKAGE_DOCKER_CONTAINERD -+ -+config BR2_PACKAGE_DOCKER_CONTAINERD_DRIVER_BTRFS -+ bool "btrfs snapshot driver" -+ depends on BR2_USE_MMU # btrfs-progs -+ depends on BR2_TOOLCHAIN_HAS_THREADS # btrfs-progs -+ select BR2_PACKAGE_BTRFS_PROGS -+ help -+ Build the btrfs snapshot driver for containerd. -+ -+endif -+ - comment "docker-containerd needs a toolchain w/ threads" - depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS - depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS -diff --git a/package/docker-containerd/docker-containerd.hash b/package/docker-containerd/docker-containerd.hash -index 992eb5b..bc67fe5 100644 ---- a/package/docker-containerd/docker-containerd.hash -+++ b/package/docker-containerd/docker-containerd.hash -@@ -1,2 +1,2 @@ - # Computed locally --sha256 da89086a7c643702a2ddecec67a45d3d8e4b0d610dd19036be63e6bd54cc1a85 docker-containerd-9048e5e50717ea4497b757314bad98ea3763c145.tar.gz -+sha256 a31a12846a7a2f697f8fdd82cedd1626fc5f6345e59ae880664196c73e4c2226 docker-containerd-v1.0.2.tar.gz -diff --git a/package/docker-containerd/docker-containerd.mk b/package/docker-containerd/docker-containerd.mk -index ffbadb0..230307d 100644 ---- a/package/docker-containerd/docker-containerd.mk -+++ b/package/docker-containerd/docker-containerd.mk -@@ -4,37 +4,57 @@ - # - ################################################################################ - --DOCKER_CONTAINERD_VERSION = 9048e5e50717ea4497b757314bad98ea3763c145 --DOCKER_CONTAINERD_SITE = $(call github,docker,containerd,$(DOCKER_CONTAINERD_VERSION)) -+DOCKER_CONTAINERD_VERSION = v1.0.2 -+DOCKER_CONTAINERD_COMMIT = cfd04396dc68220d1cecbe686a6cc3aa5ce3667c -+DOCKER_CONTAINERD_SITE = $(call github,containerd,containerd,$(DOCKER_CONTAINERD_VERSION)) - DOCKER_CONTAINERD_LICENSE = Apache-2.0 - DOCKER_CONTAINERD_LICENSE_FILES = LICENSE.code - - DOCKER_CONTAINERD_DEPENDENCIES = host-go - --DOCKER_CONTAINERD_GOPATH = "$(@D)/vendor" -+DOCKER_CONTAINERD_GOPATH = "$(@D)/gopath" - DOCKER_CONTAINERD_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ - CGO_ENABLED=1 \ - GOBIN="$(@D)/bin" \ - GOPATH="$(DOCKER_CONTAINERD_GOPATH)" - - DOCKER_CONTAINERD_GLDFLAGS = \ -- -X github.com/docker/containerd.GitCommit=$(DOCKER_CONTAINERD_VERSION) -+ -X github.com/containerd/containerd.GitCommit=$(DOCKER_CONTAINERD_COMMIT) -+ -+ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) -+DOCKER_CONTAINERD_BUILD_TAGS += seccomp -+DOCKER_CONTAINERD_DEPENDENCIES += libseccomp -+endif -+ -+ifeq ($(BR2_PACKAGE_DOCKER_CONTAINERD_DRIVER_BTRFS),y) -+DOCKER_CONTAINERD_DEPENDENCIES += btrfs-progs -+else -+DOCKER_CONTAINERD_BUILD_TAGS += no_btrfs -+endif - - ifeq ($(BR2_STATIC_LIBS),y) --DOCKER_CONTAINERD_GLDFLAGS += -extldflags '-static' -+DOCKER_CONTAINERD_GLDFLAGS += -extldflags '-static -fno-PIC' -+DOCKER_CONTAINERD_BUILD_TAGS += static_build -+DOCKER_CONTAINERD_BUILD_FLAGS += -buildmode pie - endif - - define DOCKER_CONTAINERD_CONFIGURE_CMDS -- mkdir -p $(DOCKER_CONTAINERD_GOPATH)/src/github.com/docker -- ln -s $(@D) $(DOCKER_CONTAINERD_GOPATH)/src/github.com/docker/containerd -+ mkdir -p $(DOCKER_CONTAINERD_GOPATH)/src/github.com/containerd -+ ln -s $(@D) $(DOCKER_CONTAINERD_GOPATH)/src/github.com/containerd/containerd - mkdir -p $(DOCKER_CONTAINERD_GOPATH)/src/github.com/opencontainers - ln -s $(RUNC_SRCDIR) $(DOCKER_CONTAINERD_GOPATH)/src/github.com/opencontainers/runc - endef - - define DOCKER_CONTAINERD_BUILD_CMDS - $(foreach d,ctr containerd containerd-shim,\ -- cd $(@D); $(DOCKER_CONTAINERD_MAKE_ENV) $(HOST_DIR)/bin/go build \ -- -v -o $(@D)/bin/$(d) -ldflags "$(DOCKER_CONTAINERD_GLDFLAGS)" ./$(d)$(sep)) -+ cd $(DOCKER_CONTAINERD_GOPATH)/src/github.com/containerd/containerd; \ -+ $(DOCKER_CONTAINERD_MAKE_ENV) $(HOST_DIR)/bin/go build \ -+ -v -i -o $(@D)/bin/$(d) \ -+ -tags "$(DOCKER_CONTAINERD_BUILD_TAGS)" \ -+ -ldflags "$(DOCKER_CONTAINERD_GLDFLAGS)" \ -+ $(DOCKER_CONTAINERD_BUILD_FLAGS) \ -+ ./cmd/$(d)$(sep) -+ ) - endef - - define DOCKER_CONTAINERD_INSTALL_TARGET_CMDS --- -2.9.0.windows.1 - diff --git a/buildroot-patches/0003-runc-bump-to-1.0-rc5.patch b/buildroot-patches/0003-runc-bump-to-1.0-rc5.patch new file mode 100644 index 00000000000..4998164ece2 --- /dev/null +++ b/buildroot-patches/0003-runc-bump-to-1.0-rc5.patch @@ -0,0 +1,45 @@ +From dd1fe57cbdb9b7f67eb786f62fd165e332f69d99 Mon Sep 17 00:00:00 2001 +From: Pascal Vizeli +Date: Sun, 27 May 2018 19:52:05 +0000 +Subject: [PATCH 1/1] runc: bump to 1.0-rc5 + +Signed-off-by: Pascal Vizeli +--- + package/runc/runc.hash | 2 +- + package/runc/runc.mk | 6 ++---- + 2 files changed, 3 insertions(+), 5 deletions(-) + +diff --git a/package/runc/runc.hash b/package/runc/runc.hash +index 3e188c5c79..26fdd9727b 100644 +--- a/package/runc/runc.hash ++++ b/package/runc/runc.hash +@@ -1,2 +1,2 @@ + # Locally computed +-sha256 b5c50d7d9a5f610d5424f96196efa306ec708fd9299302dd919545099c16b7c1 runc-9c2d8d184e5da67c95d601382adf14862e4f2228.tar.gz ++sha256 770e180d1cca1f3c1a67512ebf9720caafe97af4fc2fe12fa43a3cf7bfa77522 runc-v1.0.0-rc5.tar.gz +diff --git a/package/runc/runc.mk b/package/runc/runc.mk +index f1586f32b2..aa23fce3b0 100644 +--- a/package/runc/runc.mk ++++ b/package/runc/runc.mk +@@ -4,16 +4,14 @@ + # + ################################################################################ + +-RUNC_VERSION = 9c2d8d184e5da67c95d601382adf14862e4f2228 ++RUNC_VERSION = v1.0.0-rc5 + RUNC_SITE = $(call github,opencontainers,runc,$(RUNC_VERSION)) + RUNC_LICENSE = Apache-2.0 + RUNC_LICENSE_FILES = LICENSE + + RUNC_WORKSPACE = Godeps/_workspace + +-RUNC_LDFLAGS = -X main.gitCommit=$(RUNC_VERSION) +- +-RUNC_TAGS = cgo static_build ++RUNC_TAGS = cgo static_build apparmor + + ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) + RUNC_TAGS += seccomp +-- +2.17.0 + diff --git a/buildroot-patches/0004-docker-engine-bump-to-v18.03.1-ce.patch b/buildroot-patches/0004-docker-engine-bump-to-v18.03.1-ce.patch new file mode 100644 index 00000000000..fc19cc9c5de --- /dev/null +++ b/buildroot-patches/0004-docker-engine-bump-to-v18.03.1-ce.patch @@ -0,0 +1,123 @@ +From 506db3cdb825a3bbc67939ce0bf5e72c959ac42e Mon Sep 17 00:00:00 2001 +From: Pascal Vizeli +Date: Mon, 28 May 2018 12:48:37 +0000 +Subject: [PATCH 1/1] docker-engine: bump to v18.03.1-ce + +Signed-off-by: Pascal Vizeli +--- + package/docker-engine/docker-engine.hash | 2 +- + package/docker-engine/docker-engine.mk | 46 +++++++++++++++++------- + 2 files changed, 34 insertions(+), 14 deletions(-) + +diff --git a/package/docker-engine/docker-engine.hash b/package/docker-engine/docker-engine.hash +index 6c0ed338a5..19c6c73122 100644 +--- a/package/docker-engine/docker-engine.hash ++++ b/package/docker-engine/docker-engine.hash +@@ -1,2 +1,2 @@ + # Locally calculated +-sha256 4716df117d867b82ddab2e82395cd40aa3d0925a689eedcec8919729e4c9f121 docker-engine-v17.05.0-ce.tar.gz ++sha256 b05f3709844c45d49922914cf6eb71d4131d0bd5389361376ff6a86aa186f4a0 docker-engine-v18.03.1-ce.tar.gz +diff --git a/package/docker-engine/docker-engine.mk b/package/docker-engine/docker-engine.mk +index ba84b4cf0a..12c8ad5a61 100644 +--- a/package/docker-engine/docker-engine.mk ++++ b/package/docker-engine/docker-engine.mk +@@ -4,9 +4,8 @@ + # + ################################################################################ + +-DOCKER_ENGINE_VERSION = v17.05.0-ce +-DOCKER_ENGINE_COMMIT = 89658bed64c2a8fe05a978e5b87dbec409d57a0f +-DOCKER_ENGINE_SITE = $(call github,docker,docker,$(DOCKER_ENGINE_VERSION)) ++DOCKER_ENGINE_VERSION = v18.03.1-ce ++DOCKER_ENGINE_SITE = $(call github,docker,docker-ce,$(DOCKER_ENGINE_VERSION)) + + DOCKER_ENGINE_LICENSE = Apache-2.0 + DOCKER_ENGINE_LICENSE_FILES = LICENSE +@@ -15,14 +14,16 @@ DOCKER_ENGINE_DEPENDENCIES = host-go host-pkgconf + + DOCKER_ENGINE_LDFLAGS = \ + -X main.GitCommit=$(DOCKER_ENGINE_VERSION) \ +- -X main.Version=$(DOCKER_ENGINE_VERSION) ++ -X main.Version=$(DOCKER_ENGINE_VERSION) \ ++ -X github.com/docker/cli/cli.GitCommit=$(DOCKER_ENGINE_VERSION) \ ++ -X github.com/docker/cli/cli.Version=$(DOCKER_ENGINE_VERSION) + + ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT),y) + DOCKER_ENGINE_LDFLAGS += -extldflags '-static' + endif + +-DOCKER_ENGINE_TAGS = cgo exclude_graphdriver_zfs autogen +-DOCKER_ENGINE_BUILD_TARGETS = cmd/docker ++DOCKER_ENGINE_TAGS = cgo exclude_graphdriver_zfs autogen apparmor ++DOCKER_ENGINE_BUILD_TARGETS = docker + + ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) + DOCKER_ENGINE_TAGS += seccomp +@@ -36,7 +37,7 @@ endif + + ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y) + DOCKER_ENGINE_TAGS += daemon +-DOCKER_ENGINE_BUILD_TARGETS += cmd/dockerd ++DOCKER_ENGINE_BUILD_TARGETS += dockerd + endif + + ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_EXPERIMENTAL),y) +@@ -61,25 +62,26 @@ else + DOCKER_ENGINE_TAGS += exclude_graphdriver_vfs + endif + +-DOCKER_ENGINE_INSTALL_BINS = $(notdir $(DOCKER_ENGINE_BUILD_TARGETS)) +- + define DOCKER_ENGINE_RUN_AUTOGEN +- cd $(@D) && \ +- GITCOMMIT="$$(echo $(DOCKER_ENGINE_COMMIT) | head -c7)" \ ++ ln -fs $(@D)/components/engine $(@D)/_gopath/src/github.com/docker/docker ++ ln -fs $(@D)/components/cli $(@D)/_gopath/src/github.com/docker/cli ++ cd $(@D)/components/engine && \ + BUILDTIME="$$(date)" \ ++ IAMSTATIC="true" \ + VERSION="$(patsubst v%,%,$(DOCKER_ENGINE_VERSION))" \ + PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" $(TARGET_MAKE_ENV) \ + bash ./hack/make/.go-autogen + endef + + DOCKER_ENGINE_POST_CONFIGURE_HOOKS += DOCKER_ENGINE_RUN_AUTOGEN ++DOCKER_ENGINE_INSTALL_BINS = $(notdir $(DOCKER_ENGINE_BUILD_TARGETS)) + + ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y) + + define DOCKER_ENGINE_INSTALL_INIT_SYSTEMD +- $(INSTALL) -D -m 0644 $(@D)/contrib/init/systemd/docker.service \ ++ $(INSTALL) -D -m 0644 $(@D)/components/engine/contrib/init/systemd/docker.service \ + $(TARGET_DIR)/usr/lib/systemd/system/docker.service +- $(INSTALL) -D -m 0644 $(@D)/contrib/init/systemd/docker.socket \ ++ $(INSTALL) -D -m 0644 $(@D)/components/engine/contrib/init/systemd/docker.socket \ + $(TARGET_DIR)/usr/lib/systemd/system/docker.socket + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/ + ln -fs ../../../../usr/lib/systemd/system/docker.service \ +@@ -92,4 +94,22 @@ endef + + endif + ++define DOCKER_ENGINE_BUILD_CMDS ++ $(foreach target,$(DOCKER_ENGINE_BUILD_TARGETS), \ ++ cd $(@D)/$(DOCKER_ENGINE_WORKSPACE)/src/github.com/docker/$(if $(filter $(target),dockerd),docker,cli); \ ++ $(GO_TARGET_ENV) \ ++ GOPATH="$(@D)/$(DOCKER_ENGINE_WORKSPACE)" \ ++ $(DOCKER_ENGINE_GO_ENV) \ ++ $(GO_BIN) build -v $(DOCKER_ENGINE_BUILD_OPTS) \ ++ -o $(@D)/bin/$(target) \ ++ ./cmd/$(target) ++ ) ++endef ++ ++define DOCKER_ENGINE_INSTALL_SYMLINKS ++ ln -fs tini $(TARGET_DIR)/usr/bin/docker-init ++endef ++ ++DOCKER_ENGINE_POST_INSTALL_TARGET_HOOKS += DOCKER_ENGINE_INSTALL_SYMLINKS ++ + $(eval $(golang-package)) +-- +2.17.0 + diff --git a/buildroot-patches/0004-runc-bump-to-9f9c96235cc.patch b/buildroot-patches/0004-runc-bump-to-9f9c96235cc.patch deleted file mode 100644 index 77f0c2452c1..00000000000 --- a/buildroot-patches/0004-runc-bump-to-9f9c96235cc.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 6a48f06457a12bd306ca721c7c673183c3a62783 Mon Sep 17 00:00:00 2001 -From: Christian Stewart -Date: Wed, 20 Sep 2017 03:10:11 +0100 -Subject: [PATCH] runc: bump to 9f9c96235cc - -This commit bumps runc to the requisite version for Docker 2018.03. - -Signed-off-by: Christian Stewart ---- - package/runc/runc.hash | 2 +- - package/runc/runc.mk | 17 +++++++++++------ - 2 files changed, 12 insertions(+), 7 deletions(-) - -diff --git a/package/runc/runc.hash b/package/runc/runc.hash -index 3e188c5..f762707 100644 ---- a/package/runc/runc.hash -+++ b/package/runc/runc.hash -@@ -1,2 +1,2 @@ - # Locally computed --sha256 b5c50d7d9a5f610d5424f96196efa306ec708fd9299302dd919545099c16b7c1 runc-9c2d8d184e5da67c95d601382adf14862e4f2228.tar.gz -+sha256 df8e7cd1d332d97b468ee455164f3959246bb5fc639dd8042d0db3bded621ad7 runc-6c55f98695e902427906eed2c799e566e3d3dfb5.tar.gz -diff --git a/package/runc/runc.mk b/package/runc/runc.mk -index fb3fec2..f19fc5f 100644 ---- a/package/runc/runc.mk -+++ b/package/runc/runc.mk -@@ -4,14 +4,14 @@ - # - ################################################################################ - --RUNC_VERSION = 9c2d8d184e5da67c95d601382adf14862e4f2228 -+RUNC_VERSION = 6c55f98695e902427906eed2c799e566e3d3dfb5 - RUNC_SITE = $(call github,opencontainers,runc,$(RUNC_VERSION)) - RUNC_LICENSE = Apache-2.0 - RUNC_LICENSE_FILES = LICENSE - - RUNC_DEPENDENCIES = host-go - --RUNC_GOPATH = "$(@D)/Godeps/_workspace" -+RUNC_GOPATH = $(@D)/gopath - RUNC_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ - CGO_ENABLED=1 \ - GOBIN="$(@D)/bin" \ -@@ -23,9 +23,10 @@ RUNC_GLDFLAGS = \ - - ifeq ($(BR2_STATIC_LIBS),y) - RUNC_GLDFLAGS += -extldflags '-static' -+RUNC_GOTAGS += static_build - endif - --RUNC_GOTAGS = cgo static_build -+RUNC_GOTAGS = cgo - - ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) - RUNC_GOTAGS += seccomp -@@ -38,9 +39,13 @@ define RUNC_CONFIGURE_CMDS - endef - - define RUNC_BUILD_CMDS -- cd $(@D) && $(RUNC_MAKE_ENV) $(HOST_DIR)/bin/go \ -- build -v -o $(@D)/bin/runc \ -- -tags "$(RUNC_GOTAGS)" -ldflags "$(RUNC_GLDFLAGS)" . -+ cd $(RUNC_GOPATH)/src/github.com/opencontainers/runc; \ -+ $(RUNC_MAKE_ENV) \ -+ $(HOST_DIR)/bin/go build -v -i \ -+ -o $(@D)/bin/runc \ -+ -tags "$(RUNC_GOTAGS)" \ -+ -ldflags "$(RUNC_GLDFLAGS)" \ -+ ./ - endef - - define RUNC_INSTALL_TARGET_CMDS --- -2.9.0.windows.1 - diff --git a/buildroot-patches/0005-docker-engine-add-support-for-init-processes.patch b/buildroot-patches/0005-docker-engine-add-support-for-init-processes.patch deleted file mode 100644 index 5b442ad7feb..00000000000 --- a/buildroot-patches/0005-docker-engine-add-support-for-init-processes.patch +++ /dev/null @@ -1,92 +0,0 @@ -From 16fc5c50a96aad21f8f6b8db202269cc8fee1c36 Mon Sep 17 00:00:00 2001 -From: Christian Stewart -Date: Tue, 9 May 2017 18:03:55 -0400 -Subject: [PATCH] docker-engine: add support for init processes - -When a docker container is run with the --init flag, the Docker engine -uses the docker-init binary as PID 1 inside the container. This is -necessary in may cases to avoid issues with signal handling, zombie -processes, and other quirks when running as PID 1. - -The docker-init binary is backed by tini on default, but optionally can -be changed to docker-init by user preference. - -Furthermore, this patch fixes the following Docker error: - - dockerd: level=warning msg="failed to retrieve docker-init version" - -Signed-off-by: Christian Stewart ---- - package/docker-engine/Config.in | 26 ++++++++++++++++++++++++++ - package/docker-engine/docker-engine.mk | 11 +++++++++++ - 2 files changed, 37 insertions(+) - -diff --git a/package/docker-engine/Config.in b/package/docker-engine/Config.in -index 05670a7..7d9a87f 100644 ---- a/package/docker-engine/Config.in -+++ b/package/docker-engine/Config.in -@@ -33,6 +33,32 @@ config BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT - - if BR2_PACKAGE_DOCKER_ENGINE_DAEMON - -+choice -+ bool "docker-init to use" -+ default BR2_PACKAGE_DOCKER_ENGINE_INIT_TINI -+ help -+ The docker engine uses a minimal init process as PID 1 -+ inside containers. There are several implementations -+ of this init process. -+ -+config BR2_PACKAGE_DOCKER_ENGINE_INIT_TINI -+ bool "tini" -+ select BR2_PACKAGE_TINI -+ help -+ Use Tini as the container init process. -+ -+ https://github.com/krallin/tini -+ -+config BR2_PACKAGE_DOCKER_ENGINE_INIT_DUMB_INIT -+ bool "dumb-init" -+ select BR2_PACKAGE_DUMB_INIT -+ help -+ Use dumb-init as the container init process. -+ -+ https://github.com/Yelp/dumb-init -+ -+endchoice -+ - config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS - bool "btrfs filesystem driver" - depends on BR2_USE_MMU # btrfs-progs -diff --git a/package/docker-engine/docker-engine.mk b/package/docker-engine/docker-engine.mk -index 8928f07..a2776ed 100644 ---- a/package/docker-engine/docker-engine.mk -+++ b/package/docker-engine/docker-engine.mk -@@ -50,6 +50,13 @@ endif - ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y) - DOCKER_ENGINE_BUILD_TAGS += daemon - DOCKER_ENGINE_BUILD_TARGETS += dockerd -+ -+ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_INIT_DUMB_INIT),y) -+DOCKER_ENGINE_INIT = dumb-init -+else -+DOCKER_ENGINE_INIT = tini -+endif -+ - endif - - ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_EXPERIMENTAL),y) -@@ -119,6 +126,10 @@ define DOCKER_ENGINE_INSTALL_TARGET_CMDS - $(foreach target,$(DOCKER_ENGINE_BUILD_TARGETS), \ - $(INSTALL) -D -m 0755 $(@D)/bin/$(target) $(TARGET_DIR)/usr/bin/$(target) - ) -+ -+ $(if $(filter $(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y), \ -+ ln -fs $(DOCKER_ENGINE_INIT) $(TARGET_DIR)/usr/bin/docker-init -+ ) - endef - - $(eval $(generic-package)) --- -2.9.0.windows.1 - diff --git a/buildroot-patches/0005-docker-proxy-bump-to-8436c5cdbc627b9c51f9a02742c5a39.patch b/buildroot-patches/0005-docker-proxy-bump-to-8436c5cdbc627b9c51f9a02742c5a39.patch new file mode 100644 index 00000000000..e0e7b813f3f --- /dev/null +++ b/buildroot-patches/0005-docker-proxy-bump-to-8436c5cdbc627b9c51f9a02742c5a39.patch @@ -0,0 +1,45 @@ +From ed325bba70db9b66461e212012d29bc8110966c9 Mon Sep 17 00:00:00 2001 +From: Pascal Vizeli +Date: Mon, 28 May 2018 11:02:14 +0000 +Subject: [PATCH 1/1] docker-proxy: bump to + 8436c5cdbc627b9c51f9a02742c5a3955b19c5e1 + +Signed-off-by: Pascal Vizeli +--- + package/docker-proxy/docker-proxy.hash | 2 +- + package/docker-proxy/docker-proxy.mk | 4 +--- + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/package/docker-proxy/docker-proxy.hash b/package/docker-proxy/docker-proxy.hash +index 3ec184f54f..9a9ec8bc3f 100644 +--- a/package/docker-proxy/docker-proxy.hash ++++ b/package/docker-proxy/docker-proxy.hash +@@ -1,2 +1,2 @@ + # Locally calculated +-sha256 2eee331b6ded567a36e7db708405b34032b93938682cf049025f48b96d755bf6 docker-proxy-7b2b1feb1de4817d522cc372af149ff48d25028e.tar.gz ++sha256 45db634cbcbc68377129008b71160a0074e30da453e9ab5afebcbaec4d2a4733 docker-proxy-8436c5cdbc627b9c51f9a02742c5a3955b19c5e1.tar.gz +diff --git a/package/docker-proxy/docker-proxy.mk b/package/docker-proxy/docker-proxy.mk +index dfa9d4347d..fc68ac7657 100644 +--- a/package/docker-proxy/docker-proxy.mk ++++ b/package/docker-proxy/docker-proxy.mk +@@ -4,7 +4,7 @@ + # + ################################################################################ + +-DOCKER_PROXY_VERSION = 7b2b1feb1de4817d522cc372af149ff48d25028e ++DOCKER_PROXY_VERSION = 8436c5cdbc627b9c51f9a02742c5a3955b19c5e1 + DOCKER_PROXY_SITE = $(call github,docker,libnetwork,$(DOCKER_PROXY_VERSION)) + + DOCKER_PROXY_LICENSE = Apache-2.0 +@@ -12,8 +12,6 @@ DOCKER_PROXY_LICENSE_FILES = LICENSE + + DOCKER_PROXY_DEPENDENCIES = host-pkgconf + +-DOCKER_PROXY_WORKSPACE = gopath +- + DOCKER_PROXY_BUILD_TARGETS = cmd/proxy + + define DOCKER_PROXY_INSTALL_TARGET_CMDS +-- +2.17.0 + diff --git a/buildroot-patches/0011-NetworkManager-allow-to-wait-on-boot.patch b/buildroot-patches/0006-NetworkManager-allow-to-wait-on-boot.patch similarity index 100% rename from buildroot-patches/0011-NetworkManager-allow-to-wait-on-boot.patch rename to buildroot-patches/0006-NetworkManager-allow-to-wait-on-boot.patch diff --git a/buildroot-patches/0006-docker-engine-bump-to-v17.12.1-ce.patch b/buildroot-patches/0006-docker-engine-bump-to-v17.12.1-ce.patch deleted file mode 100644 index df56a09e7c9..00000000000 --- a/buildroot-patches/0006-docker-engine-bump-to-v17.12.1-ce.patch +++ /dev/null @@ -1,180 +0,0 @@ -From 3305bc41073e79203c2355a1770d44e28b83a948 Mon Sep 17 00:00:00 2001 -From: Christian Stewart -Date: Wed, 20 Sep 2017 01:48:40 +0100 -Subject: [PATCH] docker-engine: bump to v17.12.1-ce - -This commit bumps docker-engine to v17.12.1-ce - -The docker-engine repository has now been moved to: - - https://github.com/docker/docker-ce - -The CLI and the daemon have been split into separate repositories: - - - https://github.com/docker/cli - - https://github.com/moby/moby - -The daemon codebase lives in the "moby" repo, but the import paths in Go are: - - github.com/docker/docker - -As before. Presumably, the maintainers will eventually split the engine out -to a different repository as well. - -Please note that the entire docker/cli and moby/moby repositories are copied -into the docker-ce repository, as well as all of their dependencies in the -vendor directories. This means that downloading the docker-ce source tarball -contains: - - - The cli sources - - The daemon sources - - Two copies of all of the dependencies of both - -At the moment this is unavoidable, but does produce a working build. - -Signed-off-by: Christian Stewart - ---- - -Changes since initial series: - - - Upgrade to 2017.12-ce due to critical bugs in 2018.02. - -Recommended merge to next branch. ---- - package/docker-engine/docker-engine.hash | 2 +- - package/docker-engine/docker-engine.mk | 48 +++++++++++++++++++------------- - 2 files changed, 29 insertions(+), 21 deletions(-) - -diff --git a/package/docker-engine/docker-engine.hash b/package/docker-engine/docker-engine.hash -index 6c0ed33..add0b89 100644 ---- a/package/docker-engine/docker-engine.hash -+++ b/package/docker-engine/docker-engine.hash -@@ -1,2 +1,2 @@ - # Locally calculated --sha256 4716df117d867b82ddab2e82395cd40aa3d0925a689eedcec8919729e4c9f121 docker-engine-v17.05.0-ce.tar.gz -+sha256 e4b58c26c05a800d96d3e5d76375654751d4d1367b5727c798369cf3c78a590e docker-engine-v17.12.1-ce.tar.gz -diff --git a/package/docker-engine/docker-engine.mk b/package/docker-engine/docker-engine.mk -index a2776ed..f9cb4b8 100644 ---- a/package/docker-engine/docker-engine.mk -+++ b/package/docker-engine/docker-engine.mk -@@ -4,9 +4,8 @@ - # - ################################################################################ - --DOCKER_ENGINE_VERSION = v17.05.0-ce --DOCKER_ENGINE_COMMIT = 89658bed64c2a8fe05a978e5b87dbec409d57a0f --DOCKER_ENGINE_SITE = $(call github,docker,docker,$(DOCKER_ENGINE_VERSION)) -+DOCKER_ENGINE_VERSION = v17.12.1-ce -+DOCKER_ENGINE_SITE = $(call github,docker,docker-ce,$(DOCKER_ENGINE_VERSION)) - - DOCKER_ENGINE_LICENSE = Apache-2.0 - DOCKER_ENGINE_LICENSE_FILES = LICENSE -@@ -19,37 +18,43 @@ DOCKER_ENGINE_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ - CGO_NO_EMULATION=1 \ - GOBIN="$(@D)/bin" \ - GOPATH="$(DOCKER_ENGINE_GOPATH)" \ -- PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \ -+ PKG_CONFIG="$(PKG_CONFIG)" \ - $(TARGET_MAKE_ENV) - - DOCKER_ENGINE_GLDFLAGS = \ - -X main.GitCommit=$(DOCKER_ENGINE_VERSION) \ -- -X main.Version=$(DOCKER_ENGINE_VERSION) -+ -X main.Version=$(DOCKER_ENGINE_VERSION) \ -+ -X github.com/docker/cli/cli.GitCommit=$(DOCKER_ENGINE_VERSION) \ -+ -X github.com/docker/cli/cli.Version=$(DOCKER_ENGINE_VERSION) -+ -+DOCKER_ENGINE_BUILD_TAGS = cgo exclude_graphdriver_zfs autogen -+DOCKER_ENGINE_BUILD_TARGETS = cli:docker -+DOCKER_ENGINE_BUILD_TARGET_PARSE = \ -+ export targetpkg=$$(echo $(target) | cut -d: -f1); \ -+ export targetbin=$$(echo $(target) | cut -d: -f2) - - ifeq ($(BR2_STATIC_LIBS),y) - DOCKER_ENGINE_GLDFLAGS += -extldflags '-static' -+DOCKER_ENGINE_BUILD_TAGS += static_build - else - ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT),y) - DOCKER_ENGINE_GLDFLAGS_DOCKER += -extldflags '-static' - endif - endif - --DOCKER_ENGINE_BUILD_TAGS = cgo exclude_graphdriver_zfs autogen --DOCKER_ENGINE_BUILD_TARGETS = docker -- - ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) - DOCKER_ENGINE_BUILD_TAGS += seccomp - DOCKER_ENGINE_DEPENDENCIES += libseccomp - endif - - ifeq ($(BR2_INIT_SYSTEMD),y) --DOCKER_ENGINE_BUILD_TAGS += journald - DOCKER_ENGINE_DEPENDENCIES += systemd -+DOCKER_ENGINE_BUILD_TAGS += systemd journald - endif - - ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y) - DOCKER_ENGINE_BUILD_TAGS += daemon --DOCKER_ENGINE_BUILD_TARGETS += dockerd -+DOCKER_ENGINE_BUILD_TARGETS += docker:dockerd - - ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_INIT_DUMB_INIT),y) - DOCKER_ENGINE_INIT = dumb-init -@@ -83,10 +88,11 @@ endif - - define DOCKER_ENGINE_CONFIGURE_CMDS - mkdir -p $(DOCKER_ENGINE_GOPATH)/src/github.com/docker -- ln -fs $(@D) $(DOCKER_ENGINE_GOPATH)/src/github.com/docker/docker -- cd $(@D) && \ -- GITCOMMIT="$$(echo $(DOCKER_ENGINE_COMMIT) | head -c7)" \ -+ ln -fs $(@D)/components/engine $(DOCKER_ENGINE_GOPATH)/src/github.com/docker/docker -+ ln -fs $(@D)/components/cli $(DOCKER_ENGINE_GOPATH)/src/github.com/docker/cli -+ cd $(@D)/components/engine && \ - BUILDTIME="$$(date)" \ -+ IAMSTATIC="true" \ - VERSION="$(patsubst v%,%,$(DOCKER_ENGINE_VERSION))" \ - PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" $(TARGET_MAKE_ENV) \ - bash ./hack/make/.go-autogen -@@ -95,9 +101,9 @@ endef - ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y) - - define DOCKER_ENGINE_INSTALL_INIT_SYSTEMD -- $(INSTALL) -D -m 0644 $(@D)/contrib/init/systemd/docker.service \ -+ $(INSTALL) -D -m 0644 $(@D)/components/engine/contrib/init/systemd/docker.service \ - $(TARGET_DIR)/usr/lib/systemd/system/docker.service -- $(INSTALL) -D -m 0644 $(@D)/contrib/init/systemd/docker.socket \ -+ $(INSTALL) -D -m 0644 $(@D)/components/engine/contrib/init/systemd/docker.socket \ - $(TARGET_DIR)/usr/lib/systemd/system/docker.socket - mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/ - ln -fs ../../../../usr/lib/systemd/system/docker.service \ -@@ -112,19 +118,21 @@ endif - - define DOCKER_ENGINE_BUILD_CMDS - $(foreach target,$(DOCKER_ENGINE_BUILD_TARGETS), \ -- cd $(@D)/gopath/src/github.com/docker/docker; \ -+ $(DOCKER_ENGINE_BUILD_TARGET_PARSE); \ -+ cd $(@D)/gopath/src/github.com/docker/$${targetpkg}; \ - $(DOCKER_ENGINE_MAKE_ENV) \ - $(HOST_DIR)/bin/go build -v \ -- -o $(@D)/bin/$(target) \ -+ -o $(@D)/bin/$${targetbin} \ - -tags "$(DOCKER_ENGINE_BUILD_TAGS)" \ -- -ldflags "$(DOCKER_ENGINE_GLDFLAGS) $(DOCKER_ENGINE_GLDFLAGS_$(call UPPERCASE,$(target)))" \ -- github.com/docker/docker/cmd/$(target) -+ -ldflags "$(DOCKER_ENGINE_GLDFLAGS)" \ -+ ./cmd/$${targetbin} - ) - endef - - define DOCKER_ENGINE_INSTALL_TARGET_CMDS - $(foreach target,$(DOCKER_ENGINE_BUILD_TARGETS), \ -- $(INSTALL) -D -m 0755 $(@D)/bin/$(target) $(TARGET_DIR)/usr/bin/$(target) -+ $(DOCKER_ENGINE_BUILD_TARGET_PARSE); \ -+ $(INSTALL) -D -m 0755 $(@D)/bin/$${targetbin} $(TARGET_DIR)/usr/bin/$${targetbin} - ) - - $(if $(filter $(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y), \ --- -2.9.0.windows.1 - diff --git a/buildroot-patches/0014-Pump-raspberry-pi-firmware-for-kernel-4.14.patch b/buildroot-patches/0007-Pump-raspberry-pi-firmware-for-kernel-4.14.patch similarity index 72% rename from buildroot-patches/0014-Pump-raspberry-pi-firmware-for-kernel-4.14.patch rename to buildroot-patches/0007-Pump-raspberry-pi-firmware-for-kernel-4.14.patch index 8bd05ee1347..aafe2f44070 100644 --- a/buildroot-patches/0014-Pump-raspberry-pi-firmware-for-kernel-4.14.patch +++ b/buildroot-patches/0007-Pump-raspberry-pi-firmware-for-kernel-4.14.patch @@ -1,34 +1,35 @@ -From 35e38a7f97cafcca6b8d6f188746437d4520876d Mon Sep 17 00:00:00 2001 +From 4822be5410d0e01c88d9d4aa2e20b5bbae32c81a Mon Sep 17 00:00:00 2001 From: Pascal Vizeli -Date: Sun, 20 May 2018 10:26:01 +0200 +Date: Sun, 27 May 2018 20:49:19 +0000 Subject: [PATCH 1/1] Pump raspberry-pi firmware for kernel 4.14 +Signed-off-by: Pascal Vizeli --- package/rpi-firmware/rpi-firmware.hash | 2 +- package/rpi-firmware/rpi-firmware.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package/rpi-firmware/rpi-firmware.hash b/package/rpi-firmware/rpi-firmware.hash -index 833a7fb..6466a1f 100644 +index 4854deae03..3a9f21e877 100644 --- a/package/rpi-firmware/rpi-firmware.hash +++ b/package/rpi-firmware/rpi-firmware.hash @@ -1,2 +1,2 @@ # Locally computed --sha256 0451e1a843bf02df81126a1625d9a15dfdf19dcb2f9e95b0613a63e59fd31ca8 rpi-firmware-2067241bc7cdf238fdeab7f5a3c22faa57dd5617.tar.gz +-sha256 ea451834e20136d249661e0ed7d1fdfa309249d233a387f44dd6c3b746a454c6 rpi-firmware-36f991382326907419f64917624427e59fd8e4a0.tar.gz +sha256 f2b0f8ec8e73f8fa399f2c72c574ea5fe7fa57ab6151b139842a3ba783cd2140 rpi-firmware-a46b1f9521229ec26a1377aab7d013df1ade2791.tar.gz diff --git a/package/rpi-firmware/rpi-firmware.mk b/package/rpi-firmware/rpi-firmware.mk -index 22eaaa2..7c95321 100644 +index eab4c5d307..cb2e9d6cd8 100644 --- a/package/rpi-firmware/rpi-firmware.mk +++ b/package/rpi-firmware/rpi-firmware.mk @@ -4,7 +4,7 @@ # ################################################################################ --RPI_FIRMWARE_VERSION = 2067241bc7cdf238fdeab7f5a3c22faa57dd5617 +-RPI_FIRMWARE_VERSION = 36f991382326907419f64917624427e59fd8e4a0 +RPI_FIRMWARE_VERSION = a46b1f9521229ec26a1377aab7d013df1ade2791 RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3-Clause RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom -- -2.7.4 +2.17.0 diff --git a/buildroot-patches/0007-linux-add-BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF.patch b/buildroot-patches/0007-linux-add-BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF.patch deleted file mode 100644 index 83cadeccdf5..00000000000 --- a/buildroot-patches/0007-linux-add-BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF.patch +++ /dev/null @@ -1,64 +0,0 @@ -From f7cd72b3d4e2b1d993c293e355e350bedbed4eab Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Sun, 4 Mar 2018 22:31:16 +0100 -Subject: [PATCH 1/1] linux: add BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF - -Some Linux kernel configuration options (such as CONFIG_UNWINDER_ORC) -require building a host program that needs libelf. - -Users who have libelf installed on their system won't see a problem, -but users who don't have libelf installed will get a build -failure. Therefore, this commit adds an option that allows a user to -indicate that his Linux kernel configuration requires libelf. When -this option is enabled, we add host-elfutils to the dependencies of -the linux package (host-elfutils provides the libelf library). - -Signed-off-by: Thomas Petazzoni -Signed-off-by: Peter Korsgaard ---- - linux/Config.in | 13 +++++++++++++ - linux/linux.mk | 4 ++++ - 2 files changed, 17 insertions(+) - -diff --git a/linux/Config.in b/linux/Config.in -index 57bb11c..e299af4 100644 ---- a/linux/Config.in -+++ b/linux/Config.in -@@ -420,6 +420,19 @@ config BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL - such as "scripts/extract-cert.c:21:25: fatal error: - openssl/bio.h: No such file or directory". - -+config BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF -+ bool "Needs host libelf" -+ help -+ Some Linux kernel configuration options (such as -+ CONFIG_UNWINDER_ORC) require building a host program that -+ needs libelf. Enabling this option will ensure host-elfutils -+ (which provides libelf) gets built before the Linux kernel. -+ -+ Enable this option if you get a Linux kernel build failure -+ such as "Cannot generate ORC metadata for -+ CONFIG_UNWINDER_ORC=y, please install libelf-dev, -+ libelf-devel or elfutils-libelf-devel". -+ - # Linux extensions - source "linux/Config.ext.in" - -diff --git a/linux/linux.mk b/linux/linux.mk -index 91d8751..28d799f 100644 ---- a/linux/linux.mk -+++ b/linux/linux.mk -@@ -84,6 +84,10 @@ 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 -+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) --- -2.7.4 - diff --git a/buildroot-patches/0008-package-rauc-Version-bump-to-0.3.patch b/buildroot-patches/0008-package-rauc-Version-bump-to-0.3.patch deleted file mode 100644 index 6b020e983a8..00000000000 --- a/buildroot-patches/0008-package-rauc-Version-bump-to-0.3.patch +++ /dev/null @@ -1,45 +0,0 @@ -From ab863898812a926f0ee687269c2e2ed61bc7adc7 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= -Date: Thu, 8 Feb 2018 10:27:47 +0100 -Subject: [PATCH 1/1] package/rauc: Version bump to 0.3 -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -There's a bug in 0.2 which prevents proper operation when activated via -D-Bus, which is why I'm bumping this. - -Signed-off-by: Jan Kundrテ。t -Link: https://github.com/rauc/rauc/issues/125 -Signed-off-by: Thomas Petazzoni ---- - package/rauc/rauc.hash | 4 ++-- - package/rauc/rauc.mk | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/package/rauc/rauc.hash b/package/rauc/rauc.hash -index 649d195..91d7c1d 100644 ---- a/package/rauc/rauc.hash -+++ b/package/rauc/rauc.hash -@@ -1,3 +1,3 @@ - # Locally calculated, after verifying against --# https://github.com/rauc/rauc/releases/download/v0.2/rauc-0.2.tar.xz.asc --sha256 83aa3ac3716e1c29315162e3cbf5d4db79f26dd95efe1bc634bbce364b95491a rauc-0.2.tar.xz -+# https://github.com/rauc/rauc/releases/download/v0.3/rauc-0.3.tar.xz.asc -+sha256 dc01bfb08b1830376782f9a51cfec290171519267ab97cc909435da9ac6d6d98 rauc-0.3.tar.xz -diff --git a/package/rauc/rauc.mk b/package/rauc/rauc.mk -index 4909062..63fbc53 100644 ---- a/package/rauc/rauc.mk -+++ b/package/rauc/rauc.mk -@@ -4,7 +4,7 @@ - # - ################################################################################ - --RAUC_VERSION = 0.2 -+RAUC_VERSION = 0.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 --- -2.7.4 - diff --git a/buildroot-patches/0009-linux-add-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL.patch b/buildroot-patches/0009-linux-add-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL.patch deleted file mode 100644 index 88c9698dfee..00000000000 --- a/buildroot-patches/0009-linux-add-BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 93a7edf4bc9bfcf821f608815870d06198eb2adf Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Sun, 4 Mar 2018 22:31:15 +0100 -Subject: [PATCH 1/1] linux: add BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL - -Some Linux kernel configuration options (such as -CONFIG_SYSTEM_TRUSTED_KEYRING) require building a host program called -extract-cert, which itself needs OpenSSL. - -Users having OpenSSL installed on their system won't see a problem, -but users who don't have OpenSSL installed will get a build -failure. This commit adds a new option that allows users to indicate -that their Linux configuration requires building host-openssl. - -Signed-off-by: Thomas Petazzoni -Signed-off-by: Peter Korsgaard ---- - linux/Config.in | 13 +++++++++++++ - linux/linux.mk | 4 ++++ - 2 files changed, 17 insertions(+) - -diff --git a/linux/Config.in b/linux/Config.in -index bc6cd1b..57bb11c 100644 ---- a/linux/Config.in -+++ b/linux/Config.in -@@ -407,6 +407,19 @@ config BR2_LINUX_KERNEL_INSTALL_TARGET - /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". -+ - # Linux extensions - source "linux/Config.ext.in" - -diff --git a/linux/linux.mk b/linux/linux.mk -index 3b69524..91d8751 100644 ---- a/linux/linux.mk -+++ b/linux/linux.mk -@@ -80,6 +80,10 @@ LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZMA) += CONFIG_KERNEL_LZMA - LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZO) += CONFIG_KERNEL_LZO - LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_XZ) += CONFIG_KERNEL_XZ - -+ifeq ($(BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL),y) -+LINUX_DEPENDENCIES += host-openssl -+endif -+ - # 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) --- -2.7.4 - diff --git a/buildroot-patches/0010-linux-fix-passing-of-host-CFLAGS-and-LDFLAGS.patch b/buildroot-patches/0010-linux-fix-passing-of-host-CFLAGS-and-LDFLAGS.patch deleted file mode 100644 index 3d21ea3e8fe..00000000000 --- a/buildroot-patches/0010-linux-fix-passing-of-host-CFLAGS-and-LDFLAGS.patch +++ /dev/null @@ -1,46 +0,0 @@ - -m ad8804326df075a9935a3751f61e5ad1a2865736 Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Sun, 4 Mar 2018 22:31:17 +0100 -Subject: [PATCH] linux: fix passing of host CFLAGS and LDFLAGS - -We were passing HOSTCFLAGS="$(HOSTCFLAGS)" to Linux. However: - - - HOSTCFLAGS in Buildroot doesn't exist, and is empty, so this - assignment never did anything. The name of the variable in - Buildroot in HOST_CFLAGS. - - - HOSTCFLAGS in Linux isn't used everywhere, and passing it overrides - the default HOSTCFLAGS value defined in the main Linux kernel - Makefile. - -In addition, there is no way to pass additional host LDFLAGS in the -Linux kernel build system. - -Therefore, we simply shoehorn our HOST_CFLAGS and HOST_LDFLAGS while -passing HOSTCC to the Linux kernel build system. This has been tested -to work fine with host OpenSSL and host libelf only available in -$(HOST_DIR). - -Signed-off-by: Thomas Petazzoni ---- - linux/linux.mk | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/linux/linux.mk b/linux/linux.mk -index b724b66..7f318a0 100644 ---- a/linux/linux.mk -+++ b/linux/linux.mk -@@ -99,8 +99,7 @@ LINUX_EXTRA_DOWNLOADS += $(ARCH_XTENSA_OVERLAY_URL) - endif - - LINUX_MAKE_FLAGS = \ -- HOSTCC="$(HOSTCC)" \ -- HOSTCFLAGS="$(HOSTCFLAGS)" \ -+ HOSTCC="$(HOSTCC) $(HOST_CFLAGS) $(HOST_LDFLAGS)" \ - ARCH=$(KERNEL_ARCH) \ - INSTALL_MOD_PATH=$(TARGET_DIR) \ - CROSS_COMPILE="$(TARGET_CROSS)" \ --- -2.7.4 - diff --git a/buildroot-patches/0012-Add-apparmor-support-to-docker.patch b/buildroot-patches/0012-Add-apparmor-support-to-docker.patch deleted file mode 100644 index 6aeca9863c8..00000000000 --- a/buildroot-patches/0012-Add-apparmor-support-to-docker.patch +++ /dev/null @@ -1,60 +0,0 @@ -From a5d50577d81efeccb4904e6b56793f84b7e3e89f Mon Sep 17 00:00:00 2001 -From: Pascal Vizeli -Date: Tue, 1 May 2018 23:35:05 +0200 -Subject: [PATCH 1/1] Add apparmor support to docker - ---- - package/docker-containerd/docker-containerd.mk | 1 + - package/docker-engine/docker-engine.mk | 2 +- - package/runc/runc.mk | 3 +-- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/package/docker-containerd/docker-containerd.mk b/package/docker-containerd/docker-containerd.mk -index 230307d..9be658d 100644 ---- a/package/docker-containerd/docker-containerd.mk -+++ b/package/docker-containerd/docker-containerd.mk -@@ -18,6 +18,7 @@ DOCKER_CONTAINERD_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ - GOBIN="$(@D)/bin" \ - GOPATH="$(DOCKER_CONTAINERD_GOPATH)" - -+DOCKER_CONTAINERD_BUILD_TAGS = apparmor - DOCKER_CONTAINERD_GLDFLAGS = \ - -X github.com/containerd/containerd.GitCommit=$(DOCKER_CONTAINERD_COMMIT) - -diff --git a/package/docker-engine/docker-engine.mk b/package/docker-engine/docker-engine.mk -index e3dde03..d500e71 100644 ---- a/package/docker-engine/docker-engine.mk -+++ b/package/docker-engine/docker-engine.mk -@@ -27,7 +27,7 @@ DOCKER_ENGINE_GLDFLAGS = \ - -X github.com/docker/cli/cli.GitCommit=$(DOCKER_ENGINE_VERSION) \ - -X github.com/docker/cli/cli.Version=$(DOCKER_ENGINE_VERSION) - --DOCKER_ENGINE_BUILD_TAGS = cgo exclude_graphdriver_zfs autogen -+DOCKER_ENGINE_BUILD_TAGS = cgo exclude_graphdriver_zfs autogen apparmor - DOCKER_ENGINE_BUILD_TARGETS = cli:docker - DOCKER_ENGINE_BUILD_TARGET_PARSE = \ - export targetpkg=$$(echo $(target) | cut -d: -f1); \ -diff --git a/package/runc/runc.mk b/package/runc/runc.mk -index f19fc5f..1ab0b70 100644 ---- a/package/runc/runc.mk -+++ b/package/runc/runc.mk -@@ -18,6 +18,7 @@ RUNC_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ - GOPATH="$(RUNC_GOPATH)" \ - PATH=$(BR_PATH) - -+RUNC_GOTAGS = cgo apparmor - RUNC_GLDFLAGS = \ - -X main.gitCommit=$(RUNC_VERSION) - -@@ -26,8 +27,6 @@ RUNC_GLDFLAGS += -extldflags '-static' - RUNC_GOTAGS += static_build - endif - --RUNC_GOTAGS = cgo -- - ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) - RUNC_GOTAGS += seccomp - RUNC_DEPENDENCIES += libseccomp host-pkgconf --- -2.7.4 - diff --git a/buildroot-patches/0013-package-rauc-Version-bump-to-0.4.patch b/buildroot-patches/0013-package-rauc-Version-bump-to-0.4.patch deleted file mode 100644 index 690bdd4c2d1..00000000000 --- a/buildroot-patches/0013-package-rauc-Version-bump-to-0.4.patch +++ /dev/null @@ -1,34 +0,0 @@ -Version 0.4 supports bootloader updates to eMMC boot partitions. - -Signed-off-by: Jim Brennan ---- - package/rauc/rauc.hash | 4 ++-- - package/rauc/rauc.mk | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/package/rauc/rauc.hash b/package/rauc/rauc.hash -index 91d7c1d62e..a16340f185 100644 ---- a/package/rauc/rauc.hash -+++ b/package/rauc/rauc.hash -@@ -1,3 +1,3 @@ - # Locally calculated, after verifying against --# https://github.com/rauc/rauc/releases/download/v0.3/rauc-0.3.tar.xz.asc --sha256 dc01bfb08b1830376782f9a51cfec290171519267ab97cc909435da9ac6d6d98 rauc-0.3.tar.xz -+# https://github.com/rauc/rauc/releases/download/v0.4/rauc-0.4.tar.xz.asc -+sha256 89656b6330ac1f31293d450f5179896397c588ab52e77ec229382a6abd125d35 rauc-0.4.tar.xz -diff --git a/package/rauc/rauc.mk b/package/rauc/rauc.mk -index 63fbc53022..f1705a8c33 100644 ---- a/package/rauc/rauc.mk -+++ b/package/rauc/rauc.mk -@@ -4,7 +4,7 @@ - # - ################################################################################ - --RAUC_VERSION = 0.3 -+RAUC_VERSION = 0.4 - RAUC_SITE = https://github.com/rauc/rauc/releases/download/v$(RAUC_VERSION) - RAUC_SOURCE = rauc-$(RAUC_VERSION).tar.xz - RAUC_LICENSE = LGPL-2.1 --- -2.11.0 - diff --git a/buildroot/.flake8 b/buildroot/.flake8 index afdb9679307..7dd7b541cc0 100644 --- a/buildroot/.flake8 +++ b/buildroot/.flake8 @@ -1,2 +1,5 @@ [flake8] +exclude= + # copied from the kernel sources + utils/diffconfig max-line-length=132 diff --git a/buildroot/.gitlab-ci.yml b/buildroot/.gitlab-ci.yml index f76e53b5656..e80491cdde8 100644 --- a/buildroot/.gitlab-ci.yml +++ b/buildroot/.gitlab-ci.yml @@ -4,7 +4,7 @@ # It needs to be regenerated every time a defconfig is added, using # "make .gitlab-ci.yml". -image: buildroot/base:20180205.0730 +image: buildroot/base:20180318.1724 .defconfig_script: &defconfig_script - echo 'Configure Buildroot' @@ -30,9 +30,21 @@ check-DEVELOPERS: script: - "! utils/get-developers | grep -v 'No action specified'" +check-flake8: + before_script: + # Help flake8 to find the Python files without .py extension. + - find * -type f -name '*.py' > files.txt + - find * -type f -print0 | xargs -0 file | grep 'Python script' | cut -d':' -f1 >> files.txt + - sort -u files.txt | tee files.processed + script: + - python -m flake8 --statistics --count $(cat files.processed) + after_script: + - wc -l files.processed + check-package: script: - - find . -type f \( -name '*.mk' -o -name '*.hash' \) -exec ./utils/check-package {} + + - find . -type f \( -name '*.mk' -o -name '*.hash' -o -name 'Config.*' \) + -exec ./utils/check-package {} + .defconfig: &defconfig # Running the defconfigs for every push is too much, so limit to @@ -67,12 +79,15 @@ acmesystems_aria_g25_128mb_defconfig: *defconfig acmesystems_aria_g25_256mb_defconfig: *defconfig acmesystems_arietta_g25_128mb_defconfig: *defconfig acmesystems_arietta_g25_256mb_defconfig: *defconfig +amarula_vyasa_rk3288_defconfig: *defconfig +arcturus_ucls1012a_defconfig: *defconfig arcturus_ucp1020_defconfig: *defconfig arm_foundationv8_defconfig: *defconfig arm_juno_defconfig: *defconfig armadeus_apf27_defconfig: *defconfig armadeus_apf28_defconfig: *defconfig armadeus_apf51_defconfig: *defconfig +asus_tinker_rk3288_defconfig: *defconfig at91sam9260eknf_defconfig: *defconfig at91sam9g20dfc_defconfig: *defconfig at91sam9g45m10ek_defconfig: *defconfig @@ -102,7 +117,6 @@ beaglebone_defconfig: *defconfig beaglebone_qt5_defconfig: *defconfig chromebook_snow_defconfig: *defconfig ci20_defconfig: *defconfig -ci40_defconfig: *defconfig csky_gx6605s_defconfig: *defconfig cubieboard2_defconfig: *defconfig engicam_imx6qdl_icore_defconfig: *defconfig @@ -110,24 +124,19 @@ engicam_imx6qdl_icore_qt5_defconfig: *defconfig engicam_imx6qdl_icore_rqs_defconfig: *defconfig engicam_imx6ul_geam_defconfig: *defconfig engicam_imx6ul_isiot_defconfig: *defconfig -firefly_rk3288_defconfig: *defconfig -firefly_rk3288_demo_defconfig: *defconfig freescale_imx28evk_defconfig: *defconfig -freescale_imx31_3stack_defconfig: *defconfig freescale_imx6dlsabreauto_defconfig: *defconfig freescale_imx6dlsabresd_defconfig: *defconfig freescale_imx6qsabreauto_defconfig: *defconfig freescale_imx6qsabresd_defconfig: *defconfig -freescale_imx6sololiteevk_defconfig: *defconfig freescale_imx6sxsabresd_defconfig: *defconfig -freescale_imx6ulevk_defconfig: *defconfig freescale_imx7dsabresd_defconfig: *defconfig -freescale_mpc8315erdb_defconfig: *defconfig -freescale_p1010rdb_pa_defconfig: *defconfig +freescale_imx8mqevk_defconfig: *defconfig +freescale_p1025twr_defconfig: *defconfig +freescale_t1040d4rdb_defconfig: *defconfig friendlyarm_nanopi_a64_defconfig: *defconfig friendlyarm_nanopi_neo2_defconfig: *defconfig galileo_defconfig: *defconfig -gdb_bfin_bf512_defconfig: *defconfig grinn_chiliboard_defconfig: *defconfig grinn_liteboard_defconfig: *defconfig imx23evk_defconfig: *defconfig @@ -198,6 +207,7 @@ qemu_mips64r6_malta_defconfig: *defconfig qemu_mips64r6el_malta_defconfig: *defconfig qemu_nios2_10m50_defconfig: *defconfig qemu_or1k_defconfig: *defconfig +qemu_ppc64_e5500_defconfig: *defconfig qemu_ppc64_pseries_defconfig: *defconfig qemu_ppc64le_pseries_defconfig: *defconfig qemu_ppc_g3beige_defconfig: *defconfig @@ -212,12 +222,12 @@ qemu_x86_defconfig: *defconfig qemu_xtensa_lx60_defconfig: *defconfig qemu_xtensa_lx60_nommu_defconfig: *defconfig raspberrypi0_defconfig: *defconfig +raspberrypi0w_defconfig: *defconfig raspberrypi2_defconfig: *defconfig raspberrypi3_64_defconfig: *defconfig raspberrypi3_defconfig: *defconfig raspberrypi3_qt5we_defconfig: *defconfig raspberrypi_defconfig: *defconfig -riotboard_defconfig: *defconfig roseapplepi_defconfig: *defconfig s6lx9_microboard_defconfig: *defconfig sheevaplug_defconfig: *defconfig @@ -225,17 +235,18 @@ snps_aarch64_vdk_defconfig: *defconfig snps_arc700_axs101_defconfig: *defconfig snps_archs38_axs103_defconfig: *defconfig snps_archs38_haps_defconfig: *defconfig +snps_archs38_hsdk_defconfig: *defconfig snps_archs38_vdk_defconfig: *defconfig socrates_cyclone5_defconfig: *defconfig +solidrun_clearfog_defconfig: *defconfig solidrun_macchiatobin_mainline_defconfig: *defconfig solidrun_macchiatobin_marvell_defconfig: *defconfig stm32f429_disco_defconfig: *defconfig stm32f469_disco_defconfig: *defconfig -telit_evk_pro3_defconfig: *defconfig toradex_apalis_imx6_defconfig: *defconfig ts4800_defconfig: *defconfig ts4900_defconfig: *defconfig -ts5x00_defconfig: *defconfig +ts5500_defconfig: *defconfig ts7680_defconfig: *defconfig wandboard_defconfig: *defconfig warp7_defconfig: *defconfig @@ -282,8 +293,11 @@ tests.package.test_ipython.TestIPythonPy2: *runtime_test tests.package.test_ipython.TestIPythonPy3: *runtime_test tests.package.test_python.TestPython2: *runtime_test tests.package.test_python.TestPython3: *runtime_test +tests.package.test_python_cryptography.TestPythonPy2Cryptography: *runtime_test +tests.package.test_python_cryptography.TestPythonPy3Cryptography: *runtime_test tests.package.test_rust.TestRust: *runtime_test tests.package.test_rust.TestRustBin: *runtime_test +tests.package.test_syslog_ng.TestSyslogNg: *runtime_test tests.toolchain.test_external.TestExternalToolchainBuildrootMusl: *runtime_test tests.toolchain.test_external.TestExternalToolchainBuildrootuClibc: *runtime_test tests.toolchain.test_external.TestExternalToolchainCCache: *runtime_test diff --git a/buildroot/.gitlab-ci.yml.in b/buildroot/.gitlab-ci.yml.in index cb3eb715f2f..fb2650c5cee 100644 --- a/buildroot/.gitlab-ci.yml.in +++ b/buildroot/.gitlab-ci.yml.in @@ -4,7 +4,7 @@ # It needs to be regenerated every time a defconfig is added, using # "make .gitlab-ci.yml". -image: buildroot/base:20180205.0730 +image: buildroot/base:20180318.1724 .defconfig_script: &defconfig_script - echo 'Configure Buildroot' @@ -30,9 +30,21 @@ check-DEVELOPERS: script: - "! utils/get-developers | grep -v 'No action specified'" +check-flake8: + before_script: + # Help flake8 to find the Python files without .py extension. + - find * -type f -name '*.py' > files.txt + - find * -type f -print0 | xargs -0 file | grep 'Python script' | cut -d':' -f1 >> files.txt + - sort -u files.txt | tee files.processed + script: + - python -m flake8 --statistics --count $(cat files.processed) + after_script: + - wc -l files.processed + check-package: script: - - find . -type f \( -name '*.mk' -o -name '*.hash' \) -exec ./utils/check-package {} + + - find . -type f \( -name '*.mk' -o -name '*.hash' -o -name 'Config.*' \) + -exec ./utils/check-package {} + .defconfig: &defconfig # Running the defconfigs for every push is too much, so limit to diff --git a/buildroot/CHANGES b/buildroot/CHANGES index c7925bdedcb..4a51dafab5b 100644 --- a/buildroot/CHANGES +++ b/buildroot/CHANGES @@ -1,3 +1,220 @@ +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.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. @@ -844,6 +1061,26 @@ #9846: musl libc not installed correctly in target folder #9856: build libubox failed on ubuntu 17.04 64bit +2017.02.11, Released April 11th, 2018 + + Important / security related fixes. + + 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. + + Updated/fixed packages: apache, busybox, clamav, dhcp, + dnsmasq, dovecot, exim, imagemagick, irssi, jq, libcurl, + libpjsip, librsvg, libtasn1, libvorbis, libxml2, lz4, mariadb, + mbedtls, mosquitto, ntp, openblas, opencv3, openssl, patch, + postgresql, python-webpy, qt53d, qt5tools, quagga, rsync, + samba4, sngrep, tremor, wavpack, wireshark, xerces, xterm + + Issues resolved (http://bugs.uclibc.org): + + #10856: openblas on qemu_x86_64_defconfig fails with "sgemm_.. + 2017.02.10, Released January 31st, 2018 Important / security related fixes. diff --git a/buildroot/Config.in b/buildroot/Config.in index 0002df51767..6b5b2b043c8 100644 --- a/buildroot/Config.in +++ b/buildroot/Config.in @@ -62,6 +62,11 @@ config BR2_HOST_GCC_AT_LEAST_7 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 + # Hidden boolean selected by packages in need of Java in order to build # (example: kodi) config BR2_NEEDS_HOST_JAVA @@ -175,8 +180,8 @@ config BR2_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. + E.g. " -v --exclude='*.svn*'" to exclude all .svn internal + files and to be verbose. endmenu @@ -200,6 +205,9 @@ config BR2_DL_DIR 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 @@ -332,6 +340,9 @@ config BR2_CCACHE_DIR 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" @@ -421,8 +432,8 @@ endif config BR2_STRIP_strip bool "strip target binaries" - depends on !BR2_PACKAGE_HOST_ELF2FLT default y + depends on !BR2_PACKAGE_HOST_ELF2FLT help Binaries and libraries in the target filesystem will be stripped using the normal 'strip' command. This allows to save @@ -432,16 +443,16 @@ config BR2_STRIP_strip config BR2_STRIP_EXCLUDE_FILES string "executables that should not be stripped" - depends on BR2_STRIP_strip 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" - depends on BR2_STRIP_strip 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 @@ -527,11 +538,21 @@ config BR2_OPTIMIZE_S -ftree-vect-loop-version This is the default. +config BR2_OPTIMIZE_FAST + bool "optimize for fast" + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_6 + help + Optimize for fast. Disregard strict standards + compliance. -Ofast enables all -O3 optimizations. It also + enables optimizations that are not valid for all + standard-compliant programs. It turns on -ffast-math and the + Fortran-specific -fstack-arrays, unless -fmax-stack-var-size + is specified, and -fno-protect-parens. + endchoice config BR2_GOOGLE_BREAKPAD_ENABLE bool "Enable google-breakpad support" - select BR2_PACKAGE_GOOGLE_BREAKPAD depends on BR2_INSTALL_LIBSTDCPP depends on BR2_HOST_GCC_AT_LEAST_4_8 # C++11 depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 @@ -540,6 +561,7 @@ config BR2_GOOGLE_BREAKPAD_ENABLE depends on (BR2_TOOLCHAIN_USES_GLIBC || BR2_TOOLCHAIN_USES_UCLIBC) depends on BR2_PACKAGE_GOOGLE_BREAKPAD_ARCH_SUPPORTS depends on BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS + select BR2_PACKAGE_GOOGLE_BREAKPAD help This option will enable the use of google breakpad, a library and tool suite that allows you to distribute an application to @@ -606,7 +628,6 @@ config BR2_SHARED_STATIC_LIBS endchoice - config BR2_PACKAGE_OVERRIDE_FILE string "location of a package override file" default "$(CONFIG_DIR)/local.mk" @@ -654,7 +675,8 @@ config BR2_COMPILER_PARANOID_UNSAFE_PATH Note that this mechanism is available for both the internal toolchain (through the toolchain wrapper and binutils patches) - and external toolchain backends (through the toolchain wrapper). + and external toolchain backends (through the toolchain + wrapper). config BR2_REPRODUCIBLE bool "Make the build reproducible (experimental)" @@ -738,9 +760,9 @@ choice bool "RELRO Protection" depends on BR2_SHARED_LIBS help - Enable a link-time protection know as RELRO (RELocation Read Only) - which helps to protect from certain type of exploitation techniques - altering the content of some ELF sections. + 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" @@ -756,9 +778,9 @@ config BR2_RELRO_PARTIAL config BR2_RELRO_FULL bool "Full" help - This option includes the partial configuration, but also - marks the GOT as read-only at the cost of initialization time - during program loading, i.e every time an executable is started. + This option includes the partial configuration, but also marks + the GOT as read-only at the cost of initialization time during + program loading, i.e every time an executable is started. endchoice @@ -771,10 +793,10 @@ choice 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. + 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 diff --git a/buildroot/Config.in.legacy b/buildroot/Config.in.legacy index 60f91482340..e7b0316a4f9 100644 --- a/buildroot/Config.in.legacy +++ b/buildroot/Config.in.legacy @@ -99,11 +99,11 @@ 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 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" @@ -142,6 +142,566 @@ comment "unpredictable ways. " comment "----------------------------------------------------" endif +############################################################################### +comment "Legacy options removed in 2018.05" + +config BR2_PACKAGE_MEDIAART_BACKEND_NONE + bool "libmediaart none backend option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_MEDIAART_BACKEND_NONE has been renamed to + BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE + +config BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF + bool "libmediaart gdk-pixbuf backend option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF has been renamed to + BR2_PACKAGE_LIBMEDIAART_BACKEND_GDK_PIXBUF + +config BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF + bool "libmediaart qt backend option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_MEDIAART_BACKEND_QT has been renamed to + BR2_PACKAGE_LIBMEDIAART_BACKEND_QT + +config BR2_PACKAGE_TI_SGX_AM335X + bool "ti-sgx-km AM335X option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_TI_SGX_AM335X has been renamed to + BR2_PACKAGE_TI_SGX_KM_AM335X. + +config BR2_PACKAGE_TI_SGX_AM437X + bool "ti-sgx-km AM437X option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_TI_SGX_AM437X has been renamed to + BR2_PACKAGE_TI_SGX_KM_AM437X. + +config BR2_PACKAGE_TI_SGX_AM4430 + bool "ti-sgx-km AM4430 option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_TI_SGX_AM4430 has been renamed to + BR2_PACKAGE_TI_SGX_KM_AM4430. + +config BR2_PACKAGE_TI_SGX_AM5430 + bool "ti-sgx-km AM5430 option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_TI_SGX_AM5430 has been renamed to + BR2_PACKAGE_TI_SGX_KM_AM5430. + +config BR2_PACKAGE_JANUS_AUDIO_BRIDGE + bool "janus-gateway audio-bridge option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_AUDIO_BRIDGE has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE. + +config BR2_PACKAGE_JANUS_ECHO_TEST + bool "janus-gateway echo-test option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_ECHO_TEST has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST. + +config BR2_PACKAGE_JANUS_RECORDPLAY + bool "janus-gateway recordplay option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_RECORDPLAY has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY. + +config BR2_PACKAGE_JANUS_SIP_GATEWAY + bool "janus-gateway sip-gateway option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_SIP_GATEWAY has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY. + +config BR2_PACKAGE_JANUS_STREAMING + bool "janus-gateway streaming option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_STREAMING + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_STREAMING has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_STREAMING. + +config BR2_PACKAGE_JANUS_TEXT_ROOM + bool "janus-gateway text-room option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_TEXT_ROOM has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM. + +config BR2_PACKAGE_JANUS_VIDEO_CALL + bool "janus-gateway video-call option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_VIDEO_CALL has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL. + +config BR2_PACKAGE_JANUS_VIDEO_ROOM + bool "janus-gateway video-room option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_VIDEO_ROOM has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM. + +config BR2_PACKAGE_JANUS_MQTT + bool "janus-gateway mqtt option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_MQTT + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_MQTT has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_MQTT. + +config BR2_PACKAGE_JANUS_RABBITMQ + bool "janus-gateway rabbitmq option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_RABBITMQ has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ. + +config BR2_PACKAGE_JANUS_REST + bool "janus-gateway rest option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_REST + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_REST has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_REST. + +config BR2_PACKAGE_JANUS_UNIX_SOCKETS + bool "janus-gateway unix-sockets option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_UNIX_SOCKETS has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS. + +config BR2_PACKAGE_JANUS_WEBSOCKETS + bool "janus-gateway websockets option renamed" + select BR2_LEGACY + select BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS + help + For consistency reasons, the janus-gateway option + BR2_PACKAGE_JANUS_WEBSOCKETS has been renamed to + BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS. + +config BR2_PACKAGE_IPSEC_SECCTX_DISABLE + bool "ipsec-tools security context disable option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_IPSEC_SECCTX_DISABLE was renamed to + BR2_PACKAGE_IPSEC_TOOLS_SECCTX_DISABLE. + +config BR2_PACKAGE_IPSEC_SECCTX_ENABLE + bool "ipsec-tools SELinux security context enable option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_IPSEC_SECCTX_ENABLE was renamed to + BR2_PACKAGE_IPSEC_TOOLS_SECCTX_ENABLE. + +config BR2_PACKAGE_IPSEC_SECCTX_KERNEL + bool "ipsec-tools kernel security context enable option renamed" + select BR2_LEGACY + help + For consistency reasons, the option + BR2_PACKAGE_IPSEC_SECCTX_KERNEL was renamed to + BR2_PACKAGE_IPSEC_TOOLS_SECCTX_KERNEL. + +config BR2_PACKAGE_LIBTFDI_CPP + bool "libftdi C++ bindings option renamed" + select BR2_LEGACY + select BR2_PACKAGE_LIBFTDI_CPP + help + The option BR2_PACKAGE_LIBTFDI_CPP was renamed to + BR2_PACKAGE_LIBFTDI_CPP in order to fix a typo in the option + name. + +config BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE + bool "jquery-ui-themes option black-tie renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + black-tie theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE to + BR2_PACKAGE_JQUERY_UI_THEMES_BLACK_TIE. + +config BR2_PACKAGE_JQUERY_UI_THEME_BLITZER + bool "jquery-ui-themes option blitzer renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + blitzer theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_BLITZER to + BR2_PACKAGE_JQUERY_UI_THEMES_BLITZER. + +config BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO + bool "jquery-ui-themes option cupertino renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + cupertino theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO to + BR2_PACKAGE_JQUERY_UI_THEMES_CUPERTINO. + +config BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE + bool "jquery-ui-themes option dark-hive renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + dark-hive theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE to + BR2_PACKAGE_JQUERY_UI_THEMES_DARK_HIVE. + +config BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV + bool "jquery-ui-themes option dot-luv renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + dot-luv theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV to + BR2_PACKAGE_JQUERY_UI_THEMES_DOT_LUV. + +config BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT + bool "jquery-ui-themes option eggplant renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + eggplant theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT to + BR2_PACKAGE_JQUERY_UI_THEMES_EGGPLANT. + +config BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE + bool "jquery-ui-themes option excite-bike renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + excite-bike theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE to + BR2_PACKAGE_JQUERY_UI_THEMES_EXCITE_BIKE. + +config BR2_PACKAGE_JQUERY_UI_THEME_FLICK + bool "jquery-ui-themes option flick renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + flick theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_FLICK to + BR2_PACKAGE_JQUERY_UI_THEMES_FLICK. + +config BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS + bool "jquery-ui-themes option hot-sneaks renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + hot-sneaks theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS to + BR2_PACKAGE_JQUERY_UI_THEMES_HOT_SNEAKS. + +config BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY + bool "jquery-ui-themes option humanity renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + humanity theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY to + BR2_PACKAGE_JQUERY_UI_THEMES_HUMANITY. + +config BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG + bool "jquery-ui-themes option le-frog renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + le-frog theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG to + BR2_PACKAGE_JQUERY_UI_THEMES_LE_FROG. + +config BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC + bool "jquery-ui-themes option mint-choc renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + mint-choc theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC to + BR2_PACKAGE_JQUERY_UI_THEMES_MINT_CHOC. + +config BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST + bool "jquery-ui-themes option overcast renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + overcast theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST to + BR2_PACKAGE_JQUERY_UI_THEMES_OVERCAST. + +config BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER + bool "jquery-ui-themes option pepper-grinder renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + pepper-grinder theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER to + BR2_PACKAGE_JQUERY_UI_THEMES_PEPPER_GRINDER. + +config BR2_PACKAGE_JQUERY_UI_THEME_REDMOND + bool "jquery-ui-themes option redmond renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + redmond theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_REDMOND to + BR2_PACKAGE_JQUERY_UI_THEMES_REDMOND. + +config BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS + bool "jquery-ui-themes option smoothness renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + smoothness theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS to + BR2_PACKAGE_JQUERY_UI_THEMES_SMOOTHNESS. + +config BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET + bool "jquery-ui-themes option south-street renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + south-street theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET to + BR2_PACKAGE_JQUERY_UI_THEMES_SOUTH_STREET. + +config BR2_PACKAGE_JQUERY_UI_THEME_START + bool "jquery-ui-themes option start renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + start theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_START to + BR2_PACKAGE_JQUERY_UI_THEMES_START. + +config BR2_PACKAGE_JQUERY_UI_THEME_SUNNY + bool "jquery-ui-themes option sunny renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + sunny theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_SUNNY to + BR2_PACKAGE_JQUERY_UI_THEMES_SUNNY. + +config BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE + bool "jquery-ui-themes option swanky-purse renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + swanky-purse theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE to + BR2_PACKAGE_JQUERY_UI_THEMES_SWANKY_PURSE. + +config BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC + bool "jquery-ui-themes option trontastic renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + trontastic theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC to + BR2_PACKAGE_JQUERY_UI_THEMES_TRONTASTIC. + +config BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS + bool "jquery-ui-themes option ui-darkness renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + ui-darkness theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS to + BR2_PACKAGE_JQUERY_UI_THEMES_UI_DARKNESS. + +config BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS + bool "jquery-ui-themes option ui-lightness renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + ui-lightness theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS to + BR2_PACKAGE_JQUERY_UI_THEMES_UI_LIGHTNESS. + +config BR2_PACKAGE_JQUERY_UI_THEME_VADER + bool "jquery-ui-themes option vader renamed" + select BR2_LEGACY + help + For consistency reasons, the jquery-ui-themes option for the + vader theme has been renamed from + BR2_PACKAGE_JQUERY_UI_THEME_VADER to + BR2_PACKAGE_JQUERY_UI_THEMES_VADER. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH + bool "bluez5-utils health plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI + bool "bluez5-utils midi plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_NFC + bool "bluez5-utils nfc plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_NFC has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_SAP + bool "bluez5-utils sap plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_SAP has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP. + +config BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS + bool "bluez5-utils sixaxis plugin option renamed" + select BR2_LEGACY + select BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS + help + For consistency reasons, the option + BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS has been renamed to + BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS. + +config BR2_PACKAGE_TRANSMISSION_REMOTE + bool "transmission remote tool option removed" + select BR2_LEGACY + select BR2_PACKAGE_TRANSMISSION_DAEMON + help + Upstream does not provide a separate configure option for + the tool transmission-remote, it is built when the + transmission daemon has been enabled. Therefore, Buildroot + has automatically enabled BR2_PACKAGE_TRANSMISSION_DAEMON + for you. + +config BR2_PACKAGE_LIBKCAPI_APPS + bool "libkcapi test applications removed" + select BR2_LEGACY + select BR2_PACKAGE_LIBKCAPI_HASHER if !BR2_STATIC_LIBS + select BR2_PACKAGE_LIBKCAPI_RNGAPP + select BR2_PACKAGE_LIBKCAPI_SPEED + select BR2_PACKAGE_LIBKCAPI_TEST + help + Test applications (hasher, rng read, speed-test, test) now + have their own configuration options in the libkcapi menu. + +config BR2_PACKAGE_MPLAYER + bool "mplayer package removed" + select BR2_LEGACY + help + The mplayer package was removed. + +config BR2_PACKAGE_MPLAYER_MPLAYER + bool "mplayer package removed" + select BR2_LEGACY + help + The mplayer package was removed. + +config BR2_PACKAGE_MPLAYER_MENCODER + bool "mplayer package removed" + select BR2_LEGACY + help + The mplayer package was removed. + +config BR2_PACKAGE_LIBPLAYER_MPLAYER + bool "mplayer support in libplayer removed" + select BR2_LEGACY + help + The mplayer package was removed. + +config BR2_PACKAGE_IQVLINUX + bool "iqvlinux package removed" + select BR2_LEGACY + help + This package contained a kernel module from Intel, which + could only be used together with Intel userspace tools + provided under NDA, which also come with the same kernel + module. The copy of the kernel module available on + SourceForge is provided only to comply with the GPLv2 + requirement. Intel engineers were even surprised it even + built and were not willing to make any effort to fix their + tarball naming to contain a version number. Therefore, it + does not make sense for Buildroot to provide such a package. + + See https://sourceforge.net/p/e1000/bugs/589/ for the + discussion. + +config BR2_BINFMT_FLAT_SEP_DATA + bool "binfmt FLAT with separate code and data removed" + select BR2_LEGACY + help + This FLAT binary format was only used on Blackfin, which has + been removed. + +config BR2_bfin + bool "Blackfin architecture support removed" + select BR2_LEGACY + help + Following the removal of Blackfin support for the upstream + Linux kernel, Buildroot has removed support for this CPU + architecture. + +config BR2_PACKAGE_KODI_ADSP_BASIC + bool "kodi-adsp-basic package removed" + select BR2_LEGACY + help + kodi-adsp-basic is unmaintained + +config BR2_PACKAGE_KODI_ADSP_FREESURROUND + bool "kodi-adsp-freesurround package removed" + select BR2_LEGACY + help + kodi-adsp-freesurround is unmaintained + ############################################################################### comment "Legacy options removed in 2018.02" @@ -566,18 +1126,18 @@ config BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH 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. + 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. + 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" @@ -672,10 +1232,10 @@ 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. + 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 @@ -703,14 +1263,16 @@ config BR2_NBD_CLIENT select BR2_LEGACY select BR2_PACKAGE_NBD_CLIENT help - The nbd client option has been renamed to BR2_PACKAGE_NBD_CLIENT. + 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. + The nbd server option has been renamed to + BR2_PACKAGE_NBD_SERVER. config BR2_PACKAGE_GMOCK bool "gmock merged into gtest package" @@ -805,8 +1367,8 @@ config BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS 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. + 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" @@ -957,8 +1519,8 @@ config BR2_PACKAGE_IPKG 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. + 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" @@ -1030,8 +1592,9 @@ config BR2_KERNEL_HEADERS_3_19 select BR2_KERNEL_HEADERS_3_12 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. + Version 3.19.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. As an alternative, version 3.12.x of the headers have been automatically selected in your configuration. @@ -1040,8 +1603,8 @@ config BR2_PACKAGE_LIBEVAS_GENERIC_LOADERS select BR2_LEGACY select BR2_PACKAGE_EFL help - With EFL 1.18, libevas-generic-loaders is now provided by the efl - package. + With EFL 1.18, libevas-generic-loaders is now provided by the + efl package. config BR2_PACKAGE_ELEMENTARY bool "elementary package removed" @@ -1053,8 +1616,9 @@ config BR2_PACKAGE_ELEMENTARY config BR2_LINUX_KERNEL_CUSTOM_LOCAL bool "Linux kernel local directory option removed" help - The option to select a local directory as the source of the Linux - kernel has been removed. It hurts reproducibility of builds. + 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. @@ -1092,14 +1656,16 @@ config BR2_PACKAGE_LIBFSLVPUWRAP select BR2_LEGACY select BR2_PACKAGE_IMX_VPUWRAP help - The libfslvpuwrap has been renamed to match the renamed package. + 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. + The libfslparser has been renamed to match the renamed + package. config BR2_PACKAGE_LIBFSLCODEC bool "libfslcodec has been renamed to imx-codec" @@ -1164,7 +1730,6 @@ config BR2_PACKAGE_OPENVPN_CRYPTO_POLARSSL 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 @@ -1247,8 +1812,9 @@ config BR2_KERNEL_HEADERS_3_17 select BR2_KERNEL_HEADERS_3_12 select BR2_LEGACY help - Version 3.17.x of the Linux kernel headers have been deprecated - for more than four buildroot releases and are now removed. + Version 3.17.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. As an alternative, version 3.12.x of the headers have been automatically selected in your configuration. @@ -1351,8 +1917,8 @@ 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. + 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" @@ -1394,10 +1960,11 @@ config BR2_KERNEL_HEADERS_3_16 select BR2_KERNEL_HEADERS_3_12 select BR2_LEGACY help - Version 3.16.x of the Linux kernel headers have been deprecated - for more than four buildroot releases and are now removed. - As an alternative, version 3.12.x of the headers have been - automatically selected in your configuration. + Version 3.16.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. + As an alternative, version 3.12.x of the headers have been + automatically selected in your configuration. config BR2_PACKAGE_PYTHON_PYXML bool "python-pyxml package has been removed" @@ -1410,9 +1977,9 @@ config BR2_PACKAGE_PYTHON_PYXML 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. + 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" @@ -1435,8 +2002,8 @@ config BR2_PACKAGE_LIBELEMENTARY select BR2_LEGACY select BR2_PACKAGE_ELEMENTARY help - The libelementary package has been renamed to match the upstream - name. + The libelementary package has been renamed to match the + upstream name. config BR2_PACKAGE_LIBEINA bool "libeina package has been removed" @@ -1514,8 +2081,8 @@ config BR2_PACKAGE_INFOZIP 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. + 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" @@ -1523,9 +2090,10 @@ config BR2_BR2_PACKAGE_NODEJS_0_10_X 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. + 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" @@ -1561,24 +2129,24 @@ config BR2_PACKAGE_MEDIA_CTL 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. + 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. + 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. + 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. @@ -1610,8 +2178,9 @@ config BR2_KERNEL_HEADERS_3_11 select BR2_KERNEL_HEADERS_3_10 select BR2_LEGACY help - Version 3.11.x of the Linux kernel headers have been deprecated - for more than four buildroot releases and are now removed. + Version 3.11.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. As an alternative, version 3.10.x of the headers have been automatically selected in your configuration. @@ -1620,8 +2189,9 @@ config BR2_KERNEL_HEADERS_3_13 select BR2_KERNEL_HEADERS_3_12 select BR2_LEGACY help - Version 3.13.x of the Linux kernel headers have been deprecated - for more than four buildroot releases and are now removed. + Version 3.13.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. As an alternative, version 3.12.x of the headers have been automatically selected in your configuration. @@ -1630,8 +2200,9 @@ config BR2_KERNEL_HEADERS_3_15 select BR2_KERNEL_HEADERS_3_12 select BR2_LEGACY help - Version 3.15.x of the Linux kernel headers have been deprecated - for more than four buildroot releases and are now removed. + Version 3.15.x of the Linux kernel headers have been + deprecated for more than four buildroot releases and are now + removed. As an alternative, version 3.12.x of the headers have been automatically selected in your configuration. @@ -1971,8 +2542,8 @@ config BR2_PACKAGE_GPU_VIV_BIN_MX6Q name. config BR2_PACKAGE_LIBSEMANAGE_PYTHON_BINDINGS - depends on BR2_PACKAGE_PYTHON bool "libsemanage python bindings removed" + depends on BR2_PACKAGE_PYTHON select BR2_LEGACY help This option has been removed, since the libsemanage Python @@ -2059,8 +2630,9 @@ config BR2_TARGET_GENERIC_PASSWD_DES bool "Encoding passwords with DES has been removed" select BR2_LEGACY help - Paswords can now only be encoded with either of md5, sha256 or sha512. - The default is md5, which is stronger that DES (but still pretty weak). + Paswords can now only be encoded with either of md5, sha256 or + sha512. The default is md5, which is stronger that DES (but + still pretty weak). config BR2_PACKAGE_GTK2_THEME_HICOLOR bool "hicolor (default theme) is a duplicate" @@ -2084,16 +2656,17 @@ config BR2_PACKAGE_LIBGC select BR2_LEGACY select BR2_PACKAGE_BDWGC help - libgc has been removed because we have the same package under a - different name, bdwgc. + libgc has been removed because we have the same package under + a different name, bdwgc. config BR2_PACKAGE_WDCTL bool "util-linux' wdctl option has been renamed" select BR2_LEGACY select BR2_PACKAGE_UTIL_LINUX_WDCTL help - util-linux' wdctl option has been renamed to BR2_PACKAGE_UTIL_LINUX_WDCTL - to be aligned with how the other options are named. + util-linux' wdctl option has been renamed to + BR2_PACKAGE_UTIL_LINUX_WDCTL to be aligned with how the other + options are named. config BR2_PACKAGE_UTIL_LINUX_ARCH bool "util-linux' arch option has been removed" @@ -2113,16 +2686,17 @@ config BR2_PACKAGE_RPM_BZIP2_PAYLOADS select BR2_LEGACY select BR2_PACKAGE_BZIP2 help - The bzip2 payloads option rely entirely on the dependant package bzip2. - So, you need to select it to enable this feature. + The bzip2 payloads option rely entirely on the dependant + package bzip2. So, you need to select it to enable this + feature. config BR2_PACKAGE_RPM_XZ_PAYLOADS bool "rpm's xz payloads option has been removed" select BR2_LEGACY select BR2_PACKAGE_XZ help - The xz payloads option rely entirely on the dependant package xz. - So, you need to select it to enable this feature. + The xz payloads option rely entirely on the dependant package + xz. So, you need to select it to enable this feature. config BR2_PACKAGE_M4 bool "m4 target package removed" @@ -2177,9 +2751,9 @@ config BR2_PACKAGE_STRONGSWAN_TOOLS select BR2_PACKAGE_STRONGSWAN_PKI select BR2_PACKAGE_STRONGSWAN_SCEP help - The tools option has been removed upstream and the different tools - have been split between the pki and scep options, with others - deprecated. + The tools option has been removed upstream and the different + tools have been split between the pki and scep options, with + others deprecated. config BR2_PACKAGE_XBMC_ADDON_XVDR bool "xbmc-addon-xvdr removed" @@ -2194,126 +2768,144 @@ config BR2_PACKAGE_XBMC_PVR_ADDONS select BR2_LEGACY select BR2_PACKAGE_KODI_PVR_ADDONS help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_ALSA_LIB bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_ALSA_LIB help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_AVAHI bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_AVAHI help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_DBUS bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_DBUS help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_LIBBLURAY bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_LIBBLURAY help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_GOOM bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_GOOM help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_RSXS bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_RSXS help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_LIBCEC bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_LIBCEC help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_LIBMICROHTTPD bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_LIBMICROHTTPD help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_LIBNFS bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_LIBNFS help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_RTMPDUMP bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_RTMPDUMP help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_LIBSHAIRPLAY bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_LIBSHAIRPLAY help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_LIBSMBCLIENT bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_LIBSMBCLIENT help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_LIBTHEORA bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_LIBTHEORA help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_LIBUSB bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_LIBUSB help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_LIBVA bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_LIBVA help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PACKAGE_XBMC_WAVPACK bool "xbmc options have been renamed" select BR2_LEGACY select BR2_PACKAGE_KODI_WAVPACK help - The XBMC media center project was renamed to Kodi entertainment center + The XBMC media center project was renamed to Kodi + entertainment center config BR2_PREFER_STATIC_LIB bool "static library option renamed" @@ -2391,8 +2983,8 @@ config BR2_PACKAGE_LINUX_FIRMWARE_XC5000 select BR2_PACKAGE_LINUX_FIRMWARE_XCx000 help The Xceive xc5000 option now also handles older firmwares from - Xceive (the xc4000 series), as well as new firmwares (the xc5000c) - from Cresta, who bought Xceive. + Xceive (the xc4000 series), as well as new firmwares (the + xc5000c) from Cresta, who bought Xceive. config BR2_PACKAGE_LINUX_FIRMWARE_CXGB4 bool "Chelsio T4 option has been renamed" @@ -2433,9 +3025,9 @@ config BR2_PACKAGE_LIBELF select BR2_PACKAGE_ELFUTILS select BR2_LEGACY help - The libelf package provided an old version of the libelf library - and is deprecated. The libelf library is now provided by the - elfutils package. + The libelf package provided an old version of the libelf + library and is deprecated. The libelf library is now provided + by the elfutils package. config BR2_KERNEL_HEADERS_3_8 bool "kernel headers version 3.8.x are no longer supported" @@ -2462,7 +3054,8 @@ config BR2_PACKAGE_PROCPS select BR2_PACKAGE_PROCPS_NG select BR2_LEGACY help - The procps package has been replaced by the equivalent procps-ng. + The procps package has been replaced by the equivalent + procps-ng. config BR2_BINUTILS_VERSION_2_20_1 bool "binutils 2.20.1 has been removed" @@ -2549,40 +3142,40 @@ config BR2_PACKAGE_LIBV4L_DECODE_TM6000 select BR2_PACKAGE_LIBV4L_UTILS select BR2_LEGACY help - This libv4l option has been deprecated and replaced by a single - option to build all the libv4l utilities. + This libv4l option has been deprecated and replaced by a + single option to build all the libv4l utilities. config BR2_PACKAGE_LIBV4L_IR_KEYTABLE bool "ir-keytable" select BR2_PACKAGE_LIBV4L_UTILS select BR2_LEGACY help - This libv4l option has been deprecated and replaced by a single - option to build all the libv4l utilities. + This libv4l option has been deprecated and replaced by a + single option to build all the libv4l utilities. config BR2_PACKAGE_LIBV4L_V4L2_COMPLIANCE bool "v4l2-compliance" select BR2_PACKAGE_LIBV4L_UTILS select BR2_LEGACY help - This libv4l option has been deprecated and replaced by a single - option to build all the libv4l utilities. + This libv4l option has been deprecated and replaced by a + single option to build all the libv4l utilities. config BR2_PACKAGE_LIBV4L_V4L2_CTL bool "v4l2-ctl" select BR2_PACKAGE_LIBV4L_UTILS select BR2_LEGACY help - This libv4l option has been deprecated and replaced by a single - option to build all the libv4l utilities. + This libv4l option has been deprecated and replaced by a + single option to build all the libv4l utilities. config BR2_PACKAGE_LIBV4L_V4L2_DBG bool "v4l2-dbg" select BR2_PACKAGE_LIBV4L_UTILS select BR2_LEGACY help - This libv4l option has been deprecated and replaced by a single - option to build all the libv4l utilities. + This libv4l option has been deprecated and replaced by a + single option to build all the libv4l utilities. ############################################################################### comment "Legacy options removed in 2014.05" @@ -2630,8 +3223,8 @@ config BR2_PACKAGE_TZDATA_ZONELIST string "tzdata: the timezone list option has been renamed" help The option BR2_PACKAGE_TZDATA_ZONELIST has been renamed to - BR2_TARGET_TZ_ZONELIST, and moved to the "System configuration" - menu. You'll need to select BR2_TARGET_TZ_INFO. + BR2_TARGET_TZ_ZONELIST, and moved to the "System + configuration" menu. You'll need to select BR2_TARGET_TZ_INFO. config BR2_PACKAGE_TZDATA_ZONELIST_WRAP bool @@ -2643,8 +3236,8 @@ config BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE select BR2_LEGACY help The BR2_PACKAGE_LUA_INTERPRETER_EDITING_NONE option has been - renamed to BR2_PACKAGE_LUA_EDITING_NONE. You will have to select - it in the corresponding choice. + renamed to BR2_PACKAGE_LUA_EDITING_NONE. You will have to + select it in the corresponding choice. config BR2_PACKAGE_LUA_INTERPRETER_READLINE bool "Lua command-line editing using readline has been renamed" @@ -2708,8 +3301,8 @@ config BR2_PACKAGE_UDEV 'systemd' as init system, 'eudev' should be selected, which is the case if '/dev management' is set to 'Dynamic using eudev'. - If you are using 'systemd', its internal implementation of 'udev' - is used. + If you are using 'systemd', its internal implementation of + 'udev' is used. config BR2_PACKAGE_UDEV_RULES_GEN bool "udev rules generation handled by provider" @@ -2725,8 +3318,8 @@ config BR2_PACKAGE_UDEV_RULES_GEN '/dev management' is set to 'Dynamic using eudev' to get the same behaviour as in your old configuration. - If you are using 'systemd', it internal implementation of 'udev' - will generate the rules. + If you are using 'systemd', it internal implementation of + 'udev' will generate the rules. config BR2_PACKAGE_UDEV_ALL_EXTRAS bool "udev extras removed" @@ -2833,23 +3426,23 @@ config BR2_HAVE_DOCUMENTATION bool "support for documentation on target has been removed" select BR2_LEGACY help - Support for documentation on target has been removed since it has - been deprecated for more than four buildroot releases. + Support for documentation on target has been removed since it + has been deprecated for more than four buildroot releases. config BR2_PACKAGE_AUTOMAKE bool "automake target package has been removed" select BR2_LEGACY help - The 'automake' target package has been removed since it has been - deprecated for more than four buildroot releases. + The 'automake' target package has been removed since it has + been deprecated for more than four buildroot releases. Note: the host automake still exists. config BR2_PACKAGE_AUTOCONF bool "autoconf target package has been removed" select BR2_LEGACY help - The 'autoconf' target package has been removed since it has been - deprecated for more than four buildroot releases. + The 'autoconf' target package has been removed since it has + been deprecated for more than four buildroot releases. Note: the host autoconf still exists. config BR2_PACKAGE_XSTROKE @@ -2865,7 +3458,8 @@ config BR2_PACKAGE_LZMA help The 'lzma' target package has been removed since it has been deprecated for more than four buildroot releases. - Note: generating lzma-compressed rootfs images is still supported. + Note: generating lzma-compressed rootfs images is still + supported. config BR2_PACKAGE_TTCP bool "ttcp has been removed" @@ -2879,9 +3473,9 @@ config BR2_PACKAGE_LIBNFC_LLCP select BR2_LEGACY select BR2_PACKAGE_LIBLLCP help - The 'libnfc-llcp' package has been removed since upstream renamed - to 'libllcp'. We have added a new package for 'libllcp' and bumped - the version at the same time. + The 'libnfc-llcp' package has been removed since upstream + renamed to 'libllcp'. We have added a new package for + 'libllcp' and bumped the version at the same time. config BR2_PACKAGE_MYSQL_CLIENT bool "MySQL client renamed to MySQL" @@ -2947,8 +3541,8 @@ config BR2_PACKAGE_LVM2_DMSETUP_ONLY help The BR2_PACKAGE_LVM2_DMSETUP_ONLY was a negative option, which led to problems with other packages that need the full lvm2 - suite. Therefore, the option has been replaced with the positive - BR2_PACKAGE_LVM2_STANDARD_INSTALL option. + suite. Therefore, the option has been replaced with the + positive BR2_PACKAGE_LVM2_STANDARD_INSTALL option. # Note: BR2_PACKAGE_LVM2_DMSETUP_ONLY is still referenced in package/lvm2/Config.in # in order to automatically propagate old configs @@ -3107,23 +3701,6 @@ config BR2_HAVE_DEVFILES completely from Buildroot. See Buildroot's documentation for more explanations. -############################################################################### -comment "Legacy options removed in 2013.05" - -config BR2_PACKAGE_LINUX_FIRMWARE_RTL_8192 - bool "Realtek 8192 replaced by Realtek 81xx" - select BR2_LEGACY - select BR2_PACKAGE_LINUX_FIRMWARE_RTL_81XX - help - Now covers the whole Realtek 81xx familly: 8188/8192. - -config BR2_PACKAGE_LINUX_FIRMWARE_RTL_8712 - bool "Realtek 8712 replaced by Realtek 87xx" - select BR2_LEGACY - select BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX - help - Now covers the whole Realtek 87xx familly: 8712/8723. - endmenu endif # !SKIP_LEGACY diff --git a/buildroot/DEVELOPERS b/buildroot/DEVELOPERS index 41e1b54d990..efd331d20ec 100644 --- a/buildroot/DEVELOPERS +++ b/buildroot/DEVELOPERS @@ -51,7 +51,11 @@ F: package/libsemanage/ F: package/libsepol/ F: package/nginx-naxsi/ F: package/policycoreutils/ +F: package/python-flask-sqlalchemy/ F: package/python-mutagen/ +F: package/python-psycopg2/ +F: package/python-sqlalchemy/ +F: package/python-visitor/ F: package/restorecond/ F: package/refpolicy/ F: package/selinux-python/ @@ -60,8 +64,10 @@ F: package/setools/ F: package/sngrep/ N: Adrian Perez de Castro +F: package/brotli/ F: package/libepoxy/ F: package/webkitgtk/ +F: package/woff2/ N: Adrien Gallouテォt F: package/glorytun/ @@ -72,6 +78,8 @@ F: package/libqmi/ F: package/modem-manager/ N: Alex Suykov +F: board/chromebook/snow/ +F: configs/chromebook_snow_defconfig F: package/vboot-utils/ N: Alexander Clouter @@ -111,6 +119,7 @@ F: package/ktap/ N: Andrテゥ Hentschel F: package/azure-iot-sdk-c/ +F: package/libkrb5/ F: package/openal/ F: package/p7zip/ F: package/wine/ @@ -144,6 +153,9 @@ F: package/python-pydal/ F: package/python-web2py/ F: package/sysdig/ +N: Anisse Astier +F: package/go/ + N: Antony Pavlov F: package/lsscsi/ @@ -155,6 +167,12 @@ F: package/wf111/ N: ARC Maintainers F: arch/Config.in.arc +F: board/synopsys/ +F: configs/snps_arc700_axs101_defconfig +F: configs/snps_archs38_axs103_defconfig +F: configs/snps_archs38_haps_defconfig +F: configs/snps_archs38_hsdk_defconfig +F: configs/snps_archs38_vdk_defconfig N: Ariel D'Alessandro F: package/axfsutils/ @@ -174,6 +192,12 @@ F: package/python-bottle/ F: package/sqlcipher/ F: package/stress/ +N: Asaf Kahlon +F: package/python-jsonmodels/ +F: package/python-subprocess32/ +F: package/python-yieldfrom/ +F: package/zeromq/ + N: Ash Charles F: package/pru-software-support/ F: package/ti-cgt-pru/ @@ -203,6 +227,7 @@ F: package/pulseview/ F: package/sigrok-cli/ N: Baruch Siach +F: package/18xx-ti-utils/ F: package/daemon/ F: package/dropbear/ F: package/ebtables/ @@ -299,7 +324,6 @@ F: package/libyuv/ F: package/mesa3d/ F: package/minidlna/ F: package/mjpg-streamer/ -F: package/mplayer/ F: package/perl-crypt-openssl-random/ F: package/perl-crypt-openssl-rsa/ F: package/perl-digest-sha1/ @@ -384,8 +408,12 @@ N: Carlos Santos F: package/gtest/ F: package/libpam-radius-auth/ F: package/libpam-tacplus/ +F: package/modem-manager/ F: package/perl-file-util/ F: package/util-linux/ +F: package/tpm2-abrmd/ +F: package/tpm2-tools/ +F: package/tpm2-tss/ N: Carsten Schoenert F: package/dvbsnoop/ @@ -419,6 +447,7 @@ F: package/aufs-util/ F: package/batman-adv/ F: package/docker-containerd/ F: package/docker-engine/ +F: package/docker-proxy/ F: package/mosh/ F: package/rtl8821au/ F: package/runc/ @@ -456,6 +485,8 @@ F: arch/Config.in.powerpc F: package/kvm-unit-tests N: Dagg Stompler +F: board/hardkernel/odroidc2 +F: configs/odroidc2_defconfig F: package/libamcodec/ F: package/odroid-mali/ F: package/odroid-scripts/ @@ -466,7 +497,6 @@ F: package/log4cpp/ N: Daniel Nystrテカm F: package/e2tools/ -F: package/fbgrab/ N: Daniel Price F: package/nodejs/ @@ -577,16 +607,24 @@ 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: Eugene Tarassov +F: package/tcf-agent/ + N: Evan Zelkowitz F: package/sdl_gfx/ N: Ezequiel Garcia +F: board/ci20/ +F: configs/ci20_defconfig F: arch/Config.in.nios2 F: package/fio/ F: package/iptraf-ng/ @@ -600,11 +638,16 @@ F: package/supertuxkart/ N: Fabio Estevam F: board/warp7/ F: configs/freescale_imx* -F: configs/imx6-sabresd* +F: configs/imx23evk_defconfig +F: configs/imx6-sabre* F: configs/imx6slevk_defconfig F: configs/imx6sx-sdb_defconfig F: configs/imx6ulevk_defconfig F: configs/imx6ulpico_defconfig +F: configs/imx7dpico_defconfig +F: configs/mx25pdk_defconfig +F: configs/mx51evk_defconfig +F: configs/mx53loco_defconfig F: configs/mx6cubox_defconfig F: configs/mx6sx_udoo_neo_defconfig F: configs/mx6udoo_defconfig @@ -635,15 +678,42 @@ F: package/gupnp/ F: package/gupnp-dlna/ F: package/gupnp-tools/ F: package/hiredis/ +F: package/i2pd/ F: package/igd2-for-linux/ +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/libidn/ +F: package/libjpeg/ +F: package/liblockfile/ +F: package/libmatroska/ +F: package/libmpdclient/ +F: package/libnetfilter_conntrack/ +F: package/libnetfilter_queue/ F: package/libupnp/ F: package/libupnp18/ F: package/minissdpd/ F: package/motion/ +F: package/mutt/ +F: package/ncmpc/ +F: package/pcmanfm/ F: package/rygel/ F: package/safeclib/ F: package/tinycbor/ F: package/tinydtls/ +F: package/whois/ + +N: Falco Hyfing +F: package/python-pymodbus/ N: Floris Bos F: package/ipmitool/ @@ -657,6 +727,7 @@ F: board/olimex/a20_olinuxino F: configs/olimex_a20_olinuxino_* F: package/4th/ F: package/botan/ +F: package/chipmunk/ F: package/dado/ F: package/ficl/ F: package/gdbm/ @@ -728,6 +799,10 @@ F: package/ocrad/ F: package/tesseract-ocr/ F: package/webp/ +N: Giulio Benetti +F: package/sunxi-mali-mainline/ +F: package/sunxi-mali-mainline-driver/ + N: Gregory Dymarek F: package/ding-libs/ F: package/gengetopt/ @@ -744,6 +819,8 @@ F: package/sdl2/ N: Guillaume William Brs F: package/liquid-dsp/ +F: package/pixiewps/ +F: package/reaver/ N: Guo Ren F: arch/Config.in.csky @@ -782,8 +859,12 @@ N: Ismael Luceno F: package/axel/ N: Jagan Teki +F: board/amarula/ +F: board/asus/ F: board/bananapi/ F: board/engicam/ +F: configs/amarula_vyasa_rk3288_defconfig +F: configs/asus_tinker_rk3288_defconfig F: board/friendlyarm/nanopi-a64/ F: board/friendlyarm/nanopi-neo2/ F: board/olimex/a64-olinuxino/ @@ -823,6 +904,10 @@ F: package/yad/ N: Jan Heylen F: package/opentracing-cpp/ +N: Jan Kundrテ。t +F: configs/solidrun_clearfog_defconfig +F: board/solidrun/clearfog/ + N: Jan Kraval F: board/orangepi/orangepi-lite F: configs/orangepi_lite_defconfig @@ -857,6 +942,8 @@ F: configs/qemu_ppc64le_pseries_defconfig N: Joseph Kogut F: package/gconf/ +F: package/libnss/ +F: package/python-cython/ F: package/python-raven/ F: package/python-schedule/ F: package/python-websockets/ @@ -967,6 +1054,7 @@ F: board/lemaker/bananapro/ F: configs/bananapro_defconfig F: package/augeas/ F: package/bctoolbox/ +F: package/freescale-imx/imx-alsa-plugins/ F: package/libshout/ F: package/libupnpp/ F: package/luv/ @@ -1006,6 +1094,7 @@ F: boot/afboot-stm32/ N: Lionel Flandrin F: package/python-babel/ +F: package/python-daemonize/ F: package/python-flask/ F: package/python-flask-babel/ F: package/python-gunicorn/ @@ -1020,7 +1109,9 @@ F: package/ti-sgx-um/ N: Luca Ceresoli F: board/olimex/a20_olinuxino/ +F: board/zynq/ F: configs/olimex_a20_olinuxino_* +F: configs/zynq_zed_defconfig F: package/agentpp/ F: package/exim/ F: package/libpjsip/ @@ -1105,9 +1196,14 @@ F: package/harfbuzz/ F: package/libsecret/ N: Martin Bark +F: board/raspberrypi/ +F: configs/raspberrypi3_defconfig F: package/ca-certificates/ F: package/connman/ F: package/nodejs/ +F: package/rpi-bt-firmware/ +F: package/rpi-firmware/ +F: package/rpi-wifi-firmware/ F: package/tzdata/ F: package/zic/ @@ -1125,6 +1221,12 @@ F: configs/ts4900_defconfig F: package/ts4900-fpga/ N: Matt Weber +F: board/freescale/p* +F: board/freescale/t* +F: board/qemu/ppc64-e5500/ +F: configs/freescale_p* +F: configs/freescale_t* +F: configs/qemu_ppc64_e5500_defconfig F: package/argp-standalone/ F: package/aufs/ F: package/aufs-util/ @@ -1254,6 +1356,11 @@ F: package/tinyxml/ N: Maxime Ripard F: package/kmsxx/ +N: Michael Durrant +F: board/arcturus/ +F: configs/arcturus_ucp1020_defconfig +F: configs/arcturus_ucls1012a_defconfig + N: Michael Rommel F: package/knock/ F: package/python-crc16/ @@ -1312,6 +1419,11 @@ F: package/tcf-agent/ 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/ @@ -1347,8 +1459,21 @@ N: Pedro Aguilar F: package/libunistring/ N: Peter Korsgaard +F: board/minnowboard/ +F: board/nexbox/a95x/ +F: board/openblocks/a6/ F: board/orangepi/ +F: board/pandaboard/ +F: board/roseapplepi/ +F: configs/minnowboard_max-graphical_defconfig +F: configs/minnowboard_max_defconfig +F: configs/nexbox_a95x_defconfig +F: configs/openblocks_a6_defconfig F: configs/orangepi_pc_defconfig +F: configs/pandaboard_defconfig +F: configs/roseapplepi_defconfig +F: configs/sheevaplug_defconfig +F: package/docker-compose/ F: package/dump1090/ F: package/flickcurl/ F: package/fscryptctl/ @@ -1360,11 +1485,19 @@ F: package/lzop/ F: package/memtool/ F: package/mosquitto/ F: package/python-alsaaudio/ +F: package/python-backports-ssl-match-hostname/ +F: package/python-cached-property/ +F: package/python-docker/ +F: package/python-dockerpty/ +F: package/python-docker-pycreds/ F: package/python-enum/ F: package/python-enum34/ +F: package/python-functools32/ F: package/python-ipaddr/ F: package/python-pam/ F: package/python-psutil/ +F: package/python-texttable/ +F: package/python-websocket-client/ F: package/triggerhappy/ N: Peter Seiderer @@ -1377,11 +1510,14 @@ F: package/dejavu/ F: package/dillo/ F: package/edid-decode/ F: package/ghostscript-fonts/ +F: package/gstreamer1/gst1-interpipe/ F: package/gstreamer1/gst1-validate/ +F: package/gstreamer1/gstreamer1-editing-services/ F: package/libevdev/ F: package/log4cplus/ F: package/postgresql/ F: package/qt5/ +F: package/quotatool/ F: package/racehound/ F: package/wiringpi/ @@ -1407,6 +1543,7 @@ F: package/modem-manager/ F: package/network-manager/ F: package/ofono/ F: package/python-networkmanager/ +F: support/kconfig/ N: Phil Eichinger F: package/libqrencode/ @@ -1414,10 +1551,6 @@ F: package/psplash/ F: package/sispmctl/ F: package/zsh/ -N: Philipp Claves -F: package/libassuan/ -F: package/libgpgme/ - N: Philippe Proulx F: package/lttng-babeltrace/ F: package/lttng-libust/ @@ -1493,7 +1626,8 @@ F: package/bullet/ F: package/efl/ F: package/enlightenment/ F: package/expedite/ -F: package/iqvlinux/ +F: package/flare-engine/ +F: package/flare-game/ F: package/irrlicht/ F: package/liblinear/ F: package/lensfun/ @@ -1512,6 +1646,7 @@ F: package/stress-ng/ F: package/supertux/ F: package/supertuxkart/ F: package/terminology/ +F: package/tk/ F: package/upower/ F: package/xenomai/ @@ -1603,6 +1738,7 @@ F: package/daq/ F: package/libgdiplus/ F: package/mongodb/ F: package/pimd/ +F: package/snort/ F: package/stella/ F: package/traceroute/ F: package/tunctl/ @@ -1657,6 +1793,7 @@ N: Stefan Frテカberg F: package/elfutils/ F: package/libtasn1/ F: package/proxychains-ng/ +F: package/vte/ F: package/yasm/ F: package/zlib-ng/ @@ -1686,6 +1823,7 @@ F: package/dvdrw-tools/ F: package/memtest86/ F: package/mjpegtools/ F: package/tovid/ +F: package/udftools/ F: package/xorriso/ N: Steve Thomas @@ -1695,8 +1833,9 @@ N: Steven Noonan F: package/hwloc/ F: package/powertop/ -N: Sven Haardiek +N: Sven Haardiek F: package/lcdproc/ +F: package/python-influxdb/ N: Sven Neumann F: package/gstreamer1/gst1-libav/ @@ -1793,10 +1932,17 @@ F: toolchain/ N: Tiago Brusamarello F: package/aer-inject/ +N: Timo Ketola +F: package/fbgrab/ + N: Tzu-Jung Lee F: package/dropwatch/ F: package/tstools/ +N: Valentin Korenblit +F: package/clang/ +F: package/llvm/ + N: Vanya Sergeev F: package/lua-periphery/ @@ -1821,6 +1967,10 @@ F: package/pixz/ N: Vinicius Tinti F: package/python-thrift/ +N: Vivien Didelot +F: board/technologic/ts5500/ +F: configs/ts5500_defconfig + N: Volkov Viacheslav F: package/v4l2grab/ F: package/zbar/ @@ -1829,12 +1979,6 @@ N: Wade Berrier F: package/ngrep/ N: Waldemar Brodkorb -F: arch/Config.in.bfin -F: arch/Config.in.m68k -F: arch/Config.in.or1k -F: arch/Config.in.sparc -F: package/glibc/ -F: package/mksh/ F: package/uclibc/ F: package/uclibc-ng-test/ diff --git a/buildroot/Makefile b/buildroot/Makefile index 957ba6634ad..3415f994bd1 100644 --- a/buildroot/Makefile +++ b/buildroot/Makefile @@ -87,9 +87,9 @@ all: .PHONY: all # Set and export the version string -export BR2_VERSION := 2018.02 +export BR2_VERSION := 2018.05-rc2 # Actual time the release is cut (for reproducible builds) -BR2_VERSION_EPOCH = 1520198000 +BR2_VERSION_EPOCH = 1527024000 # Save running make version since it's clobbered by the make package RUNNING_MAKE_VERSION := $(MAKE_VERSION) @@ -215,7 +215,10 @@ BR_GRAPH_OUT := $(or $(BR2_GRAPH_OUT),pdf) BUILD_DIR := $(BASE_DIR)/build BINARIES_DIR := $(BASE_DIR)/images -TARGET_DIR := $(BASE_DIR)/target +# The target directory is common to all packages, +# but there is one that is specific to each filesystem. +BASE_TARGET_DIR := $(BASE_DIR)/target +TARGET_DIR = $(if $(ROOTFS),$(ROOTFS_$(ROOTFS)_TARGET_DIR),$(BASE_TARGET_DIR)) # 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 @@ -231,15 +234,6 @@ LEGAL_MANIFEST_CSV_HOST = $(LEGAL_INFO_DIR)/host-manifest.csv LEGAL_WARNINGS = $(LEGAL_INFO_DIR)/.warnings LEGAL_REPORT = $(LEGAL_INFO_DIR)/README -################################################################################ -# -# staging and target directories do NOT list these as -# dependencies anywhere else -# -################################################################################ -$(BUILD_DIR) $(TARGET_DIR) $(HOST_DIR) $(BINARIES_DIR) $(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR_TARGET) $(REDIST_SOURCES_DIR_HOST): - @mkdir -p $@ - BR2_CONFIG = $(CONFIG_DIR)/.config # Pull in the user's configuration file @@ -253,9 +247,6 @@ export TZ = UTC export LANG = C export LC_ALL = C export GZIP = -n -BR2_VERSION_GIT_EPOCH = $(shell GIT_DIR=$(TOPDIR)/.git $(GIT) log -1 --format=%at) -export SOURCE_DATE_EPOCH ?= $(if $(wildcard $(TOPDIR)/.git),$(BR2_VERSION_GIT_EPOCH),$(BR2_VERSION_EPOCH)) -DEPENDENCIES_HOST_PREREQ += host-fakedate endif # To put more focus on warnings, be less verbose as default @@ -438,7 +429,6 @@ KERNEL_ARCH := $(shell echo "$(ARCH)" | sed -e "s/-.*//" \ -e s/arceb/arc/ \ -e s/arm.*/arm/ -e s/sa110/arm/ \ -e s/aarch64.*/arm64/ \ - -e s/bfin/blackfin/ \ -e s/or1k/openrisc/ \ -e s/parisc64/parisc/ \ -e s/powerpc64.*/powerpc/ \ @@ -455,12 +445,18 @@ TAR_OPTIONS = $(call qstrip,$(BR2_TAR_OPTIONS)) -xf # packages compiled for the host go here HOST_DIR := $(call qstrip,$(BR2_HOST_DIR)) +ifneq ($(HOST_DIR),$(BASE_DIR)/host) +HOST_DIR_SYMLINK = $(BASE_DIR)/host +$(HOST_DIR_SYMLINK): $(BASE_DIR) + ln -snf $(HOST_DIR) $(BASE_DIR)/host +endif + # Quotes are needed for spaces and all in the original PATH content. BR_PATH = "$(HOST_DIR)/bin:$(HOST_DIR)/sbin:$(PATH)" # Location of a file giving a big fat warning that output/target # should not be used as the root filesystem. -TARGET_DIR_WARNING_FILE = $(TARGET_DIR)/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM +TARGET_DIR_WARNING_FILE = $(BASE_TARGET_DIR)/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM ifeq ($(BR2_CCACHE),y) CCACHE := $(HOST_DIR)/bin/ccache @@ -502,11 +498,17 @@ include package/Makefile.in -include $(sort $(wildcard arch/arch.mk.*)) include support/dependencies/dependencies.mk -PACKAGES += $(DEPENDENCIES_HOST_PREREQ) - 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)) @@ -559,8 +561,8 @@ $(foreach pkg,$(call UPPERCASE,$(PACKAGES)),\ endif .PHONY: dirs -dirs: $(BUILD_DIR) $(STAGING_DIR) $(TARGET_DIR) \ - $(HOST_DIR) $(HOST_DIR)/usr $(HOST_DIR)/lib $(BINARIES_DIR) +dirs: $(BUILD_DIR) $(STAGING_DIR) $(BASE_TARGET_DIR) \ + $(HOST_DIR) $(HOST_DIR_SYMLINK) $(BINARIES_DIR) $(BUILD_DIR)/buildroot-config/auto.conf: $(BR2_CONFIG) $(MAKE1) $(EXTRAMAKEARGS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTCXX="$(HOSTCXX_NOCCACHE)" silentoldconfig @@ -577,19 +579,9 @@ sdk: world $(TOPDIR)/support/scripts/fix-rpath host $(TOPDIR)/support/scripts/fix-rpath staging $(INSTALL) -m 755 $(TOPDIR)/support/misc/relocate-sdk.sh $(HOST_DIR)/relocate-sdk.sh + mkdir -p $(HOST_DIR)/share/buildroot echo $(HOST_DIR) > $(HOST_DIR)/share/buildroot/sdk-location -# Compatibility symlink in case a post-build script still uses $(HOST_DIR)/usr -$(HOST_DIR)/usr: $(HOST_DIR) - @ln -snf . $@ - -$(HOST_DIR)/lib: $(HOST_DIR) - @mkdir -p $@ - @case $(HOSTARCH) in \ - (*64) ln -snf lib $(@D)/lib64;; \ - (*) ln -snf lib $(@D)/lib32;; \ - esac - # Populating the staging with the base directories is handled by the skeleton package $(STAGING_DIR): @mkdir -p $(STAGING_DIR) @@ -692,6 +684,9 @@ endif $(TARGETS_ROOTFS): target-finalize +# Avoid the rootfs name leaking down the dependency chain +target-finalize: ROOTFS= + .PHONY: target-finalize target-finalize: $(PACKAGES) @$(call MESSAGE,"Finalizing target directory") @@ -761,8 +756,11 @@ endif $(call MESSAGE,"Executing post-build script $(s)"); \ $(EXTRA_ENV) $(s) $(TARGET_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) + touch $(TARGET_DIR)/usr + .PHONY: target-post-image target-post-image: $(TARGETS_ROOTFS) target-finalize + @rm -f $(ROOTFS_COMMON_TAR) @$(foreach s, $(call qstrip,$(BR2_ROOTFS_POST_IMAGE_SCRIPT)), \ $(call MESSAGE,"Executing post-image script $(s)"); \ $(EXTRA_ENV) $(s) $(BINARIES_DIR) $(call qstrip,$(BR2_ROOTFS_POST_SCRIPT_ARGS))$(sep)) @@ -952,6 +950,11 @@ savedefconfig: $(BUILD_DIR)/buildroot-config/conf prepare-kconfig # ################################################################################ +# staging and target directories do NOT list these as +# dependencies anywhere else +$(BUILD_DIR) $(BASE_TARGET_DIR) $(HOST_DIR) $(BINARIES_DIR) $(LEGAL_INFO_DIR) $(REDIST_SOURCES_DIR_TARGET) $(REDIST_SOURCES_DIR_HOST): + @mkdir -p $@ + # outputmakefile generates a Makefile in the output directory, if using a # separate output directory. This allows convenient use of make in the # output directory. @@ -985,7 +988,7 @@ printvars: .PHONY: clean clean: - rm -rf $(TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) \ + rm -rf $(BASE_TARGET_DIR) $(BINARIES_DIR) $(HOST_DIR) $(HOST_DIR_SYMLINK) \ $(BUILD_DIR) $(BASE_DIR)/staging \ $(LEGAL_INFO_DIR) $(GRAPHS_DIR) @@ -1037,6 +1040,10 @@ help: @echo ' -build - Build up to the build step' @echo ' -show-depends - List packages on which depends' @echo ' -show-rdepends - List packages which have as a dependency' + @echo ' -show-recursive-depends' + @echo ' - Recursively list packages on which depends' + @echo ' -show-recursive-rdepends' + @echo ' - Recursively list packages which have as a dependency' @echo ' -graph-depends - Generate a graph of '\''s dependencies' @echo ' -graph-rdepends - Generate a graph of '\''s reverse dependencies' @echo ' -dirclean - Remove build directory' diff --git a/buildroot/arch/Config.in b/buildroot/arch/Config.in index d3f63da34f2..a66ea0d03b9 100644 --- a/buildroot/arch/Config.in +++ b/buildroot/arch/Config.in @@ -28,24 +28,25 @@ config BR2_arcle bool "ARC (little endian)" select BR2_ARCH_HAS_MMU_MANDATORY help - Synopsys' DesignWare ARC Processor Cores are a family of 32-bit CPUs - that can be used from deeply embedded to high performance host - applications. Little endian. + Synopsys' DesignWare ARC Processor Cores are a family of + 32-bit CPUs that can be used from deeply embedded to high + performance host applications. Little endian. config BR2_arceb bool "ARC (big endian)" select BR2_ARCH_HAS_MMU_MANDATORY help - Synopsys' DesignWare ARC Processor Cores are a family of 32-bit CPUs - that can be used from deeply embedded to high performance host - applications. Big endian. + 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. + 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 @@ -53,8 +54,9 @@ config BR2_armeb bool "ARM (big endian)" # MMU support is set by the subarchitecture file, arch/Config.in.arm help - ARM is a 32-bit reduced instruction set computer (RISC) instruction - set architecture (ISA) developed by ARM Holdings. Big endian. + 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 @@ -76,16 +78,6 @@ config BR2_aarch64_be http://www.arm.com/products/processors/instruction-set-architectures/armv8-architecture.php http://en.wikipedia.org/wiki/ARM -config BR2_bfin - bool "Blackfin" - select BR2_ARCH_HAS_FDPIC_SUPPORT - select BR2_ARCH_NEEDS_GCC_AT_LEAST_6 - help - The Blackfin is a family of 16 or 32-bit microprocessors developed, - manufactured and marketed by Analog Devices. - http://www.analog.com/ - http://en.wikipedia.org/wiki/Blackfin - config BR2_csky bool "csky" select BR2_ARCH_HAS_NO_TOOLCHAIN_BUILDROOT @@ -113,8 +105,8 @@ config BR2_microblazeel bool "Microblaze AXI (little endian)" select BR2_ARCH_HAS_MMU_MANDATORY help - Soft processor core designed for Xilinx FPGAs from Xilinx. AXI bus - based architecture (little endian) + 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 @@ -122,8 +114,8 @@ config BR2_microblazebe bool "Microblaze non-AXI (big endian)" select BR2_ARCH_HAS_MMU_MANDATORY help - Soft processor core designed for Xilinx FPGAs from Xilinx. PLB bus - based architecture (non-AXI, big endian) + 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 @@ -131,7 +123,8 @@ config BR2_mips bool "MIPS (big endian)" select BR2_ARCH_HAS_MMU_MANDATORY help - MIPS is a RISC microprocessor from MIPS Technologies. Big endian. + MIPS is a RISC microprocessor from MIPS Technologies. Big + endian. http://www.mips.com/ http://en.wikipedia.org/wiki/MIPS_Technologies @@ -139,7 +132,8 @@ config BR2_mipsel bool "MIPS (little endian)" select BR2_ARCH_HAS_MMU_MANDATORY help - MIPS is a RISC microprocessor from MIPS Technologies. Little endian. + MIPS is a RISC microprocessor from MIPS Technologies. Little + endian. http://www.mips.com/ http://en.wikipedia.org/wiki/MIPS_Technologies @@ -148,7 +142,8 @@ config BR2_mips64 select BR2_ARCH_IS_64 select BR2_ARCH_HAS_MMU_MANDATORY help - MIPS is a RISC microprocessor from MIPS Technologies. Big endian. + MIPS is a RISC microprocessor from MIPS Technologies. Big + endian. http://www.mips.com/ http://en.wikipedia.org/wiki/MIPS_Technologies @@ -157,7 +152,8 @@ config BR2_mips64el select BR2_ARCH_IS_64 select BR2_ARCH_HAS_MMU_MANDATORY help - MIPS is a RISC microprocessor from MIPS Technologies. Little endian. + MIPS is a RISC microprocessor from MIPS Technologies. Little + endian. http://www.mips.com/ http://en.wikipedia.org/wiki/MIPS_Technologies @@ -180,8 +176,8 @@ config BR2_powerpc bool "PowerPC" select BR2_ARCH_HAS_MMU_MANDATORY help - PowerPC is a RISC architecture created by Apple-IBM-Motorola alliance. - Big endian. + PowerPC is a RISC architecture created by Apple-IBM-Motorola + alliance. Big endian. http://www.power.org/ http://en.wikipedia.org/wiki/Powerpc @@ -190,8 +186,8 @@ config BR2_powerpc64 select BR2_ARCH_IS_64 select BR2_ARCH_HAS_MMU_MANDATORY help - PowerPC is a RISC architecture created by Apple-IBM-Motorola alliance. - Big endian. + PowerPC is a RISC architecture created by Apple-IBM-Motorola + alliance. Big endian. http://www.power.org/ http://en.wikipedia.org/wiki/Powerpc @@ -200,8 +196,8 @@ config BR2_powerpc64le select BR2_ARCH_IS_64 select BR2_ARCH_HAS_MMU_MANDATORY help - PowerPC is a RISC architecture created by Apple-IBM-Motorola alliance. - Little endian. + PowerPC is a RISC architecture created by Apple-IBM-Motorola + alliance. Little endian. http://www.power.org/ http://en.wikipedia.org/wiki/Powerpc @@ -209,8 +205,9 @@ config BR2_sh bool "SuperH" select BR2_ARCH_HAS_MMU_OPTIONAL help - SuperH (or SH) is a 32-bit reduced instruction set computer (RISC) - instruction set architecture (ISA) developed by Hitachi. + 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 @@ -218,8 +215,9 @@ config BR2_sparc bool "SPARC" select BR2_ARCH_HAS_MMU_MANDATORY help - SPARC (from Scalable Processor Architecture) is a RISC instruction - set architecture (ISA) developed by Sun Microsystems. + 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 @@ -228,8 +226,9 @@ config BR2_sparc64 select BR2_ARCH_IS_64 select BR2_ARCH_HAS_MMU_MANDATORY help - SPARC (from Scalable Processor Architecture) is a RISC instruction - set architecture (ISA) developed by Sun Microsystems. + 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 @@ -349,56 +348,44 @@ config BR2_BINFMT_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. + ELF (Executable and Linkable Format) is a format for libraries + and executables used across different architectures and + operating systems. config BR2_BINFMT_FDPIC bool "FDPIC" depends on BR2_ARCH_HAS_FDPIC_SUPPORT select BR2_BINFMT_SUPPORTS_SHARED help - ELF FDPIC binaries are based on ELF, but allow the individual load - segments of a binary to be located in memory independently of each - other. This makes this format ideal for use in environments where no - MMU is available. + ELF FDPIC binaries are based on ELF, but allow the individual + load segments of a binary to be located in memory + independently of each other. This makes this format ideal for + use in environments where no MMU is available. 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. + FLAT binary is a relatively simple and lightweight executable + format based on the original a.out format. It is widely used + in environment where no MMU is available. endchoice # Set up flat binary type choice prompt "FLAT Binary type" - depends on BR2_BINFMT_FLAT default BR2_BINFMT_FLAT_ONE + depends on BR2_BINFMT_FLAT config BR2_BINFMT_FLAT_ONE bool "One memory region" help All segments are linked into one memory region. -config BR2_BINFMT_FLAT_SEP_DATA - bool "Separate data and code region" - # this FLAT binary type technically exists on m68k, but fails - # to build numerous packages: due to architecture limitation, - # big functions cannot be built in this mode. They cause build - # failures such as "Tried to convert PC relative branch to - # absolute jump" or "error: value -yyyyy out of range". - depends on BR2_bfin - help - Allow for the data and text segments to be separated and placed in - different regions of memory. - config BR2_BINFMT_FLAT_SHARED bool "Shared binary" - depends on BR2_m68k || BR2_bfin + depends on BR2_m68k # Even though this really generates shared binaries, there is no libdl # and dlopen() cannot be used. So packages that require shared # libraries cannot be built. Therefore, we don't select @@ -418,10 +405,6 @@ if BR2_arm || BR2_armeb || BR2_aarch64 || BR2_aarch64_be source "arch/Config.in.arm" endif -if BR2_bfin -source "arch/Config.in.bfin" -endif - if BR2_csky source "arch/Config.in.csky" endif diff --git a/buildroot/arch/Config.in.arc b/buildroot/arch/Config.in.arc index 92503a01400..156384b9a5c 100644 --- a/buildroot/arch/Config.in.arc +++ b/buildroot/arch/Config.in.arc @@ -1,7 +1,7 @@ choice prompt "Target CPU" - depends on BR2_arc default BR2_arc770d + depends on BR2_arc help Specific CPU to use diff --git a/buildroot/arch/Config.in.arm b/buildroot/arch/Config.in.arm index b05e83e33ca..c99a995db2f 100644 --- a/buildroot/arch/Config.in.arm +++ b/buildroot/arch/Config.in.arm @@ -456,9 +456,9 @@ config BR2_ARM_ENABLE_VFP choice prompt "Target ABI" - depends on BR2_arm || BR2_armeb default BR2_ARM_EABIHF if BR2_ARM_CPU_HAS_VFPV2 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 @@ -746,7 +746,6 @@ config BR2_GCC_TARGET_ABI default "lp64" if BR2_aarch64 || BR2_aarch64_be config BR2_GCC_TARGET_FPU - depends on BR2_arm || BR2_armeb default "vfp" if BR2_ARM_FPU_VFPV2 default "vfpv3" if BR2_ARM_FPU_VFPV3 default "vfpv3-d16" if BR2_ARM_FPU_VFPV3D16 @@ -756,6 +755,7 @@ config BR2_GCC_TARGET_FPU default "neon-vfpv4" if BR2_ARM_FPU_NEON_VFPV4 default "fp-armv8" if BR2_ARM_FPU_FP_ARMV8 default "neon-fp-armv8" if BR2_ARM_FPU_NEON_FP_ARMV8 + depends on BR2_arm || BR2_armeb config BR2_GCC_TARGET_FLOAT_ABI default "soft" if BR2_ARM_SOFT_FLOAT diff --git a/buildroot/arch/Config.in.bfin b/buildroot/arch/Config.in.bfin deleted file mode 100644 index bd9589c71d7..00000000000 --- a/buildroot/arch/Config.in.bfin +++ /dev/null @@ -1,102 +0,0 @@ -choice - prompt "Target CPU" - depends on BR2_bfin - default BR2_bf532 - help - Specify target CPU -config BR2_bf512 - bool "bf512" -config BR2_bf514 - bool "bf514" -config BR2_bf516 - bool "bf516" -config BR2_bf518 - bool "bf518" -config BR2_bf522 - bool "bf522" -config BR2_bf523 - bool "bf523" -config BR2_bf524 - bool "bf524" -config BR2_bf525 - bool "bf525" -config BR2_bf526 - bool "bf526" -config BR2_bf527 - bool "bf527" -config BR2_bf531 - bool "bf531" -config BR2_bf532 - bool "bf532" -config BR2_bf533 - bool "bf533" -config BR2_bf534 - bool "bf534" -config BR2_bf536 - bool "bf536" -config BR2_bf537 - bool "bf537" -config BR2_bf538 - bool "bf538" -config BR2_bf539 - bool "bf539" -config BR2_bf542 - bool "bf542" -config BR2_bf544 - bool "bf544" -config BR2_bf547 - bool "bf547" -config BR2_bf548 - bool "bf548" -config BR2_bf549 - bool "bf549" -config BR2_bf561 - bool "bf561" -endchoice - -config BR2_ARCH - default "bfin" - -config BR2_ENDIAN - default "LITTLE" - -config BR2_GCC_TARGET_CPU - default bf606 if BR2_bf606 - default bf607 if BR2_bf607 - default bf608 if BR2_bf608 - default bf609 if BR2_bf609 - default bf512 if BR2_bf512 - default bf514 if BR2_bf514 - default bf516 if BR2_bf516 - default bf518 if BR2_bf518 - default bf522 if BR2_bf522 - default bf523 if BR2_bf523 - default bf524 if BR2_bf524 - default bf525 if BR2_bf525 - default bf526 if BR2_bf526 - default bf527 if BR2_bf527 - default bf531 if BR2_bf531 - default bf532 if BR2_bf532 - default bf533 if BR2_bf533 - default bf534 if BR2_bf534 - default bf536 if BR2_bf536 - default bf537 if BR2_bf537 - default bf538 if BR2_bf538 - default bf539 if BR2_bf539 - default bf542 if BR2_bf542 - default bf544 if BR2_bf544 - default bf547 if BR2_bf547 - default bf548 if BR2_bf548 - default bf549 if BR2_bf549 - default bf561 if BR2_bf561 - -config BR2_GCC_TARGET_CPU_REVISION - string "Target CPU revision" - help - Specify a target CPU revision, which will be appended to the - value of the -mcpu option. For example, if the selected CPU is - bf609, and then selected CPU revision is "0.0", then gcc will - receive the -mcpu=bf609-0.0 option. - -config BR2_READELF_ARCH_NAME - default "Analog Devices Blackfin" diff --git a/buildroot/arch/Config.in.m68k b/buildroot/arch/Config.in.m68k index c56031cb780..c134df2f14a 100644 --- a/buildroot/arch/Config.in.m68k +++ b/buildroot/arch/Config.in.m68k @@ -15,8 +15,8 @@ config BR2_m68k_cf # coldfire variants will be added later choice prompt "Target CPU" - depends on BR2_m68k default BR2_m68k_68040 + depends on BR2_m68k help Specific CPU variant to use diff --git a/buildroot/arch/Config.in.mips b/buildroot/arch/Config.in.mips index f8e57bab339..e45299f8186 100644 --- a/buildroot/arch/Config.in.mips +++ b/buildroot/arch/Config.in.mips @@ -28,9 +28,9 @@ config BR2_MIPS_CPU_MIPS64R6 choice prompt "Target Architecture Variant" - depends on BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el 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 @@ -115,11 +115,10 @@ config BR2_mips_p6600 select BR2_MIPS_CPU_MIPS64R6 endchoice - choice prompt "Target ABI" - depends on BR2_mips64 || BR2_mips64el default BR2_MIPS_NABI32 + depends on BR2_mips64 || BR2_mips64el help Application Binary Interface to use @@ -145,11 +144,11 @@ config BR2_MIPS_SOFT_FLOAT choice prompt "FP mode" - depends on !BR2_ARCH_IS_64 && !BR2_MIPS_SOFT_FLOAT 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: + 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 @@ -180,8 +179,8 @@ config BR2_MIPS_NAN_2008 choice prompt "Target NaN" - depends on BR2_mips_32r5 || BR2_mips_64r5 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: diff --git a/buildroot/arch/Config.in.powerpc b/buildroot/arch/Config.in.powerpc index 09684126472..7a452a630a4 100644 --- a/buildroot/arch/Config.in.powerpc +++ b/buildroot/arch/Config.in.powerpc @@ -71,12 +71,12 @@ config BR2_powerpc_740 depends on !BR2_ARCH_IS_64 config BR2_powerpc_7400 bool "7400" - select BR2_POWERPC_CPU_HAS_ALTIVEC depends on !BR2_ARCH_IS_64 + select BR2_POWERPC_CPU_HAS_ALTIVEC config BR2_powerpc_7450 bool "7450" - select BR2_POWERPC_CPU_HAS_ALTIVEC depends on !BR2_ARCH_IS_64 + select BR2_POWERPC_CPU_HAS_ALTIVEC config BR2_powerpc_750 bool "750" depends on !BR2_ARCH_IS_64 diff --git a/buildroot/arch/Config.in.sh b/buildroot/arch/Config.in.sh index deb7244f291..1cb2db90ad8 100644 --- a/buildroot/arch/Config.in.sh +++ b/buildroot/arch/Config.in.sh @@ -1,7 +1,7 @@ choice prompt "Target Architecture Variant" - depends on BR2_sh default BR2_sh4 + depends on BR2_sh help Specific CPU variant to use diff --git a/buildroot/arch/Config.in.sparc b/buildroot/arch/Config.in.sparc index 9b6a6aa21aa..b22b55142e0 100644 --- a/buildroot/arch/Config.in.sparc +++ b/buildroot/arch/Config.in.sparc @@ -1,8 +1,8 @@ choice prompt "Target Architecture Variant" - depends on BR2_sparc || BR2_sparc64 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 diff --git a/buildroot/arch/Config.in.x86 b/buildroot/arch/Config.in.x86 index 8e623b3c2ba..f7c53a0fae4 100644 --- a/buildroot/arch/Config.in.x86 +++ b/buildroot/arch/Config.in.x86 @@ -20,8 +20,8 @@ config BR2_X86_CPU_HAS_AVX2 choice prompt "Target Architecture Variant" - depends on BR2_i386 || BR2_x86_64 default BR2_x86_i586 if BR2_i386 + depends on BR2_i386 || BR2_x86_64 help Specific CPU variant to use @@ -50,35 +50,35 @@ config BR2_x86_pentiumpro depends on !BR2_x86_64 config BR2_x86_pentium_mmx bool "pentium MMX" - select BR2_X86_CPU_HAS_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 - depends on !BR2_x86_64 config BR2_x86_pentium2 bool "pentium2" - select BR2_X86_CPU_HAS_MMX 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 - depends on !BR2_x86_64 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 - depends on !BR2_x86_64 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 - depends on !BR2_x86_64 config BR2_x86_nocona bool "nocona" select BR2_X86_CPU_HAS_MMX @@ -140,21 +140,21 @@ config BR2_x86_silvermont select BR2_X86_CPU_HAS_SSE42 config BR2_x86_k6 bool "k6" - select BR2_X86_CPU_HAS_MMX depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX config BR2_x86_k6_2 bool "k6-2" - select BR2_X86_CPU_HAS_MMX depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX config BR2_x86_athlon bool "athlon" - select BR2_X86_CPU_HAS_MMX depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX config BR2_x86_athlon_4 bool "athlon-4" + depends on !BR2_x86_64 select BR2_X86_CPU_HAS_MMX select BR2_X86_CPU_HAS_SSE - depends on !BR2_x86_64 config BR2_x86_opteron bool "opteron" select BR2_X86_CPU_HAS_MMX @@ -198,21 +198,21 @@ config BR2_x86_geode depends on !BR2_x86_64 config BR2_x86_c3 bool "Via/Cyrix C3 (Samuel/Ezra cores)" - select BR2_X86_CPU_HAS_MMX depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX config BR2_x86_c32 bool "Via C3-2 (Nehemiah cores)" + depends on !BR2_x86_64 select BR2_X86_CPU_HAS_MMX select BR2_X86_CPU_HAS_SSE - depends on !BR2_x86_64 config BR2_x86_winchip_c6 bool "IDT Winchip C6" - select BR2_X86_CPU_HAS_MMX depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX config BR2_x86_winchip2 bool "IDT Winchip 2" - select BR2_X86_CPU_HAS_MMX depends on !BR2_x86_64 + select BR2_X86_CPU_HAS_MMX endchoice config BR2_ARCH diff --git a/buildroot/arch/Config.in.xtensa b/buildroot/arch/Config.in.xtensa index 5d5bcb48f99..14049480ec2 100644 --- a/buildroot/arch/Config.in.xtensa +++ b/buildroot/arch/Config.in.xtensa @@ -1,15 +1,15 @@ choice prompt "Target Architecture Variant" - depends on BR2_xtensa default BR2_xtensa_fsf + depends on BR2_xtensa config BR2_XTENSA_CUSTOM - select BR2_ARCH_HAS_MMU_OPTIONAL bool "Custom Xtensa processor configuration" + select BR2_ARCH_HAS_MMU_OPTIONAL config BR2_xtensa_fsf - select BR2_ARCH_HAS_MMU_MANDATORY bool "fsf - Default configuration" + select BR2_ARCH_HAS_MMU_MANDATORY endchoice @@ -20,18 +20,18 @@ config BR2_XTENSA_OVERLAY_FILE 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. + 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. + The path can be either absolute, or relative to the top + directory of buildroot. choice prompt "Target Architecture Endianness" - depends on BR2_XTENSA_CUSTOM default BR2_XTENSA_LITTLE_ENDIAN + depends on BR2_XTENSA_CUSTOM config BR2_XTENSA_LITTLE_ENDIAN bool "Little endian" diff --git a/buildroot/arch/arch.mk.xtensa b/buildroot/arch/arch.mk.xtensa index 2b6cd26d03d..fd410f6bfac 100644 --- a/buildroot/arch/arch.mk.xtensa +++ b/buildroot/arch/arch.mk.xtensa @@ -12,7 +12,7 @@ BR_ARCH_XTENSA_OVERLAY_FILE = $(call qstrip,$(BR2_XTENSA_OVERLAY_FILE)) ifneq ($(filter http://% https://% ftp://% scp://%,$(BR_ARCH_XTENSA_OVERLAY_FILE)),) ARCH_XTENSA_OVERLAY_URL = $(BR_ARCH_XTENSA_OVERLAY_FILE) -ARCH_XTENSA_OVERLAY_FILE = $(DL_DIR)/$(notdir $(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 diff --git a/buildroot/board/amarula/vyasa/extlinux.conf b/buildroot/board/amarula/vyasa/extlinux.conf new file mode 100644 index 00000000000..a8fcc35f5a6 --- /dev/null +++ b/buildroot/board/amarula/vyasa/extlinux.conf @@ -0,0 +1,4 @@ +label Vyasa linux-next + kernel /boot/uImage + devicetree /boot/rk3288-vyasa.dtb + append console=ttyS2,115200n8 root=/dev/mmcblk0p1 rootwait diff --git a/buildroot/board/amarula/vyasa/genimage.cfg b/buildroot/board/amarula/vyasa/genimage.cfg new file mode 100644 index 00000000000..fa41de36720 --- /dev/null +++ b/buildroot/board/amarula/vyasa/genimage.cfg @@ -0,0 +1,21 @@ +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 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/amarula/vyasa/linux_gmac.fragment b/buildroot/board/amarula/vyasa/linux_gmac.fragment new file mode 100644 index 00000000000..8ebf383597b --- /dev/null +++ b/buildroot/board/amarula/vyasa/linux_gmac.fragment @@ -0,0 +1,3 @@ +# Currently mainline kernel exhibits issues when running rockchip gmac +# on the board, so enable it as loadable module and insert it later +CONFIG_DWMAC_ROCKCHIP=m diff --git a/buildroot/board/amarula/vyasa/post-build.sh b/buildroot/board/amarula/vyasa/post-build.sh new file mode 100755 index 00000000000..ffbbcdeb589 --- /dev/null +++ b/buildroot/board/amarula/vyasa/post-build.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +MKIMAGE=$HOST_DIR/bin/mkimage +BOARD_DIR="$(dirname $0)" + +$MKIMAGE -n rk3288 -T rksd -d $BINARIES_DIR/u-boot-tpl.bin $BINARIES_DIR/u-boot-tpl.img +cat $BINARIES_DIR/u-boot-tpl.img $BINARIES_DIR/u-boot-spl-dtb.bin > $BINARIES_DIR/u-boot-tpl-spl-dtb.img + +install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf diff --git a/buildroot/board/amarula/vyasa/readme.txt b/buildroot/board/amarula/vyasa/readme.txt new file mode 100644 index 00000000000..b95889e8141 --- /dev/null +++ b/buildroot/board/amarula/vyasa/readme.txt @@ -0,0 +1,31 @@ +Vyasa RK3288 +============ + +Vyasa is RK3288 based Single board computer with fully supported opensource software. + +https://openedev.amarulasolutions.com/display/ODWIKI/Vyasa+RK3288 + +How to build it +=============== + + $ make amarula_vyasa_rk3288_defconfig + +Then you can edit the build options using + + $ make menuconfig + +Compile all and build rootfs image: + + $ make + +Prepare your SDCard +=================== + +Buildroot generates a ready-to-use SD card image that you can flash directly to +the card. The image will be in output/images/sdcard.img. +You can write this image directly to an SD card device (i.e. /dev/xxx): + + $ sudo dd if=output/images/sdcard.img of=/dev/xxx + $ sudo sync + +Finally, you can insert the SD card to the Vyasa RK3288 board, close J4 and boot it. diff --git a/buildroot/board/arcturus/aarch64-ucls1012a/post-image.sh b/buildroot/board/arcturus/aarch64-ucls1012a/post-image.sh new file mode 100755 index 00000000000..ccfacd3858b --- /dev/null +++ b/buildroot/board/arcturus/aarch64-ucls1012a/post-image.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +MKIMAGE=${HOST_DIR}/usr/bin/mkimage +MKIMAGE_IN=${BINARIES_DIR}/br2-ucls1012a.its +MKIMAGE_OUT=${BINARIES_DIR}/part0-000000.itb +${MKIMAGE} -f ${MKIMAGE_IN} ${MKIMAGE_OUT} diff --git a/buildroot/board/arcturus/aarch64-ucls1012a/readme.txt b/buildroot/board/arcturus/aarch64-ucls1012a/readme.txt new file mode 100644 index 00000000000..483d5e9aef6 --- /dev/null +++ b/buildroot/board/arcturus/aarch64-ucls1012a/readme.txt @@ -0,0 +1,74 @@ +Arcturus uCLS1012A SoM +====================== + +This tutorial describes how to use the predefined Buildroot +configuration for the Arcturus uCLS101A SoM platform. + +Additional information about the uCLS1012A System on Module can be found at +https://www.arcturusnetworks.com/products/ucls1012a +and product support for registered users at +https://www.arcturusnetworks.com/support + +Building +-------- + +Return to the top directory and execute the following commands. + + make arcturus_ucls1012a_defconfig + make + +Result of the build +------------------- + +After building, you should obtain this tree: + + output/images/ + +-- arc-ucls1012a.dtb + +-- Image + +-- part0-000000.itb + +-- rootfs.cpio + +-- rootfs.cpio.gz + +-- rootfs.tar + +-- u-boot.bin + +-- ucls1012a.its + +Flashing +-------- + +You'll need to program the image created by buildroot into the SPI NOR flash. + +1. Reboot your module and via the serial console press to enter the B$ +u-boot shell. + From the shell you will need to update four environment variables replacing the + IPv4 IP Address with ones that will work with your network and tftp server. + + B$ setenv ipaddr 192.168.1.81 + B$ setenv serverip 192.168.1.80 + B$ setenv gatewayip 192.168.1.1 + B$ setenv netmask 255.255.255.0 + B$ saveenv + +2. Enable tftp server to serve the /output/images/ folder. + +3. Program the new U-Boot binary (optional) + If you don't feel confident upgrading your bootloader then don't do it, + it's unnecessary most of the time. + + B$ tftp u-boot.bin + B$ run program_uboot + +4. Program the ITB image (includes Kernel, DTB and Ramdisk) + + B$ tftp part0-000000.itb + B$ run iprogram + +5. Booting your new system + + Reboot your system by reset command + B$ reset + + or + + B$ run bootcmd + +Good Luck ! diff --git a/buildroot/board/arcturus/aarch64-ucls1012a/rootfs_overlay/etc/init.d/S09modload b/buildroot/board/arcturus/aarch64-ucls1012a/rootfs_overlay/etc/init.d/S09modload new file mode 100755 index 00000000000..c87ffda14f6 --- /dev/null +++ b/buildroot/board/arcturus/aarch64-ucls1012a/rootfs_overlay/etc/init.d/S09modload @@ -0,0 +1,14 @@ +#!/bin/sh +# +case "$1" in + start) + modprobe pfe + ;; + stop) + ;; + restart|reload) + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 +esac diff --git a/buildroot/board/asus/tinker/extlinux.conf b/buildroot/board/asus/tinker/extlinux.conf new file mode 100644 index 00000000000..136af0debd5 --- /dev/null +++ b/buildroot/board/asus/tinker/extlinux.conf @@ -0,0 +1,4 @@ +label Tinker linux-next + kernel /boot/uImage + devicetree /boot/rk3288-tinker.dtb + append console=ttyS2,115200n8 root=/dev/mmcblk0p1 rootwait diff --git a/buildroot/board/asus/tinker/genimage.cfg b/buildroot/board/asus/tinker/genimage.cfg new file mode 100644 index 00000000000..a4b1e8d608f --- /dev/null +++ b/buildroot/board/asus/tinker/genimage.cfg @@ -0,0 +1,15 @@ +image sdcard.img { + hdimage { + } + + partition u-boot-spl-dtb { + in-partition-table = "no" + image = "u-boot-spl-dtb.img" + offset = 32K + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/asus/tinker/post-build.sh b/buildroot/board/asus/tinker/post-build.sh new file mode 100755 index 00000000000..8108ed83ff0 --- /dev/null +++ b/buildroot/board/asus/tinker/post-build.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +MKIMAGE=$HOST_DIR/bin/mkimage +BOARD_DIR="$(dirname $0)" + +$MKIMAGE -n rk3288 -T rksd -d $BINARIES_DIR/u-boot-spl-dtb.bin $BINARIES_DIR/u-boot-spl-dtb.img +cat $BINARIES_DIR/u-boot-dtb.bin >> $BINARIES_DIR/u-boot-spl-dtb.img + +install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf diff --git a/buildroot/board/asus/tinker/readme.txt b/buildroot/board/asus/tinker/readme.txt new file mode 100644 index 00000000000..7372d295202 --- /dev/null +++ b/buildroot/board/asus/tinker/readme.txt @@ -0,0 +1,37 @@ +Tinker RK3288 +============= + +Tinker Board is a Single Board Computer (SBC) in an ultra-small form +factor that offers class-leading performance while leveraging outstanding +mechanical compatibility. + +Tinker link: +https://www.asus.com/in/Single-Board-Computer/Tinker-Board/ + +Wiki link: +https://openedev.amarulasolutions.com/display/ODWIKI/Tinker+RK3288 + +How to build it +=============== + + $ make asus_tinker_rk3288_defconfig + +Then you can edit the build options using + + $ make menuconfig + +Compile all and build rootfs image: + + $ make + +Prepare your SDCard +=================== + +Buildroot generates a ready-to-use SD card image that you can flash directly to +the card. The image will be in output/images/sdcard.img. +You can write this image directly to an SD card device (i.e. /dev/xxx): + + $ sudo dd if=output/images/sdcard.img of=/dev/xxx + $ sudo sync + +Finally, you can insert the SD card to the Tinker RK3288 board and boot it. diff --git a/buildroot/board/atmel/flasher.sh b/buildroot/board/atmel/flasher.sh index bbdb199b970..a7409ce8800 100755 --- a/buildroot/board/atmel/flasher.sh +++ b/buildroot/board/atmel/flasher.sh @@ -4,6 +4,10 @@ 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" @@ -16,6 +20,10 @@ 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" @@ -90,9 +98,11 @@ Usage: $0 Available boards: + at91sam9260ek at91sam9g45m10ek at91sam9rlek at91sam9g15ek + at91sam9g20ek at91sam9g25ek at91sam9x25ek at91sam9g35ek @@ -130,7 +140,6 @@ if [[ $BOARD == "*pda4" ]]; then video_mode="video=LVDS-1:480x272-16" fi -echo "Executing: ${!F} O=$1/images $1/host/opt/sam-ba/sam-ba $TTY ${!M} $(dirname $0)/nandflash.tcl -- ${!F} ${!D} $video_mode" +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/opt/sam-ba/sam-ba $TTY ${!M} $(dirname $0)/nandflash.tcl -- ${!F} ${!D} $video_mode - +$1/host/bin/sam-ba $TTY ${!M} $(dirname $0)/nandflash.tcl -- ${!F} ${!D} $video_mode diff --git a/buildroot/board/beaglebone/uEnv.txt b/buildroot/board/beaglebone/uEnv.txt index 70b3b721469..a665f20889c 100644 --- a/buildroot/board/beaglebone/uEnv.txt +++ b/buildroot/board/beaglebone/uEnv.txt @@ -1,4 +1,8 @@ bootpart=0:1 +devtype=mmc bootdir= -bootargs=console=ttyO0,115200n8 root=/dev/mmcblk0p2 rw rootfstype=ext4 rootwait -uenvcmd=run loadimage;run loadfdt;printenv bootargs;bootz ${loadaddr} - ${fdtaddr}; +bootfile=zImage +bootpartition=mmcblk0p2 +set_mmc1=if test $board_name = A33515BB; then setenv bootpartition mmcblk1p2; fi +set_bootargs=setenv bootargs console=ttyO0,115200n8 root=/dev/${bootpartition} rw rootfstype=ext4 rootwait +uenvcmd=run set_mmc1; run set_bootargs;run loadimage;run loadfdt;printenv bootargs;bootz ${loadaddr} - ${fdtaddr} diff --git a/buildroot/board/chromebook/snow/linux-4.6-dts-tpm.patch b/buildroot/board/chromebook/snow/linux-4.15-dts-tpm.patch similarity index 100% rename from buildroot/board/chromebook/snow/linux-4.6-dts-tpm.patch rename to buildroot/board/chromebook/snow/linux-4.15-dts-tpm.patch diff --git a/buildroot/board/chromebook/snow/linux-4.6.fragment b/buildroot/board/chromebook/snow/linux-4.15.fragment similarity index 100% rename from buildroot/board/chromebook/snow/linux-4.6.fragment rename to buildroot/board/chromebook/snow/linux-4.15.fragment diff --git a/buildroot/board/ci40/genimage.cfg b/buildroot/board/ci40/genimage.cfg deleted file mode 100644 index 0ffc91ce87c..00000000000 --- a/buildroot/board/ci40/genimage.cfg +++ /dev/null @@ -1,12 +0,0 @@ -# Minimal SD card image -# - -image sdcard.img { - hdimage { - } - - partition rootfs { - partition-type = 0x83 - image = "rootfs.ext4" - } -} diff --git a/buildroot/board/ci40/post-build.sh b/buildroot/board/ci40/post-build.sh deleted file mode 100755 index 9af74c7a7eb..00000000000 --- a/buildroot/board/ci40/post-build.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -# Copy to target -cp ${BINARIES_DIR}/vmlinux.gz.itb ${TARGET_DIR}/fitImage diff --git a/buildroot/board/ci40/readme.txt b/buildroot/board/ci40/readme.txt deleted file mode 100644 index ba1eb938835..00000000000 --- a/buildroot/board/ci40/readme.txt +++ /dev/null @@ -1,65 +0,0 @@ -********************* -* MIPS Creator CI40 * -********************* - -This document details how to build and run a Buildroot system on the -MIPS Creator CI40 platform. For more details about the CI40, see -https://creatordev.io/ci40-iot-hub.html. - -How to build ------------- - -$ make ci40_defconfig -$ make - -Prepare USB/MMC for boot ------------------------- - -On successful build, "sdcard.img" file will be created in 'output/images' -folder. - -Use following command to write image to bootable device - -$ sudo dd if=./output/images/sdcard.img of=/dev/ - -Booting from USB/MMC --------------------- - -The boot loader is already present in NOR flash. To boot your newly generated -Linux and root filesystem, you need to interrupt U-Boot autoboot. Current -U-Boot is configured with 2 seconds of boot-delay, after expiry of this -boot-delay timeout U-Boot starts booting the default image. To interrupt -autoboot, press any key before the boot-delay time expires, U-Boot will -stop the autoboot process and give a U-Boot prompt. You can now boot to -your preferred boot method as describe below: - -From USB - pistachio # run usbboot - -From SD-Card - pistachio # run mmcboot - -Persistent boot command ------------------------ - -To boot automatically to your preferred boot method, use following command to -make it persistent, for example to automatically boot to usb: - - pistachio # setenv bootcmd run usbboot - pistachio # saveenv - -Flash new bootloader --------------------- - -The bootloader image will be available in the 'output/images' folder. To flash -the new bootloader, copy it to the device and use the following command on the -device: - -# flashcp -v u-boot-pistachio_marduk-.img /dev/mtd0 - -Online docs ------------ - -Mostly for OpenWRT but it is applicable to Buildroot -https://docs.creatordev.io/ci40/guides/openwrt-platform/#overview - diff --git a/buildroot/board/embest/riotboard/readme.txt b/buildroot/board/embest/riotboard/readme.txt deleted file mode 100644 index b7390d0d574..00000000000 --- a/buildroot/board/embest/riotboard/readme.txt +++ /dev/null @@ -1,46 +0,0 @@ -Buildroot for Embest RIoTboard -============================== - -1. Compiling buildroot ----------------------- - -make riotboard_defconfig -make - -2. Installing buildroot ------------------------ - -Prepare an SD-card and plug it into your card reader. Write the bootloader to -your SD-card: - -sudo dd if=output/images/u-boot.imx of=/dev/sdX bs=1k seek=1 - -Create 1 partition on the SD-card using your favourite tool. The -partition should be big enough to hold your rootfs, for example -128MiB. Here's an example partition layout: - - Device Boot Start End Blocks Id System -/dev/sdX1 2048 264191 131072 83 Linux - -Format the SD-card partition with your favourite filesystem: - -sudo mkfs.ext2 /dev/sdX1 - -Deploy your rootfs to the SD-card: - -sudo mkdir /mnt/sdcard/ -sudo mount /dev/sdX1 /mnt/sdcard/ -sudo tar xf output/images/rootfs.tar -C /mnt/sdcard/ -sudo umount /dev/sdX1 - -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: - -10100101 (1 means ON position, 0 means OFF position) - -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 your -new toy. diff --git a/buildroot/board/embest/riotboard/rootfs_overlay/boot/extlinux/extlinux.conf b/buildroot/board/embest/riotboard/rootfs_overlay/boot/extlinux/extlinux.conf deleted file mode 100644 index c7d32e0097e..00000000000 --- a/buildroot/board/embest/riotboard/rootfs_overlay/boot/extlinux/extlinux.conf +++ /dev/null @@ -1,6 +0,0 @@ -default buildroot - -label buildroot -kernel /boot/uImage -devicetree /boot/imx6dl-riotboard.dtb -append console=ttymxc1,115200 root=/dev/mmcblk0p1 rw diff --git a/buildroot/board/firefly/firefly-rk3288/extlinux.conf b/buildroot/board/firefly/firefly-rk3288/extlinux.conf deleted file mode 100644 index 39ac5b9dac9..00000000000 --- a/buildroot/board/firefly/firefly-rk3288/extlinux.conf +++ /dev/null @@ -1,6 +0,0 @@ -default firefly-rk3288 - -label firefly-rk3288 -kernel /boot/uImage -devicetree /boot/rk3288-firefly.dtb -append console=ttyS2,115200n8 root=/dev/mmcblk0p1 rootwait diff --git a/buildroot/board/firefly/firefly-rk3288/post-build.sh b/buildroot/board/firefly/firefly-rk3288/post-build.sh deleted file mode 100755 index 94e89ce6a4a..00000000000 --- a/buildroot/board/firefly/firefly-rk3288/post-build.sh +++ /dev/null @@ -1,3 +0,0 @@ -BOARD_DIR="$(dirname $0)" - -install -m 0644 -D $BOARD_DIR/extlinux.conf $TARGET_DIR/boot/extlinux/extlinux.conf diff --git a/buildroot/board/firefly/firefly-rk3288/post-image.sh b/buildroot/board/firefly/firefly-rk3288/post-image.sh deleted file mode 100755 index d89bc7e5503..00000000000 --- a/buildroot/board/firefly/firefly-rk3288/post-image.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh - -MKIMAGE=$HOST_DIR/bin/mkimage - -BOARD_DIR="$(dirname $0)" -GENIMAGE_CFG="${BOARD_DIR}/sd-image.cfg" -GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp" - -$MKIMAGE -n rk3288 -T rksd -d $BINARIES_DIR/u-boot-spl-dtb.bin $BINARIES_DIR/u-boot-spl-dtb.img - -rm -rf "${GENIMAGE_TMP}" - -genimage \ - --rootpath "${TARGET_DIR}" \ - --tmppath "${GENIMAGE_TMP}" \ - --inputpath "${BINARIES_DIR}" \ - --outputpath "${BINARIES_DIR}" \ - --config "${GENIMAGE_CFG}" - -exit $? diff --git a/buildroot/board/firefly/firefly-rk3288/readme.txt b/buildroot/board/firefly/firefly-rk3288/readme.txt deleted file mode 100644 index d6210857f10..00000000000 --- a/buildroot/board/firefly/firefly-rk3288/readme.txt +++ /dev/null @@ -1,40 +0,0 @@ -Firefly RK3288 - -How to build it -=============== - - $ make firefly_rk3288_defconfig - -Then you can edit the build options using - - $ make menuconfig - -Compile all and build rootfs image: - - $ make - -Result of the build -------------------- - -After building, you should get a tree like this: - - output/images/ - 笏懌楳笏 rk3288-firefly.dtb - 笏懌楳笏 rootfs.ext2 - 笏懌楳笏 rootfs.ext4 -> rootfs.ext2 - 笏懌楳笏 sdcard.img - 笏懌楳笏 u-boot-dtb.img - 笏懌楳笏 u-boot-spl-dtb.bin - 笏懌楳笏 u-boot-spl-dtb.img - 笏披楳笏 uImage - -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): - - $ dd if=output/images/sdcard.img of=/dev/xxx - -Finally, you can insert the SD card to the Firefly RK3288 board and boot it. diff --git a/buildroot/board/firefly/firefly-rk3288/sd-image.cfg b/buildroot/board/firefly/firefly-rk3288/sd-image.cfg deleted file mode 100644 index a9eb9f0142a..00000000000 --- a/buildroot/board/firefly/firefly-rk3288/sd-image.cfg +++ /dev/null @@ -1,22 +0,0 @@ -image sdcard.img { - hdimage { - } - - partition u-boot-spl-dtb { - in-partition-table = "no" - image = "u-boot-spl-dtb.img" - offset = 32K - } - - partition u-boot-dtb { - in-partition-table = "no" - image = "u-boot-dtb.img" - offset = 128K - } - - partition rootfs { - partition-type = 0x83 - image = "rootfs.ext4" - size = 512M - } -} diff --git a/buildroot/board/freescale/common/imx/genimage.cfg.template_imx8 b/buildroot/board/freescale/common/imx/genimage.cfg.template_imx8 new file mode 100644 index 00000000000..fdb645014ad --- /dev/null +++ b/buildroot/board/freescale/common/imx/genimage.cfg.template_imx8 @@ -0,0 +1,40 @@ +# Minimal SD card image for the Freescale iMX8 boards +# +# We mimic the .sdcard Freescale's image format: +# * the SD card must have 33 kB free space at the beginning, +# * U-Boot is integrated into imx8-boot-sd.bin and is dumped as is, +# * a FAT partition at offset 32MB is containing Image and DTB files +# * a single root filesystem partition is required (ext2, ext3 or ext4) +# + +image boot.vfat { + vfat { + files = { + %FILES% + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition imx-boot { + in-partition-table = "no" + image = "imx8-boot-sd.bin" + offset = 33K + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + offset = 8M + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext2" + } +} diff --git a/buildroot/board/freescale/common/imx/imx8-bootloader-prepare.sh b/buildroot/board/freescale/common/imx/imx8-bootloader-prepare.sh new file mode 100755 index 00000000000..2648147ab0a --- /dev/null +++ b/buildroot/board/freescale/common/imx/imx8-bootloader-prepare.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +main () +{ + # Currently we support imx8mqevk. + cat ${BINARIES_DIR}/u-boot-spl.bin ${BINARIES_DIR}/lpddr4_pmu_train_fw.bin > ${BINARIES_DIR}/u-boot-spl-ddr.bin + BL31=${BINARIES_DIR}/bl31.bin BL33=${BINARIES_DIR}/u-boot.bin ${HOST_DIR}/bin/mkimage_fit_atf.sh ${BINARIES_DIR}/fsl-imx8mq-evk.dtb > ${BINARIES_DIR}/u-boot.its + ${HOST_DIR}/bin/mkimage -E -p 0x3000 -f ${BINARIES_DIR}/u-boot.its ${BINARIES_DIR}/u-boot.itb + rm -f ${BINARIES_DIR}/u-boot.its + + ${HOST_DIR}/bin/mkimage_imx8 -fit -signed_hdmi ${BINARIES_DIR}/signed_hdmi_imx8m.bin -loader ${BINARIES_DIR}/u-boot-spl-ddr.bin 0x7E1000 -second_loader ${BINARIES_DIR}/u-boot.itb 0x40200000 0x60000 -out ${BINARIES_DIR}/imx8-boot-sd.bin + + exit $? +} + +main $@ diff --git a/buildroot/board/freescale/common/imx/post-image.sh b/buildroot/board/freescale/common/imx/post-image.sh index b23974347b0..264c8a4bcb2 100755 --- a/buildroot/board/freescale/common/imx/post-image.sh +++ b/buildroot/board/freescale/common/imx/post-image.sh @@ -7,10 +7,10 @@ # dtb_list() { - local DTB_LIST="$(sed -n 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([a-z0-9 \-]*\)"$/\1/p' ${BR2_CONFIG})" + 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\", " + echo -n "\"`basename $dt`.dtb\", " done } @@ -23,6 +23,8 @@ linux_image() { if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" ${BR2_CONFIG}; then echo "\"uImage\"" + elif grep -Eq "^BR2_LINUX_KERNEL_IMAGE=y$" ${BR2_CONFIG}; then + echo "\"Image\"" else echo "\"zImage\"" fi @@ -30,7 +32,9 @@ linux_image() genimage_type() { - if grep -Eq "^BR2_TARGET_UBOOT_SPL=y$" ${BR2_CONFIG}; then + if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y$" ${BR2_CONFIG}; then + echo "genimage.cfg.template_imx8" + elif grep -Eq "^BR2_TARGET_UBOOT_SPL=y$" ${BR2_CONFIG}; then echo "genimage.cfg.template_spl" else echo "genimage.cfg.template" diff --git a/buildroot/board/freescale/imx31_3stack/linux.fragment b/buildroot/board/freescale/imx31_3stack/linux.fragment deleted file mode 100644 index beb6b46f2e6..00000000000 --- a/buildroot/board/freescale/imx31_3stack/linux.fragment +++ /dev/null @@ -1 +0,0 @@ -# CONFIG_FB_MXS is not set diff --git a/buildroot/board/freescale/imx31_3stack/readme.txt b/buildroot/board/freescale/imx31_3stack/readme.txt deleted file mode 100644 index 4f8f393b12c..00000000000 --- a/buildroot/board/freescale/imx31_3stack/readme.txt +++ /dev/null @@ -1,92 +0,0 @@ -************************************** -Freescale i.MX31 PDK development board -************************************** - -This file documents the Buildroot support for the Freescale i.MX31 PDK in "3 -stack" configuration. - -The i.MX31 Product Development Kit (or PDK) is Freescale development board [1] -based on the i.MX31 application processor [2]. - -For more details on the i.MX31 PDK board, refer to the User's Guide [3]. - -Build -===== - -First, configure Buildroot for your i.MX31 PDK board: - - make freescale_imx31_3stack_defconfig - -Build all components: - - make - -You will find in ./output/images/ the following files: - - rootfs.cpio - - rootfs.cpio.gz - - rootfs.tar - - zImage - -The generated zImage does include the rootfs. - -Boot the PDK board -================== - -The i.MX31 PDK contains a RedBoot bootloader in flash, which can be used to -boot the newly created Buildroot images from the network. - -This necessitates to setup a TFTP server first. This setup is explained for -example in Freescale i.MX31 PDK 1.5 Linux User's Guide [4]. - -Here is a sample RedBoot configuration, for proper network boot of Buildroot on -the i.MX31 PDK: - - RedBoot> fconfig -l - Run script at boot: true - Boot script: - .. load -r -b 0x100000 zImage - .. exec -c "console=ttymxc0,115200" - - Boot script timeout (1000ms resolution): 2 - Use BOOTP for network configuration: false - Gateway IP address: - Local IP address: - Local IP address mask: 255.255.255.0 - Default server IP address: - Board specifics: 0 - Console baud rate: 115200 - Set eth0 network hardware address [MAC]: false - GDB connection port: 9000 - Force console for special debug messages: false - Network debug at boot time: false - -Adapt those settings to your network configuration by replacing the appropriate -network addresses where necessary. - -You might want to verify that your i.MX31 PDK switches settings are the correct -ones for UART, power, boot mode, etc. Here is a reference switches -configuration: - - SW4 - 1 2 3 4 5 6 7 8 - ON off off off off off off ON - - SW5 SW6 SW7 SW8 SW9 SW10 - 0 1 0 0 0 0 - -See the i.MX31 PDK Linux Quick Start Guide [5] for more details on the switches -settings. - -Connect a serial terminal set to 115200n8 and power on the i.MX31 PDK board. -Buildroot will present a login prompt on the serial port. - -Enjoy! - -References -========== - -[1] http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX31PDK -[2] http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX31 -[3] http://cache.freescale.com/files/32bit/doc/user_guide/pdk15_imx31_Hardware_UG.pdf -[4] http://cache.freescale.com/files/32bit/doc/support_info/IMX31_PDK15_LINUXDOCS_BUNDLE.zip, pdk15_imx31__Linux_UG.pdf -[5] http://www.freescale.com/files/32bit/doc/quick_ref_guide/PDK14LINUXQUICKSTART.pdf diff --git a/buildroot/board/freescale/imx6sabre/patches/uboot/0002-imximage-Remove-failure-when-no-IVT-offset-is-found.patch b/buildroot/board/freescale/imx6sabre/patches/uboot/0002-imximage-Remove-failure-when-no-IVT-offset-is-found.patch new file mode 100644 index 00000000000..92eff7574de --- /dev/null +++ b/buildroot/board/freescale/imx6sabre/patches/uboot/0002-imximage-Remove-failure-when-no-IVT-offset-is-found.patch @@ -0,0 +1,55 @@ +From 24ba28680abe868e8db3442a9bf523ad3af1febd Mon Sep 17 00:00:00 2001 +From: Fabio Estevam +Date: Fri, 9 Mar 2018 08:25:00 -0300 +Subject: [PATCH] imximage: Remove failure when no IVT offset is found + +Sometimes imximage throws the following error: + + CFGS board/freescale/vf610twr/imximage.cfg.cfgtmp + CFGS board/freescale/vf610twr/imximage.cfg.cfgtmp + MKIMAGE u-boot-dtb.imx +Error: No BOOT_FROM tag in board/freescale/vf610twr/imximage.cfg.cfgtmp +arch/arm/mach-imx/Makefile:100: recipe for target 'u-boot-dtb.imx' failed + +Later on, when running mkimage for the u-boot.imx it will succeed in +finding the IVT offset. + +Looks like some race condition happening during parallel build when +processing mkimage for u-boot-dtb.imx and u-boot.imx. + +A proper fix still needs to be implemented, but as a workaround let's +remove the error when the IVT offset is not found. + +It is useful to have such message, especially during bring-up phase, +but the build error that it causes is severe, so better avoid the +build error for now. + +The error checking can be re-implemented later when we have a proper +fix. + +Reported-by: Breno Lima +Reported-by: Thomas Petazzoni +Signed-off-by: Fabio Estevam +--- + tools/imximage.c | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/tools/imximage.c b/tools/imximage.c +index 0c43196..bef56f8 100644 +--- a/tools/imximage.c ++++ b/tools/imximage.c +@@ -765,11 +765,6 @@ static uint32_t parse_cfg_file(struct imx_header *imxhdr, char *name) + (*set_dcd_rst)(imxhdr, dcd_len, name, lineno); + fclose(fd); + +- /* Exit if there is no BOOT_FROM field specifying the flash_offset */ +- if (imximage_ivt_offset == FLASH_OFFSET_UNDEFINED) { +- fprintf(stderr, "Error: No BOOT_FROM tag in %s\n", name); +- exit(EXIT_FAILURE); +- } + return dcd_len; + } + +-- +2.7.4 + diff --git a/buildroot/board/freescale/imx8mqevk/readme.txt b/buildroot/board/freescale/imx8mqevk/readme.txt new file mode 100644 index 00000000000..1840290edbf --- /dev/null +++ b/buildroot/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. + +Hardware support +================ + +Currently only basic support for hardware is available, currently no +support for GPU, VPU and other HW features. + +Build +===== + +First, configure Buildroot for the i.MX8MQ EVK board: + + make freescale_imx8mqevk_defconfig + +Build all components: + + make + +You will find in output/images/ the following files: + - bl31.bin + - boot.vfat + - fsl-imx8mq-evk.dtb + - Image + - imx-boot-imx8mqevk-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 +stoping 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/buildroot/board/freescale/mpc8315erdb/linux-4.5.config b/buildroot/board/freescale/mpc8315erdb/linux-4.5.config deleted file mode 100644 index 8f56069309a..00000000000 --- a/buildroot/board/freescale/mpc8315erdb/linux-4.5.config +++ /dev/null @@ -1,70 +0,0 @@ -CONFIG_FSL_EMB_PERFMON=y -CONFIG_SYSVIPC=y -CONFIG_POSIX_MQUEUE=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_IKCONFIG=y -CONFIG_IKCONFIG_PROC=y -CONFIG_SYSCTL_SYSCALL=y -CONFIG_EMBEDDED=y -CONFIG_MODULES=y -# CONFIG_PPC_CHRP is not set -# CONFIG_PPC_PMAC is not set -CONFIG_PPC_83xx=y -CONFIG_MPC831x_RDB=y -CONFIG_MCU_MPC8349EMITX=y -CONFIG_PCI=y -CONFIG_PCIEPORTBUS=y -# CONFIG_PCIEASPM is not set -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -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_AMDSTD=y -CONFIG_MTD_PHYSMAP_OF=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_FSL_ELBC=y -CONFIG_SCSI_MQ_DEFAULT=y -CONFIG_BLK_DEV_SD=y -CONFIG_SCSI_CONSTANTS=y -CONFIG_ATA=y -CONFIG_SATA_FSL=y -CONFIG_NETDEVICES=y -CONFIG_GIANFAR=y -CONFIG_REALTEK_PHY=y -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_MPC=y -CONFIG_SPI=y -CONFIG_SPI_FSL_SPI=y -CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_MPC8XXX=y -CONFIG_WATCHDOG=y -CONFIG_8xxx_WDT=y -CONFIG_USB=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_FSL=y -CONFIG_USB_STORAGE=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_DS1307=y -CONFIG_RTC_DRV_GENERIC=y -CONFIG_DMADEVICES=y -CONFIG_FSL_DMA=y -CONFIG_ASYNC_TX_DMA=y -CONFIG_EXT4_FS=y -CONFIG_FANOTIFY=y -CONFIG_VFAT_FS=y -CONFIG_PROC_KCORE=y -CONFIG_TMPFS=y -CONFIG_JFFS2_FS=y -CONFIG_SQUASHFS=y -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ISO8859_1=y -CONFIG_CRYPTO_DEV_TALITOS=y diff --git a/buildroot/board/freescale/mpc8315erdb/readme.txt b/buildroot/board/freescale/mpc8315erdb/readme.txt deleted file mode 100644 index b4c87b4d4a0..00000000000 --- a/buildroot/board/freescale/mpc8315erdb/readme.txt +++ /dev/null @@ -1,40 +0,0 @@ -You'll need to program the files created by buildroot into the flash. -The fast way is to tftp transfer the files via one of the network interfaces. - -Alternatively you can transfer the files via serial console with an Ymodem -file transfer from your terminal program by using a "loady" command -from the u-boot prompt instead of the "tftp ..." commands stated below. -Beware that serial console file transfers are quite slow! - -1. Program the kernel to NAND flash - - => tftp $loadaddr uImage - => nand erase 0x100000 0x1e0000 - => nand write $loadaddr 0x100000 0x1e0000 - -2. Program the DTB to NAND flash - - => tftp $loadaddr mpc8315erdb.dtb - => nand erase 0x2e0000 0x20000 - => nand write $loadaddr 0x2e0000 0x20000 - -3. Program the root filesystem to NAND flash - - => tftp $loadaddr rootfs.jffs2 - => nand erase 0x400000 0x1c00000 - => nand write $loadaddr 0x400000 $filesize - -4. Booting your new system - - => setenv nandboot 'setenv bootargs root=/dev/mtdblock3 rootfstype=jffs2 console=$consoledev,$baudrate;nand read $fdtaddr 0x2e0000 0x20000;nand read $loadaddr 0x100000 0x1e0000;bootm $loadaddr - $fdtaddr' - - If you want to set this boot option as default: - - => setenv bootcmd 'run nandboot' - => saveenv - - ...or for a single boot: - - => run nandboot - - You can login with user "root". diff --git a/buildroot/board/freescale/p1010rdb/linux-4.1.config b/buildroot/board/freescale/p1010rdb/linux-4.1.config deleted file mode 100644 index 2de430cbee2..00000000000 --- a/buildroot/board/freescale/p1010rdb/linux-4.1.config +++ /dev/null @@ -1,70 +0,0 @@ -CONFIG_PPC_85xx=y -CONFIG_PHYS_64BIT=y -CONFIG_SYSVIPC=y -CONFIG_NO_HZ=y -CONFIG_HIGH_RES_TIMERS=y -CONFIG_LOG_BUF_SHIFT=14 -CONFIG_EXPERT=y -CONFIG_MODULES=y -CONFIG_P1010_RDB=y -CONFIG_HIGHMEM=y -CONFIG_SWIOTLB=y -CONFIG_FORCE_MAX_ZONEORDER=12 -CONFIG_PCI=y -CONFIG_PCI_MSI=y -CONFIG_RAPIDIO=y -CONFIG_NET=y -CONFIG_PACKET=y -CONFIG_UNIX=y -CONFIG_INET=y -CONFIG_DEVTMPFS=y -CONFIG_MTD=y -CONFIG_MTD_CMDLINE_PARTS=y -CONFIG_MTD_BLOCK=y -CONFIG_FTL=y -CONFIG_MTD_CFI=y -CONFIG_MTD_CFI_INTELEXT=y -CONFIG_MTD_CFI_AMDSTD=y -CONFIG_MTD_PHYSMAP_OF=y -CONFIG_MTD_NAND=y -CONFIG_MTD_NAND_FSL_ELBC=y -CONFIG_MTD_NAND_FSL_IFC=y -CONFIG_BLK_DEV_SD=y -CONFIG_CHR_DEV_SG=y -CONFIG_ATA=y -CONFIG_SATA_FSL=y -CONFIG_NETDEVICES=y -CONFIG_GIANFAR=y -CONFIG_VITESSE_PHY=y -CONFIG_FIXED_PHY=y -CONFIG_SERIAL_8250=y -CONFIG_SERIAL_8250_CONSOLE=y -CONFIG_SERIAL_8250_NR_UARTS=2 -CONFIG_SERIAL_8250_RUNTIME_UARTS=2 -CONFIG_SERIAL_8250_MANY_PORTS=y -CONFIG_SERIAL_8250_DETECT_IRQ=y -CONFIG_SERIAL_8250_RSA=y -CONFIG_NVRAM=y -CONFIG_I2C=y -CONFIG_I2C_CHARDEV=y -CONFIG_I2C_MPC=y -CONFIG_SPI=y -CONFIG_SPI_FSL_SPI=y -CONFIG_SPI_FSL_ESPI=y -CONFIG_USB=y -CONFIG_USB_EHCI_HCD=y -CONFIG_USB_EHCI_FSL=y -CONFIG_USB_STORAGE=y -CONFIG_MMC=y -CONFIG_MMC_SDHCI=y -CONFIG_MMC_SDHCI_PLTFM=y -CONFIG_MMC_SDHCI_OF_ESDHC=y -CONFIG_RTC_CLASS=y -CONFIG_RTC_DRV_CMOS=y -CONFIG_DMADEVICES=y -CONFIG_FSL_DMA=y -CONFIG_EXT4_FS=y -CONFIG_TMPFS=y -CONFIG_JFFS2_FS=y -CONFIG_SQUASHFS=y -CONFIG_CRYPTO_DEV_FSL_CAAM=y diff --git a/buildroot/board/freescale/p1010rdb/readme.txt b/buildroot/board/freescale/p1010rdb/readme.txt deleted file mode 100644 index 025c97e8a83..00000000000 --- a/buildroot/board/freescale/p1010rdb/readme.txt +++ /dev/null @@ -1,40 +0,0 @@ -You'll need to program the files created by buildroot into the flash. -The fast way is to tftp transfer the files via one of the network interfaces. - -Alternatively you can transfer the files via serial console with an Ymodem -file transfer from your terminal program by using a "loady" command -from the u-boot prompt instead of the "tftp ..." commands stated below. -Beware that serial console file transfers are quite slow! - -1. Program the DTB to NOR flash - - => tftp $loadaddr p1010rdb-pa.dtb - => erase 0xee000000 +$filesize - => cp.b $loadaddr 0xee000000 $filesize - -2. Program the kernel to NOR flash - - => tftp $loadaddr uImage - => erase 0xee080000 +$filesize - => cp.b $loadaddr 0xee080000 $filesize - -3. Program the root filesystem to NOR flash - - => tftp $loadaddr rootfs.jffs2 - => erase 0xee800000 0xeff5ffff - => cp.b $loadaddr 0xee800000 $filesize - -4. Booting your new system - - => setenv norboot 'setenv bootargs root=/dev/mtdblock2 rootfstype=jffs2 console=$consoledev,$baudrate;bootm 0xee080000 - 0xee000000' - - If you want to set this boot option as default: - - => setenv bootcmd 'run norboot' - => saveenv - - ...or for a single boot: - - => run norboot - - You can login with user "root". diff --git a/buildroot/board/freescale/p1025twr/readme.txt b/buildroot/board/freescale/p1025twr/readme.txt new file mode 100644 index 00000000000..9179aeac64a --- /dev/null +++ b/buildroot/board/freescale/p1025twr/readme.txt @@ -0,0 +1,25 @@ +The bootloader is no longer buildable in the latest Freescale/NXP tree or +upstream. As such, retrieve the "Image: SDK V1.2 e500v2 Binary ISO" from +NXP downloads and follow the release notes for reflashing. + +For programming the kernel and rootfs created by buildroot into the flash. +The fast way is to tftp transfer the files via one of the network interfaces. +Make sure your devkit has ipaddr and serverip defined to reach your tftp +server. + +(Assuming the default u-boot env from NXP) +1. Program the DTB to NOR flash + + => setenv dtbfile p1025twr.dtb + => run dtbflash + +2. Program the kernel and rootfs to NOR flash (reusing orignal rootfs + NOR location, as the kernel location is to small) + + => tftpboot $loadaddr uImage; protect off 0xeeb80000 +$filesize; erase 0xeeb80000 +$filesize; cp.b $loadaddr 0xeeb80000 $filesize; protect on 0xeeb80000 +$filesize; cmp.b $loadaddr 0xefa80000 $filesize + +3. Booting your new system + + => bootm 0xeeb80000 - 0xefe80000 + + You can login with user "root". diff --git a/buildroot/board/freescale/t1040d4rdb/readme.txt b/buildroot/board/freescale/t1040d4rdb/readme.txt new file mode 100644 index 00000000000..04d6b01531d --- /dev/null +++ b/buildroot/board/freescale/t1040d4rdb/readme.txt @@ -0,0 +1,24 @@ +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 and serverip defined to reach your tftp +server. + +(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". diff --git a/buildroot/board/gdb/bfin-bf512/linux.config b/buildroot/board/gdb/bfin-bf512/linux.config deleted file mode 100644 index bc2a907b8ea..00000000000 --- a/buildroot/board/gdb/bfin-bf512/linux.config +++ /dev/null @@ -1,87 +0,0 @@ -# CONFIG_LOCALVERSION_AUTO is not set -CONFIG_SYSVIPC=y -CONFIG_BLK_DEV_INITRD=y -# 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_CC_OPTIMIZE_FOR_SIZE=y -# CONFIG_UID16 is not set -# CONFIG_SGETMASK_SYSCALL is not set -# CONFIG_SYSFS_SYSCALL is not set -# CONFIG_KALLSYMS is not set -# CONFIG_BUG is not set -# CONFIG_BASE_FULL is not set -# CONFIG_ADVISE_SYSCALLS is not set -# CONFIG_MEMBARRIER is not set -CONFIG_EMBEDDED=y -# CONFIG_VM_EVENT_COUNTERS is not set -# CONFIG_SLUB_DEBUG is not set -# CONFIG_COMPAT_BRK is not set -CONFIG_MODULES=y -# CONFIG_BLOCK is not set -CONFIG_BF512=y -# CONFIG_SET_GENERIC_CLOCKEVENTS is not set -# CONFIG_I_ENTRY_L1 is not set -# CONFIG_EXCPT_IRQ_SYSC_L1 is not set -# CONFIG_DO_IRQ_L1 is not set -# CONFIG_CORE_TIMER_IRQ_L1 is not set -# CONFIG_IDLE_L1 is not set -# CONFIG_SCHEDULE_L1 is not set -# CONFIG_ARITHMETIC_OPS_L1 is not set -# CONFIG_ACCESS_OK_L1 is not set -# CONFIG_MEMSET_L1 is not set -# CONFIG_MEMCPY_L1 is not set -# CONFIG_STRCMP_L1 is not set -# CONFIG_STRNCMP_L1 is not set -# CONFIG_STRCPY_L1 is not set -# CONFIG_STRNCPY_L1 is not set -# CONFIG_SYS_BFIN_SPINLOCK_L1 is not set -# CONFIG_CACHELINE_ALIGNED_L1 is not set -# CONFIG_DCACHE_FLUSH_L1 is not set -# CONFIG_APP_STACK_L1 is not set -# CONFIG_BFIN_INS_LOWOVERHEAD is not set -# CONFIG_BFIN_ICACHE is not set -# CONFIG_BFIN_DCACHE is not set -# CONFIG_C_AMCKEN is not set -CONFIG_BINFMT_ELF_FDPIC=y -CONFIG_BINFMT_FLAT=y -# CONFIG_COREDUMP is not set -# CONFIG_SUSPEND is not set -# CONFIG_UEVENT_HELPER is not set -# 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_INPUT is not set -# CONFIG_SERIO is not set -# CONFIG_VT is not set -# CONFIG_LEGACY_PTYS is not set -CONFIG_SERIAL_BFIN=y -CONFIG_SERIAL_BFIN_CONSOLE=y -CONFIG_SERIAL_BFIN_UART0=y -CONFIG_SERIAL_BFIN_UART1=y -# CONFIG_BFIN_OTP is not set -# CONFIG_HW_RANDOM is not set -# CONFIG_HWMON is not set -# CONFIG_USB_SUPPORT is not set -# CONFIG_MANDATORY_FILE_LOCKING is not set -# CONFIG_DNOTIFY is not set -# CONFIG_MISC_FILESYSTEMS is not set -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="utf-8" -CONFIG_PRINTK_TIME=y -# CONFIG_ENABLE_WARN_DEPRECATED is not set -# CONFIG_ENABLE_MUST_CHECK is not set -# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set -CONFIG_MAGIC_SYSRQ=y -# CONFIG_SCHED_DEBUG is not set -# CONFIG_FTRACE is not set -# CONFIG_DEBUG_VERBOSE is not set -# CONFIG_DEBUG_HUNT_FOR_ZERO is not set -# CONFIG_DEBUG_BFIN_HWTRACE_ON is not set -CONFIG_EARLY_PRINTK=y -# CONFIG_ACCESS_CHECK is not set -# CONFIG_CRC32 is not set diff --git a/buildroot/board/gdb/bfin-bf512/readme.txt b/buildroot/board/gdb/bfin-bf512/readme.txt deleted file mode 100644 index b8ff250a042..00000000000 --- a/buildroot/board/gdb/bfin-bf512/readme.txt +++ /dev/null @@ -1,11 +0,0 @@ -Run the simulation with GDB for FDPIC: - - ./output/host/bin/bfin-buildroot-linux-uclibc-run --env operating --model bf512 output/images/vmlinux - -Run the simulation with GDB for FLAT: - - ./output/host/bin/bfin-buildroot-uclinux-uclibc-run --env operating --model bf512 output/images/vmlinux - -The login prompt will appear in the terminal that started GDB. - -Tested with GDB 7.9 diff --git a/buildroot/board/gdb/post-build.sh b/buildroot/board/gdb/post-build.sh deleted file mode 100755 index 8933d504ece..00000000000 --- a/buildroot/board/gdb/post-build.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -# no simulated network devices at the moment -rm -f ${TARGET_DIR}/etc/init.d/S40network -rm -rf ${TARGET_DIR}/etc/network/ diff --git a/buildroot/board/orangepi/orangepi-zero-plus2/linux-extras.config b/buildroot/board/orangepi/orangepi-zero-plus2/linux-extras.config new file mode 100644 index 00000000000..52b4b4b29e1 --- /dev/null +++ b/buildroot/board/orangepi/orangepi-zero-plus2/linux-extras.config @@ -0,0 +1,10 @@ +# wireless core +CONFIG_WIRELESS=y +CONFIG_CFG80211=y +CONFIG_MAC80211=y +CONFIG_CFG80211_WEXT=y + +# wireless drivers +CONFIG_WLAN=y +CONFIG_WLAN_VENDOR_BROADCOM=y +CONFIG_BRCMFMAC=m diff --git a/buildroot/board/orangepi/orangepi-zero-plus2/patches/linux/linux-0001-arm64-dts-orange-pi-zero-plus2-enable-ap6212.patch b/buildroot/board/orangepi/orangepi-zero-plus2/patches/linux/linux-0001-arm64-dts-orange-pi-zero-plus2-enable-ap6212.patch new file mode 100644 index 00000000000..282e2171f2e --- /dev/null +++ b/buildroot/board/orangepi/orangepi-zero-plus2/patches/linux/linux-0001-arm64-dts-orange-pi-zero-plus2-enable-ap6212.patch @@ -0,0 +1,73 @@ +From: Sergey Matyukevich +Date: Sun, 11 Feb 2018 16:21:43 +0300 +Subject: [PATCH] arm64: dts: orange-pi-zero-plus2: enable AP6212a WiFi/BT combo + +Enable AP6212a WiFi/BT combo chip on orange-pi-zero-plus2 board: +- WiFi SDIO interface is connected to MMC1 +- WiFi REG_ON pin connected to gpio PA9: attach to mmc-pwrseq +- WiFi HOST_WAKE pin connected to gpio PL7 +- BT is connected to UART1 + +Signed-off-by: Sergey Matyukevich +Signed-off-by: Maxime Ripard +--- + .../allwinner/sun50i-h5-orangepi-zero-plus2.dts | 32 ++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts +index a42fd79a62a3..d415b7b67cce 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts +@@ -64,6 +64,13 @@ + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; ++ ++ wifi_pwrseq: wifi_pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ pinctrl-names = "default"; ++ reset-gpios = <&pio 0 9 GPIO_ACTIVE_LOW>; /* PA9 */ ++ post-power-on-delay-ms = <200>; ++ }; + }; + + &mmc0 { +@@ -75,6 +82,25 @@ + status = "okay"; + }; + ++&mmc1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc1_pins_a>; ++ vmmc-supply = <®_vcc3v3>; ++ vqmmc-supply = <®_vcc3v3>; ++ mmc-pwrseq = <&wifi_pwrseq>; ++ bus-width = <4>; ++ non-removable; ++ status = "okay"; ++ ++ brcmf: wifi@1 { ++ reg = <1>; ++ compatible = "brcm,bcm4329-fmac"; ++ interrupt-parent = <&r_pio>; ++ interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>; /* PL7 */ ++ interrupt-names = "host-wake"; ++ }; ++}; ++ + &mmc2 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc2_8bit_pins>; +@@ -90,3 +116,9 @@ + pinctrl-0 = <&uart0_pins_a>; + status = "okay"; + }; ++ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; ++ status = "okay"; ++}; +-- +2.16.1 + diff --git a/buildroot/board/orangepi/orangepi-zero-plus2/patches/linux/linux-0001-arm64-dts-orange-pi-zero-plus2-fix-sdcard-detect.patch b/buildroot/board/orangepi/orangepi-zero-plus2/patches/linux/linux-0001-arm64-dts-orange-pi-zero-plus2-fix-sdcard-detect.patch deleted file mode 100644 index 203402932b9..00000000000 --- a/buildroot/board/orangepi/orangepi-zero-plus2/patches/linux/linux-0001-arm64-dts-orange-pi-zero-plus2-fix-sdcard-detect.patch +++ /dev/null @@ -1,30 +0,0 @@ -From f88e9301948173dd35afad4a6939092c7f269aed Mon Sep 17 00:00:00 2001 -From: Sergey Matyukevich -Date: Fri, 3 Nov 2017 22:58:54 +0300 -Subject: [PATCH] arm64: dts: orange-pi-zero-plus2: fix sdcard detect - -The sdcard detect pin on orange-pi-zero-plus2 is pulled up. -Fix cd-gpio description to enable sdcard detect. - -Signed-off-by: Sergey Matyukevich -Signed-off-by: Maxime Ripard ---- - arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts -index b6b7a56..a42fd79 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus2.dts -@@ -71,7 +71,7 @@ - pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>; - vmmc-supply = <®_vcc3v3>; - bus-width = <4>; -- cd-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; -+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; - status = "okay"; - }; - --- -1.9.1 - diff --git a/buildroot/board/orangepi/orangepi-zero-plus2/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt b/buildroot/board/orangepi/orangepi-zero-plus2/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt new file mode 100644 index 00000000000..8f0bf69063d --- /dev/null +++ b/buildroot/board/orangepi/orangepi-zero-plus2/rootfs_overlay/lib/firmware/brcm/brcmfmac43430-sdio.txt @@ -0,0 +1,54 @@ +#AP6212_NVRAM_V1.0_20140603 +# 2.4 GHz, 20 MHz BW mode + +# The following parameter values are just placeholders, need to be updated. +manfid=0x2d0 +prodid=0x0726 +vendid=0x14e4 +devid=0x43e2 +boardtype=0x0726 +boardrev=0x1101 +boardnum=22 +macaddr=00:90:4c:c5:12:38 +sromrev=11 +boardflags=0x00404201 +xtalfreq=26000 +nocrc=1 +ag0=255 +aa2g=1 +ccode=ALL + +pa0itssit=0x20 +extpagain2g=0 + +#PA parameters for 2.4GHz, measured at CHIP OUTPUT +pa2ga0=-168,7161,-820 +AvVmid_c0=0x0,0xc8 +cckpwroffset0=5 + +# PPR params +maxp2ga0=90 +txpwrbckof=6 +cckbw202gpo=0x5555 +legofdmbw202gpo=0x77777777 +mcsbw202gpo=0xaaaaaaaa + +# OFDM IIR : +ofdmdigfilttype=7 +# PAPD mode: +papdmode=2 + +il0macaddr=00:90:4c:c5:12:38 +wl0id=0x431b + +#OOB parameters +hostwake=0x40 +hostrdy=0x41 +usbrdy=0x03 +usbrdydelay=100 +deadman_to=0xffffffff +# muxenab: 0x1 for UART enable, 0x10 for Host awake +muxenab=0x10 +# CLDO PWM voltage settings - 0x4 - 1.1 volt +#cldo_pwm=0x4 + diff --git a/buildroot/board/qemu/aarch64-virt/linux-4.13.config b/buildroot/board/qemu/aarch64-virt/linux-4.15.config similarity index 97% rename from buildroot/board/qemu/aarch64-virt/linux-4.13.config rename to buildroot/board/qemu/aarch64-virt/linux-4.15.config index 93cb42f2ea4..c9f2708ad55 100644 --- a/buildroot/board/qemu/aarch64-virt/linux-4.13.config +++ b/buildroot/board/qemu/aarch64-virt/linux-4.15.config @@ -1,6 +1,5 @@ CONFIG_SYSVIPC=y CONFIG_POSIX_MQUEUE=y -CONFIG_FHANDLE=y CONFIG_NO_HZ_IDLE=y CONFIG_HIGH_RES_TIMERS=y CONFIG_TASKSTATS=y @@ -10,7 +9,6 @@ CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_BLK_DEV_BSGLIB=y CONFIG_ARCH_VEXPRESS=y -CONFIG_SMP=y CONFIG_TRANSPARENT_HUGEPAGE=y CONFIG_BINFMT_MISC=y CONFIG_COMPAT=y diff --git a/buildroot/board/qemu/aarch64-virt/readme.txt b/buildroot/board/qemu/aarch64-virt/readme.txt index 9e09d953f96..ce0b6213665 100644 --- a/buildroot/board/qemu/aarch64-virt/readme.txt +++ b/buildroot/board/qemu/aarch64-virt/readme.txt @@ -4,4 +4,4 @@ Run the emulation with: The login prompt will appear in the terminal that started Qemu. -Tested with QEMU 2.9.0 +Tested with QEMU 2.11.0 diff --git a/buildroot/board/qemu/ppc64-e5500/linux.fragment b/buildroot/board/qemu/ppc64-e5500/linux.fragment new file mode 100644 index 00000000000..071a55ccf73 --- /dev/null +++ b/buildroot/board/qemu/ppc64-e5500/linux.fragment @@ -0,0 +1,10 @@ +# Enables generic PPC e500 base arch support for QEMU. +# The e5500 is a variant of the e500 arch. +CONFIG_PPC_QEMU_E500=y + +# Enable virtio (blk, rng and net devices) +CONFIG_VIRTIO=y +CONFIG_VIRTIO_PCI=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_VIRTIO_BLK=y +CONFIG_VIRTIO_NET=y diff --git a/buildroot/board/qemu/ppc64-e5500/readme.txt b/buildroot/board/qemu/ppc64-e5500/readme.txt new file mode 100644 index 00000000000..a6ad893b4de --- /dev/null +++ b/buildroot/board/qemu/ppc64-e5500/readme.txt @@ -0,0 +1,7 @@ +Run the emulation with: + + qemu-system-ppc64 -M ppce500 -cpu e5500 -m 256 -kernel output/images/uImage -drive file=output/images/rootfs.ext2,if=virtio,format=raw -append "console=ttyS0 root=/dev/vda" -serial mon:stdio -nographic + +The login prompt will appear in the terminal that started Qemu. + +Tested with QEMU 2.0.0 diff --git a/buildroot/board/qemu/x86/linux-4.15.config b/buildroot/board/qemu/x86/linux-4.15.config index 0e59b87bd60..79f7537d80e 100644 --- a/buildroot/board/qemu/x86/linux-4.15.config +++ b/buildroot/board/qemu/x86/linux-4.15.config @@ -9,6 +9,7 @@ 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 @@ -20,6 +21,7 @@ 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 diff --git a/buildroot/board/qemu/x86_64/linux-4.15.config b/buildroot/board/qemu/x86_64/linux-4.15.config index 0e59b87bd60..5fa33d44240 100644 --- a/buildroot/board/qemu/x86_64/linux-4.15.config +++ b/buildroot/board/qemu/x86_64/linux-4.15.config @@ -9,6 +9,7 @@ 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 @@ -20,6 +21,7 @@ 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 @@ -47,3 +49,4 @@ CONFIG_EXT4_FS=y CONFIG_AUTOFS4_FS=y CONFIG_TMPFS=y CONFIG_TMPFS_POSIX_ACL=y +CONFIG_UNWINDER_FRAME_POINTER=y diff --git a/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg b/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg index 212c30607e1..a9d4c4501fd 100644 --- a/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg +++ b/buildroot/board/raspberrypi/genimage-raspberrypi0.cfg @@ -2,7 +2,6 @@ image boot.vfat { vfat { files = { "bcm2708-rpi-b-plus.dtb", - "bcm2708-rpi-0-w.dtb", "rpi-firmware/bootcode.bin", "rpi-firmware/cmdline.txt", "rpi-firmware/config.txt", diff --git a/buildroot/board/raspberrypi/genimage-raspberrypi0w.cfg b/buildroot/board/raspberrypi/genimage-raspberrypi0w.cfg new file mode 100644 index 00000000000..3aafd9b6fc4 --- /dev/null +++ b/buildroot/board/raspberrypi/genimage-raspberrypi0w.cfg @@ -0,0 +1,31 @@ +image boot.vfat { + vfat { + files = { + "bcm2708-rpi-0-w.dtb", + "rpi-firmware/bootcode.bin", + "rpi-firmware/cmdline.txt", + "rpi-firmware/config.txt", + "rpi-firmware/fixup.dat", + "rpi-firmware/start.elf", + "rpi-firmware/overlays", + "zImage" + } + } + size = 32M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg b/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg index 98ff7090356..0a547241f49 100644 --- a/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg +++ b/buildroot/board/raspberrypi/genimage-raspberrypi3.cfg @@ -2,6 +2,7 @@ image boot.vfat { vfat { files = { "bcm2710-rpi-3-b.dtb", + "bcm2710-rpi-3-b-plus.dtb", "bcm2710-rpi-cm3.dtb", "rpi-firmware/bootcode.bin", "rpi-firmware/cmdline.txt", diff --git a/buildroot/board/raspberrypi/readme.txt b/buildroot/board/raspberrypi/readme.txt index 948269347bd..9f91581054c 100644 --- a/buildroot/board/raspberrypi/readme.txt +++ b/buildroot/board/raspberrypi/readme.txt @@ -30,7 +30,7 @@ For model 2 B: $ make raspberrypi2_defconfig -For model 3 B: +For model 3 B and B+: $ make raspberrypi3_defconfig @@ -56,6 +56,7 @@ After building, you should obtain this tree: +-- bcm2708-rpi-b-plus.dtb [1] +-- bcm2709-rpi-2-b.dtb [1] +-- bcm2710-rpi-3-b.dtb [1] + +-- bcm2710-rpi-3-b-plus.dtb [1] +-- boot.vfat +-- rootfs.ext4 +-- rpi-firmware/ diff --git a/buildroot/board/raspberrypi0w b/buildroot/board/raspberrypi0w new file mode 120000 index 00000000000..fcdafc81edb --- /dev/null +++ b/buildroot/board/raspberrypi0w @@ -0,0 +1 @@ +raspberrypi \ No newline at end of file diff --git a/buildroot/board/solidrun/clearfog/boot.scr.txt b/buildroot/board/solidrun/clearfog/boot.scr.txt new file mode 100644 index 00000000000..a2332e39606 --- /dev/null +++ b/buildroot/board/solidrun/clearfog/boot.scr.txt @@ -0,0 +1,5 @@ +setenv fdtfile armada-388-clearfog-base.dtb +setenv bootargs root=/dev/mmcblk0p1 +load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}/${fdtfile} +load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} ${prefix}/zImage +bootz ${kernel_addr_r} - ${fdt_addr_r} diff --git a/buildroot/board/solidrun/clearfog/genimage.cfg b/buildroot/board/solidrun/clearfog/genimage.cfg new file mode 100644 index 00000000000..8963619cc52 --- /dev/null +++ b/buildroot/board/solidrun/clearfog/genimage.cfg @@ -0,0 +1,16 @@ +image sdcard.img { + hdimage { + } + + partition u-boot { + in-partition-table = "no" + image = "u-boot-spl.kwb" + offset = 512 + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + offset = 1M + } +} diff --git a/buildroot/board/solidrun/clearfog/linux.fragment b/buildroot/board/solidrun/clearfog/linux.fragment new file mode 100644 index 00000000000..b7ed5b00d62 --- /dev/null +++ b/buildroot/board/solidrun/clearfog/linux.fragment @@ -0,0 +1 @@ +CONFIG_SENSORS_MCP3021=y diff --git a/buildroot/board/solidrun/clearfog/post-build.sh b/buildroot/board/solidrun/clearfog/post-build.sh new file mode 100755 index 00000000000..ff22ebd6e5f --- /dev/null +++ b/buildroot/board/solidrun/clearfog/post-build.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +install -m 0644 -D $BINARIES_DIR/boot.scr $TARGET_DIR/boot/boot.scr diff --git a/buildroot/board/solidrun/clearfog/readme.txt b/buildroot/board/solidrun/clearfog/readme.txt new file mode 100644 index 00000000000..b56f0a9b49e --- /dev/null +++ b/buildroot/board/solidrun/clearfog/readme.txt @@ -0,0 +1,68 @@ +********************** +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. + +Limitations +=========== + +There's no access to the SPI flash in this combination of kernel/uboot/dts. + +There is no support for the SFP. + +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/ + +*** WARNING! The script 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/buildroot/board/synopsys/hsdk/genimage.cfg b/buildroot/board/synopsys/hsdk/genimage.cfg new file mode 100644 index 00000000000..9103b202992 --- /dev/null +++ b/buildroot/board/synopsys/hsdk/genimage.cfg @@ -0,0 +1,27 @@ +image boot.vfat { + vfat { + files = { + "uImage" + } + file uboot.env { + image = "uboot-env.bin" + } + } + size = 20M +} + +image sdcard.img { + hdimage { + } + + partition boot { + partition-type = 0xC + bootable = "true" + image = "boot.vfat" + } + + partition rootfs { + partition-type = 0x83 + image = "rootfs.ext4" + } +} diff --git a/buildroot/board/synopsys/hsdk/linux.fragment b/buildroot/board/synopsys/hsdk/linux.fragment new file mode 100644 index 00000000000..45d6c69af5b --- /dev/null +++ b/buildroot/board/synopsys/hsdk/linux.fragment @@ -0,0 +1,2 @@ +CONFIG_INITRAMFS_SOURCE="" +CONFIG_ARC_UBOOT_SUPPORT=y diff --git a/buildroot/board/synopsys/hsdk/readme.txt b/buildroot/board/synopsys/hsdk/readme.txt new file mode 100644 index 00000000000..f4c65011116 --- /dev/null +++ b/buildroot/board/synopsys/hsdk/readme.txt @@ -0,0 +1,33 @@ +Synopsys, Inc. +ARC HS Development Kit (HSDK) + +https://embarc.org/platforms.html + +How to build it +=============== + +Select the default configuration for the target: +$ make snps_archs38_hsdk_defconfig + +Optional: modify the configuration: +$ make menuconfig + +Build: +$ make + +Result of the build +=================== +output/images/ +笏懌楳笏 boot.vfat +笏懌楳笏 rootfs.ext2 +笏懌楳笏 sdcard.img +笏懌楳笏 u-boot +笏懌楳笏 u-boot.bin +笏懌楳笏 uboot-env.bin +笏披楳笏 uImage + +To copy the image file to the sdcard use dd: +$ dd if=output/images/sdcard.img of=/dev/XXX + +2018, Evgeniy Didin + diff --git a/buildroot/board/synopsys/hsdk/uboot.env.txt b/buildroot/board/synopsys/hsdk/uboot.env.txt new file mode 100644 index 00000000000..6bcfb56a77f --- /dev/null +++ b/buildroot/board/synopsys/hsdk/uboot.env.txt @@ -0,0 +1,9 @@ +baudrate=115200 +bootargs=console=ttyS3,115200n8 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/buildroot/board/technologic/ts5x00/fs-overlay/boot/syslinux/syslinux.cfg b/buildroot/board/technologic/ts5500/fs-overlay/boot/syslinux/syslinux.cfg similarity index 100% rename from buildroot/board/technologic/ts5x00/fs-overlay/boot/syslinux/syslinux.cfg rename to buildroot/board/technologic/ts5500/fs-overlay/boot/syslinux/syslinux.cfg diff --git a/buildroot/board/technologic/ts5x00/linux-3.17.config b/buildroot/board/technologic/ts5500/linux-4.14.config similarity index 98% rename from buildroot/board/technologic/ts5x00/linux-3.17.config rename to buildroot/board/technologic/ts5500/linux-4.14.config index 60cd8a0fe3b..eb81596e258 100644 --- a/buildroot/board/technologic/ts5x00/linux-3.17.config +++ b/buildroot/board/technologic/ts5500/linux-4.14.config @@ -1,3 +1,4 @@ +# CONFIG_CROSS_MEMORY_ATTACH is not set CONFIG_PARTITION_ADVANCED=y # CONFIG_X86_EXTENDED_PLATFORM is not set CONFIG_MELAN=y @@ -6,7 +7,6 @@ CONFIG_X86_REBOOTFIXUPS=y CONFIG_NOHIGHMEM=y # CONFIG_COMPACTION is not set # CONFIG_BOUNCE is not set -# CONFIG_CROSS_MEMORY_ATTACH is not set # CONFIG_RELOCATABLE is not set # CONFIG_SUSPEND is not set # CONFIG_ACPI is not set @@ -19,7 +19,6 @@ 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 @@ -76,7 +75,6 @@ CONFIG_DM9102=y CONFIG_PHYLIB=y CONFIG_DAVICOM_PHY=y # CONFIG_WLAN is not set -# CONFIG_INPUT_MOUSEDEV is not set # CONFIG_INPUT_KEYBOARD is not set # CONFIG_INPUT_MOUSE is not set # CONFIG_SERIO is not set diff --git a/buildroot/board/technologic/ts5x00/readme.txt b/buildroot/board/technologic/ts5500/readme.txt similarity index 98% rename from buildroot/board/technologic/ts5x00/readme.txt rename to buildroot/board/technologic/ts5500/readme.txt index 1e506829809..1e73ab3ea17 100644 --- a/buildroot/board/technologic/ts5x00/readme.txt +++ b/buildroot/board/technologic/ts5500/readme.txt @@ -13,7 +13,7 @@ and additional sysfs attributes under /sys/devices/platform/). To build the default configuration you only have to: - $ make ts5x00_defconfig + $ make ts5500_defconfig $ make You will need a Compact Flash card of sufficient size and the first or only diff --git a/buildroot/board/telit/evk-pro3/barebox.fragment b/buildroot/board/telit/evk-pro3/barebox.fragment deleted file mode 100644 index 750ad19cd85..00000000000 --- a/buildroot/board/telit/evk-pro3/barebox.fragment +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_WATCHDOG=y -CONFIG_WATCHDOG_AT91SAM9X=y diff --git a/buildroot/board/telit/evk-pro3/linux.fragment b/buildroot/board/telit/evk-pro3/linux.fragment deleted file mode 100644 index d22fe8f4e42..00000000000 --- a/buildroot/board/telit/evk-pro3/linux.fragment +++ /dev/null @@ -1,3 +0,0 @@ -CONFIG_KERNEL_LZO=y -CONFIG_GPIO_SYSFS=y -CONFIG_UBIFS_FS=y diff --git a/buildroot/board/telit/evk-pro3/patches/barebox/0001-watchdog-add-keep-alive-support.patch b/buildroot/board/telit/evk-pro3/patches/barebox/0001-watchdog-add-keep-alive-support.patch deleted file mode 100644 index 80bd459b562..00000000000 --- a/buildroot/board/telit/evk-pro3/patches/barebox/0001-watchdog-add-keep-alive-support.patch +++ /dev/null @@ -1,99 +0,0 @@ -From 76e2b190803484db033153fe8a97b381a567ed25 Mon Sep 17 00:00:00 2001 -From: Jean-Christophe PLAGNIOL-VILLARD -Date: Wed, 14 Nov 2012 19:16:35 +0800 -Subject: [PATCH 1/4] watchdog: add keep alive support - -this will allow to ping the watchdog via poller - -Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD -Signed-off-by: Fabio Porcedda ---- - drivers/watchdog/Kconfig | 1 + - drivers/watchdog/wd_core.c | 25 +++++++++++++++++++++++++ - include/watchdog.h | 2 ++ - 3 files changed, 28 insertions(+) - -diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig -index 63fb1a8c5..7ebff89b9 100644 ---- a/drivers/watchdog/Kconfig -+++ b/drivers/watchdog/Kconfig -@@ -4,6 +4,7 @@ config WATCHDOG_IMX_RESET_SOURCE - - menuconfig WATCHDOG - bool "Watchdog support" -+ select GENERIC_POLLER - help - Many platforms support a watchdog to keep track of a working machine. - This framework provides routines to handle these watchdogs. -diff --git a/drivers/watchdog/wd_core.c b/drivers/watchdog/wd_core.c -index 3a3f51964..52537afef 100644 ---- a/drivers/watchdog/wd_core.c -+++ b/drivers/watchdog/wd_core.c -@@ -18,6 +18,7 @@ - #include - #include - #include -+#include - - static LIST_HEAD(watchdog_list); - -@@ -31,6 +32,20 @@ static const char *watchdog_name(struct watchdog *wd) - return "unknown"; - } - -+static struct watchdog *watchdog_get_default(void); -+ -+static void watchdog_poller_func(struct poller_struct *poller) -+{ -+ struct watchdog *wd = watchdog_get_default(); -+ -+ if (wd) -+ wd->keep_alive(wd); -+} -+ -+static struct poller_struct watchdog_poller = { -+ .func = watchdog_poller_func, -+}; -+ - int watchdog_register(struct watchdog *wd) - { - if (!wd->priority) -@@ -41,6 +56,16 @@ int watchdog_register(struct watchdog *wd) - pr_debug("registering watchdog %s with priority %d\n", watchdog_name(wd), - wd->priority); - -+ -+ if (wd->keep_alive) { -+ int ret; -+ -+ ret = poller_register(&watchdog_poller); -+ if (ret) { -+ return ret; -+ } -+ } -+ - return 0; - } - EXPORT_SYMBOL(watchdog_register); -diff --git a/include/watchdog.h b/include/watchdog.h -index 3e8a487a4..a2660c2e0 100644 ---- a/include/watchdog.h -+++ b/include/watchdog.h -@@ -13,12 +13,14 @@ - #ifndef INCLUDE_WATCHDOG_H - # define INCLUDE_WATCHDOG_H - -+ - struct watchdog { - int (*set_timeout)(struct watchdog *, unsigned); - const char *name; - struct device_d *dev; - unsigned int priority; - struct list_head list; -+ void (*keep_alive)(struct watchdog *); - }; - - #ifdef CONFIG_WATCHDOG --- -2.12.0 - diff --git a/buildroot/board/telit/evk-pro3/patches/barebox/0002-watchdog-add-at91sam9-watchdog-support.patch b/buildroot/board/telit/evk-pro3/patches/barebox/0002-watchdog-add-at91sam9-watchdog-support.patch deleted file mode 100644 index b97c126954c..00000000000 --- a/buildroot/board/telit/evk-pro3/patches/barebox/0002-watchdog-add-at91sam9-watchdog-support.patch +++ /dev/null @@ -1,237 +0,0 @@ -From 24d99ffc4b22e45721e74bfc10717cc5bacdbfc4 Mon Sep 17 00:00:00 2001 -From: Jean-Christophe PLAGNIOL-VILLARD -Date: Wed, 14 Nov 2012 19:17:47 +0800 -Subject: [PATCH 2/4] watchdog: add at91sam9 watchdog support - -with keep alive support - -Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD -Signed-off-by: Fabio Porcedda ---- - drivers/watchdog/Kconfig | 8 +++ - drivers/watchdog/Makefile | 1 + - drivers/watchdog/at91sam9_wdt.c | 131 ++++++++++++++++++++++++++++++++++++++++ - drivers/watchdog/at91sam9_wdt.h | 38 ++++++++++++ - 4 files changed, 178 insertions(+) - create mode 100644 drivers/watchdog/at91sam9_wdt.c - create mode 100644 drivers/watchdog/at91sam9_wdt.h - -diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig -index 7ebff89b9..479e737f0 100644 ---- a/drivers/watchdog/Kconfig -+++ b/drivers/watchdog/Kconfig -@@ -11,12 +11,20 @@ menuconfig WATCHDOG - - if WATCHDOG - -+config WATCHDOG_AT91SAM9X -+ tristate "AT91SAM9X / AT91CAP9 watchdog" -+ depends on ARCH_AT91 -+ help -+ Watchdog timer embedded into AT91SAM9X and AT91CAP9 chips. This will -+ reboot your system when the timeout is reached. -+ - config WATCHDOG_DAVINCI - bool "TI Davinci" - depends on ARCH_DAVINCI - help - Add support for watchdog on the TI Davinci SoC. - -+ - config WATCHDOG_DW - bool "Synopsys DesignWare watchdog" - select RESET_CONTROLLER -diff --git a/drivers/watchdog/Makefile b/drivers/watchdog/Makefile -index 5fca4c368..245a5c84a 100644 ---- a/drivers/watchdog/Makefile -+++ b/drivers/watchdog/Makefile -@@ -1,4 +1,5 @@ - obj-$(CONFIG_WATCHDOG) += wd_core.o -+obj-$(CONFIG_WATCHDOG_AT91SAM9X) += at91sam9_wdt.o - obj-$(CONFIG_WATCHDOG_DAVINCI) += davinci_wdt.o - obj-$(CONFIG_WATCHDOG_OMAP) += omap_wdt.o - obj-$(CONFIG_WATCHDOG_MXS28) += im28wd.o -diff --git a/drivers/watchdog/at91sam9_wdt.c b/drivers/watchdog/at91sam9_wdt.c -new file mode 100644 -index 000000000..203d83aff ---- /dev/null -+++ b/drivers/watchdog/at91sam9_wdt.c -@@ -0,0 +1,131 @@ -+/* -+ * (c) 2012 Juergen Beisert -+ * -+ * 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. -+ * -+ * Note: this driver works for the i.MX28 SoC. It might work for the -+ * i.MX23 Soc as well, but is not tested yet. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "at91sam9_wdt.h" -+ -+struct at91sam9_wdt { -+ struct watchdog wdt; -+ void __iomem *base; -+}; -+ -+#define to_at91sam9_wdt(h) container_of(h, struct at91sam9_wdt, wdt) -+ -+#define wdt_read(at91wdt, field) \ -+ __raw_readl(at91wdt->base + field) -+#define wdt_write(at91wdt, field, val) \ -+ __raw_writel((val), at91wdt->base + field) -+ -+static void at91sam9_wdt_keep_alive(struct watchdog *wdt) -+{ -+ struct at91sam9_wdt *at91wdt = to_at91sam9_wdt(wdt); -+ -+ wdt_write(at91wdt, AT91_WDT_CR, AT91_WDT_KEY | AT91_WDT_WDRSTT); -+} -+ -+static int at91sam9_wdt_settimeout(struct watchdog *wdt, unsigned int timeout) -+{ -+ struct at91sam9_wdt *at91wdt = to_at91sam9_wdt(wdt); -+ unsigned int reg; -+ unsigned int mr; -+ -+ /* Check if disabled */ -+ mr = wdt_read(at91wdt, AT91_WDT_MR); -+ if (mr & AT91_WDT_WDDIS) { -+ pr_err("sorry, watchdog is disabled\n"); -+ return -EIO; -+ } -+ -+ if (!timeout) { -+ wdt_write(at91wdt, AT91_WDT_MR, AT91_WDT_WDDIS); -+ return 0; -+ } -+ -+ /* -+ * All counting occurs at SLOW_CLOCK / 128 = 256 Hz -+ * -+ * Since WDV is a 12-bit counter, the maximum period is -+ * 4096 / 256 = 16 seconds. -+ */ -+ reg = AT91_WDT_WDRSTEN /* causes watchdog reset */ -+ /* | AT91_WDT_WDRPROC causes processor reset only */ -+ | AT91_WDT_WDDBGHLT /* disabled in debug mode */ -+ | AT91_WDT_WDD /* restart at any time */ -+ | (timeout & AT91_WDT_WDV); /* timer value */ -+ wdt_write(at91wdt, AT91_WDT_MR, reg); -+ -+ return 0; -+} -+ -+static int at91sam9_wdt_probe(struct device_d *dev) -+{ -+ struct at91sam9_wdt *priv; -+ struct watchdog *wdt; -+ int ret; -+ unsigned int mr; -+ -+ priv = xzalloc(sizeof(struct at91sam9_wdt)); -+ priv->base = dev_request_mem_region(dev, 0); -+ wdt = &priv->wdt; -+ -+ wdt->set_timeout = at91sam9_wdt_settimeout; -+ wdt->keep_alive = at91sam9_wdt_keep_alive; -+ -+ /* Check if disabled */ -+ mr = wdt_read(priv, AT91_WDT_MR); -+ if (mr & AT91_WDT_WDDIS) { -+ dev_err(dev, "sorry, watchdog is disabled\n"); -+ ret = -EIO; -+ goto err; -+ } -+ -+ ret = watchdog_register(wdt); -+ if (ret != 0) -+ goto err; -+ -+ dev->priv = priv; -+ return 0; -+ -+err: -+ free(priv); -+ return ret; -+} -+ -+static void at91sam9_wdt_remove(struct device_d *dev) -+{ -+ struct at91sam9_wdt *priv= dev->priv; -+ watchdog_deregister(&priv->wdt); -+ free(priv); -+} -+ -+static struct driver_d at91sam9_wdt_driver = { -+ .name = "at91sam9_wdt", -+ .probe = at91sam9_wdt_probe, -+ .remove = at91sam9_wdt_remove, -+}; -+ -+static int at91sam9_wdt_init(void) -+{ -+ return platform_driver_register(&at91sam9_wdt_driver); -+} -+coredevice_initcall(at91sam9_wdt_init); -diff --git a/drivers/watchdog/at91sam9_wdt.h b/drivers/watchdog/at91sam9_wdt.h -new file mode 100644 -index 000000000..2b68c1a2a ---- /dev/null -+++ b/drivers/watchdog/at91sam9_wdt.h -@@ -0,0 +1,38 @@ -+/* -+ * drivers/watchdog/at91sam9_wdt.h -+ * -+ * Copyright (C) 2007 Andrew Victor -+ * Copyright (C) 2007 Atmel Corporation. -+ * -+ * Watchdog Timer (WDT) - System peripherals regsters. -+ * Based on AT91SAM9261 datasheet revision D. -+ * -+ * 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. -+ */ -+ -+#ifndef AT91_WDT_H -+#define AT91_WDT_H -+ -+#define AT91_WDT_CR 0x00 /* Watchdog Control Register */ -+#define AT91_WDT_WDRSTT (1 << 0) /* Restart */ -+#define AT91_WDT_KEY (0xa5 << 24) /* KEY Password */ -+ -+#define AT91_WDT_MR 0x04 /* Watchdog Mode Register */ -+#define AT91_WDT_WDV (0xfff << 0) /* Counter Value */ -+#define AT91_WDT_WDFIEN (1 << 12) /* Fault Interrupt Enable */ -+#define AT91_WDT_WDRSTEN (1 << 13) /* Reset Processor */ -+#define AT91_WDT_WDRPROC (1 << 14) /* Timer Restart */ -+#define AT91_WDT_WDDIS (1 << 15) /* Watchdog Disable */ -+#define AT91_WDT_WDD (0xfff << 16) /* Delta Value */ -+#define AT91_WDT_WDDBGHLT (1 << 28) /* Debug Halt */ -+#define AT91_WDT_WDIDLEHLT (1 << 29) /* Idle Halt */ -+ -+#define AT91_WDT_SR 0x08 /* Watchdog Status Register */ -+#define AT91_WDT_WDUNF (1 << 0) /* Watchdog Underflow */ -+#define AT91_WDT_WDERR (1 << 1) /* Watchdog Error */ -+ -+ -+#endif --- -2.12.0 - diff --git a/buildroot/board/telit/evk-pro3/patches/barebox/0003-at91sam9260-9g20-add-wathdog-support.patch b/buildroot/board/telit/evk-pro3/patches/barebox/0003-at91sam9260-9g20-add-wathdog-support.patch deleted file mode 100644 index 6f4efaba1eb..00000000000 --- a/buildroot/board/telit/evk-pro3/patches/barebox/0003-at91sam9260-9g20-add-wathdog-support.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 60110b93a5cbc6ec3d92035d9daf86a30a7fd791 Mon Sep 17 00:00:00 2001 -From: Jean-Christophe PLAGNIOL-VILLARD -Date: Wed, 14 Nov 2012 19:18:22 +0800 -Subject: [PATCH 3/4] at91sam9260/9g20: add wathdog support - -Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD -Signed-off-by: Fabio Porcedda ---- - arch/arm/mach-at91/at91sam9260_devices.c | 11 +++++++++++ - 1 file changed, 11 insertions(+) - -diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c -index 67c4ea860..51852a9a8 100644 ---- a/arch/arm/mach-at91/at91sam9260_devices.c -+++ b/arch/arm/mach-at91/at91sam9260_devices.c -@@ -400,6 +400,17 @@ void at91_add_device_mci(short mmc_id, struct atmel_mci_platform_data *data) - void at91_add_device_mci(short mmc_id, struct atmel_mci_platform_data *data) {} - #endif - -+#ifdef CONFIG_WATCHDOG_AT91SAM9X -+static int at91_add_device_watchdog(void) -+{ -+ add_generic_device("at91sam9_wdt", DEVICE_ID_SINGLE, NULL, -+ AT91_WDT + AT91_BASE_SYS, 16, IORESOURCE_MEM, NULL); -+ -+ return 0; -+} -+coredevice_initcall(at91_add_device_watchdog); -+#endif -+ - static int at91_fixup_device(void) - { - at91_rtt_irq_fixup(IOMEM(AT91SAM9260_BASE_RTT)); --- -2.12.0 - diff --git a/buildroot/board/telit/evk-pro3/patches/barebox/0004-at91sam9260-9g20-fix-wathdog-support.patch b/buildroot/board/telit/evk-pro3/patches/barebox/0004-at91sam9260-9g20-fix-wathdog-support.patch deleted file mode 100644 index edc1ea4d5b8..00000000000 --- a/buildroot/board/telit/evk-pro3/patches/barebox/0004-at91sam9260-9g20-fix-wathdog-support.patch +++ /dev/null @@ -1,26 +0,0 @@ -From d8231b1726a020733d87c2685ec1631403e050cf Mon Sep 17 00:00:00 2001 -From: Fabio Porcedda -Date: Thu, 17 Jan 2013 11:32:35 +0100 -Subject: [PATCH 4/4] at91sam9260/9g20: fix wathdog support - -Signed-off-by: Fabio Porcedda ---- - arch/arm/mach-at91/at91sam9260_devices.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/arm/mach-at91/at91sam9260_devices.c b/arch/arm/mach-at91/at91sam9260_devices.c -index 51852a9a8..20c8cac9d 100644 ---- a/arch/arm/mach-at91/at91sam9260_devices.c -+++ b/arch/arm/mach-at91/at91sam9260_devices.c -@@ -404,7 +404,7 @@ void at91_add_device_mci(short mmc_id, struct atmel_mci_platform_data *data) {} - static int at91_add_device_watchdog(void) - { - add_generic_device("at91sam9_wdt", DEVICE_ID_SINGLE, NULL, -- AT91_WDT + AT91_BASE_SYS, 16, IORESOURCE_MEM, NULL); -+ AT91_BASE_WDT, 16, IORESOURCE_MEM, NULL); - - return 0; - } --- -2.12.0 - diff --git a/buildroot/board/telit/evk-pro3/patches/linux/0001-kernel-add-support-for-gcc-5.patch b/buildroot/board/telit/evk-pro3/patches/linux/0001-kernel-add-support-for-gcc-5.patch deleted file mode 100644 index 3aba910f8b0..00000000000 --- a/buildroot/board/telit/evk-pro3/patches/linux/0001-kernel-add-support-for-gcc-5.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 71458cfc782eafe4b27656e078d379a34e472adf Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Mon, 13 Oct 2014 15:51:05 -0700 -Subject: [PATCH] kernel: add support for gcc 5 - -We're missing include/linux/compiler-gcc5.h which is required now -because gcc branched off to v5 in trunk. - -Just copy the relevant bits out of include/linux/compiler-gcc4.h, -no new code is added as of now. - -This fixes a build error when using gcc 5. - -Signed-off-by: Sasha Levin -Cc: -Signed-off-by: Andrew Morton -Signed-off-by: Linus Torvalds ---- - include/linux/compiler-gcc5.h | 66 +++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 66 insertions(+) - create mode 100644 include/linux/compiler-gcc5.h - -diff --git a/include/linux/compiler-gcc5.h b/include/linux/compiler-gcc5.h -new file mode 100644 -index 000000000000..cdd1cc202d51 ---- /dev/null -+++ b/include/linux/compiler-gcc5.h -@@ -0,0 +1,66 @@ -+#ifndef __LINUX_COMPILER_H -+#error "Please don't include directly, include instead." -+#endif -+ -+#define __used __attribute__((__used__)) -+#define __must_check __attribute__((warn_unused_result)) -+#define __compiler_offsetof(a, b) __builtin_offsetof(a, b) -+ -+/* Mark functions as cold. gcc will assume any path leading to a call -+ to them will be unlikely. This means a lot of manual unlikely()s -+ are unnecessary now for any paths leading to the usual suspects -+ like BUG(), printk(), panic() etc. [but let's keep them for now for -+ older compilers] -+ -+ Early snapshots of gcc 4.3 don't support this and we can't detect this -+ in the preprocessor, but we can live with this because they're unreleased. -+ Maketime probing would be overkill here. -+ -+ gcc also has a __attribute__((__hot__)) to move hot functions into -+ a special section, but I don't see any sense in this right now in -+ the kernel context */ -+#define __cold __attribute__((__cold__)) -+ -+#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) -+ -+#ifndef __CHECKER__ -+# define __compiletime_warning(message) __attribute__((warning(message))) -+# define __compiletime_error(message) __attribute__((error(message))) -+#endif /* __CHECKER__ */ -+ -+/* -+ * Mark a position in code as unreachable. This can be used to -+ * suppress control flow warnings after asm blocks that transfer -+ * control elsewhere. -+ * -+ * Early snapshots of gcc 4.5 don't support this and we can't detect -+ * this in the preprocessor, but we can live with this because they're -+ * unreleased. Really, we need to have autoconf for the kernel. -+ */ -+#define unreachable() __builtin_unreachable() -+ -+/* Mark a function definition as prohibited from being cloned. */ -+#define __noclone __attribute__((__noclone__)) -+ -+/* -+ * Tell the optimizer that something else uses this function or variable. -+ */ -+#define __visible __attribute__((externally_visible)) -+ -+/* -+ * GCC 'asm goto' miscompiles certain code sequences: -+ * -+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670 -+ * -+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek. -+ * Fixed in GCC 4.8.2 and later versions. -+ * -+ * (asm goto is automatically volatile - the naming reflects this.) -+ */ -+#define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0) -+ -+#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP -+#define __HAVE_BUILTIN_BSWAP32__ -+#define __HAVE_BUILTIN_BSWAP64__ -+#define __HAVE_BUILTIN_BSWAP16__ -+#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */ --- -2.12.2 - diff --git a/buildroot/board/telit/evk-pro3/patches/linux/0002-ARM-8158-1-LLVMLinux-use-static-inline-in-ARM-ftrace.patch b/buildroot/board/telit/evk-pro3/patches/linux/0002-ARM-8158-1-LLVMLinux-use-static-inline-in-ARM-ftrace.patch deleted file mode 100644 index 00de10988b7..00000000000 --- a/buildroot/board/telit/evk-pro3/patches/linux/0002-ARM-8158-1-LLVMLinux-use-static-inline-in-ARM-ftrace.patch +++ /dev/null @@ -1,52 +0,0 @@ -From aeea3592a13bf12861943e44fc48f1f270941f8d Mon Sep 17 00:00:00 2001 -From: Behan Webster -Date: Wed, 24 Sep 2014 01:06:46 +0100 -Subject: [PATCH] ARM: 8158/1: LLVMLinux: use static inline in ARM ftrace.h - -With compilers which follow the C99 standard (like modern versions of gcc and -clang), "extern inline" does the wrong thing (emits code for an externally -linkable version of the inline function). In this case using static inline -and removing the NULL version of return_address in return_address.c does -the right thing. - -Signed-off-by: Behan Webster -Reviewed-by: Mark Charlebois -Acked-by: Steven Rostedt -Signed-off-by: Russell King ---- - arch/arm/include/asm/ftrace.h | 2 +- - arch/arm/kernel/return_address.c | 5 ----- - 2 files changed, 1 insertion(+), 6 deletions(-) - -diff --git a/arch/arm/include/asm/ftrace.h b/arch/arm/include/asm/ftrace.h -index 39eb16b0066f..bfe2a2f5a644 100644 ---- a/arch/arm/include/asm/ftrace.h -+++ b/arch/arm/include/asm/ftrace.h -@@ -45,7 +45,7 @@ void *return_address(unsigned int); - - #else - --extern inline void *return_address(unsigned int level) -+static inline void *return_address(unsigned int level) - { - return NULL; - } -diff --git a/arch/arm/kernel/return_address.c b/arch/arm/kernel/return_address.c -index fafedd86885d..f6aa84d5b93c 100644 ---- a/arch/arm/kernel/return_address.c -+++ b/arch/arm/kernel/return_address.c -@@ -63,11 +63,6 @@ void *return_address(unsigned int level) - #warning "TODO: return_address should use unwind tables" - #endif - --void *return_address(unsigned int level) --{ -- return NULL; --} -- - #endif /* if defined(CONFIG_FRAME_POINTER) && !defined(CONFIG_ARM_UNWIND) / else */ - - EXPORT_SYMBOL_GPL(return_address); --- -2.12.2 - diff --git a/buildroot/board/telit/evk-pro3/readme.txt b/buildroot/board/telit/evk-pro3/readme.txt deleted file mode 100644 index ace9dd4c17a..00000000000 --- a/buildroot/board/telit/evk-pro3/readme.txt +++ /dev/null @@ -1,28 +0,0 @@ -Buildroot board support for Telit EVK-PRO3 with Telit GE863-PRO3 - -Official site: - http://www.telit.com/en/products.php?p_id=3&p_ac=show&p=10 - -Build images: - make telit_evk_pro3_defconfig - make - - images built: - - output/images/barebox.bin - - output/images/zImage - - output/images/rootfs.ubi - - -Flash built images: - The first time you need to bootstrap from Telit Official Release 221.07.1007, - at the U-Boot prompt type: - U-Boot> loadb - send buildroot/output/images/barebox.bin - U-Boot> go 0x20200000 - - flash updated images using barebox through tftp: - barebox:/ erase dev/self0; cp /mnt/tftp/barebox.bin /dev/self0 - barebox:/ erase /dev/nand0.kernel.bb; cp /mnt/tftp/zImage /dev/nand0.kernel.bb - barebox:/ erase /dev/nand0.rootfs.bb; cp /mnt/tftp/rootfs.ubi /dev/nand0.rootfs.bb - barebox:/ erase dev/env0 - barebox:/ reset diff --git a/buildroot/boot/at91bootstrap/Config.in b/buildroot/boot/at91bootstrap/Config.in index 57fdeda946a..0f6430fd8dd 100644 --- a/buildroot/boot/at91bootstrap/Config.in +++ b/buildroot/boot/at91bootstrap/Config.in @@ -1,12 +1,14 @@ config BR2_TARGET_AT91BOOTSTRAP - depends on BR2_arm926t bool "AT91 Bootstrap" + depends on BR2_arm926t help AT91Bootstrap is a first level bootloader for the Atmel AT91 devices. It integrates algorithms for: - - Device initialization such as clock configuration, PIO settings... + - 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... + - Physical media algorithm such as DataFlash, NandFlash, NOR + Flash... if BR2_TARGET_AT91BOOTSTRAP diff --git a/buildroot/boot/at91bootstrap/at91bootstrap.mk b/buildroot/boot/at91bootstrap/at91bootstrap.mk index f6550588d36..c68b56b6ec3 100644 --- a/buildroot/boot/at91bootstrap/at91bootstrap.mk +++ b/buildroot/boot/at91bootstrap/at91bootstrap.mk @@ -17,7 +17,7 @@ AT91BOOTSTRAP_INSTALL_IMAGES = YES AT91BOOTSTRAP_INSTALL_TARGET = NO define AT91BOOTSTRAP_EXTRACT_CMDS - $(UNZIP) -d $(BUILD_DIR) $(DL_DIR)/$(AT91BOOTSTRAP_SOURCE) + $(UNZIP) -d $(BUILD_DIR) $(AT91BOOTSTRAP_DL_DIR)/$(AT91BOOTSTRAP_SOURCE) mv $(BUILD_DIR)/Bootstrap-v$(AT91BOOTSTRAP_VERSION)/* $(@D) rmdir $(BUILD_DIR)/Bootstrap-v$(AT91BOOTSTRAP_VERSION) endef diff --git a/buildroot/boot/at91bootstrap3/Config.in b/buildroot/boot/at91bootstrap3/Config.in index 237deb929c2..614363c9a64 100644 --- a/buildroot/boot/at91bootstrap3/Config.in +++ b/buildroot/boot/at91bootstrap3/Config.in @@ -1,12 +1,14 @@ config BR2_TARGET_AT91BOOTSTRAP3 - depends on BR2_arm926t || BR2_cortex_a5 bool "AT91 Bootstrap 3" + depends on BR2_arm926t || BR2_cortex_a5 help AT91Bootstrap is a first level bootloader for the Atmel AT91 devices. It integrates algorithms for: - - Device initialization such as clock configuration, PIO settings... + - 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... + - Physical media algorithm such as DataFlash, NandFlash, NOR + Flash... if BR2_TARGET_AT91BOOTSTRAP3 @@ -20,8 +22,8 @@ config BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION 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. + This option allows Buildroot to get the AT91 Bootstrap 3 + source code from a Git repository. endchoice diff --git a/buildroot/boot/at91dataflashboot/Config.in b/buildroot/boot/at91dataflashboot/Config.in index 80b57a4ad04..4055f964107 100644 --- a/buildroot/boot/at91dataflashboot/Config.in +++ b/buildroot/boot/at91dataflashboot/Config.in @@ -1,3 +1,3 @@ config BR2_TARGET_AT91DATAFLASHBOOT - depends on BR2_arm926t bool "AT91 DataFlashBoot" + depends on BR2_arm926t diff --git a/buildroot/boot/barebox/barebox/Config.in b/buildroot/boot/barebox/barebox/Config.in index 0be26adf93f..958e294e40b 100644 --- a/buildroot/boot/barebox/barebox/Config.in +++ b/buildroot/boot/barebox/barebox/Config.in @@ -17,7 +17,6 @@ config BR2_TARGET_BAREBOX_BOARD_DEFCONFIG 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 diff --git a/buildroot/boot/grub2/grub2.mk b/buildroot/boot/grub2/grub2.mk index 492cddf1a51..35aea412876 100644 --- a/buildroot/boot/grub2/grub2.mk +++ b/buildroot/boot/grub2/grub2.mk @@ -53,8 +53,8 @@ GRUB2_CONF_ENV = \ $(HOST_CONFIGURE_OPTS) \ CPP="$(HOSTCC) -E" \ TARGET_CC="$(TARGET_CC)" \ - TARGET_CFLAGS="$(TARGET_CFLAGS) -fno-stack-protector" \ - TARGET_CPPFLAGS="$(TARGET_CPPFLAGS)" \ + TARGET_CFLAGS="$(TARGET_CFLAGS)" \ + TARGET_CPPFLAGS="$(TARGET_CPPFLAGS) -fno-stack-protector" \ TARGET_LDFLAGS="$(TARGET_LDFLAGS)" \ NM="$(TARGET_NM)" \ OBJCOPY="$(TARGET_OBJCOPY)" \ diff --git a/buildroot/boot/lpc32xxcdl/Config.in b/buildroot/boot/lpc32xxcdl/Config.in index ce7589c35c9..97137aa7d4e 100644 --- a/buildroot/boot/lpc32xxcdl/Config.in +++ b/buildroot/boot/lpc32xxcdl/Config.in @@ -1,6 +1,6 @@ config BR2_TARGET_LPC32XXCDL - depends on BR2_arm926t bool "LPC32XX CDL (kickstart and S1L)" + depends on BR2_arm926t if BR2_TARGET_LPC32XXCDL diff --git a/buildroot/boot/lpc32xxcdl/lpc32xxcdl.mk b/buildroot/boot/lpc32xxcdl/lpc32xxcdl.mk index 04c1c7f060e..30afed050b1 100644 --- a/buildroot/boot/lpc32xxcdl/lpc32xxcdl.mk +++ b/buildroot/boot/lpc32xxcdl/lpc32xxcdl.mk @@ -33,10 +33,10 @@ LPC32XXCDL_S1L_BURNER = nand/s1lapp_jtag endif LPC32XXCDL_BUILD_FLAGS = \ - CROSS_COMPILE=$(TARGET_CROSS) \ - NXPMCU_WINBASE=$(@D) \ - NXPMCU_SOFTWARE=$(@D) \ - BSP=$(BR2_TARGET_LPC32XXCDL_BOARDNAME) \ + CROSS_COMPILE=$(TARGET_CROSS) \ + NXPMCU_WINBASE=$(@D) \ + NXPMCU_SOFTWARE=$(@D) \ + BSP=$(BR2_TARGET_LPC32XXCDL_BOARDNAME) \ CSP=lpc32xx TOOL=gnu GEN=lpc LPC32XXCDL_BOARD_STARTUP_DIR = \ diff --git a/buildroot/boot/mxs-bootlets/Config.in b/buildroot/boot/mxs-bootlets/Config.in index 4bb07a06f51..b3e392afa86 100644 --- a/buildroot/boot/mxs-bootlets/Config.in +++ b/buildroot/boot/mxs-bootlets/Config.in @@ -24,8 +24,8 @@ config BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT endchoice config BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL_URL - depends on BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL string "URL of custom bootlets tarball" + depends on BR2_TARGET_MXS_BOOTLETS_CUSTOM_TARBALL if BR2_TARGET_MXS_BOOTLETS_CUSTOM_GIT @@ -43,16 +43,16 @@ choice Select which bootstream to generate config BR2_TARGET_MXS_BOOTLETS_BAREBOX - depends on BR2_TARGET_BAREBOX bool "Barebox Bootloader" + depends on BR2_TARGET_BAREBOX config BR2_TARGET_MXS_BOOTLETS_LINUX - depends on BR2_LINUX_KERNEL bool "Linux Kernel" + depends on BR2_LINUX_KERNEL config BR2_TARGET_MXS_BOOTLETS_UBOOT - depends on BR2_TARGET_UBOOT bool "U-boot bootloader" + depends on BR2_TARGET_UBOOT endchoice diff --git a/buildroot/boot/syslinux/0011-extlinux-Use-the-host-toolchain-to-build.patch b/buildroot/boot/syslinux/0011-extlinux-Use-the-host-toolchain-to-build.patch new file mode 100644 index 00000000000..62675cf6cc4 --- /dev/null +++ b/buildroot/boot/syslinux/0011-extlinux-Use-the-host-toolchain-to-build.patch @@ -0,0 +1,53 @@ +From 4df2e7c0ae84bfbdba0ed285c0664aa089b38b7e Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Sat, 30 Sep 2017 19:49:55 -0300 +Subject: [PATCH] extlinux: Use the host toolchain to build. + +It is meant to run on the host machine, hence must be built using the +host toolchain. + +Signed-off-by: Carlos Santos +--- + extlinux/Makefile | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +diff --git a/extlinux/Makefile b/extlinux/Makefile +index 02d1db51..5c4baa5a 100644 +--- a/extlinux/Makefile ++++ b/extlinux/Makefile +@@ -18,9 +18,9 @@ include $(MAKEDIR)/syslinux.mk + + OPTFLAGS = -g -Os + INCLUDES = -I$(SRC) -I$(objdir) -I$(SRC)/../libinstaller +-CFLAGS = $(GCCWARN) -Wno-sign-compare -D_FILE_OFFSET_BITS=64 \ ++CFLAGS = $(CFLAGS_FOR_BUILD) $(GCCWARN) -Wno-sign-compare -D_FILE_OFFSET_BITS=64 \ + $(OPTFLAGS) $(INCLUDES) +-LDFLAGS = ++LDFLAGS = $(LDFLAGS_FOR_BUILD) + + SRCS = main.c \ + mountinfo.c \ +@@ -52,16 +52,16 @@ spotless: clean + installer: extlinux + + extlinux: $(OBJS) +- $(CC) $(LDFLAGS) -o $@ $^ ++ $(CC_FOR_BUILD) $(LDFLAGS) -o $@ $^ + + strip: + $(STRIP) extlinux + + %.o: %.c +- $(CC) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $< ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -c -o $@ $< + %.i: %.c +- $(CC) $(UMAKEDEPS) $(CFLAGS) -E -o $@ $< ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -E -o $@ $< + %.s: %.c +- $(CC) $(UMAKEDEPS) $(CFLAGS) -S -o $@ $< ++ $(CC_FOR_BUILD) $(UMAKEDEPS) $(CFLAGS) -S -o $@ $< + + -include .*.d +-- +2.13.5 + diff --git a/buildroot/boot/syslinux/Config.in b/buildroot/boot/syslinux/Config.in index da035498de6..e969d53fd0c 100644 --- a/buildroot/boot/syslinux/Config.in +++ b/buildroot/boot/syslinux/Config.in @@ -48,7 +48,6 @@ config BR2_TARGET_SYSLINUX_EFI help Install the 'efi' image, to boot from an EFI environment. - if BR2_TARGET_SYSLINUX_LEGACY_BIOS config BR2_TARGET_SYSLINUX_C32 diff --git a/buildroot/boot/syslinux/syslinux.mk b/buildroot/boot/syslinux/syslinux.mk index 13496414dd1..67bc69254e1 100644 --- a/buildroot/boot/syslinux/syslinux.mk +++ b/buildroot/boot/syslinux/syslinux.mk @@ -59,7 +59,7 @@ define SYSLINUX_BUILD_CMDS CC_FOR_BUILD="$(HOSTCC)" \ CFLAGS_FOR_BUILD="$(HOST_CFLAGS)" \ LDFLAGS_FOR_BUILD="$(HOST_LDFLAGS)" \ - $(SYSLINUX_EFI_ARGS) -C $(@D) $(SYSLINUX_TARGET) + $(SYSLINUX_EFI_ARGS) -C $(@D) $(SYSLINUX_TARGET) endef # While the actual bootloader is compiled for the target, several diff --git a/buildroot/boot/uboot/Config.in b/buildroot/boot/uboot/Config.in index 264f3437674..95c17e39865 100644 --- a/buildroot/boot/uboot/Config.in +++ b/buildroot/boot/uboot/Config.in @@ -6,19 +6,20 @@ config BR2_TARGET_UBOOT 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_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. - 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. + 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 @@ -27,9 +28,9 @@ 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. + 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 @@ -38,7 +39,7 @@ choice Select the specific U-Boot version you want to use config BR2_TARGET_UBOOT_LATEST_VERSION - bool "2018.01" + bool "2018.03" config BR2_TARGET_UBOOT_CUSTOM_VERSION bool "Custom version" @@ -79,14 +80,14 @@ config BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION default BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION \ if BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION != "" # legacy help - Revision to use in the typical format used by Git/Mercurial/Subversion - E.G. a sha id, a tag, branch, .. + 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 "2018.01" if BR2_TARGET_UBOOT_LATEST_VERSION + default "2018.03" 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 @@ -199,23 +200,19 @@ config BR2_TARGET_UBOOT_FORMAT_NAND_BIN bool "u-boot-nand.bin" config BR2_TARGET_UBOOT_FORMAT_KWB - depends on BR2_arm bool "u-boot.kwb (Marvell)" - -config BR2_TARGET_UBOOT_FORMAT_LDR - depends on BR2_bfin - bool "u-boot.ldr" + depends on BR2_arm config BR2_TARGET_UBOOT_FORMAT_ELF bool "u-boot.elf" config BR2_TARGET_UBOOT_FORMAT_SB - depends on BR2_arm bool "u-boot.sb (Freescale i.MX28)" + depends on BR2_arm config BR2_TARGET_UBOOT_FORMAT_SD - depends on BR2_arm 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. @@ -226,28 +223,28 @@ config BR2_TARGET_UBOOT_FORMAT_SD See doc/README.mxs (or doc/README.mx28_common before 2013.07) config BR2_TARGET_UBOOT_FORMAT_NAND - depends on BR2_arm 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. + 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. + 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'. + 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. + 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) @@ -295,7 +292,8 @@ config BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME 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. + the default names, one or more custom names can be listed + here. Use space to separate multiple names. Example: u-boot_magic.bin @@ -303,10 +301,10 @@ config BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME 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 - bool "produce a .ift signed image (OMAP)" help Use gpsign to produce an image of u-boot.bin signed with a Configuration Header for booting on OMAP processors. diff --git a/buildroot/boot/uboot/uboot.hash b/buildroot/boot/uboot/uboot.hash index 9425df3f17d..788c1696f83 100644 --- a/buildroot/boot/uboot/uboot.hash +++ b/buildroot/boot/uboot/uboot.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 938f597394b33e82e5af8c98bd5ea1a238f61892aabef36384adbf7ca5b52dda u-boot-2018.01.tar.bz2 +sha256 7e7477534409d5368eb1371ffde6820f0f79780a1a1f676161c48442cb303dfd u-boot-2018.03.tar.bz2 diff --git a/buildroot/boot/uboot/uboot.mk b/buildroot/boot/uboot/uboot.mk index 5da339850dd..03bd7ea743e 100644 --- a/buildroot/boot/uboot/uboot.mk +++ b/buildroot/boot/uboot/uboot.mk @@ -61,10 +61,6 @@ UBOOT_BINS += u-boot.ais UBOOT_MAKE_TARGET += u-boot.ais endif -ifeq ($(BR2_TARGET_UBOOT_FORMAT_LDR),y) -UBOOT_BINS += u-boot.ldr -endif - ifeq ($(BR2_TARGET_UBOOT_FORMAT_NAND_BIN),y) UBOOT_BINS += u-boot-nand.bin endif @@ -188,10 +184,22 @@ define UBOOT_APPLY_LOCAL_PATCHES endef UBOOT_POST_PATCH_HOOKS += UBOOT_APPLY_LOCAL_PATCHES +# This is equivalent to upstream commit +# http://git.denx.de/?p=u-boot.git;a=commitdiff;h=e0d20dc1521e74b82dbd69be53a048847798a90a. It +# fixes a build failure when libfdt-devel is installed system-wide. +# This only works when scripts/dtc/libfdt exists (E.G. versions containing +# http://git.denx.de/?p=u-boot.git;a=commitdiff;h=c0e032e0090d6541549b19cc47e06ccd1f302893) +define UBOOT_FIXUP_LIBFDT_INCLUDE + if [ -d $(@D)/scripts/dtc/libfdt ]; then \ + $(SED) 's%-I$$(srctree)/lib/libfdt%-I$$(srctree)/scripts/dtc/libfdt%' $(@D)/tools/Makefile; \ + fi +endef +UBOOT_POST_PATCH_HOOKS += UBOOT_FIXUP_LIBFDT_INCLUDE + ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY),y) define UBOOT_CONFIGURE_CMDS - $(TARGET_CONFIGURE_OPTS) \ - $(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \ + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \ $(UBOOT_BOARD_NAME)_config endef else ifeq ($(BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG),y) @@ -218,16 +226,16 @@ define UBOOT_BUILD_CMDS $(if $(UBOOT_CUSTOM_DTS_PATH), cp -f $(UBOOT_CUSTOM_DTS_PATH) $(@D)/arch/$(UBOOT_ARCH)/dts/ ) - $(TARGET_CONFIGURE_OPTS) \ - $(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \ + $(TARGET_CONFIGURE_OPTS) \ + $(MAKE) -C $(@D) $(UBOOT_MAKE_OPTS) \ $(UBOOT_MAKE_TARGET) $(if $(BR2_TARGET_UBOOT_FORMAT_SD), $(@D)/tools/mxsboot sd $(@D)/u-boot.sb $(@D)/u-boot.sd) $(if $(BR2_TARGET_UBOOT_FORMAT_NAND), $(@D)/tools/mxsboot \ - -w $(BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE) \ - -o $(BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE) \ - -e $(BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE) \ + -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 diff --git a/buildroot/configs/amarula_vyasa_rk3288_defconfig b/buildroot/configs/amarula_vyasa_rk3288_defconfig new file mode 100644 index 00000000000..ccaab9551e9 --- /dev/null +++ b/buildroot/configs/amarula_vyasa_rk3288_defconfig @@ -0,0 +1,46 @@ +# Architecture +BR2_arm=y +BR2_cortex_a17=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 4.14 series +BR2_KERNEL_HEADERS_4_14=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="vyasa-rk3288" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl-dtb.bin tpl/u-boot-tpl.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,openedev,linux-openedev,d127129e85a020879f334154300ddd3f7ec21c1e)/linux-d127129e85a020879f334154300ddd3f7ec21c1e.tar.gz" +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/buildroot/configs/arcturus_ucls1012a_defconfig b/buildroot/configs/arcturus_ucls1012a_defconfig new file mode 100644 index 00000000000..9d1da8c2cc5 --- /dev/null +++ b/buildroot/configs/arcturus_ucls1012a_defconfig @@ -0,0 +1,36 @@ +# Architecture +BR2_aarch64=y + +# Linux headers same as kernel, a 4.1 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y + +# System settings +BR2_TARGET_GENERIC_HOSTNAME="ucls1012a" +BR2_TARGET_GENERIC_ISSUE="Welcome to uCLS1012A-SOM" +BR2_SYSTEM_DHCP="eth0" +BR2_ROOTFS_OVERLAY="board/arcturus/aarch64-ucls1012a/rootfs_overlay" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/arcturus/aarch64-ucls1012a/post-image.sh" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,ArcturusNetworks,uCLS1012A-kernel,v0.2.1811)/linux-v0.2.1811.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="ucls1012a" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="arcturus/arc-ucls1012a" + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y + +# U-boot +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/ArcturusNetworks/uCLS1012A-uboot.git" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="v0.2.1811" +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/buildroot/configs/asus_tinker_rk3288_defconfig b/buildroot/configs/asus_tinker_rk3288_defconfig new file mode 100644 index 00000000000..22e9bcd8170 --- /dev/null +++ b/buildroot/configs/asus_tinker_rk3288_defconfig @@ -0,0 +1,45 @@ +# Architecture +BR2_arm=y +BR2_cortex_a17=y +BR2_ARM_FPU_NEON_VFPV4=y + +# Linux headers same as kernel, a 4.12 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_12=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="tinker-rk3288" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_NEEDS_OPENSSL=y +BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y +BR2_TARGET_UBOOT_FORMAT_DTB_BIN=y +BR2_TARGET_UBOOT_SPL=y +BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl-dtb.bin" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.12" +BR2_LINUX_KERNEL_DEFCONFIG="multi_v7" +BR2_LINUX_KERNEL_UIMAGE=y +BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x02000000" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="rk3288-tinker" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_GENERIC_HOSTNAME="tinker-rk3288" +BR2_TARGET_GENERIC_ISSUE="Welcome to TINKER RK3288!" +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="512M" +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/asus/tinker/genimage.cfg" +BR2_ROOTFS_POST_BUILD_SCRIPT="board/asus/tinker/post-build.sh" diff --git a/buildroot/configs/at91sam9260eknf_defconfig b/buildroot/configs/at91sam9260eknf_defconfig index d91fcb0549d..807d0294e8b 100644 --- a/buildroot/configs/at91sam9260eknf_defconfig +++ b/buildroot/configs/at91sam9260eknf_defconfig @@ -21,7 +21,7 @@ BR2_TARGET_ROOTFS_UBI=y BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9260eknf_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y diff --git a/buildroot/configs/at91sam9g20dfc_defconfig b/buildroot/configs/at91sam9g20dfc_defconfig index 15a8d879b7a..7511c96fe9c 100644 --- a/buildroot/configs/at91sam9g20dfc_defconfig +++ b/buildroot/configs/at91sam9g20dfc_defconfig @@ -15,12 +15,19 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g20ek" # Filesystem BR2_TARGET_ROOTFS_TAR=y +BR2_TARGET_ROOTFS_UBI=y +BR2_TARGET_ROOTFS_UBI_PEBSIZE=0x20000 +BR2_TARGET_ROOTFS_UBI_SUBSIZE=512 +BR2_TARGET_ROOTFS_UBIFS=y +BR2_TARGET_ROOTFS_UBIFS_LEBSIZE=0x1f800 +BR2_TARGET_ROOTFS_UBIFS_MINIOSIZE=0x800 +BR2_TARGET_ROOTFS_UBIFS_MAXLEBCNT=2047 # Bootloaders BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9g20eknf_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y diff --git a/buildroot/configs/at91sam9g45m10ek_defconfig b/buildroot/configs/at91sam9g45m10ek_defconfig index 2bf7179980c..c598527f96c 100644 --- a/buildroot/configs/at91sam9g45m10ek_defconfig +++ b/buildroot/configs/at91sam9g45m10ek_defconfig @@ -22,7 +22,7 @@ BR2_TARGET_ROOTFS_UBI=y BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9m10g45eknf_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y diff --git a/buildroot/configs/at91sam9rlek_defconfig b/buildroot/configs/at91sam9rlek_defconfig index bc1be16421a..ba3a94c08c5 100644 --- a/buildroot/configs/at91sam9rlek_defconfig +++ b/buildroot/configs/at91sam9rlek_defconfig @@ -22,7 +22,7 @@ BR2_TARGET_ROOTFS_UBI=y BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9rleknf_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y diff --git a/buildroot/configs/at91sam9x5ek_defconfig b/buildroot/configs/at91sam9x5ek_defconfig index a5362303453..9dd8fbb3677 100644 --- a/buildroot/configs/at91sam9x5ek_defconfig +++ b/buildroot/configs/at91sam9x5ek_defconfig @@ -3,9 +3,8 @@ BR2_arm926t=y # Linux headers same as kernel, a 4.4 series BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" @@ -16,13 +15,13 @@ BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eknf_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_nandflash" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_PACKAGE_HOST_SAM_BA=y diff --git a/buildroot/configs/at91sam9x5ek_dev_defconfig b/buildroot/configs/at91sam9x5ek_dev_defconfig index 3af4ba74e80..dee365a56cb 100644 --- a/buildroot/configs/at91sam9x5ek_dev_defconfig +++ b/buildroot/configs/at91sam9x5ek_dev_defconfig @@ -17,9 +17,8 @@ BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y # Kernel BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" @@ -86,13 +85,13 @@ BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eknf_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_nandflash" BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/at91sam9x5ek_mmc_defconfig b/buildroot/configs/at91sam9x5ek_mmc_defconfig index 6964d5814e7..8777606fe14 100644 --- a/buildroot/configs/at91sam9x5ek_mmc_defconfig +++ b/buildroot/configs/at91sam9x5ek_mmc_defconfig @@ -11,9 +11,8 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/at91sam9x5ek_mmc/genimage.cfg" # Kernel BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" @@ -26,13 +25,13 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eksd_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_mmc" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_ENVIMAGE=y diff --git a/buildroot/configs/at91sam9x5ek_mmc_dev_defconfig b/buildroot/configs/at91sam9x5ek_mmc_dev_defconfig index 931cf7dec80..a8fdad72b7a 100644 --- a/buildroot/configs/at91sam9x5ek_mmc_dev_defconfig +++ b/buildroot/configs/at91sam9x5ek_mmc_dev_defconfig @@ -20,9 +20,8 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/at91sam9x5ek_mmc/genimage.cfg" # Kernel BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91sam9g15ek at91sam9g25ek at91sam9g35ek at91sam9x25ek at91sam9x35ek" @@ -88,13 +87,13 @@ BR2_TARGET_ROOTFS_EXT2_SIZE="120M" BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="at91sam9x5eksd_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="at91sam9x5ek_mmc" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_ENVIMAGE=y diff --git a/buildroot/configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig b/buildroot/configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig index 37521292024..f3cb11ce70f 100644 --- a/buildroot/configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig +++ b/buildroot/configs/atmel_sama5d27_som1_ek_mmc_dev_defconfig @@ -11,9 +11,8 @@ 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_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d27_som1_ek at91-sama5d27_som1_ek_pda4 at91-sama5d27_som1_ek_pda7 at91-sama5d27_som1_ek_pda7b" @@ -72,13 +71,13 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d27_som1_eksd_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d27_som1_ek_mmc" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_PACKAGE_HOST_DOSFSTOOLS=y diff --git a/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig b/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig index 8889978deb6..57ced6940f4 100644 --- a/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig +++ b/buildroot/configs/atmel_sama5d2_xplained_mmc_defconfig @@ -7,9 +7,8 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d2_xplained_mmc/genimage.cfg" BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d2_xplained at91-sama5d2_xplained_pda4 at91-sama5d2_xplained_pda7 at91-sama5d2_xplained_pda7b" @@ -18,13 +17,13 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d2_xplainedsd_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d2_xplained_mmc" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_PACKAGE_HOST_DOSFSTOOLS=y diff --git a/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig b/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig index 23a2582086f..78d082f9cba 100644 --- a/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig +++ b/buildroot/configs/atmel_sama5d2_xplained_mmc_dev_defconfig @@ -23,9 +23,8 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d2_xplained_mmc/genimage.cfg" # Kernel BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d2_xplained at91-sama5d2_xplained_pda4 at91-sama5d2_xplained_pda7 at91-sama5d2_xplained_pda7b" @@ -90,13 +89,13 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d2_xplainedsd_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d2_xplained_mmc" BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/atmel_sama5d3_xplained_defconfig b/buildroot/configs/atmel_sama5d3_xplained_defconfig index b65c389acc6..b8b33c5e786 100644 --- a/buildroot/configs/atmel_sama5d3_xplained_defconfig +++ b/buildroot/configs/atmel_sama5d3_xplained_defconfig @@ -4,9 +4,8 @@ BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained at91-sama5d3_xplained_pda4 at91-sama5d3_xplained_pda7 at91-sama5d3_xplained_pda7b" @@ -17,13 +16,13 @@ BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainednf_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_nandflash" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_PACKAGE_HOST_SAM_BA=y diff --git a/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig b/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig index f403e2308da..91ded5bfeb6 100644 --- a/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig +++ b/buildroot/configs/atmel_sama5d3_xplained_dev_defconfig @@ -19,9 +19,8 @@ BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y # Kernel BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained at91-sama5d3_xplained_pda4 at91-sama5d3_xplained_pda7 at91-sama5d3_xplained_pda7b" @@ -88,13 +87,13 @@ BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainednf_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_nandflash" BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig b/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig index 4ddb17149a7..8fd9a7c2f83 100644 --- a/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig +++ b/buildroot/configs/atmel_sama5d3_xplained_mmc_defconfig @@ -6,9 +6,8 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d3_xplained_mmc/genimage.cfg" BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained at91-sama5d3_xplained_pda4 at91-sama5d3_xplained_pda7 at91-sama5d3_xplained_pda7b" @@ -17,13 +16,13 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainedsd_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_mmc" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_PACKAGE_HOST_DOSFSTOOLS=y diff --git a/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig b/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig index a3351482cfe..20dc8929ab4 100644 --- a/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig +++ b/buildroot/configs/atmel_sama5d3_xplained_mmc_dev_defconfig @@ -22,9 +22,8 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d3_xplained_mmc/genimage.cfg" # Kernel BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d3_xplained at91-sama5d3_xplained_pda4 at91-sama5d3_xplained_pda7 at91-sama5d3_xplained_pda7b" @@ -89,13 +88,13 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3_xplainedsd_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3_xplained_mmc" BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/atmel_sama5d3xek_defconfig b/buildroot/configs/atmel_sama5d3xek_defconfig index c57076c9f99..95deb6f232c 100644 --- a/buildroot/configs/atmel_sama5d3xek_defconfig +++ b/buildroot/configs/atmel_sama5d3xek_defconfig @@ -5,13 +5,12 @@ BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y # Toolchain -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y # Kernel BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.5" +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" @@ -26,14 +25,15 @@ BR2_TARGET_ROOTFS_UBI_SUBSIZE=2048 BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.7" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d3xeknf_uboot" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.5" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d3xek_nandflash" +BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_SPL=y # Host packages diff --git a/buildroot/configs/atmel_sama5d4_xplained_defconfig b/buildroot/configs/atmel_sama5d4_xplained_defconfig index feedf1f5a61..522f7fc9d8c 100644 --- a/buildroot/configs/atmel_sama5d4_xplained_defconfig +++ b/buildroot/configs/atmel_sama5d4_xplained_defconfig @@ -5,9 +5,8 @@ BR2_ARM_ENABLE_VFP=y BR2_ARM_INSTRUCTIONS_THUMB2=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained at91-sama5d4_xplained_hdmi at91-sama5d4_xplained_pda4 at91-sama5d4_xplained_pda7 at91-sama5d4_xplained_pda7b" @@ -21,13 +20,13 @@ BR2_TARGET_ROOTFS_UBI_SUBSIZE=0 BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainednf_uboot_secure" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_nandflash" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_PACKAGE_HOST_SAM_BA=y diff --git a/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig b/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig index 7ebfde173c0..69a71eb51e2 100644 --- a/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig +++ b/buildroot/configs/atmel_sama5d4_xplained_dev_defconfig @@ -20,9 +20,8 @@ BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y # Kernel BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained at91-sama5d4_xplained_hdmi at91-sama5d4_xplained_pda4 at91-sama5d4_xplained_pda7 at91-sama5d4_xplained_pda7b" @@ -92,13 +91,13 @@ BR2_TARGET_ROOTFS_UBI_SUBSIZE=0 BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainednf_uboot_secure" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_nandflash" BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig b/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig index b8b21e777ce..f69acb288aa 100644 --- a/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig +++ b/buildroot/configs/atmel_sama5d4_xplained_mmc_defconfig @@ -7,9 +7,8 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d4_xplained_mmc/genimage.cfg" BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained at91-sama5d4_xplained_hdmi at91-sama5d4_xplained_pda4 at91-sama5d4_xplained_pda7 at91-sama5d4_xplained_pda7b" @@ -18,13 +17,13 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainedsd_uboot_secure" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_mmc" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_PACKAGE_HOST_DOSFSTOOLS=y diff --git a/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig b/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig index c31f15a1ee1..60692d98cb5 100644 --- a/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig +++ b/buildroot/configs/atmel_sama5d4_xplained_mmc_dev_defconfig @@ -23,9 +23,8 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/atmel/sama5d4_xplained_mmc/genimage.cfg" # Kernel BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/linux4sam/linux-at91.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,linux4sam,linux-at91,linux4sam_5.8)/linux-linux4sam_5.8.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="sama5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-sama5d4_xplained at91-sama5d4_xplained_hdmi at91-sama5d4_xplained_pda4 at91-sama5d4_xplained_pda7 at91-sama5d4_xplained_pda7b" @@ -90,13 +89,13 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_AT91BOOTSTRAP3=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git" -BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.9" +BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.10" BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="sama5d4_xplainedsd_uboot_secure" BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/linux4sam/u-boot-at91.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.7" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="linux4sam_5.8" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="sama5d4_xplained_mmc" BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/bananapro_defconfig b/buildroot/configs/bananapro_defconfig index 5a71d757e46..b4141e3608a 100644 --- a/buildroot/configs/bananapro_defconfig +++ b/buildroot/configs/bananapro_defconfig @@ -22,7 +22,7 @@ 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="4.14.11" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.32" BR2_LINUX_KERNEL_USE_DEFCONFIG=y BR2_LINUX_KERNEL_DEFCONFIG="sunxi" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/lemaker/bananapro/linux-wifi.fragment" @@ -39,7 +39,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.03" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="Bananapro" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y diff --git a/buildroot/configs/beaglebone_defconfig b/buildroot/configs/beaglebone_defconfig index 611b694137e..80b271475e1 100644 --- a/buildroot/configs/beaglebone_defconfig +++ b/buildroot/configs/beaglebone_defconfig @@ -1,13 +1,13 @@ BR2_arm=y BR2_cortex_a8=y BR2_GLOBAL_PATCH_DIR="board/beaglebone/patches" -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y BR2_TARGET_GENERIC_GETTY_PORT="ttyO0" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/beaglebone/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_GIT=y BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://git.ti.com/processor-sdk/processor-sdk-linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="f9f6f0db2d5e4f9d2ff46eb31a5a05276a92ed7d" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="a75d8e93056181d512f6c818e8627bd4554aaf92" BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-evm am335x-bone am335x-boneblack am335x-bonegreen am335x-evmsk" @@ -16,13 +16,11 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="am335x_evm" BR2_TARGET_UBOOT_NEEDS_DTC=y # BR2_TARGET_UBOOT_FORMAT_BIN is not set BR2_TARGET_UBOOT_FORMAT_IMG=y -BR2_TARGET_UBOOT_FORMAT_CUSTOM=y -BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="spl/u-boot-spl.bin" BR2_TARGET_UBOOT_SPL=y BR2_TARGET_UBOOT_SPL_NAME="MLO" BR2_PACKAGE_HOST_DOSFSTOOLS=y diff --git a/buildroot/configs/chromebook_snow_defconfig b/buildroot/configs/chromebook_snow_defconfig index 70cd42bb756..5558c101d64 100644 --- a/buildroot/configs/chromebook_snow_defconfig +++ b/buildroot/configs/chromebook_snow_defconfig @@ -1,16 +1,16 @@ BR2_arm=y BR2_cortex_a15=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_6=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y BR2_TARGET_GENERIC_GETTY_PORT="tty1" BR2_TARGET_GENERIC_GETTY_TERM="linux" BR2_ROOTFS_POST_BUILD_SCRIPT="board/chromebook/snow/sign.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/chromebook/snow/mksd.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.6.3" -BR2_LINUX_KERNEL_PATCH="board/chromebook/snow/linux-4.6-dts-tpm.patch" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" +BR2_LINUX_KERNEL_PATCH="board/chromebook/snow/linux-4.15-dts-tpm.patch" BR2_LINUX_KERNEL_DEFCONFIG="exynos" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/chromebook/snow/linux-4.6.fragment" +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 diff --git a/buildroot/configs/ci20_defconfig b/buildroot/configs/ci20_defconfig index f28dd4da104..6e860b1e7e1 100644 --- a/buildroot/configs/ci20_defconfig +++ b/buildroot/configs/ci20_defconfig @@ -15,9 +15,8 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/ci20/genimage.cfg" # kernel BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/MIPS/CI20_linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="7dff33297116643485ca37141d804eddd793e834" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,MIPS,CI20_linux,7dff33297116643485ca37141d804eddd793e834)/linux-7dff33297116643485ca37141d804eddd793e834.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="ci20" BR2_LINUX_KERNEL_INSTALL_TARGET=y diff --git a/buildroot/configs/ci40_defconfig b/buildroot/configs/ci40_defconfig deleted file mode 100644 index 2ea3afe47df..00000000000 --- a/buildroot/configs/ci40_defconfig +++ /dev/null @@ -1,48 +0,0 @@ -# architecture -BR2_mipsel=y -BR2_mips_32r2=y - -# linux header same as custom kernel ie 4.4.x -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y - -# kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL=y -BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,CreatorDev,linux,openwrt-4.4.14)/linux-openwrt-4.4.14.tar.gz" -BR2_LINUX_KERNEL_DEFCONFIG="pistachio" -BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM=y -# vmlinux.gz.itb image includes img/pistachio_marduk device tree -BR2_LINUX_KERNEL_IMAGE_TARGET_NAME="vmlinux.gz.itb" - -# bootloader flash support -BR2_PACKAGE_MTD=y - -# wireless firmware -BR2_PACKAGE_UCCP420WLAN=y - -# wireless package -BR2_PACKAGE_WIRELESS_TOOLS=y -BR2_PACKAGE_WPA_SUPPLICANT=y -BR2_PACKAGE_WPA_SUPPLICANT_PASSPHRASE=y - -# bootloader -BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y -BR2_TARGET_UBOOT_BOARD_DEFCONFIG="pistachio_marduk" -BR2_TARGET_UBOOT_CUSTOM_TARBALL=y -BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,CreatorDev,u-boot,v1.0.5)/u-boot-CreatorDev-v1.0.5.tar.gz" -BR2_TARGET_UBOOT_FORMAT_CUSTOM=y -BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-pistachio_marduk-2015.10-v1.0.5.img" - -# fitimage / image generation -BR2_PACKAGE_HOST_UBOOT_TOOLS=y -BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y -BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SIGNATURE_SUPPORT=y -BR2_ROOTFS_POST_BUILD_SCRIPT="board/ci40/post-build.sh" - -# image generation -BR2_TARGET_ROOTFS_EXT2=y -BR2_TARGET_ROOTFS_EXT2_4=y -BR2_PACKAGE_HOST_GENIMAGE=y -BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/ci40/genimage.cfg" diff --git a/buildroot/configs/firefly_rk3288_defconfig b/buildroot/configs/firefly_rk3288_defconfig deleted file mode 100644 index 017a7ee6d74..00000000000 --- a/buildroot/configs/firefly_rk3288_defconfig +++ /dev/null @@ -1,32 +0,0 @@ -BR2_arm=y -BR2_cortex_a17=y -BR2_ARM_FPU_NEON_VFPV4=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y -BR2_TARGET_GENERIC_HOSTNAME="firefly-rk3288" -BR2_TARGET_GENERIC_ISSUE="Welcome to FIREFLY RK3288!" -BR2_ROOTFS_POST_BUILD_SCRIPT="board/firefly/firefly-rk3288/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/firefly/firefly-rk3288/post-image.sh" -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/mmind/linux-rockchip.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="ccb89e9b5657b4911c16d08e1581121222ee12c4" -BR2_LINUX_KERNEL_DEFCONFIG="rk3288_veyron" -BR2_LINUX_KERNEL_UIMAGE=y -BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x02000000" -BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="rk3288-firefly" -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="2016.01" -BR2_TARGET_UBOOT_BOARD_DEFCONFIG="firefly-rk3288" -BR2_TARGET_UBOOT_NEEDS_DTC=y -BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y -BR2_TARGET_UBOOT_SPL=y -BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl-dtb.bin" -BR2_PACKAGE_HOST_GENIMAGE=y -BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/buildroot/configs/firefly_rk3288_demo_defconfig b/buildroot/configs/firefly_rk3288_demo_defconfig deleted file mode 100644 index d394ede30ed..00000000000 --- a/buildroot/configs/firefly_rk3288_demo_defconfig +++ /dev/null @@ -1,40 +0,0 @@ -BR2_arm=y -BR2_cortex_a17=y -BR2_ARM_FPU_NEON_VFPV4=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y -BR2_TOOLCHAIN_BUILDROOT_GLIBC=y -BR2_TOOLCHAIN_BUILDROOT_CXX=y -BR2_TARGET_GENERIC_HOSTNAME="firefly-rk3288" -BR2_TARGET_GENERIC_ISSUE="Welcome to FIREFLY RK3288!" -BR2_ROOTFS_POST_BUILD_SCRIPT="board/firefly/firefly-rk3288/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/firefly/firefly-rk3288/post-image.sh" -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/mmind/linux-rockchip.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="ccb89e9b5657b4911c16d08e1581121222ee12c4" -BR2_LINUX_KERNEL_DEFCONFIG="rk3288_veyron" -BR2_LINUX_KERNEL_UIMAGE=y -BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x02000000" -BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="rk3288-firefly" -BR2_LINUX_KERNEL_INSTALL_TARGET=y -BR2_PACKAGE_QT5=y -BR2_PACKAGE_QT5BASE_EXAMPLES=y -BR2_PACKAGE_QT5BASE_GUI=y -BR2_PACKAGE_QT5BASE_EGLFS=y -BR2_PACKAGE_MALI_T76X=y -BR2_TARGET_ROOTFS_EXT2=y -BR2_TARGET_ROOTFS_EXT2_4=y -BR2_TARGET_ROOTFS_EXT2_SIZE="250M" -# BR2_TARGET_ROOTFS_TAR is not set -BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y -BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.01" -BR2_TARGET_UBOOT_BOARD_DEFCONFIG="firefly-rk3288" -BR2_TARGET_UBOOT_NEEDS_DTC=y -BR2_TARGET_UBOOT_FORMAT_DTB_IMG=y -BR2_TARGET_UBOOT_SPL=y -BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl-dtb.bin" -BR2_PACKAGE_HOST_GENIMAGE=y -BR2_PACKAGE_HOST_UBOOT_TOOLS=y diff --git a/buildroot/configs/freescale_imx31_3stack_defconfig b/buildroot/configs/freescale_imx31_3stack_defconfig deleted file mode 100644 index 025f93f6a66..00000000000 --- a/buildroot/configs/freescale_imx31_3stack_defconfig +++ /dev/null @@ -1,20 +0,0 @@ -# architecture -BR2_arm=y -BR2_arm1136jf_s=y -BR2_ARM_EABIHF=y - -# Linux headers same as kernel, a 4.9 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y - -# system -BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" - -# kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" -BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/freescale/imx31_3stack/linux.fragment" -BR2_TARGET_ROOTFS_CPIO_GZIP=y -BR2_TARGET_ROOTFS_INITRAMFS=y diff --git a/buildroot/configs/freescale_imx6dlsabreauto_defconfig b/buildroot/configs/freescale_imx6dlsabreauto_defconfig index 19c1cc286a0..55db461f441 100644 --- a/buildroot/configs/freescale_imx6dlsabreauto_defconfig +++ b/buildroot/configs/freescale_imx6dlsabreauto_defconfig @@ -40,3 +40,4 @@ BR2_TARGET_UBOOT_FORMAT_IMX=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/freescale_imx6dlsabresd_defconfig b/buildroot/configs/freescale_imx6dlsabresd_defconfig index a5c0aa60906..dc9b498aa4c 100644 --- a/buildroot/configs/freescale_imx6dlsabresd_defconfig +++ b/buildroot/configs/freescale_imx6dlsabresd_defconfig @@ -39,3 +39,4 @@ BR2_TARGET_UBOOT_FORMAT_IMX=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/freescale_imx6qsabreauto_defconfig b/buildroot/configs/freescale_imx6qsabreauto_defconfig index f03b7101fb3..bc333e1a375 100644 --- a/buildroot/configs/freescale_imx6qsabreauto_defconfig +++ b/buildroot/configs/freescale_imx6qsabreauto_defconfig @@ -40,3 +40,4 @@ BR2_TARGET_UBOOT_FORMAT_IMX=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/freescale_imx6qsabresd_defconfig b/buildroot/configs/freescale_imx6qsabresd_defconfig index 613b48a9138..e0ef20c5786 100644 --- a/buildroot/configs/freescale_imx6qsabresd_defconfig +++ b/buildroot/configs/freescale_imx6qsabresd_defconfig @@ -40,3 +40,4 @@ BR2_TARGET_UBOOT_FORMAT_IMX=y BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/freescale_imx6sololiteevk_defconfig b/buildroot/configs/freescale_imx6sololiteevk_defconfig deleted file mode 100644 index 1b3546255a7..00000000000 --- a/buildroot/configs/freescale_imx6sololiteevk_defconfig +++ /dev/null @@ -1,38 +0,0 @@ -# architecture -BR2_arm=y -BR2_cortex_a9=y -BR2_ARM_ENABLE_NEON=y -BR2_ARM_ENABLE_VFP=y -BR2_ARM_FPU_VFPV3=y - -# Linux headers same as kernel, a 4.9 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y - -# system -BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" - -# kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" -BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" -BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sl-evk" - -# filesystem -BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/common/imx/post-image.sh" -BR2_TARGET_ROOTFS_EXT2=y - -# required tools to create the microSD image -BR2_PACKAGE_HOST_DOSFSTOOLS=y -BR2_PACKAGE_HOST_GENIMAGE=y -BR2_PACKAGE_HOST_MTOOLS=y - -# bootloader -BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="mx6slevk" -BR2_TARGET_UBOOT_FORMAT_IMX=y -BR2_TARGET_UBOOT_CUSTOM_GIT=y -BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" diff --git a/buildroot/configs/freescale_imx6sxsabresd_defconfig b/buildroot/configs/freescale_imx6sxsabresd_defconfig index 01e13143b2b..eb11fb8ae1a 100644 --- a/buildroot/configs/freescale_imx6sxsabresd_defconfig +++ b/buildroot/configs/freescale_imx6sxsabresd_defconfig @@ -39,3 +39,4 @@ BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_DTC=y diff --git a/buildroot/configs/freescale_imx6ulevk_defconfig b/buildroot/configs/freescale_imx6ulevk_defconfig deleted file mode 100644 index 76ad1010535..00000000000 --- a/buildroot/configs/freescale_imx6ulevk_defconfig +++ /dev/null @@ -1,36 +0,0 @@ -# architecture -BR2_arm=y -BR2_cortex_a7=y - -# Linux headers same as kernel, a 4.9 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y - -# system -BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" - -# kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" -BR2_LINUX_KERNEL_DEFCONFIG="imx_v7" -BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6ul-14x14-evk" - -# bootloader -BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_BOARDNAME="mx6ul_14x14_evk" -BR2_TARGET_UBOOT_CUSTOM_GIT=y -BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" -BR2_TARGET_UBOOT_FORMAT_IMX=y - -# required tools to create the microSD 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/buildroot/configs/freescale_imx7dsabresd_defconfig b/buildroot/configs/freescale_imx7dsabresd_defconfig index 844b5476707..3563d1e1b2f 100644 --- a/buildroot/configs/freescale_imx7dsabresd_defconfig +++ b/buildroot/configs/freescale_imx7dsabresd_defconfig @@ -28,6 +28,7 @@ BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx.git" BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.x_1.0.0_ga" BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_NEEDS_DTC=y # required tools to create the microSD image BR2_PACKAGE_HOST_DOSFSTOOLS=y diff --git a/buildroot/configs/freescale_imx8mqevk_defconfig b/buildroot/configs/freescale_imx8mqevk_defconfig new file mode 100644 index 00000000000..f48e4f78e4d --- /dev/null +++ b/buildroot/configs/freescale_imx8mqevk_defconfig @@ -0,0 +1,41 @@ +BR2_aarch64=y +BR2_ARM_FPU_VFPV3=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=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_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_GIT=y +BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/linux-imx" +BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_imx_4.9.51_8mq_ga" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/fsl-imx8mq-evk" +BR2_PACKAGE_FREESCALE_IMX=y +BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y +BR2_PACKAGE_FIRMWARE_IMX=y +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +BR2_TARGET_ROOTFS_EXT2_SIZE="120M" +BR2_TARGET_ARM_TRUSTED_FIRMWARE=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/imx-atf" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="rel_imx_4.9.51_8mq_ga" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="imx8mq" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31=y +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_GIT=y +BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://source.codeaurora.org/external/imx/uboot-imx" +BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="rel_imx_4.9.51_8mq_ga" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="imx8mq_evk" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_IMX=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM=y +BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME="u-boot-nodtb.bin" +BR2_TARGET_UBOOT_SPL=y +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_IMX_MKIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS=y +BR2_PACKAGE_HOST_UBOOT_TOOLS_FIT_SUPPORT=y diff --git a/buildroot/configs/freescale_mpc8315erdb_defconfig b/buildroot/configs/freescale_mpc8315erdb_defconfig deleted file mode 100644 index de7e561352e..00000000000 --- a/buildroot/configs/freescale_mpc8315erdb_defconfig +++ /dev/null @@ -1,28 +0,0 @@ -# Architecture -BR2_powerpc=y -BR2_powerpc_e300c3=y - -# Filesystem -# BR2_TARGET_ROOTFS_TAR is not set -BR2_TARGET_ROOTFS_JFFS2=y -BR2_TARGET_ROOTFS_JFFS2_CUSTOM=y -BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE=0x200 -BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE=0x4000 -BR2_TARGET_ROOTFS_JFFS2_NOCLEANMARKER=y - -# Linux headers same as kernel, a 4.5 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_5=y - -# Kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.5.3" -BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/freescale/mpc8315erdb/linux-4.5.config" -BR2_LINUX_KERNEL_UIMAGE=y -BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="mpc8315erdb" - -# Serial port config -BR2_TARGET_GENERIC_GETTY=y -BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/buildroot/configs/freescale_p1010rdb_pa_defconfig b/buildroot/configs/freescale_p1010rdb_pa_defconfig deleted file mode 100644 index 3497275c8a5..00000000000 --- a/buildroot/configs/freescale_p1010rdb_pa_defconfig +++ /dev/null @@ -1,27 +0,0 @@ -# Architecture -BR2_powerpc=y -BR2_powerpc_8548=y - -# Filesystem -# BR2_TARGET_ROOTFS_TAR is not set -BR2_TARGET_ROOTFS_JFFS2=y -BR2_TARGET_ROOTFS_JFFS2_CUSTOM=y -BR2_TARGET_ROOTFS_JFFS2_CUSTOM_PAGESIZE=0x20 -BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE=0x20000 - -# Linux headers same as kernel, a 4.1 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y - -# Kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.1.4" -BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/freescale/p1010rdb/linux-4.1.config" -BR2_LINUX_KERNEL_UIMAGE=y -BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="p1010rdb-pa" - -# Serial port config -BR2_TARGET_GENERIC_GETTY=y -BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" diff --git a/buildroot/configs/freescale_p1025twr_defconfig b/buildroot/configs/freescale_p1025twr_defconfig new file mode 100644 index 00000000000..f476d927066 --- /dev/null +++ b/buildroot/configs/freescale_p1025twr_defconfig @@ -0,0 +1,24 @@ +# Architecture +BR2_powerpc=y +BR2_powerpc_8548=y + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15.7" +BR2_LINUX_KERNEL_DEFCONFIG="mpc85xx_smp" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="fsl/p1025twr" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/buildroot/configs/freescale_t1040d4rdb_defconfig b/buildroot/configs/freescale_t1040d4rdb_defconfig new file mode 100644 index 00000000000..df44046ef5e --- /dev/null +++ b/buildroot/configs/freescale_t1040d4rdb_defconfig @@ -0,0 +1,24 @@ +# Architecture +BR2_powerpc64=y +BR2_powerpc_e5500=y + +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15.7" +BR2_LINUX_KERNEL_DEFCONFIG="corenet64_smp" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="fsl/t1040d4rdb" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_CPIO=y +BR2_TARGET_ROOTFS_CPIO_GZIP=y +BR2_TARGET_ROOTFS_CPIO_UIMAGE=y +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/buildroot/configs/galileo_defconfig b/buildroot/configs/galileo_defconfig index 72ab0ff0616..03ca23f4142 100644 --- a/buildroot/configs/galileo_defconfig +++ b/buildroot/configs/galileo_defconfig @@ -10,9 +10,8 @@ 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_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/mdr78/Linux-x1000.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="8b3c9d8ce1656a26b1097d9091d53bfb39fef640" +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 diff --git a/buildroot/configs/gdb_bfin_bf512_defconfig b/buildroot/configs/gdb_bfin_bf512_defconfig deleted file mode 100644 index 6740647cb3a..00000000000 --- a/buildroot/configs/gdb_bfin_bf512_defconfig +++ /dev/null @@ -1,33 +0,0 @@ -# Architecture -BR2_bfin=y -BR2_bf512=y - -# Filesystem -BR2_TARGET_ROOTFS_INITRAMFS=y -# BR2_TARGET_ROOTFS_TAR is not set - -BR2_ROOTFS_POST_BUILD_SCRIPT="board/gdb/post-build.sh" - -# 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.14" -BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/gdb/bfin-bf512/linux.config" -BR2_LINUX_KERNEL_VMLINUX=y - -# Serial port config -BR2_TARGET_GENERIC_GETTY=y -BR2_TARGET_GENERIC_GETTY_PORT="ttyBF0" - -# use minimal busybox with hush -BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox-minimal.config" - -# compile gdb sim -BR2_PACKAGE_HOST_GDB=y -# BR2_PACKAGE_HOST_GDB_TUI is not set -# BR2_PACKAGE_HOST_GDB_PYTHON is not set -BR2_PACKAGE_HOST_GDB_SIM=y diff --git a/buildroot/configs/grinn_chiliboard_defconfig b/buildroot/configs/grinn_chiliboard_defconfig index cfd22b82213..81d7bae911f 100644 --- a/buildroot/configs/grinn_chiliboard_defconfig +++ b/buildroot/configs/grinn_chiliboard_defconfig @@ -1,22 +1,22 @@ BR2_arm=y BR2_cortex_a8=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y BR2_TARGET_GENERIC_GETTY_PORT="ttyO0" BR2_SYSTEM_DHCP="eth0" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/grinn/chiliboard/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.9.6" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.1" BR2_LINUX_KERNEL_DEFCONFIG="omap2plus" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="am335x-chiliboard" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y -BR2_TARGET_UBOOT_CUSTOM_GIT=y -BR2_TARGET_UBOOT_CUSTOM_REPO_URL="http://git.denx.de/u-boot.git" -BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="aac477eca88dd81b18b48573ababee5112d571f3" +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.03" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="chiliboard" BR2_TARGET_UBOOT_FORMAT_IMG=y BR2_TARGET_UBOOT_FORMAT_CUSTOM=y diff --git a/buildroot/configs/grinn_liteboard_defconfig b/buildroot/configs/grinn_liteboard_defconfig index 70ec2964929..5f3ca075521 100644 --- a/buildroot/configs/grinn_liteboard_defconfig +++ b/buildroot/configs/grinn_liteboard_defconfig @@ -1,21 +1,22 @@ BR2_arm=y BR2_cortex_a7=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_10=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" BR2_SYSTEM_DHCP="eth0" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/grinn/liteboard/post-image.sh" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.10" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.2" 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="2017.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.03" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="liteboard" BR2_TARGET_UBOOT_FORMAT_IMG=y BR2_TARGET_UBOOT_SPL=y diff --git a/buildroot/configs/imx6-sabresd_defconfig b/buildroot/configs/imx6-sabresd_defconfig index edb4d7ed104..9999513914e 100644 --- a/buildroot/configs/imx6-sabresd_defconfig +++ b/buildroot/configs/imx6-sabresd_defconfig @@ -36,3 +36,4 @@ BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-sabresd imx6dl-sabresd imx6qp-sabresd" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/buildroot/configs/imx6ulevk_defconfig b/buildroot/configs/imx6ulevk_defconfig index 0ae6b5308ef..069f8cfc5eb 100644 --- a/buildroot/configs/imx6ulevk_defconfig +++ b/buildroot/configs/imx6ulevk_defconfig @@ -25,6 +25,7 @@ BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" BR2_TARGET_UBOOT_FORMAT_IMG=y BR2_TARGET_UBOOT_SPL=y BR2_TARGET_UBOOT_SPL_NAME="SPL" +BR2_TARGET_UBOOT_NEEDS_DTC=y # required tools to create the SD card image BR2_PACKAGE_HOST_DOSFSTOOLS=y diff --git a/buildroot/configs/mx25pdk_defconfig b/buildroot/configs/mx25pdk_defconfig index a88fb2aeb7e..ec4f8b8289d 100644 --- a/buildroot/configs/mx25pdk_defconfig +++ b/buildroot/configs/mx25pdk_defconfig @@ -2,8 +2,8 @@ BR2_arm=y BR2_arm926t=y -# Linux headers same as kernel, a 4.14 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y # System BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" @@ -22,13 +22,14 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BOARDNAME="mx25pdk" BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" BR2_TARGET_UBOOT_FORMAT_IMX=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.11" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15.7" BR2_LINUX_KERNEL_DEFCONFIG="imx_v4_v5" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx25-pdk" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/buildroot/configs/mx53loco_defconfig b/buildroot/configs/mx53loco_defconfig index aaba4767ed4..ae56fcad8ca 100644 --- a/buildroot/configs/mx53loco_defconfig +++ b/buildroot/configs/mx53loco_defconfig @@ -2,8 +2,8 @@ BR2_arm=y BR2_cortex_a8=y -# Linux headers same as kernel, a 4.15 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y +# Linux headers same as kernel, a 4.16 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y # System BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" @@ -22,13 +22,14 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BOARDNAME="mx53loco" BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.05" BR2_TARGET_UBOOT_FORMAT_IMX=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15.1" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7" 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/buildroot/configs/mx6cubox_defconfig b/buildroot/configs/mx6cubox_defconfig index 5cb44fd45bf..2996c375ff4 100644 --- a/buildroot/configs/mx6cubox_defconfig +++ b/buildroot/configs/mx6cubox_defconfig @@ -3,8 +3,8 @@ BR2_cortex_a9=y BR2_ARM_ENABLE_NEON=y BR2_ARM_ENABLE_VFP=y BR2_ARM_FPU_VFPV3=y -# Linux headers same as kernel, a 4.14 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y +# Linux headers same as kernel, a 4.16 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" BR2_ROOTFS_POST_BUILD_SCRIPT="board/solidrun/mx6cubox/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/solidrun/mx6cubox/post-image.sh" @@ -13,17 +13,18 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BOARDNAME="mx6cuboxi" BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.03" BR2_TARGET_UBOOT_FORMAT_IMG=y BR2_TARGET_UBOOT_SPL=y BR2_TARGET_UBOOT_SPL_NAME="SPL" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.1" BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-cubox-i imx6dl-cubox-i imx6q-hummingboard imx6dl-hummingboard" BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y # required tools to create the SD card image BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/buildroot/configs/odroidc2_defconfig b/buildroot/configs/odroidc2_defconfig index f52f29adebd..63c5d2edc1b 100644 --- a/buildroot/configs/odroidc2_defconfig +++ b/buildroot/configs/odroidc2_defconfig @@ -14,9 +14,8 @@ BR2_KERNEL_HEADERS_VERSION=y BR2_DEFAULT_KERNEL_VERSION="3.14.79" BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/hardkernel/linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="f966ebfc0e8dc88c7931b4640b8a1b4bc2e13faa" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,hardkernel,linux,f966ebfc0e8dc88c7931b4640b8a1b4bc2e13faa)/linux-f966ebfc0e8dc88c7931b4640b8a1b4bc2e13faa.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="odroidc2" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_BUILD_DEFAULT_DTS=y diff --git a/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig b/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig index 509b050296a..64618c5e6d1 100644 --- a/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig +++ b/buildroot/configs/olimex_a20_olinuxino_lime2_defconfig @@ -18,7 +18,7 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a20_olinuxino/genimage.cfg" # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.12" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.26" BR2_LINUX_KERNEL_USE_DEFCONFIG=y BR2_LINUX_KERNEL_DEFCONFIG="sunxi" BR2_LINUX_KERNEL_DTS_SUPPORT=y @@ -34,7 +34,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.03" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime2" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y diff --git a/buildroot/configs/olimex_a20_olinuxino_lime_defconfig b/buildroot/configs/olimex_a20_olinuxino_lime_defconfig index 6c926b5dae1..b124bd93cbb 100644 --- a/buildroot/configs/olimex_a20_olinuxino_lime_defconfig +++ b/buildroot/configs/olimex_a20_olinuxino_lime_defconfig @@ -18,7 +18,7 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/olimex/a20_olinuxino/genimage.cfg" # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.12" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.26" BR2_LINUX_KERNEL_USE_DEFCONFIG=y BR2_LINUX_KERNEL_DEFCONFIG="sunxi" BR2_LINUX_KERNEL_DTS_SUPPORT=y @@ -34,7 +34,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.03" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y diff --git a/buildroot/configs/olimex_a20_olinuxino_lime_mali_defconfig b/buildroot/configs/olimex_a20_olinuxino_lime_mali_defconfig index d240e79e03b..de13b2e47ef 100644 --- a/buildroot/configs/olimex_a20_olinuxino_lime_mali_defconfig +++ b/buildroot/configs/olimex_a20_olinuxino_lime_mali_defconfig @@ -15,12 +15,10 @@ 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 +# Kernel, based on Linux version 3.4.113 BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/dan-and/linux-sunxi.git" -# based on Linux version 3.4.113 -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="fc385cc6dfa350382ecc94a520a716b57e654410" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,dan-and,linux-sunxi,fc385cc6dfa350382ecc94a520a716b57e654410)/linux-fc385cc6dfa350382ecc94a520a716b57e654410.tar.gz" BR2_LINUX_KERNEL_USE_DEFCONFIG=y BR2_LINUX_KERNEL_DEFCONFIG="sun7i" BR2_LINUX_KERNEL_INSTALL_TARGET=y @@ -41,7 +39,7 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.03" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="A20-OLinuXino-Lime" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_PYLIBFDT=y diff --git a/buildroot/configs/orangepi_pc_plus_defconfig b/buildroot/configs/orangepi_pc_plus_defconfig index 053c3bffbde..edc3909ae77 100644 --- a/buildroot/configs/orangepi_pc_plus_defconfig +++ b/buildroot/configs/orangepi_pc_plus_defconfig @@ -13,6 +13,7 @@ BR2_LINUX_KERNEL_DEFCONFIG="sunxi" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h3-orangepi-pc-plus" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-pc-plus/linux-extras.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y # BR2_TARGET_ROOTFS_TAR is not set diff --git a/buildroot/configs/orangepi_zero_defconfig b/buildroot/configs/orangepi_zero_defconfig index 2efccc0cedc..fcf9b325cdd 100644 --- a/buildroot/configs/orangepi_zero_defconfig +++ b/buildroot/configs/orangepi_zero_defconfig @@ -14,6 +14,7 @@ BR2_LINUX_KERNEL_DEFCONFIG="sunxi" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="sun8i-h2-plus-orangepi-zero" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/orangepi/orangepi-zero/linux-extras.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y # BR2_TARGET_ROOTFS_TAR is not set diff --git a/buildroot/configs/orangepi_zero_plus2_defconfig b/buildroot/configs/orangepi_zero_plus2_defconfig index 5b1ff3500c9..5ca6cf0fe2e 100644 --- a/buildroot/configs/orangepi_zero_plus2_defconfig +++ b/buildroot/configs/orangepi_zero_plus2_defconfig @@ -2,11 +2,10 @@ BR2_aarch64=y BR2_cortex_a53=y BR2_ARM_FPU_VFPV4=y -# Linux headers same as kernel, a 4.14 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y - -# Patch dir +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV=y BR2_GLOBAL_PATCH_DIR="board/orangepi/orangepi-zero-plus2/patches" +BR2_ROOTFS_OVERLAY="board/orangepi/orangepi-zero-plus2/rootfs_overlay" # Firmware BR2_TARGET_ARM_TRUSTED_FIRMWARE=y @@ -20,7 +19,7 @@ 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="2017.11" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.01" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="orangepi_zero_plus2" BR2_TARGET_UBOOT_NEEDS_DTC=y BR2_TARGET_UBOOT_NEEDS_ATF_BL31=y @@ -34,10 +33,23 @@ BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/orangepi/orangepi-zero-plus2/boot.cmd # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15.2" 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" + +# 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" diff --git a/buildroot/configs/qemu_aarch64_virt_defconfig b/buildroot/configs/qemu_aarch64_virt_defconfig index c94c4ac773a..076773302d9 100644 --- a/buildroot/configs/qemu_aarch64_virt_defconfig +++ b/buildroot/configs/qemu_aarch64_virt_defconfig @@ -10,12 +10,13 @@ BR2_TARGET_ROOTFS_EXT2=y BR2_TARGET_ROOTFS_EXT2_4=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.13 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_13=y +# Linux headers same as kernel, a 4.15 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.6" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15.2" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux-4.13.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/qemu/aarch64-virt/linux-4.15.config" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/buildroot/configs/qemu_arm_vexpress_defconfig b/buildroot/configs/qemu_arm_vexpress_defconfig index faba6a6c253..34a50aa8d59 100644 --- a/buildroot/configs/qemu_arm_vexpress_defconfig +++ b/buildroot/configs/qemu_arm_vexpress_defconfig @@ -13,13 +13,13 @@ BR2_TARGET_GENERIC_GETTY_PORT="ttyAMA0" BR2_TARGET_ROOTFS_EXT2=y # BR2_TARGET_ROOTFS_TAR is not set -# Linux headers same as kernel, a 4.11 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_11=y +# Linux headers same as kernel, a 4.16 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11.3" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.7" BR2_LINUX_KERNEL_DEFCONFIG="vexpress" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca9" diff --git a/buildroot/configs/qemu_ppc64_e5500_defconfig b/buildroot/configs/qemu_ppc64_e5500_defconfig new file mode 100644 index 00000000000..8173a0251b3 --- /dev/null +++ b/buildroot/configs/qemu_ppc64_e5500_defconfig @@ -0,0 +1,21 @@ +# Architecture +BR2_powerpc64=y +BR2_powerpc_e5500=y + +# Serial port config +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" + +# Linux headers same as the kernel +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15=y + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15.7" +BR2_LINUX_KERNEL_DEFCONFIG="corenet64_smp" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/qemu/ppc64-e5500/linux.fragment" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +# BR2_TARGET_ROOTFS_TAR is not set diff --git a/buildroot/configs/raspberrypi0_defconfig b/buildroot/configs/raspberrypi0_defconfig index 0fb8a994653..62c55fee20f 100644 --- a/buildroot/configs/raspberrypi0_defconfig +++ b/buildroot/configs/raspberrypi0_defconfig @@ -2,21 +2,20 @@ BR2_arm=y BR2_arm1176jzf_s=y BR2_ARM_EABIHF=y -# Linux headers same as kernel, a 4.9 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="33ee56d5927ceff630fbc87e3f5caa409b6ae114" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,c117a8bccf37bfba323065b566cf999ed4629a4a)/linux-c117a8bccf37bfba323065b566cf999ed4629a4a.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" # Build the DTBs for A/B from the kernel sources: the zero is the same # as the A+ model, just in a different form-factor BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-b-plus bcm2708-rpi-0-w" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-b-plus" BR2_PACKAGE_RPI_FIRMWARE=y # BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS is not set diff --git a/buildroot/configs/raspberrypi0w_defconfig b/buildroot/configs/raspberrypi0w_defconfig new file mode 100644 index 00000000000..95195bd5e84 --- /dev/null +++ b/buildroot/configs/raspberrypi0w_defconfig @@ -0,0 +1,30 @@ +BR2_arm=y +BR2_arm1176jzf_s=y +BR2_ARM_EABIHF=y + +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=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,c117a8bccf37bfba323065b566cf999ed4629a4a)/linux-c117a8bccf37bfba323065b566cf999ed4629a4a.tar.gz" +BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2708-rpi-0-w" + +BR2_PACKAGE_RPI_FIRMWARE=y + +# Required tools to create the SD image +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_ROOTFS_POST_BUILD_SCRIPT="board/raspberrypi0w/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="board/raspberrypi0w/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="--add-pi3-miniuart-bt-overlay" diff --git a/buildroot/configs/raspberrypi2_defconfig b/buildroot/configs/raspberrypi2_defconfig index 962a58cefb9..bbb3900e411 100644 --- a/buildroot/configs/raspberrypi2_defconfig +++ b/buildroot/configs/raspberrypi2_defconfig @@ -7,13 +7,12 @@ BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_SYSTEM_DHCP="eth0" -# Linux headers same as kernel, a 4.9 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Linux headers same as kernel, a 4.14 series +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/raspberrypi/linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="33ee56d5927ceff630fbc87e3f5caa409b6ae114" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,c117a8bccf37bfba323065b566cf999ed4629a4a)/linux-c117a8bccf37bfba323065b566cf999ed4629a4a.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" # Build the DTB from the kernel sources diff --git a/buildroot/configs/raspberrypi3_64_defconfig b/buildroot/configs/raspberrypi3_64_defconfig index 6a35ac36a18..df9f89927f7 100644 --- a/buildroot/configs/raspberrypi3_64_defconfig +++ b/buildroot/configs/raspberrypi3_64_defconfig @@ -6,13 +6,12 @@ BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_SYSTEM_DHCP="eth0" -# Linux headers same as kernel, a 4.9 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Linux headers same as kernel, a 4.14 series +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/raspberrypi/linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="33ee56d5927ceff630fbc87e3f5caa409b6ae114" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,c117a8bccf37bfba323065b566cf999ed4629a4a)/linux-c117a8bccf37bfba323065b566cf999ed4629a4a.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi3" # Build the DTB from the kernel sources diff --git a/buildroot/configs/raspberrypi3_defconfig b/buildroot/configs/raspberrypi3_defconfig index 9304f0cb748..45a76beb6a2 100644 --- a/buildroot/configs/raspberrypi3_defconfig +++ b/buildroot/configs/raspberrypi3_defconfig @@ -6,18 +6,17 @@ BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_SYSTEM_DHCP="eth0" -# Linux headers same as kernel, a 4.9 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Linux headers same as kernel, a 4.14 series +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/raspberrypi/linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="33ee56d5927ceff630fbc87e3f5caa409b6ae114" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,c117a8bccf37bfba323065b566cf999ed4629a4a)/linux-c117a8bccf37bfba323065b566cf999ed4629a4a.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" # Build the DTB from the kernel sources BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-cm3" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3" BR2_PACKAGE_RPI_FIRMWARE=y diff --git a/buildroot/configs/raspberrypi3_qt5we_defconfig b/buildroot/configs/raspberrypi3_qt5we_defconfig index d4ada475889..ee76f2b6821 100644 --- a/buildroot/configs/raspberrypi3_qt5we_defconfig +++ b/buildroot/configs/raspberrypi3_qt5we_defconfig @@ -7,18 +7,17 @@ BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_SYSTEM_DHCP="eth0" -# Linux headers same as kernel, a 4.9 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Linux headers same as kernel, a 4.14 series +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/raspberrypi/linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="33ee56d5927ceff630fbc87e3f5caa409b6ae114" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,c117a8bccf37bfba323065b566cf999ed4629a4a)/linux-c117a8bccf37bfba323065b566cf999ed4629a4a.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcm2709" # Build the DTB from the kernel sources BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-cm3" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="bcm2710-rpi-3-b bcm2710-rpi-3-b-plus bcm2710-rpi-cm3" # Build Qt5 WebEngine BR2_PACKAGE_LIBERATION=y diff --git a/buildroot/configs/raspberrypi_defconfig b/buildroot/configs/raspberrypi_defconfig index daca8362e65..0460117eb87 100644 --- a/buildroot/configs/raspberrypi_defconfig +++ b/buildroot/configs/raspberrypi_defconfig @@ -4,15 +4,14 @@ BR2_ARM_EABIHF=y BR2_SYSTEM_DHCP="eth0" -# Linux headers same as kernel, a 4.9 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/raspberrypi/linux.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="33ee56d5927ceff630fbc87e3f5caa409b6ae114" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,raspberrypi,linux,c117a8bccf37bfba323065b566cf999ed4629a4a)/linux-c117a8bccf37bfba323065b566cf999ed4629a4a.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="bcmrpi" # Build the DTBs for A/B, A+/B+ and compute module from the kernel sources diff --git a/buildroot/configs/riotboard_defconfig b/buildroot/configs/riotboard_defconfig deleted file mode 100644 index c2281058f50..00000000000 --- a/buildroot/configs/riotboard_defconfig +++ /dev/null @@ -1,36 +0,0 @@ -# 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" - -# rootfs -BR2_TARGET_ROOTFS_EXT2=y -BR2_TARGET_ROOTFS_EXT2_2r1=y -BR2_ROOTFS_OVERLAY="board/embest/riotboard/rootfs_overlay" - -# bootloader -BR2_TARGET_UBOOT=y -BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2015.10" -BR2_TARGET_UBOOT_BOARDNAME="riotboard" -BR2_TARGET_UBOOT_FORMAT_IMX=y - -# Linux headers same as kernel, a 4.2 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_2=y - -# kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.2.6" -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-riotboard" -BR2_LINUX_KERNEL_INSTALL_TARGET=y diff --git a/buildroot/configs/roseapplepi_defconfig b/buildroot/configs/roseapplepi_defconfig index 6627ff47116..327176254ac 100644 --- a/buildroot/configs/roseapplepi_defconfig +++ b/buildroot/configs/roseapplepi_defconfig @@ -9,9 +9,8 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_10=y BR2_ROOTFS_POST_IMAGE_SCRIPT="board/roseapplepi/post-image.sh" BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/xapp-le/kernel.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="59dbf6a4998e967eb9c6bdcc9b506c0d96acb26b" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,xapp-le,kernel,59dbf6a4998e967eb9c6bdcc9b506c0d96acb26b)/linux-59dbf6a4998e967eb9c6bdcc9b506c0d96acb26b.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="actduino_bubble_gum_linux" BR2_LINUX_KERNEL_UIMAGE=y BR2_LINUX_KERNEL_DTS_SUPPORT=y diff --git a/buildroot/configs/s6lx9_microboard_defconfig b/buildroot/configs/s6lx9_microboard_defconfig index f77c80ba879..97b2d3fe798 100644 --- a/buildroot/configs/s6lx9_microboard_defconfig +++ b/buildroot/configs/s6lx9_microboard_defconfig @@ -10,5 +10,4 @@ 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_USE_CUSTOM_DTS=y BR2_LINUX_KERNEL_CUSTOM_DTS_PATH="board/avnet/s6lx9_microboard/lx9_mmu.dts" diff --git a/buildroot/configs/snps_arc700_axs101_defconfig b/buildroot/configs/snps_arc700_axs101_defconfig index daa8ebb8f05..0fefaf4aa8c 100644 --- a/buildroot/configs/snps_arc700_axs101_defconfig +++ b/buildroot/configs/snps_arc700_axs101_defconfig @@ -16,6 +16,7 @@ BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" BR2_LINUX_KERNEL_DEFCONFIG="axs101" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y # Bootloader BR2_TARGET_UBOOT=y diff --git a/buildroot/configs/snps_archs38_axs103_defconfig b/buildroot/configs/snps_archs38_axs103_defconfig index 42a4feaba8e..39ceeae4338 100644 --- a/buildroot/configs/snps_archs38_axs103_defconfig +++ b/buildroot/configs/snps_archs38_axs103_defconfig @@ -17,6 +17,7 @@ BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" BR2_LINUX_KERNEL_DEFCONFIG="axs103_smp" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y # Bootloader BR2_TARGET_UBOOT=y diff --git a/buildroot/configs/snps_archs38_hsdk_defconfig b/buildroot/configs/snps_archs38_hsdk_defconfig new file mode 100644 index 00000000000..125063b444a --- /dev/null +++ b/buildroot/configs/snps_archs38_hsdk_defconfig @@ -0,0 +1,40 @@ +# Architecture +BR2_arcle=y +BR2_archs38=y + +# Linux headers +BR2_KERNEL_HEADERS_4_14=y + +# System +BR2_TARGET_GENERIC_HOSTNAME="hsdk" +BR2_TARGET_GENERIC_ISSUE="Welcome to the HSDK Platform" +BR2_SYSTEM_DHCP="eth0" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14.4" +BR2_LINUX_KERNEL_DEFCONFIG="hsdk" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/synopsys/hsdk/linux.fragment" + +# Filesystem / image +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_PACKAGE_HOST_DOSFSTOOLS=y +BR2_PACKAGE_HOST_GENIMAGE=y +BR2_PACKAGE_HOST_MTOOLS=y +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/synopsys/hsdk/genimage.cfg" + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.11" +BR2_TARGET_UBOOT_BOARD_DEFCONFIG="hsdk" +BR2_TARGET_UBOOT_NEEDS_DTC=y +BR2_TARGET_UBOOT_FORMAT_ELF=y +BR2_TARGET_UBOOT_ENVIMAGE=y +BR2_TARGET_UBOOT_ENVIMAGE_SOURCE="board/synopsys/hsdk/uboot.env.txt" +BR2_TARGET_UBOOT_ENVIMAGE_SIZE="0x4000" diff --git a/buildroot/configs/snps_archs38_vdk_defconfig b/buildroot/configs/snps_archs38_vdk_defconfig index 434ed37a9e1..46b539beec5 100644 --- a/buildroot/configs/snps_archs38_vdk_defconfig +++ b/buildroot/configs/snps_archs38_vdk_defconfig @@ -17,3 +17,4 @@ BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.15" BR2_LINUX_KERNEL_DEFCONFIG="vdk_hs38_smp" BR2_LINUX_KERNEL_VMLINUX=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y diff --git a/buildroot/configs/socrates_cyclone5_defconfig b/buildroot/configs/socrates_cyclone5_defconfig index 45355c1b851..7995f9acfbf 100644 --- a/buildroot/configs/socrates_cyclone5_defconfig +++ b/buildroot/configs/socrates_cyclone5_defconfig @@ -7,9 +7,8 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=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_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/altera-opensource/linux-socfpga.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="rel_socfpga-4.1.33-ltsi_17.07.02_pr" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,altera-opensource,linux-socfpga,rel_socfpga-4.1.33-ltsi_17.07.02_pr)/linux-rel_socfpga-4.1.33-ltsi_17.07.02_pr.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="socfpga" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="socfpga_cyclone5_socrates" diff --git a/buildroot/configs/solidrun_clearfog_defconfig b/buildroot/configs/solidrun_clearfog_defconfig new file mode 100644 index 00000000000..7c426e5ad99 --- /dev/null +++ b/buildroot/configs/solidrun_clearfog_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_NEON=y + +# Linux headers same as kernel, a 4.12 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_12=y + +# System configuration +BR2_ROOTFS_POST_BUILD_SCRIPT="board/solidrun/clearfog/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/solidrun/clearfog/genimage.cfg" + +# Kernel +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.12.10" +BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v7" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/solidrun/clearfog/linux.fragment" +BR2_LINUX_KERNEL_DTS_SUPPORT=y +BR2_LINUX_KERNEL_INTREE_DTS_NAME="armada-388-clearfog-base" +BR2_LINUX_KERNEL_INSTALL_TARGET=y + +# Filesystem +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_4=y +# BR2_TARGET_ROOTFS_TAR is not set +BR2_PACKAGE_HOST_GENIMAGE=y + +# Bootloader +BR2_TARGET_UBOOT=y +BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y +BR2_TARGET_UBOOT_CUSTOM_VERSION=y +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.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" +BR2_TARGET_UBOOT_BOOT_SCRIPT=y +BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE="board/solidrun/clearfog/boot.scr.txt" diff --git a/buildroot/configs/solidrun_macchiatobin_mainline_defconfig b/buildroot/configs/solidrun_macchiatobin_mainline_defconfig index 526c021fe72..17fb9d02a2d 100644 --- a/buildroot/configs/solidrun_macchiatobin_mainline_defconfig +++ b/buildroot/configs/solidrun_macchiatobin_mainline_defconfig @@ -7,7 +7,7 @@ BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for Marvell MacchiatoBin" BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/MarvellEmbeddedProcessors/atf-marvell.git" -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="atf-v1.3-armada-17.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="43965481990fd92e9666cf9371a8cf478055ec7c" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="a80x0_mcbin" BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y @@ -31,6 +31,7 @@ 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 diff --git a/buildroot/configs/solidrun_macchiatobin_marvell_defconfig b/buildroot/configs/solidrun_macchiatobin_marvell_defconfig index 1e747c344a1..acc8d1589e4 100644 --- a/buildroot/configs/solidrun_macchiatobin_marvell_defconfig +++ b/buildroot/configs/solidrun_macchiatobin_marvell_defconfig @@ -7,7 +7,7 @@ BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for Marvell MacchiatoBin" BR2_TARGET_ARM_TRUSTED_FIRMWARE=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL="https://github.com/MarvellEmbeddedProcessors/atf-marvell.git" -BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="atf-v1.3-armada-17.10" +BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION="43965481990fd92e9666cf9371a8cf478055ec7c" BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="a80x0_mcbin" BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y @@ -22,12 +22,12 @@ BR2_TARGET_UBOOT_CUSTOM_GIT=y BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/MarvellEmbeddedProcessors/u-boot-marvell" BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="u-boot-2017.03-armada-17.10" BR2_TARGET_UBOOT_BOARDNAME="mvebu_mcbin-88f8040" +BR2_TARGET_UBOOT_NEEDS_DTC=y # Kernel BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/MarvellEmbeddedProcessors/linux-marvell" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="linux-4.4.52-armada-17.10" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,MarvellEmbeddedProcessors,linux-marvell,linux-4.4.52-armada-17.10)/linux-linux-4.4.52-armada-17.10.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="mvebu_v8_lsp" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="marvell/armada-8040-mcbin" diff --git a/buildroot/configs/telit_evk_pro3_defconfig b/buildroot/configs/telit_evk_pro3_defconfig deleted file mode 100644 index 12ce4702938..00000000000 --- a/buildroot/configs/telit_evk_pro3_defconfig +++ /dev/null @@ -1,32 +0,0 @@ -# Architecture -BR2_arm=y -BR2_arm926t=y - -# Patches -BR2_GLOBAL_PATCH_DIR="board/telit/evk-pro3/patches" - -# Linux headers same as kernel, a 3.9 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_9=y - -# Watchdog is armed by the first stage bootloader -BR2_PACKAGE_BUSYBOX_WATCHDOG=y - -# Filesystem -BR2_TARGET_ROOTFS_UBIFS=y -BR2_TARGET_ROOTFS_UBI=y - -# Bootloader -BR2_TARGET_BAREBOX=y -BR2_TARGET_BAREBOX_CUSTOM_VERSION=y -BR2_TARGET_BAREBOX_CUSTOM_VERSION_VALUE="2017.01.0" -BR2_TARGET_BAREBOX_BOARD_DEFCONFIG="telit_evk_pro3" -BR2_TARGET_BAREBOX_CONFIG_FRAGMENT_FILES="board/telit/evk-pro3/barebox.fragment" - -# Kernel -BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="3.9.11" -BR2_LINUX_KERNEL_DEFCONFIG="at91_dt" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/telit/evk-pro3/linux.fragment" -BR2_LINUX_KERNEL_APPENDED_ZIMAGE=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="evk-pro3" diff --git a/buildroot/configs/ts4900_defconfig b/buildroot/configs/ts4900_defconfig index 082234fcad7..e7950cea4b1 100644 --- a/buildroot/configs/ts4900_defconfig +++ b/buildroot/configs/ts4900_defconfig @@ -3,6 +3,8 @@ 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" diff --git a/buildroot/configs/ts5x00_defconfig b/buildroot/configs/ts5500_defconfig similarity index 55% rename from buildroot/configs/ts5x00_defconfig rename to buildroot/configs/ts5500_defconfig index 531088661c9..871c02e95f2 100644 --- a/buildroot/configs/ts5x00_defconfig +++ b/buildroot/configs/ts5500_defconfig @@ -2,19 +2,19 @@ BR2_i386=y BR2_x86_i586=y -# Linux headers same as kernel, a 3.17 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_17=y +# Linux headers same as kernel, a 4.14 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y # system BR2_TARGET_GENERIC_GETTY_PORT="ttyS1" -BR2_ROOTFS_OVERLAY="board/technologic/ts5x00/fs-overlay" +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="3.17.8" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.14" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y -BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/technologic/ts5x00/linux-3.17.config" +BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="board/technologic/ts5500/linux-4.14.config" BR2_LINUX_KERNEL_INSTALL_TARGET=y # rootfs diff --git a/buildroot/configs/ts7680_defconfig b/buildroot/configs/ts7680_defconfig index 09629a73645..829af057a20 100644 --- a/buildroot/configs/ts7680_defconfig +++ b/buildroot/configs/ts7680_defconfig @@ -3,9 +3,8 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_14=y BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/technologic/ts7680/genimage.cfg" BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/embeddedarm/linux-3.14.28-imx28.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="ff01621df09b97d9fd546d1b49f4013060142892" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,embeddedarm,linux-3.14.28-imx28,ff01621df09b97d9fd546d1b49f4013060142892)/linux-ff01621df09b97d9fd546d1b49f4013060142892.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="ts76xx" BR2_LINUX_KERNEL_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x40008000" diff --git a/buildroot/configs/wandboard_defconfig b/buildroot/configs/wandboard_defconfig index e6ba1d4e149..4265fdcfb00 100644 --- a/buildroot/configs/wandboard_defconfig +++ b/buildroot/configs/wandboard_defconfig @@ -3,8 +3,8 @@ 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 +# Linux headers same as kernel, a 4.16 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" BR2_ROOTFS_POST_BUILD_SCRIPT="board/wandboard/post-build.sh" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/wandboard/post-image.sh" @@ -13,17 +13,18 @@ BR2_TARGET_ROOTFS_EXT2_4=y BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BOARDNAME="wandboard" BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.09" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.03" BR2_TARGET_UBOOT_FORMAT_IMG=y BR2_TARGET_UBOOT_SPL=y BR2_TARGET_UBOOT_SPL_NAME="SPL" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.13.3" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16" BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" BR2_LINUX_KERNEL_DTS_SUPPORT=y -BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-wandboard imx6dl-wandboard imx6q-wandboard-revb1 imx6dl-wandboard-revb1" +BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-wandboard imx6dl-wandboard imx6q-wandboard-revb1 imx6dl-wandboard-revb1 imx6q-wandboard-revd1 imx6dl-wandboard-revd1 imx6qp-wandboard-revd1" BR2_LINUX_KERNEL_INSTALL_TARGET=y +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y # required tools to create the SD card image BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_GENIMAGE=y diff --git a/buildroot/configs/warp7_defconfig b/buildroot/configs/warp7_defconfig index 7de4bb5bdb3..95e538fb7ed 100644 --- a/buildroot/configs/warp7_defconfig +++ b/buildroot/configs/warp7_defconfig @@ -3,8 +3,8 @@ BR2_arm=y BR2_cortex_a7=y BR2_ARM_FPU_NEON_VFPV4=y -# Linux headers same as kernel, a 4.12 series -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_12=y +# Linux headers same as kernel, a 4.16 series +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y # system BR2_TARGET_GENERIC_GETTY_PORT="ttymxc0" @@ -15,16 +15,17 @@ BR2_ROOTFS_OVERLAY="board/warp7/rootfs_overlay" # Kernel BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.12.3" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16.3" BR2_LINUX_KERNEL_DEFCONFIG="imx_v6_v7" BR2_LINUX_KERNEL_DTS_SUPPORT=y BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7s-warp" +BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y # U-Boot BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT_BOARDNAME="warp7" BR2_TARGET_UBOOT_CUSTOM_VERSION=y -BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2017.07" +BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2018.03" BR2_TARGET_UBOOT_FORMAT_IMX=y # wifi firmware for brcm43430 diff --git a/buildroot/configs/zynq_microzed_defconfig b/buildroot/configs/zynq_microzed_defconfig index a6366ee0c04..c89b4e6d9dc 100644 --- a/buildroot/configs/zynq_microzed_defconfig +++ b/buildroot/configs/zynq_microzed_defconfig @@ -6,9 +6,8 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y BR2_TARGET_GENERIC_GETTY_PORT="ttyPS0" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynq/post-image.sh" BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/Xilinx/linux-xlnx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="xilinx-v2017.3" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xilinx-v2017.3)/linux-xilinx-v2017.3.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" BR2_LINUX_KERNEL_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" diff --git a/buildroot/configs/zynq_zc706_defconfig b/buildroot/configs/zynq_zc706_defconfig index 069034021d8..758069b30fe 100644 --- a/buildroot/configs/zynq_zc706_defconfig +++ b/buildroot/configs/zynq_zc706_defconfig @@ -6,9 +6,8 @@ BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y BR2_TARGET_GENERIC_GETTY_PORT="ttyPS0" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynq/post-image.sh" BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/Xilinx/linux-xlnx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="xilinx-v2017.3" +BR2_LINUX_KERNEL_CUSTOM_TARBALL=y +BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,Xilinx,linux-xlnx,xilinx-v2017.3)/linux-xilinx-v2017.3.tar.gz" BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" BR2_LINUX_KERNEL_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" diff --git a/buildroot/configs/zynq_zed_defconfig b/buildroot/configs/zynq_zed_defconfig index d08f83db599..676366bc5c9 100644 --- a/buildroot/configs/zynq_zed_defconfig +++ b/buildroot/configs/zynq_zed_defconfig @@ -2,14 +2,13 @@ BR2_arm=y BR2_cortex_a9=y BR2_ARM_ENABLE_NEON=y BR2_ARM_ENABLE_VFP=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_9=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16=y BR2_TARGET_GENERIC_GETTY_PORT="ttyPS0" BR2_ROOTFS_POST_IMAGE_SCRIPT="board/zynq/post-image.sh" BR2_LINUX_KERNEL=y -BR2_LINUX_KERNEL_CUSTOM_GIT=y -BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/Xilinx/linux-xlnx.git" -BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="xilinx-v2017.3" -BR2_LINUX_KERNEL_DEFCONFIG="xilinx_zynq" +BR2_LINUX_KERNEL_CUSTOM_VERSION=y +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.16" +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y BR2_LINUX_KERNEL_UIMAGE=y BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0x8000" BR2_LINUX_KERNEL_DTS_SUPPORT=y diff --git a/buildroot/docs/manual/adding-packages-cargo.txt b/buildroot/docs/manual/adding-packages-cargo.txt index b78163e6a1c..b7fc09acfec 100644 --- a/buildroot/docs/manual/adding-packages-cargo.txt +++ b/buildroot/docs/manual/adding-packages-cargo.txt @@ -41,7 +41,7 @@ package. Let's start with an example: 07: FOO_VERSION = 1.0 08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz 09: FOO_SITE = http://www.foosoftware.org/download -10: FOO_LICENSE = GPLv3+ +10: FOO_LICENSE = GPL-3.0+ 11: FOO_LICENSE_FILES = COPYING 12: 13: FOO_DEPENDENCIES = host-cargo diff --git a/buildroot/docs/manual/adding-packages-directory.txt b/buildroot/docs/manual/adding-packages-directory.txt index c9857a80d3c..f5e1e313d5f 100644 --- a/buildroot/docs/manual/adding-packages-directory.txt +++ b/buildroot/docs/manual/adding-packages-directory.txt @@ -292,13 +292,13 @@ use in the comment. * Kernel headers ** Dependency symbol: +BR2_TOOLCHAIN_HEADERS_AT_LEAST_X_Y+, (replace - +X_Y+ with the proper version, see +toolchain/toolchain-common.in+) + +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/toolchain-common.in+) + +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) diff --git a/buildroot/docs/manual/adding-packages-generic.txt b/buildroot/docs/manual/adding-packages-generic.txt index 63ea51bf898..cc91e894bd2 100644 --- a/buildroot/docs/manual/adding-packages-generic.txt +++ b/buildroot/docs/manual/adding-packages-generic.txt @@ -179,8 +179,10 @@ some tools to be installed on the host. If the package name is 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 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: @@ -197,12 +199,12 @@ 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, branch or tag for packages that are fetched - directly from their revision control system. + - Examples: + - +LIBFOO_VERSION = 0.1.2+ + - +LIBFOO_VERSION = cb9d6aa9429e838f0e54faa3d455bcbab5eef057+ + - +LIBFOO_VERSION = stable+ + revision number or a tag for packages that are fetched directly + from their version control system. Do not use a branch name as + version; it does not work. 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+ * +LIBFOO_SOURCE+ may contain the name of the tarball of the package, which Buildroot will use to download the tarball from @@ -263,7 +265,7 @@ information is (assuming the package name is +libfoo+) : 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 +$(DL_DIR)+. + 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 @@ -347,6 +349,13 @@ information is (assuming the package name is +libfoo+) : 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 @@ -453,6 +462,13 @@ information is (assuming the package name is +libfoo+) : FLAT binary format is only 4k bytes. If the application consumes more stack, append the required number here. +* +LIBFOO_BIN_ARCH_EXCLUDE+ is a space-separated list of paths (relative + to the target directory) to ignore when checking that the package + installs correctly cross-compiled binaries. You seldom need to set this + variable, unless the package installs binary blobs outside the default + locations, `/lib/firmware`, `/usr/lib/firmware`, `/lib/modules`, + `/usr/lib/modules`, and `/usr/share`, which are automatically excluded. + The recommended way to define these variables is to use the following syntax: @@ -540,8 +556,8 @@ In the action definitions, you can use the following variables: * +$(@D)+, which contains the directory in which the package source code has been uncompressed. -* +$(DL_DIR)+ contains the path to the directory where all the downloads made - by Buildroot are stored. +* +$(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 diff --git a/buildroot/docs/manual/adding-packages-golang.txt b/buildroot/docs/manual/adding-packages-golang.txt new file mode 100644 index 00000000000..efcf6968676 --- /dev/null +++ b/buildroot/docs/manual/adding-packages-golang.txt @@ -0,0 +1,119 @@ +// -*- 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_ARCH_SUPPORTS+ +and +BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS+ because Buildroot will +automatically add a dependency on +host-go+ to such packages. + +The main macro of the Go package infrastructure is ++golang-package+. It is similar to the +generic-package+ macro. Only +target packages are supported with +golang-package+. + +Just like the generic infrastructure, the Go infrastructure works +by defining a number of variables before calling the +golang-package+. + +All the package metadata information variables that exist in the +xref:generic-package-reference[generic package infrastructure] also +exist in the Go infrastructure: +FOO_VERSION+, +FOO_SOURCE+, ++FOO_PATCH+, +FOO_SITE+, +FOO_SUBDIR+, +FOO_DEPENDENCIES+, ++FOO_LICENSE+, +FOO_LICENSE_FILES+, +FOO_INSTALL_STAGING+, etc. + +Note that it is not necessary to add +host-go+ in the ++FOO_DEPENDENCIES+ variable of a package, since this basic dependency +is automatically added as needed by the Go package infrastructure. + +A few additional variables, specific to the Go infrastructure, can +optionally be defined, depending on the package's needs. Many of them +are only useful in very specific cases, typical packages will +therefore only use a few of them, or none. + +* If your package need a custom +GOPATH+ to be compiled in, you can + use the +FOO_WORKSPACE+ variable. The +GOPATH+ being used will be + +/+. If +FOO_WORKSPACE+ is not + specified, it defaults to +_gopath+. + +* +FOO_SRC_SUBDIR+ is the sub-directory where your source will be + compiled relatively to the +GOPATH+. An example value is + +github.com/bar/foo+. If +FOO_SRC_SUBDIR+ is not specified, it + defaults to a value infered from the +FOO_SITE+ variable. + +* +FOO_LDFLAGS+ and +FOO_TAGS+ can be used to pass respectively the + +LDFLAGS+ or the +TAGS+ to the +go+ build command. + +* +FOO_BUILD_TARGETS+ can be used to pass the list of targets that + should be built. If +FOO_BUILD_TARGETS+ is not specified, it + defaults to +.+. We then have two cases: + +** +FOO_BUILD_TARGETS+ is +.+. In this case, we assume only one binary + will be produced, and that by default we name it after the package + name. If that is not appropriate, the name of the produced binary + can be overridden using +FOO_BIN_NAME+. + +** +FOO_BUILD_TARGETS+ is not +.+. In this case, we iterate over the + values to build each target, and for each produced a binary that is + the non-directory component of the target. For example if + +FOO_BUILD_TARGETS = cmd/docker cmd/dockerd+ the binaries produced + are +docker+ and +dockerd+. + +* +FOO_INSTALL_BINS+ can be used to pass the list of binaries that + should be installed in +/usr/bin+ on the target. If + +FOO_INSTALL_BINS+ is not specified, it defaults to the lower-case + name of package. + +With the Go infrastructure, all the steps required to build and +install the packages are already defined, and they generally work well +for most Go-based packages. However, when required, it is still +possible to customize what is done in any particular step: + +* By adding a post-operation hook (after extract, patch, configure, + build or install). See xref:hooks[] for details. + +* By overriding one of the steps. For example, even if the Go + infrastructure is used, if the package +.mk+ file defines its own + +FOO_BUILD_CMDS+ variable, it will be used instead of the default Go + one. However, using this method should be restricted to very + specific cases. Do not use it in the general case. diff --git a/buildroot/docs/manual/adding-packages-meson.txt b/buildroot/docs/manual/adding-packages-meson.txt index 65a0f6a9622..f8aa08fa912 100644 --- a/buildroot/docs/manual/adding-packages-meson.txt +++ b/buildroot/docs/manual/adding-packages-meson.txt @@ -24,7 +24,7 @@ package. Let's start with an example: 07: FOO_VERSION = 1.0 08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz 09: FOO_SITE = http://www.foosoftware.org/download -10: FOO_LICENSE = GPLv3+ +10: FOO_LICENSE = GPL-3.0+ 11: FOO_LICENSE_FILES = COPYING 12: FOO_INSTALL_STAGING = YES 13: @@ -35,7 +35,7 @@ package. Let's start with an example: 18: --buildtype $(if $(BR2_ENABLE_DEBUG),debug,release) \ 19: --cross-file $(HOST_DIR)/etc/meson/cross-compilation.conf 20: -21: FOO_NINJA_OPTS = $(if $(VERBOSE),-v) +21: FOO_NINJA_OPTS = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS) 22: 23: ifeq ($(BR2_PACKAGE_BAZ),y) 24: FOO_CONF_OPTS += -Dbaz diff --git a/buildroot/docs/manual/adding-packages-tips.txt b/buildroot/docs/manual/adding-packages-tips.txt index 19577fa8218..d10f276e83b 100644 --- a/buildroot/docs/manual/adding-packages-tips.txt +++ b/buildroot/docs/manual/adding-packages-tips.txt @@ -32,6 +32,38 @@ using the following rules: 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 @@ -77,9 +109,14 @@ and what package to test: $ ./utils/test-pkg -c libcurl.config -p libcurl ---- -This will try to build your package against all the toolchains used -by the autobuilders (except for the internal toolchains, because it takes -too long to do so). The output lists all toolchains and the corresponding +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): ---- diff --git a/buildroot/docs/manual/adding-packages.txt b/buildroot/docs/manual/adding-packages.txt index e8d40daee4c..4a4a17e879d 100644 --- a/buildroot/docs/manual/adding-packages.txt +++ b/buildroot/docs/manual/adding-packages.txt @@ -9,8 +9,9 @@ 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[] +When you add a new package, be sure to test it in various conditions +(see xref:testing-package[]) and also check it for coding style (see +xref:check-package[]). include::adding-packages-directory.txt[] @@ -38,6 +39,8 @@ include::adding-packages-meson.txt[] include::adding-packages-cargo.txt[] +include::adding-packages-golang.txt[] + include::adding-packages-kernel-module.txt[] include::adding-packages-asciidoc.txt[] diff --git a/buildroot/docs/manual/common-usage.txt b/buildroot/docs/manual/common-usage.txt index a22da201885..e3d7578c85f 100644 --- a/buildroot/docs/manual/common-usage.txt +++ b/buildroot/docs/manual/common-usage.txt @@ -224,12 +224,12 @@ The +graph-depends+ behaviour can be controlled by setting options in the * +--transitive+, +--no-transitive+, to draw (or not) the transitive dependencies. The default is to not draw transitive dependencies. -* +--colours R,T,H+, the comma-separated list of colours to draw the +* +--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 --colours=red,green,blue' make graph-depends +BR2_GRAPH_DEPS_OPTS='-d 3 --no-transitive --colors=red,green,blue' make graph-depends -------------------------------- === Graphing the build duration diff --git a/buildroot/docs/manual/contribute.txt b/buildroot/docs/manual/contribute.txt index 8bbc2b9eb72..b531ea987e7 100644 --- a/buildroot/docs/manual/contribute.txt +++ b/buildroot/docs/manual/contribute.txt @@ -264,6 +264,10 @@ 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_ diff --git a/buildroot/docs/manual/manual.html b/buildroot/docs/manual/manual.html index 335d0446fa9..ad2cbb8467a 100644 --- a/buildroot/docs/manual/manual.html +++ b/buildroot/docs/manual/manual.html @@ -1,6 +1,6 @@ -The Buildroot user manual

The Buildroot user manual


Table of Contents

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

Buildroot 2018.02 manual generated on 2018-03-04 -21:31:04 UTC from git revision 8a94ff12d2

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

The Buildroot user manual


Table of Contents

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

Buildroot 2018.05-rc2 manual generated on 2018-05-22 +21:28:12 UTC from git revision c11ed3a4d9

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

Copyright ツゥ 2004-2018 The Buildroot developers

logo.png

PartツI.ツGetting started

Chapterツ1.ツAbout Buildroot

Buildroot is a tool that simplifies and automates the process of @@ -16,8 +16,8 @@ processors, MIPS processors, ARM processors, etc.

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



[1] BSP: Board Support Package

[2] SDK: Software Development Kit

Chapterツ2.ツSystem requirements

Buildroot is designed to run on Linux systems.

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



[1] BSP: Board Support Package

[2] SDK: Software Development Kit

Chapterツ2.ツSystem requirements

Buildroot is designed to run on Linux systems.

While Buildroot itself will build most host packages it needs for the compilation, certain standard Linux utilities are expected to be already installed on the host system. Below you will find an overview of the mandatory and optional packages (note that package names may vary @@ -272,7 +272,7 @@ 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窶决e working, is called the "host -system" [3].

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

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

As said above, the compilation toolchain that comes with your system @@ -547,7 +547,7 @@ http://www.freedesktop.org/wiki/Software/systemd.

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



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



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

Chapterツ7.ツConfiguration of other components

Before attempting to modify any of the components below, make sure you have already configured Buildroot itself, and have enabled the @@ -855,10 +855,10 @@ --transitive, --no-transitive, to draw (or not) the transitive dependencies. The default is to not draw transitive dependencies.

  • ---colours R,T,H, the comma-separated list of colours to draw the +--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 --colours=red,green,blue' make graph-depends

    8.9.ツGraphing the build duration

    When the build of a system takes a long time, it is sometimes useful +

    BR2_GRAPH_DEPS_OPTS='-d 3 --no-transitive --colors=red,green,blue' make graph-depends

    8.9.ツ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 @@ -1065,7 +1065,17 @@ 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.

    Chapterツ9.ツProject-specific customization

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

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

    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)
    • @@ -2151,8 +2161,9 @@ Buildroot configuration. Refer to Chapterツ9, Project-specific customization for more details.

    Chapterツ17.ツ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ツ17.22.2, 窶廩ow to test your package窶

    17.1.ツPackage directory

    First of all, create a directory under the package directory for +tuning their configuration.

    When you add a new package, be sure to test it in various conditions +(see Sectionツ17.23.3, 窶廩ow to test your package窶) and also check it for coding style (see +Sectionツ17.23.2, 窶廩ow to check the coding style窶).

    17.1.ツPackage directory

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

    Some packages have been grouped by topic in a sub-directory: x11r7, qt5 and gstreamer. If your package fits in one of these categories, then create your package directory in these. @@ -2345,7 +2356,7 @@ Kernel headers

    • Dependency symbol: BR2_TOOLCHAIN_HEADERS_AT_LEAST_X_Y, (replace - X_Y with the proper version, see toolchain/toolchain-common.in) + 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) @@ -2353,7 +2364,7 @@ GCC version

      • Dependency symbol: BR2_TOOLCHAIN_GCC_AT_LEAST_X_Y, (replace - X_Y with the proper version, see toolchain/toolchain-common.in) + 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) @@ -2629,7 +2640,7 @@ The argument to be given to LIBFOO_CONFIG_SCRIPTS is the file name(s) of the shell script(s) needing fixing. All these names are relative to $(STAGING_DIR)/usr/bin and if needed multiple names can be given.

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

        Exampleツ17.1.ツConfig script: divine package

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

        So its fixup would be:

        DIVINE_CONFIG_SCRIPTS = divine-config

        Exampleツ17.2.ツConfig script: imagemagick package:

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

        Exampleツ17.1.ツConfig script: divine package

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

        So its fixup would be:

        DIVINE_CONFIG_SCRIPTS = divine-config

        Exampleツ17.2.ツConfig script: imagemagick package:

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

        So it窶冱 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 @@ -2663,8 +2674,10 @@ 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.

        For the target package, the generic-package uses the variables defined by +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窶冲 @@ -2672,17 +2685,20 @@ 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) :

        • +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窶冲 exist, it is assumed to be the same as LIBFOO_VERSION. It can also be a - revision number, branch or tag for packages that are fetched - directly from their revision control system. - Examples: - LIBFOO_VERSION = 0.1.2 - LIBFOO_VERSION = cb9d6aa9429e838f0e54faa3d455bcbab5eef057 - LIBFOO_VERSION = stable + revision number or a tag for packages that are fetched directly + from their version control system. Do not use a branch name as + version; it does not work. 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 +
          • 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 @@ -2713,7 +2729,7 @@ and Bazaar are supported URL types for retrieving packages directly from source code management systems. There is a helper function to make it easier to download source tarballs from GitHub (refer to - Sectionツ17.22.3, 窶廩ow to add a package from GitHub窶 for details). A filesystem path may be used + Sectionツ17.23.4, 窶廩ow 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. @@ -2743,7 +2759,7 @@ 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 $(DL_DIR). + 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 @@ -2807,7 +2823,7 @@ source directory into the package窶冱 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ツ17.20.1, 窶弑sing the POST_RSYNC hook窶. + Sectionツ17.21.1, 窶弑sing 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 @@ -2836,6 +2852,13 @@ 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 @@ -2943,6 +2966,13 @@ processors can窶冲 be enlarged at run time. The default stack size for the FLAT binary format is only 4k bytes. If the application consumes more stack, append the required number here. +
        • +LIBFOO_BIN_ARCH_EXCLUDE is a space-separated list of paths (relative + to the target directory) to ignore when checking that the package + installs correctly cross-compiled binaries. You seldom need to set this + variable, unless the package installs binary blobs outside the default + locations, /lib/firmware, /usr/lib/firmware, /lib/modules, + /usr/lib/modules, and /usr/share, which are automatically excluded.

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

        LIBFOO_VERSION = 2.32

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

        • @@ -3015,8 +3045,8 @@ $(@D), which contains the directory in which the package source code has been uncompressed.
        • -$(DL_DIR) contains the path to the directory where all the downloads made - by Buildroot are stored. +$(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 @@ -3025,7 +3055,7 @@
        • Of course the $(HOST_DIR), $(STAGING_DIR) and $(TARGET_DIR) variables to install the packages properly. -

        Finally, you can also use hooks. See Sectionツ17.20, 窶廩ooks available in the various build steps窶 for more information.

        17.6.ツInfrastructure for autotools-based packages

        17.6.1.ツautotools-package tutorial

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

      Finally, you can also use hooks. See Sectionツ17.21, 窶廩ooks available in the various build steps窶 for more information.

    17.6.ツInfrastructure for autotools-based packages

    17.6.1.ツautotools-package tutorial

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

    01: ################################################################################
     02: #
     03: # libfoo
    @@ -3150,7 +3180,7 @@
     well for most autotools-based packages. However, when required, it is
     still possible to customize what is done in any particular step:

    • By adding a post-operation hook (after extract, patch, configure, - build or install). See Sectionツ17.20, 窶廩ooks available in the various build steps窶 for details. + build or install). See Sectionツ17.21, 窶廩ooks 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 @@ -3266,7 +3296,7 @@ for most CMake-based packages. However, when required, it is still possible to customize what is done in any particular step:

      • By adding a post-operation hook (after extract, patch, configure, - build or install). See Sectionツ17.20, 窶廩ooks available in the various build steps窶 for details. + build or install). See Sectionツ17.21, 窶廩ooks 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 @@ -3377,7 +3407,7 @@ for most Python-based packages. However, when required, it is still possible to customize what is done in any particular step:

        • By adding a post-operation hook (after extract, patch, configure, - build or install). See Sectionツ17.20, 窶廩ooks available in the various build steps窶 for details. + build or install). See Sectionツ17.21, 窶廩ooks 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 @@ -3735,7 +3765,7 @@ well for most rebar-based packages. However, when required, it is still possible to customize what is done in any particular step:

          • By adding a post-operation hook (after extract, patch, configure, - build or install). See Sectionツ17.20, 窶廩ooks available in the various build steps窶 for details. + build or install). See Sectionツ17.21, 窶廩ooks 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 @@ -3804,7 +3834,7 @@ 07: FOO_VERSION = 1.0 08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz 09: FOO_SITE = http://www.foosoftware.org/download -10: FOO_LICENSE = GPLv3+ +10: FOO_LICENSE = GPL-3.0+ 11: FOO_LICENSE_FILES = COPYING 12: FOO_INSTALL_STAGING = YES 13: @@ -3815,7 +3845,7 @@ 18: --buildtype $(if $(BR2_ENABLE_DEBUG),debug,release) \ 19: --cross-file $(HOST_DIR)/etc/meson/cross-compilation.conf 20: -21: FOO_NINJA_OPTS = $(if $(VERBOSE),-v) +21: FOO_NINJA_OPTS = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS) 22: 23: ifeq ($(BR2_PACKAGE_BAZ),y) 24: FOO_CONF_OPTS += -Dbaz @@ -3889,7 +3919,7 @@ 07: FOO_VERSION = 1.0 08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz 09: FOO_SITE = http://www.foosoftware.org/download -10: FOO_LICENSE = GPLv3+ +10: FOO_LICENSE = GPL-3.0+ 11: FOO_LICENSE_FILES = COPYING 12: 13: FOO_DEPENDENCIES = host-cargo @@ -3939,10 +3969,88 @@ $(HOST_DIR)/share/cargo.

            This dependency download mechanism is not convenient when performing an offline build, as Cargo will fail to fetch the dependencies. In that case, it is advised to generate a tarball of the dependencies using the cargo vendor and add it to -FOO_EXTRA_DOWNLOADS.

        17.17.ツInfrastructure for packages building kernel modules

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

      17.17.ツInfrastructure for Go packages

      This infrastructure applies to Go packages that use the standard +build system and use bundled dependencies.

      17.17.1.ツgolang-package tutorial

      First, let窶冱 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.

      17.17.2.ツgolang-package reference

      In their Config.in file, packages using the golang-package +infrastructure should depend on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS +and BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS because Buildroot will +automatically add a dependency on host-go to such packages.

      The main macro of the Go package infrastructure is +golang-package. It is similar to the generic-package macro. Only +target packages are supported with golang-package.

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

      All the package metadata information variables that exist in the +generic package infrastructure +Sectionツ17.5.2, 窶generic-package reference窶 also +exist in the Go infrastructure: FOO_VERSION, FOO_SOURCE, +FOO_PATCH, FOO_SITE, FOO_SUBDIR, FOO_DEPENDENCIES, +FOO_LICENSE, FOO_LICENSE_FILES, FOO_INSTALL_STAGING, etc.

      Note that it is not necessary to add host-go in the +FOO_DEPENDENCIES variable of a package, since this basic dependency +is automatically added as needed by the Go package infrastructure.

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

      • +If your package need a custom GOPATH to be compiled in, you can + use the FOO_WORKSPACE variable. The GOPATH being used will be + <package-srcdir>/<FOO_WORKSPACE>. If FOO_WORKSPACE is not + specified, it defaults to _gopath. +
      • +FOO_SRC_SUBDIR is the sub-directory where your source will be + compiled relatively to the GOPATH. An example value is + github.com/bar/foo. If FOO_SRC_SUBDIR is not specified, it + defaults to a value infered from the FOO_SITE variable. +
      • +FOO_LDFLAGS and FOO_TAGS can be used to pass respectively the + LDFLAGS or the TAGS to the go build command. +
      • +FOO_BUILD_TARGETS can be used to pass the list of targets that + should be built. If FOO_BUILD_TARGETS is not specified, it + defaults to .. We then have two cases: +

        • +FOO_BUILD_TARGETS is .. In this case, we assume only one binary + will be produced, and that by default we name it after the package + name. If that is not appropriate, the name of the produced binary + can be overridden using FOO_BIN_NAME. +
        • +FOO_BUILD_TARGETS is not .. In this case, we iterate over the + values to build each target, and for each produced a binary that is + the non-directory component of the target. For example if + FOO_BUILD_TARGETS = cmd/docker cmd/dockerd the binaries produced + are docker and dockerd. +
      • +FOO_INSTALL_BINS can be used to pass the list of binaries that + should be installed in /usr/bin on the target. If + FOO_INSTALL_BINS is not specified, it defaults to the lower-case + name of package. +

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

      • +By adding a post-operation hook (after extract, patch, configure, + build or install). See Sectionツ17.21, 窶廩ooks 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. +

      17.18.ツ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窶冱 helper infrastructure supports either case.

      17.17.1.ツkernel-module tutorial

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

      17.18.1.ツkernel-module tutorial

      Let窶冱 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
      @@ -3995,7 +4103,7 @@
       the kernel module located in sub-directory driver/base and, if libbar
       is enabled, the kernel module located in sub-directory driver/bar, and
       defines the variable KVERSION to be passed to the Linux buildsystem
      -when building the module(s).

      17.17.2.ツkernel-module reference

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

      17.18.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窶冱 .mk needs access @@ -4031,7 +4139,7 @@

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

    17.18.ツInfrastructure for asciidoc documents

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

    17.19.ツ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 @@ -4049,7 +4157,7 @@ br2-external tree Sectionツ9.2, 窶廳eeping customizations outside of Buildroot窶. This allows documentation for a br2-external tree to match the Buildroot documentation, as it will be -rendered to the same formats and use the same layout and theme.

      17.18.1.ツasciidoc-document tutorial

      Whereas package infrastructures are suffixed with -package, the document +rendered to the same formats and use the same layout and theme.

      17.19.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: #
      @@ -4063,7 +4171,7 @@
       Buildroot will not attempt to download anything to render a document.
       Thus, you must indicate where the sources are. Usually, the string
       above is sufficient for a document with no sub-directory structure.

      On line 8, we call the asciidoc-document function, which generates all -the Makefile code necessary to render the document.

      17.18.2.ツasciidoc-document reference

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

      17.19.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.
      • @@ -4075,7 +4183,7 @@ host-packages) that must be built before building this document. If a hook of your document needs to access the Kconfig structure, you may add prepare-kconfig to the list of dependencies. -

      There are also additional hooks (see Sectionツ17.20, 窶廩ooks available in the various build steps窶 for general information +

    There are also additional hooks (see Sectionツ17.21, 窶廩ooks 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 @@ -4122,8 +4230,8 @@ 28: endef 29: FOO_CHECK_DEPENDENCIES_PDF_HOOKS += FOO_CHECK_MY_OTHER_PROG 30: -31: $(eval $(call asciidoc-document))

    17.19.ツInfrastructure specific to the Linux kernel package

    The Linux kernel package can use some specific infrastructures based on package -hooks for building Linux kernel tools or/and building Linux kernel extensions.

    17.19.1.ツlinux-kernel-tools

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

    17.20.ツInfrastructure specific to the Linux kernel package

    The Linux kernel package can use some specific infrastructures based on package +hooks for building Linux kernel tools or/and building Linux kernel extensions.

    17.20.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 @@ -4175,7 +4283,7 @@ 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.

    17.19.2.ツlinux-kernel-extensions

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

    17.20.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窶冱 Linux kernel extensions infrastructure provides @@ -4213,7 +4321,7 @@ $(FOO_VERSION)窶ヲ as well as all the Linux variables, like: $(LINUX_VERSION) or $(LINUX_VERSION_PROBED), $(KERNEL_ARCH)窶ヲ See the definition of those kernel variables -Sectionツ17.17.2, 窶kernel-module reference窶.

    17.20.ツHooks available in the various build steps

    The generic infrastructure (and as a result also the derived autotools +Sectionツ17.18.2, 窶kernel-module reference窶.

    17.21.ツ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窶冲 really useful for generic packages, since the .mk @@ -4269,7 +4377,7 @@ action2 endef -LIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP

    17.20.1.ツUsing the POST_RSYNC hook

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

    17.21.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 @@ -4284,10 +4392,10 @@ $(SRCDIR): the path to the overridden source directory

  • $(@D): the path to the build directory -
  • 17.20.2.ツTarget-finalize hook

    Packages may also register hooks in LIBFOO_TARGET_FINALIZE_HOOKS. +

    17.21.2.ツTarget-finalize hook

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

    17.21.ツGettext integration and interaction with packages

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

    17.22.ツ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 @@ -4333,7 +4441,7 @@

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

    17.22.1.ツPackage name, config entry name and makefile variable relationship

    In Buildroot, there is some relationship between:

    • +

    17.23.ツTips and tricks

    17.23.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);
    • @@ -4355,7 +4463,14 @@ the *.mk file variable prefix is the upper case package name with . and - characters substituted with _ (e.g.: FOO_BAR_BOO_VERSION). -

    17.22.2.ツHow to test your package

    Once you have added your new package, it is important that you test it +

    17.23.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/*

    17.23.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 @@ -4373,9 +4488,12 @@ BR2_PACKAGE_LIBCURL=y BR2_PACKAGE_CURL=y BR2_PACKAGE_OPENSSL=y

    Then run the test-pkg script, by telling it what config snippet to use -and what package to test:

    $ ./utils/test-pkg -c libcurl.config -p libcurl

    This will try to build your package against all the toolchains used -by the autobuilders (except for the internal toolchains, because it takes -too long to do so). The output lists all toolchains and the corresponding +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
    @@ -4412,7 +4530,7 @@
     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

    17.22.3.ツHow to add a package from GitHub

    Packages on GitHub often don窶冲 have a download area with release tarballs. +help by running:

    $ ./utils/test-pkg -h

    17.23.4.ツHow to add a package from GitHub

    Packages on GitHub often don窶冲 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
    @@ -4439,7 +4557,7 @@
     On the other hand, if there窶冱 is only the "Source code" link, then
       it窶冱 an automatically generated tarball and you should use the
       github helper function.
    -

    17.23.ツConclusion

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

    17.24.ツ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窶冲 forget to send a patch to the Buildroot mailing list (see @@ -4762,7 +4880,9 @@ yourself to the DEVELOPERS file. This should be done in the same patch creating or modifying the package. See the DEVELOPERS file Chapterツ22, DEVELOPERS file and get-developers -for more information.

    21.5.2.ツPreparing a patch series

    Starting from the changes committed in your local git view, rebase +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ツ17.23.2, 窶廩ow to check the coding style窶 for more information).

    21.5.2.ツPreparing a patch series

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

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

    Now, you are ready to generate then submit your patch set.

    To generate it, run:

    $ git format-patch -M -n -s -o outgoing origin/master

    This will generate patch files in the outgoing subdirectory, @@ -4782,7 +4902,7 @@

  • deep impact of the changes in the rest of the project;
  • -RFC [4]; +RFC [4];
  • whenever you feel it will help presenting your work, your choices, the review process, etc. @@ -4864,7 +4984,7 @@ preserve Unix-style line terminators when downloading raw pastes. Following pastebin services are known to work correctly: - https://gist.github.com/ -- http://code.bulix.org/



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

    Chapterツ22.ツDEVELOPERS file and get-developers

    The main Buildroot directory contains a file named DEVELOPERS that +- http://code.bulix.org/



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

    Chapterツ22.ツDEVELOPERS file and get-developers

    The main Buildroot directory contains a file named DEVELOPERS that lists the developers involved with various areas of Buildroot. Thanks to this file, the get-developer tool allows to:

    • Calculate the list of developers to whom patches should be sent, by diff --git a/buildroot/docs/manual/manual.pdf b/buildroot/docs/manual/manual.pdf index 229ba0045d0061e3255335473938d7c800e592e9..34181fc72deaefee00e378adea8f3d363aea86f2 100644 GIT binary patch delta 306554 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

      buW8CP|=O=^6)0DUOEPL`N~KU{)4 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

      `T8T0bRlG~0t<&WBD}<>VPFcsx=A*5 zIFg@nkaSgc#(tDBeQe5Ty03kS_GlcXQ9a|*&|U3f-z6Dx4$0tuGMXstx*Wes)5#R77W3>Dy{ znZC1{5mZ3BGr%`chZF<0MMsqBj`bDWEuwHjIZixs?h)^iqF(+b`Q#QkS$U_hH|LS8 zfATz7i;MF~Z?QvmQa}9h�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 z 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%0DpP)RSLSdc2G>Zk=mlT)V+v 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 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 + Chapterツ9.ツProject-specific customization Typical actions you may need to perform for a given project are: @@ -3135,13 +3150,14 @@ Table of Contents 17.14. Infrastructure for Waf-based packages 17.15. Integration of Meson-based packages 17.16. Integration of Cargo-based packages - 17.17. Infrastructure for packages building kernel modules - 17.18. Infrastructure for asciidoc documents - 17.19. Infrastructure specific to the Linux kernel package - 17.20. Hooks available in the various build steps - 17.21. Gettext integration and interaction with packages - 17.22. Tips and tricks - 17.23. Conclusion + 17.17. Infrastructure for Go packages + 17.18. Infrastructure for packages building kernel modules + 17.19. Infrastructure for asciidoc documents + 17.20. Infrastructure specific to the Linux kernel package + 17.21. Hooks available in the various build steps + 17.22. Gettext integration and interaction with packages + 17.23. Tips and tricks + 17.24. Conclusion 18. Patching a package @@ -3390,8 +3406,10 @@ 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ツ17.22.2, 窶廩ow to test your package窶 +When you add a new package, be sure to test it in various conditions +(see Sectionツ17.23.3, 窶廩ow to test your package窶) and also check it +for coding style (see Sectionツ17.23.2, 窶廩ow to check the coding +style窶). 17.1.ツPackage directory @@ -3662,14 +3680,13 @@ the text to use in the comment. + Dependency symbol: BR2_TOOLCHAIN_HEADERS_AT_LEAST_X_Y, (replace X_Y with the proper version, see toolchain/ - toolchain-common.in) + 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/ - toolchain-common.in) + 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 @@ -4076,6 +4093,8 @@ 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: @@ -4092,10 +4111,14 @@ 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窶冲 exist, it is assumed to be the same as LIBFOO_VERSION. It can also be a - revision number, branch or tag for packages that are fetched - directly from their revision control system. Examples: - LIBFOO_VERSION = 0.1.2 LIBFOO_VERSION = - cb9d6aa9429e838f0e54faa3d455bcbab5eef057 LIBFOO_VERSION = stable + revision number or a tag for packages that are fetched directly + from their version control system. Do not use a branch name as + version; it does not work. 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 * 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 @@ -4123,7 +4146,7 @@ information is (assuming the package name is libfoo) : Mercurial, and Bazaar are supported URL types for retrieving packages directly from source code management systems. There is a helper function to make it easier to download source tarballs - from GitHub (refer to Sectionツ17.22.3, 窶廩ow to add a package from + from GitHub (refer to Sectionツ17.23.4, 窶廩ow 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 @@ -4148,7 +4171,7 @@ information is (assuming the package name is libfoo) : 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 $ - (DL_DIR). + (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 @@ -4200,7 +4223,7 @@ information is (assuming the package name is libfoo) : source directory into the package窶冱 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ツ17.20.1, 窶弑sing the POST_RSYNC hook窶. + see Sectionツ17.21.1, 窶弑sing 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). @@ -4224,6 +4247,13 @@ information is (assuming the package name is libfoo) : installed before the configuration of the current package starts. In a similar way, HOST_LIBFOO_DEPENDENCIES lists the dependencies for the current host package. + * LIBFOO_EXTRACT_DEPENDENCIES lists the dependencies (in terms of + package name) that are required for the current target package to + be extracted. These dependencies are guaranteed to be compiled + and installed before the extract step of the current package + starts. This is only used internally by the package + infrastructure, and should typically not be used directly by + packages. * LIBFOO_PATCH_DEPENDENCIES lists the dependencies (in terms of package name) that are required for the current package to be patched. These dependencies are guaranteed to be extracted and @@ -4324,6 +4354,13 @@ information is (assuming the package name is libfoo) : The default stack size for the FLAT binary format is only 4k bytes. If the application consumes more stack, append the required number here. + * LIBFOO_BIN_ARCH_EXCLUDE is a space-separated list of paths + (relative to the target directory) to ignore when checking that + the package installs correctly cross-compiled binaries. You + seldom need to set this variable, unless the package installs + binary blobs outside the default locations, /lib/firmware, /usr/ + lib/firmware, /lib/modules, /usr/lib/modules, and /usr/share, + which are automatically excluded. The recommended way to define these variables is to use the following syntax: @@ -4399,15 +4436,15 @@ In the action definitions, you can use the following variables: runtime configuration file, a splashscreen image窶ヲ * $(@D), which contains the directory in which the package source code has been uncompressed. - * $(DL_DIR) contains the path to the directory where all the - downloads made by Buildroot are stored. + * $(LIBFOO_DL_DIR) contains the path to the directory where all the + downloads made by Buildroot for libfoo are stored in. * $(TARGET_CC), $(TARGET_LD), etc. to get the target cross-compilation utilities * $(TARGET_CROSS) to get the cross-compilation toolchain prefix * Of course the $(HOST_DIR), $(STAGING_DIR) and $(TARGET_DIR) variables to install the packages properly. -Finally, you can also use hooks. See Sectionツ17.20, 窶廩ooks available +Finally, you can also use hooks. See Sectionツ17.21, 窶廩ooks available in the various build steps窶 for more information. 17.6.ツInfrastructure for autotools-based packages @@ -4552,7 +4589,7 @@ well for most autotools-based packages. However, when required, it is still possible to customize what is done in any particular step: * By adding a post-operation hook (after extract, patch, configure, - build or install). See Sectionツ17.20, 窶廩ooks available in the + build or install). See Sectionツ17.21, 窶廩ooks 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 @@ -4691,7 +4728,7 @@ well for most CMake-based packages. However, when required, it is still possible to customize what is done in any particular step: * By adding a post-operation hook (after extract, patch, configure, - build or install). See Sectionツ17.20, 窶廩ooks available in the + build or install). See Sectionツ17.21, 窶廩ooks 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 @@ -4844,7 +4881,7 @@ well for most Python-based packages. However, when required, it is still possible to customize what is done in any particular step: * By adding a post-operation hook (after extract, patch, configure, - build or install). See Sectionツ17.20, 窶廩ooks available in the + build or install). See Sectionツ17.21, 窶廩ooks 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 @@ -5419,7 +5456,7 @@ well for most rebar-based packages. However, when required, it is still possible to customize what is done in any particular step: * By adding a post-operation hook (after extract, patch, configure, - build or install). See Sectionツ17.20, 窶廩ooks available in the + build or install). See Sectionツ17.21, 窶廩ooks 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 @@ -5521,7 +5558,7 @@ for such a package. Let窶冱 start with an example: 07: FOO_VERSION = 1.0 08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz 09: FOO_SITE = http://www.foosoftware.org/download -10: FOO_LICENSE = GPLv3+ +10: FOO_LICENSE = GPL-3.0+ 11: FOO_LICENSE_FILES = COPYING 12: FOO_INSTALL_STAGING = YES 13: @@ -5532,7 +5569,7 @@ for such a package. Let窶冱 start with an example: 18: --buildtype $(if $(BR2_ENABLE_DEBUG),debug,release) \ 19: --cross-file $(HOST_DIR)/etc/meson/cross-compilation.conf 20: -21: FOO_NINJA_OPTS = $(if $(VERBOSE),-v) +21: FOO_NINJA_OPTS = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS) 22: 23: ifeq ($(BR2_PACKAGE_BAZ),y) 24: FOO_CONF_OPTS += -Dbaz @@ -5629,7 +5666,7 @@ for such a package. Let窶冱 start with an example: 07: FOO_VERSION = 1.0 08: FOO_SOURCE = foo-$(FOO_VERSION).tar.gz 09: FOO_SITE = http://www.foosoftware.org/download -10: FOO_LICENSE = GPLv3+ +10: FOO_LICENSE = GPL-3.0+ 11: FOO_LICENSE_FILES = COPYING 12: 13: FOO_DEPENDENCIES = host-cargo @@ -5695,7 +5732,113 @@ an offline build, as Cargo will fail to fetch the dependencies. In that case, it is advised to generate a tarball of the dependencies using the cargo vendor and add it to FOO_EXTRA_DOWNLOADS. -17.17.ツInfrastructure for packages building kernel modules +17.17.ツInfrastructure for Go packages + +This infrastructure applies to Go packages that use the standard +build system and use bundled dependencies. + +17.17.1.ツgolang-package tutorial + +First, let窶冱 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. + +17.17.2.ツgolang-package reference + +In their Config.in file, packages using the golang-package +infrastructure should depend on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS and +BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS because Buildroot will +automatically add a dependency on host-go to such packages. + +The main macro of the Go package infrastructure is golang-package. It +is similar to the generic-package macro. Only target packages are +supported with golang-package. + +Just like the generic infrastructure, the Go infrastructure works by +defining a number of variables before calling the golang-package. + +All the package metadata information variables that exist in the +generic package infrastructure Sectionツ17.5.2, 窶徃eneric-package +reference窶 also exist in the Go infrastructure: FOO_VERSION, +FOO_SOURCE, FOO_PATCH, FOO_SITE, FOO_SUBDIR, FOO_DEPENDENCIES, +FOO_LICENSE, FOO_LICENSE_FILES, FOO_INSTALL_STAGING, etc. + +Note that it is not necessary to add host-go in the FOO_DEPENDENCIES +variable of a package, since this basic dependency is automatically +added as needed by the Go package infrastructure. + +A few additional variables, specific to the Go infrastructure, can +optionally be defined, depending on the package窶冱 needs. Many of them +are only useful in very specific cases, typical packages will +therefore only use a few of them, or none. + + * If your package need a custom GOPATH to be compiled in, you can + use the FOO_WORKSPACE variable. The GOPATH being used will be + /. If FOO_WORKSPACE is not + specified, it defaults to _gopath. + * FOO_SRC_SUBDIR is the sub-directory where your source will be + compiled relatively to the GOPATH. An example value is github.com + /bar/foo. If FOO_SRC_SUBDIR is not specified, it defaults to a + value infered from the FOO_SITE variable. + * FOO_LDFLAGS and FOO_TAGS can be used to pass respectively the + LDFLAGS or the TAGS to the go build command. + * FOO_BUILD_TARGETS can be used to pass the list of targets that + should be built. If FOO_BUILD_TARGETS is not specified, it + defaults to .. We then have two cases: + + + FOO_BUILD_TARGETS is .. In this case, we assume only one + binary will be produced, and that by default we name it after + the package name. If that is not appropriate, the name of the + produced binary can be overridden using FOO_BIN_NAME. + + FOO_BUILD_TARGETS is not .. In this case, we iterate over the + values to build each target, and for each produced a binary + that is the non-directory component of the target. For + example if FOO_BUILD_TARGETS = cmd/docker cmd/dockerd the + binaries produced are docker and dockerd. + * FOO_INSTALL_BINS can be used to pass the list of binaries that + should be installed in /usr/bin on the target. If + FOO_INSTALL_BINS is not specified, it defaults to the lower-case + name of package. + +With the Go infrastructure, all the steps required to build and +install the packages are already defined, and they generally work +well for most Go-based packages. However, when required, it is still +possible to customize what is done in any particular step: + + * By adding a post-operation hook (after extract, patch, configure, + build or install). See Sectionツ17.21, 窶廩ooks 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. + +17.18.ツ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 @@ -5703,7 +5846,7 @@ only contain a kernel module, other packages contain programs and libraries in addition to kernel modules. Buildroot窶冱 helper infrastructure supports either case. -17.17.1.ツkernel-module tutorial +17.18.1.ツkernel-module tutorial Let窶冱 start with an example on how to prepare a simple package that only builds a kernel module, and no other component: @@ -5779,7 +5922,7 @@ libbar is enabled, the kernel module located in sub-directory driver/ bar, and defines the variable KVERSION to be passed to the Linux buildsystem when building the module(s). -17.17.2.ツkernel-module reference +17.18.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 @@ -5827,7 +5970,7 @@ You may also reference (but you may not set!) those variables: * KERNEL_ARCH contains the name of the current architecture, like arm, mips窶ヲ -17.18.ツInfrastructure for asciidoc documents +17.19.ツ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 @@ -5849,7 +5992,7 @@ Buildroot窶. This allows documentation for a br2-external tree to match the Buildroot documentation, as it will be rendered to the same formats and use the same layout and theme. -17.18.1.ツasciidoc-document tutorial +17.19.1.ツasciidoc-document tutorial Whereas package infrastructures are suffixed with -package, the document infrastructures are suffixed with -document. So, the @@ -5876,7 +6019,7 @@ structure. On line 8, we call the asciidoc-document function, which generates all the Makefile code necessary to render the document. -17.18.2.ツasciidoc-document reference +17.19.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) : @@ -5891,7 +6034,7 @@ information is (assuming the document name is foo) : If a hook of your document needs to access the Kconfig structure, you may add prepare-kconfig to the list of dependencies. -There are also additional hooks (see Sectionツ17.20, 窶廩ooks available +There are also additional hooks (see Sectionツ17.21, 窶廩ooks 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: @@ -5944,13 +6087,13 @@ Here is a complete example that uses all variables and all hooks: 30: 31: $(eval $(call asciidoc-document)) -17.19.ツInfrastructure specific to the Linux kernel package +17.20.ツInfrastructure specific to the Linux kernel package The Linux kernel package can use some specific infrastructures based on package hooks for building Linux kernel tools or/and building Linux kernel extensions. -17.19.1.ツlinux-kernel-tools +17.20.1.ツlinux-kernel-tools Buildroot offers a helper infrastructure to build some userspace tools for the target available within the Linux kernel sources. Since @@ -6027,7 +6170,7 @@ 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. -17.19.2.ツlinux-kernel-extensions +17.20.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 @@ -6082,10 +6225,10 @@ modify the Linux kernel tree; this is specific to the linux extension and can use the variables defined by the foo package, like: $ (FOO_DIR) or $(FOO_VERSION)窶ヲ as well as all the Linux variables, like: $(LINUX_VERSION) or $(LINUX_VERSION_PROBED), $(KERNEL_ARCH)窶ヲ -See the definition of those kernel variables Sectionツ17.17.2, +See the definition of those kernel variables Sectionツ17.18.2, 窶很ernel-module reference窶. -17.20.ツHooks available in the various build steps +17.21.ツ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. @@ -6130,7 +6273,7 @@ endef LIBFOO_POST_PATCH_HOOKS += LIBFOO_POST_PATCH_FIXUP -17.20.1.ツUsing the POST_RSYNC hook +17.21.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 @@ -6150,14 +6293,14 @@ among others, use the following variables: * $(SRCDIR): the path to the overridden source directory * $(@D): the path to the build directory -17.20.2.ツTarget-finalize hook +17.21.2.ツTarget-finalize hook Packages may also register hooks in LIBFOO_TARGET_FINALIZE_HOOKS. These hooks are run after all packages are built, but before the filesystem images are generated. They are seldom used, and your package probably do not need them. -17.21.ツGettext integration and interaction with packages +17.22.ツGettext integration and interaction with packages Many packages that support internationalization use the gettext library. Dependencies for this library are fairly complicated and @@ -6214,9 +6357,9 @@ package should: * not add any gettext dependency in the DEPENDENCIES variable of their .mk file. -17.22.ツTips and tricks +17.23.ツTips and tricks -17.22.1.ツPackage name, config entry name and makefile variable +17.23.1.ツPackage name, config entry name and makefile variable relationship In Buildroot, there is some relationship between: @@ -6240,7 +6383,33 @@ the following rules: . and - characters substituted with _ (e.g.: FOO_BAR_BOO_VERSION). -17.22.2.ツHow to test your package +17.23.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/* + +17.23.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? @@ -6278,10 +6447,15 @@ use and what package to test: $ ./utils/test-pkg -c libcurl.config -p libcurl -This will try to build your package against all the toolchains used -by the autobuilders (except for the internal toolchains, because it -takes too long to do so). The output lists all toolchains and the -corresponding result (excerpt, results are fake): +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 @@ -6326,7 +6500,7 @@ help by running: $ ./utils/test-pkg -h -17.22.3.ツHow to add a package from GitHub +17.23.4.ツHow to add a package from GitHub Packages on GitHub often don窶冲 have a download area with release tarballs. However, it is possible to download tarballs directly from @@ -6366,7 +6540,7 @@ tag: then it窶冱 an automatically generated tarball and you should use the github helper function. -17.23.ツConclusion +17.24.ツ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 @@ -6831,6 +7005,11 @@ yourself to the DEVELOPERS file. This should be done in the same patch creating or modifying the package. See the DEVELOPERS file Chapterツ22, DEVELOPERS file and get-developers 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ツ17.23.2, 窶廩ow to check the coding style窶 for more +information). + 21.5.2.ツPreparing a patch series Starting from the changes committed in your local git view, rebase diff --git a/buildroot/docs/manual/using-buildroot-development.txt b/buildroot/docs/manual/using-buildroot-development.txt index 1071de51327..3389a37b396 100644 --- a/buildroot/docs/manual/using-buildroot-development.txt +++ b/buildroot/docs/manual/using-buildroot-development.txt @@ -81,3 +81,19 @@ 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 +------------------ diff --git a/buildroot/docs/website/download.html b/buildroot/docs/website/download.html index cf99b22cd13..1ae05e9c623 100644 --- a/buildroot/docs/website/download.html +++ b/buildroot/docs/website/download.html @@ -8,37 +8,37 @@

      diff --git a/buildroot/docs/website/favicon.png b/buildroot/docs/website/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..e87ea528c0bfaaa5450047f6114ae5e5ca52c9cf GIT binary patch literal 1800 zcmZ`(c{mjM8vfZDOPK82X@(-%8Xh6b8B;SDrxBBeWQj4hEOo3&jHQnC3dz`}D@ zQl{)X*Ir!4R$>Y!I`!s7slR0DvV0KgtsA}<0EiU45gCIH410Az0$)Y+MG zjbk2vSfat<(fqUVc@|d@x@~nm7yuE;qvZj41#(;w5`x8HAalIDPzWSBQ*#Uefe|bk zWpCA8^W+bIXK(55q1~p{-xor=iTAp~@W{N96WF}hcsqWP1dVIiP!R%YR9nJ>Zq3Ya z{Fk{^MTbNc3ZC!?*u9*%IHIN(;THj&=i z_%K4Fs|TpCj&q>jnnTfI7zmai`8hdyDSNQ(?6#3EU)P?YA0vD^NlGpbF7XWCz{;QL zGd01TydnV4>N!=lNjp_{8fwH>4m6bw(}vybBl-&3N}dOie+TS;{KWzMx#ozJ6860)UR#b3Bfxm%h3}ZW*k7xdQ1sqqC0WNu+GOA6_vl zj+G+I@bmcan$MA{sXNmrRSh?tsWNNdsuSb4_agKkOPKRo9eWsWZzW9TsYLKlIj56s zZvPM=<26z}O1Ea+eJXx;YaUVfG$~f!oTfISzUl5p3){2qLCoRn1)8!G*xf-%V2kla z2$*}m+Tk>9Ostkm=D2dk6sZe*WIJI;IWOkH7#i1>o7)6SP@M8N33SCByB8iLq$$*E zI%th3Q$)L@ECo;L-}BLg*aJDpexE(u zeMzkn;U?(%hA?z~UgvO=;KdFWE1NQLf%wp#)qH--cf;b77qTXqsM@M7p`?`JEiA#F z8ZBK7e=_x@BfP9k#~&H_TLz3KZkVr_IL-CDs+7vk`ypnUc=heAnJnf@8 zq-|T)s5Nr+d)4;~st!dD77=O<1N)G{IdMpQ(I>yiNNYuN{`J*I;>izh49stAe4g~I zzzaFkMJ?TH@l|dS#PR6&^edOCVYJj6V#jA!;1zzmQ39zXR(jhVLVy4LIB9p;ot^D5 zf`f3UM}@%!Br=8{{>&OGCEQ7P)mi&-GQn=KE|54|Dn9kn3uahm;@Ud)Rnx_m%D`ov zeeV8Fwl9h@en)?e=~ct=Q0iv0*`@2_H2*G&?z~6}fcI6aCzm`5IR%v7UxW>fr|gXWtLT3Z_ir9VHrk*qabZf` zp`Y7RhMg3NT74QaDL?o6$GpXBITI7Tf(fD*C1lBU-;R^@dW&kk??(l#rD5(xmWQnc zp8T-!>*^h*BtUe@5z%NgO?zpfxjr(elzGrqru5>k6}o6)di!=eYjB{xbjT#7$L^5j~^#Q!FM9zxeh8==RAy{>^V!jKD1gsw3Hk;$j#`9Fn#AWvVf WyZ^tyaHWoO3jm9;LBF|pGwyHEFFDu% literal 0 HcmV?d00001 diff --git a/buildroot/docs/website/footer.html b/buildroot/docs/website/footer.html index 279c8b1b5c7..2811fc5c0e3 100644 --- a/buildroot/docs/website/footer.html +++ b/buildroot/docs/website/footer.html @@ -1,6 +1,6 @@ - + diff --git a/buildroot/docs/website/news.html b/buildroot/docs/website/news.html index f729a595432..c14b108d1c7 100644 --- a/buildroot/docs/website/news.html +++ b/buildroot/docs/website/news.html @@ -9,6 +9,111 @@

      News

        +
      • +
        +
        +
        +

        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.

        +
        +
        +
      • +
      • @@ -20,7 +125,8 @@

        2018.02 released

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

        diff --git a/buildroot/fs/common.mk b/buildroot/fs/common.mk index 6d579db8100..9baf3677292 100644 --- a/buildroot/fs/common.mk +++ b/buildroot/fs/common.mk @@ -28,20 +28,87 @@ # macro will automatically generate a compressed filesystem image. FS_DIR = $(BUILD_DIR)/buildroot-fs -FAKEROOT_SCRIPT = $(FS_DIR)/fakeroot.fs FULL_DEVICE_TABLE = $(FS_DIR)/device_table.txt ROOTFS_DEVICE_TABLES = $(call qstrip,$(BR2_ROOTFS_DEVICE_TABLE) \ $(BR2_ROOTFS_STATIC_DEVICE_TABLE)) USERS_TABLE = $(FS_DIR)/users_table.txt ROOTFS_USERS_TABLES = $(call qstrip,$(BR2_ROOTFS_USERS_TABLES)) +ifeq ($(BR2_REPRODUCIBLE),y) +define ROOTFS_REPRODUCIBLE + find $(TARGET_DIR) -print0 | xargs -0 -r touch -hd @$(SOURCE_DATE_EPOCH) +endef +endif + +ROOTFS_COMMON_TAR = $(FS_DIR)/rootfs.common.tar + +# Command to create the common tarball from the base target directory. +define ROOTFS_COMMON_TAR_CMD + tar cf $(ROOTFS_COMMON_TAR) --numeric-owner \ + --exclude=$(notdir $(TARGET_DIR_WARNING_FILE)) \ + -C $(TARGET_DIR) . +endef + +# Command to extract the common tarball into the per-rootfs target directory +define ROOTFS_COMMON_UNTAR_CMD + mkdir -p $(TARGET_DIR) + tar xf $(ROOTFS_COMMON_TAR) -C $(TARGET_DIR) +endef + +.PHONY: rootfs-common +rootfs-common: $(ROOTFS_COMMON_TAR) + +# Emulate being in a filesystem, so that we can have our own TARGET_DIR. +ROOTFS_COMMON_TARGET_DIR = $(FS_DIR)/target + +ROOTFS_COMMON_DEPENDENCIES = \ + host-fakeroot host-makedevs \ + $(if $(PACKAGES_USERS)$(ROOTFS_USERS_TABLES),host-mkpasswd) + +$(ROOTFS_COMMON_TAR): ROOTFS=COMMON +$(ROOTFS_COMMON_TAR): FAKEROOT_SCRIPT=$(FS_DIR)/fakeroot.fs +$(ROOTFS_COMMON_TAR): $(ROOTFS_COMMON_DEPENDENCIES) target-finalize + @$(call MESSAGE,"Generating common rootfs tarball") + rm -rf $(FS_DIR) + mkdir -p $(FS_DIR) + rsync -au $(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) +ifneq ($(ROOTFS_USERS_TABLES),) + cat $(ROOTFS_USERS_TABLES) >> $(USERS_TABLE) +endif + $(call PRINTF,$(PACKAGES_USERS)) >> $(USERS_TABLE) + PATH=$(BR_PATH) $(TOPDIR)/support/scripts/mkusers $(USERS_TABLE) $(TARGET_DIR) >> $(FAKEROOT_SCRIPT) +ifneq ($(ROOTFS_DEVICE_TABLES),) + cat $(ROOTFS_DEVICE_TABLES) > $(FULL_DEVICE_TABLE) +ifeq ($(BR2_ROOTFS_DEVICE_CREATION_STATIC),y) + $(call PRINTF,$(PACKAGES_DEVICES_TABLE)) >> $(FULL_DEVICE_TABLE) +endif +endif + $(call PRINTF,$(PACKAGES_PERMISSIONS_TABLE)) >> $(FULL_DEVICE_TABLE) + echo "$(HOST_DIR)/bin/makedevs -d $(FULL_DEVICE_TABLE) $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT) + $(foreach s,$(call qstrip,$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT)),\ + echo "echo '$(TERM_BOLD)>>> Executing fakeroot script $(s)$(TERM_RESET)'" >> $(FAKEROOT_SCRIPT); \ + echo $(EXTRA_ENV) $(s) $(TARGET_DIR) $(BR2_ROOTFS_POST_SCRIPT_ARGS) >> $(FAKEROOT_SCRIPT)$(sep)) + $(foreach hook,$(ROOTFS_PRE_CMD_HOOKS),\ + $(call PRINTF,$($(hook))) >> $(FAKEROOT_SCRIPT)$(sep)) + $(call PRINTF,$(ROOTFS_COMMON_TAR_CMD)) >> $(FAKEROOT_SCRIPT) + chmod a+x $(FAKEROOT_SCRIPT) + PATH=$(BR_PATH) $(HOST_DIR)/bin/fakeroot -- $(FAKEROOT_SCRIPT) + $(Q)rm -rf $(TARGET_DIR) + +rootfs-common-show-depends: + @echo $(ROOTFS_COMMON_DEPENDENCIES) + # Since this function will be called from within an $(eval ...) # all variable references except the arguments must be $$-quoted. define inner-rootfs -# extra deps -ROOTFS_$(2)_DEPENDENCIES += host-fakeroot host-makedevs \ - $$(if $$(PACKAGES_USERS)$$(ROOTFS_USERS_TABLES),host-mkpasswd) +ROOTFS_$(2)_DIR = $$(FS_DIR)/$(1) +ROOTFS_$(2)_TARGET_DIR = $$(ROOTFS_$(2)_DIR)/target + +ROOTFS_$(2)_DEPENDENCIES += rootfs-common ifeq ($$(BR2_TARGET_ROOTFS_$(2)_GZIP),y) ROOTFS_$(2)_COMPRESS_EXT = .gz @@ -72,42 +139,22 @@ ROOTFS_$(2)_COMPRESS_EXT = .xz ROOTFS_$(2)_COMPRESS_CMD = xz -9 -C crc32 -c endif -$$(BINARIES_DIR)/rootfs.$(1): target-finalize $$(ROOTFS_$(2)_DEPENDENCIES) +$$(BINARIES_DIR)/rootfs.$(1): ROOTFS=$(2) +$$(BINARIES_DIR)/rootfs.$(1): FAKEROOT_SCRIPT=$$(ROOTFS_$(2)_DIR)/fakeroot +$$(BINARIES_DIR)/rootfs.$(1): $$(ROOTFS_$(2)_DEPENDENCIES) @$$(call MESSAGE,"Generating root filesystem image rootfs.$(1)") - rm -rf $(FS_DIR) - mkdir -p $(FS_DIR) - $$(foreach hook,$$(ROOTFS_$(2)_PRE_GEN_HOOKS),$$(call $$(hook))$$(sep)) + rm -rf $$(ROOTFS_$(2)_DIR) + mkdir -p $$(ROOTFS_$(2)_DIR) echo '#!/bin/sh' > $$(FAKEROOT_SCRIPT) echo "set -e" >> $$(FAKEROOT_SCRIPT) - echo "chown -h -R 0:0 $$(TARGET_DIR)" >> $$(FAKEROOT_SCRIPT) -ifneq ($$(ROOTFS_USERS_TABLES),) - cat $$(ROOTFS_USERS_TABLES) >> $$(USERS_TABLE) -endif - $$(call PRINTF,$$(PACKAGES_USERS)) >> $$(USERS_TABLE) - PATH=$$(BR_PATH) $$(TOPDIR)/support/scripts/mkusers $$(USERS_TABLE) $$(TARGET_DIR) >> $$(FAKEROOT_SCRIPT) -ifneq ($$(ROOTFS_DEVICE_TABLES),) - cat $$(ROOTFS_DEVICE_TABLES) > $$(FULL_DEVICE_TABLE) -ifeq ($$(BR2_ROOTFS_DEVICE_CREATION_STATIC),y) - $$(call PRINTF,$$(PACKAGES_DEVICES_TABLE)) >> $$(FULL_DEVICE_TABLE) -endif -endif - $$(call PRINTF,$$(PACKAGES_PERMISSIONS_TABLE)) >> $$(FULL_DEVICE_TABLE) - echo "$$(HOST_DIR)/bin/makedevs -d $$(FULL_DEVICE_TABLE) $$(TARGET_DIR)" >> $$(FAKEROOT_SCRIPT) - $$(foreach s,$$(call qstrip,$$(BR2_ROOTFS_POST_FAKEROOT_SCRIPT)),\ - echo "echo '$$(TERM_BOLD)>>> Executing fakeroot script $$(s)$$(TERM_RESET)'" >> $$(FAKEROOT_SCRIPT); \ - echo $$(EXTRA_ENV) $$(s) $$(TARGET_DIR) $$(BR2_ROOTFS_POST_SCRIPT_ARGS) >> $$(FAKEROOT_SCRIPT)$$(sep)) - $$(foreach hook,$$(ROOTFS_PRE_CMD_HOOKS),\ + $$(call PRINTF,$$(ROOTFS_COMMON_UNTAR_CMD)) >> $$(FAKEROOT_SCRIPT) + $$(foreach hook,$$(ROOTFS_$(2)_PRE_GEN_HOOKS),\ $$(call PRINTF,$$($$(hook))) >> $$(FAKEROOT_SCRIPT)$$(sep)) -ifeq ($$(BR2_REPRODUCIBLE),y) - echo "find $$(TARGET_DIR) -print0 | xargs -0 -r touch -hd @$$(SOURCE_DATE_EPOCH)" >> $$(FAKEROOT_SCRIPT) -endif + $$(call PRINTF,$$(ROOTFS_REPRODUCIBLE)) >> $$(FAKEROOT_SCRIPT) $$(call PRINTF,$$(ROOTFS_$(2)_CMD)) >> $$(FAKEROOT_SCRIPT) - $$(foreach hook,$$(ROOTFS_POST_CMD_HOOKS),\ - $$(call PRINTF,$$($$(hook))) >> $$(FAKEROOT_SCRIPT)$$(sep)) chmod a+x $$(FAKEROOT_SCRIPT) - rm -f $$(TARGET_DIR_WARNING_FILE) PATH=$$(BR_PATH) $$(HOST_DIR)/bin/fakeroot -- $$(FAKEROOT_SCRIPT) - $$(INSTALL) -m 0644 support/misc/target-dir-warning.txt $$(TARGET_DIR_WARNING_FILE) + $(Q)rm -rf $$(TARGET_DIR) ifneq ($$(ROOTFS_$(2)_COMPRESS_CMD),) PATH=$$(BR_PATH) $$(ROOTFS_$(2)_COMPRESS_CMD) $$@ > $$@$$(ROOTFS_$(2)_COMPRESS_EXT) endif diff --git a/buildroot/fs/cpio/Config.in b/buildroot/fs/cpio/Config.in index 679959d2228..83a7fa5824d 100644 --- a/buildroot/fs/cpio/Config.in +++ b/buildroot/fs/cpio/Config.in @@ -1,9 +1,9 @@ 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. + 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 diff --git a/buildroot/fs/cpio/cpio.mk b/buildroot/fs/cpio/cpio.mk index aa4d947fa56..1f0cafe62fb 100644 --- a/buildroot/fs/cpio/cpio.mk +++ b/buildroot/fs/cpio/cpio.mk @@ -15,14 +15,16 @@ 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 -PACKAGES_PERMISSIONS_TABLE += /dev/console c 622 0 0 5 1 - - -$(sep) - endif # BR2_ROOTFS_DEVICE_CREATION_STATIC ROOTFS_CPIO_PRE_GEN_HOOKS += ROOTFS_CPIO_ADD_INIT diff --git a/buildroot/fs/cramfs/Config.in b/buildroot/fs/cramfs/Config.in index 1a4e3264720..89f8ad52b8a 100644 --- a/buildroot/fs/cramfs/Config.in +++ b/buildroot/fs/cramfs/Config.in @@ -3,4 +3,24 @@ config BR2_TARGET_ROOTFS_CRAMFS help Build a cramfs root filesystem - http://sourceforge.net/projects/cramfs/ + 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/buildroot/fs/cramfs/cramfs.mk b/buildroot/fs/cramfs/cramfs.mk index f880871935f..92506388873 100644 --- a/buildroot/fs/cramfs/cramfs.mk +++ b/buildroot/fs/cramfs/cramfs.mk @@ -5,9 +5,17 @@ ################################################################################ ifeq ($(BR2_ENDIAN),"BIG") -CRAMFS_OPTS = -b +CRAMFS_OPTS = -B else -CRAMFS_OPTS = -l +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 diff --git a/buildroot/fs/ext2/Config.in b/buildroot/fs/ext2/Config.in index 27ad69fde94..74bacc11411 100644 --- a/buildroot/fs/ext2/Config.in +++ b/buildroot/fs/ext2/Config.in @@ -49,11 +49,11 @@ config BR2_TARGET_ROOTFS_EXT2_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. + 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)" @@ -65,15 +65,16 @@ config BR2_TARGET_ROOTFS_EXT2_RESBLKS 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. + 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. + 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). @@ -91,7 +92,8 @@ choice prompt "Compression method" default BR2_TARGET_ROOTFS_EXT2_NONE help - Select compressor for ext2/3/4 filesystem of the root filesystem + Select compressor for ext2/3/4 filesystem of the root + filesystem config BR2_TARGET_ROOTFS_EXT2_NONE bool "no compression" diff --git a/buildroot/fs/initramfs/Config.in b/buildroot/fs/initramfs/Config.in index 8ed9f7ebb50..9d5a3f92e61 100644 --- a/buildroot/fs/initramfs/Config.in +++ b/buildroot/fs/initramfs/Config.in @@ -10,7 +10,8 @@ config BR2_TARGET_ROOTFS_INITRAMFS 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. + 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 diff --git a/buildroot/fs/initramfs/initramfs.mk b/buildroot/fs/initramfs/initramfs.mk index b8dee18ec57..c751093214d 100644 --- a/buildroot/fs/initramfs/initramfs.mk +++ b/buildroot/fs/initramfs/initramfs.mk @@ -1,7 +1,6 @@ ################################################################################ # -# Build a kernel with an integrated initial ramdisk -# filesystem based on cpio. +# Build a kernel with an integrated initial ramdisk filesystem based on cpio. # ################################################################################ diff --git a/buildroot/fs/iso9660/iso9660.mk b/buildroot/fs/iso9660/iso9660.mk index 207c6aa39f4..a129655ce3e 100644 --- a/buildroot/fs/iso9660/iso9660.mk +++ b/buildroot/fs/iso9660/iso9660.mk @@ -35,47 +35,47 @@ ROOTFS_ISO9660_USE_INITRD = YES endif ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES) -ROOTFS_ISO9660_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp +ROOTFS_ISO9660_TMP_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp define ROOTFS_ISO9660_CREATE_TEMPDIR - $(RM) -rf $(ROOTFS_ISO9660_TARGET_DIR) - mkdir -p $(ROOTFS_ISO9660_TARGET_DIR) + $(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_TARGET_DIR = $(FS_DIR)/rootfs.iso9660.tmp +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_TARGET_DIR) + $(RM) -rf $(ROOTFS_ISO9660_TMP_TARGET_DIR) $(HOST_DIR)/bin/mkzftree -X -z 9 -p $(PARALLEL_JOBS) \ $(TARGET_DIR) \ - $(ROOTFS_ISO9660_TARGET_DIR) + $(ROOTFS_ISO9660_TMP_TARGET_DIR) endef ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_MKZFTREE ROOTFS_ISO9660_GENISOIMAGE_OPTS += -z else -ROOTFS_ISO9660_TARGET_DIR = $(TARGET_DIR) +ROOTFS_ISO9660_TMP_TARGET_DIR = $(TARGET_DIR) endif ifeq ($(BR2_TARGET_ROOTFS_ISO9660_GRUB2),y) ROOTFS_ISO9660_DEPENDENCIES += grub2 ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \ - $(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/grub.cfg + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub.cfg ROOTFS_ISO9660_BOOT_IMAGE = boot/grub/grub-eltorito.img define ROOTFS_ISO9660_INSTALL_BOOTLOADER $(INSTALL) -D -m 0644 $(BINARIES_DIR)/grub-eltorito.img \ - $(ROOTFS_ISO9660_TARGET_DIR)/boot/grub/grub-eltorito.img + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/grub/grub-eltorito.img endef else ifeq ($(BR2_TARGET_ROOTFS_ISO9660_ISOLINUX),y) ROOTFS_ISO9660_DEPENDENCIES += syslinux ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH = \ - $(ROOTFS_ISO9660_TARGET_DIR)/isolinux/isolinux.cfg + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/isolinux.cfg ROOTFS_ISO9660_BOOT_IMAGE = isolinux/isolinux.bin define ROOTFS_ISO9660_INSTALL_BOOTLOADER $(INSTALL) -D -m 0644 $(BINARIES_DIR)/syslinux/* \ - $(ROOTFS_ISO9660_TARGET_DIR)/isolinux/ + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/ $(INSTALL) -D -m 0644 $(HOST_DIR)/share/syslinux/ldlinux.c32 \ - $(ROOTFS_ISO9660_TARGET_DIR)/isolinux/ldlinux.c32 + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/isolinux/ldlinux.c32 endef endif @@ -96,7 +96,7 @@ endef # Copy the kernel to temporary filesystem define ROOTFS_ISO9660_COPY_KERNEL $(INSTALL) -D -m 0644 $(LINUX_IMAGE_PATH) \ - $(ROOTFS_ISO9660_TARGET_DIR)/boot/$(LINUX_IMAGE_NAME) + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/$(LINUX_IMAGE_NAME) endef ifeq ($(ROOTFS_ISO9660_USE_INITRD),YES) @@ -111,7 +111,7 @@ 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_TARGET_DIR)/boot/initrd + $(ROOTFS_ISO9660_TMP_TARGET_DIR)/boot/initrd $(SED) "s%__INITRD_PATH__%/boot/initrd%" \ $(ROOTFS_ISO9660_BOOTLOADER_CONFIG_PATH) endef @@ -128,12 +128,11 @@ ROOTFS_ISO9660_PRE_GEN_HOOKS += ROOTFS_ISO9660_DISABLE_EXTERNAL_INITRD endif # ROOTFS_ISO9660_USE_INITRD - define ROOTFS_ISO9660_CMD $(HOST_DIR)/bin/genisoimage -J -R -b $(ROOTFS_ISO9660_BOOT_IMAGE) \ -no-emul-boot -boot-load-size 4 -boot-info-table \ $(ROOTFS_ISO9660_GENISOIMAGE_OPTS) \ - -o $@ $(ROOTFS_ISO9660_TARGET_DIR) + -o $@ $(ROOTFS_ISO9660_TMP_TARGET_DIR) endef ifeq ($(BR2_TARGET_ROOTFS_ISO9660_HYBRID),y) diff --git a/buildroot/fs/jffs2/Config.in b/buildroot/fs/jffs2/Config.in index 1010216bd1e..44c0b10446f 100644 --- a/buildroot/fs/jffs2/Config.in +++ b/buildroot/fs/jffs2/Config.in @@ -38,8 +38,8 @@ endchoice config BR2_TARGET_ROOTFS_JFFS2_CUSTOM_EBSIZE hex "Erase block size" - depends on BR2_TARGET_ROOTFS_JFFS2_CUSTOM default 0x20000 + depends on BR2_TARGET_ROOTFS_JFFS2_CUSTOM help Set to erase size of memory @@ -68,8 +68,8 @@ config BR2_TARGET_ROOTFS_JFFS2_PAD config BR2_TARGET_ROOTFS_JFFS2_PADSIZE hex "Pad output size (0x0 = to end of EB)" - depends on BR2_TARGET_ROOTFS_JFFS2_PAD default 0x0 + depends on BR2_TARGET_ROOTFS_JFFS2_PAD help Set to 0x0 to pad to end of erase block. @@ -94,19 +94,20 @@ config BR2_TARGET_ROOTFS_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. - + 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" - depends on BR2_TARGET_ROOTFS_JFFS2_USE_CUSTOM_PAGESIZE 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. + 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/buildroot/fs/squashfs/Config.in b/buildroot/fs/squashfs/Config.in index ca9ddb22180..dde2097cb74 100644 --- a/buildroot/fs/squashfs/Config.in +++ b/buildroot/fs/squashfs/Config.in @@ -27,5 +27,8 @@ config BR2_TARGET_ROOTFS_SQUASHFS4_LZO config BR2_TARGET_ROOTFS_SQUASHFS4_XZ bool "xz" +config BR2_TARGET_ROOTFS_SQUASHFS4_ZSTD + bool "zstd" + endchoice endif diff --git a/buildroot/fs/squashfs/squashfs.mk b/buildroot/fs/squashfs/squashfs.mk index 51abd5d7d0e..34ab0486036 100644 --- a/buildroot/fs/squashfs/squashfs.mk +++ b/buildroot/fs/squashfs/squashfs.mk @@ -16,6 +16,8 @@ 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 diff --git a/buildroot/fs/tar/Config.in b/buildroot/fs/tar/Config.in index 2116edf143c..a4e375c68b6 100644 --- a/buildroot/fs/tar/Config.in +++ b/buildroot/fs/tar/Config.in @@ -50,8 +50,8 @@ endchoice config BR2_TARGET_ROOTFS_TAR_OPTIONS string "other random options to pass to tar" - depends on BR2_TARGET_ROOTFS_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/buildroot/fs/tar/tar.mk b/buildroot/fs/tar/tar.mk index e39c2fdbf1e..68149e9eb74 100644 --- a/buildroot/fs/tar/tar.mk +++ b/buildroot/fs/tar/tar.mk @@ -6,6 +6,8 @@ TAR_OPTS := $(call qstrip,$(BR2_TARGET_ROOTFS_TAR_OPTIONS)) +ROOTFS_TAR_DEPENDENCIES = $(BR2_TAR_HOST_DEPENDENCY) + define ROOTFS_TAR_CMD (cd $(TARGET_DIR); find -print0 | LC_ALL=C sort -z | \ tar $(TAR_OPTS) -cf $@ --null --no-recursion -T - --numeric-owner) diff --git a/buildroot/fs/ubi/Config.in b/buildroot/fs/ubi/Config.in index 5fa2f1f61d4..85b1c56bb0b 100644 --- a/buildroot/fs/ubi/Config.in +++ b/buildroot/fs/ubi/Config.in @@ -18,8 +18,9 @@ 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. + 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. @@ -28,9 +29,9 @@ config BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG 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. + 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. diff --git a/buildroot/fs/ubi/ubi.mk b/buildroot/fs/ubi/ubi.mk index c78feda5a35..9874e73ff6f 100644 --- a/buildroot/fs/ubi/ubi.mk +++ b/buildroot/fs/ubi/ubi.mk @@ -15,16 +15,16 @@ UBI_UBINIZE_OPTS += $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_OPTS)) ROOTFS_UBI_DEPENDENCIES = rootfs-ubifs ifeq ($(BR2_TARGET_ROOTFS_UBI_USE_CUSTOM_CONFIG),y) -UBINIZE_CONFIG_FILE_PATH = $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE)) +UBI_UBINIZE_CONFIG_FILE_PATH = $(call qstrip,$(BR2_TARGET_ROOTFS_UBI_CUSTOM_CONFIG_FILE)) else -UBINIZE_CONFIG_FILE_PATH = fs/ubi/ubinize.cfg +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;' \ - $(UBINIZE_CONFIG_FILE_PATH) > $(BUILD_DIR)/ubinize.cfg + $(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 diff --git a/buildroot/fs/yaffs2/yaffs.mk b/buildroot/fs/yaffs2/yaffs2.mk similarity index 100% rename from buildroot/fs/yaffs2/yaffs.mk rename to buildroot/fs/yaffs2/yaffs2.mk diff --git a/buildroot/linux/Config.ext.in b/buildroot/linux/Config.ext.in index 011dffb0b15..acc8a047421 100644 --- a/buildroot/linux/Config.ext.in +++ b/buildroot/linux/Config.ext.in @@ -117,14 +117,17 @@ 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. + 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: + 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 aufs3.x: + https://sourceforge.net/p/aufs/aufs3-standalone/ref/master/branches/ + For aufs4.x: + https://github.com/sfjro/aufs4-standalone/branches/all endif # aufs diff --git a/buildroot/linux/Config.in b/buildroot/linux/Config.in index 4d57765b493..29c8c7e4f2c 100644 --- a/buildroot/linux/Config.in +++ b/buildroot/linux/Config.in @@ -26,7 +26,7 @@ choice prompt "Kernel version" config BR2_LINUX_KERNEL_LATEST_VERSION - bool "Latest version (4.15)" + bool "Latest version (4.16)" config BR2_LINUX_KERNEL_LATEST_CIP_VERSION bool "Latest CIP SLTS version (v4.4.112-cip18)" @@ -61,13 +61,13 @@ config BR2_LINUX_KERNEL_CUSTOM_VERSION 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://. + 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. + 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" @@ -109,14 +109,14 @@ config BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION default BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION \ if BR2_LINUX_KERNEL_CUSTOM_GIT_VERSION != "" # legacy help - Revision to use in the typical format used by Git/Mercurial/Subversion - E.G. a sha id, a tag, branch, .. + Revision to use in the typical format used by + Git/Mercurial/Subversion E.G. a sha id, a tag, branch, .. endif config BR2_LINUX_KERNEL_VERSION string - default "4.15.7" if BR2_LINUX_KERNEL_LATEST_VERSION + default "4.16.10" if BR2_LINUX_KERNEL_LATEST_VERSION default "v4.4.112-cip18" if BR2_LINUX_KERNEL_LATEST_CIP_VERSION default BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE \ if BR2_LINUX_KERNEL_CUSTOM_VERSION @@ -175,7 +175,8 @@ config BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE 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. + which can later be saved back with make + linux-update-(def)config. config BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES string "Additional configuration fragment files" @@ -193,7 +194,7 @@ choice config BR2_LINUX_KERNEL_UIMAGE bool "uImage" - depends on BR2_arc || BR2_arm || BR2_armeb || BR2_bfin || \ + 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 @@ -284,9 +285,9 @@ endchoice choice prompt "Kernel compression format" help - This selection will just ensure that the correct host tools are build. - The actual compression for the kernel should be selected in the - kernel configuration menu. + 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" @@ -317,8 +318,9 @@ config BR2_LINUX_KERNEL_IMAGE_NAME depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM help The filename of the kernel image, if it is different from the - make target (above). Only Xtensa uses a filename different from - the make target. Defaults to BR2_LINUX_KERNEL_IMAGE_TARGET_NAME. + make target (above). Only Xtensa uses a filename different + from the make target. Defaults to + BR2_LINUX_KERNEL_IMAGE_TARGET_NAME. If unsure, leave it empty. @@ -327,18 +329,19 @@ config BR2_LINUX_KERNEL_UIMAGE_LOADADDR 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 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. + 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 @@ -363,40 +366,19 @@ config BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT config BR2_LINUX_KERNEL_APPENDED_DTB bool -choice - prompt "Device tree source" - default BR2_LINUX_KERNEL_USE_INTREE_DTS - -config BR2_LINUX_KERNEL_USE_INTREE_DTS - bool "Use a device tree present in the kernel" - help - Use a device tree source distributed with - the kernel sources. The dts files are located - in the arch//boot/dts folder. - -config BR2_LINUX_KERNEL_USE_CUSTOM_DTS - bool "Use a custom device tree file" - help - Use a custom device tree file, i.e, a device - tree file that does not belong to the kernel - source tree. -endchoice - config BR2_LINUX_KERNEL_INTREE_DTS_NAME - string "Device Tree Source file names" - depends on BR2_LINUX_KERNEL_USE_INTREE_DTS + string "In-tree Device Tree Source file names" help - Name of the device tree source file, without + 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 "Device Tree Source file paths" - depends on BR2_LINUX_KERNEL_USE_CUSTOM_DTS + string "Out-of-tree Device Tree Source file paths" help - Path to the device tree source files. You can - provide a list of dts paths to copy and build, - separated by spaces. + Path to to out-of-tree device tree source files. + You can provide a list of dts paths to copy and + build, separated by spaces. endif @@ -412,19 +394,6 @@ config BR2_LINUX_KERNEL_INSTALL_TARGET /boot if DTBs have been generated by the kernel build process. -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_OPENSSL bool "Needs host OpenSSL" help @@ -438,6 +407,19 @@ config BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL such as "scripts/extract-cert.c:21:25: fatal error: openssl/bio.h: No such file or directory". +config BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF + bool "Needs host libelf" + help + Some Linux kernel configuration options (such as + CONFIG_UNWINDER_ORC) require building a host program that + needs libelf. Enabling this option will ensure host-elfutils + (which provides libelf) gets built before the Linux kernel. + + Enable this option if you get a Linux kernel build failure + such as "Cannot generate ORC metadata for + CONFIG_UNWINDER_ORC=y, please install libelf-dev, + libelf-devel or elfutils-libelf-devel". + # Linux extensions source "linux/Config.ext.in" diff --git a/buildroot/linux/linux-ext-aufs.mk b/buildroot/linux/linux-ext-aufs.mk index fb2f3560a78..d4bbb07196b 100644 --- a/buildroot/linux/linux-ext-aufs.mk +++ b/buildroot/linux/linux-ext-aufs.mk @@ -1,7 +1,7 @@ ################################################################################ -# Linux Aufs extensions # # Patch the linux kernel with aufs extension +# ################################################################################ LINUX_EXTENSIONS += aufs diff --git a/buildroot/linux/linux-ext-ev3dev-linux-drivers.mk b/buildroot/linux/linux-ext-ev3dev-linux-drivers.mk index c8afeeb1d5c..3bb12db38dd 100644 --- a/buildroot/linux/linux-ext-ev3dev-linux-drivers.mk +++ b/buildroot/linux/linux-ext-ev3dev-linux-drivers.mk @@ -1,7 +1,7 @@ ################################################################################ -# Linux ev3dev extensions # # Patch the linux kernel with ev3dev extension +# ################################################################################ LINUX_EXTENSIONS += ev3dev-linux-drivers diff --git a/buildroot/linux/linux-ext-fbtft.mk b/buildroot/linux/linux-ext-fbtft.mk index 5eb3d944e88..cbc9c58ed3a 100644 --- a/buildroot/linux/linux-ext-fbtft.mk +++ b/buildroot/linux/linux-ext-fbtft.mk @@ -1,7 +1,7 @@ ################################################################################ -# Linux fbtft extensions # # Patch the linux kernel with fbtft extension +# ################################################################################ LINUX_EXTENSIONS += fbtft diff --git a/buildroot/linux/linux-ext-rtai.mk b/buildroot/linux/linux-ext-rtai.mk index fb483aa80b0..50f79f8d504 100644 --- a/buildroot/linux/linux-ext-rtai.mk +++ b/buildroot/linux/linux-ext-rtai.mk @@ -1,7 +1,7 @@ ################################################################################ -# Linux RTAI extensions # # Patch the linux kernel with RTAI extension +# ################################################################################ LINUX_EXTENSIONS += rtai @@ -20,8 +20,8 @@ endif 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/ \ + $(APPLY_PATCHES) $(LINUX_DIR) \ + $(RTAI_DIR)/base/arch/$(RTAI_ARCH)/patches/ \ hal-linux-$${kver}-*patch ; \ else \ echo "No RTAI patch for your kernel version" ; \ diff --git a/buildroot/linux/linux-ext-xenomai.mk b/buildroot/linux/linux-ext-xenomai.mk index 76a9786e4d0..d066bb32ac0 100644 --- a/buildroot/linux/linux-ext-xenomai.mk +++ b/buildroot/linux/linux-ext-xenomai.mk @@ -1,7 +1,7 @@ ################################################################################ -# Linux Adeos/Xenomai extensions # -# Patch the linux kernel with xenomai extension +# Patch the linux kernel with Adeos/Xenomai extension +# ################################################################################ LINUX_EXTENSIONS += xenomai diff --git a/buildroot/linux/linux.mk b/buildroot/linux/linux.mk index 093f5b0a570..6b5f5344ed2 100644 --- a/buildroot/linux/linux.mk +++ b/buildroot/linux/linux.mk @@ -62,7 +62,7 @@ LINUX_PATCHES = $(call qstrip,$(BR2_LINUX_KERNEL_PATCH)) LINUX_PATCH = $(filter ftp://% http://% https://%,$(LINUX_PATCHES)) LINUX_INSTALL_IMAGES = YES -LINUX_DEPENDENCIES += host-kmod +LINUX_DEPENDENCIES += host-bison host-flex host-kmod # host tools needed for kernel compression ifeq ($(BR2_LINUX_KERNEL_LZ4),y) @@ -80,14 +80,14 @@ LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZMA) += CONFIG_KERNEL_LZMA LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_LZO) += CONFIG_KERNEL_LZO LINUX_COMPRESSION_OPT_$(BR2_LINUX_KERNEL_XZ) += CONFIG_KERNEL_XZ -ifeq ($(BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF),y) -LINUX_DEPENDENCIES += host-elfutils -endif - 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 +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) @@ -125,17 +125,15 @@ endif # going to be installed in the target filesystem. LINUX_VERSION_PROBED = `$(MAKE) $(LINUX_MAKE_FLAGS) -C $(LINUX_DIR) --no-print-directory -s kernelrelease 2>/dev/null` -ifeq ($(BR2_LINUX_KERNEL_USE_INTREE_DTS),y) -KERNEL_DTS_NAME = $(call qstrip,$(BR2_LINUX_KERNEL_INTREE_DTS_NAME)) -else ifeq ($(BR2_LINUX_KERNEL_USE_CUSTOM_DTS),y) +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. -KERNEL_DTS_NAME = $(basename $(filter %.dts,$(notdir $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH))))) -endif +LINUX_DTS_NAME += $(basename $(filter %.dts,$(notdir $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH))))) -KERNEL_DTBS = $(addsuffix .dtb,$(KERNEL_DTS_NAME)) +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)) @@ -157,9 +155,9 @@ 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.$(KERNEL_DTS_NAME) +LINUX_IMAGE_NAME = cuImage.$(firstword $(LINUX_DTS_NAME)) else ifeq ($(BR2_LINUX_KERNEL_SIMPLEIMAGE),y) -LINUX_IMAGE_NAME = simpleImage.$(KERNEL_DTS_NAME) +LINUX_IMAGE_NAME = simpleImage.$(firstword $(LINUX_DTS_NAME)) else ifeq ($(BR2_LINUX_KERNEL_IMAGE),y) LINUX_IMAGE_NAME = Image else ifeq ($(BR2_LINUX_KERNEL_LINUX_BIN),y) @@ -189,11 +187,11 @@ endif # for bzImage, arch/i386 and arch/x86_64 do not exist when copying the # defconfig file. ifeq ($(KERNEL_ARCH),i386) -KERNEL_ARCH_PATH = $(LINUX_DIR)/arch/x86 +LINUX_ARCH_PATH = $(LINUX_DIR)/arch/x86 else ifeq ($(KERNEL_ARCH),x86_64) -KERNEL_ARCH_PATH = $(LINUX_DIR)/arch/x86 +LINUX_ARCH_PATH = $(LINUX_DIR)/arch/x86 else -KERNEL_ARCH_PATH = $(LINUX_DIR)/arch/$(KERNEL_ARCH) +LINUX_ARCH_PATH = $(LINUX_DIR)/arch/$(KERNEL_ARCH) endif ifeq ($(BR2_LINUX_KERNEL_VMLINUX),y) @@ -203,7 +201,7 @@ 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 = $(KERNEL_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME) +LINUX_IMAGE_PATH = $(LINUX_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME) endif # BR2_LINUX_KERNEL_VMLINUX define LINUX_APPLY_LOCAL_PATCHES @@ -237,7 +235,14 @@ 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_KCONFIG_OPTS = $(LINUX_MAKE_FLAGS) + +# 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. +LINUX_KCONFIG_OPTS = $(LINUX_MAKE_FLAGS) HOSTCC="$(HOSTCC)" # If no package has yet set it, set it from the Kconfig option LINUX_NEEDS_MODULES ?= $(BR2_LINUX_NEEDS_MODULES) @@ -298,6 +303,9 @@ define LINUX_KCONFIG_FIXUP_CMDS $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY,$(@D)/.config) $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_SMACK,$(@D)/.config) $(call KCONFIG_ENABLE_OPT,CONFIG_SECURITY_NETWORK,$(@D)/.config)) + $(if $(BR2_PACKAGE_SUNXI_MALI_MAINLINE_DRIVER), + $(call KCONFIG_ENABLE_OPT,CONFIG_CMA,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,CONFIG_DMA_CMA,$(@D)/.config)) $(if $(BR2_PACKAGE_IPTABLES), $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_IPTABLES,$(@D)/.config) $(call KCONFIG_ENABLE_OPT,CONFIG_IP_NF_FILTER,$(@D)/.config) @@ -322,14 +330,14 @@ endef ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT),y) ifeq ($(BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT),) define LINUX_BUILD_DTB - $(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(KERNEL_DTBS) + $(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_DTBS) endef ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),) define LINUX_INSTALL_DTB # dtbs moved from arch//boot to arch//boot/dts since 3.8-rc1 cp $(addprefix \ - $(KERNEL_ARCH_PATH)/boot/$(if $(wildcard \ - $(addprefix $(KERNEL_ARCH_PATH)/boot/dts/,$(KERNEL_DTBS))),dts/),$(KERNEL_DTBS)) \ + $(LINUX_ARCH_PATH)/boot/$(if $(wildcard \ + $(addprefix $(LINUX_ARCH_PATH)/boot/dts/,$(LINUX_DTBS))),dts/),$(LINUX_DTBS)) \ $(1) endef endif # BR2_LINUX_KERNEL_APPENDED_DTB @@ -339,8 +347,8 @@ 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 $(KERNEL_ARCH_PATH)/boot; \ - for dtb in $(KERNEL_DTS_NAME); do \ + (cd $(LINUX_ARCH_PATH)/boot; \ + for dtb in $(LINUX_DTS_NAME); do \ if test -e $${dtb}.dtb ; then \ dtbpath=$${dtb}.dtb ; \ else \ @@ -358,10 +366,10 @@ ifeq ($(BR2_LINUX_KERNEL_APPENDED_UIMAGE),y) 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 $(KERNEL_DTS_NAME); do \ + for dtb in $(LINUX_DTS_NAME); do \ $(MKIMAGE) -A $(MKIMAGE_ARCH) -O linux \ -T kernel -C none $${MKIMAGE_ARGS} \ - -d $(KERNEL_ARCH_PATH)/boot/zImage.$${dtb} $(LINUX_IMAGE_PATH).$${dtb}; \ + -d $(LINUX_ARCH_PATH)/boot/zImage.$${dtb} $(LINUX_IMAGE_PATH).$${dtb}; \ done endif endif @@ -369,11 +377,12 @@ endif # Compilation. We make sure the kernel gets rebuilt when the # configuration has changed. define LINUX_BUILD_CMDS - $(if $(BR2_LINUX_KERNEL_USE_CUSTOM_DTS), - cp -f $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH)) $(KERNEL_ARCH_PATH)/boot/dts/) + @for dts in $(call qstrip,$(BR2_LINUX_KERNEL_CUSTOM_DTS_PATH)); do \ + cp -f $${dts} $(LINUX_ARCH_PATH)/boot/dts/ ; \ + done $(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) $(LINUX_TARGET_NAME) - @if grep -q "CONFIG_MODULES=y" $(@D)/.config; then \ - $(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) modules ; \ + @if grep -q "CONFIG_MODULES=y" $(@D)/.config; then \ + $(LINUX_MAKE_ENV) $(MAKE) $(LINUX_MAKE_FLAGS) -C $(@D) modules ; \ fi $(LINUX_BUILD_DTB) $(LINUX_APPEND_DTB) @@ -384,7 +393,7 @@ ifeq ($(BR2_LINUX_KERNEL_APPENDED_DTB),y) # appended DTBs. define LINUX_INSTALL_IMAGE mkdir -p $(1) - cp $(KERNEL_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME).* $(1) + cp $(LINUX_ARCH_PATH)/boot/$(LINUX_IMAGE_NAME).* $(1) endef else # Otherwise, just install the unique image generated by the kernel @@ -403,15 +412,14 @@ 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 [ ! -e $(HOST_DIR)/bin/dtc ]; then \ - ln -sf linux-dtc $(HOST_DIR)/bin/dtc ; \ - fi \ + if grep -q "CONFIG_DTC=y" $(@D)/.config; then \ + $(INSTALL) -D -m 0755 $(@D)/scripts/dtc/dtc $(HOST_DIR)/bin/linux-dtc ; \ + if [ ! -e $(HOST_DIR)/bin/dtc ]; then \ + ln -sf linux-dtc $(HOST_DIR)/bin/dtc ; \ + fi \ fi endef - define LINUX_INSTALL_IMAGES_CMDS $(call LINUX_INSTALL_IMAGE,$(BINARIES_DIR)) $(call LINUX_INSTALL_DTB,$(BINARIES_DIR)) @@ -425,10 +433,10 @@ 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 \ + @if grep -q "CONFIG_MODULES=y" $(@D)/.config; then \ $(LINUX_MAKE_ENV) $(MAKE1) $(LINUX_MAKE_FLAGS) -C $(@D) modules_install; \ - rm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/build ; \ - rm -f $(TARGET_DIR)/lib/modules/$(LINUX_VERSION_PROBED)/source ; \ + 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 @@ -481,9 +489,9 @@ $(error No kernel configuration file specified, check your BR2_LINUX_KERNEL_CUST endif endif -ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT)$(KERNEL_DTS_NAME),y) +ifeq ($(BR2_LINUX_KERNEL_DTS_SUPPORT):$(strip $(LINUX_DTS_NAME)),y:) $(error No kernel device tree source specified, check your \ -BR2_LINUX_KERNEL_USE_INTREE_DTS / BR2_LINUX_KERNEL_USE_CUSTOM_DTS settings) + BR2_LINUX_KERNEL_INTREE_DTS_NAME / BR2_LINUX_KERNEL_CUSTOM_DTS_PATH settings) endif endif # BR_BUILDING diff --git a/buildroot/package/18xx-ti-utils/18xx-ti-utils.hash b/buildroot/package/18xx-ti-utils/18xx-ti-utils.hash new file mode 100644 index 00000000000..faa23d0b3ed --- /dev/null +++ b/buildroot/package/18xx-ti-utils/18xx-ti-utils.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 9ce2c7228dd0ac8d3cc530a32bb92b532bdbc5dfb6a405c245abee678d878697 18xx-ti-utils-R8.7_SP3.tar.gz +sha256 363cef40b276a7a91ebcff3f78626d9cfe5e5a51927c725236007259403d5fc4 COPYING diff --git a/buildroot/package/18xx-ti-utils/18xx-ti-utils.mk b/buildroot/package/18xx-ti-utils/18xx-ti-utils.mk new file mode 100644 index 00000000000..d1f0388c3a8 --- /dev/null +++ b/buildroot/package/18xx-ti-utils/18xx-ti-utils.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# 18xx-ti-utils +# +################################################################################ + +18XX_TI_UTILS_VERSION = R8.7_SP3 +18XX_TI_UTILS_SITE = git://git.ti.com/wilink8-wlan/18xx-ti-utils +18XX_TI_UTILS_DEPENDENCIES = libnl +18XX_TI_UTILS_LICENSE = BSD-3-Clause +18XX_TI_UTILS_LICENSE_FILES = COPYING + +18XX_TI_UTILS_CFLAGS = -I$(STAGING_DIR)/usr/include/libnl3 -DCONFIG_LIBNL32 + +ifeq ($(BR2_STATIC_LIBS),y) +18XX_TI_UTILS_BUILD_TARGET = static +endif + +define 18XX_TI_UTILS_BUILD_CMDS + $(TARGET_MAKE_ENV) CROSS_COMPILE=$(TARGET_CROSS) \ + NFSROOT="$(STAGING_DIR)" NLVER=3 $(MAKE) -C $(@D) \ + CFLAGS="$(TARGET_CFLAGS) $(18XX_TI_UTILS_CFLAGS)" \ + $(18XX_TI_UTILS_BUILD_TARGET) +endef + +define 18XX_TI_UTILS_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/calibrator $(TARGET_DIR)/usr/bin/calibrator +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/18xx-ti-utils/Config.in b/buildroot/package/18xx-ti-utils/Config.in new file mode 100644 index 00000000000..571d196e091 --- /dev/null +++ b/buildroot/package/18xx-ti-utils/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_18XX_TI_UTILS + bool "18xx-ti-utils" + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL + help + TI Wilink calibration utilities. + + CONFIG_NL80211_TESTMODE must be enabled in the kernel + configuration for this package to work. + + http://processors.wiki.ti.com/index.php/WL18xx_TX_Testing + +comment "18xx-ti-utils needs a toolchain w/ threads" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/Config.in b/buildroot/package/Config.in index 5bdaa243403..b6c8e3d1d2b 100644 --- a/buildroot/package/Config.in +++ b/buildroot/package/Config.in @@ -13,6 +13,7 @@ menu "Audio and video applications" source "package/atest/Config.in" source "package/aumix/Config.in" source "package/bellagio/Config.in" + source "package/bluez-alsa/Config.in" source "package/dvblast/Config.in" source "package/dvdauthor/Config.in" source "package/dvdrw-tools/Config.in" @@ -36,7 +37,6 @@ menu "Audio and video applications" source "package/mpd/Config.in" source "package/mpd-mpc/Config.in" source "package/mpg123/Config.in" - source "package/mplayer/Config.in" source "package/mpv/Config.in" source "package/multicat/Config.in" source "package/musepack/Config.in" @@ -63,6 +63,7 @@ menu "Audio and video applications" endmenu menu "Compressors and decompressors" + source "package/brotli/Config.in" source "package/bzip2/Config.in" source "package/gzip/Config.in" source "package/lz4/Config.in" @@ -165,6 +166,7 @@ menu "Development tools" 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" @@ -196,6 +198,7 @@ menu "Filesystem and flash utilities" source "package/squashfs/Config.in" source "package/sshfs/Config.in" source "package/sunxi-tools/Config.in" + source "package/udftools/Config.in" source "package/unionfs/Config.in" source "package/xfsprogs/Config.in" endmenu @@ -232,6 +235,8 @@ endmenu menu "Games" source "package/chocolate-doom/Config.in" source "package/doom-wad/Config.in" + source "package/flare-engine/Config.in" + source "package/flare-game/Config.in" source "package/gnuchess/Config.in" source "package/lbreakout2/Config.in" source "package/ltris/Config.in" @@ -298,6 +303,7 @@ comment "Graphic libraries" source "package/sdl2_mixer/Config.in" source "package/sdl2_net/Config.in" source "package/sdl2_ttf/Config.in" + source "package/tk/Config.in" comment "Other GUIs" source "package/qt/Config.in" @@ -333,6 +339,7 @@ comment "X applications" 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" @@ -374,6 +381,7 @@ menu "Firmware" 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" @@ -434,7 +442,6 @@ endmenu source "package/iostat/Config.in" source "package/ipmitool/Config.in" source "package/ipmiutil/Config.in" - source "package/iqvlinux/Config.in" source "package/irda-utils/Config.in" source "package/iucode-tool/Config.in" source "package/kbd/Config.in" @@ -485,10 +492,10 @@ endmenu source "package/rpi-userland/Config.in" source "package/rs485conf/Config.in" source "package/rtl8188eu/Config.in" + source "package/rtl8189fs/Config.in" source "package/rtl8723bs/Config.in" source "package/rtl8723bu/Config.in" source "package/rtl8821au/Config.in" - source "package/rtl8189fs/Config.in" source "package/sane-backends/Config.in" source "package/sdparm/Config.in" source "package/setserial/Config.in" @@ -503,6 +510,8 @@ endmenu source "package/stm32flash/Config.in" source "package/sunxi-cedarx/Config.in" source "package/sunxi-mali/Config.in" + source "package/sunxi-mali-mainline/Config.in" + source "package/sunxi-mali-mainline-driver/Config.in" source "package/sysstat/Config.in" source "package/targetcli-fb/Config.in" source "package/ti-gfx/Config.in" @@ -728,10 +737,12 @@ menu "External python modules" source "package/python-babel/Config.in" source "package/python-backports-abc/Config.in" source "package/python-backports-shutil-get-terminal-size/Config.in" + source "package/python-backports-ssl-match-hostname/Config.in" source "package/python-bcrypt/Config.in" source "package/python-beautifulsoup4/Config.in" source "package/python-bitstring/Config.in" source "package/python-bottle/Config.in" + source "package/python-cached-property/Config.in" source "package/python-can/Config.in" source "package/python-cbor/Config.in" source "package/python-certifi/Config.in" @@ -754,6 +765,7 @@ menu "External python modules" source "package/python-cssselect/Config.in" source "package/python-cssutils/Config.in" source "package/python-daemon/Config.in" + source "package/python-daemonize/Config.in" source "package/python-dataproperty/Config.in" source "package/python-dateutil/Config.in" source "package/python-decorator/Config.in" @@ -761,6 +773,9 @@ menu "External python modules" source "package/python-dialog3/Config.in" source "package/python-dicttoxml/Config.in" source "package/python-django/Config.in" + source "package/python-docker/Config.in" + source "package/python-dockerpty/Config.in" + source "package/python-docker-pycreds/Config.in" source "package/python-docopt/Config.in" source "package/python-docutils/Config.in" source "package/python-dominate/Config.in" @@ -774,7 +789,9 @@ menu "External python modules" source "package/python-flask-babel/Config.in" source "package/python-flask-jsonrpc/Config.in" source "package/python-flask-login/Config.in" + source "package/python-flask-sqlalchemy/Config.in" source "package/python-flup/Config.in" + source "package/python-functools32/Config.in" source "package/python-futures/Config.in" source "package/python-gobject/Config.in" source "package/python-gunicorn/Config.in" @@ -789,6 +806,7 @@ menu "External python modules" source "package/python-id3/Config.in" source "package/python-idna/Config.in" source "package/python-incremental/Config.in" + source "package/python-influxdb/Config.in" source "package/python-iniparse/Config.in" source "package/python-iowait/Config.in" source "package/python-ipaddr/Config.in" @@ -800,10 +818,12 @@ menu "External python modules" source "package/python-itsdangerous/Config.in" source "package/python-jaraco-classes/Config.in" source "package/python-jinja2/Config.in" + source "package/python-jsonmodels/Config.in" source "package/python-jsonschema/Config.in" source "package/python-json-schema-validator/Config.in" source "package/python-keyring/Config.in" source "package/python-libconfig/Config.in" + source "package/python-libusb1/Config.in" source "package/python-lmdb/Config.in" source "package/python-logbook/Config.in" source "package/python-lxml/Config.in" @@ -825,6 +845,7 @@ menu "External python modules" source "package/python-netaddr/Config.in" source "package/python-netifaces/Config.in" source "package/python-networkmanager/Config.in" + source "package/python-networkx/Config.in" source "package/python-nfc/Config.in" source "package/python-numpy/Config.in" source "package/python-oauthlib/Config.in" @@ -844,6 +865,7 @@ menu "External python modules" 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-pyasn/Config.in" @@ -860,6 +882,7 @@ menu "External python modules" source "package/python-pyinotify/Config.in" source "package/python-pylibftdi/Config.in" source "package/python-pylru/Config.in" + source "package/python-pymodbus/Config.in" source "package/python-pymysql/Config.in" source "package/python-pynacl/Config.in" source "package/python-pyopenssl/Config.in" @@ -918,10 +941,12 @@ menu "External python modules" source "package/python-socketio/Config.in" source "package/python-sortedcontainers//Config.in" source "package/python-spidev/Config.in" + source "package/python-sqlalchemy/Config.in" + source "package/python-subprocess32/Config.in" source "package/python-systemd/Config.in" source "package/python-tabledata/Config.in" source "package/python-tempora/Config.in" - source "package/python-typepy/Config.in" + source "package/python-texttable/Config.in" source "package/python-thrift/Config.in" source "package/python-tomako/Config.in" source "package/python-toml/Config.in" @@ -931,16 +956,19 @@ menu "External python modules" source "package/python-twisted/Config.in" source "package/python-txaio/Config.in" source "package/python-txtorcon/Config.in" + source "package/python-typepy/Config.in" source "package/python-u-msgpack/Config.in" source "package/python-ubjson/Config.in" source "package/python-ujson/Config.in" source "package/python-urllib3/Config.in" source "package/python-urwid/Config.in" source "package/python-versiontools/Config.in" + source "package/python-visitor/Config.in" source "package/python-watchdog/Config.in" source "package/python-wcwidth/Config.in" source "package/python-web2py/Config.in" source "package/python-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" @@ -952,6 +980,7 @@ menu "External python modules" source "package/python-xlutils/Config.in" source "package/python-xlwt/Config.in" source "package/python-xmltodict/Config.in" + source "package/python-yieldfrom/Config.in" source "package/python-zope-interface/Config.in" endmenu endif @@ -980,6 +1009,7 @@ menu "Audio/Sound" 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" @@ -1056,6 +1086,7 @@ menu "Crypto" source "package/openssl/Config.in" source "package/rhash/Config.in" source "package/tinydtls/Config.in" + source "package/tpm2-tss/Config.in" source "package/trousers/Config.in" source "package/ustream-ssl/Config.in" source "package/wolfssl/Config.in" @@ -1097,6 +1128,7 @@ menu "Graphics" source "package/bullet/Config.in" source "package/cairo/Config.in" source "package/cairomm/Config.in" + source "package/chipmunk/Config.in" source "package/exiv2/Config.in" source "package/fltk/Config.in" source "package/fontconfig/Config.in" @@ -1169,6 +1201,7 @@ menu "Graphics" source "package/waylandpp/Config.in" source "package/webkitgtk/Config.in" source "package/webp/Config.in" + source "package/woff2/Config.in" source "package/zbar/Config.in" source "package/zxing-cpp/Config.in" endmenu @@ -1180,6 +1213,7 @@ menu "Hardware handling" source "package/ccid/Config.in" source "package/dtc/Config.in" source "package/gnu-efi/Config.in" + source "package/hackrf/Config.in" source "package/hidapi/Config.in" source "package/lcdapi/Config.in" source "package/let-me-create/Config.in" @@ -1375,6 +1409,7 @@ menu "Networking" source "package/libhttpparser/Config.in" source "package/libidn/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" @@ -1454,6 +1489,7 @@ menu "Other" source "package/bctoolbox/Config.in" source "package/bdwgc/Config.in" source "package/boost/Config.in" + source "package/clang/Config.in" source "package/clapack/Config.in" source "package/classpath/Config.in" source "package/cppcms/Config.in" @@ -1520,6 +1556,7 @@ menu "Other" source "package/libuv/Config.in" source "package/lightning/Config.in" source "package/linux-pam/Config.in" + source "package/llvm/Config.in" if BR2_PACKAGE_LINUX_PAM comment "linux-pam plugins" source "package/libpam-radius-auth/Config.in" @@ -1687,6 +1724,7 @@ menu "Networking applications" source "package/hostapd/Config.in" source "package/hplip/Config.in" source "package/httping/Config.in" + source "package/i2pd/Config.in" source "package/ibrdtn-tools/Config.in" source "package/ibrdtnd/Config.in" source "package/ifenslave/Config.in" @@ -1780,6 +1818,7 @@ endif 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" @@ -1794,6 +1833,7 @@ endif source "package/quagga/Config.in" source "package/rabbitmq-server/Config.in" source "package/radvd/Config.in" + source "package/reaver/Config.in" source "package/rp-pppoe/Config.in" source "package/rpcbind/Config.in" source "package/rsh-redone/Config.in" @@ -1810,6 +1850,7 @@ endif source "package/shellinabox/Config.in" source "package/smcroute/Config.in" source "package/sngrep/Config.in" + source "package/snort/Config.in" source "package/socat/Config.in" source "package/socketcand/Config.in" source "package/softether/Config.in" @@ -1902,6 +1943,7 @@ comment "Shells" source "package/zsh/Config.in" comment "Utilities" source "package/at/Config.in" + source "package/bash-completion/Config.in" source "package/ccrypt/Config.in" source "package/crudini/Config.in" source "package/dialog/Config.in" @@ -1944,8 +1986,10 @@ menu "System tools" source "package/dcron/Config.in" source "package/ddrescue/Config.in" source "package/debianutils/Config.in" + source "package/docker-compose/Config.in" source "package/docker-containerd/Config.in" source "package/docker-engine/Config.in" + source "package/docker-proxy/Config.in" source "package/dsp-tools/Config.in" source "package/efibootmgr/Config.in" source "package/efivar/Config.in" @@ -1974,6 +2018,7 @@ menu "System tools" source "package/psmisc/Config.in" source "package/pwgen/Config.in" source "package/quota/Config.in" + source "package/quotatool/Config.in" source "package/rauc/Config.in" source "package/rsyslog/Config.in" source "package/runc/Config.in" @@ -1995,6 +2040,8 @@ menu "System tools" source "package/sysvinit/Config.in" source "package/tar/Config.in" source "package/tpm-tools/Config.in" + source "package/tpm2-abrmd/Config.in" + source "package/tpm2-tools/Config.in" source "package/unscd/Config.in" source "package/util-linux/Config.in" source "package/xen/Config.in" diff --git a/buildroot/package/Config.in.host b/buildroot/package/Config.in.host index 199a8e9856e..38543e73903 100644 --- a/buildroot/package/Config.in.host +++ b/buildroot/package/Config.in.host @@ -24,6 +24,7 @@ menu "Host utilities" source "package/go-bootstrap/Config.in.host" source "package/google-breakpad/Config.in.host" source "package/gptfdisk/Config.in.host" + source "package/imx-mkimage/Config.in.host" source "package/imx-usb-loader/Config.in.host" source "package/jq/Config.in.host" source "package/jsmin/Config.in.host" @@ -42,8 +43,10 @@ menu "Host utilities" 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-lxml/Config.in.host" source "package/python-six/Config.in.host" + source "package/python-xlrd/Config.in.host" source "package/qemu/Config.in.host" source "package/raspberrypi-usbboot/Config.in.host" source "package/rauc/Config.in.host" diff --git a/buildroot/package/Makefile.in b/buildroot/package/Makefile.in index e387ce67fee..4325f7b3a90 100644 --- a/buildroot/package/Makefile.in +++ b/buildroot/package/Makefile.in @@ -128,6 +128,9 @@ endif ifeq ($(BR2_OPTIMIZE_S),y) TARGET_OPTIMIZATION = -Os endif +ifeq ($(BR2_OPTIMIZE_FAST),y) +TARGET_OPTIMIZATION = -Ofast +endif ifeq ($(BR2_DEBUG_1),y) TARGET_DEBUGGING = -g1 endif @@ -186,12 +189,6 @@ TARGET_CFLAGS += -mid-shared-library -mshared-library-id=0 TARGET_FCFLAGS += -mid-shared-library -mshared-library-id=0 TARGET_CXXFLAGS += -mid-shared-library -mshared-library-id=0 endif -ifeq ($(BR2_BINFMT_FLAT_SEP_DATA),y) -TARGET_LDFLAGS += -msep-data -TARGET_CFLAGS += -msep-data -TARGET_FCFLAGS += -msep-data -TARGET_CXXFLAGS += -msep-data -endif ifeq ($(BR2_TOOLCHAIN_BUILDROOT),y) TARGET_CROSS = $(HOST_DIR)/bin/$(GNU_TARGET_NAME)- @@ -409,8 +406,16 @@ 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=false CXXCPP=cpp +TARGET_CONFIGURE_OPTS += CXX=no endif ifeq ($(BR2_STATIC_LIBS),y) @@ -441,3 +446,4 @@ 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 diff --git a/buildroot/package/abootimg/Config.in b/buildroot/package/abootimg/Config.in new file mode 100644 index 00000000000..30e5bd1fb02 --- /dev/null +++ b/buildroot/package/abootimg/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_ABOOTIMG + bool "abootimg" + depends on BR2_USE_MMU # libblkid + select BR2_PACKAGE_UTIL_LINUX + select BR2_PACKAGE_UTIL_LINUX_LIBBLKID + help + Tool to manipulate Android Boot Images, either on files + or directly on /dev block devices. + + https://github.com/ggrandou/abootimg diff --git a/buildroot/package/abootimg/abootimg.hash b/buildroot/package/abootimg/abootimg.hash new file mode 100644 index 00000000000..fa5282c6c3f --- /dev/null +++ b/buildroot/package/abootimg/abootimg.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 eb8d912bc7b5454c2afd3385fd86f4917d3587c48a6f5ae45df7856d88502cab abootimg-7e127fee6a3981f6b0a50ce9910267cd501e09d4.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/buildroot/package/abootimg/abootimg.mk b/buildroot/package/abootimg/abootimg.mk new file mode 100644 index 00000000000..e9065469480 --- /dev/null +++ b/buildroot/package/abootimg/abootimg.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# abootimg +# +################################################################################ + +ABOOTIMG_VERSION = 7e127fee6a3981f6b0a50ce9910267cd501e09d4 +ABOOTIMG_SITE = $(call github,ggrandou,abootimg,$(ABOOTIMG_VERSION)) +ABOOTIMG_LICENSE = GPL-2.0+ +ABOOTIMG_LICENSE_FILES = LICENSE + +# depends on libblkid from util-linux +ABOOTIMG_DEPENDENCIES = util-linux + +define ABOOTIMG_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) +endef + +define ABOOTIMG_INSTALL_TARGET_CMDS + $(INSTALL) -m 0755 $(@D)/abootimg $(TARGET_DIR)/usr/bin/abootimg +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/acl/0003-all-use-install-1-to-install-executables.patch b/buildroot/package/acl/0003-all-use-install-1-to-install-executables.patch new file mode 100644 index 00000000000..9640dd866d4 --- /dev/null +++ b/buildroot/package/acl/0003-all-use-install-1-to-install-executables.patch @@ -0,0 +1,67 @@ +From d3bd7b29b79147b4155e78a8ea06ded98b91f92a Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 8 May 2018 15:23:57 +0200 +Subject: [PATCH] all: use install(1) to install executables + +When the destination file already exists, the current install script +will overwrite it with the new executable. + +However, when the existing executable is a symlink or hardlink to +something else, like busybox, this effectively overwrites that something +with the new executable, and thus replaces busybox and all its applets +with the code for either of the three commands. + +We fix that by simply calling install(1). install(1) is sufficiently +widespread that we don't bother checking for it, as tis is just a +workaround while waiting for the version bump that will eventually fix +it for good. + +Signed-off-by: "Yann E. MORIN" +--- + chacl/Makefile | 4 ++-- + getfacl/Makefile | 4 ++-- + setfacl/Makefile | 4 ++-- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/chacl/Makefile b/chacl/Makefile +index 33858d6..c857329 100644 +--- a/chacl/Makefile ++++ b/chacl/Makefile +@@ -30,6 +30,6 @@ default: $(LTCOMMAND) + include $(BUILDRULES) + + install: default +- $(INSTALL) -m 755 -d $(PKG_BIN_DIR) +- $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) ++ install -D -m 755 $(LTCOMMAND) $(PKG_BIN_DIR)/$(LTCOMMAND) ++ + install-dev install-lib: +diff --git a/getfacl/Makefile b/getfacl/Makefile +index 7fbafda..8ac63e0 100644 +--- a/getfacl/Makefile ++++ b/getfacl/Makefile +@@ -31,6 +31,6 @@ default: $(LTCOMMAND) + include $(BUILDRULES) + + install: default +- $(INSTALL) -m 755 -d $(PKG_BIN_DIR) +- $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) ++ install -D -m 755 $(LTCOMMAND) $(PKG_BIN_DIR)/$(LTCOMMAND) ++ + install-dev install-lib: +diff --git a/setfacl/Makefile b/setfacl/Makefile +index c44e7c0..eea2ede 100644 +--- a/setfacl/Makefile ++++ b/setfacl/Makefile +@@ -31,6 +31,6 @@ default: $(LTCOMMAND) + include $(BUILDRULES) + + install: default +- $(INSTALL) -m 755 -d $(PKG_BIN_DIR) +- $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) ++ install -D -m 755 $(LTCOMMAND) $(PKG_BIN_DIR)/$(LTCOMMAND) ++ + install-dev install-lib: +-- +2.14.1 + diff --git a/buildroot/package/acpitool/Config.in b/buildroot/package/acpitool/Config.in index a6f082cc5c6..2600a789b0a 100644 --- a/buildroot/package/acpitool/Config.in +++ b/buildroot/package/acpitool/Config.in @@ -1,6 +1,5 @@ config BR2_PACKAGE_ACPITOOL bool "acpitool" - depends on !BR2_bfin depends on !BR2_STATIC_LIBS depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_INSTALL_LIBSTDCPP @@ -11,6 +10,5 @@ config BR2_PACKAGE_ACPITOOL http://acpitool.sourceforge.net comment "acpitool needs a toolchain w/ threads, C++, dynamic library" - depends on !BR2_bfin depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS \ || !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/alsa-lib/0001-Don-t-use-fork-on-noMMU-platforms.patch b/buildroot/package/alsa-lib/0001-Don-t-use-fork-on-noMMU-platforms.patch new file mode 100644 index 00000000000..29cdf8fed80 --- /dev/null +++ b/buildroot/package/alsa-lib/0001-Don-t-use-fork-on-noMMU-platforms.patch @@ -0,0 +1,59 @@ +From 41c029755502acf01ed634db437ac06d09be6c41 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 13 Apr 2018 09:02:37 +0200 +Subject: [PATCH] Don't use fork() on noMMU platforms +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: Thomas Petazzoni +[Jテカrg: update patch for 1.1.6] +Signed-off-by: Jテカrg Krause +--- + configure.ac | 2 ++ + src/pcm/pcm_direct.c | 10 +++++++++- + 2 files changed, 11 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index cce195ae..0c852434 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -51,6 +51,8 @@ dnl Checks for library functions. + AC_PROG_GCC_TRADITIONAL + AC_CHECK_FUNCS([uselocale]) + ++AC_CHECK_FUNC([fork]) ++ + SAVE_LIBRARY_VERSION + AC_SUBST(LIBTOOL_VERSION_INFO) + +diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c +index 2b07eff9..4dc3ea26 100644 +--- a/src/pcm/pcm_direct.c ++++ b/src/pcm/pcm_direct.c +@@ -431,13 +431,21 @@ int snd_pcm_direct_server_create(snd_pcm_direct_t *dmix) + close(dmix->server_fd); + return ret; + } +- ++ ++#ifdef HAVE_FORK + ret = fork(); ++#else ++ ret = vfork(); ++#endif + if (ret < 0) { + close(dmix->server_fd); + return ret; + } else if (ret == 0) { ++#ifdef HAVE_FORK + ret = fork(); ++#else ++ ret = vfork(); ++#endif + if (ret == 0) + server_job(dmix); + _exit(EXIT_SUCCESS); +-- +2.14.3 + diff --git a/buildroot/package/alsa-lib/0001-no-mmu.patch b/buildroot/package/alsa-lib/0001-no-mmu.patch deleted file mode 100644 index 2ae0f671581..00000000000 --- a/buildroot/package/alsa-lib/0001-no-mmu.patch +++ /dev/null @@ -1,45 +0,0 @@ -Don't use fork() on noMMU platforms - -[Gustavo: update patch for 1.0.28] -Signed-off-by: Thomas Petazzoni - -Index: alsa-lib-1.0.26/configure.ac -=================================================================== ---- alsa-lib-1.0.26.orig/configure.ac 2012-09-06 10:55:14.000000000 +0200 -+++ alsa-lib-1.0.26/configure.ac 2013-03-09 16:22:08.000000000 +0100 -@@ -66,6 +66,8 @@ - AM_CONDITIONAL(ALSA_HSEARCH_R, [test "x$HAVE_HSEARCH_R" != xyes]) - AC_CHECK_FUNCS([uselocale]) - -+AC_CHECK_FUNC([fork]) -+ - SAVE_LIBRARY_VERSION - AC_SUBST(LIBTOOL_VERSION_INFO) - -Index: alsa-lib-1.0.26/src/pcm/pcm_direct.c -=================================================================== ---- alsa-lib-1.0.26.orig/src/pcm/pcm_direct.c 2012-09-06 10:55:14.000000000 +0200 -+++ alsa-lib-1.0.26/src/pcm/pcm_direct.c 2013-03-09 16:22:51.000000000 +0100 -@@ -424,13 +424,21 @@ - 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); diff --git a/buildroot/package/alsa-lib/0002-dlmisc.patch b/buildroot/package/alsa-lib/0002-alsa-lib-provide-dummy-definitions-of-RTLD_-if-neces.patch similarity index 53% rename from buildroot/package/alsa-lib/0002-dlmisc.patch rename to buildroot/package/alsa-lib/0002-alsa-lib-provide-dummy-definitions-of-RTLD_-if-neces.patch index 24b7230cae3..f489f913d9a 100644 --- a/buildroot/package/alsa-lib/0002-dlmisc.patch +++ b/buildroot/package/alsa-lib/0002-alsa-lib-provide-dummy-definitions-of-RTLD_-if-neces.patch @@ -1,4 +1,10 @@ -alsa-lib: provide dummy definitions of RTLD_* if necessary +From ff91d50a250e10a419bcd35176f3069161ac33bb Mon Sep 17 00:00:00 2001 +From: Sonic Zhang +Date: Fri, 13 Apr 2018 09:11:23 +0200 +Subject: [PATCH] alsa-lib: provide dummy definitions of RTLD_* if necessary +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit The FLAT GNU toolchain (e.g. blackfin) doesn't include the dlfcn.h header file, so we need to guard that include. Additionally, provide dummy @@ -8,45 +14,34 @@ provided by dlfcn.h. Signed-off-by: Sonic Zhang [Thomas: don't add separate dlmisc.h, move dummy defs to global.h] Signed-off-by: Thomas De Schampheleire +[Jテカrg: update for 1.1.6] +Signed-off-by: Jテカrg Krause +--- + modules/mixer/simple/sbasedl.c | 4 +++- + src/mixer/simple_abst.c | 3 +++ + 2 files changed, 6 insertions(+), 1 deletion(-) -diff --git a/include/global.h b/include/global.h ---- a/include/global.h -+++ b/include/global.h -@@ -97,6 +97,16 @@ extern struct snd_dlsym_link *snd_dlsym_ - /** \brief Returns the version of a dynamic symbol as a string. */ - #define SND_DLSYM_VERSION(version) __STRING(version) - -+/* RTLD_NOW and RTLD_GLOBAL (used for 'mode' in snd_dlopen) are not defined -+ * on all arches (e.g. blackfin), so provide a dummy definition here. */ -+#ifndef RTLD_NOW -+#define RTLD_NOW 0 -+#endif -+ -+#ifndef RTLD_GLOBAL -+#define RTLD_GLOBAL 0 -+#endif -+ - void *snd_dlopen(const char *file, int mode); - void *snd_dlsym(void *handle, const char *name, const char *version); - int snd_dlclose(void *handle); diff --git a/modules/mixer/simple/sbasedl.c b/modules/mixer/simple/sbasedl.c +index d8cbf0f1..daa0ab30 100644 --- a/modules/mixer/simple/sbasedl.c +++ b/modules/mixer/simple/sbasedl.c -@@ -27,7 +27,9 @@ +@@ -27,8 +27,10 @@ #include #include #include -+#include "config.h" +-#include + #include "config.h" +#ifdef HAVE_DLFCN - #include ++#include +#endif --#include "config.h" #include "asoundlib.h" #include "mixer_abst.h" + #include "sbase.h" diff --git a/src/mixer/simple_abst.c b/src/mixer/simple_abst.c +index 9c61cb58..0ca58fe0 100644 --- a/src/mixer/simple_abst.c +++ b/src/mixer/simple_abst.c -@@ -34,7 +34,9 @@ +@@ -34,7 +34,10 @@ #include #include #include @@ -54,6 +49,9 @@ diff --git a/src/mixer/simple_abst.c b/src/mixer/simple_abst.c +#ifdef HAVE_DLFCN #include +#endif --#include "config.h" - #include "asoundlib.h" + #include "mixer_local.h" #include "mixer_simple.h" + +-- +2.14.3 + diff --git a/buildroot/package/alsa-lib/0003-conditional-enabling-of-libdl-in-m4.patch b/buildroot/package/alsa-lib/0003-alsa-lib-conditionally-enable-libdl-in-AM_PATH_ALSA-.patch similarity index 66% rename from buildroot/package/alsa-lib/0003-conditional-enabling-of-libdl-in-m4.patch rename to buildroot/package/alsa-lib/0003-alsa-lib-conditionally-enable-libdl-in-AM_PATH_ALSA-.patch index c533419baa2..181e56deb46 100644 --- a/buildroot/package/alsa-lib/0003-conditional-enabling-of-libdl-in-m4.patch +++ b/buildroot/package/alsa-lib/0003-alsa-lib-conditionally-enable-libdl-in-AM_PATH_ALSA-.patch @@ -1,4 +1,10 @@ -alsa-lib: conditionally enable libdl in AM_PATH_ALSA m4 macro +From 2aba563bd077fda94fb9c2c33002ee0ac119b345 Mon Sep 17 00:00:00 2001 +From: Thomas De Schampheleire +Date: Fri, 13 Apr 2018 09:13:46 +0200 +Subject: [PATCH] alsa-lib: conditionally enable libdl in AM_PATH_ALSA m4 macro +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit The AM_PATH_ALSA macro in utils/alsa.m4 unconditionally uses -ldl. This breaks compilation of alsa-utils (and probably other packages using this @@ -9,10 +15,14 @@ This patch updates the macro to check if dlopen is available, and use that result to conditionally add -ldl to the list of libraries. Signed-off-by: Thomas De Schampheleire - +[Jテカrg: update for 1.1.6] +Signed-off-by: Jテカrg Krause --- + utils/alsa.m4 | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/utils/alsa.m4 b/utils/alsa.m4 +index e12310df..a5c5a292 100644 --- a/utils/alsa.m4 +++ b/utils/alsa.m4 @@ -44,6 +44,8 @@ if test "$alsa_inc_prefix" != "" ; then @@ -33,3 +43,6 @@ diff --git a/utils/alsa.m4 b/utils/alsa.m4 LIBS="$ALSA_LIBS $LIBS" AC_MSG_RESULT($ALSA_LIBS) +-- +2.14.3 + diff --git a/buildroot/package/alsa-lib/alsa-lib.hash b/buildroot/package/alsa-lib/alsa-lib.hash index 885309386e6..c4f16d6df37 100644 --- a/buildroot/package/alsa-lib/alsa-lib.hash +++ b/buildroot/package/alsa-lib/alsa-lib.hash @@ -1,4 +1,4 @@ # Locally calculated -sha256 f4f68ad3c6da36b0b5241ac3c798a7a71e0e97d51f972e9f723b3f20a9650ae6 alsa-lib-1.1.5.tar.bz2 -sha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7 COPYING +sha256 5f2cd274b272cae0d0d111e8a9e363f08783329157e8dd68b3de0c096de6d724 alsa-lib-1.1.6.tar.bz2 +sha256 32434afcc8666ba060e111d715bfdb6c2d5dd8a35fa4d3ab8ad67d8f850d2f2b COPYING sha256 bfe16cf823bcff261fc6a062c07ee96660e3c39678f42f39a788a68dbc234ced aserver/COPYING diff --git a/buildroot/package/alsa-lib/alsa-lib.mk b/buildroot/package/alsa-lib/alsa-lib.mk index 32355020897..98fc486e2d6 100644 --- a/buildroot/package/alsa-lib/alsa-lib.mk +++ b/buildroot/package/alsa-lib/alsa-lib.mk @@ -4,7 +4,7 @@ # ################################################################################ -ALSA_LIB_VERSION = 1.1.5 +ALSA_LIB_VERSION = 1.1.6 ALSA_LIB_SOURCE = alsa-lib-$(ALSA_LIB_VERSION).tar.bz2 ALSA_LIB_SITE = ftp://ftp.alsa-project.org/pub/lib ALSA_LIB_LICENSE = LGPL-2.1+ (library), GPL-2.0+ (aserver) @@ -62,12 +62,6 @@ else ALSA_LIB_CONF_OPTS += --disable-python endif -ifeq ($(BR2_bfin),y) -# blackfin external toolchains don't have versionsort. Fake it using alphasort -# instead -ALSA_LIB_CFLAGS += -Dversionsort=alphasort -endif - ALSA_LIB_CONF_ENV = \ CFLAGS="$(ALSA_LIB_CFLAGS)" \ LDFLAGS="$(TARGET_LDFLAGS) -lm" diff --git a/buildroot/package/alsa-utils/alsa-utils.hash b/buildroot/package/alsa-utils/alsa-utils.hash index 41cf946bd4b..ff8fd080133 100644 --- a/buildroot/package/alsa-utils/alsa-utils.hash +++ b/buildroot/package/alsa-utils/alsa-utils.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 320bd285e91db6e7fd7db3c9ec6f55b02f35449ff273c7844780ac6a5a3de2e8 alsa-utils-1.1.5.tar.bz2 +sha256 155caecc40b2220f686f34ba3655a53e3bdbc0586adb1056733949feaaf7d36e alsa-utils-1.1.6.tar.bz2 sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/buildroot/package/alsa-utils/alsa-utils.mk b/buildroot/package/alsa-utils/alsa-utils.mk index 2d3407d422e..9b2e64b1d3e 100644 --- a/buildroot/package/alsa-utils/alsa-utils.mk +++ b/buildroot/package/alsa-utils/alsa-utils.mk @@ -4,7 +4,7 @@ # ################################################################################ -ALSA_UTILS_VERSION = 1.1.5 +ALSA_UTILS_VERSION = 1.1.6 ALSA_UTILS_SOURCE = alsa-utils-$(ALSA_UTILS_VERSION).tar.bz2 ALSA_UTILS_SITE = ftp://ftp.alsa-project.org/pub/utils ALSA_UTILS_LICENSE = GPL-2.0 diff --git a/buildroot/package/amd-catalyst/amd-catalyst.mk b/buildroot/package/amd-catalyst/amd-catalyst.mk index b9396e11fa9..d864095c317 100644 --- a/buildroot/package/amd-catalyst/amd-catalyst.mk +++ b/buildroot/package/amd-catalyst/amd-catalyst.mk @@ -17,7 +17,7 @@ AMD_CATALYST_ARCH_DIR = $(@D)/arch/x86$(AMD_CATALYST_SUFFIX) AMD_CATALYST_LIB_SUFFIX = $(if $(BR2_x86_64),64) define AMD_CATALYST_EXTRACT_CMDS - unzip -q $(DL_DIR)/$(AMD_CATALYST_SOURCE) -d $(@D) + unzip -q $(AMD_CATALYST_DL_DIR)/$(AMD_CATALYST_SOURCE) -d $(@D) $(SHELL) $(@D)/AMD-Catalyst-$(AMD_CATALYST_VERSION)-Linux-installer-$(AMD_CATALYST_VERBOSE_VER)-x86.x86_64.run --extract $(@D) endef diff --git a/buildroot/package/android-tools/android-tools.mk b/buildroot/package/android-tools/android-tools.mk index f6c6913a683..879d788e3af 100644 --- a/buildroot/package/android-tools/android-tools.mk +++ b/buildroot/package/android-tools/android-tools.mk @@ -15,7 +15,7 @@ ANDROID_TOOLS_LICENSE_FILES = debian/copyright # Extract the Debian tarball inside the sources define ANDROID_TOOLS_DEBIAN_EXTRACT $(call suitable-extractor,$(notdir $(ANDROID_TOOLS_EXTRA_DOWNLOADS))) \ - $(DL_DIR)/$(notdir $(ANDROID_TOOLS_EXTRA_DOWNLOADS)) | \ + $(ANDROID_TOOLS_DL_DIR)/$(notdir $(ANDROID_TOOLS_EXTRA_DOWNLOADS)) | \ $(TAR) -C $(@D) $(TAR_OPTIONS) - endef @@ -81,5 +81,5 @@ define ANDROID_TOOLS_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0755 $(@D)/build-$(t)/$(t) $(TARGET_DIR)/usr/bin/$(t)$(sep)) endef -$(eval $(host-generic-package)) $(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/angularjs/angularjs.mk b/buildroot/package/angularjs/angularjs.mk index 60702a26d2c..a941bc38289 100644 --- a/buildroot/package/angularjs/angularjs.mk +++ b/buildroot/package/angularjs/angularjs.mk @@ -12,7 +12,7 @@ ANGULARJS_LICENSE = MIT ANGULARJS_LICENSE_FILES = angular.js define ANGULARJS_EXTRACT_CMDS - unzip $(DL_DIR)/$(ANGULARJS_SOURCE) -d $(@D) + unzip $(ANGULARJS_DL_DIR)/$(ANGULARJS_SOURCE) -d $(@D) mv $(@D)/angular-$(ANGULARJS_VERSION)/* $(@D) rmdir $(@D)/angular-$(ANGULARJS_VERSION) endef diff --git a/buildroot/package/apache/apache.hash b/buildroot/package/apache/apache.hash index 6471c38b622..76c7c766cbe 100644 --- a/buildroot/package/apache/apache.hash +++ b/buildroot/package/apache/apache.hash @@ -1,2 +1,3 @@ -# From http://www.apache.org/dist/httpd/httpd-2.4.29.tar.bz2.sha256 -sha256 777753a5a25568a2a27428b2214980564bc1c38c1abf9ccc7630b639991f7f00 httpd-2.4.29.tar.bz2 +# From http://archive.apache.org/dist/httpd/httpd-2.4.33.tar.bz2.sha256 +sha256 de02511859b00d17845b9abdd1f975d5ccb5d0b280c567da5bf2ad4b70846f05 httpd-2.4.33.tar.bz2 +sha256 c49c0819a726b70142621715dae3159c47b0349c2bc9db079070f28dadac0229 LICENSE diff --git a/buildroot/package/apache/apache.mk b/buildroot/package/apache/apache.mk index e1b1a209cbb..23414fe44d4 100644 --- a/buildroot/package/apache/apache.mk +++ b/buildroot/package/apache/apache.mk @@ -4,7 +4,7 @@ # ################################################################################ -APACHE_VERSION = 2.4.29 +APACHE_VERSION = 2.4.33 APACHE_SOURCE = httpd-$(APACHE_VERSION).tar.bz2 APACHE_SITE = http://archive.apache.org/dist/httpd APACHE_LICENSE = Apache-2.0 @@ -40,7 +40,6 @@ APACHE_CONF_OPTS = \ --without-suexec-bin \ --enable-mods-shared=all \ --with-mpm=$(APACHE_MPM) \ - --disable-lua \ --disable-luajit ifeq ($(BR2_PACKAGE_LIBXML2),y) @@ -57,6 +56,13 @@ APACHE_CONF_OPTS += \ --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_OPENSSL),y) APACHE_DEPENDENCIES += openssl APACHE_CONF_OPTS += \ diff --git a/buildroot/package/apr-util/apr-util.mk b/buildroot/package/apr-util/apr-util.mk index c44cef009f8..b006964ccb1 100644 --- a/buildroot/package/apr-util/apr-util.mk +++ b/buildroot/package/apr-util/apr-util.mk @@ -47,6 +47,17 @@ 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 @@ -54,6 +65,13 @@ 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 diff --git a/buildroot/package/armadillo/Config.in b/buildroot/package/armadillo/Config.in index 9483f181cf7..47c7cd9ffd5 100644 --- a/buildroot/package/armadillo/Config.in +++ b/buildroot/package/armadillo/Config.in @@ -2,7 +2,6 @@ comment "armadillo needs a toolchain w/ C++" depends on !BR2_INSTALL_LIBSTDCPP depends on !(BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el) depends on !BR2_powerpc - depends on !BR2_bfin depends on !BR2_m68k_cf comment "armadillo needs a glibc toolchain w/ C++" @@ -14,7 +13,6 @@ config BR2_PACKAGE_ARMADILLO depends on BR2_INSTALL_LIBSTDCPP depends on !(BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el) # clapack depends on !BR2_powerpc || BR2_TOOLCHAIN_USES_GLIBC # clapack - depends on !BR2_bfin # clapack depends on !BR2_m68k_cf # clapack select BR2_PACKAGE_CLAPACK help diff --git a/buildroot/package/asterisk/0006-build-fix-issues-building-without-ssl.patch b/buildroot/package/asterisk/0006-build-fix-issues-building-without-ssl.patch new file mode 100644 index 00000000000..b02031e5abc --- /dev/null +++ b/buildroot/package/asterisk/0006-build-fix-issues-building-without-ssl.patch @@ -0,0 +1,57 @@ +From 999e0c17d7e4139d36730752a34fbfde18a4f9f1 Mon Sep 17 00:00:00 2001 +From: Corey Farrell +Date: Sun, 19 Nov 2017 14:52:59 -0500 +Subject: [PATCH] Build: Fix issues building without SSL. + +* Fix conditional in libasteriskssl. +* Use variables produced by configure to link the SSL and uuid libraries + into libasteriskpj.so instead of hard-coding them. + +ASTERISK-27431 + +Change-Id: I3977931fd3ef8c4e4376349ccddb354eb839b58d + +Downloaded from upstream master branch +https://github.com/asterisk/asterisk/commit/999e0c17d7e4139d36730752a34fbfde18a4f9f1 + +Signed-off-by: Bernd Kuhls +--- + main/Makefile | 4 ++-- + main/libasteriskssl.c | 2 +- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/main/Makefile b/main/Makefile +index 08d1f65580e..c724e2012b0 100644 +--- a/main/Makefile ++++ b/main/Makefile +@@ -273,7 +273,7 @@ endif + + $(ASTPJ_LIB).$(ASTPJ_SO_VERSION): _ASTLDFLAGS+=-Wl,-soname=$(ASTPJ_LIB).$(ASTPJ_SO_VERSION) $(PJ_LDFLAGS) + $(ASTPJ_LIB).$(ASTPJ_SO_VERSION): _ASTCFLAGS+=-fPIC -DAST_MODULE=\"asteriskpj\" -DAST_NOT_MODULE $(PJ_CFLAGS) +-$(ASTPJ_LIB).$(ASTPJ_SO_VERSION): LIBS+=$(PJPROJECT_LDLIBS) -lssl -lcrypto -luuid -lm -lpthread $(RT_LIB) ++$(ASTPJ_LIB).$(ASTPJ_SO_VERSION): LIBS+=$(PJPROJECT_LDLIBS) $(OPENSSL_LIB) $(UUID_LIB) -lm -lpthread $(RT_LIB) + ifeq ($(GNU_LD),1) + $(ASTPJ_LIB).$(ASTPJ_SO_VERSION): SO_SUPPRESS_SYMBOLS=-Wl,--version-script,libasteriskpj.exports,--warn-common + endif +@@ -298,7 +298,7 @@ ASTPJ_LIB:=libasteriskpj.dylib + # /lib or /usr/lib + $(ASTPJ_LIB): _ASTLDFLAGS+=-dynamiclib -install_name $(ASTLIBDIR)/$(ASTPJ_LIB) $(PJ_LDFLAGS) + $(ASTPJ_LIB): _ASTCFLAGS+=-fPIC -DAST_MODULE=\"asteriskpj\" $(PJ_CFLAGS) -DAST_NOT_MODULE +-$(ASTPJ_LIB): LIBS+=$(PJPROJECT_LIBS) -lssl -lcrypto -luuid -lm -lpthread $(RT_LIB) ++$(ASTPJ_LIB): LIBS+=$(PJPROJECT_LIBS) $(OPENSSL_LIB) $(UUID_LIB) -lm -lpthread $(RT_LIB) + $(ASTPJ_LIB): SOLINK=$(DYLINK) + + # Special rules for building a shared library (not a dynamically loadable module) +diff --git a/main/libasteriskssl.c b/main/libasteriskssl.c +index 8b19e247da9..e2e256f8ffe 100644 +--- a/main/libasteriskssl.c ++++ b/main/libasteriskssl.c +@@ -37,7 +37,7 @@ + #endif + + #if defined(HAVE_OPENSSL) && \ +- !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) ++ (!defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)) + + #include + diff --git a/buildroot/package/asterisk/asterisk.mk b/buildroot/package/asterisk/asterisk.mk index 28b85da5623..f2f210b5245 100644 --- a/buildroot/package/asterisk/asterisk.mk +++ b/buildroot/package/asterisk/asterisk.mk @@ -102,7 +102,7 @@ ASTERISK_CONF_OPTS = \ --with-libxml2 \ --with-ncurses="$(STAGING_DIR)/usr" \ --with-sqlite3="$(STAGING_DIR)/usr" \ - --with-sounds-cache=$(BR2_DL_DIR) + --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 diff --git a/buildroot/package/atest/Config.in b/buildroot/package/atest/Config.in index 9a2e342a1ea..647b2163ea1 100644 --- a/buildroot/package/atest/Config.in +++ b/buildroot/package/atest/Config.in @@ -1,7 +1,6 @@ config BR2_PACKAGE_ATEST bool "atest" depends on BR2_TOOLCHAIN_HAS_THREADS # alsa-lib - depends on !BR2_bfin # libev select BR2_PACKAGE_ALSA_LIB select BR2_PACKAGE_LIBEV help @@ -11,5 +10,4 @@ config BR2_PACKAGE_ATEST https://github.com/amouiche/atest comment "atest needs a toolchain w/ threads" - depends on !BR2_bfin depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/attr/0004-all-use-install-1-to-install-executables.patch b/buildroot/package/attr/0004-all-use-install-1-to-install-executables.patch new file mode 100644 index 00000000000..ef59bb797c6 --- /dev/null +++ b/buildroot/package/attr/0004-all-use-install-1-to-install-executables.patch @@ -0,0 +1,67 @@ +From 4187e60ab52cac3ed36036a354977310dab68dcb Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Tue, 8 May 2018 15:16:10 +0200 +Subject: [PATCH] all: use install(1) to install executables + +When the destination file already exists, the current install script +will overwrite it with the new executable. + +However, when the existing executable is a symlink or hardlink to +something else, like busybox, this effectively overwrites that something +with the new executable, and thus replaces busybox and all its applets +with the code for either of the three commands. + +We fix that by simply calling install(1). install(1) is sufficiently +widespread that we don't bother checking for it, as this is just a +workaround while waiting for the version bump that will eventually fix +it for good. + +Signed-off-by: "Yann E. MORIN" +--- + attr/Makefile | 4 ++-- + getfattr/Makefile | 4 ++-- + setfattr/Makefile | 4 ++-- + 3 files changed, 6 insertions(+), 6 deletions(-) + +diff --git a/attr/Makefile b/attr/Makefile +index 1c467e8..326dd7e 100644 +--- a/attr/Makefile ++++ b/attr/Makefile +@@ -29,6 +29,6 @@ default: $(LTCOMMAND) + include $(BUILDRULES) + + install: default +- $(INSTALL) -m 755 -d $(PKG_BIN_DIR) +- $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) ++ install -D -m 755 $(LTCOMMAND) $(PKG_BIN_DIR)/$(LTCOMMAND) ++ + install-dev install-lib: +diff --git a/getfattr/Makefile b/getfattr/Makefile +index 91d3df2..f913172 100644 +--- a/getfattr/Makefile ++++ b/getfattr/Makefile +@@ -30,6 +30,6 @@ default: $(LTCOMMAND) + include $(BUILDRULES) + + install: default +- $(INSTALL) -m 755 -d $(PKG_BIN_DIR) +- $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) ++ install -D -m 755 $(LTCOMMAND) $(PKG_BIN_DIR)/$(LTCOMMAND) ++ + install-dev install-lib: +diff --git a/setfattr/Makefile b/setfattr/Makefile +index d55461b..26dc5d8 100644 +--- a/setfattr/Makefile ++++ b/setfattr/Makefile +@@ -30,6 +30,6 @@ default: $(LTCOMMAND) + include $(BUILDRULES) + + install: default +- $(INSTALL) -m 755 -d $(PKG_BIN_DIR) +- $(LTINSTALL) -m 755 $(LTCOMMAND) $(PKG_BIN_DIR) ++ install -D -m 755 $(LTCOMMAND) $(PKG_BIN_DIR)/$(LTCOMMAND) ++ + install-dev install-lib: +-- +2.14.1 + diff --git a/buildroot/package/autofs/Config.in b/buildroot/package/autofs/Config.in index 8e08357a4e4..8bb5fe276f6 100644 --- a/buildroot/package/autofs/Config.in +++ b/buildroot/package/autofs/Config.in @@ -2,8 +2,9 @@ config BR2_PACKAGE_AUTOFS bool "autofs" depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL depends on BR2_USE_MMU - depends on BR2_TOOLCHAIN_HAS_NATIVE_RPC 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 @@ -15,7 +16,7 @@ config BR2_PACKAGE_AUTOFS http://www.linuxfromscratch.org/blfs/view/svn/general/autofs.html -comment "autofs needs a toolchain w/ NPTL, RPC, dynamic library" +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_HAS_NATIVE_RPC + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \ + || BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/autofs/autofs.mk b/buildroot/package/autofs/autofs.mk index 90cc38de558..87a218441e3 100644 --- a/buildroot/package/autofs/autofs.mk +++ b/buildroot/package/autofs/autofs.mk @@ -9,7 +9,7 @@ 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 +AUTOFS_DEPENDENCIES = host-flex host-bison host-pkgconf # autofs looks on the build machine for the path of modprobe, so tell # it explicitly where it will be located on the target. @@ -31,4 +31,11 @@ AUTOFS_CONF_OPTS = \ 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/buildroot/package/avahi/avahi.mk b/buildroot/package/avahi/avahi.mk index c8f1af9a9dc..baffe3cb69e 100644 --- a/buildroot/package/avahi/avahi.mk +++ b/buildroot/package/avahi/avahi.mk @@ -125,6 +125,7 @@ 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 @@ -189,6 +190,13 @@ endif ifeq ($(BR2_PACKAGE_AVAHI_DAEMON),y) +ifeq ($(BR2_PACKAGE_SYSTEMD_SYSUSERS),y) +define AVAHI_INSTALL_SYSTEMD_SYSUSERS + $(INSTALL) -D -m 644 package/avahi/avahi_sysusers.conf \ + $(TARGET_DIR)/usr/lib/sysusers.d/avahi.conf +endef +endif + define AVAHI_INSTALL_INIT_SYSTEMD mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants @@ -200,6 +208,8 @@ 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 diff --git a/buildroot/package/avahi/avahi_sysusers.conf b/buildroot/package/avahi/avahi_sysusers.conf new file mode 100644 index 00000000000..463ce97cead --- /dev/null +++ b/buildroot/package/avahi/avahi_sysusers.conf @@ -0,0 +1,5 @@ +# sysusers.d snippet for creating the avahi system user automatically +# at boot on systemd-based systems that ship with an unpopulated +# /etc. See sysusers.d(5) for details. + +u avahi - "Avahi mDNS/DNS-SD Stack" diff --git a/buildroot/package/avrdude/Config.in b/buildroot/package/avrdude/Config.in index 3757f17a1e2..a5680b00282 100644 --- a/buildroot/package/avrdude/Config.in +++ b/buildroot/package/avrdude/Config.in @@ -3,7 +3,6 @@ config BR2_PACKAGE_AVRDUDE depends on BR2_TOOLCHAIN_HAS_THREADS depends on BR2_USE_WCHAR # elfutils depends on !BR2_STATIC_LIBS # elfutils - depends on !BR2_bfin # elfutils depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils select BR2_PACKAGE_ELFUTILS select BR2_PACKAGE_LIBUSB @@ -18,4 +17,3 @@ config BR2_PACKAGE_AVRDUDE comment "avrdude needs a uClibc or glibc toolchain w/ threads, wchar, dynamic library" depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || BR2_STATIC_LIBS \ || !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) - depends on !BR2_bfin diff --git a/buildroot/package/azmq/azmq.hash b/buildroot/package/azmq/azmq.hash index d3993f49884..35139cfaebf 100644 --- a/buildroot/package/azmq/azmq.hash +++ b/buildroot/package/azmq/azmq.hash @@ -1,3 +1,4 @@ # Locally calculated -# https://github.com/zeromq/azmq/archive/v1.0.tar.gz -sha256 c204c731bcb7810ca3a2c5515e88974ef2ff8d0589e60a897dc238b369180e7b azmq-v1.0.tar.gz +# https://github.com/zeromq/azmq/archive/v1.0.2.tar.gz +sha256 25fa8b07756cffae95e25a55c7ea42efe02e8cd797552201aa771dd69cfc8fbf azmq-v1.0.2.tar.gz +sha256 c9bff75738922193e67fa726fa225535870d2aa1059f91452c411736284ad566 LICENSE-BOOST_1_0 diff --git a/buildroot/package/azmq/azmq.mk b/buildroot/package/azmq/azmq.mk index 427ad0f5b4f..9ccb407a658 100644 --- a/buildroot/package/azmq/azmq.mk +++ b/buildroot/package/azmq/azmq.mk @@ -4,7 +4,7 @@ # ################################################################################ -AZMQ_VERSION = v1.0 +AZMQ_VERSION = v1.0.2 AZMQ_SITE = $(call github,zeromq,azmq,$(AZMQ_VERSION)) AZMQ_DEPENDENCIES = boost zeromq AZMQ_LICENSE = BSL-1.0 diff --git a/buildroot/package/azure-iot-sdk-c/azure-iot-sdk-c.mk b/buildroot/package/azure-iot-sdk-c/azure-iot-sdk-c.mk index 18c3e2498ad..504929aee68 100644 --- a/buildroot/package/azure-iot-sdk-c/azure-iot-sdk-c.mk +++ b/buildroot/package/azure-iot-sdk-c/azure-iot-sdk-c.mk @@ -4,7 +4,7 @@ # ################################################################################ -AZURE_IOT_SDK_C_VERSION = 2017-06-30 +AZURE_IOT_SDK_C_VERSION = 2018-03-16 AZURE_IOT_SDK_C_SITE = https://github.com/Azure/azure-iot-sdk-c AZURE_IOT_SDK_C_SITE_METHOD = git AZURE_IOT_SDK_C_GIT_SUBMODULES = YES diff --git a/buildroot/package/bash-completion/Config.in b/buildroot/package/bash-completion/Config.in new file mode 100644 index 00000000000..c907c04a54b --- /dev/null +++ b/buildroot/package/bash-completion/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_BASH_COMPLETION + bool "bash completion" + depends on BR2_PACKAGE_BASH + help + Add bash completion infrastructure. + + The bash completion infrastructure is enabled by + /etc/profile.d/bash_completion.sh, which is normally + sourced by /etc/profile. + + If the system does not use the /etc/profile.d directory + mechanism, the /etc/profile.d/bash_completion.sh script can + be sourced from /etc/bashrc or ~/.bashrc. + + https://github.com/scop/bash-completion diff --git a/buildroot/package/bash-completion/bash-completion.hash b/buildroot/package/bash-completion/bash-completion.hash new file mode 100644 index 00000000000..2c4cf675788 --- /dev/null +++ b/buildroot/package/bash-completion/bash-completion.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c01f5570f5698a0dda8dc9cfb2a83744daa1ec54758373a6e349bd903375f54d bash-completion-2.8.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/bash-completion/bash-completion.mk b/buildroot/package/bash-completion/bash-completion.mk new file mode 100644 index 00000000000..9976918648d --- /dev/null +++ b/buildroot/package/bash-completion/bash-completion.mk @@ -0,0 +1,16 @@ +################################################################################ +# +# bash-completion +# +################################################################################ + +BASH_COMPLETION_VERSION = 2.8 +BASH_COMPLETION_SITE = https://github.com/scop/bash-completion/releases/download/$(BASH_COMPLETION_VERSION) +BASH_COMPLETION_SOURCE = bash-completion-$(BASH_COMPLETION_VERSION).tar.xz +BASH_COMPLETION_LICENSE = GPL-2.0 +BASH_COMPLETION_LICENSE_FILES = COPYING + +# Install bash-completion.pc file +BASH_COMPLETION_INSTALL_STAGING = YES + +$(eval $(autotools-package)) diff --git a/buildroot/package/bash/bash.hash b/buildroot/package/bash/bash.hash index 4e2e48f3633..951bcf5850b 100644 --- a/buildroot/package/bash/bash.hash +++ b/buildroot/package/bash/bash.hash @@ -1,4 +1,4 @@ # Locally calculated after checking pgp signature from -# http://ftp.gnu.org/gnu/bash/bash-4.4.12.tar.gz.sig -sha256 57d8432be54541531a496fd4904fdc08c12542f43605a9202594fa5d5f9f2331 bash-4.4.12.tar.gz +# http://ftp.gnu.org/gnu/bash/bash-4.4.18.tar.gz.sig +sha256 604d9eec5e4ed5fd2180ee44dd756ddca92e0b6aa4217bbab2b6227380317f23 bash-4.4.18.tar.gz sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/bash/bash.mk b/buildroot/package/bash/bash.mk index e9384911a02..bb52bf32598 100644 --- a/buildroot/package/bash/bash.mk +++ b/buildroot/package/bash/bash.mk @@ -4,7 +4,7 @@ # ################################################################################ -BASH_VERSION = 4.4.12 +BASH_VERSION = 4.4.18 BASH_SITE = $(BR2_GNU_MIRROR)/bash # Build after since bash is better than busybox shells BASH_DEPENDENCIES = ncurses readline host-bison \ @@ -39,14 +39,18 @@ BASH_CONF_ENV += bash_cv_getenv_redef=yes endif endif -# Add /bin/bash to /etc/shells otherwise some login tools like dropbear -# can reject the user connexion. See man shells. define BASH_INSTALL_TARGET_CMDS $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ DESTDIR=$(TARGET_DIR) exec_prefix=/ install rm -f $(TARGET_DIR)/bin/bashbug - grep -qsE '^/bin/bash' $(TARGET_DIR)/etc/shells \ +endef + +# Add /bin/bash to /etc/shells otherwise some login tools like dropbear +# can reject the user connection. See man shells. +define BASH_ADD_MKSH_TO_SHELLS + grep -qsE '^/bin/bash$$' $(TARGET_DIR)/etc/shells \ || echo "/bin/bash" >> $(TARGET_DIR)/etc/shells endef +BASH_TARGET_FINALIZE_HOOKS += BASH_ADD_MKSH_TO_SHELLS $(eval $(autotools-package)) diff --git a/buildroot/package/bind/S81named b/buildroot/package/bind/S81named index bc4bb0f246f..1da3008ae2c 100644 --- a/buildroot/package/bind/S81named +++ b/buildroot/package/bind/S81named @@ -3,7 +3,6 @@ CONFIG=/etc/bind/named.conf DAEMON=/usr/sbin/named -[ -x $DAEMON ] || exit 0 [ -f $CONFIG ] || exit 0 case "$1" in diff --git a/buildroot/package/bind/bind.mk b/buildroot/package/bind/bind.mk index bec902079c3..392ef321c23 100644 --- a/buildroot/package/bind/bind.mk +++ b/buildroot/package/bind/bind.mk @@ -93,11 +93,11 @@ endef ifeq ($(BR2_PACKAGE_BIND_SERVER),y) define BIND_INSTALL_INIT_SYSV - $(INSTALL) -m 0755 -D package/bind/S81named \ + $(INSTALL) -m 0755 -D $(BIND_PKGDIR)/S81named \ $(TARGET_DIR)/etc/init.d/S81named endef define BIND_INSTALL_INIT_SYSTEMD - $(INSTALL) -D -m 644 package/bind/named.service \ + $(INSTALL) -D -m 644 $(BIND_PKGDIR)/named.service \ $(TARGET_DIR)/usr/lib/systemd/system/named.service mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants diff --git a/buildroot/package/binutils/2.27/0905-bfin-rofixup-bug.patch b/buildroot/package/binutils/2.27/0905-bfin-rofixup-bug.patch deleted file mode 100644 index da9d5865512..00000000000 --- a/buildroot/package/binutils/2.27/0905-bfin-rofixup-bug.patch +++ /dev/null @@ -1,21 +0,0 @@ -Fixes: LINKER BUG: .rofixup section size mismatch - -Workaround from adi-toolchain commit: -af414ec1fb628ddb1562f062f3db49823ca14ca2 -[#6798] binutils-2.21/bfd: temp workaround for rofixup mismatch errors. - -Signed-off-by: Waldemar Brodkorb - -diff -Nur binutils-2.26.1.orig/bfd/elf32-bfin.c binutils-2.26.1/bfd/elf32-bfin.c ---- binutils-2.26.1.orig/bfd/elf32-bfin.c 2015-11-13 09:27:40.000000000 +0100 -+++ binutils-2.26.1/bfd/elf32-bfin.c 2016-07-31 00:50:48.357995132 +0200 -@@ -4879,7 +4879,8 @@ - - case R_BFIN_FUNCDESC: - picrel->fd++; -- picrel->relocsfd++; -+ if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) -+ picrel->relocsfd++; - break; - - /* This relocation describes the C++ object vtable hierarchy. diff --git a/buildroot/package/binutils/2.28.1/0905-bfin-rofixup-bug.patch b/buildroot/package/binutils/2.28.1/0905-bfin-rofixup-bug.patch deleted file mode 100644 index 5733b219d7f..00000000000 --- a/buildroot/package/binutils/2.28.1/0905-bfin-rofixup-bug.patch +++ /dev/null @@ -1,21 +0,0 @@ -Fixes: LINKER BUG: .rofixup section size mismatch - -Workaround from adi-toolchain commit: -af414ec1fb628ddb1562f062f3db49823ca14ca2 -[#6798] binutils-2.21/bfd: temp workaround for rofixup mismatch errors. - -Signed-off-by: Waldemar Brodkorb - -diff -Nur binutils-2.26.1.orig/bfd/elf32-bfin.c binutils-2.26.1/bfd/elf32-bfin.c ---- binutils-2.26.1.orig/bfd/elf32-bfin.c 2015-11-13 09:27:40.000000000 +0100 -+++ binutils-2.26.1/bfd/elf32-bfin.c 2016-07-31 00:50:48.357995132 +0200 -@@ -4845,7 +4845,8 @@ - - case R_BFIN_FUNCDESC: - picrel->fd++; -- picrel->relocsfd++; -+ if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) -+ picrel->relocsfd++; - break; - - /* This relocation describes the C++ object vtable hierarchy. diff --git a/buildroot/package/binutils/2.29.1/0006-Fixes-LINKER-BUG-.rofixup-section-size-mismatch.patch b/buildroot/package/binutils/2.29.1/0006-Fixes-LINKER-BUG-.rofixup-section-size-mismatch.patch deleted file mode 100644 index e5409efe14a..00000000000 --- a/buildroot/package/binutils/2.29.1/0006-Fixes-LINKER-BUG-.rofixup-section-size-mismatch.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 122de3b633f4273826a2d01702d7c515f93ec2be Mon Sep 17 00:00:00 2001 -From: Waldemar Brodkorb -Date: Sat, 29 Jul 2017 14:08:20 +0200 -Subject: [PATCH] Fixes: LINKER BUG: .rofixup section size mismatch - -Workaround from adi-toolchain commit: -af414ec1fb628ddb1562f062f3db49823ca14ca2 -[#6798] binutils-2.21/bfd: temp workaround for rofixup mismatch errors. - -Signed-off-by: Waldemar Brodkorb ---- - bfd/elf32-bfin.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/bfd/elf32-bfin.c b/bfd/elf32-bfin.c -index b3e09bd..660eec5 100644 ---- a/bfd/elf32-bfin.c -+++ b/bfd/elf32-bfin.c -@@ -4845,7 +4845,8 @@ bfinfdpic_check_relocs (bfd *abfd, struct bfd_link_info *info, - - case R_BFIN_FUNCDESC: - picrel->fd++; -- picrel->relocsfd++; -+ if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) -+ picrel->relocsfd++; - break; - - /* This relocation describes the C++ object vtable hierarchy. --- -2.9.4 - diff --git a/buildroot/package/binutils/2.30/0006-Fixes-LINKER-BUG-.rofixup-section-size-mismatch.patch b/buildroot/package/binutils/2.30/0006-Fixes-LINKER-BUG-.rofixup-section-size-mismatch.patch deleted file mode 100644 index 0ce2cf22882..00000000000 --- a/buildroot/package/binutils/2.30/0006-Fixes-LINKER-BUG-.rofixup-section-size-mismatch.patch +++ /dev/null @@ -1,31 +0,0 @@ -From c3bd478ac1b7e83765230505eb08a0acf2fe3867 Mon Sep 17 00:00:00 2001 -From: Waldemar Brodkorb -Date: Sat, 29 Jul 2017 14:08:20 +0200 -Subject: [PATCH] Fixes: LINKER BUG: .rofixup section size mismatch - -Workaround from adi-toolchain commit: -af414ec1fb628ddb1562f062f3db49823ca14ca2 -[#6798] binutils-2.21/bfd: temp workaround for rofixup mismatch errors. - -Signed-off-by: Waldemar Brodkorb ---- - bfd/elf32-bfin.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/bfd/elf32-bfin.c b/bfd/elf32-bfin.c -index 478b8d4731..a38519b585 100644 ---- a/bfd/elf32-bfin.c -+++ b/bfd/elf32-bfin.c -@@ -4655,7 +4655,8 @@ bfinfdpic_check_relocs (bfd *abfd, struct bfd_link_info *info, - - case R_BFIN_FUNCDESC: - picrel->fd++; -- picrel->relocsfd++; -+ if (bfd_get_section_flags (abfd, sec) & SEC_ALLOC) -+ picrel->relocsfd++; - break; - - /* This relocation describes the C++ object vtable hierarchy. --- -2.14.3 - diff --git a/buildroot/package/binutils/Config.in.host b/buildroot/package/binutils/Config.in.host index d4ed1e31837..22478d917a0 100644 --- a/buildroot/package/binutils/Config.in.host +++ b/buildroot/package/binutils/Config.in.host @@ -24,7 +24,7 @@ endchoice config BR2_BINUTILS_VERSION string - default "arc-2017.09-release" if BR2_BINUTILS_VERSION_ARC + default "arc-2018.03-rc1" if BR2_BINUTILS_VERSION_ARC default "2.28.1" if BR2_BINUTILS_VERSION_2_28_X default "2.29.1" if BR2_BINUTILS_VERSION_2_29_X default "2.30" if BR2_BINUTILS_VERSION_2_30_X diff --git a/buildroot/package/binutils/arc-2017.09-release/0002-ld-makefile.patch b/buildroot/package/binutils/arc-2018.03-rc1/0002-ld-makefile.patch similarity index 100% rename from buildroot/package/binutils/arc-2017.09-release/0002-ld-makefile.patch rename to buildroot/package/binutils/arc-2018.03-rc1/0002-ld-makefile.patch diff --git a/buildroot/package/binutils/arc-2017.09-release/0003-check-ldrunpath-length.patch b/buildroot/package/binutils/arc-2018.03-rc1/0003-check-ldrunpath-length.patch similarity index 100% rename from buildroot/package/binutils/arc-2017.09-release/0003-check-ldrunpath-length.patch rename to buildroot/package/binutils/arc-2018.03-rc1/0003-check-ldrunpath-length.patch diff --git a/buildroot/package/binutils/arc-2017.09-release/0004-add-sysroot-fix-from-bug-3049.patch b/buildroot/package/binutils/arc-2018.03-rc1/0004-add-sysroot-fix-from-bug-3049.patch similarity index 100% rename from buildroot/package/binutils/arc-2017.09-release/0004-add-sysroot-fix-from-bug-3049.patch rename to buildroot/package/binutils/arc-2018.03-rc1/0004-add-sysroot-fix-from-bug-3049.patch diff --git a/buildroot/package/binutils/arc-2017.09-release/0005-poison-system-directories.patch b/buildroot/package/binutils/arc-2018.03-rc1/0005-poison-system-directories.patch similarity index 100% rename from buildroot/package/binutils/arc-2017.09-release/0005-poison-system-directories.patch rename to buildroot/package/binutils/arc-2018.03-rc1/0005-poison-system-directories.patch diff --git a/buildroot/package/binutils/binutils.hash b/buildroot/package/binutils/binutils.hash index 4578a7f56a3..ebe1f2ee248 100644 --- a/buildroot/package/binutils/binutils.hash +++ b/buildroot/package/binutils/binutils.hash @@ -4,4 +4,4 @@ sha512 d748d22306477d60d921078804d21943248c23fca0707aac9b016a352c01c75ca69e8262 sha512 e747ea20d8d79fcd21b9d9f6695059caa7189d60f19256da398e34b789fea9a133c32b192e9693b5828d27683739b0198431bf8b3e39fb3b04884cf89d9aa839 binutils-2.30.tar.xz # Locally calculated (fetched from Github) -sha512 cefff7521dc4ebd8b9773af4f173821ad82dcb3f1fbd0bfdf03e148ba8cec1262b876b221da628ff5db16c30b18c6cbf5ffbec0fddb4677182524684c4c232c1 binutils-arc-2017.09-release.tar.gz +sha512 7b8c4a5ec38a234b3ca097ce38e0e60628561251085fc83a614c8cf476eec53ca77ab34088987c80ce79772d5e2cc513b28a7df45f3dc5d0d3a82296e1f6474f binutils-arc-2018.03-rc1.tar.gz diff --git a/buildroot/package/binutils/binutils.mk b/buildroot/package/binutils/binutils.mk index 1bd01ecefc3..b24e4334c25 100644 --- a/buildroot/package/binutils/binutils.mk +++ b/buildroot/package/binutils/binutils.mk @@ -9,13 +9,13 @@ BINUTILS_VERSION = $(call qstrip,$(BR2_BINUTILS_VERSION)) ifeq ($(BINUTILS_VERSION),) ifeq ($(BR2_arc),y) -BINUTILS_VERSION = arc-2017.09-release +BINUTILS_VERSION = arc-2018.03-rc1 else BINUTILS_VERSION = 2.29.1 endif endif # BINUTILS_VERSION -ifeq ($(BINUTILS_VERSION),arc-2017.09-release) +ifeq ($(BINUTILS_VERSION),arc-2018.03-rc1) BINUTILS_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,binutils-gdb,$(BINUTILS_VERSION)) BINUTILS_SOURCE = binutils-$(BINUTILS_VERSION).tar.gz BINUTILS_FROM_GIT = y @@ -65,12 +65,6 @@ HOST_BINUTILS_CONF_ENV += MAKEINFO=true HOST_BINUTILS_MAKE_OPTS += MAKEINFO=true HOST_BINUTILS_INSTALL_OPTS += MAKEINFO=true install -# gcc bug with Os/O1/O2/O3, PR77311 -# error: unable to find a register to spill in class 'CCREGS' -ifeq ($(BR2_bfin),y) -BINUTILS_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O0" -endif - # 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 @@ -136,5 +130,17 @@ ifeq ($(BR2_BINUTILS_ENABLE_LTO),y) HOST_BINUTILS_CONF_OPTS += --enable-plugins --enable-lto endif +# Hardlinks between binaries in different directories cause a problem +# with rpath fixup, so we de-hardlink those binaries, and replace them +# with symbolic links. +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) ; \ + ln -s ../../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/buildroot/package/bluez-alsa/Config.in b/buildroot/package/bluez-alsa/Config.in new file mode 100644 index 00000000000..1753da48f90 --- /dev/null +++ b/buildroot/package/bluez-alsa/Config.in @@ -0,0 +1,36 @@ +config BR2_PACKAGE_BLUEZ_ALSA + bool "bluez-alsa" + depends on !BR2_STATIC_LIBS # bluez5 + depends on !BR2_PACKAGE_BLUEZ_UTILS # bluez5 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 # bluez5 + depends on BR2_TOOLCHAIN_HAS_SYNC_4 # bluez5 + depends on BR2_USE_MMU # bluez5 -> dbus + depends on BR2_USE_WCHAR # libglib2 + select BR2_PACKAGE_ALSA_LIB + select BR2_PACKAGE_BLUEZ5_UTILS + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_SBC + help + Bluetooth Audio ALSA Backend. + + https://github.com/Arkq/bluez-alsa + +if BR2_PACKAGE_BLUEZ_ALSA + +config BR2_PACKAGE_BLUEZ_ALSA_HCITOP + bool "hcitop" + depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS + select BR2_PACKAGE_LIBBSD + select BR2_PACKAGE_NCURSES + help + Enable top-like monitoring tool for HCI. + +endif + +comment "bluez-alsa needs a toolchain w/ wchar, NPTL, headers >= 3.4, dynamic library" + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ + !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4 || BR2_STATIC_LIBS + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_USE_MMU + depends on !BR2_PACKAGE_BLUEZ_UTILS diff --git a/buildroot/package/bluez-alsa/bluez-alsa.hash b/buildroot/package/bluez-alsa/bluez-alsa.hash new file mode 100644 index 00000000000..b96c37cc468 --- /dev/null +++ b/buildroot/package/bluez-alsa/bluez-alsa.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 dfa48e991a6bbb194a9161deb949371155150dabd5cfc1453a8df754b7cbdc84 bluez-alsa-9045edb436ea755f395a2e09e4525b5defad286a.tar.gz +sha256 c90a0081b0526834f700d084e48819b18d11453ecb030c9b7de0d2cc3e3711a5 LICENSE.txt diff --git a/buildroot/package/bluez-alsa/bluez-alsa.mk b/buildroot/package/bluez-alsa/bluez-alsa.mk new file mode 100644 index 00000000000..3ba237a6b78 --- /dev/null +++ b/buildroot/package/bluez-alsa/bluez-alsa.mk @@ -0,0 +1,43 @@ +################################################################################ +# +# bluez-alsa +# +################################################################################ + +BLUEZ_ALSA_VERSION = 9045edb436ea755f395a2e09e4525b5defad286a +BLUEZ_ALSA_SITE = $(call github,Arkq,bluez-alsa,$(BLUEZ_ALSA_VERSION)) +BLUEZ_ALSA_LICENSE = MIT +BLUEZ_ALSA_LICENSE_FILES = LICENSE.txt +BLUEZ_ALSA_DEPENDENCIES = alsa-lib bluez5_utils libglib2 sbc host-pkgconf + +# git repo, no configure +BLUEZ_ALSA_AUTORECONF = YES + +# Autoreconf requires an existing m4 directory +define BLUEZ_ALSA_MKDIR_M4 + mkdir -p $(@D)/m4 +endef +BLUEZ_ALSA_POST_PATCH_HOOKS += BLUEZ_ALSA_MKDIR_M4 + +BLUEZ_ALSA_CONF_OPTS = \ + --enable-aplay \ + --disable-debug-time \ + --disable-pcm-test \ + --with-alsaplugindir=/usr/lib/alsa-lib \ + --with-alsadatadir=/usr/share/alsa + +ifeq ($(BR2_PACKAGE_FDK_AAC),y) +BLUEZ_ALSA_DEPENDENCIES += fdk-aac +BLUEZ_ALSA_CONF_OPTS += --enable-aac +else +BLUEZ_ALSA_CONF_OPTS += --disable-aac +endif + +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 + +$(eval $(autotools-package)) diff --git a/buildroot/package/bluez5_utils/0001-bt_shell-APIs-shall-only-be-build-if-readline-is-pre.patch b/buildroot/package/bluez5_utils/0001-bt_shell-APIs-shall-only-be-build-if-readline-is-pre.patch new file mode 100644 index 00000000000..394742b6804 --- /dev/null +++ b/buildroot/package/bluez5_utils/0001-bt_shell-APIs-shall-only-be-build-if-readline-is-pre.patch @@ -0,0 +1,32 @@ +From 654444dd8faf02b46f41d81f3d9c623d57bdd399 Mon Sep 17 00:00:00 2001 +From: Luiz Augusto von Dentz +Date: Fri, 20 Apr 2018 16:04:17 +0200 +Subject: [PATCH] bt_shell APIs shall only be build if readline is present on + the system since it currently depend on it. + +Signed-off-by: Thomas Petazzoni +Upstream-status: https://marc.info/?l=linux-bluetooth&m=152422938306592&w=2 +--- + Makefile.am | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index daf34b6ca..9c3c17139 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -119,7 +119,11 @@ shared_sources = src/shared/io.h src/shared/timeout.h \ + src/shared/gatt-server.h src/shared/gatt-server.c \ + src/shared/gatt-db.h src/shared/gatt-db.c \ + src/shared/gap.h src/shared/gap.c \ +- src/shared/tty.h src/shared/shell.c src/shared/shell.h ++ src/shared/tty.h ++ ++if READLINE ++shared_sources += src/shared/shell.c src/shared/shell.h ++endif + + src_libshared_glib_la_SOURCES = $(shared_sources) \ + src/shared/io-glib.c \ +-- +2.14.3 + diff --git a/buildroot/package/bluez5_utils/0001-tools-bneptest.c-Remove-include-linux-if_bridge.h-to.patch b/buildroot/package/bluez5_utils/0001-tools-bneptest.c-Remove-include-linux-if_bridge.h-to.patch deleted file mode 100644 index e8a3ff47bf1..00000000000 --- a/buildroot/package/bluez5_utils/0001-tools-bneptest.c-Remove-include-linux-if_bridge.h-to.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 7c136b4f1941e5bb2a6c8d93985c5734c6aefb29 Mon Sep 17 00:00:00 2001 -From: Bernd Kuhls -Date: Sun, 22 May 2016 09:48:57 +0200 -Subject: [PATCH 1/1] tools/bneptest.c: Remove include linux/if_bridge.h to fix - musl build - -Inspired by busybox commit: -https://git.busybox.net/busybox/commit/networking/brctl.c?id=5fa6d1a632505789409a2ba6cf8e112529f9db18 - -The build error was found by the autobuilders of the buildroot project: -http://autobuild.buildroot.net/results/eba/ebaa0bcb9c325aa6ed0bbd6c7ec75d44befa7645/build-end.log - -Signed-off-by: Bernd Kuhls -(Patch sent upstream: - http://article.gmane.org/gmane.linux.bluez.kernel/67621) ---- - tools/bneptest.c | 12 +++++++++++- - 1 file changed, 11 insertions(+), 1 deletion(-) - -diff --git a/tools/bneptest.c b/tools/bneptest.c -index 1404252..b832d72 100644 ---- a/tools/bneptest.c -+++ b/tools/bneptest.c -@@ -36,7 +36,17 @@ - #include - #include - #include --#include -+/* #include -+ * breaks on musl: we already included netinet/in.h, -+ * if we also include here, we get this: -+ * In file included from /usr/include/linux/if_bridge.h:18, -+ * from networking/brctl.c:67: -+ * /usr/include/linux/in6.h:32: error: redefinition of 'struct in6_addr' -+ * /usr/include/linux/in6.h:49: error: redefinition of 'struct sockaddr_in6' -+ * /usr/include/linux/in6.h:59: error: redefinition of 'struct ipv6_mreq' -+ */ -+/* From */ -+#define BRCTL_SET_BRIDGE_FORWARD_DELAY 8 - - #include - --- -2.8.1 - diff --git a/buildroot/package/bluez5_utils/Config.in b/buildroot/package/bluez5_utils/Config.in index 55831e9b61a..c5e8dfbcf76 100644 --- a/buildroot/package/bluez5_utils/Config.in +++ b/buildroot/package/bluez5_utils/Config.in @@ -56,29 +56,29 @@ config BR2_PACKAGE_BLUEZ5_UTILS_EXPERIMENTAL help Build BlueZ 5.x experimental Nokia OBEX PC Suite plugin -config BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH bool "build health plugin" help Build BlueZ 5.x health plugin -config BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI bool "build midi profile" select BR2_PACKAGE_ALSA_LIB select BR2_PACKAGE_ALSA_LIB_SEQ help Build BlueZ 5.x midi plugin -config BR2_PACKAGE_BLUEZ5_PLUGINS_NFC +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_NFC bool "build nfc plugin" help Build BlueZ 5.x nfc plugin -config BR2_PACKAGE_BLUEZ5_PLUGINS_SAP +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SAP bool "build sap plugin" help Build BlueZ 5.x sap plugin -config BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS +config BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS bool "build sixaxis plugin" depends on BR2_PACKAGE_HAS_UDEV help diff --git a/buildroot/package/bluez5_utils/bluez5_utils.hash b/buildroot/package/bluez5_utils/bluez5_utils.hash index dc331b5a0d5..8d142b755c4 100644 --- a/buildroot/package/bluez5_utils/bluez5_utils.hash +++ b/buildroot/package/bluez5_utils/bluez5_utils.hash @@ -1,2 +1,4 @@ # From https://www.kernel.org/pub/linux/bluetooth/sha256sums.asc: -sha256 b9a8723072ef66bae7ec301c774902ebcb444c9c5b149b5a199e60a1ba970e90 bluez-5.48.tar.xz +sha256 33301d7a514c73d535ee1f91c2aed1af1f2e53efe11d3ac06bcf0d7abed2ce95 bluez-5.49.tar.xz +sha256 b499eddebda05a8859e32b820a64577d91f1de2b52efa2a1575a2cb4000bc259 COPYING +sha256 ec60b993835e2c6b79e6d9226345f4e614e686eb57dc13b6420c15a33a8996e5 COPYING.LIB diff --git a/buildroot/package/bluez5_utils/bluez5_utils.mk b/buildroot/package/bluez5_utils/bluez5_utils.mk index 395340a3e67..aff1fd97961 100644 --- a/buildroot/package/bluez5_utils/bluez5_utils.mk +++ b/buildroot/package/bluez5_utils/bluez5_utils.mk @@ -4,13 +4,15 @@ # ################################################################################ -BLUEZ5_UTILS_VERSION = 5.48 +BLUEZ5_UTILS_VERSION = 5.49 BLUEZ5_UTILS_SOURCE = bluez-$(BLUEZ5_UTILS_VERSION).tar.xz BLUEZ5_UTILS_SITE = $(BR2_KERNEL_MIRROR)/linux/bluetooth BLUEZ5_UTILS_INSTALL_STAGING = YES BLUEZ5_UTILS_DEPENDENCIES = dbus libglib2 BLUEZ5_UTILS_LICENSE = GPL-2.0+, LGPL-2.1+ BLUEZ5_UTILS_LICENSE_FILES = COPYING COPYING.LIB +# 0001-bt_shell-APIs-shall-only-be-build-if-readline-is-pre.patch +BLUEZ5_UTILS_AUTORECONF = YES BLUEZ5_UTILS_CONF_OPTS = \ --enable-tools \ @@ -39,14 +41,14 @@ BLUEZ5_UTILS_CONF_OPTS += --disable-experimental endif # enable health plugin -ifeq ($(BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH),y) +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_HEALTH),y) BLUEZ5_UTILS_CONF_OPTS += --enable-health else BLUEZ5_UTILS_CONF_OPTS += --disable-health endif # enable midi profile -ifeq ($(BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI),y) +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_MIDI),y) BLUEZ5_UTILS_CONF_OPTS += --enable-midi BLUEZ5_UTILS_DEPENDENCIES += alsa-lib else @@ -54,21 +56,21 @@ BLUEZ5_UTILS_CONF_OPTS += --disable-midi endif # enable nfc plugin -ifeq ($(BR2_PACKAGE_BLUEZ5_PLUGINS_NFC),y) +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_PLUGINS_SAP),y) +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_PLUGINS_SIXAXIS),y) +ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS_PLUGINS_SIXAXIS),y) BLUEZ5_UTILS_CONF_OPTS += --enable-sixaxis else BLUEZ5_UTILS_CONF_OPTS += --disable-sixaxis diff --git a/buildroot/package/boinc/boinc-client.service b/buildroot/package/boinc/boinc-client.service deleted file mode 100644 index 9de940e938a..00000000000 --- a/buildroot/package/boinc/boinc-client.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=BOINC client -After=network.target - -[Service] -ExecStart=/usr/bin/boinc_client -Restart=always - -[Install] -WantedBy=multi-user.target diff --git a/buildroot/package/boinc/boinc.hash b/buildroot/package/boinc/boinc.hash index 8f44982246d..564096c7452 100644 --- a/buildroot/package/boinc/boinc.hash +++ b/buildroot/package/boinc/boinc.hash @@ -1,4 +1,4 @@ # Locally computed: -sha256 ed5f3dcdc8d1cc5277529afb701377e77d1ff89711368a7456553bf249940bad boinc-7.8.6.tar.gz +sha256 5c77752a5cbb69b2dc0343c5aea331f2ec73410d9f33f5f50867e4071e799609 boinc-7.10.1.tar.gz sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING sha256 a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c COPYING.LESSER diff --git a/buildroot/package/boinc/boinc.mk b/buildroot/package/boinc/boinc.mk index 0105034531e..04aacc2c3d4 100644 --- a/buildroot/package/boinc/boinc.mk +++ b/buildroot/package/boinc/boinc.mk @@ -4,8 +4,8 @@ # ################################################################################ -BOINC_VERSION_MAJOR = 7.8 -BOINC_VERSION = $(BOINC_VERSION_MAJOR).6 +BOINC_VERSION_MAJOR = 7.10 +BOINC_VERSION = $(BOINC_VERSION_MAJOR).1 # client_release can be used to build the Client and Manager but not the Server # part. The Server currently has no versioning (see # https://github.com/BOINC/boinc/pull/1798). @@ -44,14 +44,16 @@ endef BOINC_POST_INSTALL_TARGET_HOOKS += BOINC_REMOVE_UNNEEDED_FILE +define BOINC_USERS + boinc -1 boinc -1 * /var/lib/boinc - BOINC user +endef + define BOINC_INSTALL_INIT_SYSV $(INSTALL) -D -m 0755 package/boinc/S99boinc-client \ $(TARGET_DIR)/etc/init.d/S99boinc-client endef define BOINC_INSTALL_INIT_SYSTEMD - $(INSTALL) -D -m 644 package/boinc/boinc-client.service \ - $(TARGET_DIR)/usr/lib/systemd/system/boinc-client.service mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants ln -sf ../../../../usr/lib/systemd/system/boinc-client.service \ $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/boinc-client.service diff --git a/buildroot/package/bootstrap/bootstrap.hash b/buildroot/package/bootstrap/bootstrap.hash index 32ef9c4bbbe..ed29f9c5290 100644 --- a/buildroot/package/bootstrap/bootstrap.hash +++ b/buildroot/package/bootstrap/bootstrap.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 fa1caaaf640c32c553d0b323da1036f2232703d64a1d22c3a2ec84ace68c791a bootstrap-4.0.0-dist.zip -sha256 8c1a4c25634d5841924aab1848acc9dcbc3d5672183053c8b71ff2139b65d7c3 css/bootstrap.css +sha256 75c0325fd82e29cf524e28d8be7716c216cc507ba85b087ab36868209236aa01 bootstrap-4.1.0-dist.zip +sha256 0ce7fbe215cdf921ed87d00a374404681d5d24898589a7fe60e068d09289b4ba css/bootstrap.css diff --git a/buildroot/package/bootstrap/bootstrap.mk b/buildroot/package/bootstrap/bootstrap.mk index 61d6c826fc2..0699485f52f 100644 --- a/buildroot/package/bootstrap/bootstrap.mk +++ b/buildroot/package/bootstrap/bootstrap.mk @@ -4,19 +4,21 @@ # ################################################################################ -BOOTSTRAP_VERSION = 4.0.0 +BOOTSTRAP_VERSION = 4.1.0 BOOTSTRAP_SITE = https://github.com/twbs/bootstrap/releases/download/v$(BOOTSTRAP_VERSION) BOOTSTRAP_SOURCE = bootstrap-$(BOOTSTRAP_VERSION)-dist.zip BOOTSTRAP_LICENSE = MIT BOOTSTRAP_LICENSE_FILES = css/bootstrap.css define BOOTSTRAP_EXTRACT_CMDS - $(UNZIP) $(DL_DIR)/$(BOOTSTRAP_SOURCE) -d $(@D) + $(UNZIP) $(BOOTSTRAP_DL_DIR)/$(BOOTSTRAP_SOURCE) -d $(@D) endef define BOOTSTRAP_INSTALL_TARGET_CMDS $(INSTALL) -m 0644 -D $(@D)/css/bootstrap.min.css \ $(TARGET_DIR)/var/www/bootstrap/css/bootstrap.min.css + $(INSTALL) -m 0644 -D $(@D)/css/bootstrap.min.css.map \ + $(TARGET_DIR)/var/www/bootstrap/css/bootstrap.min.css.map $(INSTALL) -m 0644 -D $(@D)/js/bootstrap.min.js \ $(TARGET_DIR)/var/www/bootstrap/js/bootstrap.min.js endef diff --git a/buildroot/package/brotli/0001-CMake-Allow-using-BUILD_SHARED_LIBS-to-choose-static.patch b/buildroot/package/brotli/0001-CMake-Allow-using-BUILD_SHARED_LIBS-to-choose-static.patch new file mode 100644 index 00000000000..33b9bb70ce7 --- /dev/null +++ b/buildroot/package/brotli/0001-CMake-Allow-using-BUILD_SHARED_LIBS-to-choose-static.patch @@ -0,0 +1,144 @@ +From b60b613e7c2c9bf7a142c3c486ac6e77ad93f5d1 Mon Sep 17 00:00:00 2001 +From: Adrian Perez de Castro +Date: Mon, 26 Mar 2018 19:08:31 +0100 +Subject: [PATCH] CMake: Allow using BUILD_SHARED_LIBS to choose static/shared + libs + +By convention projects using CMake which can build either static or +shared libraries use a BUILD_SHARED_LIBS flag to allow selecting between +both: the add_library() command automatically switches between both using +this variable when the library kind is not passed to add_library(). It +is also usual to expose the BUILD_SHARED_LIBS as an user-facing setting +with the option() command. + +This way, the following will both work as expected: + + % cmake -DBUILD_SHARED_LIBS=OFF ... + % cmake -DBUILS_SHARED_LIBS=ON ... + +This is helpful for distributions which need (or want) to build only +static libraries. +--- + CMakeLists.txt | 42 ++++++++++++++---------------------------- + c/fuzz/test_fuzzer.sh | 6 +++--- + 2 files changed, 17 insertions(+), 31 deletions(-) + +Signed-off-by: Adrian Perez de Castro +Upstream-Status: Submitted [https://github.com/google/brotli/pull/655] + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 99b9258..3867931 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,6 +6,8 @@ cmake_minimum_required(VERSION 2.8.6) + + project(brotli C) + ++option(BUILD_SHARED_LIBS "Build shared libraries" ON) ++ + # If Brotli is being bundled in another project, we don't want to + # install anything. However, we want to let people override this, so + # we'll use the BROTLI_BUNDLED_MODE variable to let them do that; just +@@ -114,10 +116,6 @@ set(BROTLI_LIBRARIES_CORE brotlienc brotlidec brotlicommon) + set(BROTLI_LIBRARIES ${BROTLI_LIBRARIES_CORE} ${LIBM_LIBRARY}) + mark_as_advanced(BROTLI_LIBRARIES) + +-set(BROTLI_LIBRARIES_CORE_STATIC brotlienc-static brotlidec-static brotlicommon-static) +-set(BROTLI_LIBRARIES_STATIC ${BROTLI_LIBRARIES_CORE_STATIC} ${LIBM_LIBRARY}) +-mark_as_advanced(BROTLI_LIBRARIES_STATIC) +- + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + add_definitions(-DOS_LINUX) + elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") +@@ -137,24 +135,22 @@ endfunction() + transform_sources_list("scripts/sources.lst" "${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake") + include("${CMAKE_CURRENT_BINARY_DIR}/sources.lst.cmake") + +-add_library(brotlicommon SHARED ${BROTLI_COMMON_C}) +-add_library(brotlidec SHARED ${BROTLI_DEC_C}) +-add_library(brotlienc SHARED ${BROTLI_ENC_C}) +- +-add_library(brotlicommon-static STATIC ${BROTLI_COMMON_C}) +-add_library(brotlidec-static STATIC ${BROTLI_DEC_C}) +-add_library(brotlienc-static STATIC ${BROTLI_ENC_C}) ++add_library(brotlicommon ${BROTLI_COMMON_C}) ++add_library(brotlidec ${BROTLI_DEC_C}) ++add_library(brotlienc ${BROTLI_ENC_C}) + + # Older CMake versions does not understand INCLUDE_DIRECTORIES property. + include_directories(${BROTLI_INCLUDE_DIRS}) + ++if(BUILD_SHARED_LIBS) ++ foreach(lib brotlicommon brotlidec brotlienc) ++ target_compile_definitions(${lib} PUBLIC "BROTLI_SHARED_COMPILATION" ) ++ string(TOUPPER "${lib}" LIB) ++ set_target_properties (${lib} PROPERTIES DEFINE_SYMBOL "${LIB}_SHARED_COMPILATION" ) ++ endforeach() ++endif() ++ + foreach(lib brotlicommon brotlidec brotlienc) +- target_compile_definitions(${lib} PUBLIC "BROTLI_SHARED_COMPILATION" ) +- string(TOUPPER "${lib}" LIB) +- set_target_properties (${lib} PROPERTIES DEFINE_SYMBOL "${LIB}_SHARED_COMPILATION" ) +-endforeach() +- +-foreach(lib brotlicommon brotlidec brotlienc brotlicommon-static brotlidec-static brotlienc-static) + target_link_libraries(${lib} ${LIBM_LIBRARY}) + set_property(TARGET ${lib} APPEND PROPERTY INCLUDE_DIRECTORIES ${BROTLI_INCLUDE_DIRS}) + set_target_properties(${lib} PROPERTIES +@@ -167,9 +163,6 @@ endforeach() + target_link_libraries(brotlidec brotlicommon) + target_link_libraries(brotlienc brotlicommon) + +-target_link_libraries(brotlidec-static brotlicommon-static) +-target_link_libraries(brotlienc-static brotlicommon-static) +- + # For projects stuck on older versions of CMake, this will set the + # BROTLI_INCLUDE_DIRS and BROTLI_LIBRARIES variables so they still + # have a relatively easy way to use Brotli: +@@ -183,7 +176,7 @@ endif() + + # Build the brotli executable + add_executable(brotli ${BROTLI_CLI_C}) +-target_link_libraries(brotli ${BROTLI_LIBRARIES_STATIC}) ++target_link_libraries(brotli ${BROTLI_LIBRARIES}) + + # Installation + if(NOT BROTLI_BUNDLED_MODE) +@@ -199,13 +192,6 @@ if(NOT BROTLI_BUNDLED_MODE) + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + ) + +- install( +- TARGETS ${BROTLI_LIBRARIES_CORE_STATIC} +- ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" +- LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" +- RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" +- ) +- + install( + DIRECTORY ${BROTLI_INCLUDE_DIRS}/brotli + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" +diff --git a/c/fuzz/test_fuzzer.sh b/c/fuzz/test_fuzzer.sh +index 5c754e1..e85e12f 100755 +--- a/c/fuzz/test_fuzzer.sh ++++ b/c/fuzz/test_fuzzer.sh +@@ -14,12 +14,12 @@ mkdir bin + cd bin + + cmake $BROTLI -DCMAKE_C_COMPILER="$CC" -DCMAKE_CXX_COMPILER="$CXX" \ +- -DBUILD_TESTING=OFF -DENABLE_SANITIZER=address +-make -j$(nproc) brotlidec-static ++ -DBUILD_TESTING=OFF -DBUILD_SHARED_LIBS=OFF -DENABLE_SANITIZER=address ++make -j$(nproc) brotlidec + + ${CXX} -o run_decode_fuzzer -std=c++11 -fsanitize=address -I$SRC/include \ + $SRC/fuzz/decode_fuzzer.cc $SRC/fuzz/run_decode_fuzzer.cc \ +- ./libbrotlidec-static.a ./libbrotlicommon-static.a ++ ./libbrotlidec.a ./libbrotlicommon.a + + mkdir decode_corpora + unzip $BROTLI/java/org/brotli/integration/fuzz_data.zip -d decode_corpora +-- +2.16.3 + diff --git a/buildroot/package/brotli/0001-Tell-CMake-to-not-check-for-a-C-compiler.patch b/buildroot/package/brotli/0001-Tell-CMake-to-not-check-for-a-C-compiler.patch new file mode 100644 index 00000000000..410de2830e1 --- /dev/null +++ b/buildroot/package/brotli/0001-Tell-CMake-to-not-check-for-a-C-compiler.patch @@ -0,0 +1,31 @@ +From fea0b1e46c486225d57e730cc0f94fa06b5b93fc Mon Sep 17 00:00:00 2001 +From: Adrian Perez de Castro +Date: Mon, 26 Mar 2018 12:12:00 +0100 +Subject: [PATCH] Tell CMake to not check for a C++ compiler + +By default CMake checks both for C and C++ compilers, while the latter +is not needed. Setting the list of languages to just "C" in the call to +project() removes the unneeded check. +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Signed-off-by: Adrian Perez de Castro +Upstream-Status: Submitted [https://github.com/google/brotli/pull/653] + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2dc7232..3fbcbfb 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -4,7 +4,7 @@ + # support 2.8.7. + cmake_minimum_required(VERSION 2.8.6) + +-project(brotli) ++project(brotli LANGUAGES C) + + # If Brotli is being bundled in another project, we don't want to + # install anything. However, we want to let people override this, so +-- +2.16.3 + diff --git a/buildroot/package/brotli/Config.in b/buildroot/package/brotli/Config.in new file mode 100644 index 00000000000..e40f5b6b9ff --- /dev/null +++ b/buildroot/package/brotli/Config.in @@ -0,0 +1,12 @@ +config BR2_PACKAGE_BROTLI + bool "brotli" + help + Generic-purpose lossless compression library. The algorithm + compresses data using a combination of a modern variant of + the LZ77 algorithm, Huffman coding and 2nd order context + modeling, with a compression ratio comparable to the best + currently available general-purpose compression methods. It + is similar in speed with deflate but offers more dense + compression. + + https://github.com/google/brotli diff --git a/buildroot/package/brotli/brotli.hash b/buildroot/package/brotli/brotli.hash new file mode 100644 index 00000000000..954d44eb704 --- /dev/null +++ b/buildroot/package/brotli/brotli.hash @@ -0,0 +1,5 @@ +# Locally generated: +sha512 93adcf437d730ac403e444285ac8aefbb2c8a6b5e1b064e8ee33684c067287a8159e0ee73d2217c167881e87da73fa494792d963a15508fd42b2ac4a5b52823c v1.0.3.tar.gz + +# Hash for license files: +sha512 bae78184c2f50f86d8c727826d3982c469454c42b9af81f4ef007e39036434fa894cf5be3bf5fc65b7de2301f0a72d067a8186e303327db8a96bd14867e0a3a8 LICENSE diff --git a/buildroot/package/brotli/brotli.mk b/buildroot/package/brotli/brotli.mk new file mode 100644 index 00000000000..cf1e811543f --- /dev/null +++ b/buildroot/package/brotli/brotli.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# brotli +# +################################################################################ + +BROTLI_VERSION = 1.0.3 +BROTLI_SOURCE = v$(BROTLI_VERSION).tar.gz +BROTLI_SITE = https://github.com/google/brotli/archive +BROTLI_LICENSE = MIT +BROTLI_LICENSE_FILES = LICENSE +BROTLI_INSTALL_STAGING = YES +BROTLI_CONF_OPTS = \ + -DBROTLI_DISABLE_TESTS=ON \ + -DBROTLI_BUNDLED_MODE=OFF + +$(eval $(cmake-package)) diff --git a/buildroot/package/btrfs-progs/0001-Makefile-install-static-library-and-headers-in-insta.patch b/buildroot/package/btrfs-progs/0001-Makefile-install-static-library-and-headers-in-insta.patch index ba65ac41855..1cdedfd9842 100644 --- a/buildroot/package/btrfs-progs/0001-Makefile-install-static-library-and-headers-in-insta.patch +++ b/buildroot/package/btrfs-progs/0001-Makefile-install-static-library-and-headers-in-insta.patch @@ -16,6 +16,8 @@ Signed-off-by: Thomas Petazzoni Signed-off-by: Gustavo Zacarias [Vincent: Rebase for btrfs-progs 4.10] Signed-off-by: Vicente Olivert Riera +[baruch: Rebase for btrfs-progs 4.16] +Signed-off-by: Baruch Siach --- Makefile | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) @@ -40,7 +42,7 @@ index 67fbc48..d9e34be 100644 + $(INSTALL) -m755 -d $(DESTDIR)$(libdir) + $(INSTALL) $(libs_static) $(DESTDIR)$(libdir) + $(INSTALL) -m755 -d $(DESTDIR)$(incdir) -+ $(INSTALL) -m644 $(headers) $(DESTDIR)$(incdir) ++ $(INSTALL) -m644 $(libbtrfs_headers) $(DESTDIR)$(incdir) $(INSTALLDIRS): @echo "Making install in $(patsubst install-%,%,$@)" diff --git a/buildroot/package/btrfs-progs/0003-btrfs-progs-convert-add-missing-types-header.patch b/buildroot/package/btrfs-progs/0003-btrfs-progs-convert-add-missing-types-header.patch deleted file mode 100644 index 7b09f2785c2..00000000000 --- a/buildroot/package/btrfs-progs/0003-btrfs-progs-convert-add-missing-types-header.patch +++ /dev/null @@ -1,39 +0,0 @@ -From dda485a3d788c47bb6849218f695db7b51822872 Mon Sep 17 00:00:00 2001 -From: Baruch Siach -Date: Tue, 31 Oct 2017 14:51:51 +0200 -Subject: [PATCH] btrfs-progs: convert: add missing types header - -Build with musl libc needs the sys/types.h header for the dev_t type, -since this header is not included indirectly. This fixes the following -build failure: - -In file included from convert/source-fs.c:23:0: -./convert/source-fs.h:112:1: error: unknown type name 窶賄ev_t窶 - dev_t decode_dev(u32 dev); - ^~~~~ -convert/source-fs.c:31:1: error: unknown type name 窶賄ev_t窶 - dev_t decode_dev(u32 dev) - ^~~~~ - -Signed-off-by: Baruch Siach ---- -Upstream status: https://marc.info/?l=linux-btrfs&m=150945479718731&w=2 - - convert/source-fs.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/convert/source-fs.h b/convert/source-fs.h -index 23f33567b42d..4e5babefe6a2 100644 ---- a/convert/source-fs.h -+++ b/convert/source-fs.h -@@ -19,6 +19,7 @@ - - #include "kerncompat.h" - #include -+#include - #include - - #define CONV_IMAGE_SUBVOL_OBJECTID BTRFS_FIRST_FREE_OBJECTID --- -2.14.2 - diff --git a/buildroot/package/btrfs-progs/0003-btrfs.static-needs-libbtrfsutil.patch b/buildroot/package/btrfs-progs/0003-btrfs.static-needs-libbtrfsutil.patch new file mode 100644 index 00000000000..30ab75ae573 --- /dev/null +++ b/buildroot/package/btrfs-progs/0003-btrfs.static-needs-libbtrfsutil.patch @@ -0,0 +1,39 @@ +From 5023fdf9a4524106ef6fe1d0fdd75ade16dec62c Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 10 Apr 2018 22:56:31 +0300 +Subject: [PATCH] btrfs.static: needs libbtrfsutil + +Add libbtrfsutil objects to btrfs.static link command. This fixes static +build failure: + +utils.static.o: In function `parse_qgroupid': +utils.c:(.text.parse_qgroupid+0xb0): undefined reference to `btrfs_util_is_subvolume' +props.static.o: In function `prop_read_only': +props.c:(.text.prop_read_only+0x70): undefined reference to `btrfs_util_set_subvolume_read_only' +... +Makefile:457: recipe for target 'btrfs.static' failed +make[1]: *** [btrfs.static] Error 1 + +Signed-off-by: Baruch Siach +--- +Upstream status: https://patchwork.kernel.org/patch/10333795/ + + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index 5ba76d2eee40..9b97c36a44a5 100644 +--- a/Makefile ++++ b/Makefile +@@ -453,7 +453,7 @@ btrfs: btrfs.o $(objects) $(cmds_objects) $(libs_static) + @echo " [LD] $@" + $(Q)$(CC) -o $@ $^ $(LDFLAGS) $(LIBS) $(LIBS_COMP) + +-btrfs.static: btrfs.static.o $(static_objects) $(static_cmds_objects) $(static_libbtrfs_objects) ++btrfs.static: btrfs.static.o $(static_objects) $(static_cmds_objects) $(static_libbtrfs_objects) $(libbtrfsutil_objects) + @echo " [LD] $@" + $(Q)$(CC) -o $@ $^ $(STATIC_LDFLAGS) $(STATIC_LIBS) $(STATIC_LIBS_COMP) + +-- +2.16.3 + diff --git a/buildroot/package/btrfs-progs/btrfs-progs.hash b/buildroot/package/btrfs-progs/btrfs-progs.hash index bdcb8bada19..79aee129f78 100644 --- a/buildroot/package/btrfs-progs/btrfs-progs.hash +++ b/buildroot/package/btrfs-progs/btrfs-progs.hash @@ -1,4 +1,6 @@ # From https://www.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/sha256sums.asc -sha256 805bdb0031c21a0a5d2ba295a8c9bdd8ba831a68c3fa801aab85677ec902d783 btrfs-progs-v4.13.3.tar.xz +sha256 f3e0ec4864b7b89db1a6a36fa48bf8a9217117714a04b13c84d0fea1eac154b2 btrfs-progs-v4.16.tar.xz # Locally computed sha256 0d5bf346df9e635a29dcdddf832dc5b002ca6cdc1c5c9c6c567d2a61bb0c5c15 COPYING +sha256 3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 libbtrfsutil/COPYING +sha256 e3a994d82e644b03a792a930f574002658412f62407f5fee083f2555c5f23118 libbtrfsutil/COPYING.LESSER diff --git a/buildroot/package/btrfs-progs/btrfs-progs.mk b/buildroot/package/btrfs-progs/btrfs-progs.mk index 96c4350d26d..ec2eae707ca 100644 --- a/buildroot/package/btrfs-progs/btrfs-progs.mk +++ b/buildroot/package/btrfs-progs/btrfs-progs.mk @@ -4,13 +4,14 @@ # ################################################################################ -BTRFS_PROGS_VERSION = 4.13.3 +BTRFS_PROGS_VERSION = 4.16 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 e2fsprogs lzo util-linux zlib -BTRFS_PROGS_CONF_OPTS = --disable-backtrace -BTRFS_PROGS_LICENSE = GPL-2.0 -BTRFS_PROGS_LICENSE_FILES = COPYING +BTRFS_PROGS_CONF_OPTS = --disable-backtrace --disable-zstd --disable-python +BTRFS_PROGS_LICENSE = GPL-2.0, LGPL-3.0+ (libbtrfsutil) +BTRFS_PROGS_LICENSE_FILES = COPYING libbtrfsutil/COPYING \ + libbtrfsutil/COPYING.LESSER BTRFS_PROGS_INSTALL_STAGING = YES # Doesn't autodetect static-only and tries to build both diff --git a/buildroot/package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch b/buildroot/package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch index 105626cbe2f..a5da3a251e5 100644 --- a/buildroot/package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch +++ b/buildroot/package/busybox/0002-Makefile.flags-strip-non-l-arguments-returned-by-pkg.patch @@ -12,7 +12,7 @@ diff --git a/Makefile.flags b/Makefile.flags index 307afa7..885e323 100644 --- a/Makefile.flags +++ b/Makefile.flags -@@ -141,7 +141,9 @@ ifeq ($(CONFIG_SELINUX),y) +@@ -153,7 +153,9 @@ ifeq ($(CONFIG_SELINUX),y) SELINUX_PC_MODULES = libselinux libsepol $(eval $(call pkg_check_modules,SELINUX,$(SELINUX_PC_MODULES))) CPPFLAGS += $(SELINUX_CFLAGS) diff --git a/buildroot/package/busybox/0003-Makefile-include-per-arch-Makefile-before-Makefile.f.patch b/buildroot/package/busybox/0003-Makefile-include-per-arch-Makefile-before-Makefile.f.patch deleted file mode 100644 index 610ca3992d3..00000000000 --- a/buildroot/package/busybox/0003-Makefile-include-per-arch-Makefile-before-Makefile.f.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 2c240f131ae5cc981702b45397be3b311c67a9ee Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Fri, 14 Jul 2017 22:23:46 +0200 -Subject: [PATCH] Makefile: include per-arch Makefile before Makefile.flags - -Makefile.flags contains: - -ARCH_FPIC ?= -fpic -ARCH_FPIE ?= -fpie - -However, arch/$(ARCH)/Makefile gets included *after* Makefile.flags, -and therefore doesn't get the chance to provide its own value. - -Fix this by including arch/$(ARCH)/Makefile *before* Makefile.flags. - -[Submitted upstream: http://lists.busybox.net/pipermail/busybox/2017-July/085632.html] -Signed-off-by: Thomas Petazzoni ---- - Makefile | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Makefile b/Makefile -index 971e68e..fe85070 100644 ---- a/Makefile -+++ b/Makefile -@@ -508,6 +508,8 @@ ifeq ($(dot-config),1) - # To avoid any implicit rule to kick in, define an empty command - .config .kconfig.d: ; - -+-include $(srctree)/arch/$(ARCH)/Makefile -+ - # Now we can define CFLAGS etc according to .config - include $(srctree)/Makefile.flags - -@@ -531,8 +533,6 @@ endif - # Defaults busybox but it is usually overridden in the arch makefile - all: busybox doc - ---include $(srctree)/arch/$(ARCH)/Makefile -- - # arch Makefile may override CC so keep this after arch Makefile is included - #bbox# NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include) - CHECKFLAGS += $(NOSTDINC_FLAGS) --- -2.9.4 - diff --git a/buildroot/package/busybox/0004-arch-sparc-sparc64-Makefile-define-ARCH_FPIC.patch b/buildroot/package/busybox/0004-arch-sparc-sparc64-Makefile-define-ARCH_FPIC.patch deleted file mode 100644 index b4870353587..00000000000 --- a/buildroot/package/busybox/0004-arch-sparc-sparc64-Makefile-define-ARCH_FPIC.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 43593d65827f4e7f848fc410321b0b2deed986fc Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Fri, 14 Jul 2017 21:54:37 +0200 -Subject: [PATCH] arch/{sparc,sparc64}/Makefile: define ARCH_FPIC - -Building Busybox on SPARC or SPARC64 with CONFIG_BUILD_LIBBUSYBOX=y -currently fails with: - -miscutils/lib.a(i2c_tools.o): In function `i2c_dev_open': -i2c_tools.c:(.text.i2c_dev_open+0x14): relocation truncated to fit: R_SPARC_GOT13 against `.LC0' -i2c_tools.c:(.text.i2c_dev_open+0x38): relocation truncated to fit: R_SPARC_GOT13 against symbol `bb_errno' defined in COMMON section in libbb/lib.a(ptr_to_globals.o) -i2c_tools.c:(.text.i2c_dev_open+0x6c): relocation truncated to fit: R_SPARC_GOT13 against `.LC1' -miscutils/lib.a(i2c_tools.o): In function `check_funcs_test_end': -i2c_tools.c:(.text.check_funcs_test_end+0x24): relocation truncated to fit: R_SPARC_GOT13 against `.LC2' -i2c_tools.c:(.text.check_funcs_test_end+0x2c): relocation truncated to fit: R_SPARC_GOT13 against `.LC3' -miscutils/lib.a(i2c_tools.o): In function `check_read_funcs': -i2c_tools.c:(.text.check_read_funcs+0x30): relocation truncated to fit: R_SPARC_GOT13 against `.LC10' -i2c_tools.c:(.text.check_read_funcs+0x80): relocation truncated to fit: R_SPARC_GOT13 against `.LC4' -i2c_tools.c:(.text.check_read_funcs+0x98): relocation truncated to fit: R_SPARC_GOT13 against `.LC5' -i2c_tools.c:(.text.check_read_funcs+0xc0): relocation truncated to fit: R_SPARC_GOT13 against `.LC6' -i2c_tools.c:(.text.check_read_funcs+0xe0): relocation truncated to fit: R_SPARC_GOT13 against `.LC7' -i2c_tools.c:(.text.check_read_funcs+0xf8): additional relocation overflows omitted from the output - -As stated by the gcc documentation, the SPARC architecture has a -limited GOT size, which prevents moderately large binaries to be built -with -fpic, and -fPIC is necessary. From gcc's documentation: - -'-fpic' - Generate position-independent code (PIC) suitable for use in a - shared library, if supported for the target machine. Such code - accesses all constant addresses through a global offset table - (GOT). The dynamic loader resolves the GOT entries when the - program starts (the dynamic loader is not part of GCC; it is part - of the operating system). If the GOT size for the linked - executable exceeds a machine-specific maximum size, you get an - error message from the linker indicating that '-fpic' does not - work; in that case, recompile with '-fPIC' instead. (These - maximums are 8k on the SPARC, 28k on AArch64 and 32k on the m68k - and RS/6000. The x86 has no such limit.) - -'-fPIC' - If supported for the target machine, emit position-independent - code, suitable for dynamic linking and avoiding any limit on the - size of the global offset table. This option makes a difference on - AArch64, m68k, PowerPC and SPARC. - -With a limit of 8KB on SPARC, we quickly reach this limit, and we hit -it when building Busybox on SPARC/SPARC64 with the -CONFIG_BUILD_LIBBUSYBOX=y option enabled. - -Therefore, this commit redefines ARCH_FPIC as -fPIC on sparc and -sparc64 to solve this issue. - -[Submitted upstream: http://lists.busybox.net/pipermail/busybox/2017-July/085633.html] -Signed-off-by: Thomas Petazzoni ---- - arch/sparc/Makefile | 1 + - arch/sparc64/Makefile | 1 + - 2 files changed, 2 insertions(+) - create mode 100644 arch/sparc/Makefile - create mode 100644 arch/sparc64/Makefile - -diff --git a/arch/sparc/Makefile b/arch/sparc/Makefile -new file mode 100644 -index 0000000..4d6c5fb ---- /dev/null -+++ b/arch/sparc/Makefile -@@ -0,0 +1 @@ -+ARCH_FPIC = -fPIC -diff --git a/arch/sparc64/Makefile b/arch/sparc64/Makefile -new file mode 100644 -index 0000000..4d6c5fb ---- /dev/null -+++ b/arch/sparc64/Makefile -@@ -0,0 +1 @@ -+ARCH_FPIC = -fPIC --- -2.9.4 - diff --git a/buildroot/package/busybox/0005-httpd-fix-handling-of-range-requests.patch b/buildroot/package/busybox/0005-httpd-fix-handling-of-range-requests.patch deleted file mode 100644 index b3ca32d75cd..00000000000 --- a/buildroot/package/busybox/0005-httpd-fix-handling-of-range-requests.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 2b400d9b2b7309d6e479102fc3ce646e893058a5 Mon Sep 17 00:00:00 2001 -From: Denys Vlasenko -Date: Mon, 18 Sep 2017 13:09:11 +0200 -Subject: [PATCH] httpd: fix handling of range requests - -Signed-off-by: Denys Vlasenko -Signed-off-by: Peter Korsgaard ---- - networking/httpd.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/networking/httpd.c b/networking/httpd.c -index e072f23c7..5e32fc936 100644 ---- a/networking/httpd.c -+++ b/networking/httpd.c -@@ -2337,7 +2337,7 @@ static void handle_incoming_and_exit(const len_and_sockaddr *fromAddr) - if (STRNCASECMP(iobuf, "Range:") == 0) { - /* We know only bytes=NNN-[MMM] */ - char *s = skip_whitespace(iobuf + sizeof("Range:")-1); -- if (is_prefixed_with(s, "bytes=") == 0) { -+ if (is_prefixed_with(s, "bytes=")) { - s += sizeof("bytes=")-1; - range_start = BB_STRTOOFF(s, &s, 10); - if (s[0] != '-' || range_start < 0) { --- -2.11.0 - diff --git a/buildroot/package/busybox/0006-bunzip2-fix-runCnt-overflow-from-bug-10431.patch b/buildroot/package/busybox/0006-bunzip2-fix-runCnt-overflow-from-bug-10431.patch deleted file mode 100644 index e8fd2e027d4..00000000000 --- a/buildroot/package/busybox/0006-bunzip2-fix-runCnt-overflow-from-bug-10431.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 0402cb32df015d9372578e3db27db47b33d5c7b0 Mon Sep 17 00:00:00 2001 -From: Denys Vlasenko -Date: Sun, 22 Oct 2017 18:23:23 +0200 -Subject: [PATCH] bunzip2: fix runCnt overflow from bug 10431 - -This particular corrupted file can be dealth with by using "unsigned". -If there will be cases where it genuinely overflows, there is a disabled -code to deal with that too. - -function old new delta -get_next_block 1678 1667 -11 - -Signed-off-by: Denys Vlasenko -Signed-off-by: Baruch Siach ---- -Patch status: upstream commit 0402cb32df0 - - archival/libarchive/decompress_bunzip2.c | 30 +++++++++++++++++++----------- - 1 file changed, 19 insertions(+), 11 deletions(-) - -diff --git a/archival/libarchive/decompress_bunzip2.c b/archival/libarchive/decompress_bunzip2.c -index 7cd18f5ed4cf..bec89edd3a4d 100644 ---- a/archival/libarchive/decompress_bunzip2.c -+++ b/archival/libarchive/decompress_bunzip2.c -@@ -156,15 +156,15 @@ static unsigned get_bits(bunzip_data *bd, int bits_wanted) - static int get_next_block(bunzip_data *bd) - { - struct group_data *hufGroup; -- int dbufCount, dbufSize, groupCount, *base, *limit, selector, -- i, j, runPos, symCount, symTotal, nSelectors, byteCount[256]; -- int runCnt = runCnt; /* for compiler */ -+ int groupCount, *base, *limit, selector, -+ i, j, symCount, symTotal, nSelectors, byteCount[256]; - uint8_t uc, symToByte[256], mtfSymbol[256], *selectors; - uint32_t *dbuf; - unsigned origPtr, t; -+ unsigned dbufCount, runPos; -+ unsigned runCnt = runCnt; /* for compiler */ - - dbuf = bd->dbuf; -- dbufSize = bd->dbufSize; - selectors = bd->selectors; - - /* In bbox, we are ok with aborting through setjmp which is set up in start_bunzip */ -@@ -187,7 +187,7 @@ static int get_next_block(bunzip_data *bd) - it didn't actually work. */ - if (get_bits(bd, 1)) return RETVAL_OBSOLETE_INPUT; - origPtr = get_bits(bd, 24); -- if ((int)origPtr > dbufSize) return RETVAL_DATA_ERROR; -+ if (origPtr > bd->dbufSize) return RETVAL_DATA_ERROR; - - /* mapping table: if some byte values are never used (encoding things - like ascii text), the compression code removes the gaps to have fewer -@@ -435,7 +435,14 @@ static int get_next_block(bunzip_data *bd) - symbols, but a run of length 0 doesn't mean anything in this - context). Thus space is saved. */ - runCnt += (runPos << nextSym); /* +runPos if RUNA; +2*runPos if RUNB */ -- if (runPos < dbufSize) runPos <<= 1; -+//The 32-bit overflow of runCnt wasn't yet seen, but probably can happen. -+//This would be the fix (catches too large count way before it can overflow): -+// if (runCnt > bd->dbufSize) { -+// dbg("runCnt:%u > dbufSize:%u RETVAL_DATA_ERROR", -+// runCnt, bd->dbufSize); -+// return RETVAL_DATA_ERROR; -+// } -+ if (runPos < bd->dbufSize) runPos <<= 1; - goto end_of_huffman_loop; - } - -@@ -445,14 +452,15 @@ static int get_next_block(bunzip_data *bd) - literal used is the one at the head of the mtfSymbol array.) */ - if (runPos != 0) { - uint8_t tmp_byte; -- if (dbufCount + runCnt > dbufSize) { -- dbg("dbufCount:%d+runCnt:%d %d > dbufSize:%d RETVAL_DATA_ERROR", -- dbufCount, runCnt, dbufCount + runCnt, dbufSize); -+ if (dbufCount + runCnt > bd->dbufSize) { -+ dbg("dbufCount:%u+runCnt:%u %u > dbufSize:%u RETVAL_DATA_ERROR", -+ dbufCount, runCnt, dbufCount + runCnt, bd->dbufSize); - return RETVAL_DATA_ERROR; - } - tmp_byte = symToByte[mtfSymbol[0]]; - byteCount[tmp_byte] += runCnt; -- while (--runCnt >= 0) dbuf[dbufCount++] = (uint32_t)tmp_byte; -+ while ((int)--runCnt >= 0) -+ dbuf[dbufCount++] = (uint32_t)tmp_byte; - runPos = 0; - } - -@@ -466,7 +474,7 @@ static int get_next_block(bunzip_data *bd) - first symbol in the mtf array, position 0, would have been handled - as part of a run above. Therefore 1 unused mtf position minus - 2 non-literal nextSym values equals -1.) */ -- if (dbufCount >= dbufSize) return RETVAL_DATA_ERROR; -+ if (dbufCount >= bd->dbufSize) return RETVAL_DATA_ERROR; - i = nextSym - 1; - uc = mtfSymbol[i]; - --- -2.15.1 - diff --git a/buildroot/package/busybox/0007-unlzma-fix-SEGV-closes-10436.patch b/buildroot/package/busybox/0007-unlzma-fix-SEGV-closes-10436.patch deleted file mode 100644 index c8d875010eb..00000000000 --- a/buildroot/package/busybox/0007-unlzma-fix-SEGV-closes-10436.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 9ac42c500586fa5f10a1f6d22c3f797df11b1f6b Mon Sep 17 00:00:00 2001 -From: Denys Vlasenko -Date: Fri, 27 Oct 2017 15:37:03 +0200 -Subject: [PATCH] unlzma: fix SEGV, closes 10436 - -Signed-off-by: Denys Vlasenko -Signed-off-by: Baruch Siach ---- -Patch status: upstream commit 9ac42c500586f - - archival/libarchive/decompress_unlzma.c | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/archival/libarchive/decompress_unlzma.c b/archival/libarchive/decompress_unlzma.c -index a9040877efa0..be4342414435 100644 ---- a/archival/libarchive/decompress_unlzma.c -+++ b/archival/libarchive/decompress_unlzma.c -@@ -450,8 +450,12 @@ unpack_lzma_stream(transformer_state_t *xstate) - IF_NOT_FEATURE_LZMA_FAST(string:) - do { - uint32_t pos = buffer_pos - rep0; -- if ((int32_t)pos < 0) -+ if ((int32_t)pos < 0) { - pos += header.dict_size; -+ /* bug 10436 has an example file where this triggers: */ -+ if ((int32_t)pos < 0) -+ goto bad; -+ } - previous_byte = buffer[pos]; - IF_NOT_FEATURE_LZMA_FAST(one_byte2:) - buffer[buffer_pos++] = previous_byte; --- -2.15.1 - diff --git a/buildroot/package/busybox/Config.in b/buildroot/package/busybox/Config.in index ca8fe68eea3..e5c5f89a4df 100644 --- a/buildroot/package/busybox/Config.in +++ b/buildroot/package/busybox/Config.in @@ -59,7 +59,6 @@ config BR2_PACKAGE_BUSYBOX_SELINUX config BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES bool "Individual binaries" depends on !BR2_STATIC_LIBS - depends on !BR2_bfin # libbusybox.so link issue help By default (i.e with this option disabled), Busybox is installed as a single binary in /bin/busybox and all applets @@ -70,7 +69,6 @@ config BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES comment "Busybox individual binaries need a toolchain w/ dynamic library" depends on BR2_STATIC_LIBS - depends on !BR2_bfin config BR2_PACKAGE_BUSYBOX_WATCHDOG bool "Install the watchdog daemon startup script" diff --git a/buildroot/package/busybox/S10mdev b/buildroot/package/busybox/S10mdev index 63ca955b1c5..7075b770166 100644 --- a/buildroot/package/busybox/S10mdev +++ b/buildroot/package/busybox/S10mdev @@ -9,7 +9,8 @@ case "$1" in echo /sbin/mdev >/proc/sys/kernel/hotplug /sbin/mdev -s # coldplug modules - find /sys/ -name modalias -print0 | xargs -0 sort -u -z | xargs -0 modprobe -abq + find /sys/ -name modalias -print0 | xargs -0 sort -u | tr '\n' '\0' | \ + xargs -0 modprobe -abq ;; stop) ;; diff --git a/buildroot/package/busybox/busybox-minimal.config b/buildroot/package/busybox/busybox-minimal.config index 4130e6a8b6d..a7aa19ea8aa 100644 --- a/buildroot/package/busybox/busybox-minimal.config +++ b/buildroot/package/busybox/busybox-minimal.config @@ -1,39 +1,39 @@ # # Automatically generated make config: don't edit -# Busybox version: 1.27.1 -# Sun Jul 30 15:42:11 2017 +# Busybox version: 1.28.0 +# Wed Feb 7 09:47:09 2018 # CONFIG_HAVE_DOT_CONFIG=y # -# Busybox Settings +# Settings # # CONFIG_DESKTOP is not set # CONFIG_EXTRA_COMPAT is not set +# CONFIG_FEDORA_COMPAT is not set CONFIG_INCLUDE_SUSv2=y -# CONFIG_USE_PORTABLE_CODE is not set +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_BUSYBOX=y -CONFIG_FEATURE_INSTALLER=y -# CONFIG_INSTALL_NO_USR is not set +CONFIG_LFS=y # CONFIG_PAM is not set -CONFIG_LONG_OPTS=y CONFIG_FEATURE_DEVPTS=y -# CONFIG_FEATURE_CLEAN_UP is not set CONFIG_FEATURE_UTMP=y CONFIG_FEATURE_WTMP=y # CONFIG_FEATURE_PIDFILE is not set CONFIG_PID_FILE_PATH="" +CONFIG_BUSYBOX=y +CONFIG_FEATURE_INSTALLER=y +# CONFIG_INSTALL_NO_USR is not set CONFIG_FEATURE_SUID=y # CONFIG_FEATURE_SUID_CONFIG is not set # CONFIG_FEATURE_SUID_CONFIG_QUIET is not set -# CONFIG_SELINUX is not set # CONFIG_FEATURE_PREFER_APPLETS is not set CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_CLEAN_UP is not set CONFIG_FEATURE_SYSLOG=y -# CONFIG_FEATURE_HAVE_RPC is not set CONFIG_PLATFORM_LINUX=y # @@ -43,14 +43,15 @@ 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_LFS=y CONFIG_CROSS_COMPILER_PREFIX="" CONFIG_SYSROOT="" CONFIG_EXTRA_CFLAGS="" CONFIG_EXTRA_LDFLAGS="" CONFIG_EXTRA_LDLIBS="" +# CONFIG_USE_PORTABLE_CODE is not set # # Installation Options ("make install" behavior) @@ -77,7 +78,7 @@ CONFIG_NO_DEBUG_LIB=y # CONFIG_EFENCE is not set # -# Busybox Library Tuning +# Library Tuning # # CONFIG_FEATURE_USE_BSS_TAIL is not set CONFIG_FEATURE_RTMINMAX=y @@ -144,7 +145,6 @@ CONFIG_BZCAT=y # CONFIG_UNLZMA is not set CONFIG_LZCAT=y # CONFIG_LZMA is not set -# CONFIG_FEATURE_LZMA_FAST is not set # CONFIG_UNXZ is not set CONFIG_XZCAT=y # CONFIG_XZ is not set @@ -164,8 +164,8 @@ CONFIG_FEATURE_GZIP_DECOMPRESS=y CONFIG_UNLZOP=y CONFIG_LZOPCAT=y # CONFIG_LZOP_COMPR_HIGH is not set -# CONFIG_RPM2CPIO 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 @@ -183,12 +183,14 @@ CONFIG_LZOPCAT=y # CONFIG_FEATURE_UNZIP_BZIP2 is not set # CONFIG_FEATURE_UNZIP_LZMA is not set # CONFIG_FEATURE_UNZIP_XZ is not set +# CONFIG_FEATURE_LZMA_FAST is not set # # Coreutils # CONFIG_BASENAME=y CONFIG_CAT=y +CONFIG_FEATURE_CATN=y CONFIG_FEATURE_CATV=y CONFIG_CHGRP=y CONFIG_CHMOD=y @@ -219,11 +221,8 @@ CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y CONFIG_ECHO=y CONFIG_FEATURE_FANCY_ECHO=y CONFIG_ENV=y -# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set # CONFIG_EXPAND is not set -# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set # CONFIG_UNEXPAND is not set -# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set CONFIG_EXPR=y CONFIG_EXPR_MATH_SUPPORT_64=y CONFIG_FACTOR=y @@ -261,12 +260,10 @@ CONFIG_SHA3SUM=y # CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y CONFIG_MKDIR=y -CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y CONFIG_MKFIFO=y CONFIG_MKNOD=y # CONFIG_MKTEMP is not set CONFIG_MV=y -CONFIG_FEATURE_MV_LONG_OPTIONS=y CONFIG_NICE=y CONFIG_NL=y CONFIG_NOHUP=y @@ -281,7 +278,6 @@ CONFIG_FEATURE_READLINK_FOLLOW=y CONFIG_REALPATH=y CONFIG_RM=y CONFIG_RMDIR=y -# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set CONFIG_SEQ=y CONFIG_SHRED=y # CONFIG_SHUF is not set @@ -320,6 +316,7 @@ 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 @@ -387,6 +384,14 @@ 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 # @@ -456,6 +461,8 @@ 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 @@ -489,12 +496,10 @@ CONFIG_FEATURE_SHADOWPASSWDS=y CONFIG_USE_BB_CRYPT=y # CONFIG_USE_BB_CRYPT_SHA is not set # CONFIG_ADDGROUP is not set -# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set # CONFIG_FEATURE_ADDUSER_TO_GROUP is not set # CONFIG_ADD_SHELL is not set # CONFIG_REMOVE_SHELL is not set CONFIG_ADDUSER=y -# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set # CONFIG_FEATURE_CHECK_NAMES is not set CONFIG_LAST_ID=60000 CONFIG_FIRST_SYSTEM_ID=100 @@ -604,7 +609,6 @@ CONFIG_FEATURE_GETOPT_LONG=y # CONFIG_HD is not set CONFIG_XXD=y # CONFIG_HWCLOCK is not set -# CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS is not set # CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS is not set # CONFIG_IONICE is not set # CONFIG_IPCRM is not set @@ -644,7 +648,6 @@ CONFIG_FEATURE_MOUNT_FSTAB=y CONFIG_FEATURE_MOUNT_OTHERTAB=y # CONFIG_MOUNTPOINT is not set # CONFIG_NSENTER is not set -# CONFIG_FEATURE_NSENTER_LONG_OPTS is not set # CONFIG_PIVOT_ROOT is not set # CONFIG_RDATE is not set # CONFIG_RDEV is not set @@ -658,11 +661,15 @@ CONFIG_FEATURE_MOUNT_OTHERTAB=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 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 @@ -678,7 +685,11 @@ CONFIG_FEATURE_UMOUNT_ALL=y CONFIG_FEATURE_MOUNT_LOOP=y CONFIG_FEATURE_MOUNT_LOOP_CREATE=y # CONFIG_FEATURE_MTAB_SUPPORT is not set -# CONFIG_VOLUMEID 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 @@ -692,6 +703,7 @@ CONFIG_FEATURE_MOUNT_LOOP_CREATE=y # 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 @@ -724,6 +736,7 @@ CONFIG_FEATURE_BEEP_LENGTH_MS=0 # CONFIG_CROND is not set # CONFIG_FEATURE_CROND_D is not set # CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set +# CONFIG_FEATURE_CROND_SPECIAL_TIMES is not set CONFIG_FEATURE_CROND_DIR="" # CONFIG_CRONTAB is not set # CONFIG_DC is not set @@ -746,6 +759,7 @@ CONFIG_FEATURE_CROND_DIR="" # 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 @@ -777,6 +791,7 @@ CONFIG_PARTPROBE=y # 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 @@ -872,6 +887,7 @@ CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2" # 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 @@ -899,11 +915,11 @@ CONFIG_FEATURE_TELNET_WIDTH=y # CONFIG_FEATURE_TELNETD_STANDALONE is not set # CONFIG_FEATURE_TELNETD_INETD_WAIT is not set # CONFIG_TFTP is not set +# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set # CONFIG_TFTPD is not set # CONFIG_FEATURE_TFTP_GET is not set # CONFIG_FEATURE_TFTP_PUT is not set # CONFIG_FEATURE_TFTP_BLOCKSIZE is not set -# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set # CONFIG_TFTP_DEBUG is not set # CONFIG_TLS is not set # CONFIG_TRACEROUTE is not set @@ -922,13 +938,9 @@ CONFIG_WGET=y # CONFIG_FEATURE_WGET_OPENSSL is not set # CONFIG_WHOIS is not set # CONFIG_ZCIP is not set -# 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_UDHCPD is not set -# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY 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 @@ -936,11 +948,19 @@ CONFIG_UDHCPC=y # CONFIG_FEATURE_UDHCPC_ARPING is not set CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +# CONFIG_UDHCPC6 is not set +# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set + +# +# Common options for DHCP applets +# # CONFIG_FEATURE_UDHCP_PORT is not set CONFIG_UDHCP_DEBUG=9 +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 # CONFIG_FEATURE_UDHCP_RFC3397 is not set # CONFIG_FEATURE_UDHCP_8021Q is not set -CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n" # @@ -1020,13 +1040,11 @@ CONFIG_SV_DEFAULT_SERVICE_DIR="" CONFIG_SVC=y # CONFIG_SVLOGD is not set # CONFIG_CHCON is not set -# CONFIG_FEATURE_CHCON_LONG_OPTIONS 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_FEATURE_RUNCON_LONG_OPTIONS is not set # CONFIG_SELINUXENABLED is not set # CONFIG_SESTATUS is not set # CONFIG_SETENFORCE is not set @@ -1081,17 +1099,19 @@ CONFIG_HUSH_TEST=y CONFIG_HUSH_HELP=y CONFIG_HUSH_EXPORT=y CONFIG_HUSH_EXPORT_N=y +CONFIG_HUSH_READONLY=y CONFIG_HUSH_KILL=y CONFIG_HUSH_WAIT=y CONFIG_HUSH_TRAP=y CONFIG_HUSH_TYPE=y +CONFIG_HUSH_TIMES=y CONFIG_HUSH_READ=y CONFIG_HUSH_SET=y CONFIG_HUSH_UNSET=y CONFIG_HUSH_ULIMIT=y CONFIG_HUSH_UMASK=y +CONFIG_HUSH_GETOPTS=y # CONFIG_HUSH_MEMLEAK is not set -# CONFIG_MSH is not set # # Options common to all shells @@ -1101,6 +1121,7 @@ CONFIG_FEATURE_SH_MATH_64=y CONFIG_FEATURE_SH_EXTRA_QUIET=y # CONFIG_FEATURE_SH_STANDALONE is not set # CONFIG_FEATURE_SH_NOFORK is not set +CONFIG_FEATURE_SH_READ_FRAC=y # CONFIG_FEATURE_SH_HISTFILESIZE is not set # diff --git a/buildroot/package/busybox/busybox.config b/buildroot/package/busybox/busybox.config index 7753a861fd5..38de13d4d9d 100644 --- a/buildroot/package/busybox/busybox.config +++ b/buildroot/package/busybox/busybox.config @@ -1,39 +1,39 @@ # # Automatically generated make config: don't edit -# Busybox version: 1.27.1 -# Sun Jul 30 15:27:03 2017 +# Busybox version: 1.28.0 +# Wed Feb 7 09:44:57 2018 # CONFIG_HAVE_DOT_CONFIG=y # -# Busybox Settings +# Settings # CONFIG_DESKTOP=y # CONFIG_EXTRA_COMPAT is not set +# CONFIG_FEDORA_COMPAT is not set CONFIG_INCLUDE_SUSv2=y -# CONFIG_USE_PORTABLE_CODE is not set +CONFIG_LONG_OPTS=y CONFIG_SHOW_USAGE=y CONFIG_FEATURE_VERBOSE_USAGE=y # CONFIG_FEATURE_COMPRESS_USAGE is not set -CONFIG_BUSYBOX=y -CONFIG_FEATURE_INSTALLER=y -# CONFIG_INSTALL_NO_USR is not set +CONFIG_LFS=y # CONFIG_PAM is not set -CONFIG_LONG_OPTS=y CONFIG_FEATURE_DEVPTS=y -# CONFIG_FEATURE_CLEAN_UP is not set CONFIG_FEATURE_UTMP=y CONFIG_FEATURE_WTMP=y # CONFIG_FEATURE_PIDFILE is not set CONFIG_PID_FILE_PATH="" +CONFIG_BUSYBOX=y +CONFIG_FEATURE_INSTALLER=y +# CONFIG_INSTALL_NO_USR is not set CONFIG_FEATURE_SUID=y # CONFIG_FEATURE_SUID_CONFIG is not set # CONFIG_FEATURE_SUID_CONFIG_QUIET is not set -# CONFIG_SELINUX is not set # CONFIG_FEATURE_PREFER_APPLETS is not set CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe" +# CONFIG_SELINUX is not set +# CONFIG_FEATURE_CLEAN_UP is not set CONFIG_FEATURE_SYSLOG=y -# CONFIG_FEATURE_HAVE_RPC is not set CONFIG_PLATFORM_LINUX=y # @@ -43,14 +43,15 @@ CONFIG_PLATFORM_LINUX=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_LFS=y CONFIG_CROSS_COMPILER_PREFIX="" CONFIG_SYSROOT="" CONFIG_EXTRA_CFLAGS="" CONFIG_EXTRA_LDFLAGS="" CONFIG_EXTRA_LDLIBS="" +# CONFIG_USE_PORTABLE_CODE is not set # # Installation Options ("make install" behavior) @@ -77,7 +78,7 @@ CONFIG_NO_DEBUG_LIB=y # CONFIG_EFENCE is not set # -# Busybox Library Tuning +# Library Tuning # # CONFIG_FEATURE_USE_BSS_TAIL is not set CONFIG_FEATURE_RTMINMAX=y @@ -144,7 +145,6 @@ CONFIG_BZCAT=y CONFIG_UNLZMA=y CONFIG_LZCAT=y CONFIG_LZMA=y -# CONFIG_FEATURE_LZMA_FAST is not set CONFIG_UNXZ=y CONFIG_XZCAT=y CONFIG_XZ=y @@ -164,8 +164,8 @@ CONFIG_FEATURE_GZIP_DECOMPRESS=y CONFIG_UNLZOP=y CONFIG_LZOPCAT=y # CONFIG_LZOP_COMPR_HIGH is not set -# CONFIG_RPM2CPIO 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 @@ -183,12 +183,14 @@ CONFIG_FEATURE_UNZIP_CDF=y CONFIG_FEATURE_UNZIP_BZIP2=y CONFIG_FEATURE_UNZIP_LZMA=y CONFIG_FEATURE_UNZIP_XZ=y +# CONFIG_FEATURE_LZMA_FAST is not set # # Coreutils # CONFIG_BASENAME=y CONFIG_CAT=y +CONFIG_FEATURE_CATN=y CONFIG_FEATURE_CATV=y CONFIG_CHGRP=y CONFIG_CHMOD=y @@ -219,11 +221,8 @@ CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y CONFIG_ECHO=y CONFIG_FEATURE_FANCY_ECHO=y CONFIG_ENV=y -# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set # CONFIG_EXPAND is not set -# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set # CONFIG_UNEXPAND is not set -# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set CONFIG_EXPR=y CONFIG_EXPR_MATH_SUPPORT_64=y CONFIG_FACTOR=y @@ -261,12 +260,10 @@ CONFIG_SHA3SUM=y # CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y CONFIG_MKDIR=y -CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y CONFIG_MKFIFO=y CONFIG_MKNOD=y CONFIG_MKTEMP=y CONFIG_MV=y -CONFIG_FEATURE_MV_LONG_OPTIONS=y CONFIG_NICE=y CONFIG_NL=y CONFIG_NOHUP=y @@ -281,7 +278,6 @@ CONFIG_FEATURE_READLINK_FOLLOW=y CONFIG_REALPATH=y CONFIG_RM=y CONFIG_RMDIR=y -# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set CONFIG_SEQ=y CONFIG_SHRED=y # CONFIG_SHUF is not set @@ -320,6 +316,7 @@ 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 @@ -391,6 +388,14 @@ 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 # @@ -460,6 +465,8 @@ 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 @@ -493,12 +500,10 @@ CONFIG_FEATURE_SHADOWPASSWDS=y CONFIG_USE_BB_CRYPT=y # CONFIG_USE_BB_CRYPT_SHA is not set CONFIG_ADDGROUP=y -# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set # CONFIG_FEATURE_ADDUSER_TO_GROUP is not set # CONFIG_ADD_SHELL is not set # CONFIG_REMOVE_SHELL is not set CONFIG_ADDUSER=y -# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set # CONFIG_FEATURE_CHECK_NAMES is not set CONFIG_LAST_ID=60000 CONFIG_FIRST_SYSTEM_ID=100 @@ -608,7 +613,6 @@ CONFIG_HEXDUMP=y # CONFIG_HD is not set CONFIG_XXD=y CONFIG_HWCLOCK=y -CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y # CONFIG_IONICE is not set CONFIG_IPCRM=y @@ -648,7 +652,6 @@ CONFIG_FEATURE_MOUNT_FSTAB=y CONFIG_FEATURE_MOUNT_OTHERTAB=y CONFIG_MOUNTPOINT=y # CONFIG_NSENTER is not set -# CONFIG_FEATURE_NSENTER_LONG_OPTS is not set CONFIG_PIVOT_ROOT=y CONFIG_RDATE=y # CONFIG_RDEV is not set @@ -662,11 +665,15 @@ 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 @@ -700,6 +707,7 @@ CONFIG_FEATURE_VOLUMEID_FAT=y # 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 @@ -732,6 +740,7 @@ CONFIG_FEATURE_BEEP_LENGTH_MS=0 CONFIG_CROND=y # CONFIG_FEATURE_CROND_D is not set # CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set +CONFIG_FEATURE_CROND_SPECIAL_TIMES=y CONFIG_FEATURE_CROND_DIR="/var/spool/cron" CONFIG_CRONTAB=y CONFIG_DC=y @@ -754,6 +763,7 @@ CONFIG_FEATURE_HDPARM_GET_IDENTITY=y # CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set # CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set # CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set +CONFIG_HEXEDIT=y CONFIG_I2CGET=y CONFIG_I2CSET=y CONFIG_I2CDUMP=y @@ -785,6 +795,7 @@ CONFIG_PARTPROBE=y # CONFIG_RFKILL is not set CONFIG_RUNLEVEL=y # CONFIG_RX is not set +CONFIG_SETFATTR=y CONFIG_SETSERIAL=y CONFIG_STRINGS=y CONFIG_TIME=y @@ -880,6 +891,7 @@ 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 @@ -907,6 +919,7 @@ CONFIG_FEATURE_TELNET_WIDTH=y # CONFIG_FEATURE_TELNETD_STANDALONE is not set # CONFIG_FEATURE_TELNETD_INETD_WAIT is not set CONFIG_TFTP=y +# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set # CONFIG_TFTPD is not set # @@ -915,7 +928,6 @@ CONFIG_TFTP=y CONFIG_FEATURE_TFTP_GET=y CONFIG_FEATURE_TFTP_PUT=y CONFIG_FEATURE_TFTP_BLOCKSIZE=y -# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set # CONFIG_TFTP_DEBUG is not set # CONFIG_TLS is not set CONFIG_TRACEROUTE=y @@ -934,13 +946,9 @@ CONFIG_FEATURE_WGET_TIMEOUT=y # CONFIG_FEATURE_WGET_OPENSSL is not set # CONFIG_WHOIS is not set # CONFIG_ZCIP is not set -# 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_UDHCPD is not set -# CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY 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 @@ -948,11 +956,19 @@ CONFIG_UDHCPC=y CONFIG_FEATURE_UDHCPC_ARPING=y CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +# CONFIG_UDHCPC6 is not set +# CONFIG_FEATURE_UDHCPC6_RFC3646 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4704 is not set +# CONFIG_FEATURE_UDHCPC6_RFC4833 is not set + +# +# Common options for DHCP applets +# # CONFIG_FEATURE_UDHCP_PORT is not set CONFIG_UDHCP_DEBUG=0 +CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 # CONFIG_FEATURE_UDHCP_RFC3397 is not set CONFIG_FEATURE_UDHCP_8021Q=y -CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n" # @@ -1032,13 +1048,11 @@ CONFIG_SV_DEFAULT_SERVICE_DIR="" CONFIG_SVC=y # CONFIG_SVLOGD is not set # CONFIG_CHCON is not set -# CONFIG_FEATURE_CHCON_LONG_OPTIONS 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_FEATURE_RUNCON_LONG_OPTIONS is not set # CONFIG_SELINUXENABLED is not set # CONFIG_SESTATUS is not set # CONFIG_SETENFORCE is not set @@ -1093,17 +1107,19 @@ CONFIG_ASH_CMDCMD=y # CONFIG_HUSH_HELP is not set # CONFIG_HUSH_EXPORT is not set # CONFIG_HUSH_EXPORT_N is not set +# CONFIG_HUSH_READONLY is not set # CONFIG_HUSH_KILL is not set # CONFIG_HUSH_WAIT is not set # CONFIG_HUSH_TRAP is not set # CONFIG_HUSH_TYPE is not set +# CONFIG_HUSH_TIMES is not set # CONFIG_HUSH_READ is not set # CONFIG_HUSH_SET is not set # CONFIG_HUSH_UNSET is not set # CONFIG_HUSH_ULIMIT is not set # CONFIG_HUSH_UMASK is not set +# CONFIG_HUSH_GETOPTS is not set # CONFIG_HUSH_MEMLEAK is not set -# CONFIG_MSH is not set # # Options common to all shells @@ -1113,6 +1129,7 @@ CONFIG_FEATURE_SH_MATH_64=y CONFIG_FEATURE_SH_EXTRA_QUIET=y # CONFIG_FEATURE_SH_STANDALONE is not set # CONFIG_FEATURE_SH_NOFORK is not set +CONFIG_FEATURE_SH_READ_FRAC=y # CONFIG_FEATURE_SH_HISTFILESIZE is not set # diff --git a/buildroot/package/busybox/busybox.hash b/buildroot/package/busybox/busybox.hash index 3e1956d0a0c..8537ceb4b71 100644 --- a/buildroot/package/busybox/busybox.hash +++ b/buildroot/package/busybox/busybox.hash @@ -1,5 +1,7 @@ -# From https://busybox.net/downloads/busybox-1.27.2.tar.bz2.sign -md5 476186f4bab81781dab2369bfd42734e busybox-1.27.2.tar.bz2 -sha1 11669e223cc38de646ce26080e91ca29b8d42ad9 busybox-1.27.2.tar.bz2 -# License files, locally calculated +# From https://busybox.net/downloads/busybox-1.28.3.tar.bz2.sign +md5 82e5ad09ae4a07c266fc179492b51757 busybox-1.28.3.tar.bz2 +sha1 64b47e83dccc5db7fe4ca596b28c9b901a136fe3 busybox-1.28.3.tar.bz2 + +# Locally calculated +sha256 ad0d22033f23e696f9a71a4c2f9210194dda39b024a79151f4ac278995332a6e busybox-1.28.3.tar.bz2 sha256 bbfc9843646d483c334664f651c208b9839626891d8f17604db2146962f43548 LICENSE diff --git a/buildroot/package/busybox/busybox.mk b/buildroot/package/busybox/busybox.mk index d0bbd3fd6ee..60a55a2c78a 100644 --- a/buildroot/package/busybox/busybox.mk +++ b/buildroot/package/busybox/busybox.mk @@ -4,7 +4,7 @@ # ################################################################################ -BUSYBOX_VERSION = 1.27.2 +BUSYBOX_VERSION = 1.28.3 BUSYBOX_SITE = http://www.busybox.net/downloads BUSYBOX_SOURCE = busybox-$(BUSYBOX_VERSION).tar.bz2 BUSYBOX_LICENSE = GPL-2.0 @@ -248,6 +248,10 @@ define BUSYBOX_LINUX_PAM $(call KCONFIG_ENABLE_OPT,CONFIG_PAM,$(BUSYBOX_BUILD_CONFIG)) endef BUSYBOX_DEPENDENCIES += linux-pam +else +define BUSYBOX_LINUX_PAM + $(call KCONFIG_DISABLE_OPT,CONFIG_PAM,$(BUSYBOX_BUILD_CONFIG)) +endef endif # Telnet support @@ -258,6 +262,20 @@ define BUSYBOX_INSTALL_TELNET_SCRIPT fi endef +# Add /bin/{a,hu}sh to /etc/shells otherwise some login tools like dropbear +# can reject the user connection. See man shells. +define BUSYBOX_INSTALL_ADD_TO_SHELLS + if grep -q CONFIG_ASH=y $(@D)/.config; then \ + grep -qsE '^/bin/ash$$' $(TARGET_DIR)/etc/shells \ + || echo "/bin/ash" >> $(TARGET_DIR)/etc/shells; \ + fi + if grep -q CONFIG_HUSH=y $(@D)/.config; then \ + grep -qsE '^/bin/hush$$' $(TARGET_DIR)/etc/shells \ + || echo "/bin/hush" >> $(TARGET_DIR)/etc/shells; \ + fi +endef +BUSYBOX_TARGET_FINALIZE_HOOKS += BUSYBOX_INSTALL_ADD_TO_SHELLS + # Enable "noclobber" in install.sh, to prevent BusyBox from overwriting any # full-blown versions of apps installed by other packages with sym/hard links. define BUSYBOX_NOCLOBBER_INSTALL diff --git a/buildroot/package/busybox/inittab b/buildroot/package/busybox/inittab index 3f49f6bd7a7..ef58c32f0dd 100644 --- a/buildroot/package/busybox/inittab +++ b/buildroot/package/busybox/inittab @@ -19,6 +19,10 @@ ::sysinit:/bin/mkdir -p /dev/pts ::sysinit:/bin/mkdir -p /dev/shm ::sysinit:/bin/mount -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 diff --git a/buildroot/package/c-ares/c-ares.hash b/buildroot/package/c-ares/c-ares.hash index 79928ae8436..832c4dfcfb0 100644 --- a/buildroot/package/c-ares/c-ares.hash +++ b/buildroot/package/c-ares/c-ares.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 03f708f1b14a26ab26c38abd51137640cb444d3ec72380b21b20f1a8d2861da7 c-ares-1.13.0.tar.gz +sha256 45d3c1fd29263ceec2afc8ff9cd06d5f8f889636eb4e80ce3cc7f0eaf7aadc6e c-ares-1.14.0.tar.gz diff --git a/buildroot/package/c-ares/c-ares.mk b/buildroot/package/c-ares/c-ares.mk index 72019a0425e..67254244a1d 100644 --- a/buildroot/package/c-ares/c-ares.mk +++ b/buildroot/package/c-ares/c-ares.mk @@ -4,7 +4,7 @@ # ################################################################################ -C_ARES_VERSION = 1.13.0 +C_ARES_VERSION = 1.14.0 C_ARES_SITE = http://c-ares.haxx.se/download C_ARES_INSTALL_STAGING = YES C_ARES_CONF_OPTS = --with-random=/dev/urandom diff --git a/buildroot/package/cache-calibrator/cache-calibrator.mk b/buildroot/package/cache-calibrator/cache-calibrator.mk index 6f12d119ef7..203732e4f7d 100644 --- a/buildroot/package/cache-calibrator/cache-calibrator.mk +++ b/buildroot/package/cache-calibrator/cache-calibrator.mk @@ -10,7 +10,7 @@ CACHE_CALIBRATOR_LICENSE = Cache calibrator license CACHE_CALIBRATOR_LICENSE_FILES = calibrator.c.license define CACHE_CALIBRATOR_EXTRACT_CMDS - cp $(DL_DIR)/$(CACHE_CALIBRATOR_SOURCE) $(@D) + cp $(CACHE_CALIBRATOR_DL_DIR)/$(CACHE_CALIBRATOR_SOURCE) $(@D) endef define CACHE_CALIBRATOR_EXTRACT_LICENSE diff --git a/buildroot/package/cairo/0001-blackfin-build-fix.patch b/buildroot/package/cairo/0001-blackfin-build-fix.patch deleted file mode 100644 index 0e8dd3ad65f..00000000000 --- a/buildroot/package/cairo/0001-blackfin-build-fix.patch +++ /dev/null @@ -1,55 +0,0 @@ -Fix build on platforms where __USER_LABEL_PREFIX__ is not empty - -On most platforms, a C language symbol and its assembly equivalent are -identical. However, on the Blackfin architecture, this isn't the case, -the corresponding C language symbol in assembly is prepended with a -"_". Blackfin therefore has __USER_LABEL_PREFIX__ defined to "_". - -Cairo already has some code to cope with __USER_LABEL_PREFIX__, but -this code isn't completely correct: it prepends both assembly symbols -and C symbols with __USER_LABEL_PREFIX__, which cannot work. - -This patch fixes that by using the existing slim_hidden_asmname() to -define assembly symbols, and introduce a new slim_hidden_realname() -for C symbols. - -Signed-off-by: Thomas Petazzoni - -Index: b/src/cairo-compiler-private.h -=================================================================== ---- a/src/cairo-compiler-private.h -+++ b/src/cairo-compiler-private.h -@@ -93,12 +93,13 @@ - __asm__ (slim_hidden_asmname (internal)) - # define slim_hidden_def1(name, internal) \ - extern __typeof (name) EXT_##name __asm__(slim_hidden_asmname(name)) \ -- __attribute__((__alias__(slim_hidden_asmname(internal)))) -+ __attribute__((__alias__(slim_hidden_realname(internal)))) - # define slim_hidden_ulp slim_hidden_ulp1(__USER_LABEL_PREFIX__) - # define slim_hidden_ulp1(x) slim_hidden_ulp2(x) - # define slim_hidden_ulp2(x) #x - # define slim_hidden_asmname(name) slim_hidden_asmname1(name) - # define slim_hidden_asmname1(name) slim_hidden_ulp #name -+# define slim_hidden_realname(name) #name - #else - # define slim_hidden_proto(name) int _cairo_dummy_prototype(void) - # define slim_hidden_proto_no_warn(name) int _cairo_dummy_prototype(void) -Index: b/util/cairo-script/cairo-script-private.h -=================================================================== ---- a/util/cairo-script/cairo-script-private.h -+++ b/util/cairo-script/cairo-script-private.h -@@ -109,12 +109,13 @@ - __asm__ (slim_hidden_asmname (internal)) - # define slim_hidden_def1(name, internal) \ - extern __typeof (name) EXT_##name __asm__(slim_hidden_asmname(name)) \ -- __attribute__((__alias__(slim_hidden_asmname(internal)))) -+ __attribute__((__alias__(slim_hidden_realname(internal)))) - # define slim_hidden_ulp slim_hidden_ulp1(__USER_LABEL_PREFIX__) - # define slim_hidden_ulp1(x) slim_hidden_ulp2(x) - # define slim_hidden_ulp2(x) #x - # define slim_hidden_asmname(name) slim_hidden_asmname1(name) - # define slim_hidden_asmname1(name) slim_hidden_ulp #name -+# define slim_hidden_realname(name) #name - #else - # define slim_hidden_proto(name) int _csi_dummy_prototype(void) - # define slim_hidden_proto_no_warn(name) int _csi_dummy_prototype(void) diff --git a/buildroot/package/cairo/0003-fix-nofork-build.patch b/buildroot/package/cairo/0001-fix-nofork-build.patch similarity index 100% rename from buildroot/package/cairo/0003-fix-nofork-build.patch rename to buildroot/package/cairo/0001-fix-nofork-build.patch diff --git a/buildroot/package/cairo/0005-fix-gcc-49-build.patch b/buildroot/package/cairo/0002-fix-gcc-49-build.patch similarity index 100% rename from buildroot/package/cairo/0005-fix-gcc-49-build.patch rename to buildroot/package/cairo/0002-fix-gcc-49-build.patch diff --git a/buildroot/package/can-utils/Config.in b/buildroot/package/can-utils/Config.in index bfa522d9899..1800eca042d 100644 --- a/buildroot/package/can-utils/Config.in +++ b/buildroot/package/can-utils/Config.in @@ -2,13 +2,14 @@ config BR2_PACKAGE_CAN_UTILS bool "can-utils" depends on BR2_USE_MMU # fork() depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # clock_nanosleep() + depends on !BR2_TOOLCHAIN_USES_MUSL # error() help SocketCAN is a set of open source CAN drivers and a networking stack. This package provides various tools for this stack. - http://elinux.org/Can-utils + https://github.com/linux-can/can-utils -comment "can-utils needs a toolchain w/ NPTL" - depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL +comment "can-utils needs a glibc or uClibc toolchain w/ NPTL" + depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_TOOLCHAIN_USES_MUSL depends on BR2_USE_MMU diff --git a/buildroot/package/can-utils/can-utils.hash b/buildroot/package/can-utils/can-utils.hash index 64c4cf6692c..2034c35a874 100644 --- a/buildroot/package/can-utils/can-utils.hash +++ b/buildroot/package/can-utils/can-utils.hash @@ -1,2 +1,3 @@ # Locally computed -sha256 c4b6b347c1c165a64c1156bb8816bce557945dd770f61b8bdc8fdb7c0744af27 can-utils-c3305fdd515464153d20199db232b6124bc962c0.tar.gz +sha256 370ad4b19447c29099f7300548f1a3362d6e123c4a6a827dbbd3110bc2c26839 can-utils-v2018.02.0.tar.gz +sha256 c258939ebb09c3857f5fc7704a449e5077cc881090c87b38f9a81332b96fa075 Makefile diff --git a/buildroot/package/can-utils/can-utils.mk b/buildroot/package/can-utils/can-utils.mk index 45d5e29fece..bff4d21fef0 100644 --- a/buildroot/package/can-utils/can-utils.mk +++ b/buildroot/package/can-utils/can-utils.mk @@ -4,9 +4,10 @@ # ################################################################################ -CAN_UTILS_VERSION = c3305fdd515464153d20199db232b6124bc962c0 +CAN_UTILS_VERSION = v2018.02.0 CAN_UTILS_SITE = $(call github,linux-can,can-utils,$(CAN_UTILS_VERSION)) CAN_UTILS_LICENSE = BSD-3-Clause or GPL-2.0, GPL-2.0+ +CAN_UTILS_LICENSE_FILES = Makefile CAN_UTILS_AUTORECONF = YES $(eval $(autotools-package)) diff --git a/buildroot/package/cargo-bin/cargo-bin.hash b/buildroot/package/cargo-bin/cargo-bin.hash index ea121547b4f..f01c3f5ff25 100644 --- a/buildroot/package/cargo-bin/cargo-bin.hash +++ b/buildroot/package/cargo-bin/cargo-bin.hash @@ -1,7 +1,7 @@ -# From https://static.rust-lang.org/dist/cargo-0.24.0-i686-unknown-linux-gnu.tar.xz.sha256 -sha256 6ffc847e0ee2a1273223ce500f7b212d051e99a6d234e34585d0c55e21a963ea cargo-0.24.0-i686-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/cargo-0.24.0-x86_64-unknown-linux-gnu.tar.xz.sha256 -sha256 93b953c8c7a2088aef952de8dccd7f6ccf9b21bf94b735d3909961ffe831da8c cargo-0.24.0-x86_64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/cargo-0.26.0-i686-unknown-linux-gnu.tar.xz.sha256 +sha256 bc5f5aa32d2f4ba26abf79a900231d06eecc7f1f2e125ed51bf71766550d1879 cargo-0.26.0-i686-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/cargo-0.26.0-x86_64-unknown-linux-gnu.tar.xz.sha256 +sha256 aeaa5813aa6615dd7fdde6d870ca257c5b2e9da5e308f8242a08b231605bce0e cargo-0.26.0-x86_64-unknown-linux-gnu.tar.xz # Locally generated sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 LICENSE-APACHE sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT diff --git a/buildroot/package/cargo-bin/cargo-bin.mk b/buildroot/package/cargo-bin/cargo-bin.mk index 3c834d90333..0c017bdb431 100644 --- a/buildroot/package/cargo-bin/cargo-bin.mk +++ b/buildroot/package/cargo-bin/cargo-bin.mk @@ -4,7 +4,7 @@ # ################################################################################ -CARGO_BIN_VERSION = 0.24.0 +CARGO_BIN_VERSION = 0.26.0 CARGO_BIN_SITE = https://static.rust-lang.org/dist CARGO_BIN_SOURCE = cargo-$(CARGO_BIN_VERSION)-$(RUSTC_HOST_NAME).tar.xz CARGO_BIN_LICENSE = Apache-2.0 or MIT diff --git a/buildroot/package/cargo/cargo.hash b/buildroot/package/cargo/cargo.hash index 2a24e2e1753..baa2cfbc330 100644 --- a/buildroot/package/cargo/cargo.hash +++ b/buildroot/package/cargo/cargo.hash @@ -1,8 +1,8 @@ # Locally generated -sha256 a9d4291254a1d622d3c3cb942aaa56ab4059b8d04915c3af234f0362f14722e8 cargo-0.24.0.tar.gz +sha256 1a4bae6910ca895157a1abe8225eb2b7e9b49ee1ee1e4e72fb81cb8e1446bff9 cargo-0.26.0.tar.gz sha256 dc7240d60a869fa24a68c8734fb7c810c27cca0a6dad52df6279865e4e8e7fae rust-installer-4f994850808a572e2cc8d43f968893c8e942e9bf.tar.gz sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 LICENSE-APACHE sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT sha256 8bd89f9222dc80292f4107347103b693ac66f3a083371f0629ccf42338abe880 LICENSE-THIRD-PARTY -# From https://src.fedoraproject.org/repo/pkgs/cargo/cargo-0.24.0-vendor.tar.xz/sha512 -sha512 60c12ce49a53cf986490f5a5fdf606f0374677902edfdc4d48ab1ba6094f3f23efc59626cd3776649c9386a9cab2a60332e5693aad6acbcbb92132efdcf9fe21 cargo-0.24.0-vendor.tar.xz +# From https://src.fedoraproject.org/repo/pkgs/cargo/cargo-0.26.0-vendor.tar.xz/sha512 +sha512 6ed2a1644c9b18fc24ddad5350d41b6c36cd5b62de4cf0b748a57b589f4f0ac12f91461989158d58d0892bf6fc2c1626cf574e7e2b9da4b0e35f72dfd88f9048 cargo-0.26.0-vendor.tar.xz diff --git a/buildroot/package/cargo/cargo.mk b/buildroot/package/cargo/cargo.mk index 3fd088d727b..1b1053ba41b 100644 --- a/buildroot/package/cargo/cargo.mk +++ b/buildroot/package/cargo/cargo.mk @@ -4,12 +4,12 @@ # ################################################################################ -CARGO_VERSION = 0.24.0 +CARGO_VERSION = 0.26.0 CARGO_SITE = $(call github,rust-lang,cargo,$(CARGO_VERSION)) CARGO_LICENSE = Apache-2.0 or MIT CARGO_LICENSE_FILES = LICENSE-APACHE LICENSE-MIT -CARGO_DEPS_SHA512 = 60c12ce49a53cf986490f5a5fdf606f0374677902edfdc4d48ab1ba6094f3f23efc59626cd3776649c9386a9cab2a60332e5693aad6acbcbb92132efdcf9fe21 +CARGO_DEPS_SHA512 = 6ed2a1644c9b18fc24ddad5350d41b6c36cd5b62de4cf0b748a57b589f4f0ac12f91461989158d58d0892bf6fc2c1626cf574e7e2b9da4b0e35f72dfd88f9048 CARGO_DEPS_SITE = https://src.fedoraproject.org/repo/pkgs/cargo/$(CARGO_DEPS_SOURCE)/sha512/$(CARGO_DEPS_SHA512) CARGO_DEPS_SOURCE = cargo-$(CARGO_VERSION)-vendor.tar.xz @@ -37,7 +37,7 @@ HOST_CARGO_HOME = $(HOST_DIR)/share/cargo define HOST_CARGO_EXTRACT_DEPS @mkdir -p $(@D)/vendor $(call suitable-extractor,$(CARGO_DEPS_SOURCE)) \ - $(DL_DIR)/$(CARGO_DEPS_SOURCE) | \ + $(HOST_CARGO_DL_DIR)/$(CARGO_DEPS_SOURCE) | \ $(TAR) --strip-components=1 -C $(@D)/vendor $(TAR_OPTIONS) - endef @@ -46,7 +46,7 @@ HOST_CARGO_POST_EXTRACT_HOOKS += HOST_CARGO_EXTRACT_DEPS define HOST_CARGO_EXTRACT_INSTALLER @mkdir -p $(@D)/src/rust-installer $(call suitable-extractor,$(CARGO_INSTALLER_SOURCE)) \ - $(DL_DIR)/$(CARGO_INSTALLER_SOURCE) | \ + $(HOST_CARGO_DL_DIR)/$(CARGO_INSTALLER_SOURCE) | \ $(TAR) --strip-components=1 -C $(@D)/src/rust-installer $(TAR_OPTIONS) - endef diff --git a/buildroot/package/ccache/ccache.mk b/buildroot/package/ccache/ccache.mk index 552a611f429..9a11d46d30c 100644 --- a/buildroot/package/ccache/ccache.mk +++ b/buildroot/package/ccache/ccache.mk @@ -21,6 +21,11 @@ CCACHE_LICENSE_FILES = LICENSE.txt GPL-3.0.txt # has zero dependency besides the C library. HOST_CCACHE_CONF_OPTS += --with-bundled-zlib +# We are ccache, so we can't use ccache +HOST_CCACHE_CONF_ENV = \ + CC="$(HOSTCC_NOCCACHE)" \ + CXX="$(HOSTCXX_NOCCACHE)" + # Patch host-ccache as follows: # - Use BR_CACHE_DIR instead of CCACHE_DIR, because CCACHE_DIR # is already used by autotargets for the ccache package. diff --git a/buildroot/package/ccid/Config.in b/buildroot/package/ccid/Config.in index dfb57e82c15..599bcc042a1 100644 --- a/buildroot/package/ccid/Config.in +++ b/buildroot/package/ccid/Config.in @@ -8,7 +8,7 @@ config BR2_PACKAGE_CCID help PC/SC driver for USB CCID smart card readers - http://pcsclite.alioth.debian.org/ccid.html + https://ccid.apdu.fr/ comment "ccid needs a toolchain w/ threads, dynamic library" depends on BR2_USE_MMU diff --git a/buildroot/package/ccid/ccid.hash b/buildroot/package/ccid/ccid.hash index a7d4875c0dc..eb2219393ba 100644 --- a/buildroot/package/ccid/ccid.hash +++ b/buildroot/package/ccid/ccid.hash @@ -1,3 +1,3 @@ -# From http://cdn-fastly.deb.debian.org/debian/pool/main/c/ccid/ccid_1.4.27-1.dsc -sha1 d72ee816422183a86006e0083ccd643236b4e12a ccid_1.4.27.tar.bz2 -sha256 a660e269606986cb94840ad5ba802ffb0cd23dd12b98f69a35035e0deb9dd137 ccid_1.4.27.tar.bz2 +# Locally computed +sha256 a5432ae845730493c04e59304b5c0c6103cd0e2c8827df57d69469a3eaaab84d ccid-1.4.29.tar.bz2 +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING diff --git a/buildroot/package/ccid/ccid.mk b/buildroot/package/ccid/ccid.mk index e566afe07e2..c9b95a62346 100644 --- a/buildroot/package/ccid/ccid.mk +++ b/buildroot/package/ccid/ccid.mk @@ -4,9 +4,9 @@ # ################################################################################ -CCID_VERSION = 1.4.27 -CCID_SOURCE = ccid_$(CCID_VERSION).tar.bz2 -CCID_SITE = https://alioth.debian.org/frs/download.php/file/4218 +CCID_VERSION = 1.4.29 +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 diff --git a/buildroot/package/chipmunk/Config.in b/buildroot/package/chipmunk/Config.in new file mode 100644 index 00000000000..7275d684a60 --- /dev/null +++ b/buildroot/package/chipmunk/Config.in @@ -0,0 +1,12 @@ + +comment "chipmunk needs an OpenGL backend" + depends on !BR2_PACKAGE_HAS_LIBGL + +config BR2_PACKAGE_CHIPMUNK + bool "chipmunk" + depends on BR2_PACKAGE_HAS_LIBGL + help + Chipmunk2D is a simple, lightweight, fast and portable 2D + rigid body physics library written in C. + + http://chipmunk-physics.net/ diff --git a/buildroot/package/chipmunk/chipmunk.hash b/buildroot/package/chipmunk/chipmunk.hash new file mode 100644 index 00000000000..7bd9b156923 --- /dev/null +++ b/buildroot/package/chipmunk/chipmunk.hash @@ -0,0 +1,5 @@ +# Locally calculated +sha256 6b6d8d5d910c4442fb9c8c4c46a178126d8c21d075cdb3ce439a7f8d8757b0ca Chipmunk-7.0.2.tar.gz + +# Hash for license file: +sha256 109cedb0301cba4e05fa99241f162bdad015c9541ae84b420b0148ac1ea588e2 LICENSE.txt diff --git a/buildroot/package/chipmunk/chipmunk.mk b/buildroot/package/chipmunk/chipmunk.mk new file mode 100644 index 00000000000..a84af228234 --- /dev/null +++ b/buildroot/package/chipmunk/chipmunk.mk @@ -0,0 +1,28 @@ +################################################################################ +# +# chipmunk +# +################################################################################ + +CHIPMUNK_VERSION = 7.0.2 +CHIPMUNK_SITE = https://github.com/slembcke/Chipmunk2D/archive +CHIPMUNK_SOURCE = Chipmunk-$(CHIPMUNK_VERSION).tar.gz +CHIPMUNK_INSTALL_STAGING = YES +CHIPMUNK_LICENSE = MIT +CHIPMUNK_LICENSE_FILES = LICENSE.txt +CHIPMUNK_DEPENDENCIES = libgl +CHIPMUNK_CONF_OPTS = -DBUILD_DEMOS=OFF + +ifeq ($(BR2_STATIC_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +CHIPMUNK_CONF_OPTS += -DBUILD_STATIC=ON -DINSTALL_STATIC=ON +else +CHIPMUNK_CONF_OPTS += -DBUILD_STATIC=OFF -DINSTALL_STATIC=OFF +endif + +ifeq ($(BR2_SHARED_LIBS)$(BR2_SHARED_STATIC_LIBS),y) +CHIPMUNK_CONF_OPTS += -DBUILD_SHARED=ON +else +CHIPMUNK_CONF_OPTS += -DBUILD_SHARED=OFF +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/cifs-utils/cifs-utils.mk b/buildroot/package/cifs-utils/cifs-utils.mk index 9044fdf83c5..9343e3ea89a 100644 --- a/buildroot/package/cifs-utils/cifs-utils.mk +++ b/buildroot/package/cifs-utils/cifs-utils.mk @@ -13,9 +13,9 @@ CIFS_UTILS_LICENSE_FILES = COPYING CIFS_UTILS_AUTORECONF = YES CIFS_UTILS_DEPENDENCIES = host-pkgconf -ifeq ($(BR2_TOOLCHAIN_SUPPORTS_PIE),) -CIFS_UTILS_CONF_OPTS += --disable-pie -endif +# 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 ifeq ($(BR2_PACKAGE_KEYUTILS),y) CIFS_UTILS_DEPENDENCIES += keyutils diff --git a/buildroot/package/circus/Config.in b/buildroot/package/circus/Config.in index f1cd93c7339..e09d87549cb 100644 --- a/buildroot/package/circus/Config.in +++ b/buildroot/package/circus/Config.in @@ -2,7 +2,7 @@ config BR2_PACKAGE_CIRCUS bool "circus" depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 depends on BR2_INSTALL_LIBSTDCPP # pyzmq -> zeromq - depends on BR2_TOOLCHAIN_HAS_THREADS # pyzmq -> zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # pyzmq -> zeromq select BR2_PACKAGE_PYTHON_IOWAIT # runtime select BR2_PACKAGE_PYTHON_PSUTIL # runtime select BR2_PACKAGE_PYTHON_PYZMQ # runtime @@ -14,6 +14,6 @@ config BR2_PACKAGE_CIRCUS https://circus.readthedocs.org/en/latest/ -comment "circus needs Python and a toolchain w/ C++, threads" - depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ +comment "circus needs Python and a toolchain w/ C++, NPTL" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ !(BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3) diff --git a/buildroot/package/cjson/cjson.hash b/buildroot/package/cjson/cjson.hash index ea2ecbb7e90..fd511afe6c5 100644 --- a/buildroot/package/cjson/cjson.hash +++ b/buildroot/package/cjson/cjson.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 28ef8c069db19010b9af247b86b05f0f879ac914a4620997c3e5181465170b40 cjson-v1.7.1.tar.gz +sha256 d1ca2665b34fea164a877637b4ad1624aa23390fe75de91b88e18c5d6ec91978 cjson-v1.7.6.tar.gz sha256 a36dda207c36db5818729c54e7ad4e8b0c6fba847491ba64f372c1a2037b6d5c LICENSE diff --git a/buildroot/package/cjson/cjson.mk b/buildroot/package/cjson/cjson.mk index 88a33a2ce47..fabfe5df3bd 100644 --- a/buildroot/package/cjson/cjson.mk +++ b/buildroot/package/cjson/cjson.mk @@ -4,7 +4,7 @@ # ################################################################################ -CJSON_VERSION = v1.7.1 +CJSON_VERSION = v1.7.6 CJSON_SITE = $(call github,DaveGamble,cjson,$(CJSON_VERSION)) CJSON_INSTALL_STAGING = YES CJSON_LICENSE = MIT diff --git a/buildroot/package/clamav/0001-clamdscan-proto.c-fix-build-error-due-to-missing-soc.patch b/buildroot/package/clamav/0001-clamdscan-proto.c-fix-build-error-due-to-missing-soc.patch new file mode 100644 index 00000000000..daac677eaa8 --- /dev/null +++ b/buildroot/package/clamav/0001-clamdscan-proto.c-fix-build-error-due-to-missing-soc.patch @@ -0,0 +1,34 @@ +From 52fda6e6689e22866a39ec4273713fb6035c38b2 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Mon, 7 May 2018 23:14:46 +0200 +Subject: [PATCH] clamdscan/proto.c: fix build error due to missing sockaddr_un + definition +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +proto.c: In function 窶賄connect窶: +proto.c:86:67: error: invalid application of 窶sizeof窶 to incomplete type 窶struct sockaddr_un窶 + if (connect(sockd, (struct sockaddr *)&nixsock, sizeof(nixsock)) == 0) + +Signed-off-by: Bernd Kuhls +Upstream-status: http://lurker.clamav.net/message/20140928.130829.5494fd68.en.html +--- + clamdscan/proto.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/clamdscan/proto.c b/clamdscan/proto.c +index 0205f6da0..d3396732f 100644 +--- a/clamdscan/proto.c ++++ b/clamdscan/proto.c +@@ -42,6 +42,7 @@ + #include + #include + #include ++#include + #ifdef HAVE_SYS_SELECT_H + #include + #endif +-- +2.14.3 + diff --git a/buildroot/package/clamav/0001-clamdscan.patch b/buildroot/package/clamav/0001-clamdscan.patch deleted file mode 100644 index c395ae16007..00000000000 --- a/buildroot/package/clamav/0001-clamdscan.patch +++ /dev/null @@ -1,21 +0,0 @@ -Fixes build error - -proto.c: In function 窶賄connect窶: -proto.c:86:67: error: invalid application of 窶sizeof窶 to incomplete type 窶struct sockaddr_un窶 - if (connect(sockd, (struct sockaddr *)&nixsock, sizeof(nixsock)) == 0) - -Patch sent upstream: http://lurker.clamav.net/message/20140928.130829.5494fd68.en.html - -Signed-off-by: Bernd Kuhls - -diff -uNr clamav-0.98.3.org/clamdscan/proto.c clamav-0.98.3/clamdscan/proto.c ---- clamav-0.98.3.org/clamdscan/proto.c 2014-05-06 20:39:56.000000000 +0200 -+++ clamav-0.98.3/clamdscan/proto.c 2014-05-10 10:41:44.000000000 +0200 -@@ -35,6 +35,7 @@ - #include - #include - #include -+#include - #ifdef HAVE_SYS_SELECT_H - #include - #endif diff --git a/buildroot/package/clamav/0002-backtrace-uClibc.patch b/buildroot/package/clamav/0002-mbox-do-not-use-backtrace-if-using-uClibc-without-ba.patch similarity index 53% rename from buildroot/package/clamav/0002-backtrace-uClibc.patch rename to buildroot/package/clamav/0002-mbox-do-not-use-backtrace-if-using-uClibc-without-ba.patch index 82ad67307d4..e99a9742ece 100644 --- a/buildroot/package/clamav/0002-backtrace-uClibc.patch +++ b/buildroot/package/clamav/0002-mbox-do-not-use-backtrace-if-using-uClibc-without-ba.patch @@ -1,4 +1,8 @@ -mbox: do not use backtrace if using uClibc without backtrace support +From 053bac34b9f0f947c58fcdf80ac03d5a6b05aa12 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Mon, 7 May 2018 23:15:58 +0200 +Subject: [PATCH] mbox: do not use backtrace if using uClibc without backtrace + support Since uClibc can be configured without support for backtrace, disable the backtrace if we are building with a uClibc that was built without @@ -8,10 +12,15 @@ This is a bit hacky, and would greatly benefit from a test in ./configure instead, but does nicely as a quick fix for now. Signed-off-by: "Yann E. MORIN" -diff -durN clamav-0.98.4.orig/libclamav/mbox.c clamav-0.98.4/libclamav/mbox.c ---- clamav-0.98.4.orig/libclamav/mbox.c 2014-05-21 17:25:05.000000000 +0200 -+++ clamav-0.98.4/libclamav/mbox.c 2014-11-16 17:21:04.885383286 +0100 -@@ -83,7 +83,7 @@ +--- + libclamav/mbox.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libclamav/mbox.c b/libclamav/mbox.c +index 71f540c0a..4851297a9 100644 +--- a/libclamav/mbox.c ++++ b/libclamav/mbox.c +@@ -98,7 +98,7 @@ #include #endif @@ -20,3 +29,6 @@ diff -durN clamav-0.98.4.orig/libclamav/mbox.c clamav-0.98.4/libclamav/mbox.c #define HAVE_BACKTRACE #endif #endif +-- +2.14.3 + diff --git a/buildroot/package/clamav/0003-m4-reorganization-libs-curl.m4-fix-curl-config-detec.patch b/buildroot/package/clamav/0003-m4-reorganization-libs-curl.m4-fix-curl-config-detec.patch new file mode 100644 index 00000000000..1d26b099b92 --- /dev/null +++ b/buildroot/package/clamav/0003-m4-reorganization-libs-curl.m4-fix-curl-config-detec.patch @@ -0,0 +1,75 @@ +From 6b6ff53b5931c162be13504a1efc53fc5212f9d1 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 7 May 2018 22:57:34 +0200 +Subject: [PATCH] m4/reorganization/libs/curl.m4: fix curl-config detection + logic + +The current logic in curl.m4 doesn't behave properly when +--without-libcurl is passed to the ./configure script. + +Indeed, in this case what happens is that: + + (1) Since --without-libcurl is passed, LIBCURL_HOME is set to nothing + + (2) find_curl is set to "no" + + (3) Due to find_curl being "no", LIBCURL_HOME is not set to + /usr/local and remains empty + + (4) We test if $LIBCURL_HOME/bin/curl_config exists, which is + equivalent to testing if /bin/curl-config exists. So curl.m4 is + looking at /bin/curl-config, which is irrelevant in a + cross-compilation context: it is not because the build machine + has libcurl installed that it is available for the target. + + Due to this mistake, it sets have_curl="yes" + +Due to this, the ./configure script assumes it can build the +clamsubmit program, which fails at build time because curl/curl.h +doesn't exist. + +To fix this, this commit rewrites the curl-config detection logic with +a simpler loop. If find_curl=yes, it means we have to find libcurl +ourselves, so we iterate over /usr/local and /usr, and check if a +bin/curl-config binary is available there. If so, we use this path as +LIBCURL_HOME and set have_curl="yes". + +This preserves the existing behavior, while fixing the situation where +--without-libcurl is passed, but /bin/curl-config exists. + +Signed-off-by: Thomas Petazzoni +Upstream-status: https://github.com/Cisco-Talos/clamav-devel/pull/87 +--- + m4/reorganization/libs/curl.m4 | 15 +++++---------- + 1 file changed, 5 insertions(+), 10 deletions(-) + +diff --git a/m4/reorganization/libs/curl.m4 b/m4/reorganization/libs/curl.m4 +index 2a5966ee7..b6a9c2137 100644 +--- a/m4/reorganization/libs/curl.m4 ++++ b/m4/reorganization/libs/curl.m4 +@@ -19,17 +19,12 @@ fi + [find_curl="yes"]) + + if test "X$find_curl" = "Xyes"; then +- LIBCURL_HOME=/usr/local +-fi +-if test -f "$LIBCURL_HOME/bin/curl-config"; then +- have_curl="yes" +-else +- if test "X$find_curl" = "Xyes"; then +- LIBCURL_HOME=/usr +- if test -f "$LIBCURL_HOME/bin/curl-config"; then +- have_curl="yes" ++ for p in /usr/local /usr ; do ++ if test -f "${p}/bin/curl-config"; then ++ LIBCURL_HOME=$p ++ have_curl="yes" + fi +- fi ++ done + fi + + if test "X$have_curl" = "Xyes"; then +-- +2.14.3 + diff --git a/buildroot/package/clamav/clamav.hash b/buildroot/package/clamav/clamav.hash index 76c633f9794..4cf7e7a5426 100644 --- a/buildroot/package/clamav/clamav.hash +++ b/buildroot/package/clamav/clamav.hash @@ -1,5 +1,5 @@ # Locally calculated -sha256 d72ac3273bde8d2e5e28ec9978373ee3ab4529fd868bc3fc4d2d2671228f2461 clamav-0.99.4.tar.gz +sha256 c5c5edaf75a3c53ac0f271148fd6447310bce53f448ec7e6205124a25918f65c clamav-0.100.0.tar.gz sha256 0c4fd2fa9733fc9122503797648710851e4ee6d9e4969dd33fcbd8c63cd2f584 COPYING sha256 d72a145c90918184a05ef65a04c9e6f7466faa59bc1b82c8f6a8ddc7ddcb9bed COPYING.bzip2 sha256 dfb818a0d41411c6fb1c193c68b73018ceadd1994bda41ad541cbff292894bc6 COPYING.file diff --git a/buildroot/package/clamav/clamav.mk b/buildroot/package/clamav/clamav.mk index 4c4fc395c2d..c0138a8944f 100644 --- a/buildroot/package/clamav/clamav.mk +++ b/buildroot/package/clamav/clamav.mk @@ -4,7 +4,7 @@ # ################################################################################ -CLAMAV_VERSION = 0.99.4 +CLAMAV_VERSION = 0.100.0 CLAMAV_SITE = https://www.clamav.net/downloads/production CLAMAV_LICENSE = GPL-2.0 CLAMAV_LICENSE_FILES = COPYING COPYING.bzip2 COPYING.file COPYING.getopt \ @@ -16,6 +16,8 @@ CLAMAV_DEPENDENCIES = \ openssl \ zlib \ $(TARGET_NLS_DEPENDENCIES) +# 0003-m4-reorganization-libs-curl.m4-fix-curl-config-detec.patch +CLAMAV_AUTORECONF = YES # mmap cannot be detected when cross-compiling, needed for mempool support CLAMAV_CONF_ENV = \ diff --git a/buildroot/package/clang/Config.in b/buildroot/package/clang/Config.in new file mode 100644 index 00000000000..80f03c80b73 --- /dev/null +++ b/buildroot/package/clang/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_CLANG + bool "clang" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_HOST_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # std::wstring + select BR2_PACKAGE_LLVM + help + Clang is a C/C++, Objective C/C++ and OpenCL C front-end + for the LLVM compiler. + + http://clang.llvm.org + +comment "clang needs a toolchain w/ wchar, threads, C++, gcc >= 4.8, host gcc >= 4.8, dynamic library" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_HOST_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \ + || BR2_STATIC_LIBS || !BR2_USE_WCHAR + +comment "clang needs a toolchain not affected by GCC bug 64735" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/buildroot/package/clang/clang.hash b/buildroot/package/clang/clang.hash new file mode 100644 index 00000000000..bf54f9bb535 --- /dev/null +++ b/buildroot/package/clang/clang.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 fa9ce9724abdb68f166deea0af1f71ca0dfa9af8f7e1261f2cae63c280282800 cfe-5.0.2.src.tar.xz +sha256 de4c79665f0f5688b0ace17cba6f8e0343925bb95e0949d66d47bbd4527310d6 LICENSE.TXT diff --git a/buildroot/package/clang/clang.mk b/buildroot/package/clang/clang.mk new file mode 100644 index 00000000000..ae0140c783e --- /dev/null +++ b/buildroot/package/clang/clang.mk @@ -0,0 +1,93 @@ +################################################################################ +# +# clang +# +################################################################################ + +CLANG_VERSION = 5.0.2 +CLANG_SITE = http://llvm.org/releases/$(CLANG_VERSION) +CLANG_SOURCE = cfe-$(CLANG_VERSION).src.tar.xz +CLANG_LICENSE = NCSA +CLANG_LICENSE_FILES = LICENSE.TXT +CLANG_SUPPORTS_IN_SOURCE_BUILD = NO +CLANG_INSTALL_STAGING = YES + +HOST_CLANG_DEPENDENCIES = host-llvm host-libxml2 +CLANG_DEPENDENCIES = llvm host-clang + +# This option is needed, otherwise multiple shared libs +# (libclangAST.so, libclangBasic.so, libclangFrontend.so, etc.) will +# be generated. As a final shared lib containing all these components +# (libclang.so) is also generated, this resulted in the following +# error when trying to use tools that use libclang: +# $ CommandLine Error: Option 'track-memory' registered more than once! +# $ LLVM ERROR: inconsistency in registered CommandLine options +# By setting BUILD_SHARED_LIBS to OFF, we generate multiple static +# libraries (the same way as host's clang build) and finally +# libclang.so to be installed on the target. +CLANG_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF + +# Default is Debug build, which requires considerably more disk space +# and build time. Release build is selected for host and target +# because the linker can run out of memory in Debug mode. +HOST_CLANG_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release +CLANG_CONF_OPTS += -DCMAKE_BUILD_TYPE=Release + +CLANG_CONF_OPTS += -DCMAKE_CROSSCOMPILING=1 + +# We need to build tools because libclang is a tool +HOST_CLANG_CONF_OPTS += -DCLANG_BUILD_TOOLS=ON +CLANG_CONF_OPTS += -DCLANG_BUILD_TOOLS=ON + +HOST_CLANG_CONF_OPTS += \ + -DCLANG_BUILD_EXAMPLES=OFF \ + -DCLANG_INCLUDE_DOCS=OFF \ + -DCLANG_INCLUDE_TESTS=OFF + +CLANG_CONF_OPTS += \ + -DCLANG_BUILD_EXAMPLES=OFF \ + -DCLANG_INCLUDE_DOCS=OFF \ + -DCLANG_INCLUDE_TESTS=OFF + +HOST_CLANG_CONF_OPTS += -DLLVM_CONFIG:FILEPATH=$(HOST_DIR)/bin/llvm-config +CLANG_CONF_OPTS += -DLLVM_CONFIG:FILEPATH=$(STAGING_DIR)/usr/bin/llvm-config \ + -DCLANG_TABLEGEN:FILEPATH=$(HOST_DIR)/usr/bin/clang-tblgen \ + -DLLVM_TABLEGEN_EXE:FILEPATH=$(HOST_DIR)/usr/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)/usr/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 + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/buildroot/package/clapack/Config.in b/buildroot/package/clapack/Config.in index e5be0b64419..af7834d9850 100644 --- a/buildroot/package/clapack/Config.in +++ b/buildroot/package/clapack/Config.in @@ -8,10 +8,6 @@ config BR2_PACKAGE_CLAPACK # _fpu_control is used on PowerPC, but not available with # uClibc or musl depends on !BR2_powerpc || BR2_TOOLCHAIN_USES_GLIBC - # disable clapack on blackfin, it triggers "undefined symbol" failure - # because of the "_" symbol prefix: - # http://autobuild.buildroot.net/results/a28df0ba10803e6e54c2f8160bbd8190cba4d690/ - depends on !BR2_bfin # assembler: Error: value out of range depends on !BR2_m68k_cf help diff --git a/buildroot/package/coreutils/coreutils.mk b/buildroot/package/coreutils/coreutils.mk index 8259f42f4a6..4ef888829f9 100644 --- a/buildroot/package/coreutils/coreutils.mk +++ b/buildroot/package/coreutils/coreutils.mk @@ -14,7 +14,7 @@ COREUTILS_LICENSE_FILES = COPYING COREUTILS_AUTORECONF = YES COREUTILS_GETTEXTIZE = YES -COREUTILS_CONF_OPTS = --disable-rpath --enable-single-binary=shebangs \ +COREUTILS_CONF_OPTS = --disable-rpath --enable-single-binary=symlinks \ $(if $(BR2_TOOLCHAIN_USES_MUSL),--with-included-regex) COREUTILS_CONF_ENV = ac_cv_c_restrict=no \ ac_cv_func_chown_works=yes \ @@ -103,10 +103,11 @@ endif ifeq ($(BR2_ROOTFS_MERGED_USR),) define COREUTILS_CLEANUP_BIN - # some things go in root rather than usr - for f in $(COREUTILS_BIN_PROGS); do \ - mv -f $(TARGET_DIR)/usr/bin/$$f $(TARGET_DIR)/bin/$$f || exit 1; \ - done + # 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 COREUTILS_POST_INSTALL_TARGET_HOOKS += COREUTILS_CLEANUP_BIN endif diff --git a/buildroot/package/cppzmq/Config.in b/buildroot/package/cppzmq/Config.in index c984c15c96b..d0ae0c22c2a 100644 --- a/buildroot/package/cppzmq/Config.in +++ b/buildroot/package/cppzmq/Config.in @@ -1,12 +1,12 @@ config BR2_PACKAGE_CPPZMQ bool "cppzmq" depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # 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) +comment "cppzmq needs a toolchain w/ C++, NPTL" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS_NPTL) diff --git a/buildroot/package/cracklib/cracklib.mk b/buildroot/package/cracklib/cracklib.mk index 2fa3d3b4eab..aeee60d1e7b 100644 --- a/buildroot/package/cracklib/cracklib.mk +++ b/buildroot/package/cracklib/cracklib.mk @@ -29,7 +29,7 @@ HOST_CRACKLIB_CONF_OPTS += --without-python --without-zlib ifeq ($(BR2_PACKAGE_CRACKLIB_FULL_DICT),y) CRACKLIB_EXTRA_DOWNLOADS = cracklib-words-$(CRACKLIB_VERSION).gz -CRACKLIB_DICT_SOURCE = $(DL_DIR)/cracklib-words-$(CRACKLIB_VERSION).gz +CRACKLIB_DICT_SOURCE = $(CRACKLIB_DL_DIR)/cracklib-words-$(CRACKLIB_VERSION).gz else CRACKLIB_DICT_SOURCE = $(@D)/dicts/cracklib-small endif diff --git a/buildroot/package/cramfs/0001-endian.patch b/buildroot/package/cramfs/0001-endian.patch deleted file mode 100644 index b2eda5a1db7..00000000000 --- a/buildroot/package/cramfs/0001-endian.patch +++ /dev/null @@ -1,288 +0,0 @@ -Index: cramfs-1.1/mkcramfs.c -=================================================================== ---- cramfs-1.1.orig/mkcramfs.c 2002-02-20 09:03:32.000000000 +0100 -+++ cramfs-1.1/mkcramfs.c 2011-09-09 15:11:00.980895119 +0200 -@@ -93,6 +93,7 @@ - static int opt_verbose = 0; - static char *opt_image = NULL; - static char *opt_name = NULL; -+static int swap_endian = 0; - - static int warn_dev, warn_gid, warn_namelen, warn_skip, warn_size, warn_uid; - -@@ -130,6 +131,8 @@ - " -i file insert a file image into the filesystem (requires >= 2.4.0)\n" - " -n name set name of cramfs filesystem\n" - " -p pad by %d bytes for boot code\n" -+ " -l litte endian filesystem\n" -+ " -b big endian filesystem\n" - " -s sort directory entries (old option, ignored)\n" - " -v be more verbose\n" - " -z make explicit holes (requires >= 2.3.39)\n" -@@ -372,6 +375,50 @@ - return totalsize; - } - -+/* routines to swap endianness/bitfields in inode/superblock block data */ -+static void fix_inode(struct cramfs_inode *inode) -+{ -+#define wswap(x) (((x)>>24) | (((x)>>8)&0xff00) | (((x)&0xff00)<<8) | (((x)&0xff)<<24)) -+ /* attempt #2 */ -+ inode->mode = (inode->mode >> 8) | ((inode->mode&0xff)<<8); -+ inode->uid = (inode->uid >> 8) | ((inode->uid&0xff)<<8); -+ inode->size = (inode->size >> 16) | (inode->size&0xff00) | -+ ((inode->size&0xff)<<16); -+ ((u32*)inode)[2] = wswap(inode->offset | (inode->namelen<<26)); -+} -+ -+static void fix_offset(struct cramfs_inode *inode, u32 offset) -+{ -+ u32 tmp = wswap(((u32*)inode)[2]); -+ ((u32*)inode)[2] = wswap((offset >> 2) | (tmp&0xfc000000)); -+} -+ -+static void fix_block_pointer(u32 *p) -+{ -+ *p = wswap(*p); -+} -+ -+static void fix_super(struct cramfs_super *super) -+{ -+ u32 *p = (u32*)super; -+ -+ /* fix superblock fields */ -+ p[0] = wswap(p[0]); /* magic */ -+ p[1] = wswap(p[1]); /* size */ -+ p[2] = wswap(p[2]); /* flags */ -+ p[3] = wswap(p[3]); /* future */ -+ -+ /* fix filesystem info fields */ -+ p = (u32*)&super->fsid; -+ p[0] = wswap(p[0]); /* crc */ -+ p[1] = wswap(p[1]); /* edition */ -+ p[2] = wswap(p[2]); /* blocks */ -+ p[3] = wswap(p[3]); /* files */ -+ -+ fix_inode(&super->root); -+#undef wswap -+} -+ - /* Returns sizeof(struct cramfs_super), which includes the root inode. */ - static unsigned int write_superblock(struct entry *root, char *base, int size) - { -@@ -405,6 +452,7 @@ - super->root.gid = root->gid; - super->root.size = root->size; - super->root.offset = offset >> 2; -+ if (swap_endian) fix_super(super); - - return offset; - } -@@ -419,7 +467,10 @@ - if (offset >= (1 << (2 + CRAMFS_OFFSET_WIDTH))) { - die(MKFS_ERROR, 0, "filesystem too big"); - } -- inode->offset = (offset >> 2); -+ if (swap_endian) -+ fix_offset(inode, offset); -+ else -+ inode->offset = (offset >> 2); - } - - /* -@@ -515,6 +566,7 @@ - stack_entries++; - } - entry = entry->next; -+ if (swap_endian) fix_inode(inode); - } - - /* -@@ -609,6 +661,7 @@ - } - - *(u32 *) (base + offset) = curr; -+ if (swap_endian) fix_block_pointer((u32*)(base + offset)); - offset += 4; - } while (size); - -@@ -699,7 +752,7 @@ - progname = argv[0]; - - /* command line options */ -- while ((c = getopt(argc, argv, "hEe:i:n:psvz")) != EOF) { -+ while ((c = getopt(argc, argv, "hEe:i:n:psvzlb")) != EOF) { - switch (c) { - case 'h': - usage(MKFS_OK); -@@ -727,6 +780,18 @@ - opt_pad = PAD_SIZE; - fslen_ub += PAD_SIZE; - break; -+ case 'b': -+#if __BYTE_ORDER == __LITTLE_ENDIAN -+ swap_endian = 1; -+ printf("Swapping filesystem endian-ness\n"); -+#endif -+ break; -+ case 'l': -+#if __BYTE_ORDER == __BIG_ENDIAN -+ swap_endian = 1; -+ printf("Swapping filesystem endian-ness\n"); -+#endif -+ break; - case 's': - /* old option, ignored */ - break; -Index: cramfs-1.1/cramfsck.c -=================================================================== ---- cramfs-1.1.orig/cramfsck.c 2002-02-23 01:00:42.000000000 +0100 -+++ cramfs-1.1/cramfsck.c 2011-09-09 15:10:06.810894275 +0200 -@@ -30,6 +30,7 @@ - * 2000/07/15: Daniel Quinlan (initial support for block devices) - * 2002/01/10: Daniel Quinlan (additional checks, test more return codes, - * use read if mmap fails, standardize messages) -+ * 2004/09/01: Alfonso Acosta (Add swapping support) - */ - - /* compile-time options */ -@@ -53,6 +54,7 @@ - #define _LINUX_STRING_H_ - #include - #include -+#include - #include - - /* Exit codes used by fsck-type programs */ -@@ -73,6 +75,7 @@ - static char *filename; /* ROM image filename */ - struct cramfs_super super; /* just find the cramfs superblock once */ - static int opt_verbose = 0; /* 1 = verbose (-v), 2+ = very verbose (-vv) */ -+static int need_swapping = 0; /* fs and host dont have the same endianness */ - #ifdef INCLUDE_FS_TESTS - static int opt_extract = 0; /* extract cramfs (-x) */ - static char *extract_dir = "root"; /* extraction directory (-x) */ -@@ -84,6 +87,9 @@ - static unsigned long start_data = ~0UL; /* start of the data (256 MB = max) */ - static unsigned long end_data = 0; /* end of the data */ - -+/* access 32 byte variables */ -+#define CRAMFS_32(x) (need_swapping ? bswap_32(x) : x) -+ - /* Guarantee access to at least 8kB at a time */ - #define ROMBUFFER_BITS 13 - #define ROMBUFFERSIZE (1 << ROMBUFFER_BITS) -@@ -165,20 +171,34 @@ - if (super.magic == CRAMFS_MAGIC) { - *start = 0; - } -+ else if (super.magic == bswap_32(CRAMFS_MAGIC)) { -+ *start = 0; -+ need_swapping = 1; -+ } -+ - else if (*length >= (PAD_SIZE + sizeof(super))) { - lseek(fd, PAD_SIZE, SEEK_SET); - if (read(fd, &super, sizeof(super)) != sizeof(super)) { - die(FSCK_ERROR, 1, "read failed: %s", filename); - } -- if (super.magic == CRAMFS_MAGIC) { -+ if (super.magic == CRAMFS_32(CRAMFS_MAGIC)) { - *start = PAD_SIZE; - } - } - - /* superblock tests */ -- if (super.magic != CRAMFS_MAGIC) { -+ if (super.magic != CRAMFS_32(CRAMFS_MAGIC)) { - die(FSCK_UNCORRECTED, 0, "superblock magic not found"); - } -+ if (need_swapping){ -+ super.size = bswap_32(super.size); -+ super.flags = bswap_32(super.flags); -+ super.future = bswap_32(super.future); -+ super.fsid.crc = bswap_32(super.fsid.crc); -+ super.fsid.edition = bswap_32(super.fsid.edition); -+ super.fsid.blocks = bswap_32(super.fsid.blocks); -+ super.fsid.files = bswap_32(super.fsid.files); -+ } - if (super.flags & ~CRAMFS_SUPPORTED_FLAGS) { - die(FSCK_ERROR, 0, "unsupported filesystem features"); - } -@@ -213,7 +233,10 @@ - die(FSCK_USAGE, 0, "unable to test CRC: old cramfs format"); - #endif /* not INCLUDE_FS_TESTS */ - } -- -+ else if (need_swapping) { -+ /* crc checking in this case would mean translating the whole file */ -+ return; -+ } - crc = crc32(0L, Z_NULL, 0); - - buf = mmap(NULL, super.size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); -@@ -298,12 +321,23 @@ - - static struct cramfs_inode *cramfs_iget(struct cramfs_inode * i) - { -+#define wswap(x) (((x)>>24) | (((x)>>8)&0xff00) | (((x)&0xff00)<<8) | (((x)&0xff)<<24)) - struct cramfs_inode *inode = malloc(sizeof(struct cramfs_inode)); - - if (!inode) { - die(FSCK_ERROR, 1, "malloc failed"); - } -- *inode = *i; -+ if(!need_swapping) { -+ *inode = *i; -+ } -+ else { -+ inode->mode=bswap_16(i->mode); -+ inode->uid=bswap_16(i->uid); -+ inode->size=bswap_32(i->size << 8); -+ inode->gid=i->gid; -+ inode->namelen = bswap_32(((u32*)i)[2]) >> 26; -+ inode->offset = bswap_32(((u32*)i)[2]) & 0x3FFFFFFF; -+ } - return inode; - } - -@@ -322,9 +356,9 @@ - */ - static struct cramfs_inode *read_super(void) - { -- unsigned long offset = super.root.offset << 2; -- -- if (!S_ISDIR(super.root.mode)) -+ struct cramfs_inode *root = cramfs_iget(&super.root); -+ unsigned long offset = root->offset << 2; -+ if (!S_ISDIR(root->mode)) - die(FSCK_UNCORRECTED, 0, "root inode is not directory"); - if (!(super.flags & CRAMFS_FLAG_SHIFTED_ROOT_OFFSET) && - ((offset != sizeof(struct cramfs_super)) && -@@ -332,7 +366,7 @@ - { - die(FSCK_UNCORRECTED, 0, "bad root offset (%lu)", offset); - } -- return cramfs_iget(&super.root); -+ return root; - } - - static int uncompress_block(void *src, int len) -@@ -364,7 +398,7 @@ - - do { - unsigned long out = PAGE_CACHE_SIZE; -- unsigned long next = *(u32 *) romfs_read(offset); -+ unsigned long next = CRAMFS_32(*(u32 *) romfs_read(offset)); - - if (next > end_data) { - end_data = next; -@@ -525,7 +559,7 @@ - { - unsigned long offset = i->offset << 2; - unsigned long curr = offset + 4; -- unsigned long next = *(u32 *) romfs_read(offset); -+ unsigned long next = CRAMFS_32(*(u32 *) romfs_read(offset)); - unsigned long size; - - if (offset == 0) { diff --git a/buildroot/package/cramfs/0002-cygwin_IO.patch b/buildroot/package/cramfs/0002-cygwin_IO.patch deleted file mode 100644 index 8be333f01b0..00000000000 --- a/buildroot/package/cramfs/0002-cygwin_IO.patch +++ /dev/null @@ -1,15 +0,0 @@ -Index: cramfs-1.1/cramfsck.c -=================================================================== ---- cramfs-1.1.orig/cramfsck.c 2011-09-09 15:10:06.000000000 +0200 -+++ cramfs-1.1/cramfsck.c 2011-09-09 15:13:49.950897747 +0200 -@@ -57,6 +57,10 @@ - #include - #include - -+#ifdef __CYGWIN__ -+#define _IO(type,nr) _IOC(_IOC_NONE,(type),(nr),0) -+#endif /* __CYGWIN__ */ -+ - /* Exit codes used by fsck-type programs */ - #define FSCK_OK 0 /* No errors */ - #define FSCK_NONDESTRUCT 1 /* File system errors corrected */ diff --git a/buildroot/package/cramfs/0003-fix-missing-types.patch b/buildroot/package/cramfs/0003-fix-missing-types.patch deleted file mode 100644 index 896110011ee..00000000000 --- a/buildroot/package/cramfs/0003-fix-missing-types.patch +++ /dev/null @@ -1,17 +0,0 @@ -mkcramfs; loff_t is guarded by _GNU_SOURCE - -Although already properly done in cramfsck, it was missing in mkcramfs. - -Signed-off-by: "Yann E. MORIN" - -diff -durN cramfs-1.1.orig/mkcramfs.c cramfs-1.1/mkcramfs.c ---- cramfs-1.1.orig/mkcramfs.c 2015-08-05 22:31:16.830543096 +0200 -+++ cramfs-1.1/mkcramfs.c 2015-08-05 22:33:33.136289744 +0200 -@@ -22,6 +22,7 @@ - * If you change the disk format of cramfs, please update fs/cramfs/README. - */ - -+#define _GNU_SOURCE - #include - #include - #include diff --git a/buildroot/package/cramfs/Config.in b/buildroot/package/cramfs/Config.in index b2a0c6c5162..a177004ca92 100644 --- a/buildroot/package/cramfs/Config.in +++ b/buildroot/package/cramfs/Config.in @@ -5,4 +5,4 @@ config BR2_PACKAGE_CRAMFS cramfs is a compressed read-only filesystem. This package contains the tools to generate and check a cramfs filesystem. - http://sourceforge.net/projects/cramfs/ + https://github.com/npitre/cramfs-tools diff --git a/buildroot/package/cramfs/Config.in.host b/buildroot/package/cramfs/Config.in.host index 53b43d44201..e594d5c820c 100644 --- a/buildroot/package/cramfs/Config.in.host +++ b/buildroot/package/cramfs/Config.in.host @@ -4,4 +4,4 @@ config BR2_PACKAGE_HOST_CRAMFS cramfs is a compressed read-only filesystem. This package contains the tools to generate and check a cramfs filesystem. - http://sourceforge.net/projects/cramfs/ + https://github.com/npitre/cramfs-tools diff --git a/buildroot/package/cramfs/cramfs.hash b/buildroot/package/cramfs/cramfs.hash index b8c5f5fbcb8..c6c18b073c4 100644 --- a/buildroot/package/cramfs/cramfs.hash +++ b/buildroot/package/cramfs/cramfs.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 133caca2c4e7c64106555154ee0ff693f5cf5beb9421ce2eb86baee997d22368 cramfs-1.1.tar.gz +sha256 99d87aa5874f4a34c219275e0297b0f4c710895f9c87295267aeabe6a752add1 cramfs-1a1e65f2a049.tar.gz diff --git a/buildroot/package/cramfs/cramfs.mk b/buildroot/package/cramfs/cramfs.mk index 70010e8e2f8..18bef80bd2c 100644 --- a/buildroot/package/cramfs/cramfs.mk +++ b/buildroot/package/cramfs/cramfs.mk @@ -4,8 +4,8 @@ # ################################################################################ -CRAMFS_VERSION = 1.1 -CRAMFS_SITE = http://downloads.sourceforge.net/project/cramfs/cramfs/$(CRAMFS_VERSION) +CRAMFS_VERSION = 1a1e65f2a049 +CRAMFS_SITE = $(call github,npitre,cramfs-tools,$(CRAMFS_VERSION)) CRAMFS_LICENSE = GPL-2.0+ CRAMFS_LICENSE_FILES = COPYING diff --git a/buildroot/package/cryptopp/0001-Fix-possible-DoS-in-ASN.1-decoders-CVE-2016-9939.patch b/buildroot/package/cryptopp/0001-Fix-possible-DoS-in-ASN.1-decoders-CVE-2016-9939.patch deleted file mode 100644 index ea6ba7fae5c..00000000000 --- a/buildroot/package/cryptopp/0001-Fix-possible-DoS-in-ASN.1-decoders-CVE-2016-9939.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 3d9181d7bdd8e491f745dbc9e34bd20b6f6da069 Mon Sep 17 00:00:00 2001 -From: Gergely Nagy -Date: Wed, 14 Dec 2016 13:19:01 +0100 -Subject: [PATCH] Fix possible DoS in ASN.1 decoders (CVE-2016-9939) - -Signed-off-by: Peter Korsgaard ---- - asn.cpp | 10 ++++++++++ - asn.h | 2 ++ - 2 files changed, 12 insertions(+) - -diff --git a/asn.cpp b/asn.cpp -index 297ff01..2e923ef 100644 ---- a/asn.cpp -+++ b/asn.cpp -@@ -123,6 +123,8 @@ size_t BERDecodeOctetString(BufferedTransformation &bt, SecByteBlock &str) - size_t bc; - if (!BERLengthDecode(bt, bc)) - BERDecodeError(); -+ if (bc > bt.MaxRetrievable()) -+ BERDecodeError(); - - str.New(bc); - if (bc != bt.Get(str, bc)) -@@ -139,6 +141,8 @@ size_t BERDecodeOctetString(BufferedTransformation &bt, BufferedTransformation & - size_t bc; - if (!BERLengthDecode(bt, bc)) - BERDecodeError(); -+ if (bc > bt.MaxRetrievable()) -+ BERDecodeError(); - - bt.TransferTo(str, bc); - return bc; -@@ -161,6 +165,8 @@ size_t BERDecodeTextString(BufferedTransformation &bt, std::string &str, byte as - size_t bc; - if (!BERLengthDecode(bt, bc)) - BERDecodeError(); -+ if (bc > bt.MaxRetrievable()) -+ BERDecodeError(); - - SecByteBlock temp(bc); - if (bc != bt.Get(temp, bc)) -@@ -188,6 +194,10 @@ size_t BERDecodeBitString(BufferedTransformation &bt, SecByteBlock &str, unsigne - size_t bc; - if (!BERLengthDecode(bt, bc)) - BERDecodeError(); -+ if (bc == 0) -+ BERDecodeError(); -+ if (bc > bt.MaxRetrievable()) -+ BERDecodeError(); - - byte unused; - if (!bt.Get(unused)) -diff --git a/asn.h b/asn.h -index ed9de52..33f0dd0 100644 ---- a/asn.h -+++ b/asn.h -@@ -498,6 +498,8 @@ void BERDecodeUnsigned(BufferedTransformation &in, T &w, byte asnTag = INTEGER, - bool definite = BERLengthDecode(in, bc); - if (!definite) - BERDecodeError(); -+ if (bc > in.MaxRetrievable()) -+ BERDecodeError(); - - SecByteBlock buf(bc); - --- -2.10.2 - diff --git a/buildroot/package/cryptopp/cryptopp.hash b/buildroot/package/cryptopp/cryptopp.hash index 577638c1c94..389f05f654e 100644 --- a/buildroot/package/cryptopp/cryptopp.hash +++ b/buildroot/package/cryptopp/cryptopp.hash @@ -1,2 +1,5 @@ -# Locally computed -sha256 a75ef486fe3128008bbb201efee3dcdcffbe791120952910883b26337ec32c34 cryptopp565.zip +# Hash from: https://www.cryptopp.com/release700.html: +sha256 a4bc939910edd3d29fb819a6fc0dfdc293f686fa62326f61c56d72d0a366ceb0 cryptopp700.zip + +# Hash for license file: +sha256 fe5f5f187e6e38ac2f833956fc5c4cab2df08797cff07f540e4ee74f12f7ee5b License.txt diff --git a/buildroot/package/cryptopp/cryptopp.mk b/buildroot/package/cryptopp/cryptopp.mk index 4b121aef2db..08b18f2fbcd 100644 --- a/buildroot/package/cryptopp/cryptopp.mk +++ b/buildroot/package/cryptopp/cryptopp.mk @@ -4,7 +4,7 @@ # ################################################################################ -CRYPTOPP_VERSION = 5.6.5 +CRYPTOPP_VERSION = 7.0.0 CRYPTOPP_SOURCE = cryptopp$(subst .,,$(CRYPTOPP_VERSION)).zip CRYPTOPP_SITE = http://cryptopp.com/ CRYPTOPP_LICENSE = BSL-1.0 @@ -12,7 +12,7 @@ CRYPTOPP_LICENSE_FILES = License.txt CRYPTOPP_INSTALL_STAGING = YES define HOST_CRYPTOPP_EXTRACT_CMDS - $(UNZIP) $(DL_DIR)/$(CRYPTOPP_SOURCE) -d $(@D) + $(UNZIP) $(HOST_CRYPTOPP_DL_DIR)/$(CRYPTOPP_SOURCE) -d $(@D) endef HOST_CRYPTOPP_MAKE_OPTS = \ diff --git a/buildroot/package/cryptsetup/cryptsetup.hash b/buildroot/package/cryptsetup/cryptsetup.hash index c54b0dc6071..7629691a668 100644 --- a/buildroot/package/cryptsetup/cryptsetup.hash +++ b/buildroot/package/cryptsetup/cryptsetup.hash @@ -1,4 +1,4 @@ # From https://www.kernel.org/pub/linux/utils/cryptsetup/v2.0/sha256sums.asc -sha256 adc623b9e3e3ab5c14145b8baf21b741e513ee5bf90d2b4d85a745c2f05da199 cryptsetup-2.0.0.tar.xz +sha256 4f8105d7f3bf758d58da3058b3cbd66c0ca81492b2dafe8ae7c049cc9e939e97 cryptsetup-2.0.2.tar.xz sha256 45670cce8b6a0ddd66c8016cd8ccef6cd71f35717cbacc7f1e895b3855207b33 COPYING sha256 8c33cc37871654ec7ed87e6fbb896c8cf33ef5ef05b1611a5aed857596ffafa5 COPYING.LGPL diff --git a/buildroot/package/cryptsetup/cryptsetup.mk b/buildroot/package/cryptsetup/cryptsetup.mk index 0d8480ba488..39c9b7b0bc1 100644 --- a/buildroot/package/cryptsetup/cryptsetup.mk +++ b/buildroot/package/cryptsetup/cryptsetup.mk @@ -5,7 +5,7 @@ ################################################################################ CRYPTSETUP_VERSION_MAJOR = 2.0 -CRYPTSETUP_VERSION = $(CRYPTSETUP_VERSION_MAJOR).0 +CRYPTSETUP_VERSION = $(CRYPTSETUP_VERSION_MAJOR).2 CRYPTSETUP_SOURCE = cryptsetup-$(CRYPTSETUP_VERSION).tar.xz CRYPTSETUP_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/cryptsetup/v$(CRYPTSETUP_VERSION_MAJOR) CRYPTSETUP_DEPENDENCIES = lvm2 popt util-linux host-pkgconf json-c \ diff --git a/buildroot/package/cups-filters/0001-Replace-relative-linking-with-absolute-linking.patch b/buildroot/package/cups-filters/0001-Replace-relative-linking-with-absolute-linking.patch new file mode 100644 index 00000000000..e4b35cda399 --- /dev/null +++ b/buildroot/package/cups-filters/0001-Replace-relative-linking-with-absolute-linking.patch @@ -0,0 +1,46 @@ +From c26b4c3550557442890f2f790d4f8b61a3734c1f Mon Sep 17 00:00:00 2001 +From: Olivier Schonken +Date: Thu, 8 Mar 2018 12:32:23 +0200 +Subject: [PATCH] install: don't use ln -r + +Oldish enterprise-class distributions have too old versions of +coreutils, with ln not supporting -r. + +So we fake it. + +ln -r would create minimalist relative paths, but they are not +trivial to generate. Instead, we always create paths relative to the +root, i.e.: + + ln -s -r /usr/bin/foo /usr/sbin/foo + +would create: /usr/sbin/foo -> ../bin/foo +while we do : /usr/sbin/foo -> ../../usr/bin/foo + +Signed-off-by: Olivier Schonken +--- + Makefile.am | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index d959227..b49914a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -998,11 +998,11 @@ install-exec-hook: + $(INSTALL) -d -m 755 $(DESTDIR)$(pkgfilterdir) + $(INSTALL) -d -m 755 $(DESTDIR)$(pkgbackenddir) + if ENABLE_FOOMATIC +- $(LN_S) -r -f $(DESTDIR)$(pkgfilterdir)/foomatic-rip $(DESTDIR)$(bindir) ++ $(LN_S) -f ../..$(pkgfilterdir)/foomatic-rip $(DESTDIR)$(bindir) + endif + if ENABLE_DRIVERLESS +- $(LN_S) -r -f $(DESTDIR)$(pkgppdgendir)/driverless $(DESTDIR)$(bindir) +- $(LN_S) -r -f $(DESTDIR)$(pkgppdgendir)/driverless $(DESTDIR)$(pkgbackenddir) ++ $(LN_S) -f ../..$(pkgppdgendir)/driverless $(DESTDIR)$(bindir) ++ $(LN_S) -f ../..$(pkgppdgendir)/driverless $(DESTDIR)$(pkgbackenddir) + endif + if ENABLE_BRAILLE + $(LN_S) -f imagetobrf $(DESTDIR)$(pkgfilterdir)/imagetoubrl +-- +2.14.1 + diff --git a/buildroot/package/cups-filters/cups-filters.hash b/buildroot/package/cups-filters/cups-filters.hash index da9d31c9988..7bb00818dfc 100644 --- a/buildroot/package/cups-filters/cups-filters.hash +++ b/buildroot/package/cups-filters/cups-filters.hash @@ -1,2 +1,3 @@ # Locally computed: -sha256 95254d7950df4c74d293ed7dfa0b714f51cff329a82da74a4ac976d342bb35ab cups-filters-1.17.9.tar.gz +sha256 aad95e35033154f54639923b439e0657fc9f616b9eac7490df89514362551f98 cups-filters-1.20.3.tar.gz +sha256 24cc91478ca68d6d982dfd86181210ad5f0931ec431bdb740793e3d6555fdcd8 COPYING diff --git a/buildroot/package/cups-filters/cups-filters.mk b/buildroot/package/cups-filters/cups-filters.mk index 6d05aa7e31a..131e58246e3 100644 --- a/buildroot/package/cups-filters/cups-filters.mk +++ b/buildroot/package/cups-filters/cups-filters.mk @@ -4,7 +4,7 @@ # ################################################################################ -CUPS_FILTERS_VERSION = 1.17.9 +CUPS_FILTERS_VERSION = 1.20.3 CUPS_FILTERS_SITE = http://openprinting.org/download/cups-filters 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 @@ -40,7 +40,8 @@ else CUPS_FILTERS_CONF_OPTS += --disable-dbus endif -ifeq ($(BR2_PACKAGE_AVAHI),y) +# avahi support requires avahi-client, which needs avahi-daemon and dbus +ifeq ($(BR2_PACKAGE_AVAHI_DAEMON)$(BR2_PACKAGE_DBUS),yy) CUPS_FILTERS_DEPENDENCIES += avahi CUPS_FILTERS_CONF_OPTS += --enable-avahi else diff --git a/buildroot/package/cups/0005-Fix-builds-without-PAM-Issue-5283.patch b/buildroot/package/cups/0005-Fix-builds-without-PAM-Issue-5283.patch new file mode 100644 index 00000000000..ff242f82760 --- /dev/null +++ b/buildroot/package/cups/0005-Fix-builds-without-PAM-Issue-5283.patch @@ -0,0 +1,189 @@ +From 570933a6a3597371bae1beeb754ee8711d6305ab Mon Sep 17 00:00:00 2001 +From: Michael R Sweet +Date: Mon, 2 Apr 2018 20:05:13 -0400 +Subject: [PATCH] Fix builds without PAM (Issue #5283) + +[baruch: drop CHANGES.md hunk] +Signed-off-by: Baruch Siach +--- +Upstream status: commit 570933a6a3 + + CHANGES.md | 8 ++- + scheduler/auth.c | 134 ++--------------------------------------------- + 2 files changed, 11 insertions(+), 131 deletions(-) + +diff --git a/scheduler/auth.c b/scheduler/auth.c +index 8b134b5d7257..fa4e2715de34 100644 +--- a/scheduler/auth.c ++++ b/scheduler/auth.c +@@ -1,8 +1,8 @@ + /* + * Authorization routines for the CUPS scheduler. + * +- * Copyright 2007-2016 by Apple Inc. +- * Copyright 1997-2007 by Easy Software Products, all rights reserved. ++ * Copyright ツゥ 2007-2018 by Apple Inc. ++ * Copyright ツゥツ1997-2007 by Easy Software Products, all rights reserved. + * + * This file contains Kerberos support code, copyright 2006 by + * Jelmer Vernooij. +@@ -71,9 +71,6 @@ static int check_authref(cupsd_client_t *con, const char *right); + static int compare_locations(cupsd_location_t *a, + cupsd_location_t *b); + static cupsd_authmask_t *copy_authmask(cupsd_authmask_t *am, void *data); +-#if !HAVE_LIBPAM +-static char *cups_crypt(const char *pw, const char *salt); +-#endif /* !HAVE_LIBPAM */ + static void free_authmask(cupsd_authmask_t *am, void *data); + #if HAVE_LIBPAM + static int pam_func(int, const struct pam_message **, +@@ -694,14 +691,14 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */ + * client... + */ + +- pass = cups_crypt(password, pw->pw_passwd); ++ pass = crypt(password, pw->pw_passwd); + + if (!pass || strcmp(pw->pw_passwd, pass)) + { + # ifdef HAVE_SHADOW_H + if (spw) + { +- pass = cups_crypt(password, spw->sp_pwdp); ++ pass = crypt(password, spw->sp_pwdp); + + if (pass == NULL || strcmp(spw->sp_pwdp, pass)) + { +@@ -1995,129 +1992,6 @@ copy_authmask(cupsd_authmask_t *mask, /* I - Existing auth mask */ + } + + +-#if !HAVE_LIBPAM +-/* +- * 'cups_crypt()' - Encrypt the password using the DES or MD5 algorithms, +- * as needed. +- */ +- +-static char * /* O - Encrypted password */ +-cups_crypt(const char *pw, /* I - Password string */ +- const char *salt) /* I - Salt (key) string */ +-{ +- if (!strncmp(salt, "$1$", 3)) +- { +- /* +- * Use MD5 passwords without the benefit of PAM; this is for +- * Slackware Linux, and the algorithm was taken from the +- * old shadow-19990827/lib/md5crypt.c source code... :( +- */ +- +- int i; /* Looping var */ +- unsigned long n; /* Output number */ +- int pwlen; /* Length of password string */ +- const char *salt_end; /* End of "salt" data for MD5 */ +- char *ptr; /* Pointer into result string */ +- _cups_md5_state_t state; /* Primary MD5 state info */ +- _cups_md5_state_t state2; /* Secondary MD5 state info */ +- unsigned char digest[16]; /* MD5 digest result */ +- static char result[120]; /* Final password string */ +- +- +- /* +- * Get the salt data between dollar signs, e.g. $1$saltdata$md5. +- * Get a maximum of 8 characters of salt data after $1$... +- */ +- +- for (salt_end = salt + 3; *salt_end && (salt_end - salt) < 11; salt_end ++) +- if (*salt_end == '$') +- break; +- +- /* +- * Compute the MD5 sum we need... +- */ +- +- pwlen = strlen(pw); +- +- _cupsMD5Init(&state); +- _cupsMD5Append(&state, (unsigned char *)pw, pwlen); +- _cupsMD5Append(&state, (unsigned char *)salt, salt_end - salt); +- +- _cupsMD5Init(&state2); +- _cupsMD5Append(&state2, (unsigned char *)pw, pwlen); +- _cupsMD5Append(&state2, (unsigned char *)salt + 3, salt_end - salt - 3); +- _cupsMD5Append(&state2, (unsigned char *)pw, pwlen); +- _cupsMD5Finish(&state2, digest); +- +- for (i = pwlen; i > 0; i -= 16) +- _cupsMD5Append(&state, digest, i > 16 ? 16 : i); +- +- for (i = pwlen; i > 0; i >>= 1) +- _cupsMD5Append(&state, (unsigned char *)((i & 1) ? "" : pw), 1); +- +- _cupsMD5Finish(&state, digest); +- +- for (i = 0; i < 1000; i ++) +- { +- _cupsMD5Init(&state); +- +- if (i & 1) +- _cupsMD5Append(&state, (unsigned char *)pw, pwlen); +- else +- _cupsMD5Append(&state, digest, 16); +- +- if (i % 3) +- _cupsMD5Append(&state, (unsigned char *)salt + 3, salt_end - salt - 3); +- +- if (i % 7) +- _cupsMD5Append(&state, (unsigned char *)pw, pwlen); +- +- if (i & 1) +- _cupsMD5Append(&state, digest, 16); +- else +- _cupsMD5Append(&state, (unsigned char *)pw, pwlen); +- +- _cupsMD5Finish(&state, digest); +- } +- +- /* +- * Copy the final sum to the result string and return... +- */ +- +- memcpy(result, salt, (size_t)(salt_end - salt)); +- ptr = result + (salt_end - salt); +- *ptr++ = '$'; +- +- for (i = 0; i < 5; i ++, ptr += 4) +- { +- n = ((((unsigned)digest[i] << 8) | (unsigned)digest[i + 6]) << 8); +- +- if (i < 4) +- n |= (unsigned)digest[i + 12]; +- else +- n |= (unsigned)digest[5]; +- +- to64(ptr, n, 4); +- } +- +- to64(ptr, (unsigned)digest[11], 2); +- ptr += 2; +- *ptr = '\0'; +- +- return (result); +- } +- else +- { +- /* +- * Use the standard crypt() function... +- */ +- +- return (crypt(pw, salt)); +- } +-} +-#endif /* !HAVE_LIBPAM */ +- +- + /* + * 'free_authmask()' - Free function for auth masks. + */ +-- +2.17.0 + diff --git a/buildroot/package/cups/cups.hash b/buildroot/package/cups/cups.hash index d4f20b60dbb..a19b3b09a6d 100644 --- a/buildroot/package/cups/cups.hash +++ b/buildroot/package/cups/cups.hash @@ -1,2 +1,3 @@ # Locally calculated: -sha256 a8795e2aa54dcfbdc9ff254a770f0d7154e35c981bca5b3369050c5193ab5a21 cups-2.2.5-source.tar.gz +sha256 3c4b637b737077565ccdfbd5f61785d03f49461ae736fcc2c0ffaf41d2c6ea6a cups-2.2.7-source.tar.gz +sha256 6e0e0ffbde118aae709f7ef65590de9071e8b2cd322f84fd645c6b64f3cc452c LICENSE.txt diff --git a/buildroot/package/cups/cups.mk b/buildroot/package/cups/cups.mk index 0726d8a37f2..8f33824879e 100644 --- a/buildroot/package/cups/cups.mk +++ b/buildroot/package/cups/cups.mk @@ -4,7 +4,7 @@ # ################################################################################ -CUPS_VERSION = 2.2.5 +CUPS_VERSION = 2.2.7 CUPS_SOURCE = cups-$(CUPS_VERSION)-source.tar.gz CUPS_SITE = https://github.com/apple/cups/releases/download/v$(CUPS_VERSION) CUPS_LICENSE = GPL-2.0, LGPL-2.0 @@ -24,6 +24,7 @@ CUPS_CONF_OPTS = \ --without-java \ --without-php \ --disable-gssapi \ + --disable-pam \ --libdir=/usr/lib CUPS_CONFIG_SCRIPTS = cups-config CUPS_DEPENDENCIES = \ diff --git a/buildroot/package/czmq/Config.in b/buildroot/package/czmq/Config.in index 71389fce514..d4ca46c36c5 100644 --- a/buildroot/package/czmq/Config.in +++ b/buildroot/package/czmq/Config.in @@ -2,13 +2,13 @@ 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 + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # zeromq select BR2_PACKAGE_ZEROMQ help High-level C Binding for 0MQ http://czmq.zeromq.org/ -comment "czmq needs a toolchain w/ C++, threads" +comment "czmq needs a toolchain w/ C++, NPTL" depends on BR2_USE_MMU - depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS_NPTL) diff --git a/buildroot/package/czmq/czmq.hash b/buildroot/package/czmq/czmq.hash index 526ea594b94..c42525c78db 100644 --- a/buildroot/package/czmq/czmq.hash +++ b/buildroot/package/czmq/czmq.hash @@ -1,2 +1,6 @@ +# From https://github.com/zeromq/czmq/releases +md5 6d3a6fdd25c2bb29897c53670dce97bf czmq-4.1.1.tar.gz +sha1 629d34e8b5c1f2dd88689350f71f9917a8d76f23 czmq-4.1.1.tar.gz # Locally calculated -sha256 5c76de41f736f0c059e0b26174ef99200f2aba2fa38333683dbe4944b2f80555 czmq-5205ec201e97c3a652c17eb86b18b70350b54512.tar.gz +sha256 f00ff419881dc2a05d0686c8467cd89b4882677fc56f31c0e2cc81c134cbb0c0 czmq-4.1.1.tar.gz +sha256 1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5 LICENCE diff --git a/buildroot/package/czmq/czmq.mk b/buildroot/package/czmq/czmq.mk index 5305789d7a4..6eb93142000 100644 --- a/buildroot/package/czmq/czmq.mk +++ b/buildroot/package/czmq/czmq.mk @@ -4,10 +4,10 @@ # ################################################################################ -CZMQ_VERSION = 5205ec201e97c3a652c17eb86b18b70350b54512 -CZMQ_SITE = $(call github,zeromq,czmq,$(CZMQ_VERSION)) +CZMQ_VERSION = 4.1.1 +CZMQ_SITE = https://github.com/zeromq/czmq/releases/download/v$(CZMQ_VERSION) -# Autoreconf required as we use the git tree +# 0001-configure.ac-remove-Werror.patch touches configure.ac CZMQ_AUTORECONF = YES CZMQ_INSTALL_STAGING = YES CZMQ_DEPENDENCIES = zeromq host-pkgconf @@ -18,10 +18,4 @@ CZMQ_LICENSE_FILES = LICENSE # host-python, so disable asciidoc entirely. CZMQ_CONF_ENV = ac_cv_prog_czmq_have_asciidoc=no -define CZMQ_CREATE_CONFIG_DIR - mkdir -p $(@D)/config -endef - -CZMQ_POST_PATCH_HOOKS += CZMQ_CREATE_CONFIG_DIR - $(eval $(autotools-package)) diff --git a/buildroot/package/dahdi-linux/dahdi-linux.mk b/buildroot/package/dahdi-linux/dahdi-linux.mk index c042a14e530..6ac1e889435 100644 --- a/buildroot/package/dahdi-linux/dahdi-linux.mk +++ b/buildroot/package/dahdi-linux/dahdi-linux.mk @@ -56,7 +56,7 @@ DAHDI_LINUX_MODULE_MAKE_OPTS = \ define DAHDI_LINUX_EXTRACT_FW $(foreach f,$(DAHDI_LINUX_FW_FILES),\ - cp $(BR2_DL_DIR)/$(f) $(@D)/drivers/dahdi/firmware/$(f)$(sep)) + cp $(DAHDI_LINUX_DL_DIR)/$(f) $(@D)/drivers/dahdi/firmware/$(f)$(sep)) endef DAHDI_LINUX_POST_EXTRACT_HOOKS += DAHDI_LINUX_EXTRACT_FW diff --git a/buildroot/package/dash/dash.mk b/buildroot/package/dash/dash.mk index 2ee292b8d3e..9a26ebb642c 100644 --- a/buildroot/package/dash/dash.mk +++ b/buildroot/package/dash/dash.mk @@ -28,4 +28,12 @@ define DASH_INSTALL_TARGET_CMDS $(INSTALL) -m 0755 $(@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/buildroot/package/dbus/S30dbus b/buildroot/package/dbus/S30dbus index b4bcf9c7aa9..52646cea2f4 100644 --- a/buildroot/package/dbus/S30dbus +++ b/buildroot/package/dbus/S30dbus @@ -10,9 +10,6 @@ # pidfile: /var/run/messagebus.pid # -# Sanity checks. -[ -x /usr/bin/dbus-daemon ] || exit 0 - # Create needed directories. [ -d /var/run/dbus ] || mkdir -p /var/run/dbus [ -d /var/lock/subsys ] || mkdir -p /var/lock/subsys diff --git a/buildroot/package/dbus/dbus.hash b/buildroot/package/dbus/dbus.hash index 1aa5aa445d8..66fce31461b 100644 --- a/buildroot/package/dbus/dbus.hash +++ b/buildroot/package/dbus/dbus.hash @@ -1,5 +1,5 @@ # Locally calculated after checking pgp signature -# https://dbus.freedesktop.org/releases/dbus/dbus-1.12.2.tar.gz.asc -sha256 272bb5091770b047c8188b926d5e6038fa4fe6745488b2add96b23e2d9a83d88 dbus-1.12.2.tar.gz +# https://dbus.freedesktop.org/releases/dbus/dbus-1.12.6.tar.gz.asc +sha256 621b902a07badec16c9e43eda43903cd0e1e69e11b13143da71c1889b062f116 dbus-1.12.6.tar.gz # Locally calculated sha256 0e46f54efb12d04ab5c33713bacd0e140c9a35b57ae29e03c853203266e8f3a1 COPYING diff --git a/buildroot/package/dbus/dbus.mk b/buildroot/package/dbus/dbus.mk index 22ba22e17ef..8771412be4b 100644 --- a/buildroot/package/dbus/dbus.mk +++ b/buildroot/package/dbus/dbus.mk @@ -4,7 +4,7 @@ # ################################################################################ -DBUS_VERSION = 1.12.2 +DBUS_VERSION = 1.12.6 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 diff --git a/buildroot/package/devmem2/devmem2.mk b/buildroot/package/devmem2/devmem2.mk index eb92db60989..044e6fa5967 100644 --- a/buildroot/package/devmem2/devmem2.mk +++ b/buildroot/package/devmem2/devmem2.mk @@ -11,7 +11,7 @@ DEVMEM2_LICENSE = GPL-2.0+ DEVMEM2_LICENSE_FILES = devmem2.c.license define DEVMEM2_EXTRACT_CMDS - cp $(DL_DIR)/$($(PKG)_SOURCE) $(@D)/ + cp $(DEVMEM2_DL_DIR)/$($(PKG)_SOURCE) $(@D)/ endef define DEVMEM2_EXTRACT_LICENSE diff --git a/buildroot/package/dhcpcd/S41dhcpcd b/buildroot/package/dhcpcd/S41dhcpcd index a2e87ca0541..3e5c22f715b 100755 --- a/buildroot/package/dhcpcd/S41dhcpcd +++ b/buildroot/package/dhcpcd/S41dhcpcd @@ -7,7 +7,6 @@ DAEMON=/sbin/dhcpcd CONFIG=/etc/dhcpcd.conf PIDFILE=/var/run/dhcpcd.pid -[ -x $DAEMON ] || exit 0 [ -f $CONFIG ] || exit 0 case "$1" in diff --git a/buildroot/package/dhcpcd/dhcpcd.hash b/buildroot/package/dhcpcd/dhcpcd.hash index 3be3f7ff518..605e87609e4 100644 --- a/buildroot/package/dhcpcd/dhcpcd.hash +++ b/buildroot/package/dhcpcd/dhcpcd.hash @@ -1,2 +1,4 @@ -# Locally calculated from download (no sig, hash) -sha256 6f9674dc7e27e936cc787175404a6171618675ecfb6903ab9887b1b66a87d69e dhcpcd-6.11.5.tar.xz +# sha256 from ftp://roy.marples.name/pub/dhcpcd/dhcpcd-7.0.3.tar.xz.distinfo.asc +sha256 a255d9aecceb1c77a9862f1c0d31a48ba37aab5ef2ca5ad76fc7a907b6ea292e dhcpcd-7.0.3.tar.xz +# Locally calculated +sha256 b120a64b92cfb2453b61df4457a3c0eb163ef9c1c397822826756a31581f3947 LICENSE diff --git a/buildroot/package/dhcpcd/dhcpcd.mk b/buildroot/package/dhcpcd/dhcpcd.mk index dc5c69b86b6..92a78cd7ad9 100644 --- a/buildroot/package/dhcpcd/dhcpcd.mk +++ b/buildroot/package/dhcpcd/dhcpcd.mk @@ -4,12 +4,12 @@ # ################################################################################ -DHCPCD_VERSION = 6.11.5 +DHCPCD_VERSION = 7.0.3 DHCPCD_SOURCE = dhcpcd-$(DHCPCD_VERSION).tar.xz DHCPCD_SITE = http://roy.marples.name/downloads/dhcpcd DHCPCD_DEPENDENCIES = host-pkgconf DHCPCD_LICENSE = BSD-2-Clause -DHCPCD_LICENSE_FILES = dhcpcd.c +DHCPCD_LICENSE_FILES = LICENSE ifeq ($(BR2_STATIC_LIBS),y) DHCPCD_CONFIG_OPTS += --enable-static diff --git a/buildroot/package/dhrystone/dhrystone.mk b/buildroot/package/dhrystone/dhrystone.mk index c0bca9895d3..d54c8d94e8e 100644 --- a/buildroot/package/dhrystone/dhrystone.mk +++ b/buildroot/package/dhrystone/dhrystone.mk @@ -9,7 +9,7 @@ DHRYSTONE_SOURCE = dhry-c DHRYSTONE_SITE = http://www.netlib.org/benchmark define DHRYSTONE_EXTRACT_CMDS - (cd $(@D) && $(SHELL) $(DL_DIR)/$($(PKG)_SOURCE)) + (cd $(@D) && $(SHELL) $(DHRYSTONE_DL_DIR)/$($(PKG)_SOURCE)) $(Q)cp package/dhrystone/Makefile $(@D)/ endef diff --git a/buildroot/package/dmraid/S20dmraid b/buildroot/package/dmraid/S20dmraid index fd2ad9e845f..b3bfdcc84bc 100644 --- a/buildroot/package/dmraid/S20dmraid +++ b/buildroot/package/dmraid/S20dmraid @@ -2,8 +2,6 @@ set -e -[ -x /usr/sbin/dmraid ] || exit 0 - # try to load module in case that hasn't been done yet modprobe dm-mod >/dev/null 2>&1 diff --git a/buildroot/package/dnsmasq/0001-DNSSEC-fix-for-wildcard-NSEC-records.-CVE-2017-15107.patch b/buildroot/package/dnsmasq/0001-DNSSEC-fix-for-wildcard-NSEC-records.-CVE-2017-15107.patch deleted file mode 100644 index 7b834e80e2c..00000000000 --- a/buildroot/package/dnsmasq/0001-DNSSEC-fix-for-wildcard-NSEC-records.-CVE-2017-15107.patch +++ /dev/null @@ -1,212 +0,0 @@ -From 4fe6744a220eddd3f1749b40cac3dfc510787de6 Mon Sep 17 00:00:00 2001 -From: Simon Kelley -Date: Fri, 19 Jan 2018 12:26:08 +0000 -Subject: [PATCH] DNSSEC fix for wildcard NSEC records. CVE-2017-15107 applies. - -It's OK for NSEC records to be expanded from wildcards, -but in that case, the proof of non-existence is only valid -starting at the wildcard name, *. NOT the name expanded -from the wildcard. Without this check it's possible for an -attacker to craft an NSEC which wrongly proves non-existence -in a domain which includes a wildcard for NSEC. - -[baruch: drop the CHANGELOG hunk] -Signed-off-by: Baruch Siach ---- -Upstream status: upstream commit 4fe6744a220e - - CHANGELOG | 12 +++++- - src/dnssec.c | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++------- - 2 files changed, 114 insertions(+), 15 deletions(-) - -diff --git a/src/dnssec.c b/src/dnssec.c -index eb6c11cbe00f..a54a0b4f14cf 100644 ---- a/src/dnssec.c -+++ b/src/dnssec.c -@@ -103,15 +103,17 @@ static void from_wire(char *name) - static int count_labels(char *name) - { - int i; -- -+ char *p; -+ - if (*name == 0) - return 0; - -- for (i = 0; *name; name++) -- if (*name == '.') -+ for (p = name, i = 0; *p; p++) -+ if (*p == '.') - i++; - -- return i+1; -+ /* Don't count empty first label. */ -+ return *name == '.' ? i : i+1; - } - - /* Implement RFC1982 wrapped compare for 32-bit numbers */ -@@ -1094,8 +1096,8 @@ static int hostname_cmp(const char *a, const char *b) - } - } - --static int prove_non_existence_nsec(struct dns_header *header, size_t plen, unsigned char **nsecs, int nsec_count, -- char *workspace1, char *workspace2, char *name, int type, int *nons) -+static int prove_non_existence_nsec(struct dns_header *header, size_t plen, unsigned char **nsecs, unsigned char **labels, int nsec_count, -+ char *workspace1_in, char *workspace2, char *name, int type, int *nons) - { - int i, rc, rdlen; - unsigned char *p, *psave; -@@ -1108,6 +1110,9 @@ static int prove_non_existence_nsec(struct dns_header *header, size_t plen, unsi - /* Find NSEC record that proves name doesn't exist */ - for (i = 0; i < nsec_count; i++) - { -+ char *workspace1 = workspace1_in; -+ int sig_labels, name_labels; -+ - p = nsecs[i]; - if (!extract_name(header, plen, &p, workspace1, 1, 10)) - return 0; -@@ -1116,7 +1121,27 @@ static int prove_non_existence_nsec(struct dns_header *header, size_t plen, unsi - psave = p; - if (!extract_name(header, plen, &p, workspace2, 1, 10)) - return 0; -- -+ -+ /* If NSEC comes from wildcard expansion, use original wildcard -+ as name for computation. */ -+ sig_labels = *labels[i]; -+ name_labels = count_labels(workspace1); -+ -+ if (sig_labels < name_labels) -+ { -+ int k; -+ for (k = name_labels - sig_labels; k != 0; k--) -+ { -+ while (*workspace1 != '.' && *workspace1 != 0) -+ workspace1++; -+ if (k != 1 && *workspace1 == '.') -+ workspace1++; -+ } -+ -+ workspace1--; -+ *workspace1 = '*'; -+ } -+ - rc = hostname_cmp(workspace1, name); - - if (rc == 0) -@@ -1514,24 +1539,26 @@ static int prove_non_existence_nsec3(struct dns_header *header, size_t plen, uns - - static int prove_non_existence(struct dns_header *header, size_t plen, char *keyname, char *name, int qtype, int qclass, char *wildname, int *nons) - { -- static unsigned char **nsecset = NULL; -- static int nsecset_sz = 0; -+ static unsigned char **nsecset = NULL, **rrsig_labels = NULL; -+ static int nsecset_sz = 0, rrsig_labels_sz = 0; - - int type_found = 0; -- unsigned char *p = skip_questions(header, plen); -+ unsigned char *auth_start, *p = skip_questions(header, plen); - int type, class, rdlen, i, nsecs_found; - - /* Move to NS section */ - if (!p || !(p = skip_section(p, ntohs(header->ancount), header, plen))) - return 0; -+ -+ auth_start = p; - - for (nsecs_found = 0, i = ntohs(header->nscount); i != 0; i--) - { - unsigned char *pstart = p; - -- if (!(p = skip_name(p, header, plen, 10))) -+ if (!extract_name(header, plen, &p, daemon->workspacename, 1, 10)) - return 0; -- -+ - GETSHORT(type, p); - GETSHORT(class, p); - p += 4; /* TTL */ -@@ -1548,7 +1575,69 @@ static int prove_non_existence(struct dns_header *header, size_t plen, char *key - if (!expand_workspace(&nsecset, &nsecset_sz, nsecs_found)) - return 0; - -- nsecset[nsecs_found++] = pstart; -+ if (type == T_NSEC) -+ { -+ /* If we're looking for NSECs, find the corresponding SIGs, to -+ extract the labels value, which we need in case the NSECs -+ are the result of wildcard expansion. -+ Note that the NSEC may not have been validated yet -+ so if there are multiple SIGs, make sure the label value -+ is the same in all, to avoid be duped by a rogue one. -+ If there are no SIGs, that's an error */ -+ unsigned char *p1 = auth_start; -+ int res, j, rdlen1, type1, class1; -+ -+ if (!expand_workspace(&rrsig_labels, &rrsig_labels_sz, nsecs_found)) -+ return 0; -+ -+ rrsig_labels[nsecs_found] = NULL; -+ -+ for (j = ntohs(header->nscount); j != 0; j--) -+ { -+ if (!(res = extract_name(header, plen, &p1, daemon->workspacename, 0, 10))) -+ return 0; -+ -+ GETSHORT(type1, p1); -+ GETSHORT(class1, p1); -+ p1 += 4; /* TTL */ -+ GETSHORT(rdlen1, p1); -+ -+ if (!CHECK_LEN(header, p1, plen, rdlen1)) -+ return 0; -+ -+ if (res == 1 && class1 == qclass && type1 == T_RRSIG) -+ { -+ int type_covered; -+ unsigned char *psav = p1; -+ -+ if (rdlen < 18) -+ return 0; /* bad packet */ -+ -+ GETSHORT(type_covered, p1); -+ -+ if (type_covered == T_NSEC) -+ { -+ p1++; /* algo */ -+ -+ /* labels field must be the same in every SIG we find. */ -+ if (!rrsig_labels[nsecs_found]) -+ rrsig_labels[nsecs_found] = p1; -+ else if (*rrsig_labels[nsecs_found] != *p1) /* algo */ -+ return 0; -+ } -+ p1 = psav; -+ } -+ -+ if (!ADD_RDLEN(header, p1, plen, rdlen1)) -+ return 0; -+ } -+ -+ /* Must have found at least one sig. */ -+ if (!rrsig_labels[nsecs_found]) -+ return 0; -+ } -+ -+ nsecset[nsecs_found++] = pstart; - } - - if (!ADD_RDLEN(header, p, plen, rdlen)) -@@ -1556,7 +1645,7 @@ static int prove_non_existence(struct dns_header *header, size_t plen, char *key - } - - if (type_found == T_NSEC) -- return prove_non_existence_nsec(header, plen, nsecset, nsecs_found, daemon->workspacename, keyname, name, qtype, nons); -+ return prove_non_existence_nsec(header, plen, nsecset, rrsig_labels, nsecs_found, daemon->workspacename, keyname, name, qtype, nons); - else if (type_found == T_NSEC3) - return prove_non_existence_nsec3(header, plen, nsecset, nsecs_found, daemon->workspacename, keyname, name, qtype, wildname, nons); - else --- -2.15.1 - diff --git a/buildroot/package/dnsmasq/0002-Fix-DNSSEC-validation-errors-introduced-in-4fe6744a2.patch b/buildroot/package/dnsmasq/0002-Fix-DNSSEC-validation-errors-introduced-in-4fe6744a2.patch deleted file mode 100644 index ef28b90c58a..00000000000 --- a/buildroot/package/dnsmasq/0002-Fix-DNSSEC-validation-errors-introduced-in-4fe6744a2.patch +++ /dev/null @@ -1,29 +0,0 @@ -From cd7df612b14ec1bf831a966ccaf076be0dae7404 Mon Sep 17 00:00:00 2001 -From: Simon Kelley -Date: Sat, 20 Jan 2018 00:10:55 +0000 -Subject: [PATCH] Fix DNSSEC validation errors introduced in - 4fe6744a220eddd3f1749b40cac3dfc510787de6 - -Signed-off-by: Baruch Siach ---- -Upstream status: upstream commit cd7df612b14ec - - src/dnssec.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/dnssec.c b/src/dnssec.c -index a54a0b4f14cf..c47e33569f96 100644 ---- a/src/dnssec.c -+++ b/src/dnssec.c -@@ -1610,7 +1610,7 @@ static int prove_non_existence(struct dns_header *header, size_t plen, char *key - int type_covered; - unsigned char *psav = p1; - -- if (rdlen < 18) -+ if (rdlen1 < 18) - return 0; /* bad packet */ - - GETSHORT(type_covered, p1); --- -2.15.1 - diff --git a/buildroot/package/dnsmasq/S80dnsmasq b/buildroot/package/dnsmasq/S80dnsmasq index d2f8b0f6b4d..b052259e87f 100755 --- a/buildroot/package/dnsmasq/S80dnsmasq +++ b/buildroot/package/dnsmasq/S80dnsmasq @@ -1,6 +1,5 @@ #!/bin/sh -[ -x /usr/sbin/dnsmasq ] || exit 0 [ -f /etc/dnsmasq.conf ] || exit 0 case "$1" in diff --git a/buildroot/package/dnsmasq/dnsmasq.hash b/buildroot/package/dnsmasq/dnsmasq.hash index 28e2e658e27..322f8df5cc5 100644 --- a/buildroot/package/dnsmasq/dnsmasq.hash +++ b/buildroot/package/dnsmasq/dnsmasq.hash @@ -1,6 +1,6 @@ # Locally calculated after checking pgp signature -# http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.78.tar.xz.asc -sha256 89949f438c74b0c7543f06689c319484bd126cc4b1f8c745c742ab397681252b dnsmasq-2.78.tar.xz +# http://www.thekelleys.org.uk/dnsmasq/dnsmasq-2.79.tar.xz.asc +sha256 78ad74f5ca14fd85a8bac93f764cd9d60b27579e90eabd3687ca7b030e67861f dnsmasq-2.79.tar.xz # Locally calculated sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING-v3 diff --git a/buildroot/package/dnsmasq/dnsmasq.mk b/buildroot/package/dnsmasq/dnsmasq.mk index 9f96030eb62..f519835828b 100644 --- a/buildroot/package/dnsmasq/dnsmasq.mk +++ b/buildroot/package/dnsmasq/dnsmasq.mk @@ -4,7 +4,7 @@ # ################################################################################ -DNSMASQ_VERSION = 2.78 +DNSMASQ_VERSION = 2.79 DNSMASQ_SOURCE = dnsmasq-$(DNSMASQ_VERSION).tar.xz DNSMASQ_SITE = http://thekelleys.org.uk/dnsmasq DNSMASQ_MAKE_ENV = $(TARGET_MAKE_ENV) CC="$(TARGET_CC)" diff --git a/buildroot/package/docker-compose/Config.in b/buildroot/package/docker-compose/Config.in new file mode 100644 index 00000000000..393b5f1a0df --- /dev/null +++ b/buildroot/package/docker-compose/Config.in @@ -0,0 +1,29 @@ +config BR2_PACKAGE_DOCKER_COMPOSE + bool "docker-compose" + depends on BR2_USE_MMU # python + depends on BR2_USE_WCHAR # python + depends on BR2_TOOLCHAIN_HAS_THREADS # python + depends on !BR2_STATIC_LIBS # python + select BR2_PACKAGE_PYTHON3 if !BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME \ + if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_ENUM34 if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_IPADDRESS if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_CACHED_PROPERTY # runtime + select BR2_PACKAGE_PYTHON_DOCOPT # runtime + select BR2_PACKAGE_PYTHON_PYYAML # runtime + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + select BR2_PACKAGE_PYTHON_TEXTTABLE # runtime + select BR2_PACKAGE_PYTHON_WEBSOCKET_CLIENT # runtime + select BR2_PACKAGE_PYTHON_DOCKER # runtime + select BR2_PACKAGE_PYTHON_DOCKERPTY # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_JSONSCHEMA # runtime + help + Multi-container orchestration for Docker. + + https://www.docker.com/ + +comment "docker-compose 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/buildroot/package/docker-compose/docker-compose.hash b/buildroot/package/docker-compose/docker-compose.hash new file mode 100644 index 00000000000..5a5e86abe8f --- /dev/null +++ b/buildroot/package/docker-compose/docker-compose.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/docker-compose/json, sha256 locally computed +md5 8f9f6d59cc8e65dbfad6fda26b96fde7 docker-compose-1.20.1.tar.gz +sha256 34c043ebd4c23e4b864812c16b41dad25cec6b675557b180ced52d372e1a9e66 docker-compose-1.20.1.tar.gz +sha256 552a739c3b25792263f731542238b92f6f8d07e9a488eae27e6c4690038a8243 LICENSE diff --git a/buildroot/package/docker-compose/docker-compose.mk b/buildroot/package/docker-compose/docker-compose.mk new file mode 100644 index 00000000000..52c16dbc79d --- /dev/null +++ b/buildroot/package/docker-compose/docker-compose.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# docker-compose +# +################################################################################ + +DOCKER_COMPOSE_VERSION = 1.20.1 +DOCKER_COMPOSE_SITE = https://pypi.python.org/packages/25/4f/4e2b8ff942c9b3d96a81082590617c5c5fa006b066a4181b8d985ea3ac79 +DOCKER_COMPOSE_SETUP_TYPE = setuptools +DOCKER_COMPOSE_LICENSE = Apache-2.0 +DOCKER_COMPOSE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/docker-containerd/Config.in b/buildroot/package/docker-containerd/Config.in index 851345f73e3..2f7bf71af19 100644 --- a/buildroot/package/docker-containerd/Config.in +++ b/buildroot/package/docker-containerd/Config.in @@ -15,18 +15,6 @@ config BR2_PACKAGE_DOCKER_CONTAINERD https://github.com/docker/containerd -if BR2_PACKAGE_DOCKER_CONTAINERD - -config BR2_PACKAGE_DOCKER_CONTAINERD_DRIVER_BTRFS - bool "btrfs snapshot driver" - depends on BR2_USE_MMU # btrfs-progs - depends on BR2_TOOLCHAIN_HAS_THREADS # btrfs-progs - select BR2_PACKAGE_BTRFS_PROGS - help - Build the btrfs snapshot driver for containerd. - -endif - comment "docker-containerd needs a toolchain w/ threads" depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS diff --git a/buildroot/package/docker-containerd/docker-containerd.hash b/buildroot/package/docker-containerd/docker-containerd.hash index bc67fe50dc9..257c607841d 100644 --- a/buildroot/package/docker-containerd/docker-containerd.hash +++ b/buildroot/package/docker-containerd/docker-containerd.hash @@ -1,2 +1,2 @@ # Computed locally -sha256 a31a12846a7a2f697f8fdd82cedd1626fc5f6345e59ae880664196c73e4c2226 docker-containerd-v1.0.2.tar.gz +sha256 08f057ece7e518b14cce2e9737228a5a899a7b58b78248a03e02f4a6c079eeaf docker-containerd-v1.1.0.tar.gz diff --git a/buildroot/package/docker-containerd/docker-containerd.mk b/buildroot/package/docker-containerd/docker-containerd.mk index 9be658dc0aa..49c3d8ec0da 100644 --- a/buildroot/package/docker-containerd/docker-containerd.mk +++ b/buildroot/package/docker-containerd/docker-containerd.mk @@ -4,65 +4,22 @@ # ################################################################################ -DOCKER_CONTAINERD_VERSION = v1.0.2 -DOCKER_CONTAINERD_COMMIT = cfd04396dc68220d1cecbe686a6cc3aa5ce3667c +DOCKER_CONTAINERD_VERSION = v1.1.0 DOCKER_CONTAINERD_SITE = $(call github,containerd,containerd,$(DOCKER_CONTAINERD_VERSION)) DOCKER_CONTAINERD_LICENSE = Apache-2.0 DOCKER_CONTAINERD_LICENSE_FILES = LICENSE.code -DOCKER_CONTAINERD_DEPENDENCIES = host-go +DOCKER_CONTAINERD_BUILD_TARGETS = cmd/ctr cmd/containerd cmd/containerd-shim +DOCKER_CONTAINERD_TAGS = apparmor no_btrfs -DOCKER_CONTAINERD_GOPATH = "$(@D)/gopath" -DOCKER_CONTAINERD_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ - CGO_ENABLED=1 \ - GOBIN="$(@D)/bin" \ - GOPATH="$(DOCKER_CONTAINERD_GOPATH)" +DOCKER_CONTAINERD_INSTALL_BINS = containerd containerd-shim -DOCKER_CONTAINERD_BUILD_TAGS = apparmor -DOCKER_CONTAINERD_GLDFLAGS = \ - -X github.com/containerd/containerd.GitCommit=$(DOCKER_CONTAINERD_COMMIT) - -ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) -DOCKER_CONTAINERD_BUILD_TAGS += seccomp -DOCKER_CONTAINERD_DEPENDENCIES += libseccomp -endif - -ifeq ($(BR2_PACKAGE_DOCKER_CONTAINERD_DRIVER_BTRFS),y) -DOCKER_CONTAINERD_DEPENDENCIES += btrfs-progs -else -DOCKER_CONTAINERD_BUILD_TAGS += no_btrfs -endif - -ifeq ($(BR2_STATIC_LIBS),y) -DOCKER_CONTAINERD_GLDFLAGS += -extldflags '-static -fno-PIC' -DOCKER_CONTAINERD_BUILD_TAGS += static_build -DOCKER_CONTAINERD_BUILD_FLAGS += -buildmode pie -endif - -define DOCKER_CONTAINERD_CONFIGURE_CMDS - mkdir -p $(DOCKER_CONTAINERD_GOPATH)/src/github.com/containerd - ln -s $(@D) $(DOCKER_CONTAINERD_GOPATH)/src/github.com/containerd/containerd - mkdir -p $(DOCKER_CONTAINERD_GOPATH)/src/github.com/opencontainers - ln -s $(RUNC_SRCDIR) $(DOCKER_CONTAINERD_GOPATH)/src/github.com/opencontainers/runc -endef - -define DOCKER_CONTAINERD_BUILD_CMDS - $(foreach d,ctr containerd containerd-shim,\ - cd $(DOCKER_CONTAINERD_GOPATH)/src/github.com/containerd/containerd; \ - $(DOCKER_CONTAINERD_MAKE_ENV) $(HOST_DIR)/bin/go build \ - -v -i -o $(@D)/bin/$(d) \ - -tags "$(DOCKER_CONTAINERD_BUILD_TAGS)" \ - -ldflags "$(DOCKER_CONTAINERD_GLDFLAGS)" \ - $(DOCKER_CONTAINERD_BUILD_FLAGS) \ - ./cmd/$(d)$(sep) - ) -endef - -define DOCKER_CONTAINERD_INSTALL_TARGET_CMDS +define DOCKER_CONTAINERD_INSTALL_SYMLINKS ln -fs runc $(TARGET_DIR)/usr/bin/docker-runc - $(INSTALL) -D -m 0755 $(@D)/bin/containerd $(TARGET_DIR)/usr/bin/docker-containerd - $(INSTALL) -D -m 0755 $(@D)/bin/containerd-shim $(TARGET_DIR)/usr/bin/containerd-shim + ln -fs containerd $(TARGET_DIR)/usr/bin/docker-containerd ln -fs containerd-shim $(TARGET_DIR)/usr/bin/docker-containerd-shim endef -$(eval $(generic-package)) +DOCKER_CONTAINERD_POST_INSTALL_TARGET_HOOKS += DOCKER_CONTAINERD_INSTALL_SYMLINKS + +$(eval $(golang-package)) diff --git a/buildroot/package/docker-engine/Config.in b/buildroot/package/docker-engine/Config.in index 7d9a87f7bba..8feb11b48c0 100644 --- a/buildroot/package/docker-engine/Config.in +++ b/buildroot/package/docker-engine/Config.in @@ -16,6 +16,7 @@ config BR2_PACKAGE_DOCKER_ENGINE_DAEMON default y depends on BR2_USE_MMU # docker-containerd select BR2_PACKAGE_DOCKER_CONTAINERD # runtime dependency + select BR2_PACKAGE_DOCKER_PROXY # runtime dependency select BR2_PACKAGE_IPTABLES # runtime dependency select BR2_PACKAGE_SQLITE # runtime dependency help @@ -33,32 +34,6 @@ config BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT if BR2_PACKAGE_DOCKER_ENGINE_DAEMON -choice - bool "docker-init to use" - default BR2_PACKAGE_DOCKER_ENGINE_INIT_TINI - help - The docker engine uses a minimal init process as PID 1 - inside containers. There are several implementations - of this init process. - -config BR2_PACKAGE_DOCKER_ENGINE_INIT_TINI - bool "tini" - select BR2_PACKAGE_TINI - help - Use Tini as the container init process. - - https://github.com/krallin/tini - -config BR2_PACKAGE_DOCKER_ENGINE_INIT_DUMB_INIT - bool "dumb-init" - select BR2_PACKAGE_DUMB_INIT - help - Use dumb-init as the container init process. - - https://github.com/Yelp/dumb-init - -endchoice - config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS bool "btrfs filesystem driver" depends on BR2_USE_MMU # btrfs-progs diff --git a/buildroot/package/docker-engine/docker-engine.hash b/buildroot/package/docker-engine/docker-engine.hash index 16c994736df..19c6c73122e 100644 --- a/buildroot/package/docker-engine/docker-engine.hash +++ b/buildroot/package/docker-engine/docker-engine.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 e4b58c26c05a800d96d3e5d76375654751d4d1367b5727c798369cf3c78a590e docker-engine-v17.12.1-ce.tar.gz +sha256 b05f3709844c45d49922914cf6eb71d4131d0bd5389361376ff6a86aa186f4a0 docker-engine-v18.03.1-ce.tar.gz diff --git a/buildroot/package/docker-engine/docker-engine.mk b/buildroot/package/docker-engine/docker-engine.mk index d500e71b3d1..12c8ad5a61e 100644 --- a/buildroot/package/docker-engine/docker-engine.mk +++ b/buildroot/package/docker-engine/docker-engine.mk @@ -4,7 +4,7 @@ # ################################################################################ -DOCKER_ENGINE_VERSION = v17.12.1-ce +DOCKER_ENGINE_VERSION = v18.03.1-ce DOCKER_ENGINE_SITE = $(call github,docker,docker-ce,$(DOCKER_ENGINE_VERSION)) DOCKER_ENGINE_LICENSE = Apache-2.0 @@ -12,84 +12,59 @@ DOCKER_ENGINE_LICENSE_FILES = LICENSE DOCKER_ENGINE_DEPENDENCIES = host-go host-pkgconf -DOCKER_ENGINE_GOPATH = "$(@D)/gopath" -DOCKER_ENGINE_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ - CGO_ENABLED=1 \ - CGO_NO_EMULATION=1 \ - GOBIN="$(@D)/bin" \ - GOPATH="$(DOCKER_ENGINE_GOPATH)" \ - PKG_CONFIG="$(PKG_CONFIG)" \ - $(TARGET_MAKE_ENV) - -DOCKER_ENGINE_GLDFLAGS = \ +DOCKER_ENGINE_LDFLAGS = \ -X main.GitCommit=$(DOCKER_ENGINE_VERSION) \ -X main.Version=$(DOCKER_ENGINE_VERSION) \ -X github.com/docker/cli/cli.GitCommit=$(DOCKER_ENGINE_VERSION) \ -X github.com/docker/cli/cli.Version=$(DOCKER_ENGINE_VERSION) -DOCKER_ENGINE_BUILD_TAGS = cgo exclude_graphdriver_zfs autogen apparmor -DOCKER_ENGINE_BUILD_TARGETS = cli:docker -DOCKER_ENGINE_BUILD_TARGET_PARSE = \ - export targetpkg=$$(echo $(target) | cut -d: -f1); \ - export targetbin=$$(echo $(target) | cut -d: -f2) - -ifeq ($(BR2_STATIC_LIBS),y) -DOCKER_ENGINE_GLDFLAGS += -extldflags '-static' -DOCKER_ENGINE_BUILD_TAGS += static_build -else ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT),y) -DOCKER_ENGINE_GLDFLAGS_DOCKER += -extldflags '-static' -endif +DOCKER_ENGINE_LDFLAGS += -extldflags '-static' endif +DOCKER_ENGINE_TAGS = cgo exclude_graphdriver_zfs autogen apparmor +DOCKER_ENGINE_BUILD_TARGETS = docker + ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) -DOCKER_ENGINE_BUILD_TAGS += seccomp +DOCKER_ENGINE_TAGS += seccomp DOCKER_ENGINE_DEPENDENCIES += libseccomp endif ifeq ($(BR2_INIT_SYSTEMD),y) +DOCKER_ENGINE_TAGS += journald DOCKER_ENGINE_DEPENDENCIES += systemd -DOCKER_ENGINE_BUILD_TAGS += systemd journald endif ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y) -DOCKER_ENGINE_BUILD_TAGS += daemon -DOCKER_ENGINE_BUILD_TARGETS += docker:dockerd - -ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_INIT_DUMB_INIT),y) -DOCKER_ENGINE_INIT = dumb-init -else -DOCKER_ENGINE_INIT = tini -endif - +DOCKER_ENGINE_TAGS += daemon +DOCKER_ENGINE_BUILD_TARGETS += dockerd endif ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_EXPERIMENTAL),y) -DOCKER_ENGINE_BUILD_TAGS += experimental +DOCKER_ENGINE_TAGS += experimental endif ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_BTRFS),y) DOCKER_ENGINE_DEPENDENCIES += btrfs-progs else -DOCKER_ENGINE_BUILD_TAGS += exclude_graphdriver_btrfs +DOCKER_ENGINE_TAGS += exclude_graphdriver_btrfs endif ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_DEVICEMAPPER),y) DOCKER_ENGINE_DEPENDENCIES += lvm2 else -DOCKER_ENGINE_BUILD_TAGS += exclude_graphdriver_devicemapper +DOCKER_ENGINE_TAGS += exclude_graphdriver_devicemapper endif ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DRIVER_VFS),y) DOCKER_ENGINE_DEPENDENCIES += gvfs else -DOCKER_ENGINE_BUILD_TAGS += exclude_graphdriver_vfs +DOCKER_ENGINE_TAGS += exclude_graphdriver_vfs endif -define DOCKER_ENGINE_CONFIGURE_CMDS - mkdir -p $(DOCKER_ENGINE_GOPATH)/src/github.com/docker - ln -fs $(@D)/components/engine $(DOCKER_ENGINE_GOPATH)/src/github.com/docker/docker - ln -fs $(@D)/components/cli $(DOCKER_ENGINE_GOPATH)/src/github.com/docker/cli +define DOCKER_ENGINE_RUN_AUTOGEN + ln -fs $(@D)/components/engine $(@D)/_gopath/src/github.com/docker/docker + ln -fs $(@D)/components/cli $(@D)/_gopath/src/github.com/docker/cli cd $(@D)/components/engine && \ BUILDTIME="$$(date)" \ IAMSTATIC="true" \ @@ -98,6 +73,9 @@ define DOCKER_ENGINE_CONFIGURE_CMDS bash ./hack/make/.go-autogen endef +DOCKER_ENGINE_POST_CONFIGURE_HOOKS += DOCKER_ENGINE_RUN_AUTOGEN +DOCKER_ENGINE_INSTALL_BINS = $(notdir $(DOCKER_ENGINE_BUILD_TARGETS)) + ifeq ($(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y) define DOCKER_ENGINE_INSTALL_INIT_SYSTEMD @@ -118,26 +96,20 @@ endif define DOCKER_ENGINE_BUILD_CMDS $(foreach target,$(DOCKER_ENGINE_BUILD_TARGETS), \ - $(DOCKER_ENGINE_BUILD_TARGET_PARSE); \ - cd $(@D)/gopath/src/github.com/docker/$${targetpkg}; \ - $(DOCKER_ENGINE_MAKE_ENV) \ - $(HOST_DIR)/bin/go build -v \ - -o $(@D)/bin/$${targetbin} \ - -tags "$(DOCKER_ENGINE_BUILD_TAGS)" \ - -ldflags "$(DOCKER_ENGINE_GLDFLAGS)" \ - ./cmd/$${targetbin} + cd $(@D)/$(DOCKER_ENGINE_WORKSPACE)/src/github.com/docker/$(if $(filter $(target),dockerd),docker,cli); \ + $(GO_TARGET_ENV) \ + GOPATH="$(@D)/$(DOCKER_ENGINE_WORKSPACE)" \ + $(DOCKER_ENGINE_GO_ENV) \ + $(GO_BIN) build -v $(DOCKER_ENGINE_BUILD_OPTS) \ + -o $(@D)/bin/$(target) \ + ./cmd/$(target) ) endef -define DOCKER_ENGINE_INSTALL_TARGET_CMDS - $(foreach target,$(DOCKER_ENGINE_BUILD_TARGETS), \ - $(DOCKER_ENGINE_BUILD_TARGET_PARSE); \ - $(INSTALL) -D -m 0755 $(@D)/bin/$${targetbin} $(TARGET_DIR)/usr/bin/$${targetbin} - ) - - $(if $(filter $(BR2_PACKAGE_DOCKER_ENGINE_DAEMON),y), \ - ln -fs $(DOCKER_ENGINE_INIT) $(TARGET_DIR)/usr/bin/docker-init - ) +define DOCKER_ENGINE_INSTALL_SYMLINKS + ln -fs tini $(TARGET_DIR)/usr/bin/docker-init endef -$(eval $(generic-package)) +DOCKER_ENGINE_POST_INSTALL_TARGET_HOOKS += DOCKER_ENGINE_INSTALL_SYMLINKS + +$(eval $(golang-package)) diff --git a/buildroot/package/docker-proxy/Config.in b/buildroot/package/docker-proxy/Config.in new file mode 100644 index 00000000000..596e18a3f32 --- /dev/null +++ b/buildroot/package/docker-proxy/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_DOCKER_PROXY + bool "docker-proxy" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + help + Libnetwork is a Container Network Model that provides a + consistent programming interface and the required network + abstractions for applications. + + This package provides docker-proxy, a run-time dependency of + Docker. + + https://github.com/docker/libnetwork + +comment "docker-proxy needs a toolchain w/ threads" + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/docker-proxy/docker-proxy.hash b/buildroot/package/docker-proxy/docker-proxy.hash new file mode 100644 index 00000000000..9a9ec8bc3f2 --- /dev/null +++ b/buildroot/package/docker-proxy/docker-proxy.hash @@ -0,0 +1,2 @@ +# Locally calculated +sha256 45db634cbcbc68377129008b71160a0074e30da453e9ab5afebcbaec4d2a4733 docker-proxy-8436c5cdbc627b9c51f9a02742c5a3955b19c5e1.tar.gz diff --git a/buildroot/package/docker-proxy/docker-proxy.mk b/buildroot/package/docker-proxy/docker-proxy.mk new file mode 100644 index 00000000000..fc68ac76572 --- /dev/null +++ b/buildroot/package/docker-proxy/docker-proxy.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# docker-proxy +# +################################################################################ + +DOCKER_PROXY_VERSION = 8436c5cdbc627b9c51f9a02742c5a3955b19c5e1 +DOCKER_PROXY_SITE = $(call github,docker,libnetwork,$(DOCKER_PROXY_VERSION)) + +DOCKER_PROXY_LICENSE = Apache-2.0 +DOCKER_PROXY_LICENSE_FILES = LICENSE + +DOCKER_PROXY_DEPENDENCIES = host-pkgconf + +DOCKER_PROXY_BUILD_TARGETS = cmd/proxy + +define DOCKER_PROXY_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/bin/proxy $(TARGET_DIR)/usr/bin/docker-proxy +endef + +$(eval $(golang-package)) diff --git a/buildroot/package/doom-wad/doom-wad.mk b/buildroot/package/doom-wad/doom-wad.mk index d3ac731bd5d..f348fc2207e 100644 --- a/buildroot/package/doom-wad/doom-wad.mk +++ b/buildroot/package/doom-wad/doom-wad.mk @@ -11,7 +11,7 @@ DOOM_WAD_SOURCE = doom$(subst .,,$(DOOM_WAD_VERSION))s.zip DOOM_WAD_SITE = http://www.jbserver.com/downloads/games/doom/misc/shareware define DOOM_WAD_EXTRACT_CMDS - $(UNZIP) -p $(DL_DIR)/$($(PKG)_SOURCE) 'DOOMS_19.[12]' > \ + $(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 diff --git a/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.hash b/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.hash index a2b7eba9de7..29504761029 100644 --- a/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.hash +++ b/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.hash @@ -1,3 +1,3 @@ # Locally computed after checking signature -sha256 4ae09cb788c5334d167f5a89ee70b0616c3231e5904ad258ce408e4953cfdd6a dovecot-2.2-pigeonhole-0.4.21.tar.gz +sha256 e3b0aa59261881bcb0d33a6c398f3cb5f9f75e077e67bae175cf33c362577547 dovecot-2.3-pigeonhole-0.5.1.tar.gz sha256 fc9e9522216f2a9a28b31300e3c73c1df56acc27dfae951bf516e7995366b51a COPYING diff --git a/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.mk b/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.mk index ea8b0077f03..f70ae5c02dd 100644 --- a/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.mk +++ b/buildroot/package/dovecot-pigeonhole/dovecot-pigeonhole.mk @@ -4,9 +4,9 @@ # ################################################################################ -DOVECOT_PIGEONHOLE_VERSION = 0.4.21 -DOVECOT_PIGEONHOLE_SOURCE = dovecot-2.2-pigeonhole-$(DOVECOT_PIGEONHOLE_VERSION).tar.gz -DOVECOT_PIGEONHOLE_SITE = http://pigeonhole.dovecot.org/releases/2.2 +DOVECOT_PIGEONHOLE_VERSION = 0.5.1 +DOVECOT_PIGEONHOLE_SOURCE = dovecot-2.3-pigeonhole-$(DOVECOT_PIGEONHOLE_VERSION).tar.gz +DOVECOT_PIGEONHOLE_SITE = http://pigeonhole.dovecot.org/releases/2.3 DOVECOT_PIGEONHOLE_LICENSE = LGPL-2.1 DOVECOT_PIGEONHOLE_LICENSE_FILES = COPYING DOVECOT_PIGEONHOLE_DEPENDENCIES = dovecot diff --git a/buildroot/package/dovecot/dovecot.hash b/buildroot/package/dovecot/dovecot.hash index fef0746089f..cd2a0809fe1 100644 --- a/buildroot/package/dovecot/dovecot.hash +++ b/buildroot/package/dovecot/dovecot.hash @@ -1,5 +1,5 @@ # Locally computed after checking signature -sha256 5e92a4325409e66b343f6aaa67174b8921ce83d0df792c6eeb0b7b7e2c808353 dovecot-2.2.34.tar.gz +sha256 0883821b97fd02a084a84b9469a681f7e6edc56541d854b5419d98891c51fb93 dovecot-2.3.1.tar.gz sha256 a363b132e494f662d98c820d1481297e6ae72f194c2c91b6c39e1518b86240a8 COPYING sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL sha256 52b8c95fabb19575281874b661ef7968ea47e8f5d74ba0dd40ce512e52b3fc97 COPYING.MIT diff --git a/buildroot/package/dovecot/dovecot.mk b/buildroot/package/dovecot/dovecot.mk index e1b4bb21b8f..1a10b30e161 100644 --- a/buildroot/package/dovecot/dovecot.mk +++ b/buildroot/package/dovecot/dovecot.mk @@ -4,8 +4,8 @@ # ################################################################################ -DOVECOT_VERSION_MAJOR = 2.2 -DOVECOT_VERSION = $(DOVECOT_VERSION_MAJOR).34 +DOVECOT_VERSION_MAJOR = 2.3 +DOVECOT_VERSION = $(DOVECOT_VERSION_MAJOR).1 DOVECOT_SITE = http://www.dovecot.org/releases/$(DOVECOT_VERSION_MAJOR) DOVECOT_INSTALL_STAGING = YES DOVECOT_LICENSE = LGPL-2.1, MIT, Public Domain, BSD-3-Clause, Unicode-DFS-2015 @@ -57,6 +57,13 @@ 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_DOVECOT_MYSQL),y) DOVECOT_CONF_ENV += MYSQL_CONFIG="$(STAGING_DIR)/usr/bin/mysql_config" DOVECOT_CONF_OPTS += --with-mysql diff --git a/buildroot/package/dropbear/0001-only-advertise-single-server-ecdsa-key-when-R-is-used.patch b/buildroot/package/dropbear/0001-only-advertise-single-server-ecdsa-key-when-R-is-used.patch new file mode 100644 index 00000000000..1467e3bc2da --- /dev/null +++ b/buildroot/package/dropbear/0001-only-advertise-single-server-ecdsa-key-when-R-is-used.patch @@ -0,0 +1,113 @@ +# HG changeset patch +# User Matt Johnston +# Date 1520519133 -28800 +# Node ID 0dc3103a5900971d1d06d9101e062ddbd1112436 +# Parent 0f149d63068d90705db7fb52c8dea15ff32eedd7 +Only advertise a single server ecdsa key when -R (generate as required) is +specified. Fixes -R now that default ecdsa key size has changed. + +Upstream-URL: https://secure.ucc.asn.au/hg/dropbear/rev/0dc3103a5900 +Signed-off-by: Peter Korsgaard +diff -r 0f149d63068d -r 0dc3103a5900 svr-runopts.c +--- a/svr-runopts.c Thu Mar 08 22:22:11 2018 +0800 ++++ b/svr-runopts.c Thu Mar 08 22:25:33 2018 +0800 +@@ -526,8 +526,10 @@ + + void load_all_hostkeys() { + int i; +- int disable_unset_keys = 1; + int any_keys = 0; ++#ifdef DROPBEAR_ECDSA ++ int loaded_any_ecdsa = 0; ++#endif + + svr_opts.hostkey = new_sign_key(); + +@@ -552,14 +554,8 @@ + #endif + } + +-#if DROPBEAR_DELAY_HOSTKEY +- if (svr_opts.delay_hostkey) { +- disable_unset_keys = 0; +- } +-#endif +- + #if DROPBEAR_RSA +- if (disable_unset_keys && !svr_opts.hostkey->rsakey) { ++ if (!svr_opts.delay_hostkey && !svr_opts.hostkey->rsakey) { + disablekey(DROPBEAR_SIGNKEY_RSA); + } else { + any_keys = 1; +@@ -567,39 +563,54 @@ + #endif + + #if DROPBEAR_DSS +- if (disable_unset_keys && !svr_opts.hostkey->dsskey) { ++ if (!svr_opts.delay_hostkey && !svr_opts.hostkey->dsskey) { + disablekey(DROPBEAR_SIGNKEY_DSS); + } else { + any_keys = 1; + } + #endif + ++#if DROPBEAR_ECDSA ++ /* We want to advertise a single ecdsa algorithm size. ++ - If there is a ecdsa hostkey at startup we choose that that size. ++ - If we generate at runtime we choose the default ecdsa size. ++ - Otherwise no ecdsa keys will be advertised */ + +-#if DROPBEAR_ECDSA ++ /* check if any keys were loaded at startup */ ++ loaded_any_ecdsa = ++ 0 + #if DROPBEAR_ECC_256 +- if ((disable_unset_keys || ECDSA_DEFAULT_SIZE != 256) +- && !svr_opts.hostkey->ecckey256) { ++ || svr_opts.hostkey->ecckey256 ++#endif ++#if DROPBEAR_ECC_384 ++ || svr_opts.hostkey->ecckey384 ++#endif ++#if DROPBEAR_ECC_521 ++ || svr_opts.hostkey->ecckey521 ++#endif ++ ; ++ any_keys |= loaded_any_ecdsa; ++ ++ /* Or an ecdsa key could be generated at runtime */ ++ any_keys |= svr_opts.delay_hostkey; ++ ++ /* At most one ecdsa key size will be left enabled */ ++#if DROPBEAR_ECC_256 ++ if (!svr_opts.hostkey->ecckey256 ++ && (!svr_opts.delay_hostkey || loaded_any_ecdsa || ECDSA_DEFAULT_SIZE != 256 )) { + disablekey(DROPBEAR_SIGNKEY_ECDSA_NISTP256); +- } else { +- any_keys = 1; + } + #endif +- + #if DROPBEAR_ECC_384 +- if ((disable_unset_keys || ECDSA_DEFAULT_SIZE != 384) +- && !svr_opts.hostkey->ecckey384) { ++ if (!svr_opts.hostkey->ecckey384 ++ && (!svr_opts.delay_hostkey || loaded_any_ecdsa || ECDSA_DEFAULT_SIZE != 384 )) { + disablekey(DROPBEAR_SIGNKEY_ECDSA_NISTP384); +- } else { +- any_keys = 1; + } + #endif +- + #if DROPBEAR_ECC_521 +- if ((disable_unset_keys || ECDSA_DEFAULT_SIZE != 521) +- && !svr_opts.hostkey->ecckey521) { ++ if (!svr_opts.hostkey->ecckey521 ++ && (!svr_opts.delay_hostkey || loaded_any_ecdsa || ECDSA_DEFAULT_SIZE != 521 )) { + disablekey(DROPBEAR_SIGNKEY_ECDSA_NISTP521); +- } else { +- any_keys = 1; + } + #endif + #endif /* DROPBEAR_ECDSA */ + diff --git a/buildroot/package/dropbear/Config.in b/buildroot/package/dropbear/Config.in index 6700778161b..5d6b83b6d1c 100644 --- a/buildroot/package/dropbear/Config.in +++ b/buildroot/package/dropbear/Config.in @@ -1,6 +1,7 @@ config BR2_PACKAGE_DROPBEAR bool "dropbear" select BR2_PACKAGE_ZLIB if !BR2_PACKAGE_DROPBEAR_SMALL + select BR2_PACKAGE_LIBTOMCRYPT if !BR2_PACKAGE_DROPBEAR_SMALL help A small SSH 2 server designed for small memory environments. diff --git a/buildroot/package/dropbear/dropbear.hash b/buildroot/package/dropbear/dropbear.hash index 98776e71797..ef2011d9078 100644 --- a/buildroot/package/dropbear/dropbear.hash +++ b/buildroot/package/dropbear/dropbear.hash @@ -1,2 +1,2 @@ # From https://matt.ucc.asn.au/dropbear/releases/SHA256SUM.asc -sha256 6cbc1dcb1c9709d226dff669e5604172a18cf5dbf9a201474d5618ae4465098c dropbear-2017.75.tar.bz2 +sha256 f2fb9167eca8cf93456a5fc1d4faf709902a3ab70dd44e352f3acbc3ffdaea65 dropbear-2018.76.tar.bz2 diff --git a/buildroot/package/dropbear/dropbear.mk b/buildroot/package/dropbear/dropbear.mk index 01a1a07b769..fc41a84c1ff 100644 --- a/buildroot/package/dropbear/dropbear.mk +++ b/buildroot/package/dropbear/dropbear.mk @@ -4,7 +4,7 @@ # ################################################################################ -DROPBEAR_VERSION = 2017.75 +DROPBEAR_VERSION = 2018.76 DROPBEAR_SITE = https://matt.ucc.asn.au/dropbear/releases DROPBEAR_SOURCE = dropbear-$(DROPBEAR_VERSION).tar.bz2 DROPBEAR_LICENSE = MIT, BSD-2-Clause-like, BSD-2-Clause @@ -12,6 +12,11 @@ DROPBEAR_LICENSE_FILES = LICENSE DROPBEAR_TARGET_BINS = dropbearkey dropbearconvert scp DROPBEAR_PROGRAMS = dropbear $(DROPBEAR_TARGET_BINS) +# 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 @@ -22,33 +27,34 @@ DROPBEAR_MAKE = \ $(MAKE) MULTI=1 SCPPROGRESS=1 \ PROGRAMS="$(DROPBEAR_PROGRAMS)" -ifeq ($(BR2_STATIC_LIBS),y) -DROPBEAR_MAKE += STATIC=1 +# 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 -define DROPBEAR_FIX_XAUTH - $(SED) 's,^#define XAUTH_COMMAND.*/xauth,#define XAUTH_COMMAND "/usr/bin/xauth,g' $(@D)/options.h +# 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_FIX_XAUTH +DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_SVR_PASSWORD_AUTH define DROPBEAR_ENABLE_REVERSE_DNS - $(SED) 's:.*\(#define DO_HOST_LOOKUP\).*:\1:' $(@D)/options.h -endef - -define DROPBEAR_BUILD_SMALL - $(SED) 's:.*\(#define NO_FAST_EXPTMOD\).*:\1:' $(@D)/options.h + echo '#define DO_HOST_LOOKUP 1' >> $(@D)/localoptions.h endef define DROPBEAR_BUILD_FEATURED - $(SED) 's:^#define DROPBEAR_SMALL_CODE::' $(@D)/options.h - $(SED) 's:.*\(#define DROPBEAR_BLOWFISH\).*:\1:' $(@D)/options.h - $(SED) 's:.*\(#define DROPBEAR_TWOFISH128\).*:\1:' $(@D)/options.h - $(SED) 's:.*\(#define DROPBEAR_TWOFISH256\).*:\1:' $(@D)/options.h + echo '#define DROPBEAR_SMALL_CODE 0' >> $(@D)/localoptions.h + echo '#define DROPBEAR_BLOWFISH 1' >> $(@D)/localoptions.h + echo '#define DROPBEAR_TWOFISH128 1' >> $(@D)/localoptions.h + echo '#define DROPBEAR_TWOFISH256 1' >> $(@D)/localoptions.h endef define DROPBEAR_DISABLE_STANDALONE - $(SED) 's:\(#define NON_INETD_MODE\):/*\1 */:' $(@D)/options.h + echo '#define NON_INETD_MODE 0' >> $(@D)/localoptions.h endef define DROPBEAR_INSTALL_INIT_SYSTEMD @@ -73,11 +79,11 @@ DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_ENABLE_REVERSE_DNS endif ifeq ($(BR2_PACKAGE_DROPBEAR_SMALL),y) -DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_BUILD_SMALL -DROPBEAR_CONF_OPTS += --disable-zlib +DROPBEAR_CONF_OPTS += --disable-zlib --enable-bundled-libtom else DROPBEAR_POST_EXTRACT_HOOKS += DROPBEAR_BUILD_FEATURED -DROPBEAR_DEPENDENCIES += zlib +DROPBEAR_DEPENDENCIES += zlib libtomcrypt +DROPBEAR_CONF_OPTS += --disable-bundled-libtom endif ifneq ($(BR2_PACKAGE_DROPBEAR_WTMP),y) diff --git a/buildroot/package/dtv-scan-tables/dtv-scan-tables.hash b/buildroot/package/dtv-scan-tables/dtv-scan-tables.hash index 02f086dc5bb..1aa6bd59fa6 100644 --- a/buildroot/package/dtv-scan-tables/dtv-scan-tables.hash +++ b/buildroot/package/dtv-scan-tables/dtv-scan-tables.hash @@ -1,2 +1,4 @@ # Locally computed -sha256 ec64aa81a207372340a04d3e9e950ff2f8b4f404580f21480cdbf06019057a9f dtv-scan-tables-ceb11833b35f05813b1f0397a60e0f3b99430aab.tar.gz +sha256 7ded9b437fc3345bbd13a6c1c446c54d0e24d2d337e5abda223adb6362916d8c dtv-scan-tables-07b18ecef17493ac0908a2e112eae3fe269da7fa.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING +sha256 4fd46f32582c29007657e2daad8d0a6d954cf4e9d2e47bae8f8d8c32765fc987 COPYING.LGPL diff --git a/buildroot/package/dtv-scan-tables/dtv-scan-tables.mk b/buildroot/package/dtv-scan-tables/dtv-scan-tables.mk index 3c546ed84fb..b7f82562f29 100644 --- a/buildroot/package/dtv-scan-tables/dtv-scan-tables.mk +++ b/buildroot/package/dtv-scan-tables/dtv-scan-tables.mk @@ -4,7 +4,7 @@ # ################################################################################ -DTV_SCAN_TABLES_VERSION = ceb11833b35f05813b1f0397a60e0f3b99430aab +DTV_SCAN_TABLES_VERSION = 07b18ecef17493ac0908a2e112eae3fe269da7fa DTV_SCAN_TABLES_SITE = http://git.linuxtv.org/cgit.cgi/dtv-scan-tables.git DTV_SCAN_TABLES_SITE_METHOD = git @@ -17,15 +17,6 @@ DTV_SCAN_TABLES_SITE_METHOD = git DTV_SCAN_TABLES_LICENSE = GPL-2.0, LGPL-2.1 DTV_SCAN_TABLES_LICENSE_FILES = COPYING COPYING.LGPL -# In order to avoid issues with file name encodings, we rename the -# only dtv-scan-tables file that has non-ASCII characters to have a -# name using only ASCII characters (pl-Krosno_Sucha_Gora) -define DTV_SCAN_TABLES_FIX_NONASCII_FILENAMES - mv $(@D)/dvb-t/pl-Krosno_Sucha* $(@D)/dvb-t/pl-Krosno_Sucha_Gora -endef - -DTV_SCAN_TABLES_POST_PATCH_HOOKS += DTV_SCAN_TABLES_FIX_NONASCII_FILENAMES - 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; \ diff --git a/buildroot/package/dvblast/Config.in b/buildroot/package/dvblast/Config.in index c358531edc2..5597faea4f8 100644 --- a/buildroot/package/dvblast/Config.in +++ b/buildroot/package/dvblast/Config.in @@ -1,6 +1,5 @@ config BR2_PACKAGE_DVBLAST bool "dvblast" - depends on !BR2_bfin # libev depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # clock_nanosleep() select BR2_PACKAGE_BITSTREAM select BR2_PACKAGE_LIBEV @@ -12,5 +11,4 @@ config BR2_PACKAGE_DVBLAST http://www.videolan.org/projects/dvblast.html comment "dvblast needs a toolchain w/ NPTL" - depends on !BR2_bfin # libev depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL diff --git a/buildroot/package/e2fsprogs/e2fsprogs.hash b/buildroot/package/e2fsprogs/e2fsprogs.hash index 3def51f95bc..60498db8e4a 100644 --- a/buildroot/package/e2fsprogs/e2fsprogs.hash +++ b/buildroot/package/e2fsprogs/e2fsprogs.hash @@ -1,5 +1,5 @@ -# From https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.43.9/sha256sums.asc -sha256 926f8e8de1ffba55d791f21b71334e8a32b5227257ad370f2bf7e4396629e97f e2fsprogs-1.43.9.tar.xz +# From https://www.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs/v1.44.1/sha256sums.asc +sha256 0ca164c1c87724df904c918b2d7051ef989b51de725db66c67514dbe6dd2b9ef e2fsprogs-1.44.1.tar.xz # Locally calculated sha256 680f852df303874fe9c722283a7da571ae9a0477768df8af1e363298e2adc51e NOTICE sha256 032989b508f1a72ebee5b3417e55d06d473f9ee203e45ab11864a7e49cdec63d lib/ss/mit-sipb-copyright.h diff --git a/buildroot/package/e2fsprogs/e2fsprogs.mk b/buildroot/package/e2fsprogs/e2fsprogs.mk index 99019c73170..ce7736c1cd7 100644 --- a/buildroot/package/e2fsprogs/e2fsprogs.mk +++ b/buildroot/package/e2fsprogs/e2fsprogs.mk @@ -4,7 +4,7 @@ # ################################################################################ -E2FSPROGS_VERSION = 1.43.9 +E2FSPROGS_VERSION = 1.44.1 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) diff --git a/buildroot/package/ebtables/Config.in b/buildroot/package/ebtables/Config.in index 2fdac06cd17..3f7566a6072 100644 --- a/buildroot/package/ebtables/Config.in +++ b/buildroot/package/ebtables/Config.in @@ -5,6 +5,3 @@ config BR2_PACKAGE_EBTABLES Ethernet bridge frame table administration http://ebtables.netfilter.org/ - -comment "ebtables needs a glibc or uClibc toolchain" - depends on BR2_USE_MMU diff --git a/buildroot/package/ecryptfs-utils/Config.in b/buildroot/package/ecryptfs-utils/Config.in index bb4cc64488b..6652d33e0ee 100644 --- a/buildroot/package/ecryptfs-utils/Config.in +++ b/buildroot/package/ecryptfs-utils/Config.in @@ -7,6 +7,7 @@ config BR2_PACKAGE_ECRYPTFS_UTILS depends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT # libnss -> libnspr depends on !BR2_MIPS_NABI32 # libnss depends on !BR2_STATIC_LIBS # libnss, keyutils + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_85862 # microblaze specific & GCC < 7.x select BR2_PACKAGE_KEYUTILS select BR2_PACKAGE_LIBNSS # runtime dependency only, some scripts are using the @@ -35,3 +36,6 @@ comment "ecryptfs-utils needs a toolchain w/ threads, wchar, dynami library" depends on BR2_USE_MMU depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR || \ BR2_STATIC_LIBS + +comment "ecryptfs needs a toolchain not affected by GCC bug 85862" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_85862 # libnss diff --git a/buildroot/package/efibootmgr/0002-Allow-build-with-uClibc.patch b/buildroot/package/efibootmgr/0001-Allow-build-with-uClibc.patch similarity index 100% rename from buildroot/package/efibootmgr/0002-Allow-build-with-uClibc.patch rename to buildroot/package/efibootmgr/0001-Allow-build-with-uClibc.patch diff --git a/buildroot/package/efibootmgr/0001-dont-use-fshort-wchar-when-building.patch b/buildroot/package/efibootmgr/0001-dont-use-fshort-wchar-when-building.patch deleted file mode 100644 index abafcec5248..00000000000 --- a/buildroot/package/efibootmgr/0001-dont-use-fshort-wchar-when-building.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 3466fd05c8c6f1052e0426d64eed40f8a88fd78f Mon Sep 17 00:00:00 2001 -From: steve-mcintyre -Date: Fri, 6 Jan 2017 18:18:47 +0000 -Subject: [PATCH] Don't use -fshort-wchar when building (#63) - -It's not needed and is causing build failures with gcc 6. Closes -Debian bug #849651 - -Signed-off-by: Steve McIntyre -[Upstream commit: https://github.com/rhinstaller/efibootmgr/commit/3466fd05c8c6f1052e0426d64eed40f8a88fd78f] -Signed-off-by: Thomas Petazzoni ---- - Make.defaults | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/Make.defaults b/Make.defaults -index 50f1f4d..0ac50ef 100644 ---- a/Make.defaults -+++ b/Make.defaults -@@ -26,7 +26,7 @@ clang_cflags = - gcc_cflags = - cflags = $(CFLAGS) $(SUBDIR_CFLAGS) \ - -Werror -Wall -Wextra -Wsign-compare -Wstrict-aliasing \ -- -std=gnu11 -fshort-wchar -fPIC \ -+ -std=gnu11 -fPIC \ - -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -DLOCALEDIR=\"$(localedir)\" \ - -DEFIBOOTMGR_VERSION="\"$(VERSION)\"" \ - $(if $(findstring clang,$(CC)),$(clang_cflags),) \ diff --git a/buildroot/package/efibootmgr/0003-Remove-extra-const-keywords-gcc-7-gripes-about.patch b/buildroot/package/efibootmgr/0003-Remove-extra-const-keywords-gcc-7-gripes-about.patch deleted file mode 100644 index 8bc6f01ef49..00000000000 --- a/buildroot/package/efibootmgr/0003-Remove-extra-const-keywords-gcc-7-gripes-about.patch +++ /dev/null @@ -1,51 +0,0 @@ -From a542b169003c2ef95ce6c00d40050eb10568b612 Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Mon, 6 Feb 2017 16:34:54 -0500 -Subject: [PATCH] Remove extra const keywords gcc 7 gripes about. - -Signed-off-by: Peter Jones -[Backported from upstream commit a542b169003c2ef95ce6c00d40050eb10568b612] -Signed-off-by: Thomas Petazzoni ---- - src/efibootdump.c | 2 +- - src/efibootmgr.c | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/efibootdump.c b/src/efibootdump.c -index 6ff8360..30a1943 100644 ---- a/src/efibootdump.c -+++ b/src/efibootdump.c -@@ -39,7 +39,7 @@ print_boot_entry(efi_load_option *loadopt, size_t data_size) - uint8_t *optional_data = NULL; - size_t optional_data_len = 0; - uint16_t pathlen; -- const unsigned char const *desc; -+ const unsigned char *desc; - char *raw; - size_t raw_len; - -diff --git a/src/efibootmgr.c b/src/efibootmgr.c -index 493f2cf..90a0998 100644 ---- a/src/efibootmgr.c -+++ b/src/efibootmgr.c -@@ -221,7 +221,7 @@ warn_duplicate_name(list_t *var_list) - list_t *pos; - var_entry_t *entry; - efi_load_option *load_option; -- const unsigned char const *desc; -+ const unsigned char *desc; - - list_for_each(pos, var_list) { - entry = list_entry(pos, var_entry_t, list); -@@ -873,7 +873,7 @@ show_vars(const char *prefix) - { - list_t *pos; - var_entry_t *boot; -- const unsigned char const *description; -+ const unsigned char *description; - efi_load_option *load_option; - efidp dp = NULL; - unsigned char *optional_data = NULL; --- -2.9.4 - diff --git a/buildroot/package/efibootmgr/Config.in b/buildroot/package/efibootmgr/Config.in index 0d36ffd6e73..d31f9b13ee6 100644 --- a/buildroot/package/efibootmgr/Config.in +++ b/buildroot/package/efibootmgr/Config.in @@ -3,22 +3,21 @@ config BR2_PACKAGE_EFIBOOTMGR depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS # efivar depends on !BR2_STATIC_LIBS # efivar depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 # efivar - depends on !BR2_TOOLCHAIN_USES_MUSL # 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/rhinstaller/efibootmgr + https://github.com/rhboot/efibootmgr comment "efibootmgr needs a glibc or uClibc toolchain w/ dynamic library, headers >= 3.12, gcc >= 4.9" depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS depends on BR2_STATIC_LIBS || \ !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \ - BR2_TOOLCHAIN_USES_MUSL || \ !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS diff --git a/buildroot/package/efibootmgr/efibootmgr.hash b/buildroot/package/efibootmgr/efibootmgr.hash index f71dced53fb..b786a415a8b 100644 --- a/buildroot/package/efibootmgr/efibootmgr.hash +++ b/buildroot/package/efibootmgr/efibootmgr.hash @@ -1,2 +1,3 @@ # locally computed hash -sha256 3f260491e2c62e93cb6347ea6f21aaa5f93152e9e7f0269d314623769d82e473 efibootmgr-14.tar.gz +sha256 5a708b9690cdc631fd75d8f598128d20cad007e711b975b0143f9517c2dd1bf4 efibootmgr-15.tar.gz +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/buildroot/package/efibootmgr/efibootmgr.mk b/buildroot/package/efibootmgr/efibootmgr.mk index b32d9cbcfdb..bdc0019d993 100644 --- a/buildroot/package/efibootmgr/efibootmgr.mk +++ b/buildroot/package/efibootmgr/efibootmgr.mk @@ -4,12 +4,13 @@ # ################################################################################ -EFIBOOTMGR_VERSION = 14 -EFIBOOTMGR_SITE = $(call github,rhinstaller,efibootmgr,$(EFIBOOTMGR_VERSION)) +EFIBOOTMGR_VERSION = 15 +EFIBOOTMGR_SITE = $(call github,rhboot,efibootmgr,$(EFIBOOTMGR_VERSION)) EFIBOOTMGR_LICENSE = GPL-2.0+ EFIBOOTMGR_LICENSE_FILES = COPYING -EFIBOOTMGR_DEPENDENCIES = efivar $(TARGET_NLS_DEPENDENCIES) +EFIBOOTMGR_DEPENDENCIES = host-pkgconf efivar popt $(TARGET_NLS_DEPENDENCIES) EFIBOOTMGR_LDFLAGS = $(TARGET_LDFLAGS) $(TARGET_NLS_LIBS) +EFIBOOTMGR_MAKE_ARGS = EFIDIR=buildroot define EFIBOOTMSR_PATCH_HEADER_PATH $(SED) 's,-I/,-I$(STAGING_DIR)/,' $(@D)/Makefile @@ -19,12 +20,13 @@ EFIBOOTMGR_POST_PATCH_HOOKS += EFIBOOTMSR_PATCH_HEADER_PATH define EFIBOOTMGR_BUILD_CMDS $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) \ - LDFLAGS="$(EFIBOOTMGR_LDFLAGS)" $(MAKE1) -C $(@D) + LDFLAGS="$(EFIBOOTMGR_LDFLAGS)" $(MAKE1) -C $(@D) \ + $(EFIBOOTMGR_MAKE_ARGS) endef define EFIBOOTMGR_INSTALL_TARGET_CMDS $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) \ - DESTDIR=$(TARGET_DIR) install + $(EFIBOOTMGR_MAKE_ARGS) DESTDIR=$(TARGET_DIR) install endef $(eval $(generic-package)) diff --git a/buildroot/package/efivar/0002-Allow-build-with-uClibc.patch b/buildroot/package/efivar/0001-Allow-build-with-uClibc.patch similarity index 96% rename from buildroot/package/efivar/0002-Allow-build-with-uClibc.patch rename to buildroot/package/efivar/0001-Allow-build-with-uClibc.patch index 7c195872b09..01fa9dee703 100644 --- a/buildroot/package/efivar/0002-Allow-build-with-uClibc.patch +++ b/buildroot/package/efivar/0001-Allow-build-with-uClibc.patch @@ -20,7 +20,7 @@ index 7f2d4dd..72c02d1 100644 #include -#include - #include + #include #include "lib.h" +#ifdef __UCLIBC__ diff --git a/buildroot/package/efivar/0001-Use-z-muldefs-to-avoid-the-multiple-definitions-bug-.patch b/buildroot/package/efivar/0001-Use-z-muldefs-to-avoid-the-multiple-definitions-bug-.patch deleted file mode 100644 index 2bc3ff243f6..00000000000 --- a/buildroot/package/efivar/0001-Use-z-muldefs-to-avoid-the-multiple-definitions-bug-.patch +++ /dev/null @@ -1,29 +0,0 @@ -From 314eb67b239e60c2ed3700e2baf9cd0e590465f3 Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Thu, 27 Oct 2016 09:19:18 -0400 -Subject: [PATCH] Use -z muldefs to avoid the multiple definitions bug - without -flto - -This fixes github issue #64 - -Signed-off-by: Peter Jones -Signed-off-by: Andy Shevchenko ---- - Make.defaults | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/Make.defaults b/Make.defaults -index aa974d9..c9d599f 100644 ---- a/Make.defaults -+++ b/Make.defaults -@@ -32,6 +32,7 @@ cflags = $(CFLAGS) -I${TOPDIR}/src/include/efivar/ \ - clang_ccldflags = - gcc_ccldflags = - ccldflags = $(cflags) -L. $(CCLDFLAGS) $(LDFLAGS) \ -+ -Wl,-z,muldefs \ - $(if $(findstring clang,$(CCLD)),$(clang_ccldflags),) \ - $(if $(findstring gcc,$(CCLD)),$(gcc_ccldflags),) \ - $(call pkg-config-ccldflags) --- -2.10.2 - diff --git a/buildroot/package/efivar/0003-Remove-some-extra-const-that-gcc-complains-about.patch b/buildroot/package/efivar/0003-Remove-some-extra-const-that-gcc-complains-about.patch deleted file mode 100644 index 6b9f77eb8b7..00000000000 --- a/buildroot/package/efivar/0003-Remove-some-extra-const-that-gcc-complains-about.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 1c7c0f71c9d22efda4156881eb187b8c69d1cca7 Mon Sep 17 00:00:00 2001 -From: Peter Jones -Date: Mon, 6 Feb 2017 14:28:19 -0500 -Subject: [PATCH] Remove some extra "const" that gcc complains about. - -One of these days I'll get these right. - -Signed-off-by: Peter Jones -Signed-off-by: Baruch Siach ---- -Upstream commit 1c7c0f71c9d22e. - - src/include/efivar/efiboot-loadopt.h | 4 ++-- - src/loadopt.c | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/include/efivar/efiboot-loadopt.h b/src/include/efivar/efiboot-loadopt.h -index 07db5c4c53e3..efc29c69d47e 100644 ---- a/src/include/efivar/efiboot-loadopt.h -+++ b/src/include/efivar/efiboot-loadopt.h -@@ -32,8 +32,8 @@ extern ssize_t efi_loadopt_create(uint8_t *buf, ssize_t size, - - extern efidp efi_loadopt_path(efi_load_option *opt, ssize_t limit) - __attribute__((__nonnull__ (1))); --extern const unsigned char const * efi_loadopt_desc(efi_load_option *opt, -- ssize_t limit) -+extern const unsigned char * efi_loadopt_desc(efi_load_option *opt, -+ ssize_t limit) - __attribute__((__visibility__ ("default"))) - __attribute__((__nonnull__ (1))); - extern uint32_t efi_loadopt_attrs(efi_load_option *opt) -diff --git a/src/loadopt.c b/src/loadopt.c -index a63ca792d2dc..ce889867fd29 100644 ---- a/src/loadopt.c -+++ b/src/loadopt.c -@@ -357,7 +357,7 @@ teardown(void) - - __attribute__((__nonnull__ (1))) - __attribute__((__visibility__ ("default"))) --const unsigned char const * -+const unsigned char * - efi_loadopt_desc(efi_load_option *opt, ssize_t limit) - { - if (last_desc) { --- -2.13.2 - diff --git a/buildroot/package/efivar/Config.in b/buildroot/package/efivar/Config.in index 0fa9adf3873..74f2bb5abb9 100644 --- a/buildroot/package/efivar/Config.in +++ b/buildroot/package/efivar/Config.in @@ -16,19 +16,15 @@ config BR2_PACKAGE_EFIVAR # failures. So, prevent this package to be built using those # toolchains. depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS - # doesn't build with musl due to lack of __bswap_constant_16 - depends on !BR2_TOOLCHAIN_USES_MUSL depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 - select BR2_PACKAGE_POPT help Tools and libraries to manipulate EFI variables - https://github.com/rhinstaller/efivar + https://github.com/rhboot/efivar -comment "efivar needs a glibc or uClibc toolchain w/ dynamic library, headers >= 3.12, gcc >= 4.9" +comment "efivar needs a toolchain w/ dynamic library, headers >= 3.12, gcc >= 4.9" depends on BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS depends on BR2_STATIC_LIBS || \ !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12 || \ - BR2_TOOLCHAIN_USES_MUSL || \ !BR2_TOOLCHAIN_GCC_AT_LEAST_4_9 depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_MIPS diff --git a/buildroot/package/efivar/efivar.hash b/buildroot/package/efivar/efivar.hash index e337b964506..e8a65adc4bd 100644 --- a/buildroot/package/efivar/efivar.hash +++ b/buildroot/package/efivar/efivar.hash @@ -1,2 +1,3 @@ # locally computed hash -sha256 20709c76311f8eb8be92977b7ac008ce62501fa9f7fe885a784321540fc352f9 efivar-30.tar.gz +sha256 9691399a424b8e3776b7ed2df1893c4162285a93697d781f387d0f0d258a7f4b efivar-34.tar.gz +sha256 91df770634adc2755e78cae33a0d01e702ce2f69046408ae93d0d934ff29691b COPYING diff --git a/buildroot/package/efivar/efivar.mk b/buildroot/package/efivar/efivar.mk index d06192ed22a..492a4468bf2 100644 --- a/buildroot/package/efivar/efivar.mk +++ b/buildroot/package/efivar/efivar.mk @@ -4,21 +4,16 @@ # ################################################################################ -EFIVAR_VERSION = 30 -EFIVAR_SITE = $(call github,rhinstaller,efivar,$(EFIVAR_VERSION)) +EFIVAR_VERSION = 34 +EFIVAR_SITE = $(call github,rhboot,efivar,$(EFIVAR_VERSION)) EFIVAR_LICENSE = LGPL-2.1 EFIVAR_LICENSE_FILES = COPYING -EFIVAR_DEPENDENCIES = popt EFIVAR_INSTALL_STAGING = YES -# BINTARGETS is set to skip efivar-static which requires static popt, -# and since we depend on dynamic libraries, efivar will never be built -# in a static-only environment. # -fPIC is needed at least on MIPS, otherwise fails to build shared # -library. EFIVAR_MAKE_OPTS = \ libdir=/usr/lib \ - BINTARGETS=efivar \ LDFLAGS="$(TARGET_LDFLAGS) -fPIC" define EFIVAR_BUILD_CMDS diff --git a/buildroot/package/efl/efl.hash b/buildroot/package/efl/efl.hash index 5507bda3efe..1391d1f7072 100644 --- a/buildroot/package/efl/efl.hash +++ b/buildroot/package/efl/efl.hash @@ -1,5 +1,5 @@ -# From https://download.enlightenment.org/rel/libs/efl/efl-1.20.6.tar.xz.sha256 -sha256 56c67ea77435753a4f324a0a13488ba58f4ed7eb35a97c1a354fdc79c39a32c1 efl-1.20.6.tar.xz +# From https://download.enlightenment.org/rel/libs/efl/efl-1.20.7.tar.xz.sha256 +sha256 b0a9b765bcd7b012f1072da1d491fc8671aa089473f746901d93f5807a2c76fe efl-1.20.7.tar.xz sha256 d949e42ca8fd48d275c397c5fc2ac34c9b63ada715dcaf1a670e17bb62964341 COMPLIANCE sha256 1f0597d326e2fdb54aa2f0caec6d8bb0afb9941ef32475f017ed02ca214fcf37 COPYING sha256 781ee841d15835b393bfe7d4c6497dc1b05217479abd40daceaf7aa102a758e1 licenses/COPYING.BSD diff --git a/buildroot/package/efl/efl.mk b/buildroot/package/efl/efl.mk index 70857967564..6ef7d533851 100644 --- a/buildroot/package/efl/efl.mk +++ b/buildroot/package/efl/efl.mk @@ -4,7 +4,7 @@ # ################################################################################ -EFL_VERSION = 1.20.6 +EFL_VERSION = 1.20.7 EFL_SOURCE = efl-$(EFL_VERSION).tar.xz EFL_SITE = http://download.enlightenment.org/rel/libs/efl EFL_LICENSE = BSD-2-Clause, LGPL-2.1+, GPL-2.0+, FTL, MIT diff --git a/buildroot/package/elfutils/Config.in b/buildroot/package/elfutils/Config.in index ad86c313d61..6c8bd0b058c 100644 --- a/buildroot/package/elfutils/Config.in +++ b/buildroot/package/elfutils/Config.in @@ -1,5 +1,4 @@ comment "elfutils needs a uClibc or glibc toolchain w/ wchar, dynamic library" - depends on !BR2_bfin depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \ || !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) @@ -9,9 +8,6 @@ config BR2_PACKAGE_ELFUTILS depends on !BR2_STATIC_LIBS # Only glibc and uClibc implement the myriad of required GNUisms depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC - # build issue caused by the _ prefix used on blackfin for - # assembly symbols - depends on !BR2_bfin select BR2_PACKAGE_ZLIB select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC help diff --git a/buildroot/package/enlightenment/enlightenment.hash b/buildroot/package/enlightenment/enlightenment.hash index 10e8facf354..7a6d3ff8f01 100644 --- a/buildroot/package/enlightenment/enlightenment.hash +++ b/buildroot/package/enlightenment/enlightenment.hash @@ -1,3 +1,3 @@ -# From https://www.enlightenment.org/news/e0.22.1_release -sha256 207b6b88dafc4932ab007a835510823c5a1dd8c191876ac037628176ca77a7e0 enlightenment-0.22.1.tar.xz +# From https://www.enlightenment.org/news/e0.22.3_release +sha256 4d81e583073d74474b7a960b01cb596716a43cca2fadca7d1e5c91f4cf6efe9b enlightenment-0.22.3.tar.xz sha256 34dbd501ec9d1c8dcc569c01db9cf9a4b7ee5981614cc9f8f613a97463d27350 COPYING diff --git a/buildroot/package/enlightenment/enlightenment.mk b/buildroot/package/enlightenment/enlightenment.mk index 17309619adc..480e9e9da8c 100644 --- a/buildroot/package/enlightenment/enlightenment.mk +++ b/buildroot/package/enlightenment/enlightenment.mk @@ -4,7 +4,7 @@ # ################################################################################ -ENLIGHTENMENT_VERSION = 0.22.1 +ENLIGHTENMENT_VERSION = 0.22.3 ENLIGHTENMENT_SOURCE = enlightenment-$(ENLIGHTENMENT_VERSION).tar.xz ENLIGHTENMENT_SITE = http://download.enlightenment.org/rel/apps/enlightenment ENLIGHTENMENT_LICENSE = BSD-2-Clause @@ -22,10 +22,12 @@ ENLIGHTENMENT_MESON_OPTS += \ --buildtype=$(if $(BR2_ENABLE_DEBUG),debug,release) \ --cross-file=$(HOST_DIR)/etc/meson/cross-compilation.conf \ -Dedje-cc=$(HOST_DIR)/bin/edje_cc \ - -Deet-eet=$(HOST_DIR)/bin/eet \ - -Deldbus_codegen=$(HOST_DIR)/bin/eldbus-codegen \ - -Dpam=false \ - -Drpath=false + -Deet=$(HOST_DIR)/bin/eet \ + -Deldbus-codegen=$(HOST_DIR)/bin/eldbus-codegen \ + -Dpam=false + +# enlightenment.pc and /usr/lib/enlightenment/modules/*.so +ENLIGHTENMENT_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_SYSTEMD),y) ENLIGHTENMENT_MESON_OPTS += -Dsystemd=true @@ -42,6 +44,10 @@ else ENLIGHTENMENT_MESON_OPTS += -Dmixer=false endif +ifeq ($(BR2_PACKAGE_XKEYBOARD_CONFIG),y) +ENLIGHTENMENT_DEPENDENCIES += xkeyboard-config +endif + define ENLIGHTENMENT_CONFIGURE_CMDS rm -rf $(@D)/build mkdir -p $(@D)/build diff --git a/buildroot/package/erlang/0001-build-fix.patch b/buildroot/package/erlang/0001-build-fix.patch deleted file mode 100644 index ff821c9fc08..00000000000 --- a/buildroot/package/erlang/0001-build-fix.patch +++ /dev/null @@ -1,13 +0,0 @@ -apply-patches.sh deletes this file from the source directory. - ---- erlang-R15B01.old/lib/tools/emacs/Makefile 2012-04-04 -+++ erlang-R15B01/lib/tools/emacs/Makefile 2012-04-04 15:55:16.978957307 +0100 -@@ -51,7 +51,7 @@ - - ELC_FILES = $(EMACS_FILES:%=%.elc) - --TEST_FILES = test.erl.indented test.erl.orig -+TEST_FILES = test.erl.indented - - # ---------------------------------------------------- - # Targets diff --git a/buildroot/package/erlang/0002-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch b/buildroot/package/erlang/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch similarity index 100% rename from buildroot/package/erlang/0002-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch rename to buildroot/package/erlang/0001-erts-ethread-instruct-libatomic_ops-we-do-require-CA.patch diff --git a/buildroot/package/erlang/0003-erts-emulator-reorder-inclued-headers-paths.patch b/buildroot/package/erlang/0002-erts-emulator-reorder-inclued-headers-paths.patch similarity index 100% rename from buildroot/package/erlang/0003-erts-emulator-reorder-inclued-headers-paths.patch rename to buildroot/package/erlang/0002-erts-emulator-reorder-inclued-headers-paths.patch diff --git a/buildroot/package/erlang/0004-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch b/buildroot/package/erlang/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch similarity index 100% rename from buildroot/package/erlang/0004-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch rename to buildroot/package/erlang/0003-Link-with-LDLIBS-instead-of-LIBS-for-DED.patch diff --git a/buildroot/package/erlang/erlang.hash b/buildroot/package/erlang/erlang.hash index cf820cec1ba..f5ff74022cc 100644 --- a/buildroot/package/erlang/erlang.hash +++ b/buildroot/package/erlang/erlang.hash @@ -1,3 +1,4 @@ # md5 from http://www.erlang.org/download/MD5, sha256 locally computed -md5 2faed2c3519353e6bc2501ed4d8e6ae7 otp_src_20.0.tar.gz -sha256 fe80e1e14a2772901be717694bb30ac4e9a07eee0cc7a28988724cbd21476811 otp_src_20.0.tar.gz +md5 a683c8c0aacfe0305c4bf47b3abfde6a otp_src_20.3.tar.gz +sha256 4e19e6c403d5255531c0b870f19511c8b8e3b080618e4f9efcb44d905935b2a1 otp_src_20.3.tar.gz +sha256 809fa1ed21450f59827d1e9aec720bbc4b687434fa22283c6cb5dd82a47ab9c0 LICENSE.txt diff --git a/buildroot/package/erlang/erlang.mk b/buildroot/package/erlang/erlang.mk index 5705b98d8ee..b7fdb6b9ceb 100644 --- a/buildroot/package/erlang/erlang.mk +++ b/buildroot/package/erlang/erlang.mk @@ -5,7 +5,7 @@ ################################################################################ # See note below when updating Erlang -ERLANG_VERSION = 20.0 +ERLANG_VERSION = 20.3 ERLANG_SITE = http://www.erlang.org/download ERLANG_SOURCE = otp_src_$(ERLANG_VERSION).tar.gz ERLANG_DEPENDENCIES = host-erlang @@ -19,7 +19,7 @@ ERLANG_AUTORECONF = YES # Whenever updating Erlang, this value should be updated as well, to the # value of EI_VSN in the file lib/erl_interface/vsn.mk -ERLANG_EI_VSN = 3.10 +ERLANG_EI_VSN = 3.10.1 # The configure checks for these functions fail incorrectly ERLANG_CONF_ENV = ac_cv_func_isnan=yes ac_cv_func_isinf=yes diff --git a/buildroot/package/espeak/espeak.mk b/buildroot/package/espeak/espeak.mk index 226f17fc056..aa0b5b07166 100644 --- a/buildroot/package/espeak/espeak.mk +++ b/buildroot/package/espeak/espeak.mk @@ -21,7 +21,7 @@ ESPEAK_DEPENDENCIES = pulseaudio endif define ESPEAK_EXTRACT_CMDS - $(UNZIP) -d $(@D) $(DL_DIR)/$(ESPEAK_SOURCE) + $(UNZIP) -d $(@D) $(ESPEAK_DL_DIR)/$(ESPEAK_SOURCE) mv $(@D)/espeak-$(ESPEAK_VERSION)-source/* $(@D) $(RM) -r $(@D)/espeak-$(ESPEAK_VERSION)-source endef diff --git a/buildroot/package/ethtool/ethtool.hash b/buildroot/package/ethtool/ethtool.hash index 39e10ff34e9..9704a54b0dc 100644 --- a/buildroot/package/ethtool/ethtool.hash +++ b/buildroot/package/ethtool/ethtool.hash @@ -1,4 +1,5 @@ # From https://www.kernel.org/pub/software/network/ethtool/sha256sums.asc -sha256 b7c1a380007d30eaf261a63b3cfc000f9d93f9eb7626dcd48b5d2a733af99cba ethtool-4.13.tar.xz +sha256 71f7fd32483ffdc7c6c4d882e230714eb101df0a46cbe396dbeb8ac78f1ef91a ethtool-4.15.tar.xz # Locally calculated sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 5d632934396f90c82dfebe3c9512648bbb6333b406113d0cd331b0e0aa2d34a1 LICENSE diff --git a/buildroot/package/ethtool/ethtool.mk b/buildroot/package/ethtool/ethtool.mk index d8ebba5fae0..be587f50835 100644 --- a/buildroot/package/ethtool/ethtool.mk +++ b/buildroot/package/ethtool/ethtool.mk @@ -4,11 +4,11 @@ # ################################################################################ -ETHTOOL_VERSION = 4.13 +ETHTOOL_VERSION = 4.15 ETHTOOL_SOURCE = ethtool-$(ETHTOOL_VERSION).tar.xz ETHTOOL_SITE = $(BR2_KERNEL_MIRROR)/software/network/ethtool ETHTOOL_LICENSE = GPL-2.0 -ETHTOOL_LICENSE_FILES = COPYING +ETHTOOL_LICENSE_FILES = LICENSE COPYING ETHTOOL_CONF_OPTS = \ $(if $(BR2_PACKAGE_ETHTOOL_PRETTY_PRINT),--enable-pretty-dump,--disable-pretty-dump) diff --git a/buildroot/package/eudev/S10udev b/buildroot/package/eudev/S10udev index 640fec625bb..4e799d65073 100755 --- a/buildroot/package/eudev/S10udev +++ b/buildroot/package/eudev/S10udev @@ -16,10 +16,6 @@ # /dev/zero, /dev/null -- that's needed to boot and run this script. # -# Check for missing binaries -UDEV_BIN=/sbin/udevd -test -x $UDEV_BIN || exit 5 - # Check for config file and read it UDEV_CONFIG=/etc/udev/udev.conf test -r $UDEV_CONFIG || exit 6 @@ -28,8 +24,8 @@ test -r $UDEV_CONFIG || exit 6 case "$1" in start) printf "Populating %s using udev: " "${udev_root:-/dev}" - printf '\000\000\000\000' > /proc/sys/kernel/hotplug - $UDEV_BIN -d || { echo "FAIL"; exit 1; } + [ -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" diff --git a/buildroot/package/eudev/eudev.mk b/buildroot/package/eudev/eudev.mk index d08b9bb0c92..11dc93762be 100644 --- a/buildroot/package/eudev/eudev.mk +++ b/buildroot/package/eudev/eudev.mk @@ -10,9 +10,6 @@ EUDEV_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) EUDEV_LICENSE_FILES = COPYING EUDEV_INSTALL_STAGING = YES -# mq_getattr is in librt -EUDEV_CONF_ENV += LIBS=-lrt - EUDEV_CONF_OPTS = \ --disable-manpages \ --sbindir=/sbin \ diff --git a/buildroot/package/execline/execline.hash b/buildroot/package/execline/execline.hash index afead5cd744..6bf3ccff646 100644 --- a/buildroot/package/execline/execline.hash +++ b/buildroot/package/execline/execline.hash @@ -1,3 +1,3 @@ # Locally generated -sha256 e4bb8fc8f20cca96f4bac9f0f74ebce5081b4b687bb11c79c843faf12507a64b execline-2.3.0.4.tar.gz -sha256 6ee77e7199d69b707ab864ea7a838f9562717aaa41c89413bdb2cf835f95052f COPYING +sha256 f6993094766652041c21fde9c07ef53a3cd4b93a64123d9578fb4997a2cefca1 execline-2.5.0.0.tar.gz +sha256 3eadcf980c40da0f257b8292d805ff41e5e5a908c1942315d9a627732e1aa012 COPYING diff --git a/buildroot/package/execline/execline.mk b/buildroot/package/execline/execline.mk index 68131b8fa28..83205e3706d 100644 --- a/buildroot/package/execline/execline.mk +++ b/buildroot/package/execline/execline.mk @@ -4,7 +4,7 @@ # ################################################################################ -EXECLINE_VERSION = 2.3.0.4 +EXECLINE_VERSION = 2.5.0.0 EXECLINE_SITE = http://skarnet.org/software/execline EXECLINE_LICENSE = ISC EXECLINE_LICENSE_FILES = COPYING diff --git a/buildroot/package/exim/0001-Build-buildconfig-for-the-host.patch b/buildroot/package/exim/0001-Build-buildconfig-for-the-host.patch index a926fbdab3b..87eb527974a 100644 --- a/buildroot/package/exim/0001-Build-buildconfig-for-the-host.patch +++ b/buildroot/package/exim/0001-Build-buildconfig-for-the-host.patch @@ -17,7 +17,7 @@ index 29a6ad3..420ba60 100644 - @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 $(LIBS) ++ $(FE)$(HOSTCC) $(HOSTCFLAGS) $(INCLUDE) -o buildconfig buildconfig.c # Target for the exicyclog utility script diff --git a/buildroot/package/faketime/0002-src-Makefile-disable-Werror.patch b/buildroot/package/faketime/0002-src-Makefile-disable-Werror.patch new file mode 100644 index 00000000000..e1e3b321b85 --- /dev/null +++ b/buildroot/package/faketime/0002-src-Makefile-disable-Werror.patch @@ -0,0 +1,32 @@ +From bcde6e6f34c3cf78a254315c5caa530db91802fb Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 17 May 2018 23:41:03 +0200 +Subject: [PATCH] src/Makefile: disable -Werror + +gcc 8.x has enabled additional warnings that break the build due to +-Werror, so let's drop -Werror for now. A set of patches has been +submitted upstream (https://github.com/wolfcw/libfaketime/pull/161) to +properly fix the gcc 8.x issues, but in the mean time, disabling +-Werror is a simpler option. + +Signed-off-by: Thomas Petazzoni +--- + src/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/Makefile b/src/Makefile +index bbbd476..6b0d2cd 100644 +--- a/src/Makefile ++++ b/src/Makefile +@@ -67,7 +67,7 @@ INSTALL ?= install + PREFIX ?= /usr/local + LIBDIRNAME ?= /lib/faketime + +-CFLAGS += -std=gnu99 -Wall -Wextra -Werror -Wno-nonnull-compare -DFAKE_STAT -DFAKE_SLEEP -DFAKE_TIMERS -DFAKE_INTERNAL_CALLS -fPIC -DPREFIX='"'$(PREFIX)'"' -DLIBDIRNAME='"'$(LIBDIRNAME)'"' ++CFLAGS += -std=gnu99 -Wall -Wextra -Wno-nonnull-compare -DFAKE_STAT -DFAKE_SLEEP -DFAKE_TIMERS -DFAKE_INTERNAL_CALLS -fPIC -DPREFIX='"'$(PREFIX)'"' -DLIBDIRNAME='"'$(LIBDIRNAME)'"' + LIB_LDFLAGS += -shared + LDFLAGS += -Wl,--version-script=libfaketime.map -lpthread + LDADD += -ldl -lm -lrt +-- +2.14.3 + diff --git a/buildroot/package/fan-ctrl/fan-ctrl.mk b/buildroot/package/fan-ctrl/fan-ctrl.mk index 53533a8a17a..81a52f1e9f3 100644 --- a/buildroot/package/fan-ctrl/fan-ctrl.mk +++ b/buildroot/package/fan-ctrl/fan-ctrl.mk @@ -12,7 +12,7 @@ FAN_CTRL_LICENSE = GPL-2.0+ FAN_CTRL_LICENSE_FILES = fan-ctrl.c define FAN_CTRL_EXTRACT_CMDS - cp $(DL_DIR)/$(FAN_CTRL_SOURCE) $(@D)/fan-ctrl.c + cp $(FAN_CTRL_DL_DIR)/$(FAN_CTRL_SOURCE) $(@D)/fan-ctrl.c endef define FAN_CTRL_BUILD_CMDS diff --git a/buildroot/package/fbgrab/0100-fix-pixfmt-report.patch b/buildroot/package/fbgrab/0100-fix-pixfmt-report.patch new file mode 100644 index 00000000000..8cff7ef8c30 --- /dev/null +++ b/buildroot/package/fbgrab/0100-fix-pixfmt-report.patch @@ -0,0 +1,24 @@ +Fix pixel format report + +When fbgrab tells about the framebuffer pixel format, blue and green +are accidentally swapped in 'length' and 'msb_right' columns. Let's +order everything as RGB. + +Upstream-Status: Submitted [Gunnar Monell ] + +Signed-off-by: Timo Ketola + +diff -u a/fbgrab.c b/fbgrab.c +--- a/fbgrab.c 2018-03-07 11:42:04.739250433 +0200 ++++ b/fbgrab.c 2018-03-07 11:43:26.128043877 +0200 +@@ -169,8 +169,8 @@ + fprintf(stderr, "bits_per_pixel: %i\n", fb_varinfo_p->bits_per_pixel); + fprintf(stderr, "grayscale: %s\n", fb_varinfo_p->grayscale ? "true" : "false"); + fprintf(stderr, "red: offset: %i, length: %i, msb_right: %i\n", fb_varinfo_p->red.offset, fb_varinfo_p->red.length, fb_varinfo_p->red.msb_right); +- fprintf(stderr, "blue: offset: %i, length: %i, msb_right: %i\n", fb_varinfo_p->blue.offset, fb_varinfo_p->green.length, fb_varinfo_p->green.msb_right); +- fprintf(stderr, "green: offset: %i, length: %i, msb_right: %i\n", fb_varinfo_p->green.offset, fb_varinfo_p->blue.length, fb_varinfo_p->blue.msb_right); ++ fprintf(stderr, "green: offset: %i, length: %i, msb_right: %i\n", fb_varinfo_p->green.offset, fb_varinfo_p->green.length, fb_varinfo_p->green.msb_right); ++ fprintf(stderr, "blue: offset: %i, length: %i, msb_right: %i\n", fb_varinfo_p->blue.offset, fb_varinfo_p->blue.length, fb_varinfo_p->blue.msb_right); + fprintf(stderr, "alpha: offset: %i, length: %i, msb_right: %i\n", fb_varinfo_p->transp.offset, fb_varinfo_p->transp.length, fb_varinfo_p->transp.msb_right); + fprintf(stderr, "pixel format: %s\n", fb_varinfo_p->nonstd == 0 ? "standard" : "non-standard"); + } diff --git a/buildroot/package/ffmpeg/0001-bfin-disable-optimization.patch b/buildroot/package/ffmpeg/0001-bfin-disable-optimization.patch deleted file mode 100644 index 1d8a4f015dc..00000000000 --- a/buildroot/package/ffmpeg/0001-bfin-disable-optimization.patch +++ /dev/null @@ -1,26 +0,0 @@ -Fix bfin compile error - -See gcc bug report: -https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77311 - -Signed-off-by: Waldemar Brodkorb - -diff -Nur ffmpeg-2.8.7.orig/libavcodec/hevcdsp_template.c ffmpeg-2.8.7/libavcodec/hevcdsp_template.c ---- ffmpeg-2.8.7.orig/libavcodec/hevcdsp_template.c 2016-03-29 04:25:16.000000000 +0200 -+++ ffmpeg-2.8.7/libavcodec/hevcdsp_template.c 2016-08-12 21:32:36.728178969 +0200 -@@ -1517,7 +1517,14 @@ - #define TQ2 pix[2 * xstride + 3 * ystride] - #define TQ3 pix[3 * xstride + 3 * ystride] - --static void FUNC(hevc_loop_filter_luma)(uint8_t *_pix, -+// Blackfin gcc 6.1.x fails with -+// unable to find a register to spill in class CCREGS -+#if defined(__bfin__) -+#define disable_opt __attribute__ ((optimize("O1"))) -+#else -+#define disable_opt -+#endif -+static void disable_opt FUNC(hevc_loop_filter_luma)(uint8_t *_pix, - ptrdiff_t _xstride, ptrdiff_t _ystride, - int beta, int *_tc, - uint8_t *_no_p, uint8_t *_no_q) diff --git a/buildroot/package/ffmpeg/0002-ffmpeg-pthreads.patch b/buildroot/package/ffmpeg/0001-ffmpeg-pthreads.patch similarity index 100% rename from buildroot/package/ffmpeg/0002-ffmpeg-pthreads.patch rename to buildroot/package/ffmpeg/0001-ffmpeg-pthreads.patch diff --git a/buildroot/package/ffmpeg/ffmpeg.mk b/buildroot/package/ffmpeg/ffmpeg.mk index 5d2f89fb436..432e4cda09c 100644 --- a/buildroot/package/ffmpeg/ffmpeg.mk +++ b/buildroot/package/ffmpeg/ffmpeg.mk @@ -49,7 +49,6 @@ FFMPEG_CONF_OPTS = \ --disable-frei0r \ --disable-libopencore-amrnb \ --disable-libopencore-amrwb \ - --disable-libcdio \ --disable-libdc1394 \ --disable-libgsm \ --disable-libilbc \ @@ -203,18 +202,25 @@ 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_LIBOPENSSL),y) +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 += libopenssl +FFMPEG_DEPENDENCIES += openssl endif else FFMPEG_CONF_OPTS += --disable-openssl diff --git a/buildroot/package/filemq/Config.in b/buildroot/package/filemq/Config.in index b4720c1d4c2..b015e2ead16 100644 --- a/buildroot/package/filemq/Config.in +++ b/buildroot/package/filemq/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_FILEMQ bool "filemq" depends on BR2_INSTALL_LIBSTDCPP # zeromq - depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # zeromq depends on BR2_USE_MMU # czmq select BR2_PACKAGE_OPENSSL select BR2_PACKAGE_CZMQ @@ -11,6 +11,6 @@ config BR2_PACKAGE_FILEMQ http://github.com/zeromq/filemq -comment "filemq needs a toolchain w/ C++, threads" +comment "filemq needs a toolchain w/ C++, NPTL" depends on BR2_USE_MMU - depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS_NPTL) diff --git a/buildroot/package/flann/0001-src-cpp-fix-cmake-3.11-build.patch b/buildroot/package/flann/0001-src-cpp-fix-cmake-3.11-build.patch new file mode 100644 index 00000000000..b37bedcf6d5 --- /dev/null +++ b/buildroot/package/flann/0001-src-cpp-fix-cmake-3.11-build.patch @@ -0,0 +1,80 @@ +From fa5ec96a94646492a3f908e12905b3e48a8e800b Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Wed, 18 Apr 2018 20:24:13 +0200 +Subject: [PATCH] src/cpp: fix cmake >= 3.11 build + +CMake < 3.11 doesn't support add_library() without any source file +(i.e add_library(foo SHARED)). But flann CMake use a trick that use +an empty string "" as source list (i.e add_library(foo SHARED "")). +This look like a bug in CMake < 3.11. + +With CMake >= 3.11, the new behaviour of add_library() break the +existing flann CMake code. + +From CMake Changelog [1]: +"add_library() and add_executable() commands can now be called without + any sources and will not complain as long as sources are added later + via the target_sources() command." + +Note: flann CMake code doesn't use target_sources() since no source file +are provided intentionally since the flann shared library is created by +linking with the flann_cpp_s static library with this line: + +target_link_libraries(flann_cpp -Wl,-whole-archive flann_cpp_s -Wl,-no-whole-archive) + +If you try to use "add_library(flann_cpp SHARED ${CPP_SOURCES})" (as it should +be normally done), the link fail due to already defined symbol. + +They are building the shared version using the static library "to speedup the +build time" [3] + +This issue is already reported upstream [2] with a proposed solution. + +Upstream status: Pending + +Fixes: +http://autobuild.buildroot.net/results/b2f/b2febfaf8c44ce477b3e4a5b9b976fd25e8d7454 + +[1] https://cmake.org/cmake/help/v3.11/release/3.11.html +[2] https://github.com/mariusmuja/flann/issues/369 +[3] https://github.com/mariusmuja/flann/commit/0fd62b43be2fbb0b8d791ee36290791224dc030c + +Signed-off-by: Romain Naour +--- + src/cpp/CMakeLists.txt | 4 ++-- + src/cpp/empty.cpp | 1 + + 2 files changed, 3 insertions(+), 2 deletions(-) + create mode 100644 src/cpp/empty.cpp + +diff --git a/src/cpp/CMakeLists.txt b/src/cpp/CMakeLists.txt +index b44a735..a816863 100644 +--- a/src/cpp/CMakeLists.txt ++++ b/src/cpp/CMakeLists.txt +@@ -29,7 +29,7 @@ if (BUILD_CUDA_LIB) + endif() + + if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC) +- add_library(flann_cpp SHARED "") ++ add_library(flann_cpp SHARED "empty.cpp") + set_target_properties(flann_cpp PROPERTIES LINKER_LANGUAGE CXX) + target_link_libraries(flann_cpp -Wl,-whole-archive flann_cpp_s -Wl,-no-whole-archive) + +@@ -85,7 +85,7 @@ if (BUILD_C_BINDINGS) + set_property(TARGET flann_s PROPERTY COMPILE_DEFINITIONS FLANN_STATIC) + + if(CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_COMPILER_IS_GNUCC) +- add_library(flann SHARED "") ++ add_library(flann SHARED "empty.cpp") + set_target_properties(flann PROPERTIES LINKER_LANGUAGE CXX) + target_link_libraries(flann -Wl,-whole-archive flann_s -Wl,-no-whole-archive) + else() +diff --git a/src/cpp/empty.cpp b/src/cpp/empty.cpp +new file mode 100644 +index 0000000..40a8c17 +--- /dev/null ++++ b/src/cpp/empty.cpp +@@ -0,0 +1 @@ ++/* empty */ +-- +2.14.3 + diff --git a/buildroot/package/flannel/flannel.mk b/buildroot/package/flannel/flannel.mk index bbb2c72a729..d00d2df92c6 100644 --- a/buildroot/package/flannel/flannel.mk +++ b/buildroot/package/flannel/flannel.mk @@ -11,36 +11,12 @@ FLANNEL_SOURCE = $(FLANNEL_VERSION).tar.gz FLANNEL_LICENSE = Apache-2.0 FLANNEL_LICENSE_FILES = LICENSE -FLANNEL_DEPENDENCIES = host-go - -FLANNEL_MAKE_ENV = \ - $(HOST_GO_TARGET_ENV) \ - GOBIN="$(@D)/bin" \ - GOPATH="$(@D)/gopath" \ - CGO_ENABLED=1 - -FLANNEL_GLDFLAGS = \ - -X github.com/coreos/flannel/version.Version=$(FLANNEL_VERSION) - -ifeq ($(BR2_STATIC_LIBS),y) -FLANNEL_GLDFLAGS += -extldflags '-static' -endif - -define FLANNEL_CONFIGURE_CMDS - # Put sources at prescribed GOPATH location. - mkdir -p $(@D)/gopath/src/github.com/coreos - ln -s $(@D) $(@D)/gopath/src/github.com/coreos/flannel -endef - -define FLANNEL_BUILD_CMDS - cd $(@D) && $(FLANNEL_MAKE_ENV) $(HOST_DIR)/bin/go \ - build -v -o $(@D)/bin/flanneld -ldflags "$(FLANNEL_GLDFLAGS)" . -endef +FLANNEL_LDFLAGS = -X github.com/coreos/flannel/version.Version=$(FLANNEL_VERSION) +# Install flannel to its well known location. define FLANNEL_INSTALL_TARGET_CMDS - # Install flannel to its well known location. - $(INSTALL) -D -m 0755 $(@D)/bin/flanneld $(TARGET_DIR)/opt/bin/flanneld + $(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 $(generic-package)) +$(eval $(golang-package)) diff --git a/buildroot/package/flare-engine/Config.in b/buildroot/package/flare-engine/Config.in new file mode 100644 index 00000000000..cdcb0189486 --- /dev/null +++ b/buildroot/package/flare-engine/Config.in @@ -0,0 +1,19 @@ +config BR2_PACKAGE_FLARE_ENGINE + bool "flare-engine" + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_STATIC_LIBS # SDL2 + select BR2_PACKAGE_SDL2 + select BR2_PACKAGE_SDL2_IMAGE + select BR2_PACKAGE_SDL2_MIXER + select BR2_PACKAGE_SDL2_TTF + 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. + + http://flarerpg.org + +comment "flare-engine needs a toolchain w/ C++, dynamic library" + depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS diff --git a/buildroot/package/flare-engine/flare-engine.hash b/buildroot/package/flare-engine/flare-engine.hash new file mode 100644 index 00000000000..8c6fc3ab1b9 --- /dev/null +++ b/buildroot/package/flare-engine/flare-engine.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 4bbd4674513b643be6294188904665c53f0ef2912e803212c05e8fd22a44d74d flare-engine-v1.0.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/flare-engine/flare-engine.mk b/buildroot/package/flare-engine/flare-engine.mk new file mode 100644 index 00000000000..0aac3bd33cb --- /dev/null +++ b/buildroot/package/flare-engine/flare-engine.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# flare-engine +# +################################################################################ + +FLARE_ENGINE_VERSION = v1.0 +FLARE_ENGINE_SITE = $(call github,clintbellanger,flare-engine,$(FLARE_ENGINE_VERSION)) +FLARE_ENGINE_LICENSE = GPL-3.0+ +FLARE_ENGINE_LICENSE_FILES = COPYING + +FLARE_ENGINE_DEPENDENCIES += sdl2 sdl2_image sdl2_mixer sdl2_ttf + +# Don't use /usr/games and /usr/share/games +FLARE_ENGINE_CONF_OPTS += -DBINDIR=bin -DDATADIR=share/flare + +$(eval $(cmake-package)) diff --git a/buildroot/package/flare-game/Config.in b/buildroot/package/flare-game/Config.in new file mode 100644 index 00000000000..ca68d19a69f --- /dev/null +++ b/buildroot/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. + + http://flarerpg.org diff --git a/buildroot/package/flare-game/flare-game.hash b/buildroot/package/flare-game/flare-game.hash new file mode 100644 index 00000000000..a27c66d9e33 --- /dev/null +++ b/buildroot/package/flare-game/flare-game.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 5c8e9d72fcbe59f1861f79ac7b76ceffe3ec61d1df241c32d9133fe158fba4c1 flare-game-v1.0.tar.gz +sha256 9fce5eb663f136449e11293a871ed96db5ba579116a927fc6a70dd20a4a5b9e6 README diff --git a/buildroot/package/flare-game/flare-game.mk b/buildroot/package/flare-game/flare-game.mk new file mode 100644 index 00000000000..89750d99b14 --- /dev/null +++ b/buildroot/package/flare-game/flare-game.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# flare-game +# +################################################################################ + +FLARE_GAME_VERSION = v1.0 +FLARE_GAME_SITE = $(call github,clintbellanger,flare-game,$(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 = README + +FLARE_GAME_DEPENDENCIES = flare-engine + +# Don't use /usr/share/games +FLARE_GAME_CONF_OPTS += -DDATADIR=share/flare + +$(eval $(cmake-package)) diff --git a/buildroot/package/flashrom/flashrom.hash b/buildroot/package/flashrom/flashrom.hash index 64b67b99cf4..3a68e8acb7a 100644 --- a/buildroot/package/flashrom/flashrom.hash +++ b/buildroot/package/flashrom/flashrom.hash @@ -1,2 +1,4 @@ -# Locally computed -sha256 cb3156b0f63eb192024b76c0814135930297aac41f80761a5d293de769783c45 flashrom-0.9.9.tar.bz2 +# Locally computed after checking pgp signature +# https://download.flashrom.org/releases/flashrom-1.0.tar.bz2.asc +sha256 3702fa215ba5fb5af8e54c852d239899cfa1389194c1e51cb2a170c4dc9dee64 flashrom-1.0.tar.bz2 +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/flashrom/flashrom.mk b/buildroot/package/flashrom/flashrom.mk index f9ab6294a52..70f47b5a041 100644 --- a/buildroot/package/flashrom/flashrom.mk +++ b/buildroot/package/flashrom/flashrom.mk @@ -4,9 +4,9 @@ # ################################################################################ -FLASHROM_VERSION = 0.9.9 +FLASHROM_VERSION = 1.0 FLASHROM_SOURCE = flashrom-$(FLASHROM_VERSION).tar.bz2 -FLASHROM_SITE = http://download.flashrom.org/releases +FLASHROM_SITE = https://download.flashrom.org/releases FLASHROM_DEPENDENCIES = pciutils libusb libusb-compat libftdi host-pkgconf FLASHROM_LICENSE = GPL-2.0+ FLASHROM_LICENSE_FILES = COPYING diff --git a/buildroot/package/flatbuffers/flatbuffers.hash b/buildroot/package/flatbuffers/flatbuffers.hash index bd39ca385bf..a8f23f4ef9e 100644 --- a/buildroot/package/flatbuffers/flatbuffers.hash +++ b/buildroot/package/flatbuffers/flatbuffers.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 c45029c0a0f1a88d416af143e34de96b3091642722aa2d8c090916c6d1498c2e flatbuffers-v1.8.0.tar.gz +sha256 5ca5491e4260cacae30f1a5786d109230db3f3a6e5a0eb45d0d0608293d247e3 flatbuffers-v1.9.0.tar.gz sha256 7ec9661a8afafab1eee3523d6f1a193eff76314a5ab10b4ce96aefd87621b0c3 LICENSE.txt diff --git a/buildroot/package/flatbuffers/flatbuffers.mk b/buildroot/package/flatbuffers/flatbuffers.mk index 2b640ecc2a0..26d93078926 100644 --- a/buildroot/package/flatbuffers/flatbuffers.mk +++ b/buildroot/package/flatbuffers/flatbuffers.mk @@ -4,7 +4,7 @@ # ################################################################################ -FLATBUFFERS_VERSION = v1.8.0 +FLATBUFFERS_VERSION = v1.9.0 FLATBUFFERS_SITE = $(call github,google,flatbuffers,$(FLATBUFFERS_VERSION)) FLATBUFFERS_LICENSE = Apache-2.0 FLATBUFFERS_LICENSE_FILES = LICENSE.txt diff --git a/buildroot/package/freescale-imx/Config.in b/buildroot/package/freescale-imx/Config.in index b5e5ab23dc4..97aeb15764e 100644 --- a/buildroot/package/freescale-imx/Config.in +++ b/buildroot/package/freescale-imx/Config.in @@ -1,6 +1,6 @@ menuconfig BR2_PACKAGE_FREESCALE_IMX bool "Freescale i.MX libraries" - depends on BR2_arm + depends on BR2_arm || BR2_aarch64 help Those packages provide hardware acceleration for GPU or VPU, hardware optimization or some hardware tools for Freescale @@ -40,6 +40,8 @@ config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6UL config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX7 bool "imx7d/imx7ulp" +config BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M + bool "imx8m" endchoice config BR2_PACKAGE_FREESCALE_IMX_PLATFORM @@ -54,14 +56,14 @@ config BR2_PACKAGE_FREESCALE_IMX_PLATFORM 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_IMX8M 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 || \ - BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S + BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6Q config BR2_PACKAGE_FREESCALE_IMX_HAS_VIV_GPU bool @@ -69,6 +71,7 @@ config BR2_PACKAGE_FREESCALE_IMX_HAS_VIV_GPU BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX6S || \ BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX7 +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" diff --git a/buildroot/package/freescale-imx/firmware-imx/Config.in b/buildroot/package/freescale-imx/firmware-imx/Config.in index fca280a85ac..56d5b807414 100644 --- a/buildroot/package/freescale-imx/firmware-imx/Config.in +++ b/buildroot/package/freescale-imx/firmware-imx/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_FIRMWARE_IMX bool "firmware-imx" - depends on BR2_arm # Only relevant for i.MX + depends on BR2_arm || BR2_aarch64 # Only relevant for i.MX help Firmware blobs for the Freescale i.MX SoCs. diff --git a/buildroot/package/freescale-imx/firmware-imx/firmware-imx.mk b/buildroot/package/freescale-imx/firmware-imx/firmware-imx.mk index 630afcaa37c..351496a7a7e 100644 --- a/buildroot/package/freescale-imx/firmware-imx/firmware-imx.mk +++ b/buildroot/package/freescale-imx/firmware-imx/firmware-imx.mk @@ -15,9 +15,37 @@ FIRMWARE_IMX_REDISTRIBUTE = NO FIRMWARE_IMX_BLOBS = sdma vpu define FIRMWARE_IMX_EXTRACT_CMDS - $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(FIRMWARE_IMX_SOURCE)) + $(call FREESCALE_IMX_EXTRACT_HELPER,$(FIRMWARE_IMX_DL_DIR)/$(FIRMWARE_IMX_SOURCE)) endef +ifeq ($(BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M),y) +FIRMWARE_IMX_INSTALL_IMAGES = YES +FIRMWARE_IMX_DDRFW_DIR = $(@D)/firmware/ddr/synopsys +define FIRMWARE_IMX_PREPARE_LPDDR4_FW + $(TARGET_OBJCOPY) -I binary -O binary --pad-to 0x8000 --gap-fill=0x0 \ + $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_$(1)_imem.bin \ + $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_$(1)_imem_pad.bin + $(TARGET_OBJCOPY) -I binary -O binary --pad-to 0x4000 --gap-fill=0x0 \ + $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_$(1)_dmem.bin \ + $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_$(1)_dmem_pad.bin + cat $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_$(1)_imem_pad.bin \ + $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_$(1)_dmem_pad.bin > \ + $(FIRMWARE_IMX_DDRFW_DIR)/lpddr4_pmu_train_$(1)_fw.bin +endef + +define FIRMWARE_IMX_INSTALL_IMAGES_CMDS + # Create padded versions of lpddr4_pmu_* and generate lpddr4_pmu_train_fw.bin. + # lpddr4_pmu_train_fw.bin isneeded when generating imx-boot-imx8mqevk-sd.bin + # which is done in post-image script. + $(call FIRMWARE_IMX_PREPARE_LPDDR4_FW,1d) + $(call FIRMWARE_IMX_PREPARE_LPDDR4_FW,2d) + 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 + cp $(@D)/firmware/hdmi/cadence/signed_hdmi_imx8m.bin \ + $(BINARIES_DIR)/signed_hdmi_imx8m.bin +endef +else define FIRMWARE_IMX_INSTALL_TARGET_CMDS mkdir -p $(TARGET_DIR)/lib/firmware/imx for blobdir in $(FIRMWARE_IMX_BLOBS); do \ @@ -27,5 +55,6 @@ define FIRMWARE_IMX_INSTALL_TARGET_CMDS mv $(TARGET_DIR)/lib/firmware/imx/epdc/epdc_ED060XH2C1.fw.nonrestricted \ $(TARGET_DIR)/lib/firmware/imx/epdc/epdc_ED060XH2C1.fw endef +endif $(eval $(generic-package)) diff --git a/buildroot/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.mk b/buildroot/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.mk index 44a6b4c7d25..5586073712a 100644 --- a/buildroot/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.mk +++ b/buildroot/package/freescale-imx/gpu-amd-bin-mx51/gpu-amd-bin-mx51.mk @@ -23,7 +23,7 @@ GPU_AMD_BIN_MX51_LICENSE_FILES = EULA GPU_AMD_BIN_MX51_REDISTRIBUTE = NO define GPU_AMD_BIN_MX51_EXTRACT_CMDS - $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(GPU_AMD_BIN_MX51_SOURCE)) + $(call FREESCALE_IMX_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 diff --git a/buildroot/package/freescale-imx/imx-alsa-plugins/Config.in b/buildroot/package/freescale-imx/imx-alsa-plugins/Config.in new file mode 100644 index 00000000000..ec9b5b19cf4 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-alsa-plugins/Config.in @@ -0,0 +1,22 @@ +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) + +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/buildroot/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.hash b/buildroot/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.hash new file mode 100644 index 00000000000..b0f47080ced --- /dev/null +++ b/buildroot/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.hash @@ -0,0 +1,3 @@ +# Locally calculated: +sha256 e76a71e9166fbedeaa535fd7ebc07edc30a1e87f529ab2aa733e3603d3183ed0 imx-alsa-plugins-rel_imx_4.9.x_1.0.0_ga.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING.GPL diff --git a/buildroot/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.mk b/buildroot/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.mk new file mode 100644 index 00000000000..9c81ff0df00 --- /dev/null +++ b/buildroot/package/freescale-imx/imx-alsa-plugins/imx-alsa-plugins.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# imx-alsa-plugins +# +################################################################################ + +IMX_ALSA_PLUGINS_VERSION = rel_imx_4.9.x_1.0.0_ga +IMX_ALSA_PLUGINS_SITE = https://source.codeaurora.org/external/imx/imx-alsa-plugins +IMX_ALSA_PLUGINS_SITE_METHOD = git +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/buildroot/package/freescale-imx/imx-codec/imx-codec.mk b/buildroot/package/freescale-imx/imx-codec/imx-codec.mk index ea4d90110ff..784c1fa4a97 100644 --- a/buildroot/package/freescale-imx/imx-codec/imx-codec.mk +++ b/buildroot/package/freescale-imx/imx-codec/imx-codec.mk @@ -26,7 +26,7 @@ IMX_CODEC_CONF_OPTS += --enable-vpu endif define IMX_CODEC_EXTRACT_CMDS - $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(IMX_CODEC_SOURCE)) + $(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_CODEC_DL_DIR)/$(IMX_CODEC_SOURCE)) endef # FIXME The Makefile installs both the arm9 and arm11 versions of the diff --git a/buildroot/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.mk b/buildroot/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.mk index 0c92b826c41..aafd70dc9dc 100644 --- a/buildroot/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.mk +++ b/buildroot/package/freescale-imx/imx-gpu-g2d/imx-gpu-g2d.mk @@ -15,7 +15,7 @@ IMX_GPU_G2D_LICENSE_FILES = EULA COPYING IMX_GPU_G2D_REDISTRIBUTE = NO define IMX_GPU_G2D_EXTRACT_CMDS - $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(IMX_GPU_G2D_SOURCE)) + $(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_GPU_G2D_DL_DIR)/$(IMX_GPU_G2D_SOURCE)) endef define IMX_GPU_G2D_INSTALL_STAGING_CMDS diff --git a/buildroot/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk b/buildroot/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk index a9f8b9d9bdb..0dc2072984d 100644 --- a/buildroot/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk +++ b/buildroot/package/freescale-imx/imx-gpu-viv/imx-gpu-viv.mk @@ -26,7 +26,7 @@ IMX_GPU_VIV_DEPENDENCIES += xlib_libXdamage xlib_libXext xlib_libXfixes endif define IMX_GPU_VIV_EXTRACT_CMDS - $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(IMX_GPU_VIV_SOURCE)) + $(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_GPU_VIV_DL_DIR)/$(IMX_GPU_VIV_SOURCE)) endef # Instead of building, we fix up the inconsistencies that exist diff --git a/buildroot/package/freescale-imx/imx-parser/imx-parser.mk b/buildroot/package/freescale-imx/imx-parser/imx-parser.mk index d79a4444c81..11536e5024f 100644 --- a/buildroot/package/freescale-imx/imx-parser/imx-parser.mk +++ b/buildroot/package/freescale-imx/imx-parser/imx-parser.mk @@ -24,7 +24,7 @@ IMX_PARSER_CONF_OPTS += --enable-fsw endif define IMX_PARSER_EXTRACT_CMDS - $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(IMX_PARSER_SOURCE)) + $(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_PARSER_DL_DIR)/$(IMX_PARSER_SOURCE)) endef # The Makefile installs several versions of the libraries, but we only diff --git a/buildroot/package/freescale-imx/imx-vpu/imx-vpu.mk b/buildroot/package/freescale-imx/imx-vpu/imx-vpu.mk index e3a1ee661d6..2bcfe53eba0 100644 --- a/buildroot/package/freescale-imx/imx-vpu/imx-vpu.mk +++ b/buildroot/package/freescale-imx/imx-vpu/imx-vpu.mk @@ -21,7 +21,7 @@ IMX_VPU_LICENSE_FILES = EULA COPYING IMX_VPU_REDISTRIBUTE = NO define IMX_VPU_EXTRACT_CMDS - $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(IMX_VPU_SOURCE)) + $(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_VPU_DL_DIR)/$(IMX_VPU_SOURCE)) endef define IMX_VPU_BUILD_CMDS diff --git a/buildroot/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.mk b/buildroot/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.mk index 7cbf7784c90..edba87279fe 100644 --- a/buildroot/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.mk +++ b/buildroot/package/freescale-imx/imx-vpuwrap/imx-vpuwrap.mk @@ -15,7 +15,7 @@ IMX_VPUWRAP_LICENSE_FILES = EULA COPYING IMX_VPUWRAP_REDISTRIBUTE = NO define IMX_VPUWRAP_EXTRACT_CMDS - $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(IMX_VPUWRAP_SOURCE)) + $(call FREESCALE_IMX_EXTRACT_HELPER,$(IMX_VPUWRAP_DL_DIR)/$(IMX_VPUWRAP_SOURCE)) endef $(eval $(autotools-package)) diff --git a/buildroot/package/freescale-imx/libz160/libz160.mk b/buildroot/package/freescale-imx/libz160/libz160.mk index af43b1859d5..5b1feeb441f 100644 --- a/buildroot/package/freescale-imx/libz160/libz160.mk +++ b/buildroot/package/freescale-imx/libz160/libz160.mk @@ -15,7 +15,7 @@ LIBZ160_LICENSE_FILES = EULA LIBZ160_REDISTRIBUTE = NO define LIBZ160_EXTRACT_CMDS - $(call FREESCALE_IMX_EXTRACT_HELPER,$(DL_DIR)/$(LIBZ160_SOURCE)) + $(call FREESCALE_IMX_EXTRACT_HELPER,$(LIBZ160_DL_DIR)/$(LIBZ160_SOURCE)) endef define LIBZ160_INSTALL_STAGING_CMDS diff --git a/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.hash b/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.hash index 67804883bc8..475556ebe98 100644 --- a/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.hash +++ b/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 135f545ad0eef49d1228f8d66a4e66f1ff5f1f8fdf115e88c1df3df8df49fdcb freeswitch-mod-bcg729-c504eea91f225014380ae17c00b35e7173e316ad.tar.gz +sha256 0dec5b78f655e175936806396b89b4997c8e543a1c84683a19ea2b6f36e01d7e freeswitch-mod-bcg729-v1.0.4.tar.gz sha256 bb4680b13c3190429464a8308a07d7d891e6454349fb7be856e02405b25b1195 LICENSE diff --git a/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.mk b/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.mk index 15f9375f2b3..98324b2a081 100644 --- a/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.mk +++ b/buildroot/package/freeswitch-mod-bcg729/freeswitch-mod-bcg729.mk @@ -4,7 +4,7 @@ # ################################################################################ -FREESWITCH_MOD_BCG729_VERSION = c504eea91f225014380ae17c00b35e7173e316ad +FREESWITCH_MOD_BCG729_VERSION = v1.0.4 FREESWITCH_MOD_BCG729_SITE = $(call github,xadhoom,mod_bcg729,$(FREESWITCH_MOD_BCG729_VERSION)) FREESWITCH_MOD_BCG729_LICENSE = MPL-1.1 FREESWITCH_MOD_BCG729_LICENSE_FILES = LICENSE diff --git a/buildroot/package/freeswitch/freeswitch.mk b/buildroot/package/freeswitch/freeswitch.mk index 98f2f483566..4d490b07304 100644 --- a/buildroot/package/freeswitch/freeswitch.mk +++ b/buildroot/package/freeswitch/freeswitch.mk @@ -275,6 +275,17 @@ FREESWITCH_DEPENDENCIES += opencv 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_CONF_OPTS += \ + --enable-core-pgsql-pkgconfig \ + --enable-core-pgsql-support +FREESWITCH_DEPENDENCIES += postgresql +else +FREESWITCH_CONF_OPTS += --disable-core-pgsql-support +endif + ifeq ($(BR2_PACKAGE_UNIXODBC),y) FREESWITCH_DEPENDENCIES += unixodbc FREESWITCH_CONF_OPTS += \ diff --git a/buildroot/package/freetype/Config.in b/buildroot/package/freetype/Config.in index ded87388e87..06c6a8546df 100644 --- a/buildroot/package/freetype/Config.in +++ b/buildroot/package/freetype/Config.in @@ -3,4 +3,4 @@ config BR2_PACKAGE_FREETYPE help a free, high-quality and portable font engine. - http://www.freetype.org/ + https://www.freetype.org/ diff --git a/buildroot/package/freetype/freetype.hash b/buildroot/package/freetype/freetype.hash index 51d018465f4..806375c058c 100644 --- a/buildroot/package/freetype/freetype.hash +++ b/buildroot/package/freetype/freetype.hash @@ -1,9 +1,9 @@ -# From https://sourceforge.net/projects/freetype/files/freetype2/2.8.1/ -md5 bf0a210b6fe781228fa0e4a80691a521 freetype-2.8.1.tar.bz2 -sha1 417bb3747c4ac95b6f2652024a53fad45581fa1c freetype-2.8.1.tar.bz2 +# From https://sourceforge.net/projects/freetype/files/freetype2/2.9/ +md5 513c403c110016fdc7e537216a642b1d freetype-2.9.tar.bz2 +sha1 94c4399b1a55c5892812e732843fcb4a7c2fe657 freetype-2.9.tar.bz2 # Locally calculated -sha256 e5435f02e02d2b87bb8e4efdcaa14b1f78c9cf3ab1ed80f94b6382fb6acc7d78 freetype-2.8.1.tar.bz2 +sha256 e6ffba3c8cef93f557d1f767d7bc3dee860ac7a3aaff588a521e081bc36f4c8a freetype-2.9.tar.bz2 sha256 fd056de4196903a676208ef58cfddafc7d583d1f28fa2e44c309cf84a59e62fb docs/LICENSE.TXT -sha256 4a9a548027a2c1d37788519dea833294c9c81f1ebc280e817f41f50d0c642d78 docs/FTL.TXT +sha256 08c135755dd589039470f1fdbb400daaabaaa50d0b366d19cebff4d22986baa1 docs/FTL.TXT sha256 c4120c6752c910c299e3bd9cb3a46ff262c268303ca2069b61f92f10a5656c18 docs/GPLv2.TXT diff --git a/buildroot/package/freetype/freetype.mk b/buildroot/package/freetype/freetype.mk index 10286647997..05e9498c691 100644 --- a/buildroot/package/freetype/freetype.mk +++ b/buildroot/package/freetype/freetype.mk @@ -4,7 +4,7 @@ # ################################################################################ -FREETYPE_VERSION = 2.8.1 +FREETYPE_VERSION = 2.9 FREETYPE_SOURCE = freetype-$(FREETYPE_VERSION).tar.bz2 FREETYPE_SITE = http://download.savannah.gnu.org/releases/freetype FREETYPE_INSTALL_STAGING = YES diff --git a/buildroot/package/gauche/gauche.mk b/buildroot/package/gauche/gauche.mk index 1e1ee390af5..0b4185f5bf1 100644 --- a/buildroot/package/gauche/gauche.mk +++ b/buildroot/package/gauche/gauche.mk @@ -29,5 +29,5 @@ endif # here. GAUCHE_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=gnu99" -$(eval $(host-autotools-package)) $(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/gawk/0001-no-versioned.patch b/buildroot/package/gawk/0001-no-versioned.patch index 0c35088e865..c5bbdddeb5e 100644 --- a/buildroot/package/gawk/0001-no-versioned.patch +++ b/buildroot/package/gawk/0001-no-versioned.patch @@ -1,5 +1,4 @@ Disabled versioned installation of binaries to save space. -Also use symlinks where it's appropiate. Signed-off-by: Gustavo Zacarias [Gustavo: update for 4.1.2] @@ -7,15 +6,6 @@ Signed-off-by: Gustavo Zacarias diff -Nura gawk-4.1.2.orig/Makefile.in gawk-4.1.2/Makefile.in --- gawk-4.1.2.orig/Makefile.in 2015-04-29 16:11:09.367925925 -0300 +++ gawk-4.1.2/Makefile.in 2015-04-29 16:11:25.308466495 -0300 -@@ -554,7 +554,7 @@ - CLEANFILES = core core.* - - # We want hard links for install-exec-hook, below --LN = ln -+LN = $(LN_S) - - # For some make's, e.g. OpenBSD, that don't define this - RM = rm -f @@ -1173,6 +1173,7 @@ # (This is done universally, which may not always be right, but # there's no easy way to distinguish GNU from non-GNU systems.) diff --git a/buildroot/package/gawk/Config.in b/buildroot/package/gawk/Config.in index a065243b7db..e9cf4c5ff77 100644 --- a/buildroot/package/gawk/Config.in +++ b/buildroot/package/gawk/Config.in @@ -2,7 +2,6 @@ config BR2_PACKAGE_GAWK bool "gawk" depends on BR2_USE_WCHAR depends on BR2_USE_MMU # fork() - depends on !BR2_STATIC_LIBS depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS help A special-purpose programming language which is data driven @@ -11,7 +10,7 @@ config BR2_PACKAGE_GAWK http://www.gnu.org/software/gawk/ -comment "gawk needs a toolchain w/ wchar, dynamic library" +comment "gawk needs a toolchain w/ wchar" depends on BR2_USE_MMU - depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS + depends on !BR2_USE_WCHAR depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS diff --git a/buildroot/package/gawk/gawk.hash b/buildroot/package/gawk/gawk.hash index e2c7806cc5d..d8dd27c17c3 100644 --- a/buildroot/package/gawk/gawk.hash +++ b/buildroot/package/gawk/gawk.hash @@ -1,2 +1,5 @@ # Locally calculated after checking pgp signature -sha256 53e184e2d0f90def9207860531802456322be091c7b48f23fdc79cda65adc266 gawk-4.1.4.tar.xz +# https://ftp.gnu.org/gnu/gawk/gawk-4.2.1.tar.xz.sig +sha256 d1119785e746d46a8209d28b2de404a57f983aa48670f4e225531d3bdc175551 gawk-4.2.1.tar.xz +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/gawk/gawk.mk b/buildroot/package/gawk/gawk.mk index a3a29273736..0779736882b 100644 --- a/buildroot/package/gawk/gawk.mk +++ b/buildroot/package/gawk/gawk.mk @@ -4,7 +4,7 @@ # ################################################################################ -GAWK_VERSION = 4.1.4 +GAWK_VERSION = 4.2.1 GAWK_SOURCE = gawk-$(GAWK_VERSION).tar.xz GAWK_SITE = $(BR2_GNU_MIRROR)/gawk GAWK_DEPENDENCIES = host-gawk @@ -44,13 +44,5 @@ endef GAWK_POST_INSTALL_TARGET_HOOKS += GAWK_CREATE_SYMLINK -# Assume we support shared libs -# The check isn't cross-compile friendly and it's mandatory anyway -define GAWK_DISABLE_SHARED_CHECK - $(SED) 's/ check-for-shared-lib-support//' $(@D)/extension/Makefile.in -endef - -GAWK_POST_PATCH_HOOKS += GAWK_DISABLE_SHARED_CHECK - $(eval $(autotools-package)) $(eval $(host-autotools-package)) diff --git a/buildroot/package/gcc/4.9.4/0002-m68k-coldfire-pr68467.patch b/buildroot/package/gcc/4.9.4/0002-m68k-coldfire-pr68467.patch new file mode 100644 index 00000000000..d701ab6878e --- /dev/null +++ b/buildroot/package/gcc/4.9.4/0002-m68k-coldfire-pr68467.patch @@ -0,0 +1,48 @@ +Backport from upstream, see +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68467 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-4.9.4.orig/gcc/config/m68k/m68k.c gcc-4.9.4/gcc/config/m68k/m68k.c +--- gcc-4.9.4.orig/gcc/config/m68k/m68k.c 2014-02-27 12:10:55.000000000 +0100 ++++ gcc-4.9.4/gcc/config/m68k/m68k.c 2018-02-17 21:28:53.430538916 +0100 +@@ -166,6 +166,8 @@ + const_tree, bool); + static bool m68k_cannot_force_const_mem (enum machine_mode mode, rtx x); + static bool m68k_output_addr_const_extra (FILE *, rtx); ++static machine_mode m68k_promote_function_mode (const_tree, machine_mode, ++ int *, const_tree, int); + static void m68k_init_sync_libfuncs (void) ATTRIBUTE_UNUSED; + + /* Initialize the GCC target structure. */ +@@ -308,6 +310,9 @@ + #undef TARGET_ATOMIC_TEST_AND_SET_TRUEVAL + #define TARGET_ATOMIC_TEST_AND_SET_TRUEVAL 128 + ++#undef TARGET_PROMOTE_FUNCTION_MODE ++#define TARGET_PROMOTE_FUNCTION_MODE m68k_promote_function_mode ++ + static const struct attribute_spec m68k_attribute_table[] = + { + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, +@@ -6527,4 +6532,20 @@ + == m68k_fk_interrupt_handler)); + } + ++/* Implement TARGET_PROMOTE_FUNCTION_MODE. */ ++ ++static machine_mode ++m68k_promote_function_mode (const_tree type, machine_mode mode, ++ int *punsignedp ATTRIBUTE_UNUSED, ++ const_tree fntype ATTRIBUTE_UNUSED, ++ int for_return) ++{ ++ /* Promote libcall arguments narrower than int to match the normal C ++ ABI (for which promotions are handled via ++ TARGET_PROMOTE_PROTOTYPES). */ ++ if (type == NULL_TREE && !for_return && (mode == QImode || mode == HImode)) ++ return SImode; ++ return mode; ++} ++ + #include "gt-m68k.h" diff --git a/buildroot/package/gcc/4.9.4/891-fix-m68k-uclinux.patch b/buildroot/package/gcc/4.9.4/891-fix-m68k-uclinux.patch deleted file mode 100644 index 4347642d674..00000000000 --- a/buildroot/package/gcc/4.9.4/891-fix-m68k-uclinux.patch +++ /dev/null @@ -1,18 +0,0 @@ -avoids internal compiler error while compiling linux-atomic.c -See here: -https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53833 - -Signed-off-by: Waldemar Brodkorb - -diff -Nur gcc-4.9.3.orig/libgcc/config.host gcc-4.9.3/libgcc/config.host ---- gcc-4.9.3.orig/libgcc/config.host 2014-03-27 16:40:31.000000000 +0100 -+++ gcc-4.9.3/libgcc/config.host 2016-04-05 16:20:53.422809885 +0200 -@@ -750,7 +750,7 @@ - m68k*-*-openbsd*) - ;; - m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux with uClibc -- tmake_file="$tmake_file m68k/t-floatlib m68k/t-linux" -+ tmake_file="$tmake_file m68k/t-floatlib" - md_unwind_header=m68k/linux-unwind.h - ;; - m68k-*-linux*) # Motorola m68k's running GNU/Linux diff --git a/buildroot/package/gcc/5.5.0/0001-m68k-coldfire-pr68467.patch b/buildroot/package/gcc/5.5.0/0001-m68k-coldfire-pr68467.patch new file mode 100644 index 00000000000..75ad5360546 --- /dev/null +++ b/buildroot/package/gcc/5.5.0/0001-m68k-coldfire-pr68467.patch @@ -0,0 +1,48 @@ +Backport from upstream, see +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68467 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-5.5.0.orig/gcc/config/m68k/m68k.c gcc-5.5.0/gcc/config/m68k/m68k.c +--- gcc-5.5.0.orig/gcc/config/m68k/m68k.c 2015-01-15 14:28:42.000000000 +0100 ++++ gcc-5.5.0/gcc/config/m68k/m68k.c 2018-02-17 19:34:33.146309632 +0100 +@@ -196,6 +196,8 @@ + const_tree, bool); + static bool m68k_cannot_force_const_mem (machine_mode mode, rtx x); + static bool m68k_output_addr_const_extra (FILE *, rtx); ++static machine_mode m68k_promote_function_mode (const_tree, machine_mode, ++ int *, const_tree, int); + static void m68k_init_sync_libfuncs (void) ATTRIBUTE_UNUSED; + + /* Initialize the GCC target structure. */ +@@ -338,6 +340,9 @@ + #undef TARGET_ATOMIC_TEST_AND_SET_TRUEVAL + #define TARGET_ATOMIC_TEST_AND_SET_TRUEVAL 128 + ++#undef TARGET_PROMOTE_FUNCTION_MODE ++#define TARGET_PROMOTE_FUNCTION_MODE m68k_promote_function_mode ++ + static const struct attribute_spec m68k_attribute_table[] = + { + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, +@@ -6548,4 +6553,20 @@ + == m68k_fk_interrupt_handler)); + } + ++/* Implement TARGET_PROMOTE_FUNCTION_MODE. */ ++ ++static machine_mode ++m68k_promote_function_mode (const_tree type, machine_mode mode, ++ int *punsignedp ATTRIBUTE_UNUSED, ++ const_tree fntype ATTRIBUTE_UNUSED, ++ int for_return) ++{ ++ /* Promote libcall arguments narrower than int to match the normal C ++ ABI (for which promotions are handled via ++ TARGET_PROMOTE_PROTOTYPES). */ ++ if (type == NULL_TREE && !for_return && (mode == QImode || mode == HImode)) ++ return SImode; ++ return mode; ++} ++ + #include "gt-m68k.h" diff --git a/buildroot/package/gcc/5.5.0/891-fix-m68k-uclinux.patch b/buildroot/package/gcc/5.5.0/891-fix-m68k-uclinux.patch deleted file mode 100644 index 4e186bd3d3f..00000000000 --- a/buildroot/package/gcc/5.5.0/891-fix-m68k-uclinux.patch +++ /dev/null @@ -1,18 +0,0 @@ -avoids internal compiler error while compiling linux-atomic.c -See here: -https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53833 - -Signed-off-by: Waldemar Brodkorb - -diff -Nur gcc-5.3.0.orig/libgcc/config.host gcc-5.3.0/libgcc/config.host ---- gcc-5.3.0.orig/libgcc/config.host 2015-10-01 14:01:18.000000000 +0200 -+++ gcc-5.3.0/libgcc/config.host 2016-04-26 21:30:25.353691745 +0200 -@@ -794,7 +794,7 @@ - m68k*-*-openbsd*) - ;; - m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux with uClibc -- tmake_file="$tmake_file m68k/t-floatlib m68k/t-linux" -+ tmake_file="$tmake_file m68k/t-floatlib" - md_unwind_header=m68k/linux-unwind.h - ;; - m68k-*-linux*) # Motorola m68k's running GNU/Linux diff --git a/buildroot/package/gcc/6.4.0/0001-m68k-coldfire-pr68467.patch b/buildroot/package/gcc/6.4.0/0001-m68k-coldfire-pr68467.patch new file mode 100644 index 00000000000..afc18a508ea --- /dev/null +++ b/buildroot/package/gcc/6.4.0/0001-m68k-coldfire-pr68467.patch @@ -0,0 +1,48 @@ +Backport from upstream, see +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68467 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-6.4.0.orig/gcc/config/m68k/m68k.c gcc-6.4.0/gcc/config/m68k/m68k.c +--- gcc-6.4.0.orig/gcc/config/m68k/m68k.c 2016-01-04 15:30:50.652828000 +0100 ++++ gcc-6.4.0/gcc/config/m68k/m68k.c 2018-02-17 19:08:16.313168186 +0100 +@@ -180,6 +180,8 @@ + const_tree, bool); + static bool m68k_cannot_force_const_mem (machine_mode mode, rtx x); + static bool m68k_output_addr_const_extra (FILE *, rtx); ++static machine_mode m68k_promote_function_mode (const_tree, machine_mode, ++ int *, const_tree, int); + static void m68k_init_sync_libfuncs (void) ATTRIBUTE_UNUSED; + + /* Initialize the GCC target structure. */ +@@ -322,6 +324,9 @@ + #undef TARGET_ATOMIC_TEST_AND_SET_TRUEVAL + #define TARGET_ATOMIC_TEST_AND_SET_TRUEVAL 128 + ++#undef TARGET_PROMOTE_FUNCTION_MODE ++#define TARGET_PROMOTE_FUNCTION_MODE m68k_promote_function_mode ++ + static const struct attribute_spec m68k_attribute_table[] = + { + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, +@@ -6524,4 +6529,20 @@ + == m68k_fk_interrupt_handler)); + } + ++/* Implement TARGET_PROMOTE_FUNCTION_MODE. */ ++ ++static machine_mode ++m68k_promote_function_mode (const_tree type, machine_mode mode, ++ int *punsignedp ATTRIBUTE_UNUSED, ++ const_tree fntype ATTRIBUTE_UNUSED, ++ int for_return) ++{ ++ /* Promote libcall arguments narrower than int to match the normal C ++ ABI (for which promotions are handled via ++ TARGET_PROMOTE_PROTOTYPES). */ ++ if (type == NULL_TREE && !for_return && (mode == QImode || mode == HImode)) ++ return SImode; ++ return mode; ++} ++ + #include "gt-m68k.h" diff --git a/buildroot/package/gcc/6.4.0/891-fix-m68k-uclinux.patch b/buildroot/package/gcc/6.4.0/891-fix-m68k-uclinux.patch deleted file mode 100644 index 754aa74e886..00000000000 --- a/buildroot/package/gcc/6.4.0/891-fix-m68k-uclinux.patch +++ /dev/null @@ -1,18 +0,0 @@ -avoids internal compiler error while compiling linux-atomic.c -See here: -https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53833 - -Signed-off-by: Waldemar Brodkorb - -diff -Nur gcc-6.1.0.orig/libgcc/config.host gcc-6.1.0/libgcc/config.host ---- gcc-6.1.0.orig/libgcc/config.host 2016-02-26 21:02:28.000000000 +0100 -+++ gcc-6.1.0/libgcc/config.host 2016-04-29 09:18:40.377989160 +0200 -@@ -812,7 +812,7 @@ - m68k*-*-openbsd*) - ;; - m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux with uClibc -- tmake_file="$tmake_file m68k/t-floatlib m68k/t-linux" -+ tmake_file="$tmake_file m68k/t-floatlib" - md_unwind_header=m68k/linux-unwind.h - ;; - m68k-*-linux*) # Motorola m68k's running GNU/Linux diff --git a/buildroot/package/gcc/6.4.0/892-libgcc-mkmap-symver-support-skip_underscore.patch b/buildroot/package/gcc/6.4.0/892-libgcc-mkmap-symver-support-skip_underscore.patch deleted file mode 100644 index 73ee6c5faa1..00000000000 --- a/buildroot/package/gcc/6.4.0/892-libgcc-mkmap-symver-support-skip_underscore.patch +++ /dev/null @@ -1,60 +0,0 @@ -From ae9c3e354440c4a0f105a9eabfb2f77be085ebc1 Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Thu, 18 Aug 2016 17:59:16 +0200 -Subject: [PATCH] libgcc/mkmap-symver: support skip_underscore - -Some platforms, such as Blackfin, have a special prefix for assembly -symbols as opposed to C symbols. For this reason, a function named -"foo()" in C will in fact be visible as a symbol called "_foo" in the -ELF binary. - -The current linker version script logic in libgcc doesn't take into -account this situation properly. The Blackfin specific -libgcc/config/bfin/libgcc-glibc.ver has an additional "_" in front of -every symbol so that it matches the output of "nm" (which gets parsed to -produce the final linker version script). But due to this additional -"_", ld no longer matches with the symbols since "ld" does the matching -with the original symbol name, not the one prefixed with "_". - -Due to this, none of the symbols in libgcc/config/bfin/libgcc-glibc.ver -are actually matched with symbols in libgcc. This causes all libgcc -symbols to be left as "LOCAL", which causes lots of "undefined -reference" whenever some C or C++ code that calls a function of libgcc -is compiled. - -To address this, this commit introduces a "skip_underscore" variable to -the mkmap-symver script. It tells mkmap-symver to ignore the leading -underscore from the "nm" output. - -Note that this new argument is different from the existing -"leading_underscore" argument, which *adds* an additional underscore to -the generated linker version script. - -Having this functionality paves the way to using the generic linker -version information for Blackfin, instead of using a custom one. - -Signed-off-by: Thomas Petazzoni ---- - libgcc/mkmap-symver.awk | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/libgcc/mkmap-symver.awk b/libgcc/mkmap-symver.awk -index 266832a..30bb179 100644 ---- a/libgcc/mkmap-symver.awk -+++ b/libgcc/mkmap-symver.awk -@@ -47,7 +47,11 @@ state == "nm" && ($1 == "U" || $2 == "U") { - - state == "nm" && NF == 3 { - split ($3, s, "@") -- def[s[1]] = 1; -+ if (skip_underscore) -+ symname = substr(s[1], 2); -+ else -+ symname = s[1]; -+ def[symname] = 1; - sawsymbol = 1; - next; - } --- -2.7.4 - diff --git a/buildroot/package/gcc/6.4.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch b/buildroot/package/gcc/6.4.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch deleted file mode 100644 index 454295d0edf..00000000000 --- a/buildroot/package/gcc/6.4.0/893-libgcc-config-bfin-use-the-generic-linker-version-in.patch +++ /dev/null @@ -1,1944 +0,0 @@ -From 56d606931716de30a89a40dc69a9282c1b4e2880 Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Thu, 18 Aug 2016 18:04:06 +0200 -Subject: [PATCH] libgcc/config/bfin: use the generic linker version - information - -This commit makes the Blackfin platform use the generic linker version -information, rather than a completely duplicated file, specific for the -Blackfin architecture. - -This is made possible using the newly introduced skip_underscore -variable of the mkmap-symver script. - -This also allows to get a correct linker version file, with symbol names -matching the ones found in libgcc. Thanks to this, the necessary symbols -are marked "GLOBAL" instead of "LOCAL", which makes them visible at link -time, and solves a large number of "undefined reference" -issues. Indeed, the Blackfin specific linker version script had an extra -underscore in front of all symbols, which meant none of them matched the -symbols in libgcc, and therefore all libgcc symbols were marked as -"LOCAL", making them invisible for linking. - -Signed-off-by: Thomas Petazzoni ---- - libgcc/config/bfin/libgcc-glibc.ver | 1894 +---------------------------------- - libgcc/config/bfin/t-linux | 3 +- - 2 files changed, 4 insertions(+), 1893 deletions(-) - -diff --git a/libgcc/config/bfin/libgcc-glibc.ver b/libgcc/config/bfin/libgcc-glibc.ver -index b1bd2df..2af3df7 100644 ---- a/libgcc/config/bfin/libgcc-glibc.ver -+++ b/libgcc/config/bfin/libgcc-glibc.ver -@@ -16,1898 +16,8 @@ - # along with GCC; see the file COPYING3. If not see - # . - --GCC_3.0 { -- # libgcc1 integer symbols -- ___absvsi2 -- ___addvsi3 -- ___ashlsi3 -- ___ashrsi3 -- ___divsi3 -- ___lshrsi3 -- ___modsi3 -- ___mulsi3 -- ___mulvsi3 -- ___negvsi2 -- ___subvsi3 -- ___udivsi3 -- ___umodsi3 -- -- # libgcc1 floating point symbols -- ___addsf3 -- ___adddf3 -- ___addxf3 -- ___addtf3 -- ___divsf3 -- ___divdf3 -- ___divxf3 -- ___divtf3 -- ___eqsf2 -- ___eqdf2 -- ___eqxf2 -- ___eqtf2 -- ___extenddfxf2 -- ___extenddftf2 -- ___extendsfdf2 -- ___extendsfxf2 -- ___extendsftf2 -- ___fixsfsi -- ___fixdfsi -- ___fixxfsi -- ___fixtfsi -- ___floatsisf -- ___floatsidf -- ___floatsixf -- ___floatsitf -- ___gesf2 -- ___gedf2 -- ___gexf2 -- ___getf2 -- ___gtsf2 -- ___gtdf2 -- ___gtxf2 -- ___gttf2 -- ___lesf2 -- ___ledf2 -- ___lexf2 -- ___letf2 -- ___ltsf2 -- ___ltdf2 -- ___ltxf2 -- ___lttf2 -- ___mulsf3 -- ___muldf3 -- ___mulxf3 -- ___multf3 -- ___negsf2 -- ___negdf2 -- ___negxf2 -- ___negtf2 -- ___nesf2 -- ___nedf2 -- ___nexf2 -- ___netf2 -- ___subsf3 -- ___subdf3 -- ___subxf3 -- ___subtf3 -- ___truncdfsf2 -- ___truncxfsf2 -- ___trunctfsf2 -- ___truncxfdf2 -- ___trunctfdf2 -- -- # libgcc2 DImode arithmetic (for 32-bit targets). -- ___absvdi2 -- ___addvdi3 -- ___ashldi3 -- ___ashrdi3 -- ___cmpdi2 -- ___divdi3 -- ___ffsdi2 -- ___fixdfdi -- ___fixsfdi -- ___fixtfdi -- ___fixxfdi -- ___fixunsdfdi -- ___fixunsdfsi -- ___fixunssfsi -- ___fixunssfdi -- ___fixunstfdi -- ___fixunstfsi -- ___fixunsxfdi -- ___fixunsxfsi -- ___floatdidf -- ___floatdisf -- ___floatdixf -- ___floatditf -- ___lshrdi3 -- ___moddi3 -- ___muldi3 -- ___mulvdi3 -- ___negdi2 -- ___negvdi2 -- ___subvdi3 -- ___ucmpdi2 -- ___udivdi3 -- ___udivmoddi4 -- ___umoddi3 -- -- # libgcc2 TImode arithmetic (for 64-bit targets). -- ___ashlti3 -- ___ashrti3 -- ___cmpti2 -- ___divti3 -- ___ffsti2 -- ___fixdfti -- ___fixsfti -- ___fixtfti -- ___fixxfti -- ___lshrti3 -- ___modti3 -- ___multi3 -- ___negti2 -- ___ucmpti2 -- ___udivmodti4 -- ___udivti3 -- ___umodti3 -- ___fixunsdfti -- ___fixunssfti -- ___fixunstfti -- ___fixunsxfti -- ___floattidf -- ___floattisf -- ___floattixf -- ___floattitf -- -- # Used to deal with trampoline initialization on some platforms -- ___clear_cache -- -- # EH symbols -- __Unwind_DeleteException -- __Unwind_Find_FDE -- __Unwind_ForcedUnwind -- __Unwind_GetGR -- __Unwind_GetIP -- __Unwind_GetLanguageSpecificData -- __Unwind_GetRegionStart -- __Unwind_GetTextRelBase -- __Unwind_GetDataRelBase -- __Unwind_RaiseException -- __Unwind_Resume -- __Unwind_SetGR -- __Unwind_SetIP -- ___deregister_frame -- ___deregister_frame_info -- ___deregister_frame_info_bases -- ___register_frame -- ___register_frame_info -- ___register_frame_info_bases -- ___register_frame_info_table -- ___register_frame_info_table_bases -- ___register_frame_table -- -- # SjLj EH symbols -- __Unwind_SjLj_Register -- __Unwind_SjLj_Unregister -- __Unwind_SjLj_RaiseException -- __Unwind_SjLj_ForcedUnwind -- __Unwind_SjLj_Resume --} -- --%inherit GCC_3.3 GCC_3.0 --GCC_3.3 { -- __Unwind_FindEnclosingFunction -- __Unwind_GetCFA -- __Unwind_Backtrace -- __Unwind_Resume_or_Rethrow -- __Unwind_SjLj_Resume_or_Rethrow --} -- --%inherit GCC_3.3.1 GCC_3.3 --GCC_3.3.1 { -- ___gcc_personality_sj0 -- ___gcc_personality_v0 --} -- --%inherit GCC_3.3.2 GCC_3.3.1 --GCC_3.3.2 { --} --%inherit GCC_3.3.4 GCC_3.3.2 --GCC_3.3.4 { -- ___unorddf2 -- ___unordsf2 --} -- --%inherit GCC_3.4 GCC_3.3.4 --GCC_3.4 { -- # bit scanning and counting built-ins -- ___clzsi2 -- ___clzdi2 -- ___clzti2 -- ___ctzsi2 -- ___ctzdi2 -- ___ctzti2 -- ___popcountsi2 -- ___popcountdi2 -- ___popcountti2 -- ___paritysi2 -- ___paritydi2 -- ___parityti2 --} -- --%inherit GCC_3.4.2 GCC_3.4 --GCC_3.4.2 { -- # Used to deal with trampoline initialization on some platforms -- ___enable_execute_stack -- ___trampoline_setup --} -- --%inherit GCC_3.4.4 GCC_3.4.2 --GCC_3.4.4 { -- # libgcc2 TImode arithmetic (for 64-bit targets). -- ___absvti2 -- ___addvti3 -- ___mulvti3 -- ___negvti2 -- ___subvti3 --} -- --%inherit GCC_4.0.0 GCC_3.4.4 --GCC_4.0.0 { -- # libgcc2 __builtin_powi helpers. -- ___powisf2 -- ___powidf2 -- ___powixf2 -- ___powitf2 -- -- # c99 compliant complex arithmetic -- ___divsc3 -- ___divdc3 -- ___divxc3 -- ___divtc3 -- ___mulsc3 -- ___muldc3 -- ___mulxc3 -- ___multc3 --} -- - %inherit GCC_4.1.0 GCC_4.0.0 - GCC_4.1.0 { -- ___smulsi3_highpart -- ___umulsi3_highpart --} -- --%inherit GCC_4.2.0 GCC_4.1.0 --GCC_4.2.0 { -- # unsigned-to-floating conversions -- ___floatunsisf -- ___floatunsidf -- ___floatunsixf -- ___floatunsitf -- ___floatundidf -- ___floatundisf -- ___floatundixf -- ___floatunditf -- ___floatuntidf -- ___floatuntisf -- ___floatuntixf -- ___floatuntitf -- __Unwind_GetIPInfo --} -- --%inherit GCC_4.3.0 GCC_4.2.0 --GCC_4.3.0 { -- # byte swapping routines -- ___bswapsi2 -- ___bswapdi2 -- ___emutls_get_address -- ___emutls_register_common -- ___ffssi2 -- ___extendxftf2 -- ___trunctfxf2 -- -- # fixed-point routines -- ___addqq3 -- ___addhq3 -- ___addsq3 -- ___adddq3 -- ___addtq3 -- ___adduqq3 -- ___adduhq3 -- ___addusq3 -- ___addudq3 -- ___addutq3 -- ___addha3 -- ___addsa3 -- ___addda3 -- ___addta3 -- ___adduha3 -- ___addusa3 -- ___adduda3 -- ___adduta3 -- ___ssaddqq3 -- ___ssaddhq3 -- ___ssaddsq3 -- ___ssadddq3 -- ___ssaddtq3 -- ___ssaddha3 -- ___ssaddsa3 -- ___ssaddda3 -- ___ssaddta3 -- ___usadduqq3 -- ___usadduhq3 -- ___usaddusq3 -- ___usaddudq3 -- ___usaddutq3 -- ___usadduha3 -- ___usaddusa3 -- ___usadduda3 -- ___usadduta3 -- ___subqq3 -- ___subhq3 -- ___subsq3 -- ___subdq3 -- ___subtq3 -- ___subuqq3 -- ___subuhq3 -- ___subusq3 -- ___subudq3 -- ___subutq3 -- ___subha3 -- ___subsa3 -- ___subda3 -- ___subta3 -- ___subuha3 -- ___subusa3 -- ___subuda3 -- ___subuta3 -- ___sssubqq3 -- ___sssubhq3 -- ___sssubsq3 -- ___sssubdq3 -- ___sssubtq3 -- ___sssubha3 -- ___sssubsa3 -- ___sssubda3 -- ___sssubta3 -- ___ussubuqq3 -- ___ussubuhq3 -- ___ussubusq3 -- ___ussubudq3 -- ___ussubutq3 -- ___ussubuha3 -- ___ussubusa3 -- ___ussubuda3 -- ___ussubuta3 -- ___mulqq3 -- ___mulhq3 -- ___mulsq3 -- ___muldq3 -- ___multq3 -- ___muluqq3 -- ___muluhq3 -- ___mulusq3 -- ___muludq3 -- ___mulutq3 -- ___mulha3 -- ___mulsa3 -- ___mulda3 -- ___multa3 -- ___muluha3 -- ___mulusa3 -- ___muluda3 -- ___muluta3 -- ___ssmulqq3 -- ___ssmulhq3 -- ___ssmulsq3 -- ___ssmuldq3 -- ___ssmultq3 -- ___ssmulha3 -- ___ssmulsa3 -- ___ssmulda3 -- ___ssmulta3 -- ___usmuluqq3 -- ___usmuluhq3 -- ___usmulusq3 -- ___usmuludq3 -- ___usmulutq3 -- ___usmuluha3 -- ___usmulusa3 -- ___usmuluda3 -- ___usmuluta3 -- ___divqq3 -- ___divhq3 -- ___divsq3 -- ___divdq3 -- ___divtq3 -- ___divha3 -- ___divsa3 -- ___divda3 -- ___divta3 -- ___udivuqq3 -- ___udivuhq3 -- ___udivusq3 -- ___udivudq3 -- ___udivutq3 -- ___udivuha3 -- ___udivusa3 -- ___udivuda3 -- ___udivuta3 -- ___ssdivqq3 -- ___ssdivhq3 -- ___ssdivsq3 -- ___ssdivdq3 -- ___ssdivtq3 -- ___ssdivha3 -- ___ssdivsa3 -- ___ssdivda3 -- ___ssdivta3 -- ___usdivuqq3 -- ___usdivuhq3 -- ___usdivusq3 -- ___usdivudq3 -- ___usdivutq3 -- ___usdivuha3 -- ___usdivusa3 -- ___usdivuda3 -- ___usdivuta3 -- ___negqq2 -- ___neghq2 -- ___negsq2 -- ___negdq2 -- ___negtq2 -- ___neguqq2 -- ___neguhq2 -- ___negusq2 -- ___negudq2 -- ___negutq2 -- ___negha2 -- ___negsa2 -- ___negda2 -- ___negta2 -- ___neguha2 -- ___negusa2 -- ___neguda2 -- ___neguta2 -- ___ssnegqq2 -- ___ssneghq2 -- ___ssnegsq2 -- ___ssnegdq2 -- ___ssnegtq2 -- ___ssnegha2 -- ___ssnegsa2 -- ___ssnegda2 -- ___ssnegta2 -- ___usneguqq2 -- ___usneguhq2 -- ___usnegusq2 -- ___usnegudq2 -- ___usnegutq2 -- ___usneguha2 -- ___usnegusa2 -- ___usneguda2 -- ___usneguta2 -- ___ashlqq3 -- ___ashlhq3 -- ___ashlsq3 -- ___ashldq3 -- ___ashltq3 -- ___ashluqq3 -- ___ashluhq3 -- ___ashlusq3 -- ___ashludq3 -- ___ashlutq3 -- ___ashlha3 -- ___ashlsa3 -- ___ashlda3 -- ___ashlta3 -- ___ashluha3 -- ___ashlusa3 -- ___ashluda3 -- ___ashluta3 -- ___ashrqq3 -- ___ashrhq3 -- ___ashrsq3 -- ___ashrdq3 -- ___ashrtq3 -- ___ashrha3 -- ___ashrsa3 -- ___ashrda3 -- ___ashrta3 -- ___lshruqq3 -- ___lshruhq3 -- ___lshrusq3 -- ___lshrudq3 -- ___lshrutq3 -- ___lshruha3 -- ___lshrusa3 -- ___lshruda3 -- ___lshruta3 -- ___ssashlqq3 -- ___ssashlhq3 -- ___ssashlsq3 -- ___ssashldq3 -- ___ssashltq3 -- ___ssashlha3 -- ___ssashlsa3 -- ___ssashlda3 -- ___ssashlta3 -- ___usashluqq3 -- ___usashluhq3 -- ___usashlusq3 -- ___usashludq3 -- ___usashlutq3 -- ___usashluha3 -- ___usashlusa3 -- ___usashluda3 -- ___usashluta3 -- ___cmpqq2 -- ___cmphq2 -- ___cmpsq2 -- ___cmpdq2 -- ___cmptq2 -- ___cmpuqq2 -- ___cmpuhq2 -- ___cmpusq2 -- ___cmpudq2 -- ___cmputq2 -- ___cmpha2 -- ___cmpsa2 -- ___cmpda2 -- ___cmpta2 -- ___cmpuha2 -- ___cmpusa2 -- ___cmpuda2 -- ___cmputa2 -- ___fractqqhq2 -- ___fractqqsq2 -- ___fractqqdq2 -- ___fractqqtq2 -- ___fractqqha -- ___fractqqsa -- ___fractqqda -- ___fractqqta -- ___fractqquqq -- ___fractqquhq -- ___fractqqusq -- ___fractqqudq -- ___fractqqutq -- ___fractqquha -- ___fractqqusa -- ___fractqquda -- ___fractqquta -- ___fractqqqi -- ___fractqqhi -- ___fractqqsi -- ___fractqqdi -- ___fractqqti -- ___fractqqsf -- ___fractqqdf -- ___fracthqqq2 -- ___fracthqsq2 -- ___fracthqdq2 -- ___fracthqtq2 -- ___fracthqha -- ___fracthqsa -- ___fracthqda -- ___fracthqta -- ___fracthquqq -- ___fracthquhq -- ___fracthqusq -- ___fracthqudq -- ___fracthqutq -- ___fracthquha -- ___fracthqusa -- ___fracthquda -- ___fracthquta -- ___fracthqqi -- ___fracthqhi -- ___fracthqsi -- ___fracthqdi -- ___fracthqti -- ___fracthqsf -- ___fracthqdf -- ___fractsqqq2 -- ___fractsqhq2 -- ___fractsqdq2 -- ___fractsqtq2 -- ___fractsqha -- ___fractsqsa -- ___fractsqda -- ___fractsqta -- ___fractsquqq -- ___fractsquhq -- ___fractsqusq -- ___fractsqudq -- ___fractsqutq -- ___fractsquha -- ___fractsqusa -- ___fractsquda -- ___fractsquta -- ___fractsqqi -- ___fractsqhi -- ___fractsqsi -- ___fractsqdi -- ___fractsqti -- ___fractsqsf -- ___fractsqdf -- ___fractdqqq2 -- ___fractdqhq2 -- ___fractdqsq2 -- ___fractdqtq2 -- ___fractdqha -- ___fractdqsa -- ___fractdqda -- ___fractdqta -- ___fractdquqq -- ___fractdquhq -- ___fractdqusq -- ___fractdqudq -- ___fractdqutq -- ___fractdquha -- ___fractdqusa -- ___fractdquda -- ___fractdquta -- ___fractdqqi -- ___fractdqhi -- ___fractdqsi -- ___fractdqdi -- ___fractdqti -- ___fractdqsf -- ___fractdqdf -- ___fracttqqq2 -- ___fracttqhq2 -- ___fracttqsq2 -- ___fracttqdq2 -- ___fracttqha -- ___fracttqsa -- ___fracttqda -- ___fracttqta -- ___fracttquqq -- ___fracttquhq -- ___fracttqusq -- ___fracttqudq -- ___fracttqutq -- ___fracttquha -- ___fracttqusa -- ___fracttquda -- ___fracttquta -- ___fracttqqi -- ___fracttqhi -- ___fracttqsi -- ___fracttqdi -- ___fracttqti -- ___fracttqsf -- ___fracttqdf -- ___fracthaqq -- ___fracthahq -- ___fracthasq -- ___fracthadq -- ___fracthatq -- ___fracthasa2 -- ___fracthada2 -- ___fracthata2 -- ___fracthauqq -- ___fracthauhq -- ___fracthausq -- ___fracthaudq -- ___fracthautq -- ___fracthauha -- ___fracthausa -- ___fracthauda -- ___fracthauta -- ___fracthaqi -- ___fracthahi -- ___fracthasi -- ___fracthadi -- ___fracthati -- ___fracthasf -- ___fracthadf -- ___fractsaqq -- ___fractsahq -- ___fractsasq -- ___fractsadq -- ___fractsatq -- ___fractsaha2 -- ___fractsada2 -- ___fractsata2 -- ___fractsauqq -- ___fractsauhq -- ___fractsausq -- ___fractsaudq -- ___fractsautq -- ___fractsauha -- ___fractsausa -- ___fractsauda -- ___fractsauta -- ___fractsaqi -- ___fractsahi -- ___fractsasi -- ___fractsadi -- ___fractsati -- ___fractsasf -- ___fractsadf -- ___fractdaqq -- ___fractdahq -- ___fractdasq -- ___fractdadq -- ___fractdatq -- ___fractdaha2 -- ___fractdasa2 -- ___fractdata2 -- ___fractdauqq -- ___fractdauhq -- ___fractdausq -- ___fractdaudq -- ___fractdautq -- ___fractdauha -- ___fractdausa -- ___fractdauda -- ___fractdauta -- ___fractdaqi -- ___fractdahi -- ___fractdasi -- ___fractdadi -- ___fractdati -- ___fractdasf -- ___fractdadf -- ___fracttaqq -- ___fracttahq -- ___fracttasq -- ___fracttadq -- ___fracttatq -- ___fracttaha2 -- ___fracttasa2 -- ___fracttada2 -- ___fracttauqq -- ___fracttauhq -- ___fracttausq -- ___fracttaudq -- ___fracttautq -- ___fracttauha -- ___fracttausa -- ___fracttauda -- ___fracttauta -- ___fracttaqi -- ___fracttahi -- ___fracttasi -- ___fracttadi -- ___fracttati -- ___fracttasf -- ___fracttadf -- ___fractuqqqq -- ___fractuqqhq -- ___fractuqqsq -- ___fractuqqdq -- ___fractuqqtq -- ___fractuqqha -- ___fractuqqsa -- ___fractuqqda -- ___fractuqqta -- ___fractuqquhq2 -- ___fractuqqusq2 -- ___fractuqqudq2 -- ___fractuqqutq2 -- ___fractuqquha -- ___fractuqqusa -- ___fractuqquda -- ___fractuqquta -- ___fractuqqqi -- ___fractuqqhi -- ___fractuqqsi -- ___fractuqqdi -- ___fractuqqti -- ___fractuqqsf -- ___fractuqqdf -- ___fractuhqqq -- ___fractuhqhq -- ___fractuhqsq -- ___fractuhqdq -- ___fractuhqtq -- ___fractuhqha -- ___fractuhqsa -- ___fractuhqda -- ___fractuhqta -- ___fractuhquqq2 -- ___fractuhqusq2 -- ___fractuhqudq2 -- ___fractuhqutq2 -- ___fractuhquha -- ___fractuhqusa -- ___fractuhquda -- ___fractuhquta -- ___fractuhqqi -- ___fractuhqhi -- ___fractuhqsi -- ___fractuhqdi -- ___fractuhqti -- ___fractuhqsf -- ___fractuhqdf -- ___fractusqqq -- ___fractusqhq -- ___fractusqsq -- ___fractusqdq -- ___fractusqtq -- ___fractusqha -- ___fractusqsa -- ___fractusqda -- ___fractusqta -- ___fractusquqq2 -- ___fractusquhq2 -- ___fractusqudq2 -- ___fractusqutq2 -- ___fractusquha -- ___fractusqusa -- ___fractusquda -- ___fractusquta -- ___fractusqqi -- ___fractusqhi -- ___fractusqsi -- ___fractusqdi -- ___fractusqti -- ___fractusqsf -- ___fractusqdf -- ___fractudqqq -- ___fractudqhq -- ___fractudqsq -- ___fractudqdq -- ___fractudqtq -- ___fractudqha -- ___fractudqsa -- ___fractudqda -- ___fractudqta -- ___fractudquqq2 -- ___fractudquhq2 -- ___fractudqusq2 -- ___fractudqutq2 -- ___fractudquha -- ___fractudqusa -- ___fractudquda -- ___fractudquta -- ___fractudqqi -- ___fractudqhi -- ___fractudqsi -- ___fractudqdi -- ___fractudqti -- ___fractudqsf -- ___fractudqdf -- ___fractutqqq -- ___fractutqhq -- ___fractutqsq -- ___fractutqdq -- ___fractutqtq -- ___fractutqha -- ___fractutqsa -- ___fractutqda -- ___fractutqta -- ___fractutquqq2 -- ___fractutquhq2 -- ___fractutqusq2 -- ___fractutqudq2 -- ___fractutquha -- ___fractutqusa -- ___fractutquda -- ___fractutquta -- ___fractutqqi -- ___fractutqhi -- ___fractutqsi -- ___fractutqdi -- ___fractutqti -- ___fractutqsf -- ___fractutqdf -- ___fractuhaqq -- ___fractuhahq -- ___fractuhasq -- ___fractuhadq -- ___fractuhatq -- ___fractuhaha -- ___fractuhasa -- ___fractuhada -- ___fractuhata -- ___fractuhauqq -- ___fractuhauhq -- ___fractuhausq -- ___fractuhaudq -- ___fractuhautq -- ___fractuhausa2 -- ___fractuhauda2 -- ___fractuhauta2 -- ___fractuhaqi -- ___fractuhahi -- ___fractuhasi -- ___fractuhadi -- ___fractuhati -- ___fractuhasf -- ___fractuhadf -- ___fractusaqq -- ___fractusahq -- ___fractusasq -- ___fractusadq -- ___fractusatq -- ___fractusaha -- ___fractusasa -- ___fractusada -- ___fractusata -- ___fractusauqq -- ___fractusauhq -- ___fractusausq -- ___fractusaudq -- ___fractusautq -- ___fractusauha2 -- ___fractusauda2 -- ___fractusauta2 -- ___fractusaqi -- ___fractusahi -- ___fractusasi -- ___fractusadi -- ___fractusati -- ___fractusasf -- ___fractusadf -- ___fractudaqq -- ___fractudahq -- ___fractudasq -- ___fractudadq -- ___fractudatq -- ___fractudaha -- ___fractudasa -- ___fractudada -- ___fractudata -- ___fractudauqq -- ___fractudauhq -- ___fractudausq -- ___fractudaudq -- ___fractudautq -- ___fractudauha2 -- ___fractudausa2 -- ___fractudauta2 -- ___fractudaqi -- ___fractudahi -- ___fractudasi -- ___fractudadi -- ___fractudati -- ___fractudasf -- ___fractudadf -- ___fractutaqq -- ___fractutahq -- ___fractutasq -- ___fractutadq -- ___fractutatq -- ___fractutaha -- ___fractutasa -- ___fractutada -- ___fractutata -- ___fractutauqq -- ___fractutauhq -- ___fractutausq -- ___fractutaudq -- ___fractutautq -- ___fractutauha2 -- ___fractutausa2 -- ___fractutauda2 -- ___fractutaqi -- ___fractutahi -- ___fractutasi -- ___fractutadi -- ___fractutati -- ___fractutasf -- ___fractutadf -- ___fractqiqq -- ___fractqihq -- ___fractqisq -- ___fractqidq -- ___fractqitq -- ___fractqiha -- ___fractqisa -- ___fractqida -- ___fractqita -- ___fractqiuqq -- ___fractqiuhq -- ___fractqiusq -- ___fractqiudq -- ___fractqiutq -- ___fractqiuha -- ___fractqiusa -- ___fractqiuda -- ___fractqiuta -- ___fracthiqq -- ___fracthihq -- ___fracthisq -- ___fracthidq -- ___fracthitq -- ___fracthiha -- ___fracthisa -- ___fracthida -- ___fracthita -- ___fracthiuqq -- ___fracthiuhq -- ___fracthiusq -- ___fracthiudq -- ___fracthiutq -- ___fracthiuha -- ___fracthiusa -- ___fracthiuda -- ___fracthiuta -- ___fractsiqq -- ___fractsihq -- ___fractsisq -- ___fractsidq -- ___fractsitq -- ___fractsiha -- ___fractsisa -- ___fractsida -- ___fractsita -- ___fractsiuqq -- ___fractsiuhq -- ___fractsiusq -- ___fractsiudq -- ___fractsiutq -- ___fractsiuha -- ___fractsiusa -- ___fractsiuda -- ___fractsiuta -- ___fractdiqq -- ___fractdihq -- ___fractdisq -- ___fractdidq -- ___fractditq -- ___fractdiha -- ___fractdisa -- ___fractdida -- ___fractdita -- ___fractdiuqq -- ___fractdiuhq -- ___fractdiusq -- ___fractdiudq -- ___fractdiutq -- ___fractdiuha -- ___fractdiusa -- ___fractdiuda -- ___fractdiuta -- ___fracttiqq -- ___fracttihq -- ___fracttisq -- ___fracttidq -- ___fracttitq -- ___fracttiha -- ___fracttisa -- ___fracttida -- ___fracttita -- ___fracttiuqq -- ___fracttiuhq -- ___fracttiusq -- ___fracttiudq -- ___fracttiutq -- ___fracttiuha -- ___fracttiusa -- ___fracttiuda -- ___fracttiuta -- ___fractsfqq -- ___fractsfhq -- ___fractsfsq -- ___fractsfdq -- ___fractsftq -- ___fractsfha -- ___fractsfsa -- ___fractsfda -- ___fractsfta -- ___fractsfuqq -- ___fractsfuhq -- ___fractsfusq -- ___fractsfudq -- ___fractsfutq -- ___fractsfuha -- ___fractsfusa -- ___fractsfuda -- ___fractsfuta -- ___fractdfqq -- ___fractdfhq -- ___fractdfsq -- ___fractdfdq -- ___fractdftq -- ___fractdfha -- ___fractdfsa -- ___fractdfda -- ___fractdfta -- ___fractdfuqq -- ___fractdfuhq -- ___fractdfusq -- ___fractdfudq -- ___fractdfutq -- ___fractdfuha -- ___fractdfusa -- ___fractdfuda -- ___fractdfuta -- ___satfractqqhq2 -- ___satfractqqsq2 -- ___satfractqqdq2 -- ___satfractqqtq2 -- ___satfractqqha -- ___satfractqqsa -- ___satfractqqda -- ___satfractqqta -- ___satfractqquqq -- ___satfractqquhq -- ___satfractqqusq -- ___satfractqqudq -- ___satfractqqutq -- ___satfractqquha -- ___satfractqqusa -- ___satfractqquda -- ___satfractqquta -- ___satfracthqqq2 -- ___satfracthqsq2 -- ___satfracthqdq2 -- ___satfracthqtq2 -- ___satfracthqha -- ___satfracthqsa -- ___satfracthqda -- ___satfracthqta -- ___satfracthquqq -- ___satfracthquhq -- ___satfracthqusq -- ___satfracthqudq -- ___satfracthqutq -- ___satfracthquha -- ___satfracthqusa -- ___satfracthquda -- ___satfracthquta -- ___satfractsqqq2 -- ___satfractsqhq2 -- ___satfractsqdq2 -- ___satfractsqtq2 -- ___satfractsqha -- ___satfractsqsa -- ___satfractsqda -- ___satfractsqta -- ___satfractsquqq -- ___satfractsquhq -- ___satfractsqusq -- ___satfractsqudq -- ___satfractsqutq -- ___satfractsquha -- ___satfractsqusa -- ___satfractsquda -- ___satfractsquta -- ___satfractdqqq2 -- ___satfractdqhq2 -- ___satfractdqsq2 -- ___satfractdqtq2 -- ___satfractdqha -- ___satfractdqsa -- ___satfractdqda -- ___satfractdqta -- ___satfractdquqq -- ___satfractdquhq -- ___satfractdqusq -- ___satfractdqudq -- ___satfractdqutq -- ___satfractdquha -- ___satfractdqusa -- ___satfractdquda -- ___satfractdquta -- ___satfracttqqq2 -- ___satfracttqhq2 -- ___satfracttqsq2 -- ___satfracttqdq2 -- ___satfracttqha -- ___satfracttqsa -- ___satfracttqda -- ___satfracttqta -- ___satfracttquqq -- ___satfracttquhq -- ___satfracttqusq -- ___satfracttqudq -- ___satfracttqutq -- ___satfracttquha -- ___satfracttqusa -- ___satfracttquda -- ___satfracttquta -- ___satfracthaqq -- ___satfracthahq -- ___satfracthasq -- ___satfracthadq -- ___satfracthatq -- ___satfracthasa2 -- ___satfracthada2 -- ___satfracthata2 -- ___satfracthauqq -- ___satfracthauhq -- ___satfracthausq -- ___satfracthaudq -- ___satfracthautq -- ___satfracthauha -- ___satfracthausa -- ___satfracthauda -- ___satfracthauta -- ___satfractsaqq -- ___satfractsahq -- ___satfractsasq -- ___satfractsadq -- ___satfractsatq -- ___satfractsaha2 -- ___satfractsada2 -- ___satfractsata2 -- ___satfractsauqq -- ___satfractsauhq -- ___satfractsausq -- ___satfractsaudq -- ___satfractsautq -- ___satfractsauha -- ___satfractsausa -- ___satfractsauda -- ___satfractsauta -- ___satfractdaqq -- ___satfractdahq -- ___satfractdasq -- ___satfractdadq -- ___satfractdatq -- ___satfractdaha2 -- ___satfractdasa2 -- ___satfractdata2 -- ___satfractdauqq -- ___satfractdauhq -- ___satfractdausq -- ___satfractdaudq -- ___satfractdautq -- ___satfractdauha -- ___satfractdausa -- ___satfractdauda -- ___satfractdauta -- ___satfracttaqq -- ___satfracttahq -- ___satfracttasq -- ___satfracttadq -- ___satfracttatq -- ___satfracttaha2 -- ___satfracttasa2 -- ___satfracttada2 -- ___satfracttauqq -- ___satfracttauhq -- ___satfracttausq -- ___satfracttaudq -- ___satfracttautq -- ___satfracttauha -- ___satfracttausa -- ___satfracttauda -- ___satfracttauta -- ___satfractuqqqq -- ___satfractuqqhq -- ___satfractuqqsq -- ___satfractuqqdq -- ___satfractuqqtq -- ___satfractuqqha -- ___satfractuqqsa -- ___satfractuqqda -- ___satfractuqqta -- ___satfractuqquhq2 -- ___satfractuqqusq2 -- ___satfractuqqudq2 -- ___satfractuqqutq2 -- ___satfractuqquha -- ___satfractuqqusa -- ___satfractuqquda -- ___satfractuqquta -- ___satfractuhqqq -- ___satfractuhqhq -- ___satfractuhqsq -- ___satfractuhqdq -- ___satfractuhqtq -- ___satfractuhqha -- ___satfractuhqsa -- ___satfractuhqda -- ___satfractuhqta -- ___satfractuhquqq2 -- ___satfractuhqusq2 -- ___satfractuhqudq2 -- ___satfractuhqutq2 -- ___satfractuhquha -- ___satfractuhqusa -- ___satfractuhquda -- ___satfractuhquta -- ___satfractusqqq -- ___satfractusqhq -- ___satfractusqsq -- ___satfractusqdq -- ___satfractusqtq -- ___satfractusqha -- ___satfractusqsa -- ___satfractusqda -- ___satfractusqta -- ___satfractusquqq2 -- ___satfractusquhq2 -- ___satfractusqudq2 -- ___satfractusqutq2 -- ___satfractusquha -- ___satfractusqusa -- ___satfractusquda -- ___satfractusquta -- ___satfractudqqq -- ___satfractudqhq -- ___satfractudqsq -- ___satfractudqdq -- ___satfractudqtq -- ___satfractudqha -- ___satfractudqsa -- ___satfractudqda -- ___satfractudqta -- ___satfractudquqq2 -- ___satfractudquhq2 -- ___satfractudqusq2 -- ___satfractudqutq2 -- ___satfractudquha -- ___satfractudqusa -- ___satfractudquda -- ___satfractudquta -- ___satfractutqqq -- ___satfractutqhq -- ___satfractutqsq -- ___satfractutqdq -- ___satfractutqtq -- ___satfractutqha -- ___satfractutqsa -- ___satfractutqda -- ___satfractutqta -- ___satfractutquqq2 -- ___satfractutquhq2 -- ___satfractutqusq2 -- ___satfractutqudq2 -- ___satfractutquha -- ___satfractutqusa -- ___satfractutquda -- ___satfractutquta -- ___satfractuhaqq -- ___satfractuhahq -- ___satfractuhasq -- ___satfractuhadq -- ___satfractuhatq -- ___satfractuhaha -- ___satfractuhasa -- ___satfractuhada -- ___satfractuhata -- ___satfractuhauqq -- ___satfractuhauhq -- ___satfractuhausq -- ___satfractuhaudq -- ___satfractuhautq -- ___satfractuhausa2 -- ___satfractuhauda2 -- ___satfractuhauta2 -- ___satfractusaqq -- ___satfractusahq -- ___satfractusasq -- ___satfractusadq -- ___satfractusatq -- ___satfractusaha -- ___satfractusasa -- ___satfractusada -- ___satfractusata -- ___satfractusauqq -- ___satfractusauhq -- ___satfractusausq -- ___satfractusaudq -- ___satfractusautq -- ___satfractusauha2 -- ___satfractusauda2 -- ___satfractusauta2 -- ___satfractudaqq -- ___satfractudahq -- ___satfractudasq -- ___satfractudadq -- ___satfractudatq -- ___satfractudaha -- ___satfractudasa -- ___satfractudada -- ___satfractudata -- ___satfractudauqq -- ___satfractudauhq -- ___satfractudausq -- ___satfractudaudq -- ___satfractudautq -- ___satfractudauha2 -- ___satfractudausa2 -- ___satfractudauta2 -- ___satfractutaqq -- ___satfractutahq -- ___satfractutasq -- ___satfractutadq -- ___satfractutatq -- ___satfractutaha -- ___satfractutasa -- ___satfractutada -- ___satfractutata -- ___satfractutauqq -- ___satfractutauhq -- ___satfractutausq -- ___satfractutaudq -- ___satfractutautq -- ___satfractutauha2 -- ___satfractutausa2 -- ___satfractutauda2 -- ___satfractqiqq -- ___satfractqihq -- ___satfractqisq -- ___satfractqidq -- ___satfractqitq -- ___satfractqiha -- ___satfractqisa -- ___satfractqida -- ___satfractqita -- ___satfractqiuqq -- ___satfractqiuhq -- ___satfractqiusq -- ___satfractqiudq -- ___satfractqiutq -- ___satfractqiuha -- ___satfractqiusa -- ___satfractqiuda -- ___satfractqiuta -- ___satfracthiqq -- ___satfracthihq -- ___satfracthisq -- ___satfracthidq -- ___satfracthitq -- ___satfracthiha -- ___satfracthisa -- ___satfracthida -- ___satfracthita -- ___satfracthiuqq -- ___satfracthiuhq -- ___satfracthiusq -- ___satfracthiudq -- ___satfracthiutq -- ___satfracthiuha -- ___satfracthiusa -- ___satfracthiuda -- ___satfracthiuta -- ___satfractsiqq -- ___satfractsihq -- ___satfractsisq -- ___satfractsidq -- ___satfractsitq -- ___satfractsiha -- ___satfractsisa -- ___satfractsida -- ___satfractsita -- ___satfractsiuqq -- ___satfractsiuhq -- ___satfractsiusq -- ___satfractsiudq -- ___satfractsiutq -- ___satfractsiuha -- ___satfractsiusa -- ___satfractsiuda -- ___satfractsiuta -- ___satfractdiqq -- ___satfractdihq -- ___satfractdisq -- ___satfractdidq -- ___satfractditq -- ___satfractdiha -- ___satfractdisa -- ___satfractdida -- ___satfractdita -- ___satfractdiuqq -- ___satfractdiuhq -- ___satfractdiusq -- ___satfractdiudq -- ___satfractdiutq -- ___satfractdiuha -- ___satfractdiusa -- ___satfractdiuda -- ___satfractdiuta -- ___satfracttiqq -- ___satfracttihq -- ___satfracttisq -- ___satfracttidq -- ___satfracttitq -- ___satfracttiha -- ___satfracttisa -- ___satfracttida -- ___satfracttita -- ___satfracttiuqq -- ___satfracttiuhq -- ___satfracttiusq -- ___satfracttiudq -- ___satfracttiutq -- ___satfracttiuha -- ___satfracttiusa -- ___satfracttiuda -- ___satfracttiuta -- ___satfractsfqq -- ___satfractsfhq -- ___satfractsfsq -- ___satfractsfdq -- ___satfractsftq -- ___satfractsfha -- ___satfractsfsa -- ___satfractsfda -- ___satfractsfta -- ___satfractsfuqq -- ___satfractsfuhq -- ___satfractsfusq -- ___satfractsfudq -- ___satfractsfutq -- ___satfractsfuha -- ___satfractsfusa -- ___satfractsfuda -- ___satfractsfuta -- ___satfractdfqq -- ___satfractdfhq -- ___satfractdfsq -- ___satfractdfdq -- ___satfractdftq -- ___satfractdfha -- ___satfractdfsa -- ___satfractdfda -- ___satfractdfta -- ___satfractdfuqq -- ___satfractdfuhq -- ___satfractdfusq -- ___satfractdfudq -- ___satfractdfutq -- ___satfractdfuha -- ___satfractdfusa -- ___satfractdfuda -- ___satfractdfuta -- ___fractunsqqqi -- ___fractunsqqhi -- ___fractunsqqsi -- ___fractunsqqdi -- ___fractunsqqti -- ___fractunshqqi -- ___fractunshqhi -- ___fractunshqsi -- ___fractunshqdi -- ___fractunshqti -- ___fractunssqqi -- ___fractunssqhi -- ___fractunssqsi -- ___fractunssqdi -- ___fractunssqti -- ___fractunsdqqi -- ___fractunsdqhi -- ___fractunsdqsi -- ___fractunsdqdi -- ___fractunsdqti -- ___fractunstqqi -- ___fractunstqhi -- ___fractunstqsi -- ___fractunstqdi -- ___fractunstqti -- ___fractunshaqi -- ___fractunshahi -- ___fractunshasi -- ___fractunshadi -- ___fractunshati -- ___fractunssaqi -- ___fractunssahi -- ___fractunssasi -- ___fractunssadi -- ___fractunssati -- ___fractunsdaqi -- ___fractunsdahi -- ___fractunsdasi -- ___fractunsdadi -- ___fractunsdati -- ___fractunstaqi -- ___fractunstahi -- ___fractunstasi -- ___fractunstadi -- ___fractunstati -- ___fractunsuqqqi -- ___fractunsuqqhi -- ___fractunsuqqsi -- ___fractunsuqqdi -- ___fractunsuqqti -- ___fractunsuhqqi -- ___fractunsuhqhi -- ___fractunsuhqsi -- ___fractunsuhqdi -- ___fractunsuhqti -- ___fractunsusqqi -- ___fractunsusqhi -- ___fractunsusqsi -- ___fractunsusqdi -- ___fractunsusqti -- ___fractunsudqqi -- ___fractunsudqhi -- ___fractunsudqsi -- ___fractunsudqdi -- ___fractunsudqti -- ___fractunsutqqi -- ___fractunsutqhi -- ___fractunsutqsi -- ___fractunsutqdi -- ___fractunsutqti -- ___fractunsuhaqi -- ___fractunsuhahi -- ___fractunsuhasi -- ___fractunsuhadi -- ___fractunsuhati -- ___fractunsusaqi -- ___fractunsusahi -- ___fractunsusasi -- ___fractunsusadi -- ___fractunsusati -- ___fractunsudaqi -- ___fractunsudahi -- ___fractunsudasi -- ___fractunsudadi -- ___fractunsudati -- ___fractunsutaqi -- ___fractunsutahi -- ___fractunsutasi -- ___fractunsutadi -- ___fractunsutati -- ___fractunsqiqq -- ___fractunsqihq -- ___fractunsqisq -- ___fractunsqidq -- ___fractunsqitq -- ___fractunsqiha -- ___fractunsqisa -- ___fractunsqida -- ___fractunsqita -- ___fractunsqiuqq -- ___fractunsqiuhq -- ___fractunsqiusq -- ___fractunsqiudq -- ___fractunsqiutq -- ___fractunsqiuha -- ___fractunsqiusa -- ___fractunsqiuda -- ___fractunsqiuta -- ___fractunshiqq -- ___fractunshihq -- ___fractunshisq -- ___fractunshidq -- ___fractunshitq -- ___fractunshiha -- ___fractunshisa -- ___fractunshida -- ___fractunshita -- ___fractunshiuqq -- ___fractunshiuhq -- ___fractunshiusq -- ___fractunshiudq -- ___fractunshiutq -- ___fractunshiuha -- ___fractunshiusa -- ___fractunshiuda -- ___fractunshiuta -- ___fractunssiqq -- ___fractunssihq -- ___fractunssisq -- ___fractunssidq -- ___fractunssitq -- ___fractunssiha -- ___fractunssisa -- ___fractunssida -- ___fractunssita -- ___fractunssiuqq -- ___fractunssiuhq -- ___fractunssiusq -- ___fractunssiudq -- ___fractunssiutq -- ___fractunssiuha -- ___fractunssiusa -- ___fractunssiuda -- ___fractunssiuta -- ___fractunsdiqq -- ___fractunsdihq -- ___fractunsdisq -- ___fractunsdidq -- ___fractunsditq -- ___fractunsdiha -- ___fractunsdisa -- ___fractunsdida -- ___fractunsdita -- ___fractunsdiuqq -- ___fractunsdiuhq -- ___fractunsdiusq -- ___fractunsdiudq -- ___fractunsdiutq -- ___fractunsdiuha -- ___fractunsdiusa -- ___fractunsdiuda -- ___fractunsdiuta -- ___fractunstiqq -- ___fractunstihq -- ___fractunstisq -- ___fractunstidq -- ___fractunstitq -- ___fractunstiha -- ___fractunstisa -- ___fractunstida -- ___fractunstita -- ___fractunstiuqq -- ___fractunstiuhq -- ___fractunstiusq -- ___fractunstiudq -- ___fractunstiutq -- ___fractunstiuha -- ___fractunstiusa -- ___fractunstiuda -- ___fractunstiuta -- ___satfractunsqiqq -- ___satfractunsqihq -- ___satfractunsqisq -- ___satfractunsqidq -- ___satfractunsqitq -- ___satfractunsqiha -- ___satfractunsqisa -- ___satfractunsqida -- ___satfractunsqita -- ___satfractunsqiuqq -- ___satfractunsqiuhq -- ___satfractunsqiusq -- ___satfractunsqiudq -- ___satfractunsqiutq -- ___satfractunsqiuha -- ___satfractunsqiusa -- ___satfractunsqiuda -- ___satfractunsqiuta -- ___satfractunshiqq -- ___satfractunshihq -- ___satfractunshisq -- ___satfractunshidq -- ___satfractunshitq -- ___satfractunshiha -- ___satfractunshisa -- ___satfractunshida -- ___satfractunshita -- ___satfractunshiuqq -- ___satfractunshiuhq -- ___satfractunshiusq -- ___satfractunshiudq -- ___satfractunshiutq -- ___satfractunshiuha -- ___satfractunshiusa -- ___satfractunshiuda -- ___satfractunshiuta -- ___satfractunssiqq -- ___satfractunssihq -- ___satfractunssisq -- ___satfractunssidq -- ___satfractunssitq -- ___satfractunssiha -- ___satfractunssisa -- ___satfractunssida -- ___satfractunssita -- ___satfractunssiuqq -- ___satfractunssiuhq -- ___satfractunssiusq -- ___satfractunssiudq -- ___satfractunssiutq -- ___satfractunssiuha -- ___satfractunssiusa -- ___satfractunssiuda -- ___satfractunssiuta -- ___satfractunsdiqq -- ___satfractunsdihq -- ___satfractunsdisq -- ___satfractunsdidq -- ___satfractunsditq -- ___satfractunsdiha -- ___satfractunsdisa -- ___satfractunsdida -- ___satfractunsdita -- ___satfractunsdiuqq -- ___satfractunsdiuhq -- ___satfractunsdiusq -- ___satfractunsdiudq -- ___satfractunsdiutq -- ___satfractunsdiuha -- ___satfractunsdiusa -- ___satfractunsdiuda -- ___satfractunsdiuta -- ___satfractunstiqq -- ___satfractunstihq -- ___satfractunstisq -- ___satfractunstidq -- ___satfractunstitq -- ___satfractunstiha -- ___satfractunstisa -- ___satfractunstida -- ___satfractunstita -- ___satfractunstiuqq -- ___satfractunstiuhq -- ___satfractunstiusq -- ___satfractunstiudq -- ___satfractunstiutq -- ___satfractunstiuha -- ___satfractunstiusa -- ___satfractunstiuda -- ___satfractunstiuta --} -- --%inherit GCC_4.4.0 GCC_4.3.0 --GCC_4.4.0 { -- ___sync_fetch_and_add_1 -- ___sync_fetch_and_sub_1 -- ___sync_fetch_and_or_1 -- ___sync_fetch_and_and_1 -- ___sync_fetch_and_xor_1 -- ___sync_fetch_and_nand_1 -- ___sync_add_and_fetch_1 -- ___sync_sub_and_fetch_1 -- ___sync_or_and_fetch_1 -- ___sync_and_and_fetch_1 -- ___sync_xor_and_fetch_1 -- ___sync_nand_and_fetch_1 -- ___sync_bool_compare_and_swap_1 -- ___sync_val_compare_and_swap_1 -- ___sync_lock_test_and_set_1 -- -- ___sync_fetch_and_add_2 -- ___sync_fetch_and_sub_2 -- ___sync_fetch_and_or_2 -- ___sync_fetch_and_and_2 -- ___sync_fetch_and_xor_2 -- ___sync_fetch_and_nand_2 -- ___sync_add_and_fetch_2 -- ___sync_sub_and_fetch_2 -- ___sync_or_and_fetch_2 -- ___sync_and_and_fetch_2 -- ___sync_xor_and_fetch_2 -- ___sync_nand_and_fetch_2 -- ___sync_bool_compare_and_swap_2 -- ___sync_val_compare_and_swap_2 -- ___sync_lock_test_and_set_2 -- -- ___sync_fetch_and_add_4 -- ___sync_fetch_and_sub_4 -- ___sync_fetch_and_or_4 -- ___sync_fetch_and_and_4 -- ___sync_fetch_and_xor_4 -- ___sync_fetch_and_nand_4 -- ___sync_add_and_fetch_4 -- ___sync_sub_and_fetch_4 -- ___sync_or_and_fetch_4 -- ___sync_and_and_fetch_4 -- ___sync_xor_and_fetch_4 -- ___sync_nand_and_fetch_4 -- ___sync_bool_compare_and_swap_4 -- ___sync_val_compare_and_swap_4 -- ___sync_lock_test_and_set_4 -- -- ___sync_fetch_and_add_8 -- ___sync_fetch_and_sub_8 -- ___sync_fetch_and_or_8 -- ___sync_fetch_and_and_8 -- ___sync_fetch_and_xor_8 -- ___sync_fetch_and_nand_8 -- ___sync_add_and_fetch_8 -- ___sync_sub_and_fetch_8 -- ___sync_or_and_fetch_8 -- ___sync_and_and_fetch_8 -- ___sync_xor_and_fetch_8 -- ___sync_nand_and_fetch_8 -- ___sync_bool_compare_and_swap_8 -- ___sync_val_compare_and_swap_8 -- ___sync_lock_test_and_set_8 -- -- ___sync_fetch_and_add_16 -- ___sync_fetch_and_sub_16 -- ___sync_fetch_and_or_16 -- ___sync_fetch_and_and_16 -- ___sync_fetch_and_xor_16 -- ___sync_fetch_and_nand_16 -- ___sync_add_and_fetch_16 -- ___sync_sub_and_fetch_16 -- ___sync_or_and_fetch_16 -- ___sync_and_and_fetch_16 -- ___sync_xor_and_fetch_16 -- ___sync_nand_and_fetch_16 -- ___sync_bool_compare_and_swap_16 -- ___sync_val_compare_and_swap_16 -- ___sync_lock_test_and_set_16 -- -- ___sync_synchronize --} -- --%inherit GCC_4.5.0 GCC_4.4.0 --GCC_4.5.0 { -- ___unordxf2 -- ___unordtf2 -+ __smulsi3_highpart -+ __umulsi3_highpart - } -diff --git a/libgcc/config/bfin/t-linux b/libgcc/config/bfin/t-linux -index 1c42e48..8898157 100644 ---- a/libgcc/config/bfin/t-linux -+++ b/libgcc/config/bfin/t-linux -@@ -1 +1,2 @@ --SHLIB_MAPFILES = $(srcdir)/config/bfin/libgcc-glibc.ver -+SHLIB_MAPFILES += $(srcdir)/config/bfin/libgcc-glibc.ver -+SHLIB_MKMAP_OPTS = -v skip_underscore=1 --- -2.7.4 - diff --git a/buildroot/package/gcc/6.4.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch b/buildroot/package/gcc/6.4.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch deleted file mode 100644 index ce49de7ee9b..00000000000 --- a/buildroot/package/gcc/6.4.0/894-libgcc-fix-DWARF-compilation-with-FDPIC-targets.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 9d9f97ca5d1ceba66677bf406c9b31027dc1f22e Mon Sep 17 00:00:00 2001 -From: Waldemar Brodkorb -Date: Fri, 19 Aug 2016 13:54:46 +0200 -Subject: [PATCH] libgcc: fix DWARF compilation with FDPIC targets - -The build of unwind-dw2-fde-dip.c currently fails for FDPIC targets with -the following error: - -libgcc/unwind-dw2-fde-dip.c:167:31: error: storage size of 'load_base' isn't known - struct elf32_fdpic_loadaddr load_base; - -This patch addresses that by defining load_base with the appropriate -type on FDPIC targets. It has been tested on FRV and Blackfin. - -Fixes PR gcc/68468. - -Signed-off-by: Waldemar Brodkorb -Signed-off-by: Thomas Petazzoni ---- - libgcc/unwind-dw2-fde-dip.c | 8 ++++++-- - 1 file changed, 6 insertions(+), 2 deletions(-) - -diff --git a/libgcc/unwind-dw2-fde-dip.c b/libgcc/unwind-dw2-fde-dip.c -index f7a1c3f..801bce8 100644 ---- a/libgcc/unwind-dw2-fde-dip.c -+++ b/libgcc/unwind-dw2-fde-dip.c -@@ -124,7 +124,11 @@ static struct frame_hdr_cache_element - { - _Unwind_Ptr pc_low; - _Unwind_Ptr pc_high; -+#if defined __FRV_FDPIC__ || defined __BFIN_FDPIC__ -+ struct elf32_fdpic_loadaddr load_base; -+#else - _Unwind_Ptr load_base; -+#endif - const ElfW(Phdr) *p_eh_frame_hdr; - const ElfW(Phdr) *p_dynamic; - struct frame_hdr_cache_element *link; -@@ -163,7 +167,7 @@ _Unwind_IteratePhdrCallback (struct dl_phdr_info *info, size_t size, void *ptr) - struct unw_eh_callback_data *data = (struct unw_eh_callback_data *) ptr; - const ElfW(Phdr) *phdr, *p_eh_frame_hdr, *p_dynamic; - long n, match; --#ifdef __FRV_FDPIC__ -+#if defined __FRV_FDPIC__ || defined __BFIN_FDPIC__ - struct elf32_fdpic_loadaddr load_base; - #else - _Unwind_Ptr load_base; -@@ -347,7 +351,7 @@ _Unwind_IteratePhdrCallback (struct dl_phdr_info *info, size_t size, void *ptr) - break; - } - } --# elif defined __FRV_FDPIC__ && defined __linux__ -+# elif (defined __FRV_FDPIC__ || defined __BFIN_FDPIC__) && defined __linux__ - data->dbase = load_base.got_value; - # else - # error What is DW_EH_PE_datarel base on this platform? --- -2.7.4 - diff --git a/buildroot/package/gcc/6.4.0/895-bfin-define-REENTRANT.patch b/buildroot/package/gcc/6.4.0/895-bfin-define-REENTRANT.patch deleted file mode 100644 index e2828a5106a..00000000000 --- a/buildroot/package/gcc/6.4.0/895-bfin-define-REENTRANT.patch +++ /dev/null @@ -1,17 +0,0 @@ -enable _REENTRANT when -lpthread is used - -Signed-off-by: Waldemar Brodkorb - -diff -Nur gcc-6.2.0.orig/gcc/config/bfin/linux.h gcc-6.2.0/gcc/config/bfin/linux.h ---- gcc-6.2.0.orig/gcc/config/bfin/linux.h 2016-01-04 15:30:50.000000000 +0100 -+++ gcc-6.2.0/gcc/config/bfin/linux.h 2016-09-30 20:48:17.446636819 +0200 -@@ -38,6 +38,9 @@ - "%{static:--start-group} %{mfast-fp:-lbffastfp} %G %L %{static:--end-group} \ - %{!static:%{mfast-fp:-lbffastfp} %G}" - -+#undef CPP_SPEC -+#define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}" -+ - #undef LINK_SPEC - #define LINK_SPEC "\ - %{mfdpic: -m elf32bfinfd -z text} %{shared} %{pie} \ diff --git a/buildroot/package/gcc/7.3.0/0001-m68k-coldfire-pr68467.patch b/buildroot/package/gcc/7.3.0/0001-m68k-coldfire-pr68467.patch new file mode 100644 index 00000000000..629c6496e5f --- /dev/null +++ b/buildroot/package/gcc/7.3.0/0001-m68k-coldfire-pr68467.patch @@ -0,0 +1,48 @@ +Backport from upstream, see +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68467 + +Signed-off-by: Waldemar Brodkorb + +diff -Nur gcc-7.2.0.orig/gcc/config/m68k/m68k.c gcc-7.2.0/gcc/config/m68k/m68k.c +--- gcc-7.2.0.orig/gcc/config/m68k/m68k.c 2017-04-03 22:30:56.274463000 +0000 ++++ gcc-7.2.0/gcc/config/m68k/m68k.c 2018-01-27 02:16:53.779367849 +0000 +@@ -182,6 +182,8 @@ + const_tree, bool); + static bool m68k_cannot_force_const_mem (machine_mode mode, rtx x); + static bool m68k_output_addr_const_extra (FILE *, rtx); ++static machine_mode m68k_promote_function_mode (const_tree, machine_mode, ++ int *, const_tree, int); + static void m68k_init_sync_libfuncs (void) ATTRIBUTE_UNUSED; + static enum flt_eval_method + m68k_excess_precision (enum excess_precision_type); +@@ -332,6 +334,9 @@ + #undef TARGET_ATOMIC_TEST_AND_SET_TRUEVAL + #define TARGET_ATOMIC_TEST_AND_SET_TRUEVAL 128 + ++#undef TARGET_PROMOTE_FUNCTION_MODE ++#define TARGET_PROMOTE_FUNCTION_MODE m68k_promote_function_mode ++ + static const struct attribute_spec m68k_attribute_table[] = + { + /* { name, min_len, max_len, decl_req, type_req, fn_type_req, handler, +@@ -6571,4 +6576,20 @@ + return FLT_EVAL_METHOD_UNPREDICTABLE; + } + ++/* Implement TARGET_PROMOTE_FUNCTION_MODE. */ ++ ++static machine_mode ++m68k_promote_function_mode (const_tree type, machine_mode mode, ++ int *punsignedp ATTRIBUTE_UNUSED, ++ const_tree fntype ATTRIBUTE_UNUSED, ++ int for_return) ++{ ++ /* Promote libcall arguments narrower than int to match the normal C ++ ABI (for which promotions are handled via ++ TARGET_PROMOTE_PROTOTYPES). */ ++ if (type == NULL_TREE && !for_return && (mode == QImode || mode == HImode)) ++ return SImode; ++ return mode; ++} ++ + #include "gt-m68k.h" diff --git a/buildroot/package/gcc/7.3.0/0891-fix-m68k-uclinux.patch b/buildroot/package/gcc/7.3.0/0891-fix-m68k-uclinux.patch deleted file mode 100644 index e84fd924530..00000000000 --- a/buildroot/package/gcc/7.3.0/0891-fix-m68k-uclinux.patch +++ /dev/null @@ -1,30 +0,0 @@ -From c2773170a1b0e2728f71f2275a99fd177ba2cef4 Mon Sep 17 00:00:00 2001 -From: Romain Naour -Date: Tue, 2 May 2017 23:25:17 +0200 -Subject: [PATCH] fix m68k uclinux avoids internal compiler error while - compiling linux-atomic.c See here: - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53833 - -Signed-off-by: Waldemar Brodkorb -[Romain: convert to git patch] -Signed-off-by: Romain Naour ---- - libgcc/config.host | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libgcc/config.host b/libgcc/config.host -index b279a64..04fe183 100644 ---- a/libgcc/config.host -+++ b/libgcc/config.host -@@ -820,7 +820,7 @@ m68k*-*-netbsdelf*) - m68k*-*-openbsd*) - ;; - m68k-*-uclinux*) # Motorola m68k/ColdFire running uClinux with uClibc -- tmake_file="$tmake_file m68k/t-floatlib m68k/t-linux" -+ tmake_file="$tmake_file m68k/t-floatlib" - md_unwind_header=m68k/linux-unwind.h - ;; - m68k-*-linux*) # Motorola m68k's running GNU/Linux --- -2.9.3 - diff --git a/buildroot/package/gcc/Config.in.host b/buildroot/package/gcc/Config.in.host index 309ddf572a7..7c08fb3596e 100644 --- a/buildroot/package/gcc/Config.in.host +++ b/buildroot/package/gcc/Config.in.host @@ -63,13 +63,6 @@ config BR2_GCC_VERSION_7_X endchoice -# Indicates if GCC for architecture supports --with-{arch,cpu,..} to -# set default CFLAGS, otherwise values will be used by toolchain -# wrapper. -config BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS - bool - default y if !BR2_bfin - config BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE bool default y @@ -80,7 +73,7 @@ config BR2_GCC_VERSION default "5.5.0" if BR2_GCC_VERSION_5_X default "6.4.0" if BR2_GCC_VERSION_6_X default "7.3.0" if BR2_GCC_VERSION_7_X - default "arc-2017.09-release" if BR2_GCC_VERSION_ARC + default "arc-2018.03-rc1" if BR2_GCC_VERSION_ARC default "or1k-musl-5.4.0-20170218" if BR2_GCC_VERSION_OR1K config BR2_EXTRA_GCC_CONFIG_OPTIONS diff --git a/buildroot/package/gcc/arc-2017.09-release/0001-fix-checking-for-jumps.patch b/buildroot/package/gcc/arc-2017.09-release/0001-fix-checking-for-jumps.patch deleted file mode 100644 index ce78fac2e6b..00000000000 --- a/buildroot/package/gcc/arc-2017.09-release/0001-fix-checking-for-jumps.patch +++ /dev/null @@ -1,49 +0,0 @@ -From c2694d3739d90ea3350b42252638b604a2c122b7 Mon Sep 17 00:00:00 2001 -From: Claudiu Zissulescu -Date: Tue, 7 Nov 2017 20:16:41 +0200 -Subject: [PATCH] [FIX][ZOL] fix checking for jumps - -Signed-off-by: Evgeniy Didin ---- - gcc/config/arc/arc.c | 3 ++- - gcc/testsuite/gcc.target/arc/loop-4.c | 14 ++++++++++++++ - 2 files changed, 16 insertions(+), 1 deletion(-) - create mode 100644 gcc/testsuite/gcc.target/arc/loop-4.c - -diff --git a/gcc/config/arc/arc.c b/gcc/config/arc/arc.c -index 22eeb34a371..5d367499d03 100644 ---- a/gcc/config/arc/arc.c -+++ b/gcc/config/arc/arc.c -@@ -7505,7 +7505,8 @@ hwloop_optimize (hwloop_info loop) - && INSN_P (last_insn) - && (JUMP_P (last_insn) || CALL_P (last_insn) - || GET_CODE (PATTERN (last_insn)) == SEQUENCE -- || JUMP_P (prev_active_insn (last_insn)) -+ || (prev_active_insn (last_insn) -+ && JUMP_P (prev_active_insn (last_insn))) - /* At this stage we can have (insn (clobber (mem:BLK - (reg)))) instructions, ignpre them. */ - || (GET_CODE (PATTERN (last_insn)) != CLOBBER -diff --git a/gcc/testsuite/gcc.target/arc/loop-4.c b/gcc/testsuite/gcc.target/arc/loop-4.c -new file mode 100644 -index 00000000000..99a93a74d1e ---- /dev/null -+++ b/gcc/testsuite/gcc.target/arc/loop-4.c -@@ -0,0 +1,14 @@ -+/* { dg-do assemble } */ -+/* { dg-do compile } */ -+/* { dg-options "-Os" } */ -+ -+ -+void fn1(void *p1, int p2, int p3) -+{ -+ char *d = p1; -+ do -+ *d++ = p2; -+ while (--p3); -+} -+ -+/* { dg-final { scan-assembler "lp_count" } } */ --- -2.11.0 - diff --git a/buildroot/package/gcc/arc-2017.09-release/0100-uclibc-conf.patch b/buildroot/package/gcc/arc-2018.03-rc1/0100-uclibc-conf.patch similarity index 100% rename from buildroot/package/gcc/arc-2017.09-release/0100-uclibc-conf.patch rename to buildroot/package/gcc/arc-2018.03-rc1/0100-uclibc-conf.patch diff --git a/buildroot/package/gcc/arc-2017.09-release/0860-cilk-fix-build-without-wchar.patch b/buildroot/package/gcc/arc-2018.03-rc1/0860-cilk-fix-build-without-wchar.patch similarity index 100% rename from buildroot/package/gcc/arc-2017.09-release/0860-cilk-fix-build-without-wchar.patch rename to buildroot/package/gcc/arc-2018.03-rc1/0860-cilk-fix-build-without-wchar.patch diff --git a/buildroot/package/gcc/arc-2017.09-release/0900-remove-selftests.patch b/buildroot/package/gcc/arc-2018.03-rc1/0900-remove-selftests.patch similarity index 100% rename from buildroot/package/gcc/arc-2017.09-release/0900-remove-selftests.patch rename to buildroot/package/gcc/arc-2018.03-rc1/0900-remove-selftests.patch diff --git a/buildroot/package/gcc/gcc-final/gcc-final.mk b/buildroot/package/gcc/gcc-final/gcc-final.mk index 213f3d7b665..9897d18682f 100644 --- a/buildroot/package/gcc/gcc-final/gcc-final.mk +++ b/buildroot/package/gcc/gcc-final/gcc-final.mk @@ -8,6 +8,8 @@ GCC_FINAL_VERSION = $(GCC_VERSION) GCC_FINAL_SITE = $(GCC_SITE) GCC_FINAL_SOURCE = $(GCC_SOURCE) +HOST_GCC_FINAL_DL_SUBDIR = gcc + HOST_GCC_FINAL_DEPENDENCIES = \ $(HOST_GCC_COMMON_DEPENDENCIES) \ $(BR_LIBC) @@ -74,10 +76,6 @@ HOST_GCC_FINAL_CONF_OPTS += "--with-multilib-list=m4a,m4a-nofpu" HOST_GCC_FINAL_GCC_LIB_DIR = $(HOST_DIR)/$(GNU_TARGET_NAME)/lib/!m4* endif -ifeq ($(BR2_bfin),y) -HOST_GCC_FINAL_CONF_OPTS += --disable-symvers -endif - # libcilkrts does not support v8 ifeq ($(BR2_sparc),y) HOST_GCC_FINAL_CONF_OPTS += --disable-libcilkrts diff --git a/buildroot/package/gcc/gcc-initial/gcc-initial.mk b/buildroot/package/gcc/gcc-initial/gcc-initial.mk index c476b2faeb4..9b20eb18f95 100644 --- a/buildroot/package/gcc/gcc-initial/gcc-initial.mk +++ b/buildroot/package/gcc/gcc-initial/gcc-initial.mk @@ -8,6 +8,11 @@ GCC_INITIAL_VERSION = $(GCC_VERSION) GCC_INITIAL_SITE = $(GCC_SITE) GCC_INITIAL_SOURCE = $(GCC_SOURCE) +# We do not have a 'gcc' package per-se; we only have two incarnations, +# gcc-initial and gcc-final. gcc-initial is just am 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) diff --git a/buildroot/package/gcc/gcc.hash b/buildroot/package/gcc/gcc.hash index fd38cfaad1e..d9a651b5470 100644 --- a/buildroot/package/gcc/gcc.hash +++ b/buildroot/package/gcc/gcc.hash @@ -8,6 +8,6 @@ sha512 02c60e54527c7adf584798d5251f8a0b80c93d5deafce82501b2c28e6692e0bd783927bb sha512 ad41a7e4584e40e92cdf860bc0288500fbaf5dfb7e8c3fcabe9eba809c87bcfa85b46c19c19921b0cdf6d05483faede8287bb9ea120c0d1559449a70e602c8d4 gcc-7.3.0.tar.xz # Locally calculated (fetched from Github) -sha512 c30addd3c4dc66b90749a0f99b257c8a8e7966d27f286057b6b66f4a70ca22a1ee50d92882c4db13307d769a6fb28e1e2a2bab749a692cf3f89ef0c38f145efa gcc-arc-2017.09-release.tar.gz +sha512 16e5f9d1637be9a099a996074dc43803803497965c1eab6c0057f10d193d30dcc405ad852df82c4f8c61b195195ee797b788ba0b235d7b03e4410806ac5f94bc gcc-arc-2018.03-rc1.tar.gz # Locally calculated (fetched from Github) sha512 2de7cf47333a4092b02d3bb98f4206f14966f1d139a724d09cf3b22f8a43ae0c704f33e6477d6367a03c29b265480dc900169e9d417006c5d46f0ae446b8c6f1 gcc-or1k-musl-5.4.0-20170218.tar.gz diff --git a/buildroot/package/gcc/gcc.mk b/buildroot/package/gcc/gcc.mk index 27fc1e987c1..0afb06a57ed 100644 --- a/buildroot/package/gcc/gcc.mk +++ b/buildroot/package/gcc/gcc.mk @@ -200,7 +200,6 @@ HOST_GCC_COMMON_CONF_OPTS += --disable-decimal-float endif # Determine arch/tune/abi/cpu options -ifeq ($(BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS),y) ifneq ($(call qstrip,$(BR2_GCC_TARGET_ARCH)),) HOST_GCC_COMMON_CONF_OPTS += --with-arch=$(BR2_GCC_TARGET_ARCH) endif @@ -237,7 +236,6 @@ GCC_TARGET_MODE = $(call qstrip,$(BR2_GCC_TARGET_MODE)) ifneq ($(GCC_TARGET_MODE),) HOST_GCC_COMMON_CONF_OPTS += --with-mode=$(GCC_TARGET_MODE) endif -endif # BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS # Enable proper double/long double for SPE ABI ifeq ($(BR2_powerpc_SPE),y) @@ -265,45 +263,6 @@ HOST_GCC_COMMON_CONF_OPTS += \ endif HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_CROSS_PATH_SUFFIX='".br_real"' -ifeq ($(BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS),) -ifeq ($(call qstrip,$(BR2_GCC_TARGET_CPU_REVISION)),) -HOST_GCC_COMMON_WRAPPER_TARGET_CPU := $(call qstrip,$(BR2_GCC_TARGET_CPU)) -else -HOST_GCC_COMMON_WRAPPER_TARGET_CPU := $(call qstrip,$(BR2_GCC_TARGET_CPU)-$(BR2_GCC_TARGET_CPU_REVISION)) -endif -HOST_GCC_COMMON_WRAPPER_TARGET_ARCH := $(call qstrip,$(BR2_GCC_TARGET_ARCH)) -HOST_GCC_COMMON_WRAPPER_TARGET_ABI := $(call qstrip,$(BR2_GCC_TARGET_ABI)) -HOST_GCC_COMMON_WRAPPER_TARGET_NAN := $(call qstrip,$(BR2_GCC_TARGET_NAN)) -HOST_GCC_COMMON_WRAPPER_TARGET_FP32_MODE := $(call qstrip,$(BR2_GCC_TARGET_FP32_MODE)) -HOST_GCC_COMMON_WRAPPER_TARGET_FPU := $(call qstrip,$(BR2_GCC_TARGET_FPU)) -HOST_GCC_COMMON_WRAPPER_TARGET_FLOAT_ABI := $(call qstrip,$(BR2_GCC_TARGET_FLOAT_ABI)) -HOST_GCC_COMMON_WRAPPER_TARGET_MODE := $(call qstrip,$(BR2_GCC_TARGET_MODE)) - -ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_ARCH),) -HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_ARCH='"$(HOST_GCC_COMMON_WRAPPER_TARGET_ARCH)"' -endif -ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_CPU),) -HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_CPU='"$(HOST_GCC_COMMON_WRAPPER_TARGET_CPU)"' -endif -ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_ABI),) -HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_ABI='"$(HOST_GCC_COMMON_WRAPPER_TARGET_ABI)"' -endif -ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_NAN),) -HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_NAN='"$(HOST_GCC_COMMON_WRAPPER_TARGET_NAN)"' -endif -ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_FP32_MODE),) -HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_FP32_MODE='"$(HOST_GCC_COMMON_WRAPPER_TARGET_FP32_MODE)"' -endif -ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_FPU),) -HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_FPU='"$(HOST_GCC_COMMON_WRAPPER_TARGET_FPU)"' -endif -ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_FLOATABI_),) -HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_FLOAT_ABI='"$(HOST_GCC_COMMON_WRAPPER_TARGET_FLOATABI_)"' -endif -ifneq ($(HOST_GCC_COMMON_WRAPPER_TARGET_MODE),) -HOST_GCC_COMMON_TOOLCHAIN_WRAPPER_ARGS += -DBR_MODE='"$(HOST_GCC_COMMON_WRAPPER_TARGET_MODE)"' -endif -endif # !BR2_GCC_ARCH_HAS_CONFIGURABLE_DEFAULTS # 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 @@ -316,7 +275,7 @@ 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 += $(DL_DIR)/$(GCC_SOURCE) +HOST_GCC_COMMON_CCACHE_HASH_FILES += $(GCC_DL_DIR)/$(GCC_SOURCE) # Cfr. PATCH_BASE_DIRS in .stamp_patched, but we catch both versioned # and unversioned patches unconditionally. Moreover, to facilitate the diff --git a/buildroot/package/gdb/7.10.1/0006-Revert-sim-unify-SIM_CPU-definition.patch b/buildroot/package/gdb/7.10.1/0006-Revert-sim-unify-SIM_CPU-definition.patch deleted file mode 100644 index 20b7fb23411..00000000000 --- a/buildroot/package/gdb/7.10.1/0006-Revert-sim-unify-SIM_CPU-definition.patch +++ /dev/null @@ -1,372 +0,0 @@ -From 4d913bb73965fdb9c756e8d5916a829b60aa3a44 Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Thu, 4 Aug 2016 23:44:24 +0200 -Subject: [PATCH] Revert "sim: unify SIM_CPU definition" - -This reverts commit 20bca71d82598a015de0991196e45f0b5f7ead81. - -This change causes a redefinition of SIM_CPU on the Blackfin -architecture, as it is defined in both the common sim/common/sim-base.h -and the architecture specific sim/bfin/sim-main.h. - -Signed-off-by: Thomas Petazzoni ---- - sim/arm/sim-main.h | 3 +++ - sim/avr/sim-main.h | 2 ++ - sim/bfin/sim-main.h | 2 -- - sim/common/sim-base.h | 2 -- - sim/cr16/sim-main.h | 2 ++ - sim/cris/sim-main.h | 5 +++++ - sim/d10v/sim-main.h | 2 ++ - sim/frv/sim-main.h | 10 ++++++++++ - sim/ft32/sim-main.h | 2 ++ - sim/h8300/sim-main.h | 3 +++ - sim/iq2000/sim-main.h | 5 +++++ - sim/lm32/sim-main.h | 5 +++++ - sim/m32r/sim-main.h | 5 +++++ - sim/m68hc11/sim-main.h | 3 +++ - sim/mcore/sim-main.h | 2 ++ - sim/microblaze/sim-main.h | 3 +++ - sim/mips/sim-main.h | 3 +++ - sim/mn10300/sim-main.h | 2 ++ - sim/moxie/sim-main.h | 3 +++ - sim/msp430/sim-main.h | 3 +++ - sim/sh/sim-main.h | 3 +++ - sim/sh64/sim-main.h | 5 +++++ - sim/v850/sim-main.h | 3 +++ - 23 files changed, 74 insertions(+), 4 deletions(-) - -diff --git a/sim/arm/sim-main.h b/sim/arm/sim-main.h -index 9a37b98..ae622bd 100644 ---- a/sim/arm/sim-main.h -+++ b/sim/arm/sim-main.h -@@ -20,6 +20,9 @@ - #define SIM_MAIN_H - - #include "sim-basics.h" -+ -+typedef struct _sim_cpu SIM_CPU; -+ - #include "sim-base.h" - #include "bfd.h" - -diff --git a/sim/avr/sim-main.h b/sim/avr/sim-main.h -index e0cac22..52904e3 100644 ---- a/sim/avr/sim-main.h -+++ b/sim/avr/sim-main.h -@@ -23,6 +23,8 @@ along with this program. If not, see . */ - - extern unsigned int pc; - -+typedef struct _sim_cpu SIM_CPU; -+ - #include "sim-base.h" - - struct _sim_cpu { -diff --git a/sim/bfin/sim-main.h b/sim/bfin/sim-main.h -index 806fe15..53e1774 100644 ---- a/sim/bfin/sim-main.h -+++ b/sim/bfin/sim-main.h -@@ -24,8 +24,6 @@ - #include "sim-basics.h" - #include "sim-signal.h" - --/* TODO: Delete this. Need to convert bu32/etc... to common sim types -- and unwind the bfin-sim.h/machs.h include below first though. */ - typedef struct _sim_cpu SIM_CPU; - - #include "bfin-sim.h" -diff --git a/sim/common/sim-base.h b/sim/common/sim-base.h -index 21f61f4..e90e07c 100644 ---- a/sim/common/sim-base.h -+++ b/sim/common/sim-base.h -@@ -72,8 +72,6 @@ typedef address_word sim_cia; - #define INVALID_INSTRUCTION_ADDRESS ((address_word)0 - 1) - #endif - --/* TODO: Probably should just delete SIM_CPU. */ --typedef struct _sim_cpu SIM_CPU; - typedef struct _sim_cpu sim_cpu; - - #include "sim-module.h" -diff --git a/sim/cr16/sim-main.h b/sim/cr16/sim-main.h -index a63b93e..1a80229 100644 ---- a/sim/cr16/sim-main.h -+++ b/sim/cr16/sim-main.h -@@ -24,6 +24,8 @@ - typedef long int word; - typedef unsigned long int uword; - -+typedef struct _sim_cpu SIM_CPU; -+ - #include "sim-base.h" - #include "bfd.h" - -diff --git a/sim/cris/sim-main.h b/sim/cris/sim-main.h -index 4dc04a2..fec0039 100644 ---- a/sim/cris/sim-main.h -+++ b/sim/cris/sim-main.h -@@ -24,6 +24,11 @@ along with this program. If not, see . */ - #ifndef SIM_MAIN_H - #define SIM_MAIN_H - -+#define USING_SIM_BASE_H -+ -+struct _sim_cpu; -+typedef struct _sim_cpu SIM_CPU; -+ - #include "symcat.h" - #include "sim-basics.h" - #include "cgen-types.h" -diff --git a/sim/d10v/sim-main.h b/sim/d10v/sim-main.h -index 0b87811..a7d59dd 100644 ---- a/sim/d10v/sim-main.h -+++ b/sim/d10v/sim-main.h -@@ -24,6 +24,8 @@ - typedef long int word; - typedef unsigned long int uword; - -+typedef struct _sim_cpu SIM_CPU; -+ - #include "sim-base.h" - #include "bfd.h" - -diff --git a/sim/frv/sim-main.h b/sim/frv/sim-main.h -index d5a67cb..fd12c4f 100644 ---- a/sim/frv/sim-main.h -+++ b/sim/frv/sim-main.h -@@ -19,6 +19,16 @@ along with this program. If not, see . */ - - /* Main header for the frv. */ - -+#define USING_SIM_BASE_H /* FIXME: quick hack */ -+ -+struct _sim_cpu; /* FIXME: should be in sim-basics.h */ -+typedef struct _sim_cpu SIM_CPU; -+ -+/* Set the mask of unsupported traces. */ -+#define WITH_TRACE \ -+ (~(TRACE_alu | TRACE_decode | TRACE_memory | TRACE_model | TRACE_fpu \ -+ | TRACE_branch | TRACE_debug)) -+ - /* sim-basics.h includes config.h but cgen-types.h must be included before - sim-basics.h and cgen-types.h needs config.h. */ - #include "config.h" -diff --git a/sim/ft32/sim-main.h b/sim/ft32/sim-main.h -index b27a690..a270a5d 100644 ---- a/sim/ft32/sim-main.h -+++ b/sim/ft32/sim-main.h -@@ -25,6 +25,8 @@ - #include "sim-base.h" - #include "bfd.h" - -+typedef struct _sim_cpu SIM_CPU; -+ - #include "ft32-sim.h" - - struct _sim_cpu { -diff --git a/sim/h8300/sim-main.h b/sim/h8300/sim-main.h -index 6dbc1ac..e95c4d9 100644 ---- a/sim/h8300/sim-main.h -+++ b/sim/h8300/sim-main.h -@@ -87,6 +87,9 @@ enum h8_typecodes { - }; - - #include "sim-basics.h" -+ -+typedef struct _sim_cpu SIM_CPU; -+ - #include "sim-base.h" - - /* Structure used to describe addressing */ -diff --git a/sim/iq2000/sim-main.h b/sim/iq2000/sim-main.h -index 992520a..ce3baba 100644 ---- a/sim/iq2000/sim-main.h -+++ b/sim/iq2000/sim-main.h -@@ -4,6 +4,11 @@ - #ifndef SIM_MAIN_H - #define SIM_MAIN_H - -+#define USING_SIM_BASE_H /* FIXME: quick hack */ -+ -+struct _sim_cpu; /* FIXME: should be in sim-basics.h */ -+typedef struct _sim_cpu SIM_CPU; -+ - /* sim-basics.h includes config.h but cgen-types.h must be included before - sim-basics.h and cgen-types.h needs config.h. */ - #include "config.h" -diff --git a/sim/lm32/sim-main.h b/sim/lm32/sim-main.h -index 4894e8d..210bb8b 100644 ---- a/sim/lm32/sim-main.h -+++ b/sim/lm32/sim-main.h -@@ -23,6 +23,11 @@ - #ifndef SIM_MAIN_H - #define SIM_MAIN_H - -+#define USING_SIM_BASE_H /* FIXME: quick hack */ -+ -+struct _sim_cpu; /* FIXME: should be in sim-basics.h */ -+typedef struct _sim_cpu SIM_CPU; -+ - #include "symcat.h" - #include "sim-basics.h" - #include "cgen-types.h" -diff --git a/sim/m32r/sim-main.h b/sim/m32r/sim-main.h -index cd39e98..74bb513 100644 ---- a/sim/m32r/sim-main.h -+++ b/sim/m32r/sim-main.h -@@ -3,6 +3,11 @@ - #ifndef SIM_MAIN_H - #define SIM_MAIN_H - -+#define USING_SIM_BASE_H /* FIXME: quick hack */ -+ -+struct _sim_cpu; /* FIXME: should be in sim-basics.h */ -+typedef struct _sim_cpu SIM_CPU; -+ - #include "symcat.h" - #include "sim-basics.h" - #include "cgen-types.h" -diff --git a/sim/m68hc11/sim-main.h b/sim/m68hc11/sim-main.h -index d1fc582..4f41db9 100644 ---- a/sim/m68hc11/sim-main.h -+++ b/sim/m68hc11/sim-main.h -@@ -25,6 +25,9 @@ along with this program. If not, see . */ - #define SIM_HANDLES_LMA 1 - - #include "sim-basics.h" -+ -+typedef struct _sim_cpu SIM_CPU; -+ - #include "sim-signal.h" - #include "sim-base.h" - -diff --git a/sim/mcore/sim-main.h b/sim/mcore/sim-main.h -index be50ec1..25698c1 100644 ---- a/sim/mcore/sim-main.h -+++ b/sim/mcore/sim-main.h -@@ -24,6 +24,8 @@ along with this program. If not, see . */ - typedef long int word; - typedef unsigned long int uword; - -+typedef struct _sim_cpu SIM_CPU; -+ - #include "sim-base.h" - #include "bfd.h" - -diff --git a/sim/microblaze/sim-main.h b/sim/microblaze/sim-main.h -index 6781374..6b7b776 100644 ---- a/sim/microblaze/sim-main.h -+++ b/sim/microblaze/sim-main.h -@@ -20,6 +20,9 @@ - - #include "microblaze.h" - #include "sim-basics.h" -+ -+typedef struct _sim_cpu SIM_CPU; -+ - #include "sim-base.h" - - /* The machine state. -diff --git a/sim/mips/sim-main.h b/sim/mips/sim-main.h -index 8d698ad..9729804 100644 ---- a/sim/mips/sim-main.h -+++ b/sim/mips/sim-main.h -@@ -29,6 +29,9 @@ along with this program. If not, see . */ - mips_core_signal ((SD), (CPU), (CIA), (MAP), (NR_BYTES), (ADDR), (TRANSFER), (ERROR)) - - #include "sim-basics.h" -+ -+typedef struct _sim_cpu SIM_CPU; -+ - #include "sim-base.h" - #include "bfd.h" - -diff --git a/sim/mn10300/sim-main.h b/sim/mn10300/sim-main.h -index 847506e..2ddbfb9 100644 ---- a/sim/mn10300/sim-main.h -+++ b/sim/mn10300/sim-main.h -@@ -42,6 +42,8 @@ - #include "itable.h" - #include "idecode.h" - -+typedef struct _sim_cpu SIM_CPU; -+ - #define WITH_WATCHPOINTS 1 - - #define SIM_CORE_SIGNAL(SD,CPU,CIA,MAP,NR_BYTES,ADDR,TRANSFER,ERROR) \ -diff --git a/sim/moxie/sim-main.h b/sim/moxie/sim-main.h -index b1a64fc..c60437e 100644 ---- a/sim/moxie/sim-main.h -+++ b/sim/moxie/sim-main.h -@@ -21,6 +21,9 @@ along with this program. If not, see . */ - #define SIM_MAIN_H - - #include "sim-basics.h" -+ -+typedef struct _sim_cpu SIM_CPU; -+ - #include "sim-base.h" - #include "bfd.h" - -diff --git a/sim/msp430/sim-main.h b/sim/msp430/sim-main.h -index 19c8cca..37bb42d 100644 ---- a/sim/msp430/sim-main.h -+++ b/sim/msp430/sim-main.h -@@ -23,6 +23,9 @@ - - #include "sim-basics.h" - #include "sim-signal.h" -+ -+typedef struct _sim_cpu SIM_CPU; -+ - #include "msp430-sim.h" - #include "sim-base.h" - -diff --git a/sim/sh/sim-main.h b/sim/sh/sim-main.h -index e67df28..e2e17d7 100644 ---- a/sim/sh/sim-main.h -+++ b/sim/sh/sim-main.h -@@ -20,6 +20,9 @@ along with this program. If not, see . */ - #define SIM_MAIN_H - - #include "sim-basics.h" -+ -+typedef struct _sim_cpu SIM_CPU; -+ - #include "sim-base.h" - - typedef struct -diff --git a/sim/sh64/sim-main.h b/sim/sh64/sim-main.h -index 7b24ab0..8fb595e 100644 ---- a/sim/sh64/sim-main.h -+++ b/sim/sh64/sim-main.h -@@ -3,6 +3,11 @@ - #ifndef SIM_MAIN_H - #define SIM_MAIN_H - -+#define USING_SIM_BASE_H /* FIXME: quick hack */ -+ -+struct _sim_cpu; /* FIXME: should be in sim-basics.h */ -+typedef struct _sim_cpu SIM_CPU; -+ - /* sim-basics.h includes config.h but cgen-types.h must be included before - sim-basics.h and cgen-types.h needs config.h. */ - #include "config.h" -diff --git a/sim/v850/sim-main.h b/sim/v850/sim-main.h -index 5127d28..16cbd97 100644 ---- a/sim/v850/sim-main.h -+++ b/sim/v850/sim-main.h -@@ -16,6 +16,9 @@ - #include "sim-basics.h" - #include "sim-signal.h" - #include "sim-fpu.h" -+ -+typedef struct _sim_cpu SIM_CPU; -+ - #include "sim-base.h" - - #include "simops.h" --- -2.7.4 - diff --git a/buildroot/package/gdb/7.10.1/0007-Sync-proc_service-definition-with-GLIBC.patch b/buildroot/package/gdb/7.10.1/0006-Sync-proc_service-definition-with-GLIBC.patch similarity index 100% rename from buildroot/package/gdb/7.10.1/0007-Sync-proc_service-definition-with-GLIBC.patch rename to buildroot/package/gdb/7.10.1/0006-Sync-proc_service-definition-with-GLIBC.patch diff --git a/buildroot/package/gdb/7.10.1/0008-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch b/buildroot/package/gdb/7.10.1/0007-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch similarity index 100% rename from buildroot/package/gdb/7.10.1/0008-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch rename to buildroot/package/gdb/7.10.1/0007-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch diff --git a/buildroot/package/gdb/7.10.1/0009-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch b/buildroot/package/gdb/7.10.1/0008-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch similarity index 100% rename from buildroot/package/gdb/7.10.1/0009-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch rename to buildroot/package/gdb/7.10.1/0008-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch diff --git a/buildroot/package/gdb/7.10.1/0010-Fix-gdbserver-build-on-uClibc-noMMU.patch b/buildroot/package/gdb/7.10.1/0009-Fix-gdbserver-build-on-uClibc-noMMU.patch similarity index 100% rename from buildroot/package/gdb/7.10.1/0010-Fix-gdbserver-build-on-uClibc-noMMU.patch rename to buildroot/package/gdb/7.10.1/0009-Fix-gdbserver-build-on-uClibc-noMMU.patch diff --git a/buildroot/package/gdb/7.10.1/0011-use-asm-sgidefs.h.patch b/buildroot/package/gdb/7.10.1/0010-use-asm-sgidefs.h.patch similarity index 100% rename from buildroot/package/gdb/7.10.1/0011-use-asm-sgidefs.h.patch rename to buildroot/package/gdb/7.10.1/0010-use-asm-sgidefs.h.patch diff --git a/buildroot/package/gdb/7.11.1/0002-Sync-proc_service-definition-with-GLIBC.patch b/buildroot/package/gdb/7.11.1/0001-Sync-proc_service-definition-with-GLIBC.patch similarity index 100% rename from buildroot/package/gdb/7.11.1/0002-Sync-proc_service-definition-with-GLIBC.patch rename to buildroot/package/gdb/7.11.1/0001-Sync-proc_service-definition-with-GLIBC.patch diff --git a/buildroot/package/gdb/7.11.1/0001-sim-bfin-split-out-common-mach-model-defines-into-ar.patch b/buildroot/package/gdb/7.11.1/0001-sim-bfin-split-out-common-mach-model-defines-into-ar.patch deleted file mode 100644 index 5841cfd4d15..00000000000 --- a/buildroot/package/gdb/7.11.1/0001-sim-bfin-split-out-common-mach-model-defines-into-ar.patch +++ /dev/null @@ -1,155 +0,0 @@ -From 7a09ed68e203a813d88fb7fc6eeb1e92209561a5 Mon Sep 17 00:00:00 2001 -From: Mike Frysinger -Date: Mon, 8 Aug 2016 13:06:49 +0800 -Subject: [PATCH] sim: bfin: split out common mach/model defines into arch.h - [PR sim/20438] - -The current machs.h mixes common enums with Blackfin-specific defines. -This causes us troubles with header inclusion order such that we can't -drop the old SIM_CPU typedef (which is duplicated in common code). By -splitting the two up, we can unwind this dependency chain, and drop the -old typedef. It also fixes building with older gcc versions. - -[Romain: backport from gdb 7.12] -Signed-off-by: Romain Naour - ---- - sim/bfin/ChangeLog | 9 +++++++++ - sim/bfin/arch.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ - sim/bfin/machs.h | 20 -------------------- - sim/bfin/sim-main.h | 8 ++------ - 4 files changed, 55 insertions(+), 26 deletions(-) - create mode 100644 sim/bfin/arch.h - -diff --git a/sim/bfin/ChangeLog b/sim/bfin/ChangeLog -index 3dea7c9..a995436 100644 ---- a/sim/bfin/ChangeLog -+++ b/sim/bfin/ChangeLog -@@ -1,3 +1,12 @@ -+2016-08-13 Mike Frysinger -+ -+ PR sim/20438 -+ * machs.h (MODEL_TYPE, MACH_ATTR, BFIN_INSN_*): Move ... -+ * arch.h: ... to this new header file. -+ * sim-main.h (SIM_CPU): Delete. -+ Include arch.h before sim-base.h, and move sim-base.h before -+ bfin-sim.h. -+ - 2016-01-10 Mike Frysinger - - * config.in, configure: Regenerate. -diff --git a/sim/bfin/arch.h b/sim/bfin/arch.h -new file mode 100644 -index 0000000..b86d3e9 ---- /dev/null -+++ b/sim/bfin/arch.h -@@ -0,0 +1,44 @@ -+/* Simulator for Analog Devices Blackfin processors. -+ -+ Copyright (C) 2005-2016 Free Software Foundation, Inc. -+ Contributed by Analog Devices, Inc. -+ -+ This file is part of simulators. -+ -+ 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 . */ -+ -+#ifndef BFIN_ARCH_H -+#define BFIN_ARCH_H -+ -+typedef enum model_type { -+#define P(n) MODEL_BF##n, -+#include "proc_list.def" -+#undef P -+ MODEL_MAX -+} MODEL_TYPE; -+ -+typedef enum mach_attr { -+ MACH_BASE, -+ MACH_BFIN, -+ MACH_MAX -+} MACH_ATTR; -+ -+enum { -+#define I(insn) BFIN_INSN_##insn, -+#include "insn_list.def" -+#undef I -+ BFIN_INSN_MAX -+}; -+ -+#endif -diff --git a/sim/bfin/machs.h b/sim/bfin/machs.h -index 0372982..36819ae 100644 ---- a/sim/bfin/machs.h -+++ b/sim/bfin/machs.h -@@ -21,19 +21,6 @@ - #ifndef _BFIN_MACHS_H_ - #define _BFIN_MACHS_H_ - --typedef enum model_type { --#define P(n) MODEL_BF##n, --#include "proc_list.def" --#undef P -- MODEL_MAX --} MODEL_TYPE; -- --typedef enum mach_attr { -- MACH_BASE, -- MACH_BFIN, -- MACH_MAX --} MACH_ATTR; -- - #define CPU_MODEL_NUM(cpu) MODEL_NUM (CPU_MODEL (cpu)) - - /* XXX: Some of this probably belongs in CPU_MODEL. */ -@@ -46,13 +33,6 @@ void bfin_model_cpu_init (SIM_DESC, SIM_CPU *); - bu32 bfin_model_get_chipid (SIM_DESC); - bu32 bfin_model_get_dspid (SIM_DESC); - --enum { --#define I(insn) BFIN_INSN_##insn, --#include "insn_list.def" --#undef I -- BFIN_INSN_MAX --}; -- - #define BFIN_COREMMR_CEC_BASE 0xFFE02100 - #define BFIN_COREMMR_CEC_SIZE (4 * 5) - #define BFIN_COREMMR_CTIMER_BASE 0xFFE03000 -diff --git a/sim/bfin/sim-main.h b/sim/bfin/sim-main.h -index 51fb87e..34fd153 100644 ---- a/sim/bfin/sim-main.h -+++ b/sim/bfin/sim-main.h -@@ -23,17 +23,13 @@ - - #include "sim-basics.h" - #include "sim-signal.h" -- --/* TODO: Delete this. Need to convert bu32/etc... to common sim types -- and unwind the bfin-sim.h/machs.h include below first though. */ --typedef struct _sim_cpu SIM_CPU; -+#include "arch.h" -+#include "sim-base.h" - - #include "bfin-sim.h" - - #include "machs.h" - --#include "sim-base.h" -- - struct _sim_cpu { - /* ... simulator specific members ... */ - struct bfin_cpu_state state; --- -2.9.3 - diff --git a/buildroot/package/gdb/7.11.1/0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch b/buildroot/package/gdb/7.11.1/0002-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch similarity index 100% rename from buildroot/package/gdb/7.11.1/0003-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch rename to buildroot/package/gdb/7.11.1/0002-ppc-ptrace-Define-pt_regs-uapi_pt_regs-on-GLIBC-syst.patch diff --git a/buildroot/package/gdb/7.11.1/0004-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch b/buildroot/package/gdb/7.11.1/0003-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch similarity index 100% rename from buildroot/package/gdb/7.11.1/0004-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch rename to buildroot/package/gdb/7.11.1/0003-sh-ptrace-Define-pt_-dsp-regs-uapi_pt_-dsp-regs-on-G.patch diff --git a/buildroot/package/gdb/7.11.1/0005-Fix-gdbserver-build-on-uClibc-noMMU.patch b/buildroot/package/gdb/7.11.1/0004-Fix-gdbserver-build-on-uClibc-noMMU.patch similarity index 100% rename from buildroot/package/gdb/7.11.1/0005-Fix-gdbserver-build-on-uClibc-noMMU.patch rename to buildroot/package/gdb/7.11.1/0004-Fix-gdbserver-build-on-uClibc-noMMU.patch diff --git a/buildroot/package/gdb/7.11.1/0006-use-asm-sgidefs.h.patch b/buildroot/package/gdb/7.11.1/0005-use-asm-sgidefs.h.patch similarity index 100% rename from buildroot/package/gdb/7.11.1/0006-use-asm-sgidefs.h.patch rename to buildroot/package/gdb/7.11.1/0005-use-asm-sgidefs.h.patch diff --git a/buildroot/package/gdb/Config.in b/buildroot/package/gdb/Config.in index af020f40c51..6eea73b071e 100644 --- a/buildroot/package/gdb/Config.in +++ b/buildroot/package/gdb/Config.in @@ -2,7 +2,6 @@ config BR2_PACKAGE_GDB_ARCH_SUPPORTS bool default y depends on !((BR2_arm || BR2_armeb) && BR2_BINFMT_FLAT) - depends on !BR2_bfin depends on !BR2_microblaze depends on !BR2_nios2 depends on !BR2_or1k diff --git a/buildroot/package/gdb/Config.in.host b/buildroot/package/gdb/Config.in.host index 99e1cae5ba8..e8dd09e61ce 100644 --- a/buildroot/package/gdb/Config.in.host +++ b/buildroot/package/gdb/Config.in.host @@ -74,7 +74,7 @@ endif # If cross-gdb is not enabled, the latest working version is chosen. config BR2_GDB_VERSION string - default "arc-2017.09-release-gdb" if BR2_arc + default "arc-2018.03-rc1-gdb" if BR2_arc default "7.10.1" if BR2_GDB_VERSION_7_10 default "7.11.1" if BR2_GDB_VERSION_7_11 || !BR2_PACKAGE_HOST_GDB default "7.12.1" if BR2_GDB_VERSION_7_12 diff --git a/buildroot/package/gdb/gdb.hash b/buildroot/package/gdb/gdb.hash index 62edd937924..a2af7b35d91 100644 --- a/buildroot/package/gdb/gdb.hash +++ b/buildroot/package/gdb/gdb.hash @@ -5,4 +5,4 @@ sha512 0ac8d0a495103611ef41167a08313a010dce6ca4c6d827cbe8558a0c1a1a8a6bfa53f1b7 sha512 5eb328910033f0918058be2f92caebf1e8dfc6caa3c730d99d621627e53de3c1b43761c2f683d53555893253c2f06768cbf56cdea051a3d291ffb6cfae87b5e1 gdb-8.0.1.tar.xz # Locally calculated (fetched from Github) -sha512 e57582766e7d510b26bea63606429e6289414c31c60e28fef24d3d82fa20fb5a1f92b3831fde53e4f7c178c9e099609d3292628cf921a99109e297af4e5f83d9 gdb-arc-2017.09-release-gdb.tar.gz +sha512 975f0e09c9fd3ba1ca6aefdeb2da4b2804802606518c0cfdf7abe07c83a61341c1af5c2d2ddfd55ba6112fed420dedc529bc484d0c25b289bbed05edc99d0e72 gdb-arc-2018.03-rc1-gdb.tar.gz diff --git a/buildroot/package/gdb/gdb.mk b/buildroot/package/gdb/gdb.mk index 5ca464ad466..5661b4a4654 100644 --- a/buildroot/package/gdb/gdb.mk +++ b/buildroot/package/gdb/gdb.mk @@ -109,7 +109,7 @@ GDB_CONF_OPTS = \ --without-x \ --disable-sim \ $(GDB_DISABLE_BINUTILS_CONF_OPTS) \ - $(if $(BR2_PACKAGE_GDB_SERVER),--enable-gdbserver) \ + $(if $(BR2_PACKAGE_GDB_SERVER),--enable-gdbserver,--disable-gdbserver) \ --with-curses \ --without-included-gettext \ --disable-werror \ @@ -164,6 +164,7 @@ else GDB_CONF_OPTS += --without-zlib 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 @@ -171,6 +172,7 @@ define GDB_REMOVE_UNNEEDED_FILES 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 @@ -215,16 +217,8 @@ else HOST_GDB_CONF_OPTS += --without-python endif -# workaround a bug if in-tree build is used for bfin sim -define HOST_GDB_BFIN_SIM_WORKAROUND - $(RM) $(@D)/sim/common/tconfig.h -endef - ifeq ($(BR2_PACKAGE_HOST_GDB_SIM),y) HOST_GDB_CONF_OPTS += --enable-sim -ifeq ($(BR2_bfin),y) -HOST_GDB_PRE_CONFIGURE_HOOKS += HOST_GDB_BFIN_SIM_WORKAROUND -endif else HOST_GDB_CONF_OPTS += --disable-sim endif diff --git a/buildroot/package/ghostscript/0001-Fix-cross-compilation-issue.patch b/buildroot/package/ghostscript/0001-Fix-cross-compilation-issue.patch index 57e1be61ca6..a13c7f8381e 100644 --- a/buildroot/package/ghostscript/0001-Fix-cross-compilation-issue.patch +++ b/buildroot/package/ghostscript/0001-Fix-cross-compilation-issue.patch @@ -9,7 +9,10 @@ x86_64-linux-gcc: ERROR: unsafe header/library path used in cross-compilation: ' Downloaded from http://bugs.ghostscript.com/show_bug.cgi?id=696508#c3 +Slightly updated to work with 9.23 + Signed-off-by: Bernd Kuhls +Signed-off-by: Fabrice Fontaine --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) @@ -24,6 +27,7 @@ index d0f62d7..0d49344 100644 LIBTIFFDIR='src' -LIBTIFFCONFDIR='' +LIBTIFFCONFDIR='src' + TIFFCFLAGS='' TIFFDEVS_ALL='tiffs tiff12nc tiff24nc tiff48nc tiff32nc tiff64nc tiffcrle tifflzw tiffpack tiffgray tiffsep tiffsep1 tiffscaled tiffscaled4 tiffscaled8 tiffscaled24 tiffscaled32' FAX_DEVS_ALL='cfax dfaxlow dfaxhigh fax faxg3 faxg32d faxg4 tiffg3 tiffg32d tiffg4 tfax' diff --git a/buildroot/package/ghostscript/ghostscript.hash b/buildroot/package/ghostscript/ghostscript.hash index 2b36e348319..bb418410128 100644 --- a/buildroot/package/ghostscript/ghostscript.hash +++ b/buildroot/package/ghostscript/ghostscript.hash @@ -1,4 +1,5 @@ -# From https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs922/SHA256SUMS -sha256 c1f862e6f40f997dbe3feba89355e8cb05d55818994e10f4932b0dd9b627d1bb ghostscript-9.22.tar.xz -# From https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs922/SHA512SUMS -sha512 67739ace64090ab1951cba4cb011a5a6829ee60b32ba4157d0f17e744e345ea268335304db6722677ae33565ea5b696c2ff7b889d42a463acf2933c8230523d4 ghostscript-9.22.tar.xz +# From https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs923/SHA512SUMS +sha512 0c1f59b743f92f9cf7000b06f6209010e583ef4d6899c20ed245721dea3c08fd58b9e2d1513fe83765ab6be233bc7ab250cf18054e4d09de4073b1111e38035f ghostscript-9.23.tar.xz + +# Hash for license file: +sha256 6f852249f975287b3efd43a5883875e47fa9f3125e2f1b18b5c09517ac30ecf2 LICENSE diff --git a/buildroot/package/ghostscript/ghostscript.mk b/buildroot/package/ghostscript/ghostscript.mk index aa3f63b26e8..fcfb8d70582 100644 --- a/buildroot/package/ghostscript/ghostscript.mk +++ b/buildroot/package/ghostscript/ghostscript.mk @@ -4,8 +4,8 @@ # ################################################################################ -GHOSTSCRIPT_VERSION = 9.22 -GHOSTSCRIPT_SITE = https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs922 +GHOSTSCRIPT_VERSION = 9.23 +GHOSTSCRIPT_SITE = https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs923 GHOSTSCRIPT_SOURCE = ghostscript-$(GHOSTSCRIPT_VERSION).tar.xz GHOSTSCRIPT_LICENSE = AGPL-3.0 GHOSTSCRIPT_LICENSE_FILES = LICENSE @@ -27,7 +27,8 @@ GHOSTSCRIPT_DEPENDENCIES = \ # Inspired by linuxfromscratch: # http://www.linuxfromscratch.org/blfs/view/svn/pst/gs.html define GHOSTSCRIPT_REMOVE_LIBS - rm -rf $(@D)/freetype $(@D)/ijs $(@D)/jpeg $(@D)/lcms2 $(@D)/libpng $(@D)/tiff $(@D)/zlib + rm -rf $(@D)/freetype $(@D)/ijs $(@D)/jpeg $(@D)/lcms2 \ + $(@D)/lcms2art $(@D)/libpng $(@D)/tiff $(@D)/zlib endef GHOSTSCRIPT_POST_PATCH_HOOKS += GHOSTSCRIPT_REMOVE_LIBS diff --git a/buildroot/package/git/git.hash b/buildroot/package/git/git.hash index 504f7d993a2..fea1a1e904d 100644 --- a/buildroot/package/git/git.hash +++ b/buildroot/package/git/git.hash @@ -1,4 +1,4 @@ # From: https://www.kernel.org/pub/software/scm/git/sha256sums.asc -sha256 cfad4337f2fdbfc1e2c8abce5e17e1dd4e1718a34ac2cbe3238fbe2426f2ea19 git-2.16.1.tar.xz +sha256 d65d99e9e5b081c1f14ea018973806e942a2eb7d0da2ebc01bd2525adee62d48 git-2.16.3.tar.xz sha256 5b2198d1645f767585e8a88ac0499b04472164c0d2da22e75ecf97ef443ab32e COPYING sha256 1922f45d2c49e390032c9c0ba6d7cac904087f7cec51af30c2b2ad022ce0e76a LGPL-2.1 diff --git a/buildroot/package/git/git.mk b/buildroot/package/git/git.mk index 1109f7a8a21..2115e04e311 100644 --- a/buildroot/package/git/git.mk +++ b/buildroot/package/git/git.mk @@ -4,7 +4,7 @@ # ################################################################################ -GIT_VERSION = 2.16.1 +GIT_VERSION = 2.16.3 GIT_SOURCE = git-$(GIT_VERSION).tar.xz GIT_SITE = $(BR2_KERNEL_MIRROR)/software/scm/git GIT_LICENSE = GPL-2.0, LGPL-2.1+ diff --git a/buildroot/package/glibc/glibc.hash b/buildroot/package/glibc/glibc.hash index 3dab1e15169..5a90e612b9f 100644 --- a/buildroot/package/glibc/glibc.hash +++ b/buildroot/package/glibc/glibc.hash @@ -1,4 +1,8 @@ # Locally calculated (fetched from Github) -sha256 00fbc845678a96f4acc574c4bda4be76506ecd8bafb2d08c58bfa3507625c81a glibc-glibc-2.26-146-gd300041c533a3d837c9f37a099bcc95466860e98.tar.gz +sha256 a74489d14f4017bee6a6c6fe76f1de0dbf7d66c8695116de5aadd141c4757892 glibc-glibc-2.27.tar.gz # Locally calculated (fetched from Github) -sha256 5aa9adeac09727db0b8a52794186563771e74d70410e9fd86431e339953fd4bb glibc-arc-2017.09-release.tar.gz +sha256 d88f60081285b639122a49425e5fcf8c8cbb0f05efde7a3cb206089fae53c232 glibc-arc-2018.03-rc1.tar.gz + +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB +sha256 61abdd6930c9c599062d89e916b3e7968783879b6be0ee1c6229dd6169def431 LICENSES diff --git a/buildroot/package/glibc/glibc.mk b/buildroot/package/glibc/glibc.mk index 0351433e6a0..3ab673c0ccb 100644 --- a/buildroot/package/glibc/glibc.mk +++ b/buildroot/package/glibc/glibc.mk @@ -5,12 +5,12 @@ ################################################################################ ifeq ($(BR2_arc),y) -GLIBC_VERSION = arc-2017.09-release +GLIBC_VERSION = arc-2018.03-rc1 GLIBC_SITE = $(call github,foss-for-synopsys-dwc-arc-processors,glibc,$(GLIBC_VERSION)) else # Generate version string using: # git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master -GLIBC_VERSION = glibc-2.26-146-gd300041c533a3d837c9f37a099bcc95466860e98 +GLIBC_VERSION = glibc-2.27 # 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. @@ -20,17 +20,15 @@ GLIBC_VERSION = glibc-2.26-146-gd300041c533a3d837c9f37a099bcc95466860e98 GLIBC_SITE = $(call github,bminor,glibc,$(GLIBC_VERSION)) endif -GLIBC_SRC_SUBDIR = . - GLIBC_LICENSE = GPL-2.0+ (programs), LGPL-2.1+, BSD-3-Clause, MIT (library) -GLIBC_LICENSE_FILES = $(addprefix $(GLIBC_SRC_SUBDIR)/,COPYING COPYING.LIB LICENSES) +GLIBC_LICENSE_FILES = COPYING COPYING.LIB LICENSES # 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-gawk +GLIBC_DEPENDENCIES = host-gcc-initial linux-headers host-bison host-gawk GLIBC_SUBDIR = build @@ -86,7 +84,7 @@ define GLIBC_CONFIGURE_CMDS $(TARGET_CONFIGURE_OPTS) \ CFLAGS="-O2 $(GLIBC_EXTRA_CFLAGS)" CPPFLAGS="" \ CXXFLAGS="-O2 $(GLIBC_EXTRA_CFLAGS)" \ - $(SHELL) $(@D)/$(GLIBC_SRC_SUBDIR)/configure \ + $(SHELL) $(@D)/configure \ ac_cv_path_BASH_SHELL=/bin/bash \ libc_cv_forced_unwind=yes \ libc_cv_ssp=no \ @@ -102,6 +100,7 @@ define GLIBC_CONFIGURE_CMDS --disable-profile \ --without-gd \ --enable-obsolete-rpc \ + --enable-obsolete-nsl \ --enable-kernel=$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)) \ --with-headers=$(STAGING_DIR)/usr/include) $(GLIBC_ADD_MISSING_STUB_H) diff --git a/buildroot/package/gnupg/Config.in.host b/buildroot/package/gnupg/Config.in.host index a872ec820f2..36864157967 100644 --- a/buildroot/package/gnupg/Config.in.host +++ b/buildroot/package/gnupg/Config.in.host @@ -1,5 +1,5 @@ config BR2_PACKAGE_HOST_GNUPG - bool "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 diff --git a/buildroot/package/gnupg2/gnupg2.hash b/buildroot/package/gnupg2/gnupg2.hash index a003da668be..f5cc95cb1b4 100644 --- a/buildroot/package/gnupg2/gnupg2.hash +++ b/buildroot/package/gnupg2/gnupg2.hash @@ -1,6 +1,6 @@ -# From https://lists.gnupg.org/pipermail/gnupg-announce/2017q4/000419.html -sha1 732266e8888c6f41c084d043c7a0058332ff3580 gnupg-2.2.4.tar.bz2 +# From https://lists.gnupg.org/pipermail/gnupg-announce/2018q2/000424.html +sha1 e222cda63409a86992369df8976f6c7511e10ea0 gnupg-2.2.7.tar.bz2 # Calculated based on the hash above and signature -# https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.4.tar.bz2.sig -sha256 401a3e64780fdfa6d7670de0880aa5c9d589b3db7a7098979d7606cec546f2ec gnupg-2.2.4.tar.bz2 +# https://gnupg.org/ftp/gcrypt/gnupg/gnupg-2.2.7.tar.bz2.sig +sha256 d95b361ee6ef7eff86af40c8c72bf9313736ac9f7010d6604d78bf83818e976e gnupg-2.2.7.tar.bz2 sha256 bc2d6664f6276fa0a72d57633b3ae68dc7dcb677b71018bf08c8e93e509f1357 COPYING diff --git a/buildroot/package/gnupg2/gnupg2.mk b/buildroot/package/gnupg2/gnupg2.mk index 980fae342b7..0823921b0b1 100644 --- a/buildroot/package/gnupg2/gnupg2.mk +++ b/buildroot/package/gnupg2/gnupg2.mk @@ -4,7 +4,7 @@ # ################################################################################ -GNUPG2_VERSION = 2.2.4 +GNUPG2_VERSION = 2.2.7 GNUPG2_SOURCE = gnupg-$(GNUPG2_VERSION).tar.bz2 GNUPG2_SITE = https://gnupg.org/ftp/gcrypt/gnupg GNUPG2_LICENSE = GPL-3.0+ @@ -13,7 +13,7 @@ GNUPG2_DEPENDENCIES = zlib libgpg-error libgcrypt libassuan libksba libnpth \ $(if $(BR2_PACKAGE_LIBICONV),libiconv) host-pkgconf GNUPG2_CONF_OPTS = \ - --disable-rpath --disable-regex --disable-doc \ + --disable-rpath --disable-regex \ --with-libgpg-error-prefix=$(STAGING_DIR)/usr \ --with-libgcrypt-prefix=$(STAGING_DIR)/usr \ --with-libassuan-prefix=$(STAGING_DIR)/usr \ diff --git a/buildroot/package/gnutls/gnutls.hash b/buildroot/package/gnutls/gnutls.hash index 173cb40683c..be2913e00f4 100644 --- a/buildroot/package/gnutls/gnutls.hash +++ b/buildroot/package/gnutls/gnutls.hash @@ -1,6 +1,6 @@ # Locally calculated after checking pgp signature -# https://www.gnupg.org/ftp/gcrypt/gnutls/v3.5/gnutls-3.5.17.tar.xz.sig -sha256 86b142afef587c118d63f72ccf307f3321dbc40357aae528202b65d913d20919 gnutls-3.5.17.tar.xz +# https://www.gnupg.org/ftp/gcrypt/gnutls/v3.5/gnutls-3.5.18.tar.xz.sig +sha256 ae2248d9e78747cf9c469dde81ff8f90b56838b707a0637f3f7d4eee90e80234 gnutls-3.5.18.tar.xz # Locally calculated sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 doc/COPYING sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 doc/COPYING.LESSER diff --git a/buildroot/package/gnutls/gnutls.mk b/buildroot/package/gnutls/gnutls.mk index 1ce7a742e3d..6be7c6e27e2 100644 --- a/buildroot/package/gnutls/gnutls.mk +++ b/buildroot/package/gnutls/gnutls.mk @@ -5,7 +5,7 @@ ################################################################################ GNUTLS_VERSION_MAJOR = 3.5 -GNUTLS_VERSION = $(GNUTLS_VERSION_MAJOR).17 +GNUTLS_VERSION = $(GNUTLS_VERSION_MAJOR).18 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), GPL-3.0+ (gnutls-openssl library) diff --git a/buildroot/package/go/0001-build.go-explicit-option-for-crosscompilation.patch b/buildroot/package/go/0001-build.go-explicit-option-for-crosscompilation.patch new file mode 100644 index 00000000000..f76c5b1d03c --- /dev/null +++ b/buildroot/package/go/0001-build.go-explicit-option-for-crosscompilation.patch @@ -0,0 +1,40 @@ +From e1382a731a726293e30901038c6870fa77ef6095 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 99d1db5..eb4097f 100644 +--- a/src/cmd/dist/build.go ++++ b/src/cmd/dist/build.go +@@ -252,12 +252,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.7.4 + diff --git a/buildroot/package/go/go.hash b/buildroot/package/go/go.hash index 73c1578d0b0..9f5b80e9f5d 100644 --- a/buildroot/package/go/go.hash +++ b/buildroot/package/go/go.hash @@ -1,2 +1,2 @@ # From https://golang.org/dl/ -sha256 f3de49289405fda5fd1483a8fe6bd2fa5469e005fd567df64485c4fa000c7f24 go1.10.src.tar.gz +sha256 6264609c6b9cd8ed8e02ca84605d727ce1898d74efa79841660b2e3e985a98bd go1.10.2.src.tar.gz diff --git a/buildroot/package/go/go.mk b/buildroot/package/go/go.mk index 4d55e16cc3e..73f14cc78fc 100644 --- a/buildroot/package/go/go.mk +++ b/buildroot/package/go/go.mk @@ -4,7 +4,7 @@ # ################################################################################ -GO_VERSION = 1.10 +GO_VERSION = 1.10.2 GO_SITE = https://storage.googleapis.com/golang GO_SOURCE = go$(GO_VERSION).src.tar.gz @@ -58,13 +58,7 @@ else HOST_GO_CGO_ENABLED = 0 endif -# The go build system doesn't have the notion of cross compiling, but just the -# notion of architecture. When the host and target architectures are different -# it expects to be given a target cross compiler in CC_FOR_TARGET. When the -# architectures are the same it will use CC_FOR_TARGET for both host and target -# compilation. To work around this limitation build and install a set of -# compiler and tool binaries built with CC_FOR_TARGET set to the host compiler. -# Also, the go build system is not compatible with ccache, so use +# The go build system is not compatible with ccache, so use # HOSTCC_NOCCACHE. See https://github.com/golang/go/issues/11685. HOST_GO_MAKE_ENV = \ GOROOT_BOOTSTRAP=$(HOST_GO_BOOTSTRAP_ROOT) \ @@ -75,31 +69,22 @@ HOST_GO_MAKE_ENV = \ $(if $(GO_GOARM),GOARM=$(GO_GOARM)) \ GOOS=linux \ CC=$(HOSTCC_NOCCACHE) \ - CXX=$(HOSTCXX_NOCCACHE) + CXX=$(HOSTCXX_NOCCACHE) \ + GO_ASSUME_CROSSCOMPILING=1 HOST_GO_TARGET_CC = \ CC_FOR_TARGET="$(TARGET_CC)" \ CXX_FOR_TARGET="$(TARGET_CXX)" -HOST_GO_HOST_CC = \ - CC_FOR_TARGET=$(HOSTCC_NOCCACHE) \ - CXX_FOR_TARGET=$(HOSTCXX_NOCCACHE) - -HOST_GO_TMP = $(@D)/host-go-tmp - define HOST_GO_BUILD_CMDS cd $(@D)/src && \ - $(HOST_GO_MAKE_ENV) $(HOST_GO_HOST_CC) CGO_ENABLED=0 ./make.bash - mkdir -p $(HOST_GO_TMP) - mv $(@D)/pkg/tool $(HOST_GO_TMP)/ - mv $(@D)/bin/ $(HOST_GO_TMP)/ - cd $(@D)/src && \ - $(HOST_GO_MAKE_ENV) $(HOST_GO_TARGET_CC) CGO_ENABLED=$(HOST_GO_CGO_ENABLED) ./make.bash + $(HOST_GO_MAKE_ENV) $(HOST_GO_TARGET_CC) CGO_ENABLED=$(HOST_GO_CGO_ENABLED) \ + ./make.bash $(if $(VERBOSE),-v) endef define HOST_GO_INSTALL_CMDS - $(INSTALL) -D -m 0755 $(HOST_GO_TMP)/bin/go $(HOST_GO_ROOT)/bin/go - $(INSTALL) -D -m 0755 $(HOST_GO_TMP)/bin/gofmt $(HOST_GO_ROOT)/bin/gofmt + $(INSTALL) -D -m 0755 $(@D)/bin/go $(HOST_GO_ROOT)/bin/go + $(INSTALL) -D -m 0755 $(@D)/bin/gofmt $(HOST_GO_ROOT)/bin/gofmt ln -sf ../lib/go/bin/go $(HOST_DIR)/bin/ ln -sf ../lib/go/bin/gofmt $(HOST_DIR)/bin/ @@ -108,7 +93,7 @@ define HOST_GO_INSTALL_CMDS mkdir -p $(HOST_GO_ROOT)/pkg cp -a $(@D)/pkg/include $(@D)/pkg/linux_* $(HOST_GO_ROOT)/pkg/ - cp -a $(HOST_GO_TMP)/tool $(HOST_GO_ROOT)/pkg/ + cp -a $(@D)/pkg/tool $(HOST_GO_ROOT)/pkg/ # There is a known issue which requires the go sources to be installed # https://golang.org/issue/2775 @@ -116,7 +101,7 @@ define HOST_GO_INSTALL_CMDS # Set all file timestamps to prevent the go compiler from rebuilding any # built in packages when programs are built. - find $(HOST_GO_ROOT) -type f -exec touch -r $(HOST_GO_TMP)/bin/go {} \; + find $(HOST_GO_ROOT) -type f -exec touch -r $(@D)/bin/go {} \; endef $(eval $(host-generic-package)) diff --git a/buildroot/package/gptfdisk/Config.in b/buildroot/package/gptfdisk/Config.in index ede72f3b1d6..8d94d2bcf89 100644 --- a/buildroot/package/gptfdisk/Config.in +++ b/buildroot/package/gptfdisk/Config.in @@ -38,7 +38,6 @@ config BR2_PACKAGE_GPTFDISK_SGDISK config BR2_PACKAGE_GPTFDISK_CGDISK bool "ncurses cgdisk" depends on BR2_USE_WCHAR # ncurses wchar - depends on !(BR2_bfin && BR2_BINFMT_FLAT) # ncurses wchar support select BR2_PACKAGE_NCURSES select BR2_PACKAGE_NCURSES_WCHAR # needed because of UTF-16 help diff --git a/buildroot/package/graphite2/0001-disable-double-promotion.patch b/buildroot/package/graphite2/0001-disable-double-promotion.patch deleted file mode 100644 index 888d862341d..00000000000 --- a/buildroot/package/graphite2/0001-disable-double-promotion.patch +++ /dev/null @@ -1,23 +0,0 @@ -Don't use -Wdouble-promotion gcc option - -The warning flag isn't recognized for older GCC versions (blackfin), -so just disable it. - -Signed-off-by: Gustavo Zacarias -[Gustavo: update for 1.3.5] -Signed-off-by: Bernd Kuhls -[Bernd: update for 1.3.10] - -diff -Nura graphite2-1.3.5.orig/src/CMakeLists.txt graphite2-1.3.5/src/CMakeLists.txt ---- graphite2-1.3.5.orig/src/CMakeLists.txt 2016-02-15 11:46:45.941906112 -0300 -+++ graphite2-1.3.5/src/CMakeLists.txt 2016-02-15 11:46:54.237194222 -0300 -@@ -111,9 +111,6 @@ - if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86|i.86") - add_definitions(-mfpmath=sse -msse2) - endif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86|i.86") -- if (CMAKE_COMPILER_IS_GNUCXX) -- add_definitions(-Wdouble-promotion) -- endif (CMAKE_COMPILER_IS_GNUCXX) - message(STATUS "Compiler ID is: ${CMAKE_CXX_COMPILER_ID}") - if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang") - add_definitions(-Wimplicit-fallthrough) diff --git a/buildroot/package/gstreamer/gst-plugins-bad/Config.in b/buildroot/package/gstreamer/gst-plugins-bad/Config.in index 939fc7a7fab..7bbd56a602a 100644 --- a/buildroot/package/gstreamer/gst-plugins-bad/Config.in +++ b/buildroot/package/gstreamer/gst-plugins-bad/Config.in @@ -318,7 +318,6 @@ config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VCD config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_VP8 bool "vp8" - depends on !BR2_bfin # libvpx select BR2_PACKAGE_LIBVPX config BR2_PACKAGE_GST_PLUGINS_BAD_ZBAR diff --git a/buildroot/package/gstreamer1/Config.in b/buildroot/package/gstreamer1/Config.in index 76c32bc6c67..28b1ed25c56 100644 --- a/buildroot/package/gstreamer1/Config.in +++ b/buildroot/package/gstreamer1/Config.in @@ -8,9 +8,11 @@ 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-imx/Config.in" +source "package/gstreamer1/gst1-interpipe/Config.in" source "package/gstreamer1/gst1-libav/Config.in" source "package/gstreamer1/gst1-rtsp-server/Config.in" source "package/gstreamer1/gst1-validate/Config.in" source "package/gstreamer1/gst1-vaapi/Config.in" source "package/gstreamer1/gst-omx/Config.in" +source "package/gstreamer1/gstreamer1-editing-services/Config.in" endif diff --git a/buildroot/package/gstreamer1/gst1-interpipe/Config.in b/buildroot/package/gstreamer1/gst1-interpipe/Config.in new file mode 100644 index 00000000000..5640c2b3db9 --- /dev/null +++ b/buildroot/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/buildroot/package/gstreamer1/gst1-interpipe/gst1-interpipe.hash b/buildroot/package/gstreamer1/gst1-interpipe/gst1-interpipe.hash new file mode 100644 index 00000000000..b9b1c5e4292 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-interpipe/gst1-interpipe.hash @@ -0,0 +1,5 @@ +# locally computed hash +sha256 3f8cc5cf4861e5836938c66415b47555550c93b06b1bc9faed83e89bacf705cf gst1-interpipe-10dba89eecc200e49f0b432e299f1c8a4312b657.tar.gz + +# Hashes for license files: +sha256 16d7caa6cabbfd0ca47e064a7b48cb446d013e84ca88c854d6470851752136d5 COPYING diff --git a/buildroot/package/gstreamer1/gst1-interpipe/gst1-interpipe.mk b/buildroot/package/gstreamer1/gst1-interpipe/gst1-interpipe.mk new file mode 100644 index 00000000000..8f810f9cf15 --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-interpipe/gst1-interpipe.mk @@ -0,0 +1,21 @@ +################################################################################ +# +# gst1-interpipe +# +################################################################################ + +GST1_INTERPIPE_VERSION = 10dba89eecc200e49f0b432e299f1c8a4312b657 +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 + +# from git source +GST1_INTERPIPE_AUTORECONF = YES + +GST1_INTERPIPE_DEPENDENCIES = host-pkgconf gstreamer1 gst1-plugins-base + +$(eval $(autotools-package)) diff --git a/buildroot/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk b/buildroot/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk index 83cb94be812..b041014f810 100644 --- a/buildroot/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk +++ b/buildroot/package/gstreamer1/gst1-plugins-bad/gst1-plugins-bad.mk @@ -8,10 +8,10 @@ GST1_PLUGINS_BAD_VERSION = 1.12.4 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 -GST1_PLUGINS_BAD_LICENSE_FILES = COPYING COPYING.LIB -# Unknown and GPL licensed plugins will append to GST1_PLUGINS_BAD_LICENSE if -# enabled. -GST1_PLUGINS_BAD_LICENSE = LGPL-2.0+, LGPL-2.1+ +# 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.LIB +GST1_PLUGINS_BAD_LICENSE := LGPL-2.0+, LGPL-2.1+ GST1_PLUGINS_BAD_CONF_OPTS = \ --disable-examples \ @@ -198,7 +198,6 @@ endif ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOVISUALIZERS),y) GST1_PLUGINS_BAD_CONF_OPTS += --enable-audiovisualizers -GST1_PLUGINS_BAD_HAS_GPL_LICENSE = y else GST1_PLUGINS_BAD_CONF_OPTS += --disable-audiovisualizers endif @@ -379,7 +378,7 @@ else GST1_PLUGINS_BAD_CONF_OPTS += --disable-mxf endif -ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_NETSIM),y) +ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NETSIM),y) GST1_PLUGINS_BAD_CONF_OPTS += --enable-netsim else GST1_PLUGINS_BAD_CONF_OPTS += --disable-netsim @@ -514,6 +513,7 @@ endif ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_YADIF),y) GST1_PLUGINS_BAD_CONF_OPTS += --enable-yadif +GST1_PLUGINS_BAD_HAS_GPL_LICENSE = y else GST1_PLUGINS_BAD_CONF_OPTS += --disable-yadif endif @@ -585,7 +585,6 @@ endif ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_FDK_AAC),y) GST1_PLUGINS_BAD_CONF_OPTS += --enable-fdk_aac GST1_PLUGINS_BAD_DEPENDENCIES += fdk-aac -GST1_PLUGINS_BAD_HAS_UNKNOWN_LICENSE = y else GST1_PLUGINS_BAD_CONF_OPTS += --disable-fdk_aac endif @@ -632,6 +631,7 @@ endif ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DTLS),y) GST1_PLUGINS_BAD_CONF_OPTS += --enable-dtls GST1_PLUGINS_BAD_DEPENDENCIES += openssl +GST1_PLUGINS_BAD_HAS_BSD2C_LICENSE = y else GST1_PLUGINS_BAD_CONF_OPTS += --disable-dtls endif @@ -682,6 +682,7 @@ endif ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENH264),y) GST1_PLUGINS_BAD_CONF_OPTS += --enable-openh264 GST1_PLUGINS_BAD_DEPENDENCIES += libopenh264 +GST1_PLUGINS_BAD_HAS_BSD2C_LICENSE = y else GST1_PLUGINS_BAD_CONF_OPTS += --disable-openh264 endif @@ -771,12 +772,18 @@ endif # Add GPL license if GPL licensed plugins enabled. ifeq ($(GST1_PLUGINS_BAD_HAS_GPL_LICENSE),y) -GST1_PLUGINS_BAD_LICENSE += GPL +GST1_PLUGINS_BAD_LICENSE := $(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 := $(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 +GST1_PLUGINS_BAD_LICENSE := $(GST1_PLUGINS_BAD_LICENSE), UNKNOWN endif # Use the following command to extract license info for plugins. diff --git a/buildroot/package/gstreamer1/gst1-plugins-good/Config.in b/buildroot/package/gstreamer1/gst1-plugins-good/Config.in index 097f32d7798..eea3a3eda8f 100644 --- a/buildroot/package/gstreamer1/gst1-plugins-good/Config.in +++ b/buildroot/package/gstreamer1/gst1-plugins-good/Config.in @@ -359,14 +359,12 @@ comment "taglib needs a toolchain w/ C++, wchar" config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_VPX bool "vpx (webm)" - depends on !BR2_bfin # libvpx depends on BR2_TOOLCHAIN_HAS_THREADS # libvpx select BR2_PACKAGE_LIBVPX help VP8 plugin comment "libvpx needs a toolchain w/ threads" - depends on !BR2_bfin depends on !BR2_TOOLCHAIN_HAS_THREADS config BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_WAVPACK diff --git a/buildroot/package/gstreamer1/gst1-plugins-ugly/0001-x264enc-fix-build-with-newer-x264-with-support-for-m.patch b/buildroot/package/gstreamer1/gst1-plugins-ugly/0001-x264enc-fix-build-with-newer-x264-with-support-for-m.patch new file mode 100644 index 00000000000..c7460470aef --- /dev/null +++ b/buildroot/package/gstreamer1/gst1-plugins-ugly/0001-x264enc-fix-build-with-newer-x264-with-support-for-m.patch @@ -0,0 +1,106 @@ +From ffa7ce1e19ec3930de667f213dcaedb7eb10508e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= +Date: Wed, 28 Feb 2018 10:07:13 +0000 +Subject: [PATCH] x264enc: fix build with newer x264 with support for multiple + bit depths +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +libx264 used to be built for one specific bit depth, and if we +wanted to support multiple bit depths we would have to dynamically +load the right .so from different paths. That has changed now, and +libx264 can include support for multiple depths in the same lib, +so we don't need to do the dlopen() dance any more. We'll keep +the vtable stuff around until we can drop support for older x264. + +gstx264enc.c:2927:36: error: 窶x264_bit_depth窶 undeclared + +https://bugzilla.gnome.org/show_bug.cgi?id=792111 + +Upstream: https://cgit.freedesktop.org/gstreamer/gst-plugins-ugly/patch/ext/x264?id=83c38dc44622611c1f67dd26e4cb383c5aef90f6 +Signed-off-by: Peter Seiderer +--- + ext/x264/gstx264enc.c | 35 ++++++++++++++++++++++++++++++++++- + 1 file changed, 34 insertions(+), 1 deletion(-) + +diff --git a/ext/x264/gstx264enc.c b/ext/x264/gstx264enc.c +index 4287cf9..d1e4f2b 100644 +--- a/ext/x264/gstx264enc.c ++++ b/ext/x264/gstx264enc.c +@@ -117,7 +117,9 @@ struct _GstX264EncVTable + { + GModule *module; + ++#if X264_BUILD < 153 + const int *x264_bit_depth; ++#endif + const int *x264_chroma_format; + void (*x264_encoder_close) (x264_t *); + int (*x264_encoder_delayed_frames) (x264_t *); +@@ -170,8 +172,9 @@ load_x264 (const gchar * filename) + "' from '%s'. Incompatible version?", filename); + goto error; + } +- ++#if X264_BUILD < 153 + LOAD_SYMBOL (x264_bit_depth); ++#endif + LOAD_SYMBOL (x264_chroma_format); + LOAD_SYMBOL (x264_encoder_close); + LOAD_SYMBOL (x264_encoder_delayed_frames); +@@ -288,6 +291,7 @@ gst_x264_enc_add_x264_chroma_format (GstStructure * s, + return ret; + } + ++#if X264_BUILD < 153 + static gboolean + load_x264_libraries (void) + { +@@ -326,6 +330,33 @@ load_x264_libraries (void) + return TRUE; + } + ++#else /* X264_BUILD >= 153 */ ++ ++static gboolean ++load_x264_libraries (void) ++{ ++#if X264_BIT_DEPTH == 0 /* all */ ++ vtable_8bit = &default_vtable; ++ vtable_10bit = &default_vtable; ++#elif X264_BIT_DEPTH == 8 ++ vtable_8bit = &default_vtable; ++#elif X264_BIT_DEPTH == 10 ++ vtable_10bit = &default_vtable; ++#else ++#error "unexpected X264_BIT_DEPTH value" ++#endif ++ ++#ifdef HAVE_X264_ADDITIONAL_LIBRARIES ++ GST_WARNING ("Ignoring configured additional libraries %s, using libx264 " ++ "version enabled for multiple bit depths", ++ HAVE_X264_ADDITIONAL_LIBRARIES); ++#endif ++ ++ return TRUE; ++} ++ ++#endif ++ + enum + { + ARG_0, +@@ -2897,7 +2928,9 @@ plugin_init (GstPlugin * plugin) + * if needed. We can't initialize statically because these values are not + * constant on Windows. */ + default_vtable.module = NULL; ++#if X264_BUILD < 153 + default_vtable.x264_bit_depth = &x264_bit_depth; ++#endif + default_vtable.x264_chroma_format = &x264_chroma_format; + default_vtable.x264_encoder_close = x264_encoder_close; + default_vtable.x264_encoder_delayed_frames = x264_encoder_delayed_frames; +-- +2.16.3 + diff --git a/buildroot/package/gstreamer1/gstreamer1-editing-services/Config.in b/buildroot/package/gstreamer1/gstreamer1-editing-services/Config.in new file mode 100644 index 00000000000..716a4e5ef7a --- /dev/null +++ b/buildroot/package/gstreamer1/gstreamer1-editing-services/Config.in @@ -0,0 +1,19 @@ +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_BAD + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIOCONVERT # runtime + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_AUDIORESAMPLE # runtime + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT # runtime + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOTESTSRC # runtime + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOSCALE # runtime + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VOLUME # runtime + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_IMAGEFREEZE # runtime + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXER # runtime + help + GStreamer Editing Services is a high-level library for + facilitating the creation of audio/video non-linear editors. + + http://gstreamer.freedesktop.org diff --git a/buildroot/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.hash b/buildroot/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.hash new file mode 100644 index 00000000000..ddf9cecaed3 --- /dev/null +++ b/buildroot/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.hash @@ -0,0 +1,6 @@ +# From https://gstreamer.freedesktop.org/src/gstreamer-editing-services/gstreamer-editing-services-1.12.4.tar.xz.sha256sum +sha256 bd7eaa2c9572db9e7e535064024b6f69250de864fe8a5d5be86fa8c7edacca0c gstreamer-editing-services-1.12.4.tar.xz + +# Hashes for license files: +sha256 f445dc78b88496f7e20c7a2a461b95baba5865c8919b8289ac24ac0a80c6ce7a COPYING +sha256 f445dc78b88496f7e20c7a2a461b95baba5865c8919b8289ac24ac0a80c6ce7a COPYING.LIB diff --git a/buildroot/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.mk b/buildroot/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.mk new file mode 100644 index 00000000000..9b5a93eb75f --- /dev/null +++ b/buildroot/package/gstreamer1/gstreamer1-editing-services/gstreamer1-editing-services.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# gstreamer1-editing-services +# +################################################################################ + +GSTREAMER1_EDITING_SERVICES_VERSION = 1.12.4 +GSTREAMER1_EDITING_SERVICES_SOURCE = gstreamer-editing-services-$(GSTREAMER1_EDITING_SERVICES_VERSION).tar.xz +GSTREAMER1_EDITING_SERVICES_SITE = http://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 \ + gst1-plugins-bad \ + $(if $(BR2_PACKAGE_GST1_VALIDATE),gst1-validate) \ + libxml2 + +GSTREAMER1_EDITING_SERVICES_CONF_OPTS = --disable-benchmarks + +# examples need GTK2/3 with X11 backend +ifneq ($(BR2_PACKAGE_LIBGTK2)$(BR2_PACKAGE_LIBGTK3_X11),) +GSTREAMER1_EDITING_SERVICES_CONF_OPTS += --enable-examples + +ifeq ($(BR2_PACKAGE_LIBGTK2),y) +GSTREAMER1_EDITING_SERVICES_CONF_OPTS += --with-gtk=2.0 +GSTREAMER1_EDITING_SERVICES_DEPENDENCIES += libgtk2 +else +GSTREAMER1_EDITING_SERVICES_CONF_OPTS += --with-gtk=3.0 +GSTREAMER1_EDITING_SERVICES_DEPENDENCIES += libgtk3 +endif + +else +GSTREAMER1_EDITING_SERVICES_CONF_OPTS += --disable-examples +endif + +$(eval $(autotools-package)) diff --git a/buildroot/package/gtest/gtest.hash b/buildroot/package/gtest/gtest.hash index 474008d2cda..0a8d8ba0967 100644 --- a/buildroot/package/gtest/gtest.hash +++ b/buildroot/package/gtest/gtest.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 58a6f4277ca2bc8565222b3bbd58a177609e9c488e8a72649359ba51450db7d8 gtest-release-1.8.0.tar.gz +sha256 9702de7e4117a8e2b20dafab11ffda58c198aede066406496bef670d40a22138 googletest/LICENSE diff --git a/buildroot/package/gtksourceview/gtksourceview.hash b/buildroot/package/gtksourceview/gtksourceview.hash index feaae5e29f5..3b78b7062b0 100644 --- a/buildroot/package/gtksourceview/gtksourceview.hash +++ b/buildroot/package/gtksourceview/gtksourceview.hash @@ -1,5 +1,5 @@ -# Hash from: http://ftp.gnome.org/pub/gnome/sources/gtksourceview/3.24/gtksourceview-3.24.6.sha256sum: -sha256 7aa6bdfebcdc73a763dddeaa42f190c40835e6f8495bb9eb8f78587e2577c188 gtksourceview-3.24.6.tar.xz +# Hash from: http://ftp.gnome.org/pub/gnome/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/buildroot/package/gtksourceview/gtksourceview.mk b/buildroot/package/gtksourceview/gtksourceview.mk index 2a33ed4bdba..ae1d3ff2955 100644 --- a/buildroot/package/gtksourceview/gtksourceview.mk +++ b/buildroot/package/gtksourceview/gtksourceview.mk @@ -5,7 +5,7 @@ ################################################################################ GTKSOURCEVIEW_VERSION_MAJOR = 3.24 -GTKSOURCEVIEW_VERSION = $(GTKSOURCEVIEW_VERSION_MAJOR).6 +GTKSOURCEVIEW_VERSION = $(GTKSOURCEVIEW_VERSION_MAJOR).7 GTKSOURCEVIEW_SOURCE = gtksourceview-$(GTKSOURCEVIEW_VERSION).tar.xz GTKSOURCEVIEW_SITE = \ http://ftp.gnome.org/pub/gnome/sources/gtksourceview/$(GTKSOURCEVIEW_VERSION_MAJOR) diff --git a/buildroot/package/hackrf/0001-Don-t-require-a-C-compiler.patch b/buildroot/package/hackrf/0001-Don-t-require-a-C-compiler.patch new file mode 100644 index 00000000000..3369dca670c --- /dev/null +++ b/buildroot/package/hackrf/0001-Don-t-require-a-C-compiler.patch @@ -0,0 +1,37 @@ +From 8b0a8b2be8cf2e4a76c03d3bcdf99bff5025ba22 Mon Sep 17 00:00:00 2001 +From: "Arnout Vandecappelle (Essensium/Mind)" +Date: Sat, 31 Mar 2018 22:50:37 +0200 +Subject: [PATCH] Don't require a C++ compiler + +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 erroring out if a C++ +compiler doesn't exist. + +Upstream status: https://github.com/mossmann/hackrf/pull/469 + +This patch differs from upstream because: +- project name upstream has been changed into HackRF; +- in Buildroot, we are only interested in host, not firmware. + +Signed-off-by: Arnout Vandecappelle (Essensium/Mind) +--- + host/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/host/CMakeLists.txt b/host/CMakeLists.txt +index 874163f..d9cbe31 100644 +--- a/host/CMakeLists.txt ++++ b/host/CMakeLists.txt +@@ -1,7 +1,7 @@ + #top dir cmake project for libhackrf + tools + + cmake_minimum_required(VERSION 2.8) +-project (hackrf_all) ++project (hackrf_all C) + + add_subdirectory(libhackrf) + add_subdirectory(hackrf-tools) +-- +2.16.3 + diff --git a/buildroot/package/hackrf/Config.in b/buildroot/package/hackrf/Config.in new file mode 100644 index 00000000000..4fa27699c48 --- /dev/null +++ b/buildroot/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_PACKAGE_FFTW_PRECISION_SINGLE + select BR2_PACKAGE_LIBUSB + help + Library and tools for accessing HackRF SDR boards. + + https://github.com/mossmann/hackrf/tree/master/host + +comment "hackrf needs a toolchain w/ threads, dynamic library" + depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS + +comment "hackrf needs fftw's single precision" + depends on !BR2_PACKAGE_FFTW_PRECISION_SINGLE diff --git a/buildroot/package/hackrf/hackrf.hash b/buildroot/package/hackrf/hackrf.hash new file mode 100644 index 00000000000..c0cf7322134 --- /dev/null +++ b/buildroot/package/hackrf/hackrf.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a89badc09a1d2fa18367b3b2c974580ad5f6ce93aaa4e54557dc3d013c029d14 hackrf-2018.01.1.tar.xz +sha256 49b60a6288f90f49074228cc1fae0fb16871ba36b756013abdf7c2fc92f01fad COPYING diff --git a/buildroot/package/hackrf/hackrf.mk b/buildroot/package/hackrf/hackrf.mk new file mode 100644 index 00000000000..acab0be1d31 --- /dev/null +++ b/buildroot/package/hackrf/hackrf.mk @@ -0,0 +1,26 @@ +################################################################################ +# +# hackrf +# +################################################################################ + +HACKRF_VERSION = 2018.01.1 +HACKRF_SITE = https://github.com/mossmann/hackrf/releases/download/v$(HACKRF_VERSION) +HACKRF_SOURCE = hackrf-$(HACKRF_VERSION).tar.xz +HACKRF_LICENSE = GPL-2.0+ BSD-3c +HACKRF_LICENSE_FILES = COPYING +HACKRF_DEPENDENCIES = fftw libusb +HACKRF_SUBDIR = host +HACKRF_INSTALL_STAGING = YES + +HACKRF_CONF_OPTS += -DBUILD_HACKRF_TOOLS=ON + +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/buildroot/package/haveged/S21haveged b/buildroot/package/haveged/S21haveged index 3e6ce8678ff..4b6e6ced4ea 100755 --- a/buildroot/package/haveged/S21haveged +++ b/buildroot/package/haveged/S21haveged @@ -1,7 +1,5 @@ #!/bin/sh -[ -x /usr/sbin/haveged ] || exit 0 - case "$1" in start) printf "Starting haveged: " diff --git a/buildroot/package/hostapd/Config.in b/buildroot/package/hostapd/Config.in index 84156e8f11c..37c11268597 100644 --- a/buildroot/package/hostapd/Config.in +++ b/buildroot/package/hostapd/Config.in @@ -1,8 +1,6 @@ config BR2_PACKAGE_HOSTAPD bool "hostapd" - depends on BR2_TOOLCHAIN_HAS_THREADS # libnl depends on BR2_USE_MMU # fork() - select BR2_PACKAGE_LIBNL help User space daemon for wireless access points. @@ -14,14 +12,51 @@ config BR2_PACKAGE_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_RTW bool "Enable rtl871xdrv driver" + select BR2_PACKAGE_HOSTAPD_HAS_WIFI_DRIVERS help Enable support for Realtek wireless chips. +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_RTW + 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 @@ -29,6 +64,9 @@ config BR2_PACKAGE_HOSTAPD_ACS 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 @@ -49,10 +87,11 @@ config BR2_PACKAGE_HOSTAPD_VLAN help Enable support for VLANs. +if BR2_PACKAGE_HOSTAPD_VLAN + config BR2_PACKAGE_HOSTAPD_VLAN_DYNAMIC bool "Enable dynamic VLAN support" default y - depends on BR2_PACKAGE_HOSTAPD_VLAN help Enable support for fully dynamic VLANs. This enables hostapd to automatically create @@ -61,13 +100,15 @@ config BR2_PACKAGE_HOSTAPD_VLAN_DYNAMIC config BR2_PACKAGE_HOSTAPD_VLAN_NETLINK bool "Use netlink-based API for VLAN operations" default y - depends on BR2_PACKAGE_HOSTAPD_VLAN + depends on BR2_TOOLCHAIN_HAS_THREADS # libnl + select BR2_PACKAGE_LIBNL help Use netlink-based kernel API for VLAN operations instead of ioctl(). -endif - -comment "hostapd needs a toolchain w/ threads" +comment "netlink-based VLAN support needs a toolchain w/ threads" depends on !BR2_TOOLCHAIN_HAS_THREADS - depends on BR2_USE_MMU + +endif # BR2_PACKAGE_HOSTAPD_VLAN + +endif diff --git a/buildroot/package/hostapd/hostapd.mk b/buildroot/package/hostapd/hostapd.mk index 1696670383c..fa8226805d5 100644 --- a/buildroot/package/hostapd/hostapd.mk +++ b/buildroot/package/hostapd/hostapd.mk @@ -11,30 +11,16 @@ HOSTAPD_PATCH = \ http://w1.fi/security/2017-1/rebased-v2.6-0005-Fix-PTK-rekeying-to-generate-a-new-ANonce.patch HOSTAPD_SUBDIR = hostapd HOSTAPD_CONFIG = $(HOSTAPD_DIR)/$(HOSTAPD_SUBDIR)/.config -HOSTAPD_DEPENDENCIES = host-pkgconf libnl -HOSTAPD_CFLAGS = $(TARGET_CFLAGS) -I$(STAGING_DIR)/usr/include/libnl3/ +HOSTAPD_DEPENDENCIES = host-pkgconf +HOSTAPD_CFLAGS = $(TARGET_CFLAGS) HOSTAPD_LICENSE = BSD-3-Clause HOSTAPD_LICENSE_FILES = README HOSTAPD_CONFIG_SET = -HOSTAPD_CONFIG_ENABLE = \ - CONFIG_HS20 \ - CONFIG_IEEE80211AC \ - CONFIG_IEEE80211N \ - CONFIG_IEEE80211R \ - CONFIG_INTERNAL_LIBTOMMATH \ - CONFIG_INTERWORKING \ - CONFIG_LIBNL32 +HOSTAPD_CONFIG_ENABLE = CONFIG_INTERNAL_LIBTOMMATH HOSTAPD_CONFIG_DISABLE = -# 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 - # Try to use openssl if it's already available ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) HOSTAPD_DEPENDENCIES += libopenssl @@ -45,11 +31,37 @@ HOSTAPD_CONFIG_DISABLE += CONFIG_EAP_PWD 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_RTW),y) HOSTAPD_PATCH += https://github.com/pritambaral/hostapd-rtl871xdrv/raw/master/rtlxdrv.patch HOSTAPD_CONFIG_SET += CONFIG_DRIVER_RTW 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_IEEE80211AC \ + CONFIG_IEEE80211N \ + CONFIG_IEEE80211R \ + CONFIG_INTERWORKING +endif + ifeq ($(BR2_PACKAGE_HOSTAPD_ACS),y) HOSTAPD_CONFIG_ENABLE += CONFIG_ACS endif @@ -84,6 +96,19 @@ 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)) \ diff --git a/buildroot/package/htop/0001-MetersPanel-remove-0xe2-from-MetersPanel.c.patch b/buildroot/package/htop/0001-MetersPanel-remove-0xe2-from-MetersPanel.c.patch new file mode 100644 index 00000000000..81f9d1bd97c --- /dev/null +++ b/buildroot/package/htop/0001-MetersPanel-remove-0xe2-from-MetersPanel.c.patch @@ -0,0 +1,52 @@ +From ae32d292ca641c08b6db8d2f7cfcce2a54d00835 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Tue, 20 Feb 2018 23:09:24 +0100 +Subject: [PATCH] MetersPanel: remove 0xe2 from MetersPanel.c + +This non ascii character trigger an issue with MakeHeader.py. + +./scripts/MakeHeader.py MetersPanel.c +Traceback (most recent call last): + File "./scripts/MakeHeader.py", line 32, in + for line in file.readlines(): + File "[...]/output/host/lib/python3.6/encodings/ascii.py", line 26, in decode + return codecs.ascii_decode(input, self.errors)[0] +UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 956: ordinal not in range(128) + +http://autobuild.buildroot.net/results/8ed/8edb78b054a265447fd0e83f67cba5f978be4ed6/build-end.log + +Signed-off-by: Romain Naour +--- + MetersPanel.c | 2 +- + MetersPanel.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/MetersPanel.c b/MetersPanel.c +index 3cf3e07..47296a4 100644 +--- a/MetersPanel.c ++++ b/MetersPanel.c +@@ -37,7 +37,7 @@ static const char* const MetersFunctions[] = {"Style ", "Move ", " + static const char* const MetersKeys[] = {"Space", "Enter", " ", "Del", "F10"}; + static int MetersEvents[] = {' ', 13, ERR, KEY_DC, KEY_F(10)}; + +-// We avoid UTF-8 arrows 竊 竊 here as they might display full-width on Chinese ++// We avoid UTF-8 arrows <- -> here as they might display full-width on Chinese + // terminals, breaking our aligning. + // In , arrows (U+2019..U+2199) are + // considered "Ambiguous characters". +diff --git a/MetersPanel.h b/MetersPanel.h +index e00169c..e80754a 100644 +--- a/MetersPanel.h ++++ b/MetersPanel.h +@@ -29,7 +29,7 @@ struct MetersPanel_ { + + // Note: In code the meters are known to have bar/text/graph "Modes", but in UI + // we call them "Styles". +-// We avoid UTF-8 arrows 竊 竊 here as they might display full-width on Chinese ++// We avoid UTF-8 arrows <- -> here as they might display full-width on Chinese + // terminals, breaking our aligning. + // In , arrows (U+2019..U+2199) are + // considered "Ambiguous characters". +-- +2.14.3 + diff --git a/buildroot/package/htop/0002-MakeHeader-open-files-using-binary-mode.patch b/buildroot/package/htop/0002-MakeHeader-open-files-using-binary-mode.patch new file mode 100644 index 00000000000..bcc3e6564ca --- /dev/null +++ b/buildroot/package/htop/0002-MakeHeader-open-files-using-binary-mode.patch @@ -0,0 +1,50 @@ +From 1a83a3e6ae0841a0dc4c7eb08a1a71930e99666c Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Sun, 18 Mar 2018 21:57:54 +0100 +Subject: [PATCH] MakeHeader: open files using binary mode + +By default, open(sys.argv[1]) use Unicode mode. +The readlines() will try to convert with the default codec +(which depends on the i18n settings, so 'ascii' under +LC_ALL=C) + +Open files using binary mode so no conversion will be done +by readlines(). But then, normal strings can't be used in +the rest of the code; either all strings have to be prefixed +with b'' or (simpler) the read line has to be converted to +a unicode string by calling decode() on it. + +http://lists.busybox.net/pipermail/buildroot/2018-February/214373.html + +Fixes: +http://autobuild.buildroot.net/results/9ce/9ce2ef5ef694253b9759016c9702c5c6be7849a1 + +Signed-off-by: Romain Naour +--- + scripts/MakeHeader.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/scripts/MakeHeader.py b/scripts/MakeHeader.py +index 4841bda..dd0798c 100755 +--- a/scripts/MakeHeader.py ++++ b/scripts/MakeHeader.py +@@ -16,7 +16,7 @@ SKIPONE=4 + state = ANY + static = 0 + +-file = open(sys.argv[1]) ++file = open(sys.argv[1], 'rb') + name = sys.argv[1][:-2] + + out = StringIO() +@@ -31,6 +31,7 @@ out.write( "#define HEADER_" + os.path.basename(name) + "\n") + is_blank = False + for line in file.readlines(): + line = line[:-1] ++ line = line.decode('utf-8') + if state == ANY: + if line == '/*{': + state = COPY +-- +2.14.3 + diff --git a/buildroot/package/htop/htop.hash b/buildroot/package/htop/htop.hash index cfea23f99b5..5419d767a3d 100644 --- a/buildroot/package/htop/htop.hash +++ b/buildroot/package/htop/htop.hash @@ -1,3 +1,3 @@ -# Hashes from: http://www.freelists.org/post/htop/ANN-htop-202 -md5 7d354d904bad591a931ad57e99fea84a htop-2.0.2.tar.gz -sha1 201f793f13dce2448e36047079875b9bd5bba75a htop-2.0.2.tar.gz +# Locally calculated +sha256 3260be990d26e25b6b49fc9d96dbc935ad46e61083c0b7f6df413e513bf80748 htop-2.1.0.tar.gz +sha256 70466e76443cb5b68144d9fcedca9584e7bfdb6c50859daa5a0290ea27c58aad COPYING diff --git a/buildroot/package/htop/htop.mk b/buildroot/package/htop/htop.mk index d06e4a56d01..71889557ca4 100644 --- a/buildroot/package/htop/htop.mk +++ b/buildroot/package/htop/htop.mk @@ -4,7 +4,7 @@ # ################################################################################ -HTOP_VERSION = 2.0.2 +HTOP_VERSION = 2.1.0 HTOP_SITE = http://hisham.hm/htop/releases/$(HTOP_VERSION) HTOP_DEPENDENCIES = ncurses # Prevent htop build system from searching the host paths diff --git a/buildroot/package/i2pd/0001-Fix-cmake-error-when-DBUILD_SHARED_LIBS-ON.patch b/buildroot/package/i2pd/0001-Fix-cmake-error-when-DBUILD_SHARED_LIBS-ON.patch new file mode 100644 index 00000000000..d30e62f4f3b --- /dev/null +++ b/buildroot/package/i2pd/0001-Fix-cmake-error-when-DBUILD_SHARED_LIBS-ON.patch @@ -0,0 +1,28 @@ +From 6d15be9a32989b0d00312a5b2589e36ba0ea7836 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sun, 4 Mar 2018 18:29:13 +0100 +Subject: [PATCH] Fix cmake error when -DBUILD_SHARED_LIBS=ON + +Fixes "CMake Error: TARGETS given no LIBRARY DESTINATION for shared +library target" by adding LIBRARY parameter to INSTALL call + +Signed-off-by: Fabrice Fontaine +--- + build/CMakeLists.txt | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt +index 4f875b33..a1c8957b 100644 +--- a/build/CMakeLists.txt ++++ b/build/CMakeLists.txt +@@ -97,6 +97,7 @@ set_target_properties(libi2pd PROPERTIES PREFIX "") + install(TARGETS libi2pd + EXPORT libi2pd + ARCHIVE DESTINATION lib ++ LIBRARY DESTINATION lib + COMPONENT Libraries) + # TODO Make libi2pd available to 3rd party projects via CMake as imported target + # FIXME This pulls stdafx +-- +2.14.1 + diff --git a/buildroot/package/i2pd/0002-Install-libi2pdclient.patch b/buildroot/package/i2pd/0002-Install-libi2pdclient.patch new file mode 100644 index 00000000000..17749779650 --- /dev/null +++ b/buildroot/package/i2pd/0002-Install-libi2pdclient.patch @@ -0,0 +1,69 @@ +From 1d934bd543360bfdd40e1501d16d8beb2016ccd8 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Mon, 5 Mar 2018 14:55:54 +0100 +Subject: [PATCH] Install libi2pdclient + +When building with -DBUILD_SHARED_LIBS=ON, libi2pdclient is not +installed on target so install it by calling install. Moreover, rename +i2pdclient to libi2pdclient so library is installed with correct name. + +Signed-off-by: Fabrice Fontaine +--- + build/CMakeLists.txt | 16 +++++++++++----- + 1 file changed, 11 insertions(+), 5 deletions(-) + +diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt +index a1c8957b..364c3304 100644 +--- a/build/CMakeLists.txt ++++ b/build/CMakeLists.txt +@@ -120,7 +120,13 @@ set (CLIENT_SRC + if(WITH_WEBSOCKETS) + list (APPEND CLIENT_SRC "${LIBI2PD_CLIENT_SRC_DIR}/Websocket.cpp") + endif () +-add_library(i2pdclient ${CLIENT_SRC}) ++add_library(libi2pdclient ${CLIENT_SRC}) ++set_target_properties(libi2pdclient PROPERTIES PREFIX "") ++install(TARGETS libi2pdclient ++ EXPORT libi2pdclient ++ ARCHIVE DESTINATION lib ++ LIBRARY DESTINATION lib ++ COMPONENT Libraries) + + set(DAEMON_SRC_DIR ../daemon) + +@@ -304,7 +310,7 @@ if (WITH_PCH) + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + ) + target_compile_options(libi2pd PRIVATE /FIstdafx.h /Yustdafx.h /Zm155 "/Fp${CMAKE_BINARY_DIR}/stdafx.dir/$/stdafx.pch") +- target_compile_options(i2pdclient PRIVATE /FIstdafx.h /Yustdafx.h /Zm155 "/Fp${CMAKE_BINARY_DIR}/stdafx.dir/$/stdafx.pch") ++ target_compile_options(libi2pdclient PRIVATE /FIstdafx.h /Yustdafx.h /Zm155 "/Fp${CMAKE_BINARY_DIR}/stdafx.dir/$/stdafx.pch") + else() + string(TOUPPER ${CMAKE_BUILD_TYPE} BTU) + get_directory_property(DEFS DEFINITIONS) +@@ -313,12 +319,12 @@ if (WITH_PCH) + COMMAND ${CMAKE_CXX_COMPILER} ${FLAGS} -c ${CMAKE_CURRENT_SOURCE_DIR}/../libi2pd/stdafx.h -o ${CMAKE_BINARY_DIR}/stdafx.h.gch + ) + target_compile_options(libi2pd PRIVATE -include libi2pd/stdafx.h) +- target_compile_options(i2pdclient PRIVATE -include libi2pd/stdafx.h) ++ target_compile_options(libi2pdclient PRIVATE -include libi2pd/stdafx.h) + endif() + target_link_libraries(libi2pd stdafx) + endif() + +-target_link_libraries(i2pdclient libi2pd) ++target_link_libraries(libi2pdclient libi2pd) + + find_package ( Boost COMPONENTS system filesystem program_options date_time REQUIRED ) + if(NOT DEFINED Boost_INCLUDE_DIRS) +@@ -451,7 +457,7 @@ if (WITH_BINARY) + if (WITH_STATIC) + set(DL_LIB ${CMAKE_DL_LIBS}) + endif() +- target_link_libraries( "${PROJECT_NAME}" libi2pd i2pdclient ${DL_LIB} ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${ZLIB_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${MINGW_EXTRA} ${DL_LIB} ${CMAKE_REQUIRED_LIBRARIES}) ++ target_link_libraries( "${PROJECT_NAME}" libi2pd libi2pdclient ${DL_LIB} ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${ZLIB_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ${MINGW_EXTRA} ${DL_LIB} ${CMAKE_REQUIRED_LIBRARIES}) + + install(TARGETS "${PROJECT_NAME}" RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT Runtime) + set (APPS "\${CMAKE_INSTALL_PREFIX}/bin/${PROJECT_NAME}${CMAKE_EXECUTABLE_SUFFIX}") +-- +2.14.1 + diff --git a/buildroot/package/i2pd/0003-build-CMakeLists.txt-don-t-install-source-and-licens.patch b/buildroot/package/i2pd/0003-build-CMakeLists.txt-don-t-install-source-and-licens.patch new file mode 100644 index 00000000000..bf5807f8d71 --- /dev/null +++ b/buildroot/package/i2pd/0003-build-CMakeLists.txt-don-t-install-source-and-licens.patch @@ -0,0 +1,58 @@ +From 5fec22461a6d8d1045c849e468436b00ec7f9616 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 1 Apr 2018 20:11:21 +0200 +Subject: [PATCH] build/CMakeLists.txt: don't install source and license + +The CMakeLists.txt has the interesting (weird?) idea of installing the +license to /usr/LICENSE and the source code to /usr/src/, which is a +bit annoying. Let's not install such things. + +Signed-off-by: Thomas Petazzoni +--- + build/CMakeLists.txt | 30 ------------------------------ + 1 file changed, 30 deletions(-) + +diff --git a/build/CMakeLists.txt b/build/CMakeLists.txt +index a6736a0b..3de79f3e 100644 +--- a/build/CMakeLists.txt ++++ b/build/CMakeLists.txt +@@ -473,36 +473,6 @@ if (WITH_BINARY) + endif () + endif () + +-install(FILES ../LICENSE +- DESTINATION . +- COMPONENT Runtime +- ) +-# Take a copy on Appveyor +-install(FILES "C:/projects/openssl-$ENV{OPENSSL}/LICENSE" +- DESTINATION . +- COMPONENT Runtime +- RENAME LICENSE_OPENSSL +- OPTIONAL # for local builds only! +- ) +- +-file(GLOB_RECURSE I2PD_SOURCES "../libi2pd/*.cpp" "../libi2pd_client/*.cpp" "../daemon/*.cpp" "../build" "../Win32" "../Makefile*") +-install(FILES ${I2PD_SOURCES} DESTINATION src/ COMPONENT Source) +-# install(DIRECTORY ../ DESTINATION src/ +-# # OPTIONAL +-# COMPONENT Source FILES_MATCHING +-# PATTERN .git EXCLUDE +-# PATTERN "*.cpp" +-# ) +- +-file(GLOB I2PD_HEADERS "../libi2pd/*.h" "../libi2pd_client/*.h" "../daemon/*.h") +-install(FILES ${I2PD_HEADERS} DESTINATION src/ COMPONENT Headers) +-# install(DIRECTORY ../ DESTINATION src/ +-# # OPTIONAL +-# COMPONENT Headers FILES_MATCHING +-# PATTERN .git EXCLUDE +-# PATTERN "*.h" +-# ) +- + set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Purple I2P, a C++ I2P daemon") + set(CPACK_PACKAGE_VENDOR "Purple I2P") + set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/../README.md") +-- +2.14.3 + diff --git a/buildroot/package/i2pd/Config.in b/buildroot/package/i2pd/Config.in new file mode 100644 index 00000000000..5b9ac33e280 --- /dev/null +++ b/buildroot/package/i2pd/Config.in @@ -0,0 +1,37 @@ +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_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_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_HAS_GCC_BUG_64735 diff --git a/buildroot/package/i2pd/S99i2pd b/buildroot/package/i2pd/S99i2pd new file mode 100644 index 00000000000..32775cdb979 --- /dev/null +++ b/buildroot/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/buildroot/package/i2pd/i2pd.hash b/buildroot/package/i2pd/i2pd.hash new file mode 100644 index 00000000000..b7a60c91649 --- /dev/null +++ b/buildroot/package/i2pd/i2pd.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 8834190418de0c4e56c46eb8b9dc4422ef14f1ad7d6591e9daae99493bf7170e i2pd-2.18.0.tar.gz +sha256 d147a6acdaf8ec9f6513802ef6cad4a4afcdb5ab6b98d9f6bb26d2b7f4cf454c LICENSE diff --git a/buildroot/package/i2pd/i2pd.mk b/buildroot/package/i2pd/i2pd.mk new file mode 100644 index 00000000000..c79a9d0b4a9 --- /dev/null +++ b/buildroot/package/i2pd/i2pd.mk @@ -0,0 +1,63 @@ +################################################################################ +# +# i2pd +# +################################################################################ + +I2PD_VERSION = 2.18.0 +I2PD_SITE = $(call github,PurpleI2P,i2pd,$(I2PD_VERSION)) +I2PD_LICENSE = BSD-3-Clause +I2PD_LICENSE_FILES = LICENSE +I2PD_SUBDIR = build +I2PD_DEPENDENCIES = \ + boost \ + openssl \ + zlib + +I2PD_CONF_OPTS += -DWITH_GUI=OFF + +# Before CMake 3.10, passing THREADS_PTHREAD_ARG=OFF was needed to +# disable a try_run() call in the FindThreads tests, which caused a +# build failure when cross-compiling. +I2PD_CONF_OPTS += -DTHREADS_PTHREAD_ARG=OFF + +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 + +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 + mkdir -p $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants + ln -sf ../../../../usr/lib/systemd/system/i2pd.service \ + $(TARGET_DIR)/etc/systemd/system/multi-user.target.wants/i2pd.service +endef + +$(eval $(cmake-package)) diff --git a/buildroot/package/i2pd/i2pd.service b/buildroot/package/i2pd/i2pd.service new file mode 100644 index 00000000000..0fdee595323 --- /dev/null +++ b/buildroot/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/buildroot/package/icu/0003-detect-compiler-symbol-prefix.patch b/buildroot/package/icu/0003-detect-compiler-symbol-prefix.patch deleted file mode 100644 index 1e9537503b8..00000000000 --- a/buildroot/package/icu/0003-detect-compiler-symbol-prefix.patch +++ /dev/null @@ -1,116 +0,0 @@ -detect and add compiler symbol prefix to the assembly code - -Some compiler, such as Blackfin GNU compiler, prefix a charater to any -C symbol in generated assembly code. If any assembly symbol is invoked -from C code, it needs to be prefixed as well. - -Note: since autoreconf doesn't work with this package because automake -isn't support - -[Ryan: add information about why patching configure is ok] -[Gustavo: update for ICU4C 54.1] - -Signed-off-by: Sonic Zhang -Signed-off-by: Ryan Barnett -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:56:05.793832186 -0300 -@@ -637,6 +637,7 @@ - ICUDATA_CHAR - SAMPLES_TRUE - TESTS_TRUE -+SYMBOL_PREFIX - ICULIBSUFFIXCNAME - U_HAVE_LIB_SUFFIX - ICULIBSUFFIX -@@ -7414,6 +7415,17 @@ - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CHECK_UTF16_STRING_RESULT" >&5 - $as_echo "$CHECK_UTF16_STRING_RESULT" >&6; } - -+# Check compiler generated symbol profix -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for symbol prefix" >&5 -+$as_echo "checking for symbol prefix... " >&6; } -+ SYMBOL_PREFIX=`echo "PREFIX=__USER_LABEL_PREFIX__" \ -+ | ${CPP-${CC-gcc} -E} - 2>&1 \ -+ | ${EGREP-grep} "^PREFIX=" \ -+ | sed -e "s:^PREFIX=::" -e "s:__USER_LABEL_PREFIX__::"` -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SYMBOL_PREFIX" >&5 -+$as_echo "$SYMBOL_PREFIX" >&6; } -+ - # Enable/disable extras - # Check whether --enable-extras was given. - if test "${enable_extras+set}" = set; then : -diff -Nura icu.orig/source/data/Makefile.in icu/source/data/Makefile.in ---- icu.orig/source/data/Makefile.in 2014-12-18 15:49:42.908624160 -0300 -+++ icu/source/data/Makefile.in 2014-12-18 16:01:32.751110913 -0300 -@@ -182,11 +182,11 @@ - packagedata: icupkg.inc $(PKGDATA_LIST) build-local - ifneq ($(ENABLE_STATIC),) - ifeq ($(PKGDATA_MODE),dll) -- $(PKGDATA_INVOKE) $(PKGDATA) -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBSTATICNAME) -m static $(PKGDATA_VERSIONING) $(PKGDATA_LIST) -+ $(PKGDATA_INVOKE) $(PKGDATA) -e @SYMBOL_PREFIX@$(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBSTATICNAME) -m static $(PKGDATA_VERSIONING) $(PKGDATA_LIST) - endif - endif - ifneq ($(ICUDATA_SOURCE_IS_NATIVE_TARGET),YES) -- $(PKGDATA_INVOKE) $(PKGDATA) -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -p $(ICUDATA_NAME) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) $(PKGDATA_LIBNAME) $(PKGDATA_LIST) -+ $(PKGDATA_INVOKE) $(PKGDATA) -e @SYMBOL_PREFIX@$(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -p $(ICUDATA_NAME) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) $(PKGDATA_LIBNAME) $(PKGDATA_LIST) - else - $(INSTALL_DATA) $(ICUDATA_SOURCE_ARCHIVE) $(OUTDIR) - endif -@@ -209,11 +209,11 @@ - endif - ifneq ($(ENABLE_STATIC),) - ifeq ($(PKGDATA_MODE),dll) -- $(PKGDATA_INVOKE) $(PKGDATA) -m static -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -s $(BUILDDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBSTATICNAME) $(PKGDATA_LIST) -I $(ICUPKGDATA_INSTALL_LIBDIR) -+ $(PKGDATA_INVOKE) $(PKGDATA) -m static -e @SYMBOL_PREFIX@$(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -s $(BUILDDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBSTATICNAME) $(PKGDATA_LIST) -I $(ICUPKGDATA_INSTALL_LIBDIR) - endif - endif - ifneq ($(ICUDATA_SOURCE_IS_NATIVE_TARGET),YES) -- $(PKGDATA_INVOKE) $(PKGDATA) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) -e $(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -s $(BUILDDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBNAME) $(PKGDATA_LIST) -I $(ICUPKGDATA_INSTALL_DIR) -+ $(PKGDATA_INVOKE) $(PKGDATA) -m $(PKGDATA_MODE) $(PKGDATA_VERSIONING) -e @SYMBOL_PREFIX@$(ICUDATA_ENTRY_POINT) -T $(OUTTMPDIR) -s $(BUILDDIR) -p $(ICUDATA_NAME) $(PKGDATA_LIBNAME) $(PKGDATA_LIST) -I $(ICUPKGDATA_INSTALL_DIR) - else - $(INSTALL_DATA) $(ICUDATA_SOURCE_ARCHIVE) $(DESTDIR)$(ICUPKGDATA_DIR) - endif -@@ -224,7 +224,7 @@ - #### 390 support - install390: package390 - $(MKINSTALLDIRS) $(TMPDATADIR) $(DESTDIR)$(libdir) -- $(INVOKE) $(PKGDATA) -s $(BUILDDIR)$(STUB_SUFFIX) -T $(OUTTMPDIR_390STUB) -p $(ICUDATA_NAME)$(STUB_SUFFIX) $(PKGDATA_LIBNAME)$(STUB_SUFFIX) -e $(ICUDATA_ENTRY_POINT) $(OS390LIST) -m dll $(PKGDATA_VERSIONING) -I $(DESTDIR)$(ICUPKGDATA_DIR) -+ $(INVOKE) $(PKGDATA) -s $(BUILDDIR)$(STUB_SUFFIX) -T $(OUTTMPDIR_390STUB) -p $(ICUDATA_NAME)$(STUB_SUFFIX) $(PKGDATA_LIBNAME)$(STUB_SUFFIX) -e @SYMBOL_PREFIX@$(ICUDATA_ENTRY_POINT) $(OS390LIST) -m dll $(PKGDATA_VERSIONING) -I $(DESTDIR)$(ICUPKGDATA_DIR) - ifeq ($(PKGDATA_MODE),dll) - $(INSTALL-L) $(ICUPKGDATA_OUTDIR)/$(FINAL_IMPORT_LIB) $(DESTDIR)$(ICUPKGDATA_DIR)/$(FINAL_IMPORT_LIB) - endif -@@ -232,7 +232,7 @@ - #### $(LIB_ICUDATA_NAME)$(STUB_SUFFIX) is the subset data for batch mode - package390: $(OUTTMPDIR)/icudata390.lst $(PKGDATA_LIST) ./icupkg.inc packagedata - ln -s $(ICUDATA_NAME) $(OUTDIR)/build/$(ICUDATA_NAME)$(STUB_SUFFIX) -- $(INVOKE) $(PKGDATA) -s $(BUILDDIR)$(STUB_SUFFIX) -T $(OUTTMPDIR_390STUB) -p $(ICUDATA_NAME)$(STUB_SUFFIX) $(PKGDATA_LIBNAME)$(STUB_SUFFIX) -e $(ICUDATA_ENTRY_POINT) $(OS390LIST) -m dll $(PKGDATA_VERSIONING) -+ $(INVOKE) $(PKGDATA) -s $(BUILDDIR)$(STUB_SUFFIX) -T $(OUTTMPDIR_390STUB) -p $(ICUDATA_NAME)$(STUB_SUFFIX) $(PKGDATA_LIBNAME)$(STUB_SUFFIX) -e @SYMBOL_PREFIX@$(ICUDATA_ENTRY_POINT) $(OS390LIST) -m dll $(PKGDATA_VERSIONING) - cp $(ICUPKGDATA_OUTDIR)/$(LIB_ICUDATA_NAME)$(STUB_SUFFIX).$(SO) $(top_builddir)/stubdata/$(LIB_ICUDATA_NAME)$(STUB_SUFFIX).$(SO) - - -diff -Nura icu.orig/source/extra/uconv/Makefile.in icu/source/extra/uconv/Makefile.in ---- icu.orig/source/extra/uconv/Makefile.in 2014-12-18 15:49:42.986626850 -0300 -+++ icu/source/extra/uconv/Makefile.in 2014-12-18 15:57:40.558101179 -0300 -@@ -58,7 +58,8 @@ - ## Static mode - ifeq ($(UCONVMSG_MODE),static) - DEFS += -DUCONVMSG_LINK=$(MSGNAME) --UCONVMSG_LIB = $(RESDIR)/$(LIBPREFIX)$(STATIC_PREFIX_WHEN_USED)$(MSGNAME).$(A) -+UCONVMSG_LIB = $(RESDIR)/$(LIBPREFIX)$(STATIC_PREFIX_WHEN_USED)@SYMBOL_PREFIX@$(MSGNAME).$(A) -+ - LIBS += $(UCONVMSG_LIB) - PKGMODE=static - INSTALLTO=$(libdir) -@@ -152,7 +153,7 @@ - endif - - $(UCONVMSG_LIB): $(RESFILES) $(RESDIR)/$(RESDIR).lst pkgdata.inc -- $(INVOKE) $(PKGDATA_INVOKE_OPTS) $(TOOLBINDIR)/pkgdata -p $(MSGNAME) $(PKGDATA_OPTS) -m $(PKGMODE) -s $(RESDIR) -d $(RESDIR) -T $(RESDIR) $(RESDIR)/$(RESDIR).lst -+ $(INVOKE) $(PKGDATA_INVOKE_OPTS) $(TOOLBINDIR)/pkgdata -p @SYMBOL_PREFIX@$(MSGNAME) $(PKGDATA_OPTS) -m $(PKGMODE) -s $(RESDIR) -d $(RESDIR) -T $(RESDIR) $(RESDIR)/$(RESDIR).lst - - $(RESDIR)/$(RESDIR).lst: Makefile $(srcdir)/resfiles.mk - @-$(RMV) $@ diff --git a/buildroot/package/icu/0004-link-icudata-as-data-only.patch b/buildroot/package/icu/0003-link-icudata-as-data-only.patch similarity index 100% rename from buildroot/package/icu/0004-link-icudata-as-data-only.patch rename to buildroot/package/icu/0003-link-icudata-as-data-only.patch diff --git a/buildroot/package/icu/0005-fix-static-linking-with-icu-uc.patch b/buildroot/package/icu/0004-fix-static-linking-with-icu-uc.patch similarity index 100% rename from buildroot/package/icu/0005-fix-static-linking-with-icu-uc.patch rename to buildroot/package/icu/0004-fix-static-linking-with-icu-uc.patch diff --git a/buildroot/package/icu/icu.hash b/buildroot/package/icu/icu.hash index 8b54e224438..66a0a8dc80d 100644 --- a/buildroot/package/icu/icu.hash +++ b/buildroot/package/icu/icu.hash @@ -1,3 +1,3 @@ -# From http://download.icu-project.org/files/icu4c/60.1/SHASUM512.txt -sha512 a6798f70add1b3bac2197a49e09a0bb636279af7019ce572f63a30ab713e09657ee9d9b20aac7ea806fbb84667ca2eca981411e5053b47c3c705aa496a669233 icu4c-60_1-src.tgz +# From http://download.icu-project.org/files/icu4c/60.2/SHASUM512.txt +sha512 8e718e66c13e7f25714404c46b91ed6305efff1df70c328be2ec743023a7719016dae72a5fa0a05d6f5599983590a2044ff72d3453a048d987ab546d0416d694 icu4c-60_2-src.tgz sha256 24c771ce37201a3ab604852e47d10d21595d0493269dd6c8a5e567e998e18c00 LICENSE diff --git a/buildroot/package/icu/icu.mk b/buildroot/package/icu/icu.mk index 6ac4a253787..a9466c83223 100644 --- a/buildroot/package/icu/icu.mk +++ b/buildroot/package/icu/icu.mk @@ -4,7 +4,7 @@ # ################################################################################ -ICU_VERSION = 60.1 +ICU_VERSION = 60.2 ICU_SOURCE = icu4c-$(subst .,_,$(ICU_VERSION))-src.tgz ICU_SITE = http://download.icu-project.org/files/icu4c/$(ICU_VERSION) ICU_LICENSE = ICU License diff --git a/buildroot/package/imagemagick/imagemagick.hash b/buildroot/package/imagemagick/imagemagick.hash index 2468bdbc233..170231c4b7c 100644 --- a/buildroot/package/imagemagick/imagemagick.hash +++ b/buildroot/package/imagemagick/imagemagick.hash @@ -1,2 +1,3 @@ # Locally computed -sha256 924d1161ed2399bcb72f98419072b3130a466e07d9a6fce43d27458ffa907ffa 7.0.7-10.tar.gz +sha256 723a28f9cbc5c6130f496065fc01c839083e97bf3e4930f940a03c0155046170 7.0.7-27.tar.gz +sha256 2318cc05bbd2c25c1b2d13af1aadccc45b9cf6f94757421ae59a3c8ea9064f1c LICENSE diff --git a/buildroot/package/imagemagick/imagemagick.mk b/buildroot/package/imagemagick/imagemagick.mk index c2171a75641..116543888b4 100644 --- a/buildroot/package/imagemagick/imagemagick.mk +++ b/buildroot/package/imagemagick/imagemagick.mk @@ -4,7 +4,7 @@ # ################################################################################ -IMAGEMAGICK_VERSION = 7.0.7-10 +IMAGEMAGICK_VERSION = 7.0.7-27 IMAGEMAGICK_SOURCE = $(IMAGEMAGICK_VERSION).tar.gz IMAGEMAGICK_SITE = https://github.com/ImageMagick/ImageMagick/archive IMAGEMAGICK_LICENSE = Apache-2.0 diff --git a/buildroot/package/imx-mkimage/0001-add-support-for-overriding-bl32-and-bl33-not-only-bl.patch b/buildroot/package/imx-mkimage/0001-add-support-for-overriding-bl32-and-bl33-not-only-bl.patch new file mode 100644 index 00000000000..430122f7ed8 --- /dev/null +++ b/buildroot/package/imx-mkimage/0001-add-support-for-overriding-bl32-and-bl33-not-only-bl.patch @@ -0,0 +1,58 @@ +From 0677e6cff00506de56d11bfa230b6c366e74f6ed Mon Sep 17 00:00:00 2001 +From: Erik Larsson +Date: Thu, 8 Mar 2018 19:04:37 +0100 +Subject: [PATCH] Add support for overriding BL32 and BL33 not only BL31 + +Signed-off-by: Erik Larsson +Signed-off-by: Christopher Dahlberg +Signed-off-by: Marcus Folkesson +--- + iMX8M/mkimage_fit_atf.sh | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/iMX8M/mkimage_fit_atf.sh b/iMX8M/mkimage_fit_atf.sh +index 3a3bd10..727f746 100755 +--- a/iMX8M/mkimage_fit_atf.sh ++++ b/iMX8M/mkimage_fit_atf.sh +@@ -11,29 +11,29 @@ if [ ! -f $BL31 ]; then + echo "ERROR: BL31 file $BL31 NOT found" >&2 + exit 0 + else +- echo "bl31.bin size: " >&2 +- ls -lct bl31.bin | awk '{print $5}' >&2 ++ echo "$BL31 size: " >&2 ++ ls -lct $BL31 | awk '{print $5}' >&2 + fi + +-BL32="tee.bin" ++[ -z "$BL32" ] && BL32="tee.bin" + + if [ ! -f $BL32 ]; then + BL32=/dev/null + else +- echo "Building with TEE support, make sure your bl31 is compiled with spd. If you do not want tee, please delete tee.bin" >&2 +- echo "tee.bin size: " >&2 +- ls -lct tee.bin | awk '{print $5}' >&2 ++ echo "Building with TEE support, make sure your bl31 is compiled with spd. If you do not want tee, please delete $BL32" >&2 ++ echo "$BL32 size: " >&2 ++ ls -lct $BL32 | awk '{print $5}' >&2 + fi + +-BL33="u-boot-nodtb.bin" ++[ -z "$BL33" ] && BL33="u-boot-nodtb.bin" + + if [ ! -f $BL33 ]; then + echo "ERROR: $BL33 file NOT found" >&2 + exit 0 + else + +- echo "u-boot-nodtb.bin size: " >&2 +- ls -lct u-boot-nodtb.bin | awk '{print $5}' >&2 ++ echo "$BL33: " >&2 ++ ls -lct $BL33 | awk '{print $5}' >&2 + fi + + for dtname in $* +-- +2.7.4 + diff --git a/buildroot/package/imx-mkimage/0002-add-ldflags-to-link-step.patch b/buildroot/package/imx-mkimage/0002-add-ldflags-to-link-step.patch new file mode 100644 index 00000000000..1d5fe77596b --- /dev/null +++ b/buildroot/package/imx-mkimage/0002-add-ldflags-to-link-step.patch @@ -0,0 +1,26 @@ +From a73f20fbe921c7ecff3efda23bc506fdd935ee4d Mon Sep 17 00:00:00 2001 +From: Erik Larsson +Date: Tue, 6 Mar 2018 12:28:39 +0100 +Subject: [PATCH] Add LDFLAGS to link step + +Signed-off-by: Erik Larsson +--- + iMX8M/soc.mak | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/iMX8M/soc.mak b/iMX8M/soc.mak +index 8346769..38a14bb 100644 +--- a/iMX8M/soc.mak ++++ b/iMX8M/soc.mak +@@ -15,7 +15,7 @@ FW_DIR = imx-boot/imx-boot-tools/imx8mq + + $(MKIMG): mkimage_imx8.c + @echo "Compiling mkimage_imx8" +- $(CC) $(CFLAGS) mkimage_imx8.c -o $(MKIMG) -lz ++ $(CC) $(CFLAGS) mkimage_imx8.c -o $(MKIMG) $(LDFLAGS) -lz + + $(DCD_CFG): $(DCD_CFG_SRC) + @echo "Converting iMX8M DCD file" +-- +2.7.4 + diff --git a/buildroot/package/imx-mkimage/Config.in.host b/buildroot/package/imx-mkimage/Config.in.host new file mode 100644 index 00000000000..8d273557a10 --- /dev/null +++ b/buildroot/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://source.codeaurora.org/external/imx/imx-mkimage diff --git a/buildroot/package/imx-mkimage/imx-mkimage.hash b/buildroot/package/imx-mkimage/imx-mkimage.hash new file mode 100644 index 00000000000..e1cbdd973c9 --- /dev/null +++ b/buildroot/package/imx-mkimage/imx-mkimage.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 bc79e11cfbde303e200287fa6624028c8ce5344f8a35ed179b3fe217d74155da imx-mkimage-rel_imx_4.9.51_8mq_ga.tar.gz +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c iMX8dv/COPYING diff --git a/buildroot/package/imx-mkimage/imx-mkimage.mk b/buildroot/package/imx-mkimage/imx-mkimage.mk new file mode 100644 index 00000000000..6fd6aa39b06 --- /dev/null +++ b/buildroot/package/imx-mkimage/imx-mkimage.mk @@ -0,0 +1,25 @@ +################################################################################ +# +# imx-mkimage +# +################################################################################ + +IMX_MKIMAGE_VERSION = rel_imx_4.9.51_8mq_ga +IMX_MKIMAGE_SITE = https://source.codeaurora.org/external/imx/imx-mkimage +IMX_MKIMAGE_SITE_METHOD = git +IMX_MKIMAGE_LICENSE = GPL-2.0+ +IMX_MKIMAGE_LICENSE_FILES = iMX8dv/COPYING +HOST_IMX_MKIMAGE_DEPENDENCIES = host-zlib + +define HOST_IMX_MKIMAGE_BUILD_CMDS + # Currently this only supports iMX8M. When more hardware is available + # this needs to be selectable based on iMX8-version (iMX8M,iMXQ etc). + $(HOST_MAKE_ENV) $(MAKE) $(HOST_CONFIGURE_OPTS) -C $(@D)/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 +endef + +$(eval $(host-generic-package)) diff --git a/buildroot/package/inadyn/inadyn.hash b/buildroot/package/inadyn/inadyn.hash index c6c062ce156..742b6f226fe 100644 --- a/buildroot/package/inadyn/inadyn.hash +++ b/buildroot/package/inadyn/inadyn.hash @@ -1,5 +1,5 @@ -# From https://github.com/troglobit/inadyn/releases/download/v2.2.1/inadyn-2.2.1.tar.xz.md5 -md5 8f7796ee45b2a2e282a54a2d31d03953 inadyn-2.2.1.tar.xz +# From https://github.com/troglobit/inadyn/releases/download/v2.3/inadyn-2.3.tar.xz.md5 +md5 63efb284b7f3f389c01bad19ee28407e inadyn-2.3.tar.xz # Locally computed -sha256 e7a74fcf8b7c069990940c0dc4d4d18071005be225667fdfcfa4156c44384579 inadyn-2.2.1.tar.xz +sha256 4a98b80d8565b9e4cb32b19b7a8b06a22a7d9a6f4f03a5298a8d441b6187c760 inadyn-2.3.tar.xz sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/inadyn/inadyn.mk b/buildroot/package/inadyn/inadyn.mk index 5eac3b5c3ad..0b1f82dae8c 100644 --- a/buildroot/package/inadyn/inadyn.mk +++ b/buildroot/package/inadyn/inadyn.mk @@ -4,7 +4,7 @@ # ################################################################################ -INADYN_VERSION = 2.2.1 +INADYN_VERSION = 2.3 INADYN_SITE = https://github.com/troglobit/inadyn/releases/download/v$(INADYN_VERSION) INADYN_SOURCE = inadyn-$(INADYN_VERSION).tar.xz INADYN_LICENSE = GPL-2.0+ diff --git a/buildroot/package/inotify-tools/0001-gcc6.patch b/buildroot/package/inotify-tools/0001-gcc6.patch deleted file mode 100644 index aae622ebf51..00000000000 --- a/buildroot/package/inotify-tools/0001-gcc6.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 5fe3ba82134d8b85adc69cf1d6c5742b4bde20b4 Mon Sep 17 00:00:00 2001 -From: James Knight -Date: Thu, 16 Jun 2016 00:00:57 -0400 -Subject: [PATCH] correct code alignment -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The following replaces the indented section of code from spaces to tabs. -No functional changes. Aside from consistency, this resolves a GCC 6 -build issue with the flag `-Werror=misleading-indentation` enabled: - - inotifywait.c: In function 窶椀utput_event_csv窶: - inotifywait.c:126:5: error: this 窶亙f窶 clause does not guard... - [-Werror=misleading-indentation] - if (filename != NULL) - ^~ - inotifywait.c:129:2: note: ...this statement, but the latter is - misleadingly indented as if it is guarded - by the 窶亙f窶 - printf("%s,", csv_escape( inotifytools_event_to_str( event->mask ) - ) ); - ^~~~~~ - -Signed-off-by: James Knight -Signed-off-by: Bernd Kuhls -(downloaded from upstream pull request - https://github.com/rvoicilas/inotify-tools/pull/65) ---- - src/inotifywait.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/inotifywait.c b/src/inotifywait.c -index c5ce5e3..404a85b 100644 ---- a/src/inotifywait.c -+++ b/src/inotifywait.c -@@ -122,9 +122,9 @@ void validate_format( char * fmt ) { - - - void output_event_csv( struct inotify_event * event ) { -- char *filename = csv_escape(inotifytools_filename_from_wd(event->wd)); -- if (filename != NULL) -- printf("%s,", filename); -+ char *filename = csv_escape(inotifytools_filename_from_wd(event->wd)); -+ if (filename != NULL) -+ printf("%s,", filename); - - printf("%s,", csv_escape( inotifytools_event_to_str( event->mask ) ) ); - if ( event->len > 0 ) diff --git a/buildroot/package/inotify-tools/inotify-tools.hash b/buildroot/package/inotify-tools/inotify-tools.hash index 0993dc44c44..83dc22b4a2b 100644 --- a/buildroot/package/inotify-tools/inotify-tools.hash +++ b/buildroot/package/inotify-tools/inotify-tools.hash @@ -1,2 +1,3 @@ # Locally computed -sha256 628b8efabb65a739dd747fe43b73b29a609b5cfa9628caa127764ed77766a6e1 inotify-tools-1df9af4d6cd0f4af4b1b19254bcf056aed4ae395.tar.gz +sha256 a433cc1dedba851078276db69b0e97f9fe41e4ba3336d2971adfca4b3a6242ac inotify-tools-3.20.1.tar.gz +sha256 e41fc126320a79ed53b5aa3386f059f7d10770856d6fd714ab80a96ce6bd09d6 COPYING diff --git a/buildroot/package/inotify-tools/inotify-tools.mk b/buildroot/package/inotify-tools/inotify-tools.mk index e8b1498e6fc..63626307c2d 100644 --- a/buildroot/package/inotify-tools/inotify-tools.mk +++ b/buildroot/package/inotify-tools/inotify-tools.mk @@ -4,9 +4,9 @@ # ################################################################################ -INOTIFY_TOOLS_VERSION = 1df9af4d6cd0f4af4b1b19254bcf056aed4ae395 +INOTIFY_TOOLS_VERSION = 3.20.1 INOTIFY_TOOLS_SITE = $(call github,rvoicilas,inotify-tools,$(INOTIFY_TOOLS_VERSION)) -INOTIFY_TOOLS_LICENSE = GPL +INOTIFY_TOOLS_LICENSE = GPL-2.0+ INOTIFY_TOOLS_LICENSE_FILES = COPYING INOTIFY_TOOLS_INSTALL_STAGING = YES INOTIFY_TOOLS_AUTORECONF = YES diff --git a/buildroot/package/intel-microcode/intel-microcode.hash b/buildroot/package/intel-microcode/intel-microcode.hash index 12e1dfbf8f3..999b27299df 100644 --- a/buildroot/package/intel-microcode/intel-microcode.hash +++ b/buildroot/package/intel-microcode/intel-microcode.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 063f1aa3a546cb49323a5e0b516894e4b040007107b8c8ff017aca8a86204130 microcode-20180108.tgz +sha256 0b381face2df1b0a829dc4fa8fa93f47f39e11b1c9c22ebd44f8614657c1e779 microcode-20180312.tgz sha256 6d4deb65ca688d930e188bf93f78430f134097b161e6df4a2ef00728e14965e3 license.txt diff --git a/buildroot/package/intel-microcode/intel-microcode.mk b/buildroot/package/intel-microcode/intel-microcode.mk index d6c35b21c70..e3134b64086 100644 --- a/buildroot/package/intel-microcode/intel-microcode.mk +++ b/buildroot/package/intel-microcode/intel-microcode.mk @@ -4,9 +4,9 @@ # ################################################################################ -INTEL_MICROCODE_VERSION = 20180108 +INTEL_MICROCODE_VERSION = 20180312 INTEL_MICROCODE_SOURCE = microcode-$(INTEL_MICROCODE_VERSION).tgz -INTEL_MICROCODE_SITE = http://downloadmirror.intel.com/27431/eng +INTEL_MICROCODE_SITE = http://downloadmirror.intel.com/27591/eng INTEL_MICROCODE_STRIP_COMPONENTS = 0 INTEL_MICROCODE_LICENSE = PROPRIETARY INTEL_MICROCODE_LICENSE_FILES = license.txt diff --git a/buildroot/package/iproute2/0001-Add-the-musl-workaround-to-the-libc-compat.h-copy.patch b/buildroot/package/iproute2/0001-Add-the-musl-workaround-to-the-libc-compat.h-copy.patch deleted file mode 100644 index ff362c97c2e..00000000000 --- a/buildroot/package/iproute2/0001-Add-the-musl-workaround-to-the-libc-compat.h-copy.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 909a6f10157114e09936d2dd545175d7ed84c0fb Mon Sep 17 00:00:00 2001 -From: Baruch Siach -Date: Thu, 22 Dec 2016 15:26:30 +0200 -Subject: [PATCH] Add the musl workaround to the libc-compat.h copy - -The libc-compat.h kernel header uses glibc specific macros (__GLIBC__ and -__USE_MISC) to solve conflicts with libc provided headers. This patch makes -libc-compat.h work also for musl libc. - -Signed-off-by: Baruch Siach ---- -Upstream status: libc-compat.h is a local copy of a kernel headers. A proper -musl fix must go to the kernel first. ---- - include/uapi/linux/libc-compat.h | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/include/uapi/linux/libc-compat.h b/include/uapi/linux/libc-compat.h -index 9ab3ace08e2b..e768459d89f9 100644 ---- a/include/uapi/linux/libc-compat.h -+++ b/include/uapi/linux/libc-compat.h -@@ -50,10 +50,12 @@ - #define _LIBC_COMPAT_H - - /* We have included glibc headers... */ --#if defined(__GLIBC__) -+#if 1 -+#define __USE_MISC - - /* Coordinate with glibc net/if.h header. */ - #if defined(_NET_IF_H) && defined(__USE_MISC) -+#define __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO 0 - - /* GLIBC headers included first so don't define anything - * that would already be defined. */ --- -2.15.0 - diff --git a/buildroot/package/iproute2/0001-arpd-remove-pthread-dependency.patch b/buildroot/package/iproute2/0001-arpd-remove-pthread-dependency.patch new file mode 100644 index 00000000000..bfc9649d357 --- /dev/null +++ b/buildroot/package/iproute2/0001-arpd-remove-pthread-dependency.patch @@ -0,0 +1,37 @@ +From 4a4f4d491f89bdd580fdd7a901a3300cb5e9789e Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 1 May 2018 15:33:47 +0300 +Subject: [PATCH] arpd: remove pthread dependency + +Explicit link with pthread is not needed when linking dynamically. Even +static link with recent libdb does not pull in the code that uses +pthread. Finally, the configure check introduced in commit a25df4887d7 +(configure: Check for Berkeley DB for arpd compilation) does not add +-lpthread to its link command. + +This change allows arpd build with toolchains that do not provide +threads support. + +Signed-off-by: Baruch Siach +--- +Upstream status: http://patchwork.ozlabs.org/patch/907031/ + + misc/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/misc/Makefile b/misc/Makefile +index 34ef6b21b4ed..b2dd6b26e2dc 100644 +--- a/misc/Makefile ++++ b/misc/Makefile +@@ -25,7 +25,7 @@ rtacct: rtacct.c + $(QUIET_CC)$(CC) $(CFLAGS) $(LDFLAGS) -o rtacct rtacct.c $(LDLIBS) -lm + + arpd: arpd.c +- $(QUIET_CC)$(CC) $(CFLAGS) -I$(DBM_INCLUDE) $(LDFLAGS) -o arpd arpd.c $(LDLIBS) -ldb -lpthread ++ $(QUIET_CC)$(CC) $(CFLAGS) -I$(DBM_INCLUDE) $(LDFLAGS) -o arpd arpd.c $(LDLIBS) -ldb + + ssfilter.c: ssfilter.y + $(QUIET_YACC)bison ssfilter.y -o ssfilter.c +-- +2.17.0 + diff --git a/buildroot/package/iproute2/iproute2.hash b/buildroot/package/iproute2/iproute2.hash index e9b8a0ef26f..9f808b742af 100644 --- a/buildroot/package/iproute2/iproute2.hash +++ b/buildroot/package/iproute2/iproute2.hash @@ -1,3 +1,3 @@ # From https://kernel.org/pub/linux/utils/net/iproute2/sha256sums.asc -sha256 d43ac068afcc350a448f4581b6e292331ef7e4e7aa746e34981582d5fdb10067 iproute2-4.14.1.tar.xz +sha256 0c5c24020fd7349fe25728c5edee9fb6a1bc8a38f08e23be5c57a6301e55ee0a iproute2-4.16.0.tar.xz sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING diff --git a/buildroot/package/iproute2/iproute2.mk b/buildroot/package/iproute2/iproute2.mk index 15bb132c500..319e69b93f9 100644 --- a/buildroot/package/iproute2/iproute2.mk +++ b/buildroot/package/iproute2/iproute2.mk @@ -4,7 +4,7 @@ # ################################################################################ -IPROUTE2_VERSION = 4.14.1 +IPROUTE2_VERSION = 4.16.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 \ @@ -22,57 +22,34 @@ ifeq ($(BR2_PACKAGE_ELFUTILS),y) IPROUTE2_DEPENDENCIES += elfutils endif -# If we've got iptables enable xtables support for tc ifeq ($(BR2_PACKAGE_IPTABLES)x$(BR2_STATIC_LIBS),yx) IPROUTE2_DEPENDENCIES += iptables -define IPROUTE2_WITH_IPTABLES - # Makefile is busted so it never passes IPT_LIB_DIR properly - $(SED) "s/-DIPT/-DXT/" $(@D)/tc/Makefile -endef else -define IPROUTE2_WITH_IPTABLES +define IPROUTE2_DISABLE_IPTABLES # m_xt.so is built unconditionally echo "TC_CONFIG_XT:=n" >>$(@D)/config.mk endef endif -# arpd needs BerkeleyDB and links against pthread -ifeq ($(BR2_PACKAGE_BERKELEYDB_COMPAT185)$(BR2_TOOLCHAIN_HAS_THREADS),yy) +ifeq ($(BR2_PACKAGE_BERKELEYDB_COMPAT185),y) IPROUTE2_DEPENDENCIES += berkeleydb -else -define IPROUTE2_DISABLE_ARPD - echo "HAVE_BERKELEY_DB:=n" >> $(@D)/config.mk -endef -endif - -# ifcfg needs bash -ifeq ($(BR2_PACKAGE_BASH),) -define IPROUTE2_REMOVE_IFCFG - rm -f $(TARGET_DIR)/sbin/ifcfg -endef endif define IPROUTE2_CONFIGURE_CMDS - $(SED) 's/gcc/$$CC $$CFLAGS/g' $(@D)/configure cd $(@D) && $(TARGET_CONFIGURE_OPTS) ./configure - $(IPROUTE2_DISABLE_ARPD) - $(IPROUTE2_WITH_IPTABLES) + $(IPROUTE2_DISABLE_IPTABLES) endef define IPROUTE2_BUILD_CMDS - $(SED) 's/$$(CCOPTS)//' $(@D)/netem/Makefile - $(TARGET_MAKE_ENV) LDFLAGS="$(TARGET_LDFLAGS)" $(MAKE) \ + $(TARGET_MAKE_ENV) LDFLAGS="$(TARGET_LDFLAGS)" \ + CFLAGS="$(TARGET_CFLAGS) -DXT_LIB_DIR=\\\"/usr/lib/xtables\\\"" \ + CBUILD_CFLAGS="$(HOST_CFLAGS)" $(MAKE) V=1 LIBDB_LIBS=-lpthread \ DBM_INCLUDE="$(STAGING_DIR)/usr/include" \ - CCOPTS="$(TARGET_CFLAGS) -D_GNU_SOURCE" \ SHARED_LIBS="$(if $(BR2_STATIC_LIBS),n,y)" -C $(@D) endef define IPROUTE2_INSTALL_TARGET_CMDS - $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" \ - SBINDIR=/sbin \ - DOCDIR=/usr/share/doc/iproute2-$(IPROUTE2_VERSION) \ - MANDIR=/usr/share/man install - $(IPROUTE2_REMOVE_IFCFG) + $(TARGET_MAKE_ENV) DESTDIR="$(TARGET_DIR)" $(MAKE) -C $(@D) install endef $(eval $(generic-package)) diff --git a/buildroot/package/iprutils/Config.in b/buildroot/package/iprutils/Config.in index 0143b53ae69..2938da0ee03 100644 --- a/buildroot/package/iprutils/Config.in +++ b/buildroot/package/iprutils/Config.in @@ -1,7 +1,6 @@ config BR2_PACKAGE_IPRUTILS bool "iprutils" depends on BR2_USE_MMU # fork() - depends on !BR2_bfin # pciutils select BR2_PACKAGE_NCURSES select BR2_PACKAGE_LIBSYSFS select BR2_PACKAGE_PCIUTILS diff --git a/buildroot/package/ipsec-tools/Config.in b/buildroot/package/ipsec-tools/Config.in index 1635675a36b..59154123e65 100644 --- a/buildroot/package/ipsec-tools/Config.in +++ b/buildroot/package/ipsec-tools/Config.in @@ -57,17 +57,17 @@ config BR2_PACKAGE_IPSEC_TOOLS_HYBRID choice prompt "Security context" - default BR2_PACKAGE_IPSEC_SECCTX_DISABLE + default BR2_PACKAGE_IPSEC_TOOLS_SECCTX_DISABLE help Selects whether or not to enable security context support. -config BR2_PACKAGE_IPSEC_SECCTX_DISABLE +config BR2_PACKAGE_IPSEC_TOOLS_SECCTX_DISABLE bool "Disable security context support" -config BR2_PACKAGE_IPSEC_SECCTX_ENABLE +config BR2_PACKAGE_IPSEC_TOOLS_SECCTX_ENABLE bool "Enable SELinux security context support" -config BR2_PACKAGE_IPSEC_SECCTX_KERNEL +config BR2_PACKAGE_IPSEC_TOOLS_SECCTX_KERNEL bool "Enable kernel security context" endchoice diff --git a/buildroot/package/ipsec-tools/ipsec-tools.mk b/buildroot/package/ipsec-tools/ipsec-tools.mk index c0b180de554..ddae9a75f3a 100644 --- a/buildroot/package/ipsec-tools/ipsec-tools.mk +++ b/buildroot/package/ipsec-tools/ipsec-tools.mk @@ -68,13 +68,13 @@ else IPSEC_TOOLS_CONF_OPTS += --disable-hybrid endif -ifeq ($(BR2_PACKAGE_IPSEC_SECCTX_DISABLE),y) +ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_SECCTX_DISABLE),y) IPSEC_TOOLS_CONF_OPTS += --enable-security-context=no endif -ifeq ($(BR2_PACKAGE_IPSEC_SECCTX_ENABLE),y) +ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_SECCTX_ENABLE),y) IPSEC_TOOLS_CONF_OPTS += --enable-security-context=yes endif -ifeq ($(BR2_PACKAGE_IPSEC_SECCTX_KERNEL),y) +ifeq ($(BR2_PACKAGE_IPSEC_TOOLS_SECCTX_KERNEL),y) IPSEC_TOOLS_CONF_OPTS += --enable-security-context=kernel endif diff --git a/buildroot/package/ipset/0001-Replace-the-last-reference-to-u_int8_t-with-uint8_t.patch b/buildroot/package/ipset/0001-Replace-the-last-reference-to-u_int8_t-with-uint8_t.patch deleted file mode 100644 index 84863e6e137..00000000000 --- a/buildroot/package/ipset/0001-Replace-the-last-reference-to-u_int8_t-with-uint8_t.patch +++ /dev/null @@ -1,28 +0,0 @@ -From a4212bf911026740afc7fce98d9100e2ef5dcea0 Mon Sep 17 00:00:00 2001 -From: Jozsef Kadlecsik -Date: Tue, 26 Sep 2017 07:00:13 +0200 -Subject: [PATCH] Replace the last reference to u_int8_t with uint8_t. - -Signed-off-by: Baruch Siach ---- -Upstream status: commit a4212bf911026740 - - src/ipset.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/ipset.c b/src/ipset.c -index 79f56b869ea7..df0778a92d8b 100644 ---- a/src/ipset.c -+++ b/src/ipset.c -@@ -282,7 +282,7 @@ call_parser(int *argc, char *argv[], const struct ipset_type *type, - const struct ipset_arg *arg; - const char *optstr; - const struct ipset_type *t = type; -- u_int8_t revision = type->revision; -+ uint8_t revision = type->revision; - int ret = 0, i = 1; - - /* Currently CREATE and ADT may have got additional arguments */ --- -2.14.2 - diff --git a/buildroot/package/ipset/ipset.hash b/buildroot/package/ipset/ipset.hash index dcd709e8c11..9185d94d857 100644 --- a/buildroot/package/ipset/ipset.hash +++ b/buildroot/package/ipset/ipset.hash @@ -1,6 +1,6 @@ -# From http://ftp.netfilter.org/pub/ipset/ipset-6.34.tar.bz2.md5sum.txt -md5 51bd03f976a1501fd45e1d71a1e2e6bf ipset-6.34.tar.bz2 +# From http://ftp.netfilter.org/pub/ipset/ipset-6.36.tar.bz2.md5sum.txt +md5 fda041afefd581464e445b87beeb0681 ipset-6.36.tar.bz2 # Calculated based on the hash above -sha256 d70e831b670b7aa25dde81fd994d3a7ce0c0e801559a557105576df66cd8d680 ipset-6.34.tar.bz2 +sha256 22224a90dc6c7d97b7a7addedd0740c3841e3d9a7ff8c8d2123bae0c3620d30d ipset-6.36.tar.bz2 # Locally calculated sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/buildroot/package/ipset/ipset.mk b/buildroot/package/ipset/ipset.mk index d7299568e59..e9f8165fabe 100644 --- a/buildroot/package/ipset/ipset.mk +++ b/buildroot/package/ipset/ipset.mk @@ -4,7 +4,7 @@ # ################################################################################ -IPSET_VERSION = 6.34 +IPSET_VERSION = 6.36 IPSET_SOURCE = ipset-$(IPSET_VERSION).tar.bz2 IPSET_SITE = http://ipset.netfilter.org IPSET_DEPENDENCIES = libmnl host-pkgconf diff --git a/buildroot/package/iptables/0001-extensions-libxt_bpf-Fix-build-with-old-kernel-versi.patch b/buildroot/package/iptables/0001-extensions-libxt_bpf-Fix-build-with-old-kernel-versi.patch new file mode 100644 index 00000000000..966cbe31ab6 --- /dev/null +++ b/buildroot/package/iptables/0001-extensions-libxt_bpf-Fix-build-with-old-kernel-versi.patch @@ -0,0 +1,49 @@ +From 5beb1582d13d3bfdd0d2b277f5f3154b2fbf4a8e Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Tue, 27 Feb 2018 16:56:55 +0100 +Subject: [PATCH] extensions: libxt_bpf: Fix build with old kernel versions + +In kernel 3.18 the union bpf_attr does not have a pathname attribute and +BPF_OBJ_GET is also not defined in these versions. +This was added in Linux commit b2197755b263 ("bpf: add support for +persistent maps/progs"). Check for the BPF_FS_MAGIC define which was +also added in this Linux commit and only activate this code in case we +find that define. + +This fixes a build problem with Linux 3.18. +Netfilter bug: #1231 + +Fixes: f17f9ace8a8 ("extensions: libxt_bpf: support ebpf pinned objects") +Signed-off-by: Hauke Mehrtens +Signed-off-by: Pablo Neira Ayuso +Signed-off-by: Baruch Siach +--- +Patch status: upstream commit 5beb1582d13d + + extensions/libxt_bpf.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/extensions/libxt_bpf.c b/extensions/libxt_bpf.c +index 9510c190f315..92958247c756 100644 +--- a/extensions/libxt_bpf.c ++++ b/extensions/libxt_bpf.c +@@ -22,6 +22,7 @@ + #include + #endif + ++#include + #include + + #define BCODE_FILE_MAX_LEN_B 1024 +@@ -62,7 +63,7 @@ static const struct xt_option_entry bpf_opts_v1[] = { + + static int bpf_obj_get(const char *filepath) + { +-#if defined HAVE_LINUX_BPF_H && defined __NR_bpf ++#if defined HAVE_LINUX_BPF_H && defined __NR_bpf && defined BPF_FS_MAGIC + union bpf_attr attr; + + memset(&attr, 0, sizeof(attr)); +-- +2.16.1 + diff --git a/buildroot/package/iptables/0001-utils-nfsynproxy-fix-build-with-musl-libc.patch b/buildroot/package/iptables/0001-utils-nfsynproxy-fix-build-with-musl-libc.patch deleted file mode 100644 index 1f86ad13549..00000000000 --- a/buildroot/package/iptables/0001-utils-nfsynproxy-fix-build-with-musl-libc.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 06e0312d0bfd1f0b9e7c23ab654f18524d49e86b Mon Sep 17 00:00:00 2001 -From: Baruch Siach -Date: Thu, 2 Mar 2017 09:20:48 +0200 -Subject: [PATCH] utils: nfsynproxy: fix build with musl libc - -The musl libc exposes some struct tcphdr field only when _GNU_SOURCE is -defined. Fix the following build failure: - -nfsynproxy.c: In function 窶湾arse_packet窶: -nfsynproxy.c:34:9: error: 窶歪onst struct tcphdr窶 has no member named 窶syn窶 - if (!th->syn || !th->ack) - ^ -nfsynproxy.c:34:21: error: 窶歪onst struct tcphdr窶 has no member named 窶和ck窶 - if (!th->syn || !th->ack) - ^ -nfsynproxy.c:42:8: error: 窶歪onst struct tcphdr窶 has no member named 窶腕es2窶 - if (th->res2 == 0x1) - ^ -nfsynproxy.c:45:13: error: 窶歪onst struct tcphdr窶 has no member named 窶賄off窶 - length = th->doff * 4 - sizeof(*th); - ^ - -Signed-off-by: Baruch Siach ---- -Upstream status: pending (http://patchwork.ozlabs.org/patch/734503/) - - utils/nfsynproxy.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/utils/nfsynproxy.c b/utils/nfsynproxy.c -index baedc92c5d9f..bf5c416340f1 100644 ---- a/utils/nfsynproxy.c -+++ b/utils/nfsynproxy.c -@@ -6,6 +6,7 @@ - * published by the Free Software Foundation. - */ - -+#define _GNU_SOURCE - #include - #include - #include --- -2.11.0 - diff --git a/buildroot/package/iptables/iptables.hash b/buildroot/package/iptables/iptables.hash index b673c8abdbb..8b191797fb8 100644 --- a/buildroot/package/iptables/iptables.hash +++ b/buildroot/package/iptables/iptables.hash @@ -1,3 +1,3 @@ -# From ftp://ftp.netfilter.org/pub/iptables/iptables-1.6.1.tar.bz2.{md5sum,sha1sum} -md5 ab38a33806b6182c6f53d6afb4619add iptables-1.6.1.tar.bz2 -sha1 b2592490ca7a6c2cd0f069e167a4337c86acdf91 iptables-1.6.1.tar.bz2 +# From ftp://ftp.netfilter.org/pub/iptables/iptables-1.6.2.tar.bz2.{md5sum,sha1sum} +md5 7d2b7847e4aa8832a18437b8a4c1873d iptables-1.6.2.tar.bz2 +sha1 6279effbf8f2c7ff53d19ae13308f8a6e6a60dd9 iptables-1.6.2.tar.bz2 diff --git a/buildroot/package/iptables/iptables.mk b/buildroot/package/iptables/iptables.mk index 44cfde2b9a6..49a537f6080 100644 --- a/buildroot/package/iptables/iptables.mk +++ b/buildroot/package/iptables/iptables.mk @@ -4,7 +4,7 @@ # ################################################################################ -IPTABLES_VERSION = 1.6.1 +IPTABLES_VERSION = 1.6.2 IPTABLES_SOURCE = iptables-$(IPTABLES_VERSION).tar.bz2 IPTABLES_SITE = http://ftp.netfilter.org/pub/iptables IPTABLES_INSTALL_STAGING = YES diff --git a/buildroot/package/iqvlinux/Config.in b/buildroot/package/iqvlinux/Config.in deleted file mode 100644 index 89599557457..00000000000 --- a/buildroot/package/iqvlinux/Config.in +++ /dev/null @@ -1,18 +0,0 @@ -config BR2_PACKAGE_IQVLINUX - bool "iqvlinux" - depends on BR2_LINUX_KERNEL - help - Intel Ethernet Adapter Debug Driver for Linux (iqvlinux), - which supports kernel versions 2.6.x up through 4.0.x. - - This debug driver supports all Intel's networking Tools based - on the SDK version 2.19.36.0 or higher which support Intel - Ethernet chip including e1000, e1000e, i210... - - Note: This driver requires PCI support to be enabled - (i.e. CONFIG_PCI). - - http://sourceforge.net/projects/e1000/files/iqvlinux/ - -comment "iqvlinux needs a Linux kernel to be built" - depends on !BR2_LINUX_KERNEL diff --git a/buildroot/package/iqvlinux/iqvlinux.hash b/buildroot/package/iqvlinux/iqvlinux.hash deleted file mode 100644 index ddf57b712c5..00000000000 --- a/buildroot/package/iqvlinux/iqvlinux.hash +++ /dev/null @@ -1,5 +0,0 @@ -# From http://sourceforge.net/projects/e1000/files/iqvlinux/1.1.5.3/ -sha1 bd94416e4364015dbbd78a22e51080bf7ea81fac iqvlinux.tar.gz -md5 fb6a2a4dc122d39070fcb06985c97a05 iqvlinux.tar.gz -# locally computed -sha256 8cb19f3bfe040100a13bb2d05cb2b54f2b259e55cef23f8cc5aa6f2f31e98bec iqvlinux.tar.gz diff --git a/buildroot/package/iqvlinux/iqvlinux.mk b/buildroot/package/iqvlinux/iqvlinux.mk deleted file mode 100644 index 165c7c4687a..00000000000 --- a/buildroot/package/iqvlinux/iqvlinux.mk +++ /dev/null @@ -1,21 +0,0 @@ -################################################################################ -# -# iqvlinux -# -################################################################################ - -IQVLINUX_VERSION = 1.1.5.3 -IQVLINUX_SITE = http://sourceforge.net/projects/e1000/files/iqvlinux/$(IQVLINUX_VERSION) -IQVLINUX_SOURCE = iqvlinux.tar.gz - -IQVLINUX_LICENSE = GPL-2.0, BSD-3-Clause -IQVLINUX_LICENSE_FILES = \ - COPYING src/linux/driver/files.txt \ - inc/linux/files.txt inc/files.txt - -IQVLINUX_MODULE_MAKE_OPTS = NALDIR=$(@D) KSRC=$(LINUX_DIR) CC=$(TARGET_CC) - -IQVLINUX_MODULE_SUBDIRS = src/linux/driver - -$(eval $(kernel-module)) -$(eval $(generic-package)) diff --git a/buildroot/package/irrlicht/irrlicht.mk b/buildroot/package/irrlicht/irrlicht.mk index ccd1045ca0a..a1e190d98d1 100644 --- a/buildroot/package/irrlicht/irrlicht.mk +++ b/buildroot/package/irrlicht/irrlicht.mk @@ -25,7 +25,7 @@ IRRLICHT_SUBDIR = source/Irrlicht IRRLICHT_DEPENDENCIES = libgl xlib_libXxf86vm define IRRLICHT_EXTRACT_CMDS - $(UNZIP) -d $(@D) $(DL_DIR)/$(IRRLICHT_SOURCE) + $(UNZIP) -d $(@D) $(IRRLICHT_DL_DIR)/$(IRRLICHT_SOURCE) mv $(@D)/irrlicht-$(IRRLICHT_VERSION)/* $(@D) $(RM) -r $(@D)/irrlicht-$(IRRLICHT_VERSION) endef diff --git a/buildroot/package/irssi/irssi.hash b/buildroot/package/irssi/irssi.hash index 83dde00352b..0f298137ba7 100644 --- a/buildroot/package/irssi/irssi.hash +++ b/buildroot/package/irssi/irssi.hash @@ -1,4 +1,4 @@ # Locally calculated after checking pgp signature -sha256 029e884f3ebf337f7266d8ed4e1a035ca56d9f85015d74c868b488f279de8585 irssi-1.0.6.tar.xz +sha256 1b386ca026aa1875c380fd00ef1d24b71fb87cdae39ef5349ecca16c4567feac irssi-1.0.7.tar.xz # Locally calculated sha256 a1a27cb2ecee8d5378fbb3562f577104a445d6d66fee89286e16758305e63e2b COPYING diff --git a/buildroot/package/irssi/irssi.mk b/buildroot/package/irssi/irssi.mk index d49b5d7e467..611365f88ed 100644 --- a/buildroot/package/irssi/irssi.mk +++ b/buildroot/package/irssi/irssi.mk @@ -4,7 +4,7 @@ # ################################################################################ -IRSSI_VERSION = 1.0.6 +IRSSI_VERSION = 1.0.7 IRSSI_SOURCE = irssi-$(IRSSI_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. diff --git a/buildroot/package/iw/iw.hash b/buildroot/package/iw/iw.hash index 414f34225f7..6423df77325 100644 --- a/buildroot/package/iw/iw.hash +++ b/buildroot/package/iw/iw.hash @@ -1,2 +1,4 @@ # From https://www.kernel.org/pub/software/network/iw/sha256sums.asc -sha256 324cc805fad52cba2c16b9ab569906889fb645cc962aac4cfda1db85d2de97ce iw-4.9.tar.xz +sha256 f01671c0074bfdec082a884057edba1b9efd35c89eda554638496f03b769ad89 iw-4.14.tar.xz +# Locally calculated +sha256 5932fb70481e128940168a5fdf133e6454293c0865c7e757874b235cb6daa2af COPYING diff --git a/buildroot/package/iw/iw.mk b/buildroot/package/iw/iw.mk index aa85cbb5b90..8264e8b5dcc 100644 --- a/buildroot/package/iw/iw.mk +++ b/buildroot/package/iw/iw.mk @@ -4,20 +4,19 @@ # ################################################################################ -IW_VERSION = 4.9 +IW_VERSION = 4.14 IW_SOURCE = iw-$(IW_VERSION).tar.xz IW_SITE = $(BR2_KERNEL_MIRROR)/software/network/iw IW_LICENSE = ISC IW_LICENSE_FILES = COPYING IW_DEPENDENCIES = host-pkgconf libnl -IW_MAKE_OPTS = CC="$(TARGET_CC)" LD="$(TARGET_LD)" LDFLAGS="$(TARGET_LDFLAGS)" IW_MAKE_ENV = \ $(TARGET_MAKE_ENV) \ PKG_CONFIG="$(HOST_DIR)/bin/pkg-config" \ GIT_DIR=$(IW_DIR) define IW_BUILD_CMDS - $(IW_MAKE_ENV) $(MAKE) $(IW_MAKE_OPTS) -C $(@D) + $(IW_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) endef define IW_INSTALL_TARGET_CMDS diff --git a/buildroot/package/jamvm/Config.in b/buildroot/package/jamvm/Config.in index 57e1a8e6f44..7717ccaadb7 100644 --- a/buildroot/package/jamvm/Config.in +++ b/buildroot/package/jamvm/Config.in @@ -1,10 +1,17 @@ +config BR2_PACKAGE_JAMVM_ARCH_SUPPORTS + bool + default y if BR2_arm || BR2_armeb + default y if BR2_i386 || BR2_x86_64 + default y if (BR2_mips || BR2_mipsel) \ + && (BR2_MIPS_FP32_MODE_32 || BR2_MIPS_SOFT_FLOAT) + default y if BR2_powerpc + config BR2_PACKAGE_JAMVM bool "jamvm" + depends on BR2_PACKAGE_JAMVM_ARCH_SUPPORTS + depends on BR2_PACKAGE_CLASSPATH_ARCH_SUPPORTS depends on BR2_TOOLCHAIN_HAS_THREADS depends on !BR2_STATIC_LIBS - depends on BR2_arm || BR2_armeb || BR2_i386 || BR2_x86_64 \ - || BR2_mips || BR2_mipsel || BR2_powerpc - depends on BR2_PACKAGE_CLASSPATH_ARCH_SUPPORTS select BR2_PACKAGE_ZLIB select BR2_PACKAGE_CLASSPATH help @@ -14,7 +21,6 @@ config BR2_PACKAGE_JAMVM http://jamvm.sf.net comment "jamvm needs a toolchain w/ threads, dynamic library" - depends on BR2_arm || BR2_armeb || BR2_i386 || BR2_x86_64 \ - || BR2_mips || BR2_mipsel || BR2_powerpc + depends on BR2_PACKAGE_JAMVM_ARCH_SUPPORTS depends on BR2_PACKAGE_CLASSPATH_ARCH_SUPPORTS depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS diff --git a/buildroot/package/janus-gateway/Config.in b/buildroot/package/janus-gateway/Config.in index 5bd4e9586bd..94c00cd34ac 100644 --- a/buildroot/package/janus-gateway/Config.in +++ b/buildroot/package/janus-gateway/Config.in @@ -19,21 +19,21 @@ if BR2_PACKAGE_JANUS_GATEWAY comment "plugins" -config BR2_PACKAGE_JANUS_AUDIO_BRIDGE +config BR2_PACKAGE_JANUS_GATEWAY_AUDIO_BRIDGE bool "audio bridge" select BR2_PACKAGE_OPUS -config BR2_PACKAGE_JANUS_ECHO_TEST +config BR2_PACKAGE_JANUS_GATEWAY_ECHO_TEST bool "echo test" -config BR2_PACKAGE_JANUS_RECORDPLAY +config BR2_PACKAGE_JANUS_GATEWAY_RECORDPLAY bool "record and play" -config BR2_PACKAGE_JANUS_SIP_GATEWAY +config BR2_PACKAGE_JANUS_GATEWAY_SIP_GATEWAY bool "sip gateway" select BR2_PACKAGE_SOFIA_SIP -config BR2_PACKAGE_JANUS_STREAMING +config BR2_PACKAGE_JANUS_GATEWAY_STREAMING bool "streaming" # SO_REUSEPORT depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 @@ -41,22 +41,22 @@ config BR2_PACKAGE_JANUS_STREAMING comment "streaming plugin needs a toolchain w/ headers >= 3.9" depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9 -config BR2_PACKAGE_JANUS_TEXT_ROOM +config BR2_PACKAGE_JANUS_GATEWAY_TEXT_ROOM bool "text room" -config BR2_PACKAGE_JANUS_VIDEO_CALL +config BR2_PACKAGE_JANUS_GATEWAY_VIDEO_CALL bool "video call" -config BR2_PACKAGE_JANUS_VIDEO_ROOM +config BR2_PACKAGE_JANUS_GATEWAY_VIDEO_ROOM bool "video room" -config BR2_PACKAGE_JANUS_VOICE_MAIL +config BR2_PACKAGE_JANUS_GATEWAY_VOICE_MAIL bool "voice mail" select BR2_PACKAGE_LIBOGG comment "transports" -config BR2_PACKAGE_JANUS_MQTT +config BR2_PACKAGE_JANUS_GATEWAY_MQTT bool "MQTT" depends on !BR2_STATIC_LIBS depends on BR2_TOOLCHAIN_HAS_THREADS @@ -65,7 +65,7 @@ config BR2_PACKAGE_JANUS_MQTT comment "MQTT transport needs a toolchain w/ threads and dynamic library support" depends on BR2_STATIC_LIBS || !BR2_TOOLCHAIN_HAS_THREADS -config BR2_PACKAGE_JANUS_RABBITMQ +config BR2_PACKAGE_JANUS_GATEWAY_RABBITMQ bool "RabbitMQ" depends on BR2_TOOLCHAIN_HAS_THREADS select BR2_PACKAGE_RABBITMQ_C @@ -73,7 +73,7 @@ config BR2_PACKAGE_JANUS_RABBITMQ comment "RabbitMQ transport needs a toolchain w/ threads" depends on !BR2_TOOLCHAIN_HAS_THREADS -config BR2_PACKAGE_JANUS_REST +config BR2_PACKAGE_JANUS_GATEWAY_REST bool "REST (HTTP/HTTPS)" depends on BR2_TOOLCHAIN_HAS_THREADS select BR2_PACKAGE_LIBMICROHTTPD @@ -81,11 +81,11 @@ config BR2_PACKAGE_JANUS_REST comment "REST transport needs a toolchain w/ threads" depends on !BR2_TOOLCHAIN_HAS_THREADS -config BR2_PACKAGE_JANUS_UNIX_SOCKETS +config BR2_PACKAGE_JANUS_GATEWAY_UNIX_SOCKETS bool "Unix Sockets" default y -config BR2_PACKAGE_JANUS_WEBSOCKETS +config BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS bool "WebSockets" depends on BR2_USE_MMU select BR2_PACKAGE_LIBWEBSOCKETS diff --git a/buildroot/package/janus-gateway/janus-gateway.mk b/buildroot/package/janus-gateway/janus-gateway.mk index c37cda08607..261fc25202d 100644 --- a/buildroot/package/janus-gateway/janus-gateway.mk +++ b/buildroot/package/janus-gateway/janus-gateway.mk @@ -26,91 +26,91 @@ JANUS_GATEWAY_CONF_OPTS = \ --disable-data-channels \ --disable-sample-event-handler -ifeq ($(BR2_PACKAGE_JANUS_AUDIO_BRIDGE),y) +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_ECHO_TEST),y) +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_RECORDPLAY),y) +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_SIP_GATEWAY),y) +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_STREAMING),y) +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_TEXT_ROOM),y) +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_VIDEO_CALL),y) +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_VIDEO_ROOM),y) +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_VOICE_MAIL),y) +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_VOICE_MAIL),y) JANUS_GATEWAY_DEPENDENCIES += libogg JANUS_GATEWAY_CONF_OPTS += --enable-plugin-voicemail else JANUS_GATEWAY_CONF_OPTS += --disable-plugin-voicemail endif -ifeq ($(BR2_PACKAGE_JANUS_MQTT),y) +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_RABBITMQ),y) +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_REST),y) +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_UNIX_SOCKETS),y) +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_WEBSOCKETS),y) +ifeq ($(BR2_PACKAGE_JANUS_GATEWAY_WEBSOCKETS),y) JANUS_GATEWAY_DEPENDENCIES += libwebsockets JANUS_GATEWAY_CONF_OPTS += --enable-websockets else diff --git a/buildroot/package/jimtcl/jimtcl.mk b/buildroot/package/jimtcl/jimtcl.mk index 68c8a914db8..389a72ab830 100644 --- a/buildroot/package/jimtcl/jimtcl.mk +++ b/buildroot/package/jimtcl/jimtcl.mk @@ -44,9 +44,13 @@ endif # pkg-autotools.mk 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 \ + $(TARGET_CONFIGURE_OPTS) \ + CCACHE=none \ + $(if $(BR2_INSTALL_LIBSTDCPP),,CXX=false) \ ./configure --prefix=/usr \ --host=$(GNU_TARGET_NAME) \ --build=$(GNU_HOST_NAME) \ diff --git a/buildroot/package/jquery-mobile/jquery-mobile.mk b/buildroot/package/jquery-mobile/jquery-mobile.mk index 10679529041..1171e60d0a2 100644 --- a/buildroot/package/jquery-mobile/jquery-mobile.mk +++ b/buildroot/package/jquery-mobile/jquery-mobile.mk @@ -10,7 +10,7 @@ JQUERY_MOBILE_SOURCE = jquery.mobile-$(JQUERY_MOBILE_VERSION).zip JQUERY_MOBILE_LICENSE = MIT define JQUERY_MOBILE_EXTRACT_CMDS - $(UNZIP) -d $(@D) $(DL_DIR)/$(JQUERY_MOBILE_SOURCE) + $(UNZIP) -d $(@D) $(JQUERY_MOBILE_DL_DIR)/$(JQUERY_MOBILE_SOURCE) endef JQUERY_MOBILE_INSTALLED_FILES = \ diff --git a/buildroot/package/jquery-sparkline/jquery-sparkline.mk b/buildroot/package/jquery-sparkline/jquery-sparkline.mk index 165c2fa99c9..683d84f4aa8 100644 --- a/buildroot/package/jquery-sparkline/jquery-sparkline.mk +++ b/buildroot/package/jquery-sparkline/jquery-sparkline.mk @@ -10,7 +10,7 @@ JQUERY_SPARKLINE_SOURCE = jquery.sparkline.min.js JQUERY_SPARKLINE_LICENSE = BSD-3-Clause define JQUERY_SPARKLINE_EXTRACT_CMDS - cp $(DL_DIR)/$(JQUERY_SPARKLINE_SOURCE) $(@D) + cp $(JQUERY_SPARKLINE_DL_DIR)/$(JQUERY_SPARKLINE_SOURCE) $(@D) endef define JQUERY_SPARKLINE_INSTALL_TARGET_CMDS diff --git a/buildroot/package/jquery-ui-themes/Config.in b/buildroot/package/jquery-ui-themes/Config.in index fde3014602d..29359544ac3 100644 --- a/buildroot/package/jquery-ui-themes/Config.in +++ b/buildroot/package/jquery-ui-themes/Config.in @@ -13,105 +13,105 @@ choice help Specify the jQuery UI theme to install. -config BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE +config BR2_PACKAGE_JQUERY_UI_THEMES_BLACK_TIE bool "black-tie" -config BR2_PACKAGE_JQUERY_UI_THEME_BLITZER +config BR2_PACKAGE_JQUERY_UI_THEMES_BLITZER bool "blitzer" -config BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO +config BR2_PACKAGE_JQUERY_UI_THEMES_CUPERTINO bool "cupertino" -config BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE +config BR2_PACKAGE_JQUERY_UI_THEMES_DARK_HIVE bool "dark-hive" -config BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV +config BR2_PACKAGE_JQUERY_UI_THEMES_DOT_LUV bool "dot-luv" -config BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT +config BR2_PACKAGE_JQUERY_UI_THEMES_EGGPLANT bool "eggplant" -config BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE +config BR2_PACKAGE_JQUERY_UI_THEMES_EXCITE_BIKE bool "excite-bike" -config BR2_PACKAGE_JQUERY_UI_THEME_FLICK +config BR2_PACKAGE_JQUERY_UI_THEMES_FLICK bool "flick" -config BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS +config BR2_PACKAGE_JQUERY_UI_THEMES_HOT_SNEAKS bool "hot-sneaks" -config BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY +config BR2_PACKAGE_JQUERY_UI_THEMES_HUMANITY bool "humanity" -config BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG +config BR2_PACKAGE_JQUERY_UI_THEMES_LE_FROG bool "le-frog" -config BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC +config BR2_PACKAGE_JQUERY_UI_THEMES_MINT_CHOC bool "mint-choc" -config BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST +config BR2_PACKAGE_JQUERY_UI_THEMES_OVERCAST bool "overcast" -config BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER +config BR2_PACKAGE_JQUERY_UI_THEMES_PEPPER_GRINDER bool "pepper-grinder" -config BR2_PACKAGE_JQUERY_UI_THEME_REDMOND +config BR2_PACKAGE_JQUERY_UI_THEMES_REDMOND bool "redmond" -config BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS +config BR2_PACKAGE_JQUERY_UI_THEMES_SMOOTHNESS bool "smoothness" -config BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET +config BR2_PACKAGE_JQUERY_UI_THEMES_SOUTH_STREET bool "south-street" -config BR2_PACKAGE_JQUERY_UI_THEME_START +config BR2_PACKAGE_JQUERY_UI_THEMES_START bool "start" -config BR2_PACKAGE_JQUERY_UI_THEME_SUNNY +config BR2_PACKAGE_JQUERY_UI_THEMES_SUNNY bool "sunny" -config BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE +config BR2_PACKAGE_JQUERY_UI_THEMES_SWANKY_PURSE bool "swanky-purse" -config BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC +config BR2_PACKAGE_JQUERY_UI_THEMES_TRONTASTIC bool "trontastic" -config BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS +config BR2_PACKAGE_JQUERY_UI_THEMES_UI_DARKNESS bool "ui-darkness" -config BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS +config BR2_PACKAGE_JQUERY_UI_THEMES_UI_LIGHTNESS bool "ui-lightness" -config BR2_PACKAGE_JQUERY_UI_THEME_VADER +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_THEME_BLACK_TIE - default "blitzer" if BR2_PACKAGE_JQUERY_UI_THEME_BLITZER - default "cupertino" if BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO - default "dark-hive" if BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE - default "dot-luv" if BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV - default "eggplant" if BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT - default "excite-bike" if BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE - default "flick" if BR2_PACKAGE_JQUERY_UI_THEME_FLICK - default "hot-sneaks" if BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS - default "humanity" if BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY - default "le-frog" if BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG - default "mint-choc" if BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC - default "overcast" if BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST - default "pepper-grinder" if BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER - default "redmond" if BR2_PACKAGE_JQUERY_UI_THEME_REDMOND - default "smoothness" if BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS - default "south-street" if BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET - default "start" if BR2_PACKAGE_JQUERY_UI_THEME_START - default "sunny" if BR2_PACKAGE_JQUERY_UI_THEME_SUNNY - default "swanky-purse" if BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE - default "trontastic" if BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC - default "ui-darkness" if BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS - default "ui-lightness" if BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS - default "vader" if BR2_PACKAGE_JQUERY_UI_THEME_UI_VADER + 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_UI_VADER endif diff --git a/buildroot/package/jquery-ui-themes/jquery-ui-themes.mk b/buildroot/package/jquery-ui-themes/jquery-ui-themes.mk index cd3dab6d876..5108389a77d 100644 --- a/buildroot/package/jquery-ui-themes/jquery-ui-themes.mk +++ b/buildroot/package/jquery-ui-themes/jquery-ui-themes.mk @@ -12,7 +12,7 @@ JQUERY_UI_THEMES_LICENSE_FILES = MIT-LICENSE.txt JQUERY_UI_THEMES_DEPENDENCIES = jquery-ui define JQUERY_UI_THEMES_EXTRACT_CMDS - $(UNZIP) -d $(@D) $(DL_DIR)/$(JQUERY_UI_THEMES_SOURCE) + $(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 diff --git a/buildroot/package/jquery-ui/jquery-ui.mk b/buildroot/package/jquery-ui/jquery-ui.mk index d829d6241bf..9284e683f1b 100644 --- a/buildroot/package/jquery-ui/jquery-ui.mk +++ b/buildroot/package/jquery-ui/jquery-ui.mk @@ -14,7 +14,7 @@ JQUERY_UI_LICENSE = MIT JQUERY_UI_LICENSE_FILES = MIT-LICENSE.txt define JQUERY_UI_EXTRACT_CMDS - $(UNZIP) -d $(@D) $(DL_DIR)/$(JQUERY_UI_SOURCE) + $(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 diff --git a/buildroot/package/jquery-validation/jquery-validation.mk b/buildroot/package/jquery-validation/jquery-validation.mk index 10d2a92afcc..a8c2897983e 100644 --- a/buildroot/package/jquery-validation/jquery-validation.mk +++ b/buildroot/package/jquery-validation/jquery-validation.mk @@ -11,7 +11,7 @@ JQUERY_VALIDATION_LICENSE = MIT JQUERY_VALIDATION_LICENSE_FILES = README.md define JQUERY_VALIDATION_EXTRACT_CMDS - $(UNZIP) -d $(@D) $(DL_DIR)/$(JQUERY_VALIDATION_SOURCE) + $(UNZIP) -d $(@D) $(JQUERY_VALIDATION_DL_DIR)/$(JQUERY_VALIDATION_SOURCE) endef define JQUERY_VALIDATION_INSTALL_TARGET_CMDS diff --git a/buildroot/package/jquery/jquery.mk b/buildroot/package/jquery/jquery.mk index 363ee096333..f75eded8b3d 100644 --- a/buildroot/package/jquery/jquery.mk +++ b/buildroot/package/jquery/jquery.mk @@ -10,7 +10,7 @@ JQUERY_SOURCE = jquery-$(JQUERY_VERSION).min.js JQUERY_LICENSE = MIT define JQUERY_EXTRACT_CMDS - cp $(DL_DIR)/$(JQUERY_SOURCE) $(@D) + cp $(JQUERY_DL_DIR)/$(JQUERY_SOURCE) $(@D) endef define JQUERY_INSTALL_TARGET_CMDS diff --git a/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.hash b/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.hash index 7f394aaee72..04a520d7d76 100644 --- a/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.hash +++ b/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 402464cd6d50c81bb6a683d07c537e5a8c4684fd1186826d3aa1385ce6adac13 json-v3.0.1.tar.gz -sha256 6a6115fc4a7239a135f2dce8d33f94cb8a936b8f608ac0f6699fbac278b0dd5b LICENSE.MIT +sha256 b20be343922f73504baf8a01543c2a42d16e01f18bb231b324a8959416ccf4f8 json-v3.1.0.tar.gz +sha256 7b875bb7a4e28abb7956ea821b4b7d88ff6a2a4fabf261c3993730a365ec56dd LICENSE.MIT diff --git a/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.mk b/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.mk index 6413d6255f8..406f8ad1f40 100644 --- a/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.mk +++ b/buildroot/package/json-for-modern-cpp/json-for-modern-cpp.mk @@ -4,7 +4,7 @@ # ################################################################################ -JSON_FOR_MODERN_CPP_VERSION = v3.0.1 +JSON_FOR_MODERN_CPP_VERSION = v3.1.0 JSON_FOR_MODERN_CPP_SOURCE = json-${JSON_FOR_MODERN_CPP_VERSION}.tar.gz JSON_FOR_MODERN_CPP_SITE = $(call github,nlohmann,json,$(JSON_FOR_MODERN_CPP_VERSION)) JSON_FOR_MODERN_CPP_LICENSE = MIT diff --git a/buildroot/package/jsoncpp/jsoncpp.hash b/buildroot/package/jsoncpp/jsoncpp.hash index 09ceb58553c..3391d9ecc35 100644 --- a/buildroot/package/jsoncpp/jsoncpp.hash +++ b/buildroot/package/jsoncpp/jsoncpp.hash @@ -1,2 +1,3 @@ # Locally computed -sha256 3671ba6051e0f30849942cc66d1798fdf0362d089343a83f704c09ee7156604f jsoncpp-1.8.3.tar.gz +sha256 c49deac9e0933bcb7044f08516861a2d560988540b23de2ac1ad443b219afdb6 jsoncpp-1.8.4.tar.gz +sha256 95039d77a20e75b428207740d9a8f97b2dce3c89da4b21f1ad862b5997160e0a LICENSE diff --git a/buildroot/package/jsoncpp/jsoncpp.mk b/buildroot/package/jsoncpp/jsoncpp.mk index 6dfaecefddf..2b527fc3033 100644 --- a/buildroot/package/jsoncpp/jsoncpp.mk +++ b/buildroot/package/jsoncpp/jsoncpp.mk @@ -4,7 +4,7 @@ # ################################################################################ -JSONCPP_VERSION = 1.8.3 +JSONCPP_VERSION = 1.8.4 JSONCPP_SITE = $(call github,open-source-parsers,jsoncpp,$(JSONCPP_VERSION)) JSONCPP_LICENSE = Public Domain or MIT JSONCPP_LICENSE_FILES = LICENSE @@ -15,4 +15,10 @@ JSONCPP_CONF_OPTS += \ -DJSONCPP_WITH_TESTS=OFF \ -DJSONCPP_WITH_STRICT_ISO=OFF +ifeq ($(BR2_SHARED_LIBS),y) +JSONCPP_CONF_OPTS += -DBUILD_STATIC_LIBS=OFF +else +JSONCPP_CONF_OPTS += -DBUILD_STATIC_LIBS=ON +endif + $(eval $(cmake-package)) diff --git a/buildroot/package/keepalived/0001-Fix-build-with-Linux-kernel-headers-v4.15.patch b/buildroot/package/keepalived/0001-Fix-build-with-Linux-kernel-headers-v4.15.patch deleted file mode 100644 index b5f21cb40a4..00000000000 --- a/buildroot/package/keepalived/0001-Fix-build-with-Linux-kernel-headers-v4.15.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 15f93dd90484532e25c8f3e43fb34a361a79d7f2 Mon Sep 17 00:00:00 2001 -From: Baruch Siach -Date: Fri, 9 Feb 2018 11:55:19 +0200 -Subject: [PATCH] Fix build with Linux kernel headers v4.15 - -Linux kernel version 4.15 changed the libc/kernel headers suppression -logic in a way that introduces collisions: - -In file included from ./../include/vrrp_ipaddress.h:32:0, - from ./../include/vrrp_arp.h:31, - from vrrp.c:29: -/home/peko/autobuild/instance-1/output/host/arc-buildroot-linux-uclibc/sysroot/usr/include/linux/in.h:29:3: error: redeclaration of enumerator 'IPPROTO_IP' - IPPROTO_IP = 0, /* Dummy protocol for TCP */ - ^ -/home/peko/autobuild/instance-1/output/host/arc-buildroot-linux-uclibc/sysroot/usr/include/netinet/in.h:33:5: note: previous definition of 'IPPROTO_IP' was here - IPPROTO_IP = 0, /* Dummy protocol for TCP. */ - ^~~~~~~~~~ - -Include the libc netinet/in.h header first to suppress the kernel -header. - -In addition, add _GNU_SOURCE to vrrp.c for the libc provided in6_pktinfo -definition. - -Signed-off-by: Baruch Siach ---- -Upstream status: https://github.com/acassen/keepalived/pull/777 - - keepalived/include/vrrp_arp.h | 1 + - keepalived/vrrp/vrrp.c | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/keepalived/include/vrrp_arp.h b/keepalived/include/vrrp_arp.h -index 77a26c450b12..a103ab075c1d 100644 ---- a/keepalived/include/vrrp_arp.h -+++ b/keepalived/include/vrrp_arp.h -@@ -24,6 +24,7 @@ - #define _VRRP_ARP_H - - /* system includes */ -+#include - #include - #include - -diff --git a/keepalived/vrrp/vrrp.c b/keepalived/vrrp/vrrp.c -index 3d2bfe41ab4f..435a4b54b2a9 100644 ---- a/keepalived/vrrp/vrrp.c -+++ b/keepalived/vrrp/vrrp.c -@@ -26,6 +26,7 @@ - #include "config.h" - - /* local include */ -+#define _GNU_SOURCE - #include "vrrp_arp.h" - #include "vrrp_ndisc.h" - #include "vrrp_scheduler.h" --- -2.15.1 - diff --git a/buildroot/package/keepalived/0001-configure.ac-do-not-force-PIE.patch b/buildroot/package/keepalived/0001-configure.ac-do-not-force-PIE.patch new file mode 100644 index 00000000000..b51a4e334b2 --- /dev/null +++ b/buildroot/package/keepalived/0001-configure.ac-do-not-force-PIE.patch @@ -0,0 +1,38 @@ +From 4da31a615412e15f7658d21770708e8084be149c Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Wed, 4 Apr 2018 22:29:45 +0200 +Subject: [PATCH] configure.ac: do not force PIE + +PIE is not necessarily supported on all architectures, so leave it up +to the user to pass the appropriate CFLAGS/LDFLAGS if he wants to use +PIE. + +This fixes the build on the m68k and Microblaze architecture: + + http://autobuild.buildroot.net/results/a536f5947b3b70fdaecad1af5542572c504ad046/ + http://autobuild.buildroot.net/results/0ffbf1e8d181c9463847a5b2be6f9baa18face24/ + +Signed-off-by: Thomas Petazzoni +Upstream-status: https://github.com/acassen/keepalived/pull/830 +--- + configure.ac | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index c344f07e..06545c91 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -233,8 +233,8 @@ AC_SUBST(ARFLAGS) + # AC_PROG_LIBTOOL + + KA_CPPFLAGS="$kernelinc" +-KA_CFLAGS="-Wall -Wunused -Wstrict-prototypes -Wextra -g -O2 -fPIE -D_GNU_SOURCE" +-KA_LDFLAGS="-pie" ++KA_CFLAGS="-Wall -Wunused -Wstrict-prototypes -Wextra -g -O2 -D_GNU_SOURCE" ++KA_LDFLAGS="" + KA_LIBS= + NEED_LIBDL=No + #KA_LIBTOOLFLAGS = +-- +2.14.3 + diff --git a/buildroot/package/keepalived/keepalived.hash b/buildroot/package/keepalived/keepalived.hash index 5d33c5be006..ed7d2fb0a09 100644 --- a/buildroot/package/keepalived/keepalived.hash +++ b/buildroot/package/keepalived/keepalived.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 c0114d86ea4c896557beb0d9367819a423ffba772bc5d7c548dc455e6b3bd048 keepalived-1.3.5.tar.gz +sha256 4e2d7cc01a6ee29a3955f5c622d47704ba7d9dd758189f15e9def016a2d1faa3 keepalived-1.4.2.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/buildroot/package/keepalived/keepalived.mk b/buildroot/package/keepalived/keepalived.mk index 59d3cb5cfb8..e8a280a19cb 100644 --- a/buildroot/package/keepalived/keepalived.mk +++ b/buildroot/package/keepalived/keepalived.mk @@ -4,11 +4,13 @@ # ################################################################################ -KEEPALIVED_VERSION = 1.3.5 +KEEPALIVED_VERSION = 1.4.2 KEEPALIVED_SITE = http://www.keepalived.org/software KEEPALIVED_DEPENDENCIES = host-pkgconf openssl popt KEEPALIVED_LICENSE = GPL-2.0+ KEEPALIVED_LICENSE_FILES = COPYING +# 0001-configure.ac-do-not-force-PIE.patch +KEEPALIVED_AUTORECONF = YES KEEPALIVED_CONF_OPTS += --disable-dbus ifeq ($(BR2_PACKAGE_LIBNL)$(BR2_PACKAGE_LIBNFNETLINK),yy) diff --git a/buildroot/package/kexec/Config.in b/buildroot/package/kexec/Config.in index c24dff38ec3..c8cdea5663d 100644 --- a/buildroot/package/kexec/Config.in +++ b/buildroot/package/kexec/Config.in @@ -2,7 +2,7 @@ config BR2_PACKAGE_KEXEC bool "kexec" depends on BR2_i386 || BR2_x86_64 || BR2_arm || BR2_armeb || \ BR2_mips || BR2_mips64 || BR2_mipsel || BR2_mips64el || \ - BR2_powerpc || BR2_sh4 || BR2_sh4a + BR2_powerpc || BR2_sh4 || BR2_sh4a || BR2_aarch64 help Kexec is a user space utility for loading another kernel and asking the currently running kernel to do something with diff --git a/buildroot/package/kmod/kmod.mk b/buildroot/package/kmod/kmod.mk index bd676108aa8..e1149b7b659 100644 --- a/buildroot/package/kmod/kmod.mk +++ b/buildroot/package/kmod/kmod.mk @@ -74,7 +74,7 @@ endif # host. define HOST_KMOD_INSTALL_TOOLS mkdir -p $(HOST_DIR)/sbin/ - ln -sf ../usr/bin/kmod $(HOST_DIR)/sbin/depmod + ln -sf ../bin/kmod $(HOST_DIR)/sbin/depmod endef HOST_KMOD_POST_INSTALL_HOOKS += HOST_KMOD_INSTALL_TOOLS diff --git a/buildroot/package/kodi-adsp-basic/Config.in b/buildroot/package/kodi-adsp-basic/Config.in deleted file mode 100644 index 87bdd1973cf..00000000000 --- a/buildroot/package/kodi-adsp-basic/Config.in +++ /dev/null @@ -1,12 +0,0 @@ -config BR2_PACKAGE_KODI_ADSP_BASIC - bool "kodi-adsp-basic" - select BR2_PACKAGE_LIBPLATFORM - select BR2_PACKAGE_KODI_PLATFORM - help - This add-on contains basic dsp related parts to handle - speaker delays, channel related volume amplification. As - mode it supports a Dolby Pro Logic II compatible - multichannel downmix to stereo, which becomes available if - only 2 channel output on Kodi is selected. - - https://github.com/kodi-adsp/adsp.basic diff --git a/buildroot/package/kodi-adsp-basic/kodi-adsp-basic.hash b/buildroot/package/kodi-adsp-basic/kodi-adsp-basic.hash deleted file mode 100644 index 10dd773c1e7..00000000000 --- a/buildroot/package/kodi-adsp-basic/kodi-adsp-basic.hash +++ /dev/null @@ -1,2 +0,0 @@ -# Locally computed -sha256 d6ef031157ceb825a6e6ba114fb20c622ef7f396ddd17ae8bf1954aab25bc2af kodi-adsp-basic-2ae604e591346741324663260696cfa231931870.tar.gz diff --git a/buildroot/package/kodi-adsp-basic/kodi-adsp-basic.mk b/buildroot/package/kodi-adsp-basic/kodi-adsp-basic.mk deleted file mode 100644 index bb114a41ead..00000000000 --- a/buildroot/package/kodi-adsp-basic/kodi-adsp-basic.mk +++ /dev/null @@ -1,15 +0,0 @@ -################################################################################ -# -# kodi-adsp-basic -# -################################################################################ - -# This cset is on the branch 'Krypton' -# When Kodi is updated, then this should be updated to the corresponding branch -KODI_ADSP_BASIC_VERSION = 2ae604e591346741324663260696cfa231931870 -KODI_ADSP_BASIC_SITE = $(call github,kodi-adsp,adsp.basic,$(KODI_ADSP_BASIC_VERSION)) -KODI_ADSP_BASIC_LICENSE = GPL-3.0+ -KODI_ADSP_BASIC_LICENSE_FILES = LICENSE.md -KODI_ADSP_BASIC_DEPENDENCIES = libplatform kodi-platform - -$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-adsp-freesurround/Config.in b/buildroot/package/kodi-adsp-freesurround/Config.in deleted file mode 100644 index 80aadf1d40b..00000000000 --- a/buildroot/package/kodi-adsp-freesurround/Config.in +++ /dev/null @@ -1,11 +0,0 @@ -config BR2_PACKAGE_KODI_ADSP_FREESURROUND - bool "kodi-adsp-freesurround" - select BR2_PACKAGE_LIBPLATFORM - select BR2_PACKAGE_KODI_PLATFORM - help - FreeSurround is meant to be the KODI equivalent of your - hi-fi receiver's Dolby ProLogic II button. It's purpose is - to decode surround information from your stereo music and to - produce multichannel output from it. - - https://github.com/kodi-adsp/adsp.freesurround diff --git a/buildroot/package/kodi-adsp-freesurround/kodi-adsp-freesurround.hash b/buildroot/package/kodi-adsp-freesurround/kodi-adsp-freesurround.hash deleted file mode 100644 index 2649bbdcbf9..00000000000 --- a/buildroot/package/kodi-adsp-freesurround/kodi-adsp-freesurround.hash +++ /dev/null @@ -1,2 +0,0 @@ -# Locally computed -sha256 cf6985be6839530027861b54e2146693d05e802363281ef6f8c1f352dbf94b5c kodi-adsp-freesurround-34f50406bcba22e364711562e5b9205e57ae844b.tar.gz diff --git a/buildroot/package/kodi-adsp-freesurround/kodi-adsp-freesurround.mk b/buildroot/package/kodi-adsp-freesurround/kodi-adsp-freesurround.mk deleted file mode 100644 index 927af74da72..00000000000 --- a/buildroot/package/kodi-adsp-freesurround/kodi-adsp-freesurround.mk +++ /dev/null @@ -1,15 +0,0 @@ -################################################################################ -# -# kodi-adsp-freesurround -# -################################################################################ - -# This cset is on the branch 'Krypton' -# When Kodi is updated, then this should be updated to the corresponding branch -KODI_ADSP_FREESURROUND_VERSION = 34f50406bcba22e364711562e5b9205e57ae844b -KODI_ADSP_FREESURROUND_SITE = $(call github,kodi-adsp,adsp.freesurround,$(KODI_ADSP_FREESURROUND_VERSION)) -KODI_ADSP_FREESURROUND_LICENSE = GPL-3.0+ -KODI_ADSP_FREESURROUND_LICENSE_FILES = LICENSE.md -KODI_ADSP_FREESURROUND_DEPENDENCIES = libplatform kodi-platform - -$(eval $(cmake-package)) diff --git a/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash b/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash index 78b48c16b6d..15ecf494f1b 100644 --- a/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash +++ b/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 572b2e898484a5ada74c4095539cebf43c198a3147f0f24fe350bc79db053695 kodi-inputstream-adaptive-9af21218a87572bd4ab8d8d660c11f6295144f97.tar.gz +sha256 872a6ffefb90b6201a1e01fe5a52e05877e2040737e052b2f249725b9a8a44ff kodi-inputstream-adaptive-c51b9a9b58a645f820883e6d99982277fc58aac5.tar.gz diff --git a/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk b/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk index f7a4c66e8c7..ab810d32483 100644 --- a/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk +++ b/buildroot/package/kodi-inputstream-adaptive/kodi-inputstream-adaptive.mk @@ -6,7 +6,7 @@ # This cset is on the branch 'Krypton' # When Kodi is updated, then this should be updated to the corresponding branch -KODI_INPUTSTREAM_ADAPTIVE_VERSION = 9af21218a87572bd4ab8d8d660c11f6295144f97 +KODI_INPUTSTREAM_ADAPTIVE_VERSION = c51b9a9b58a645f820883e6d99982277fc58aac5 KODI_INPUTSTREAM_ADAPTIVE_SITE = $(call github,peak3d,inputstream.adaptive,$(KODI_INPUTSTREAM_ADAPTIVE_VERSION)) KODI_INPUTSTREAM_ADAPTIVE_LICENSE = GPL-2.0+ KODI_INPUTSTREAM_ADAPTIVE_LICENSE_FILES = src/main.cpp diff --git a/buildroot/package/kodi/Config.in b/buildroot/package/kodi/Config.in index 071c03d640c..d96d546bf97 100644 --- a/buildroot/package/kodi/Config.in +++ b/buildroot/package/kodi/Config.in @@ -280,11 +280,6 @@ menu "Audio decoder addons" source "package/kodi-audiodecoder-vgmstream/Config.in" endmenu -menu "Audio DSP addons" - source "package/kodi-adsp-basic/Config.in" - source "package/kodi-adsp-freesurround/Config.in" -endmenu - menu "Audio encoder addons" source "package/kodi-audioencoder-flac/Config.in" source "package/kodi-audioencoder-lame/Config.in" diff --git a/buildroot/package/kodi/kodi.mk b/buildroot/package/kodi/kodi.mk index 93f4dd4b31a..f3fa0b55b08 100644 --- a/buildroot/package/kodi/kodi.mk +++ b/buildroot/package/kodi/kodi.mk @@ -69,9 +69,10 @@ KODI_CONF_OPTS += \ -DDEPENDS_PATH=$(@D) \ -DWITH_FFMPEG=$(STAGING_DIR)/usr \ -DWITH_TEXTUREPACKER=$(HOST_DIR)/bin/TexturePacker \ - -DLIBDVDCSS_URL=$(DL_DIR)/$(KODI_LIBDVDCSS_VERSION).tar.gz \ - -DLIBDVDNAV_URL=$(DL_DIR)/$(KODI_LIBDVDNAV_VERSION).tar.gz \ - -DLIBDVDREAD_URL=$(DL_DIR)/$(KODI_LIBDVDREAD_VERSION).tar.gz + -DLIBDVDCSS_URL=$(KODI_DL_DIR)/$(KODI_LIBDVDCSS_VERSION).tar.gz \ + -DLIBDVDNAV_URL=$(KODI_DL_DIR)/$(KODI_LIBDVDNAV_VERSION).tar.gz \ + -DLIBDVDREAD_URL=$(KODI_DL_DIR)/$(KODI_LIBDVDREAD_VERSION).tar.gz \ + -DENABLE_IMX=OFF ifeq ($(BR2_ENABLE_LOCALE),) KODI_DEPENDENCIES += libiconv @@ -191,12 +192,6 @@ KODI_DEPENDENCIES += libamcodec else KODI_CONF_OPTS += -DENABLE_AML=OFF endif -ifeq ($(BR2_PACKAGE_IMX_VPUWRAP),y) -KODI_CONF_OPTS += -DENABLE_IMX=ON -KODI_DEPENDENCIES += imx-vpuwrap -else -KODI_CONF_OPTS += -DENABLE_IMX=OFF -endif endif ifeq ($(BR2_PACKAGE_HAS_UDEV),y) diff --git a/buildroot/package/ktap/ktap.hash b/buildroot/package/ktap/ktap.hash index d58bd85b436..1eff7125013 100644 --- a/buildroot/package/ktap/ktap.hash +++ b/buildroot/package/ktap/ktap.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 bc8b03a53c430ae4fcf594ffdf31e2b2ed47a8fee25dd8fea60aa34f75441707 ktap-eb66d40310c93dc82bc8eac889744c1ed1f01f7b.tar.gz +sha256 44a0808d57175cf9d15466f720e1e10d5ed1abc3497aedf9ddd6469545552345 ktap-23bc7a4a94bd9e4e1b8b7c06632e61c041d57b5f.tar.gz +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 LICENSE-GPL diff --git a/buildroot/package/ktap/ktap.mk b/buildroot/package/ktap/ktap.mk index b9b3dbcc531..3b9134da658 100644 --- a/buildroot/package/ktap/ktap.mk +++ b/buildroot/package/ktap/ktap.mk @@ -4,7 +4,7 @@ # ################################################################################ -KTAP_VERSION = eb66d40310c93dc82bc8eac889744c1ed1f01f7b +KTAP_VERSION = 23bc7a4a94bd9e4e1b8b7c06632e61c041d57b5f KTAP_SITE = $(call github,ktap,ktap,$(KTAP_VERSION)) KTAP_LICENSE = GPL-2.0 KTAP_LICENSE_FILES = LICENSE-GPL diff --git a/buildroot/package/kvazaar/0001-Modify-and-use-FILL_ARRAY-macro-to-prevent-warning-o.patch b/buildroot/package/kvazaar/0001-Modify-and-use-FILL_ARRAY-macro-to-prevent-warning-o.patch deleted file mode 100644 index 633da8b36d4..00000000000 --- a/buildroot/package/kvazaar/0001-Modify-and-use-FILL_ARRAY-macro-to-prevent-warning-o.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 47a9f0de049e77e866ea5bdd4bc7c795ea6dd641 Mon Sep 17 00:00:00 2001 -From: Ari Lemmetti -Date: Tue, 11 Apr 2017 12:57:22 +0300 -Subject: [PATCH] Modify and use FILL_ARRAY macro to prevent warning on GCC 7 - -Following warning was given and is false positive - -error: 'memset' used with length equal to number of elements without multiplication by element size [-Werror=memset-elt-size] - -Signed-off-by: Baruch Siach ---- -Upstream commit 47a9f0de049e7. - - src/global.h | 6 +++++- - src/rdo.c | 8 ++++---- - 2 files changed, 9 insertions(+), 5 deletions(-) - -diff --git a/src/global.h b/src/global.h -index bedcd49c2e02..518167443f35 100644 ---- a/src/global.h -+++ b/src/global.h -@@ -219,7 +219,11 @@ typedef int16_t coeff_t; - // Fill a structure or a static array with val bytes. - #define FILL(var, val) memset(&(var), (val), sizeof(var)) - // Fill a number of elements in an array with val bytes. --#define FILL_ARRAY(ar, val, size) memset((ar), (val), (size) * sizeof(*(ar))) -+#define FILL_ARRAY(ar, val, size) \ -+{\ -+ void *temp_ptr = (void*)(ar);\ -+ memset((temp_ptr), (val), (size) * sizeof(*(ar)));\ -+} - - #define FREE_POINTER(pointer) { free((void*)pointer); pointer = NULL; } - #define MOVE_POINTER(dst_pointer,src_pointer) { dst_pointer = src_pointer; src_pointer = NULL; } -diff --git a/src/rdo.c b/src/rdo.c -index 52305fd72fab..2579f2808441 100644 ---- a/src/rdo.c -+++ b/src/rdo.c -@@ -558,10 +558,10 @@ void kvz_rdoq(encoder_state_t * const state, coeff_t *coef, coeff_t *dest_coeff, - // Explicitly tell the only possible numbers of elements to be zeroed. - // Hope the compiler is able to utilize this information. - switch (cg_num) { -- case 1: memset(sig_coeffgroup_flag, 0, 1 * sizeof(sig_coeffgroup_flag[0])); break; -- case 4: memset(sig_coeffgroup_flag, 0, 4 * sizeof(sig_coeffgroup_flag[0])); break; -- case 16: memset(sig_coeffgroup_flag, 0, 16 * sizeof(sig_coeffgroup_flag[0])); break; -- case 64: memset(sig_coeffgroup_flag, 0, 64 * sizeof(sig_coeffgroup_flag[0])); break; -+ case 1: FILL_ARRAY(sig_coeffgroup_flag, 0, 1); break; -+ case 4: FILL_ARRAY(sig_coeffgroup_flag, 0, 4); break; -+ case 16: FILL_ARRAY(sig_coeffgroup_flag, 0, 16); break; -+ case 64: FILL_ARRAY(sig_coeffgroup_flag, 0, 64); break; - default: assert(0 && "There should be 1, 4, 16 or 64 coefficient groups"); - } - --- -2.13.2 - diff --git a/buildroot/package/kvazaar/kvazaar.hash b/buildroot/package/kvazaar/kvazaar.hash index 80f480b5d57..aa746ca17e3 100644 --- a/buildroot/package/kvazaar/kvazaar.hash +++ b/buildroot/package/kvazaar/kvazaar.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 8e382738a51004bfcfca4c832e8b41fe6a17f889f3c39151dc1c1a37261a3a6d kvazaar-v1.1.0.tar.gz +sha256 480ecfd9b4d2b7d21b355e4a35fcf47b4db7a3b0315b6219d93733db42392bd9 kvazaar-v1.2.0.tar.gz +sha256 531712277c3543b9ee86c4c4e0e424f531b893a44cc021c74a24b038d8de4d2a COPYING diff --git a/buildroot/package/kvazaar/kvazaar.mk b/buildroot/package/kvazaar/kvazaar.mk index f9149a781f1..0cf965dd862 100644 --- a/buildroot/package/kvazaar/kvazaar.mk +++ b/buildroot/package/kvazaar/kvazaar.mk @@ -4,7 +4,7 @@ # ################################################################################ -KVAZAAR_VERSION = v1.1.0 +KVAZAAR_VERSION = v1.2.0 KVAZAAR_SITE = $(call github,ultravideo,kvazaar,$(KVAZAAR_VERSION)) KVAZAAR_LICENSE = LGPL-2.1+ KVAZAAR_LICENSE_FILES = COPYING diff --git a/buildroot/package/lcms2/0001-Fix-lcms2.pc.in-thread-library-dependency.patch b/buildroot/package/lcms2/0001-Fix-lcms2.pc.in-thread-library-dependency.patch deleted file mode 100644 index f8c0d00d30d..00000000000 --- a/buildroot/package/lcms2/0001-Fix-lcms2.pc.in-thread-library-dependency.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 0b55fd4e0935a0231ca258fde631a95215df2f72 Mon Sep 17 00:00:00 2001 -From: Peter Seiderer -Date: Fri, 11 Nov 2016 23:29:56 +0100 -Subject: [PATCH] Fix lcms2.pc.in thread library dependency. - -Needed (sometimes) for static linking. - -Signed-off-by: Peter Seiderer ---- - lcms2.pc.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lcms2.pc.in b/lcms2.pc.in -index b715f59..5b4213c 100644 ---- a/lcms2.pc.in -+++ b/lcms2.pc.in -@@ -7,5 +7,5 @@ Name: @PACKAGE@ - Description: LCMS Color Management Library - Version: @VERSION@ - Libs: -L${libdir} -llcms2 --Libs.private: @LIB_MATH@ -+Libs.private: @LIB_MATH@ @LIB_THREAD@ - Cflags: -I${includedir} --- -2.8.1 - diff --git a/buildroot/package/lcms2/0002-Added-an-extra-check-to-MLU-bounds.patch b/buildroot/package/lcms2/0002-Added-an-extra-check-to-MLU-bounds.patch deleted file mode 100644 index 9a5d9dd4e91..00000000000 --- a/buildroot/package/lcms2/0002-Added-an-extra-check-to-MLU-bounds.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 5ca71a7bc18b6897ab21d815d15e218e204581e2 Mon Sep 17 00:00:00 2001 -From: Marti -Date: Mon, 15 Aug 2016 23:31:39 +0200 -Subject: [PATCH] Added an extra check to MLU bounds - -Thanks to Ibrahim el-sayed for spotting the bug - -Signed-off-by: Peter Korsgaard ---- - src/cmstypes.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/cmstypes.c b/src/cmstypes.c -index cb61860..c7328b9 100644 ---- a/src/cmstypes.c -+++ b/src/cmstypes.c -@@ -1460,6 +1460,7 @@ void *Type_MLU_Read(struct _cms_typehandler_struct* self, cmsIOHANDLER* io, cmsU - - // Check for overflow - if (Offset < (SizeOfHeader + 8)) goto Error; -+ if ((Offset + Len) > SizeOfTag + 8) goto Error; - - // True begin of the string - BeginOfThisString = Offset - SizeOfHeader - 8; --- -2.11.0 - diff --git a/buildroot/package/lcms2/lcms2.hash b/buildroot/package/lcms2/lcms2.hash index 1cf1017c540..248a08cf87a 100644 --- a/buildroot/package/lcms2/lcms2.hash +++ b/buildroot/package/lcms2/lcms2.hash @@ -1,4 +1,5 @@ -# From https://sourceforge.net/projects/lcms/files/lcms/2.8 -sha1 e9535ec4a572b8fc7a1c405c35e6f4dc97714197 lcms2-2.8.tar.gz +# From https://sourceforge.net/projects/lcms/files/lcms/2.9 +sha1 60bea9875e017dd1c466e988c2ad98f8766e4e55 lcms2-2.9.tar.gz # Locally computed: -sha256 66d02b229d2ea9474e62c2b6cd6720fde946155cd1d0d2bffdab829790a0fb22 lcms2-2.8.tar.gz +sha256 48c6fdf98396fa245ed86e622028caf49b96fa22f3e5734f853f806fbc8e7d20 lcms2-2.9.tar.gz +sha256 c725daac91a9259ce5e195683c0eeb797d345035c36ac5ba114c9fa80e11639a COPYING diff --git a/buildroot/package/lcms2/lcms2.mk b/buildroot/package/lcms2/lcms2.mk index 29f8ac8deee..b6c292b762a 100644 --- a/buildroot/package/lcms2/lcms2.mk +++ b/buildroot/package/lcms2/lcms2.mk @@ -4,7 +4,7 @@ # ################################################################################ -LCMS2_VERSION = 2.8 +LCMS2_VERSION = 2.9 LCMS2_SITE = http://downloads.sourceforge.net/project/lcms/lcms/$(LCMS2_VERSION) LCMS2_LICENSE = MIT LCMS2_LICENSE_FILES = COPYING @@ -31,5 +31,5 @@ else LCMS2_CONF_OPTS += --without-zlib endif -$(eval $(host-autotools-package)) $(eval $(autotools-package)) +$(eval $(host-autotools-package)) diff --git a/buildroot/package/leveldb/Config.in b/buildroot/package/leveldb/Config.in index c44ef13ca71..163a75e8f2b 100644 --- a/buildroot/package/leveldb/Config.in +++ b/buildroot/package/leveldb/Config.in @@ -1,7 +1,5 @@ config BR2_PACKAGE_LEVELDB bool "leveldb" - # Missing/broken atomic pointer support - depends on !BR2_bfin depends on BR2_INSTALL_LIBSTDCPP depends on BR2_TOOLCHAIN_HAS_THREADS select BR2_PACKAGE_SNAPPY @@ -13,5 +11,4 @@ config BR2_PACKAGE_LEVELDB https://github.com/google/leveldb comment "leveldb needs a toolchain w/ C++, threads" - depends on !BR2_bfin depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/lftp/lftp.hash b/buildroot/package/lftp/lftp.hash index 99dd994fdd6..7828cca9c16 100644 --- a/buildroot/package/lftp/lftp.hash +++ b/buildroot/package/lftp/lftp.hash @@ -1,4 +1,7 @@ -# From http://lftp.yar.ru/ftp/lftp-4.8.0.md5sum -md5 468558412ad3575ef8e98547c41339f4 lftp-4.8.0.tar.xz +# From http://lftp.yar.ru/ftp/lftp-4.8.3.md5sum +md5 8beb3d814d60f52ac70cffd6dff23d85 lftp-4.8.3.tar.xz # Locally calculated after checking gpg signature -sha256 7a2880968088b4aeec43b6b6680fef0e065e1dddcce9b409390157e9766b690f lftp-4.8.0.tar.xz +sha256 de7aee451afaa1aa391f7076b5f602922c2da0e05524a8d8fea413eda83cc78b lftp-4.8.3.tar.xz + +# Hash for license file: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/lftp/lftp.mk b/buildroot/package/lftp/lftp.mk index b174057f03f..e1ca0533ee9 100644 --- a/buildroot/package/lftp/lftp.mk +++ b/buildroot/package/lftp/lftp.mk @@ -4,7 +4,7 @@ # ################################################################################ -LFTP_VERSION = 4.8.0 +LFTP_VERSION = 4.8.3 LFTP_SOURCE = lftp-$(LFTP_VERSION).tar.xz LFTP_SITE = http://lftp.yar.ru/ftp LFTP_LICENSE = GPL-3.0+ diff --git a/buildroot/package/libaacs/libaacs.hash b/buildroot/package/libaacs/libaacs.hash index 84947e0c3b8..22310295f80 100644 --- a/buildroot/package/libaacs/libaacs.hash +++ b/buildroot/package/libaacs/libaacs.hash @@ -1,2 +1,5 @@ # From http://download.videolan.org/pub/videolan/libaacs/0.9.0/libaacs-0.9.0.tar.bz2.sha512 sha512 b9c658db22a0966486070d3b762509a7c0120469ab29d1e57c1b624cad309701de8b92455ec649db4d731be4a5c29c38fb4f99bb7617dbb4254270284a1903f6 libaacs-0.9.0.tar.bz2 + +# Hash for license file: +sha256 592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c COPYING diff --git a/buildroot/package/libaio/libaio.hash b/buildroot/package/libaio/libaio.hash index 7aa8961fbf3..5917e2f7833 100644 --- a/buildroot/package/libaio/libaio.hash +++ b/buildroot/package/libaio/libaio.hash @@ -1,2 +1,5 @@ # From http://snapshot.debian.org/archive/debian/20141023T043132Z/pool/main/liba/libaio/libaio_0.3.110-1.dsc sha256 e019028e631725729376250e32b473012f7cb68e1f7275bfc1bbcdd0f8745f7e libaio_0.3.110.orig.tar.gz + +# Hash for license file: +sha256 5bbcbb737e60fe9deba08ecbd00920cfcc3403ba2e534c64fdeea49d6bb87509 COPYING diff --git a/buildroot/package/libao/libao.hash b/buildroot/package/libao/libao.hash index 64174dad8f4..dced3dddeb4 100644 --- a/buildroot/package/libao/libao.hash +++ b/buildroot/package/libao/libao.hash @@ -1,2 +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/buildroot/package/libarchive/libarchive.hash b/buildroot/package/libarchive/libarchive.hash index 98a34ad36cc..60ea0d16025 100644 --- a/buildroot/package/libarchive/libarchive.hash +++ b/buildroot/package/libarchive/libarchive.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 ed2dbd6954792b2c054ccf8ec4b330a54b85904a80cef477a1c74643ddafa0ce libarchive-3.3.2.tar.gz +sha256 ae6f35cc1979beb316e4d6431fc34c6fc59f0dd126b425c8552bb41c86e4825d COPYING diff --git a/buildroot/package/libargtable2/libargtable2.hash b/buildroot/package/libargtable2/libargtable2.hash index 9addbc54b99..7df3a18041c 100644 --- a/buildroot/package/libargtable2/libargtable2.hash +++ b/buildroot/package/libargtable2/libargtable2.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 8f77e8a7ced5301af6e22f47302fdbc3b1ff41f2b83c43c77ae5ca041771ddbf argtable2-13.tar.gz +sha256 d7bf9d064ac3e5840f9dd02422b7eeec4f1fd03f37fadbd043602be5e882304f COPYING diff --git a/buildroot/package/libart/libart.hash b/buildroot/package/libart/libart.hash index 769c3bfeab4..105277b1f2a 100644 --- a/buildroot/package/libart/libart.hash +++ b/buildroot/package/libart/libart.hash @@ -1,2 +1,5 @@ # From http://ftp.gnome.org/pub/gnome/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/buildroot/package/libasplib/libasplib.hash b/buildroot/package/libasplib/libasplib.hash index 76534e528d8..db8e9203345 100644 --- a/buildroot/package/libasplib/libasplib.hash +++ b/buildroot/package/libasplib/libasplib.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 68e117348fa17592dde7672477e927119a0e477103ced1d3a57d92e30880a147 libasplib-be7fac89218a84b75f7598e3d76625ece99296f2.tar.gz +sha256 12ac5047f2af0522f06798b1589ffc4599bc29c91f954d7874e0320634e777c0 LICENSE diff --git a/buildroot/package/libass/libass.hash b/buildroot/package/libass/libass.hash index d98b163f380..74ea5f921db 100644 --- a/buildroot/package/libass/libass.hash +++ b/buildroot/package/libass/libass.hash @@ -1,2 +1,3 @@ # Locally computed -sha256 7065e5f5fb76e46f2042a62e7c68d81e5482dbeeda24644db1bd066e44da7e9d libass-0.13.7.tar.xz +sha256 881f2382af48aead75b7a0e02e65d88c5ebd369fe46bc77d9270a94aa8fd38a2 libass-0.14.0.tar.xz +sha256 f7e30699d02798351e7f839e3d3bfeb29ce65e44efa7735c225464c4fd7dfe9c COPYING diff --git a/buildroot/package/libass/libass.mk b/buildroot/package/libass/libass.mk index 41f027d4c7b..50600963ed3 100644 --- a/buildroot/package/libass/libass.mk +++ b/buildroot/package/libass/libass.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBASS_VERSION = 0.13.7 +LIBASS_VERSION = 0.14.0 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. @@ -18,10 +18,10 @@ LIBASS_DEPENDENCIES = \ libfribidi \ $(if $(BR2_PACKAGE_LIBICONV),libiconv) -# configure: WARNING: Install yasm for a significantly faster libass build. +# configure: WARNING: Install nasm for a significantly faster libass build. # only for Intel archs ifeq ($(BR2_i386)$(BR2_x86_64),y) -LIBASS_DEPENDENCIES += host-yasm +LIBASS_DEPENDENCIES += host-nasm endif ifeq ($(BR2_PACKAGE_FONTCONFIG),y) diff --git a/buildroot/package/libatasmart/libatasmart.hash b/buildroot/package/libatasmart/libatasmart.hash index 8733d07964a..b661332a77e 100644 --- a/buildroot/package/libatasmart/libatasmart.hash +++ b/buildroot/package/libatasmart/libatasmart.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 61f0ea345f63d28ab2ff0dc352c22271661b66bf09642db3a4049ac9dbdb0f8d libatasmart-0.19.tar.xz +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LGPL diff --git a/buildroot/package/libb64/libb64.hash b/buildroot/package/libb64/libb64.hash index 012a7b0b000..0ed8065f128 100644 --- a/buildroot/package/libb64/libb64.hash +++ b/buildroot/package/libb64/libb64.hash @@ -1,3 +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/buildroot/package/libb64/libb64.mk b/buildroot/package/libb64/libb64.mk index 4dea9593a0b..ed6d3cf4b41 100644 --- a/buildroot/package/libb64/libb64.mk +++ b/buildroot/package/libb64/libb64.mk @@ -14,7 +14,7 @@ LIBB64_INSTALL_STAGING = YES LIBB64_INSTALL_TARGET = NO define LIBB64_EXTRACT_CMDS - unzip $(DL_DIR)/$(LIBB64_SOURCE) -d $(BUILD_DIR) + unzip $(LIBB64_DL_DIR)/$(LIBB64_SOURCE) -d $(BUILD_DIR) endef define LIBB64_BUILD_CMDS diff --git a/buildroot/package/libbdplus/libbdplus.hash b/buildroot/package/libbdplus/libbdplus.hash index 552cd71c89c..6abc0e49704 100644 --- a/buildroot/package/libbdplus/libbdplus.hash +++ b/buildroot/package/libbdplus/libbdplus.hash @@ -1,2 +1,5 @@ # From http://download.videolan.org/pub/videolan/libbdplus/0.1.2/libbdplus-0.1.2.tar.bz2.sha512 sha512 e00e7bc9f52b9275646593b753ba646b052255be94a7241965f4dbe4734f8f6a072973ed4b9997957f939236b0633897c295749f79e232188430795be5b5087b libbdplus-0.1.2.tar.bz2 + +# Hash for license file: +sha256 592987e8510228d546540b84a22444bde98e48d03078d3b2eefcd889bec5ce8c COPYING diff --git a/buildroot/package/libbroadvoice/libbroadvoice.hash b/buildroot/package/libbroadvoice/libbroadvoice.hash index e339aa44366..6d5afa8dbec 100644 --- a/buildroot/package/libbroadvoice/libbroadvoice.hash +++ b/buildroot/package/libbroadvoice/libbroadvoice.hash @@ -1,2 +1,3 @@ # Locally computed sha256 b68c91d5af6e493c3d4fc3be04825e109a7593fe4de8c18ec75546004eeb4749 libbroadvoice-f65b0f50c8c767229fbf1758370880abc0d78564.tar.gz +sha256 2550586c993ce4a8c23c8b11968ea36192116a896a2504799cc65307d769c094 COPYING diff --git a/buildroot/package/libbsd/0001-Fix-function-declaration-protection-for-glibc-alread.patch b/buildroot/package/libbsd/0001-Fix-function-declaration-protection-for-glibc-alread.patch new file mode 100644 index 00000000000..fdf45bdef6a --- /dev/null +++ b/buildroot/package/libbsd/0001-Fix-function-declaration-protection-for-glibc-alread.patch @@ -0,0 +1,80 @@ +From 1f8a3f7bccfc84b195218ad0086ebd57049c3490 Mon Sep 17 00:00:00 2001 +From: Guillem Jover +Date: Tue, 6 Mar 2018 01:39:45 +0100 +Subject: [PATCH] Fix function declaration protection for glibc already + providing them +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On non-glibc based systems we cannot unconditionally use the +__GLIBC_PREREQ macro as it gets expanded before evaluation. Instead, +if it is undefined, define it to 0. + +We should also always declare these functions on non-glibc based +systems. And on systems with a new enough glibc, which provides these +functions, we should still provide the declarations if _GNU_SOURCE +is *not* defined. + +Backported from: +https://cgit.freedesktop.org/libbsd/patch/?id=1f8a3f7bccfc84b195218ad0086ebd57049c3490 + +Reported-by: Jテカrg Krause +Signed-off-by: Guillem Jover +Signed-off-by: Jテカrg Krause +--- + include/bsd/stdlib.h | 3 ++- + include/bsd/string.h | 3 ++- + include/bsd/sys/cdefs.h | 8 ++++++++ + 3 files changed, 12 insertions(+), 2 deletions(-) + +diff --git a/include/bsd/stdlib.h b/include/bsd/stdlib.h +index 8d33d1f..a5b063c 100644 +--- a/include/bsd/stdlib.h ++++ b/include/bsd/stdlib.h +@@ -71,7 +71,8 @@ int sradixsort(const unsigned char **base, int nmemb, + const unsigned char *table, unsigned endbyte); + + void *reallocf(void *ptr, size_t size); +-#if defined(_GNU_SOURCE) && defined(__GLIBC__) && !__GLIBC_PREREQ(2, 26) ++#if !defined(__GLIBC__) || \ ++ (defined(__GLIBC__) && (!__GLIBC_PREREQ(2, 26) || !defined(_GNU_SOURCE))) + void *reallocarray(void *ptr, size_t nmemb, size_t size); + #endif + +diff --git a/include/bsd/string.h b/include/bsd/string.h +index 29097f6..f987fee 100644 +--- a/include/bsd/string.h ++++ b/include/bsd/string.h +@@ -46,7 +46,8 @@ size_t strlcat(char *dst, const char *src, size_t siz); + char *strnstr(const char *str, const char *find, size_t str_len); + void strmode(mode_t mode, char *str); + +-#if defined(_GNU_SOURCE) && defined(__GLIBC__) && !__GLIBC_PREREQ(2, 25) ++#if !defined(__GLIBC__) || \ ++ (defined(__GLIBC__) && (!__GLIBC_PREREQ(2, 25) || !defined(_GNU_SOURCE))) + void explicit_bzero(void *buf, size_t len); + #endif + __END_DECLS +diff --git a/include/bsd/sys/cdefs.h b/include/bsd/sys/cdefs.h +index b4c8f30..d1cc419 100644 +--- a/include/bsd/sys/cdefs.h ++++ b/include/bsd/sys/cdefs.h +@@ -58,6 +58,14 @@ + #endif + #endif + ++/* ++ * On non-glibc based systems, we cannot unconditionally use the ++ * __GLIBC_PREREQ macro as it gets expanded before evaluation. ++ */ ++#ifndef __GLIBC_PREREQ ++#define __GLIBC_PREREQ(maj, min) 0 ++#endif ++ + /* + * Some kFreeBSD headers expect those macros to be set for sanity checks. + */ +-- +2.16.2 + diff --git a/buildroot/package/libbsd/0002-Fix-build-for-openrisc-with-uClibc.patch b/buildroot/package/libbsd/0002-Fix-build-for-openrisc-with-uClibc.patch new file mode 100644 index 00000000000..1b28df5a8be --- /dev/null +++ b/buildroot/package/libbsd/0002-Fix-build-for-openrisc-with-uClibc.patch @@ -0,0 +1,48 @@ +From aa902671bf1e0e808fd994bd6b403d70af7ab6dd Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 3 Apr 2018 20:02:14 +0300 +Subject: [PATCH] Fix build for openrisc with uClibc +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +uClibc defines EM_OR1K instead of EM_OPENRISC for the OpenRISC ELF +e_machine ID. Use EM_OR1K when EM_OPENRISC is not defined. + +This fixes the following build failure: + +In file included from nlist.c:44:0: +nlist.c: In function 窶論_elf_is_okay__窶: +local-elf.h:224:23: error: 窶櫓M_OPENRISC窶 undeclared (first use in this function) + #define ELF_TARG_MACH EM_OPENRISC + ^ +nlist.c:77:26: note: in expansion of macro 窶櫓LF_TARG_MACH窶 + if (ehdr->e_machine == ELF_TARG_MACH && + ^ + +Signed-off-by: Baruch Siach +--- +Upstream status: sent to libbsd@lists.freedesktop.org + + src/local-elf.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/local-elf.h b/src/local-elf.h +index 1faf182f87d7..79f7d026f6c9 100644 +--- a/src/local-elf.h ++++ b/src/local-elf.h +@@ -221,7 +221,11 @@ + + #elif defined(__or1k__) + ++#if defined(EM_OPENRISC) + #define ELF_TARG_MACH EM_OPENRISC ++#else ++#define ELF_TARG_MACH EM_OR1K ++#endif + #define ELF_TARG_CLASS ELFCLASS32 + #define ELF_TARG_DATA ELFDATA2MSB + +-- +2.16.3 + diff --git a/buildroot/package/libbsd/0003-Handle-systems-missing-sys-cdefs.h.patch b/buildroot/package/libbsd/0003-Handle-systems-missing-sys-cdefs.h.patch new file mode 100644 index 00000000000..2cf7a5f09f0 --- /dev/null +++ b/buildroot/package/libbsd/0003-Handle-systems-missing-sys-cdefs.h.patch @@ -0,0 +1,230 @@ +From 11ec8f1e5dfa1c10e0c9fb94879b6f5b96ba52dd Mon Sep 17 00:00:00 2001 +From: Guillem Jover +Date: Tue, 6 Mar 2018 01:41:35 +0100 +Subject: [PATCH] Handle systems missing +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This is a non-portable header, and we cannot expect it to be provided by +the system libc (e.g. musl). We just need and rely on declaration that +we have defined ourselves in our own . So we switch to +only ever assume that. + +Fixes: https://bugs.freedesktop.org/105281 + +Backported from: 11ec8f1e5dfa1c10e0c9fb94879b6f5b96ba52dd + +Signed-off-by: Guillem Jover +Signed-off-by: Jテカrg Krause +--- + include/bsd/libutil.h | 4 ++++ + include/bsd/md5.h | 4 ++++ + include/bsd/nlist.h | 4 ++++ + include/bsd/readpassphrase.h | 4 ++++ + include/bsd/stdlib.h | 4 ++++ + include/bsd/string.h | 4 ++++ + include/bsd/stringlist.h | 5 +++++ + include/bsd/sys/queue.h | 4 ++++ + include/bsd/sys/tree.h | 4 ++++ + include/bsd/timeconv.h | 4 ++++ + include/bsd/vis.h | 4 ++++ + include/bsd/wchar.h | 4 ++++ + 12 files changed, 49 insertions(+) + +diff --git a/include/bsd/libutil.h b/include/bsd/libutil.h +index 45b3b15..ccca29a 100644 +--- a/include/bsd/libutil.h ++++ b/include/bsd/libutil.h +@@ -40,7 +40,11 @@ + #define LIBBSD_LIBUTIL_H + + #include ++#ifdef LIBBSD_OVERLAY + #include ++#else ++#include ++#endif + #include + #include + #include +diff --git a/include/bsd/md5.h b/include/bsd/md5.h +index 5f3ae46..bf36a30 100644 +--- a/include/bsd/md5.h ++++ b/include/bsd/md5.h +@@ -27,7 +27,11 @@ typedef struct MD5Context { + uint8_t buffer[MD5_BLOCK_LENGTH]; /* input buffer */ + } MD5_CTX; + ++#ifdef LIBBSD_OVERLAY + #include ++#else ++#include ++#endif + #include + + __BEGIN_DECLS +diff --git a/include/bsd/nlist.h b/include/bsd/nlist.h +index cb297e8..8767117 100644 +--- a/include/bsd/nlist.h ++++ b/include/bsd/nlist.h +@@ -27,7 +27,11 @@ + #ifndef LIBBSD_NLIST_H + #define LIBBSD_NLIST_H + ++#ifdef LIBBSD_OVERLAY + #include ++#else ++#include ++#endif + + struct nlist { + union { +diff --git a/include/bsd/readpassphrase.h b/include/bsd/readpassphrase.h +index 14744b8..5eb8021 100644 +--- a/include/bsd/readpassphrase.h ++++ b/include/bsd/readpassphrase.h +@@ -31,7 +31,11 @@ + #define RPP_SEVENBIT 0x10 /* Strip the high bit from input. */ + #define RPP_STDIN 0x20 /* Read from stdin, not /dev/tty */ + ++#ifdef LIBBSD_OVERLAY + #include ++#else ++#include ++#endif + #include + + __BEGIN_DECLS +diff --git a/include/bsd/stdlib.h b/include/bsd/stdlib.h +index ebc9638..8d33d1f 100644 +--- a/include/bsd/stdlib.h ++++ b/include/bsd/stdlib.h +@@ -42,7 +42,11 @@ + #ifndef LIBBSD_STDLIB_H + #define LIBBSD_STDLIB_H + ++#ifdef LIBBSD_OVERLAY + #include ++#else ++#include ++#endif + #include + #include + +diff --git a/include/bsd/string.h b/include/bsd/string.h +index 6798bf6..29097f6 100644 +--- a/include/bsd/string.h ++++ b/include/bsd/string.h +@@ -33,7 +33,11 @@ + #ifndef LIBBSD_STRING_H + #define LIBBSD_STRING_H + ++#ifdef LIBBSD_OVERLAY + #include ++#else ++#include ++#endif + #include + + __BEGIN_DECLS +diff --git a/include/bsd/stringlist.h b/include/bsd/stringlist.h +index ff30cac..dd71496 100644 +--- a/include/bsd/stringlist.h ++++ b/include/bsd/stringlist.h +@@ -31,7 +31,12 @@ + + #ifndef LIBBSD_STRINGLIST_H + #define LIBBSD_STRINGLIST_H ++ ++#ifdef LIBBSD_OVERLAY + #include ++#else ++#include ++#endif + #include + + /* +diff --git a/include/bsd/sys/queue.h b/include/bsd/sys/queue.h +index 4a94ea7..ac00026 100644 +--- a/include/bsd/sys/queue.h ++++ b/include/bsd/sys/queue.h +@@ -33,7 +33,11 @@ + #ifndef LIBBSD_SYS_QUEUE_H + #define LIBBSD_SYS_QUEUE_H + ++#ifdef LIBBSD_OVERLAY + #include ++#else ++#include ++#endif + + /* + * This file defines four types of data structures: singly-linked lists, +diff --git a/include/bsd/sys/tree.h b/include/bsd/sys/tree.h +index 628bec0..325b382 100644 +--- a/include/bsd/sys/tree.h ++++ b/include/bsd/sys/tree.h +@@ -30,7 +30,11 @@ + #ifndef LIBBSD_SYS_TREE_H + #define LIBBSD_SYS_TREE_H + ++#ifdef LIBBSD_OVERLAY + #include ++#else ++#include ++#endif + + /* + * This file defines data structures for different types of trees: +diff --git a/include/bsd/timeconv.h b/include/bsd/timeconv.h +index e2a2c55..a426bd3 100644 +--- a/include/bsd/timeconv.h ++++ b/include/bsd/timeconv.h +@@ -41,7 +41,11 @@ + #ifndef LIBBSD_TIMECONV_H + #define LIBBSD_TIMECONV_H + ++#ifdef LIBBSD_OVERLAY + #include ++#else ++#include ++#endif + #include + #include + +diff --git a/include/bsd/vis.h b/include/bsd/vis.h +index 970dfdd..ab5430c 100644 +--- a/include/bsd/vis.h ++++ b/include/bsd/vis.h +@@ -72,7 +72,11 @@ + */ + #define UNVIS_END 1 /* no more characters */ + ++#ifdef LIBBSD_OVERLAY + #include ++#else ++#include ++#endif + + __BEGIN_DECLS + char *vis(char *, int, int, int); +diff --git a/include/bsd/wchar.h b/include/bsd/wchar.h +index 33a500e..7216503 100644 +--- a/include/bsd/wchar.h ++++ b/include/bsd/wchar.h +@@ -40,7 +40,11 @@ + #define LIBBSD_WCHAR_H + + #include ++#ifdef LIBBSD_OVERLAY + #include ++#else ++#include ++#endif + #include + + __BEGIN_DECLS +-- +2.17.0 + diff --git a/buildroot/package/libbsd/Config.in b/buildroot/package/libbsd/Config.in index 11e4c4d974e..a163ce9b6f5 100644 --- a/buildroot/package/libbsd/Config.in +++ b/buildroot/package/libbsd/Config.in @@ -4,12 +4,13 @@ config BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS # 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_TOOLCHAIN_HAS_THREADS - depends on BR2_TOOLCHAIN_USES_GLIBC + depends on BR2_USE_WCHAR help This library provides useful functions commonly found on BSD systems, and lacking on others like GNU systems, thus making @@ -19,6 +20,6 @@ config BR2_PACKAGE_LIBBSD http://libbsd.freedesktop.org/ -comment "libbsd needs a glibc toolchain w/ threads" +comment "libbsd needs a toolchain w/ threads, wchar" depends on BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS - depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_USES_GLIBC + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR diff --git a/buildroot/package/libbson/libbson.hash b/buildroot/package/libbson/libbson.hash index 27abe90bfd5..b20a0cd8d41 100644 --- a/buildroot/package/libbson/libbson.hash +++ b/buildroot/package/libbson/libbson.hash @@ -1,2 +1,4 @@ # Locally calculated -sha256 aad410123e4bd8a9804c3c3d79e03344e2df104872594dc2cf19605d492944ba libbson-1.6.2.tar.gz +sha256 c3cc230a3451bf7fedc5bb34c3191fd23d841e65ec415301f6c77e531924b769 libbson-1.9.4.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 COPYING +sha256 8dc5cb3146b026715e6c145621c7732f36c295d825b7b3a03076ad3f238db48e THIRD_PARTY_NOTICES diff --git a/buildroot/package/libbson/libbson.mk b/buildroot/package/libbson/libbson.mk index 8a71fc394c1..2c9cbc7fe05 100644 --- a/buildroot/package/libbson/libbson.mk +++ b/buildroot/package/libbson/libbson.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBBSON_VERSION = 1.6.2 +LIBBSON_VERSION = 1.9.4 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 diff --git a/buildroot/package/libcap-ng/0001-Fix-compilation-without-pthread.h.patch b/buildroot/package/libcap-ng/0001-Fix-compilation-without-pthread.h.patch new file mode 100644 index 00000000000..eb91d406311 --- /dev/null +++ b/buildroot/package/libcap-ng/0001-Fix-compilation-without-pthread.h.patch @@ -0,0 +1,47 @@ +From 1d28cf070933568db8006ce45411723c5369e145 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 10 Apr 2018 19:54:50 +0200 +Subject: [PATCH] Fix compilation without pthread.h + +Commit 7759e6f8469eb33aef1a1d5eba5d300c3a8fcb63 broke compilation on +systems without pthread.h. So add a call to AC_CHECK_HEADERS in +configure.ac and put include under HAVE_PTHREAD_H define + +Fixes: + - http://autobuild.buildroot.net/results/6132f33fb282fda3c39deb292784b9006c9e7872 + +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 1 + + src/cap-ng.c | 2 ++ + 2 files changed, 3 insertions(+) + +diff --git a/configure.ac b/configure.ac +index 7a99c72..4d6afee 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -56,6 +56,7 @@ AC_CHECK_HEADERS(sys/xattr.h, [], [ + AC_CHECK_HEADERS(attr/xattr.h, [], [AC_MSG_WARN(attr/xattr.h not found, disabling file system capabilities.)]) + ]) + AC_CHECK_HEADERS(linux/securebits.h, [], []) ++AC_CHECK_HEADERS(pthread.h, [], [AC_MSG_WARN(pthread.h not found, disabling pthread_atfork.)]) + + AC_C_CONST + AC_C_INLINE +diff --git a/src/cap-ng.c b/src/cap-ng.c +index db647fd..240d2ba 100644 +--- a/src/cap-ng.c ++++ b/src/cap-ng.c +@@ -34,7 +34,9 @@ + #include + #include + #include ++#ifdef HAVE_PTHREAD_H + #include // For pthread_atfork ++#endif + #ifdef HAVE_SYSCALL_H + #include + #endif +-- +2.14.1 + diff --git a/buildroot/package/libcap-ng/libcap-ng.hash b/buildroot/package/libcap-ng/libcap-ng.hash index b433b750631..f8342ea9289 100644 --- a/buildroot/package/libcap-ng/libcap-ng.hash +++ b/buildroot/package/libcap-ng/libcap-ng.hash @@ -1,2 +1,4 @@ # Locally calculated -sha256 c21af997445cd4107a55d386f955c5ea6f6e96ead693e9151277c0ab5f97d05f libcap-ng-0.7.8.tar.gz +sha256 4a1532bcf3731aade40936f6d6a586ed5a66ca4c7455e1338d1f6c3e09221328 libcap-ng-0.7.9.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING +sha256 f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa COPYING.LIB diff --git a/buildroot/package/libcap-ng/libcap-ng.mk b/buildroot/package/libcap-ng/libcap-ng.mk index 568f167b487..0f29ef0972a 100644 --- a/buildroot/package/libcap-ng/libcap-ng.mk +++ b/buildroot/package/libcap-ng/libcap-ng.mk @@ -4,11 +4,13 @@ # ################################################################################ -LIBCAP_NG_VERSION = 0.7.8 +LIBCAP_NG_VERSION = 0.7.9 LIBCAP_NG_SITE = http://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_INSTALL_STAGING = YES +# 0001-Fix-compilation-without-pthread.h.patch +LIBCAP_NG_AUTORECONF = YES LIBCAP_NG_CONF_ENV = ac_cv_prog_swig_found=no LIBCAP_NG_CONF_OPTS = --without-python diff --git a/buildroot/package/libcap/libcap.hash b/buildroot/package/libcap/libcap.hash index a1dcd62b3c2..2d3aee591d7 100644 --- a/buildroot/package/libcap/libcap.hash +++ b/buildroot/package/libcap/libcap.hash @@ -1,2 +1,5 @@ # https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/sha256sums.asc sha256 693c8ac51e983ee678205571ef272439d83afe62dd8e424ea14ad9790bc35162 libcap-2.25.tar.xz + +# Hash for license file: +sha256 088cabde4662b4121258d298b0b2967bc1abffa134457ed9bc4a359685ab92bc License diff --git a/buildroot/package/libcap/libcap.mk b/buildroot/package/libcap/libcap.mk index 48c2cb34569..a947fa06863 100644 --- a/buildroot/package/libcap/libcap.mk +++ b/buildroot/package/libcap/libcap.mk @@ -18,6 +18,9 @@ HOST_LIBCAP_DEPENDENCIES = host-gperf ifeq ($(BR2_STATIC_LIBS),y) LIBCAP_MAKE_TARGET = libcap.a libcap.pc LIBCAP_MAKE_INSTALL_TARGET = install-static +else ifeq ($(BR2_SHARED_LIBS),y) +LIBCAP_MAKE_TARGET = all +LIBCAP_MAKE_INSTALL_TARGET = install-shared else LIBCAP_MAKE_TARGET = all LIBCAP_MAKE_INSTALL_TARGET = install diff --git a/buildroot/package/libcdaudio/libcdaudio.hash b/buildroot/package/libcdaudio/libcdaudio.hash index f8e1112c59b..67df7c5e411 100644 --- a/buildroot/package/libcdaudio/libcdaudio.hash +++ b/buildroot/package/libcdaudio/libcdaudio.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 5fdaf9af5ac4f75c0215d000b82b128fd054a582f81cc4f039a1e7fe69335ebb libcdaudio-0.99.12p2.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/buildroot/package/libcddb/libcddb.hash b/buildroot/package/libcddb/libcddb.hash index 9e60683ea33..f3519c25774 100644 --- a/buildroot/package/libcddb/libcddb.hash +++ b/buildroot/package/libcddb/libcddb.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 35ce0ee1741ea38def304ddfe84a958901413aa829698357f0bee5bb8f0a223b libcddb-1.3.2.tar.bz2 +sha256 7a4436f9ec37603356791c87de3bc444989befd2682d29efb3d97604e04c1852 COPYING diff --git a/buildroot/package/libcdio-paranoia/Config.in b/buildroot/package/libcdio-paranoia/Config.in new file mode 100644 index 00000000000..28c9ac9cd56 --- /dev/null +++ b/buildroot/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/buildroot/package/libcdio-paranoia/libcdio-paranoia.hash b/buildroot/package/libcdio-paranoia/libcdio-paranoia.hash new file mode 100644 index 00000000000..33e59ba7046 --- /dev/null +++ b/buildroot/package/libcdio-paranoia/libcdio-paranoia.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 d60f82ece97eeb92407a9ee03f3499c8983206672c28ae5e4e22179063c81941 libcdio-paranoia-10.2+0.94+2.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/libcdio-paranoia/libcdio-paranoia.mk b/buildroot/package/libcdio-paranoia/libcdio-paranoia.mk new file mode 100644 index 00000000000..3281aa0145a --- /dev/null +++ b/buildroot/package/libcdio-paranoia/libcdio-paranoia.mk @@ -0,0 +1,19 @@ +################################################################################ +# +# libcdio-paranoia +# +################################################################################ + +LIBCDIO_PARANOIA_VERSION = 10.2+0.94+2 +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/buildroot/package/libcdio/libcdio.hash b/buildroot/package/libcdio/libcdio.hash index 35c632a906d..2b6f832cbe2 100644 --- a/buildroot/package/libcdio/libcdio.hash +++ b/buildroot/package/libcdio/libcdio.hash @@ -1,2 +1,5 @@ # Locally calculated after checking signature -sha256 96e2c903f866ae96f9f5b9048fa32db0921464a2286f5b586c0f02699710025a libcdio-0.94.tar.gz +sha256 1b481b5da009bea31db875805665974e2fc568e2b2afa516f4036733657cf958 libcdio-2.0.0.tar.gz + +# Hash for license file: +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/libcdio/libcdio.mk b/buildroot/package/libcdio/libcdio.mk index f0fc33527ad..f4a55917225 100644 --- a/buildroot/package/libcdio/libcdio.mk +++ b/buildroot/package/libcdio/libcdio.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBCDIO_VERSION = 0.94 +LIBCDIO_VERSION = 2.0.0 LIBCDIO_SITE = $(BR2_GNU_MIRROR)/libcdio LIBCDIO_INSTALL_STAGING = YES LIBCDIO_LICENSE = GPL-3.0+ diff --git a/buildroot/package/libcec/libcec.hash b/buildroot/package/libcec/libcec.hash index 5416c20fece..e7264b40ca5 100644 --- a/buildroot/package/libcec/libcec.hash +++ b/buildroot/package/libcec/libcec.hash @@ -1,2 +1,3 @@ # Locally computed sha256 b8b8dd31f3ebdd5472f03ab7d401600ea0d959b1288b9ca24bf457ef60e2ba27 libcec-4.0.2.tar.gz +sha256 3618005b3db4eb8ede7292d233e6c41605cb8dcbd33e8790eff6e29c1e4f3789 COPYING diff --git a/buildroot/package/libcec/libcec.mk b/buildroot/package/libcec/libcec.mk index 6d14447958e..99d1c8b2bad 100644 --- a/buildroot/package/libcec/libcec.mk +++ b/buildroot/package/libcec/libcec.mk @@ -37,4 +37,11 @@ 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_DATE_BIN="" \ + -DHAVE_WHOAMI_BIN="" \ + -DHAVE_HOSTNAME_BIN="" \ + -DHAVE_UNAME_BIN="" + $(eval $(cmake-package)) diff --git a/buildroot/package/libcgi/libcgi.hash b/buildroot/package/libcgi/libcgi.hash index 3d9f791ed2e..f071cc0aea6 100644 --- a/buildroot/package/libcgi/libcgi.hash +++ b/buildroot/package/libcgi/libcgi.hash @@ -1,2 +1,5 @@ # From https://github.com/rafaelsteil/libcgi/releases/download/v1.1/libcgi-1.1.tar.gz.sha256sum sha256 128445f2f828e84905d51bd53d11e2e08c489df3a07225ff9f198c1318092fe6 libcgi-1.1.tar.gz + +# Hash for license file: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/buildroot/package/libcgi/libcgi.mk b/buildroot/package/libcgi/libcgi.mk index 0d51de75425..d1e403fdf1e 100644 --- a/buildroot/package/libcgi/libcgi.mk +++ b/buildroot/package/libcgi/libcgi.mk @@ -9,5 +9,6 @@ LIBCGI_SITE = https://github.com/rafaelsteil/libcgi/releases/download/v$(LIBCGI_ LIBCGI_INSTALL_STAGING = YES LIBCGI_LICENSE = LGPL-2.1+ +LIBCGI_LICENSE_FILES = COPYING $(eval $(cmake-package)) diff --git a/buildroot/package/libcgicc/libcgicc.hash b/buildroot/package/libcgicc/libcgicc.hash index 313478d4688..6fd19e305c6 100644 --- a/buildroot/package/libcgicc/libcgicc.hash +++ b/buildroot/package/libcgicc/libcgicc.hash @@ -1,2 +1,6 @@ # Locally calculated after checking pgp signature -sha256 d94a2b5dec6d5eb6f05f114e2c7a64aeb7da71708ebe7b5f32bd6ebde1dfbc96 cgicc-3.2.16.tar.bz2 +sha256 2a17b976248de03447f9e36d6ce18a80749990d8543e2dfeea09c413eb67f7f0 cgicc-3.2.19.tar.gz + +# Hash for license files: +sha256 a2e480f5e8afd7c587a3c0ac2ed3b73ed4b10fa3a553dea26e7b661c7cedda72 COPYING.LIB +sha256 0fd15977dc962abf3eced509b1cf5356f9784939742d67a635671141023a11da COPYING.DOC diff --git a/buildroot/package/libcgicc/libcgicc.mk b/buildroot/package/libcgicc/libcgicc.mk index 09df3a1bcbd..e9ce4043f54 100644 --- a/buildroot/package/libcgicc/libcgicc.mk +++ b/buildroot/package/libcgicc/libcgicc.mk @@ -4,9 +4,9 @@ # ################################################################################ -LIBCGICC_VERSION = 3.2.16 +LIBCGICC_VERSION = 3.2.19 LIBCGICC_SITE = $(BR2_GNU_MIRROR)/cgicc -LIBCGICC_SOURCE = cgicc-$(LIBCGICC_VERSION).tar.bz2 +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 diff --git a/buildroot/package/libcgroup/libcgroup.hash b/buildroot/package/libcgroup/libcgroup.hash index c6717917712..11423e269f5 100644 --- a/buildroot/package/libcgroup/libcgroup.hash +++ b/buildroot/package/libcgroup/libcgroup.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 e4e38bdc7ef70645ce33740ddcca051248d56b53283c0dc6d404e17706f6fb51 libcgroup-0.41.tar.bz2 +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING diff --git a/buildroot/package/libcli/libcli.hash b/buildroot/package/libcli/libcli.hash index f6ea12ad378..729c6369604 100644 --- a/buildroot/package/libcli/libcli.hash +++ b/buildroot/package/libcli/libcli.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 3c801cb0112b6b5e07bdc3b98c034b36df6f33a8ed95ce74520b704bdbc0f36d libcli-c63c9d35144939c8b4fa3c5394aed2e29ff517b0.tar.gz +sha256 d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f COPYING diff --git a/buildroot/package/libcoap/libcoap.hash b/buildroot/package/libcoap/libcoap.hash index 708ca1b6e7c..deb94ecd6de 100644 --- a/buildroot/package/libcoap/libcoap.hash +++ b/buildroot/package/libcoap/libcoap.hash @@ -1,2 +1,5 @@ # Locally calculated sha256 f7e26dc232c177336474a14487771037a8fb32e311f5ccd076a00dc04b6d7b7a libcoap-v4.1.2.tar.gz +sha256 28b61fbf3c5477611d7f6ead97d15348934496d27dca815b34d45e622730e72e COPYING +sha256 d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388 LICENSE.GPL +sha256 9d5aeec17bdf82369bbe6e89efb07b7b35abefa044ea1d25cb2feeb70df1c208 LICENSE.BSD diff --git a/buildroot/package/libconfig/0001-Add-disable-doc-option.patch b/buildroot/package/libconfig/0001-Add-disable-doc-option.patch new file mode 100644 index 00000000000..ac323eba243 --- /dev/null +++ b/buildroot/package/libconfig/0001-Add-disable-doc-option.patch @@ -0,0 +1,54 @@ +From a0301bde126c2b08b50e789fd025a8c513c914c3 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 28 Apr 2018 19:15:22 +0200 +Subject: [PATCH] Add --disable-doc option + +Signed-off-by: Fabrice Fontaine +--- + Makefile.am | 6 +++++- + configure.ac | 12 ++++++++++++ + 2 files changed, 17 insertions(+), 1 deletion(-) + +diff --git a/Makefile.am b/Makefile.am +index 50ef4fa..e94d3ec 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1,7 +1,11 @@ + + ACLOCAL_AMFLAGS = -I m4 + +-SUBDIRS = lib doc tinytest tests ++SUBDIRS = lib tinytest tests ++ ++if BUILDDOC ++SUBDIRS += doc ++endif + + if BUILDEXAMPLES + SUBDIRS += examples +diff --git a/configure.ac b/configure.ac +index 62c5c56..8a14855 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -99,6 +99,18 @@ docxx=yes + + AM_CONDITIONAL(BUILDCXX, test x$docxx = xyes) + ++dodoc=yes ++ ++AC_ARG_ENABLE(doc, ++AS_HELP_STRING([--disable-doc], [Disable building of the documentation]), ++[if test "$enableval" = "no"; then dodoc="no"; fi], ++[ ++dodoc=yes ++] ++) ++ ++AM_CONDITIONAL(BUILDDOC, test x$dodoc = xyes) ++ + doexamples=yes + + AC_ARG_ENABLE(examples, +-- +2.14.1 + diff --git a/buildroot/package/libconfig/Config.in b/buildroot/package/libconfig/Config.in index 75dacab36d2..9541b30bfcf 100644 --- a/buildroot/package/libconfig/Config.in +++ b/buildroot/package/libconfig/Config.in @@ -6,4 +6,4 @@ config BR2_PACKAGE_LIBCONFIG 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://hyperrealm.github.io/libconfig/ diff --git a/buildroot/package/libconfig/libconfig.hash b/buildroot/package/libconfig/libconfig.hash index 30110cbbd03..7a77034e686 100644 --- a/buildroot/package/libconfig/libconfig.hash +++ b/buildroot/package/libconfig/libconfig.hash @@ -1,2 +1,3 @@ # Locally computed: -sha256 e31daa390d8e4461c8830512fe2e13ba1a3d6a02a2305a02429eec61e68703f6 libconfig-1.5.tar.gz +sha256 f67ac44099916ae260a6c9e290a90809e7d782d96cdd462cac656ebc5b685726 libconfig-v1.7.2.tar.gz +sha256 d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f COPYING.LIB diff --git a/buildroot/package/libconfig/libconfig.mk b/buildroot/package/libconfig/libconfig.mk index ed7e40f162b..699f5933854 100644 --- a/buildroot/package/libconfig/libconfig.mk +++ b/buildroot/package/libconfig/libconfig.mk @@ -4,11 +4,13 @@ # ################################################################################ -LIBCONFIG_VERSION = 1.5 -LIBCONFIG_SITE = http://www.hyperrealm.com/libconfig +LIBCONFIG_VERSION = v1.7.2 +LIBCONFIG_SITE = $(call github,hyperrealm,libconfig,$(LIBCONFIG_VERSION)) LIBCONFIG_LICENSE = LGPL-2.1+ LIBCONFIG_LICENSE_FILES = COPYING.LIB LIBCONFIG_INSTALL_STAGING = YES +# From git +LIBCONFIG_AUTORECONF = YES LIBCONFIG_CONF_OPTS = --disable-examples ifneq ($(BR2_INSTALL_LIBSTDCPP),y) diff --git a/buildroot/package/libconfuse/libconfuse.hash b/buildroot/package/libconfuse/libconfuse.hash index 826a9263f5a..fa77af9cd15 100644 --- a/buildroot/package/libconfuse/libconfuse.hash +++ b/buildroot/package/libconfuse/libconfuse.hash @@ -1,4 +1,5 @@ -# From https://github.com/martinh/libconfuse/releases/download/v3.2/confuse-3.2.tar.xz.md5 -md5 84259ac3bd495645ab2fe61654917232 confuse-3.2.tar.xz +# From https://github.com/martinh/libconfuse/releases/download/v3.2.1/confuse-3.2.1.tar.xz.md5 +md5 ebd66bb669cf43e62a23ed00d475ba67 confuse-3.2.1.tar.xz # Locally computed -sha256 a46abb8696026d314197b6a70ae1a1c296342a9a68aa69b1935709c1477a4e48 confuse-3.1.tar.xz +sha256 23c63272baf2ef4e2cbbafad2cf57de7eb81f006ec347c00b954819824add25e confuse-3.2.1.tar.xz +sha256 dc3ff4b62f851dd2e94a151061ffeb7d28ddfc880a442068dc5283dbaa927306 LICENSE diff --git a/buildroot/package/libconfuse/libconfuse.mk b/buildroot/package/libconfuse/libconfuse.mk index 431fefd4c78..9f265ae25f0 100644 --- a/buildroot/package/libconfuse/libconfuse.mk +++ b/buildroot/package/libconfuse/libconfuse.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBCONFUSE_VERSION = 3.2 +LIBCONFUSE_VERSION = 3.2.1 LIBCONFUSE_SOURCE = confuse-$(LIBCONFUSE_VERSION).tar.xz LIBCONFUSE_SITE = https://github.com/martinh/libconfuse/releases/download/v$(LIBCONFUSE_VERSION) LIBCONFUSE_INSTALL_STAGING = YES diff --git a/buildroot/package/libcpprestsdk/0001-fix-xlocale-header-check.patch b/buildroot/package/libcpprestsdk/0001-fix-xlocale-header-check.patch deleted file mode 100644 index ffed94a07f5..00000000000 --- a/buildroot/package/libcpprestsdk/0001-fix-xlocale-header-check.patch +++ /dev/null @@ -1,55 +0,0 @@ -From a826b7b656c165bc35746d9af3ec371387d2bca1 Mon Sep 17 00:00:00 2001 -From: Adam Duskett -Date: Mon, 23 Oct 2017 08:11:21 -0400 -Subject: [PATCH] fix xlocale header check - -asyncrt_utils.h checks if __GLIBC__ is not defined before including -xlocal.h. This will cause a compilation failure on uclibc and musl. - -Add a proper check in CMakeLists.txt and check for HAVE_XLOCALE_H -instead of __GLIBC__ - -Upstream-Status: Accepted -Signed-off-by: Adam Duskett ---- - Release/CMakeLists.txt | 3 +++ - Release/include/cpprest/asyncrt_utils.h | 2 +- - 2 files changed, 4 insertions(+), 1 deletion(-) - -diff --git a/Release/CMakeLists.txt b/Release/CMakeLists.txt -index d57aa3d..eefae75 100644 ---- a/Release/CMakeLists.txt -+++ b/Release/CMakeLists.txt -@@ -42,6 +42,7 @@ include(cmake/cpprest_find_boost.cmake) - include(cmake/cpprest_find_zlib.cmake) - include(cmake/cpprest_find_openssl.cmake) - include(cmake/cpprest_find_websocketpp.cmake) -+include(CheckIncludeFiles) - - find_package(Threads REQUIRED) - if(THREADS_HAVE_PTHREAD_ARG) -@@ -56,6 +57,8 @@ if(CPPREST_EXCLUDE_WEBSOCKETS) - set(CPPREST_WEBSOCKETS_IMPL none CACHE STRING "Internal use.") - endif() - -+CHECK_INCLUDE_FILES(xlocale.h HAVE_XLOCALE_H) -+ - if(APPLE) # Note: also iOS - set(CPPREST_PPLX_IMPL apple CACHE STRING "Internal use.") - set(CPPREST_WEBSOCKETS_IMPL wspp CACHE STRING "Internal use.") -diff --git a/Release/include/cpprest/asyncrt_utils.h b/Release/include/cpprest/asyncrt_utils.h -index fac70a9..8faa2dc 100644 ---- a/Release/include/cpprest/asyncrt_utils.h -+++ b/Release/include/cpprest/asyncrt_utils.h -@@ -29,7 +29,7 @@ - - #ifndef _WIN32 - #include --#if !defined(ANDROID) && !defined(__ANDROID__) && !defined(__GLIBC__) // CodePlex 269 -+#if !defined(ANDROID) && !defined(__ANDROID__) && defined(HAVE_XLOCALE_H) // CodePlex 269 - /* Systems using glibc: xlocale.h has been removed from glibc 2.26 - The above include of locale.h is sufficient - Further details: https://sourceware.org/git/?p=glibc.git;a=commit;h=f0be25b6336db7492e47d2e8e72eb8af53b5506d */ --- -2.13.6 - diff --git a/buildroot/package/libcpprestsdk/0004-libcpprestsdk-fix-building-as-a-static-library.patch b/buildroot/package/libcpprestsdk/0001-libcpprestsdk-fix-building-as-a-static-library.patch similarity index 100% rename from buildroot/package/libcpprestsdk/0004-libcpprestsdk-fix-building-as-a-static-library.patch rename to buildroot/package/libcpprestsdk/0001-libcpprestsdk-fix-building-as-a-static-library.patch diff --git a/buildroot/package/libcpprestsdk/0002-fix-template-whitespace-syntax.patch b/buildroot/package/libcpprestsdk/0002-fix-template-whitespace-syntax.patch new file mode 100644 index 00000000000..81f7ea19ec8 --- /dev/null +++ b/buildroot/package/libcpprestsdk/0002-fix-template-whitespace-syntax.patch @@ -0,0 +1,75 @@ +From 546e89a29a82cc4f7de6c99be5a07221aa7443df Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Fri, 9 Mar 2018 08:09:52 -0500 +Subject: [PATCH] fix template whitespace syntax + +Some files don't have a space inbetween the '<' and '::' charachters, which +will cause build failures on older toolchains. Adding a space inbetween these +two characters fixes the issue. + +upstream-status: pending +https://github.com/Microsoft/cpprestsdk/pull/715 + +Signed-off-by: Adam Duskett +--- + Release/include/cpprest/details/web_utilities.h | 2 +- + Release/include/cpprest/http_client.h | 2 +- + Release/include/cpprest/json.h | 2 +- + Release/include/cpprest/ws_client.h | 2 +- + 4 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Release/include/cpprest/details/web_utilities.h b/Release/include/cpprest/details/web_utilities.h +index ba641654..9855c315 100644 +--- a/Release/include/cpprest/details/web_utilities.h ++++ b/Release/include/cpprest/details/web_utilities.h +@@ -33,7 +33,7 @@ class zero_memory_deleter + public: + _ASYNCRTIMP void operator()(::utility::string_t *data) const; + }; +-typedef std::unique_ptr<::utility::string_t, zero_memory_deleter> plaintext_string; ++typedef std::unique_ptr< ::utility::string_t, zero_memory_deleter> plaintext_string; + + #if defined(_WIN32) && !defined(CPPREST_TARGET_XP) + #if defined(__cplusplus_winrt) +diff --git a/Release/include/cpprest/http_client.h b/Release/include/cpprest/http_client.h +index a936a23e..f5ad8fac 100644 +--- a/Release/include/cpprest/http_client.h ++++ b/Release/include/cpprest/http_client.h +@@ -757,7 +757,7 @@ public: + + private: + +- std::shared_ptr<::web::http::client::http_pipeline> m_pipeline; ++ std::shared_ptr< ::web::http::client::http_pipeline> m_pipeline; + }; + + namespace details { +diff --git a/Release/include/cpprest/json.h b/Release/include/cpprest/json.h +index 07c54502..dfdeead4 100644 +--- a/Release/include/cpprest/json.h ++++ b/Release/include/cpprest/json.h +@@ -301,7 +301,7 @@ public: + /// Field names associated with JSON values + /// Whether to preserve the original order of the fields + /// A non-empty JSON object value +- static _ASYNCRTIMP json::value __cdecl object(std::vector> fields, bool keep_order = false); ++ static _ASYNCRTIMP json::value __cdecl object(std::vector> fields, bool keep_order = false); + + /// + /// Creates an empty JSON array +diff --git a/Release/include/cpprest/ws_client.h b/Release/include/cpprest/ws_client.h +index 9a324cde..98f933e1 100644 +--- a/Release/include/cpprest/ws_client.h ++++ b/Release/include/cpprest/ws_client.h +@@ -184,7 +184,7 @@ public: + /// Vector of all the subprotocols + /// If you want all the subprotocols in a comma separated string + /// they can be directly looked up in the headers using 'Sec-WebSocket-Protocol'. +- _ASYNCRTIMP std::vector<::utility::string_t> subprotocols() const; ++ _ASYNCRTIMP std::vector< ::utility::string_t> subprotocols() const; + + /// + /// Gets the server certificate validation property. +-- +2.14.3 + diff --git a/buildroot/package/libcpprestsdk/0002-include-sys-time-for-struct-timeval.patch b/buildroot/package/libcpprestsdk/0002-include-sys-time-for-struct-timeval.patch deleted file mode 100644 index 12f049bf7ba..00000000000 --- a/buildroot/package/libcpprestsdk/0002-include-sys-time-for-struct-timeval.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 25453f9c186cf441881b06bc5503d979acb0ab75 Mon Sep 17 00:00:00 2001 -From: Adam Duskett -Date: Mon, 23 Oct 2017 09:38:11 -0400 -Subject: [PATCH] Include sys/time.h for struct timeval - -This is needed with musl. - -Upstream-Status: Accepted -Signed-off-by: Adam Duskett ---- - Release/include/cpprest/asyncrt_utils.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/Release/include/cpprest/asyncrt_utils.h b/Release/include/cpprest/asyncrt_utils.h -index 8faa2dc..aab87a5 100644 ---- a/Release/include/cpprest/asyncrt_utils.h -+++ b/Release/include/cpprest/asyncrt_utils.h -@@ -28,6 +28,7 @@ - #endif - - #ifndef _WIN32 -+#include - #include - #if !defined(ANDROID) && !defined(__ANDROID__) && defined(HAVE_XLOCALE_H) // CodePlex 269 - /* Systems using glibc: xlocale.h has been removed from glibc 2.26 --- -2.13.6 - diff --git a/buildroot/package/libcpprestsdk/0003-fix-strand.patch b/buildroot/package/libcpprestsdk/0003-fix-strand.patch deleted file mode 100644 index f5710b38b92..00000000000 --- a/buildroot/package/libcpprestsdk/0003-fix-strand.patch +++ /dev/null @@ -1,28 +0,0 @@ -From e75d642726c4c78c368e74660ef4bc5503f3ec12 Mon Sep 17 00:00:00 2001 -From: Adam Duskett -Date: Sun, 14 Jan 2018 14:44:02 -0500 -Subject: [PATCH] fix strand - -From upstream, fixes compiling against boost 1.66 strand. - -Commit IDs 6b2e0480018530b616f61d5cdc786c92ba148bb7 - -Signed-off-by: Adam Duskett ---- - Release/include/pplx/threadpool.h | 2 +- - Release/libs/websocketpp/websocketpp/transport/asio/connection.hpp | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Release/libs/websocketpp/websocketpp/transport/asio/connection.hpp b/Release/libs/websocketpp/websocketpp/transport/asio/connection.hpp -index 0be40f6b..395632c3 100644 ---- a/Release/libs/websocketpp/websocketpp/transport/asio/connection.hpp -+++ b/Release/libs/websocketpp/websocketpp/transport/asio/connection.hpp -@@ -422,7 +422,7 @@ class connection : public config::socket_type::socket_con_type { - m_io_service = io_service; - - if (config::enable_multithreading) { -- m_strand = lib::make_shared( -+ m_strand = lib::make_shared( - lib::ref(*io_service)); - - m_async_read_handler = m_strand->wrap(lib::bind( diff --git a/buildroot/package/libcpprestsdk/libcpprestsdk.hash b/buildroot/package/libcpprestsdk/libcpprestsdk.hash index 0bddfc916e5..20a93953297 100644 --- a/buildroot/package/libcpprestsdk/libcpprestsdk.hash +++ b/buildroot/package/libcpprestsdk/libcpprestsdk.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 f38bc48e6fca969de794dcd65889df6563855cee5ff99742dafc6b2869976e71 libcpprestsdk-v2.10.1.tar.gz +sha256 fb0b611007732d8de9528bc37bd67468e7ef371672f89c88f225f73cdc4ffcf1 libcpprestsdk-v2.10.2.tar.gz sha256 5c191789f502ac87df83b57008d2fc3e47fbf31315381b5bc4309f6602d0fe97 license.txt diff --git a/buildroot/package/libcpprestsdk/libcpprestsdk.mk b/buildroot/package/libcpprestsdk/libcpprestsdk.mk index 4d30f07c39c..20700ae2b2c 100644 --- a/buildroot/package/libcpprestsdk/libcpprestsdk.mk +++ b/buildroot/package/libcpprestsdk/libcpprestsdk.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBCPPRESTSDK_VERSION = v2.10.1 +LIBCPPRESTSDK_VERSION = v2.10.2 LIBCPPRESTSDK_SITE = $(call github,Microsoft,cpprestsdk,$(LIBCPPRESTSDK_VERSION)) LIBCPPRESTSDK_LICENSE = MIT LIBCPPRESTSDK_LICENSE_FILES = license.txt diff --git a/buildroot/package/libcroco/libcroco.hash b/buildroot/package/libcroco/libcroco.hash index 83d2ffe5150..809671c5ee8 100644 --- a/buildroot/package/libcroco/libcroco.hash +++ b/buildroot/package/libcroco/libcroco.hash @@ -1,2 +1,5 @@ # From http://ftp.acc.umu.se/pub/gnome/sources/libcroco/0.6/libcroco-0.6.12.sha256sum sha256 ddc4b5546c9fb4280a5017e2707fbd4839034ed1aba5b7d4372212f34f84f860 libcroco-0.6.12.tar.xz + +# Hash for license file: +sha256 94b03f1a60a7fd5007149530626a895a6ef5a8b9342abfd56860c5f3956f5d23 COPYING.LIB diff --git a/buildroot/package/libcsv/libcsv.hash b/buildroot/package/libcsv/libcsv.hash index e35c44f9b32..33a521d2565 100644 --- a/buildroot/package/libcsv/libcsv.hash +++ b/buildroot/package/libcsv/libcsv.hash @@ -1,2 +1,3 @@ #locally computed sha256 d9c0431cb803ceb9896ce74f683e6e5a0954e96ae1d9e4028d6e0f967bebd7e4 libcsv-3.0.3.tar.gz +sha256 6876b170378d38f65aadd271485f0a5c45beaa043a7d3de5e1636ec927922c83 COPYING.LESSER diff --git a/buildroot/package/libcue/libcue.hash b/buildroot/package/libcue/libcue.hash index 779cda0d66c..357807f0c8a 100644 --- a/buildroot/package/libcue/libcue.hash +++ b/buildroot/package/libcue/libcue.hash @@ -1,2 +1,3 @@ # Locally computed: -sha256 c3c46d58cebf15b3fe07e6f649014694d338ddd880e941bfb1fd3cedae66c62f libcue-v1.4.0.tar.gz +sha256 f27bc3ebb2e892cd9d32a7bee6d84576a60f955f29f748b9b487b173712f1200 libcue-v2.2.1.tar.gz +sha256 c388d36583fa54e13b6d73ad924d0b68d073ed8a5771e17cb49104705df4504f LICENSE diff --git a/buildroot/package/libcue/libcue.mk b/buildroot/package/libcue/libcue.mk index 7f8e45ecec6..f2d64439fe2 100644 --- a/buildroot/package/libcue/libcue.mk +++ b/buildroot/package/libcue/libcue.mk @@ -4,20 +4,11 @@ # ################################################################################ -LIBCUE_VERSION = v1.4.0 +LIBCUE_VERSION = v2.2.1 LIBCUE_SITE = $(call github,lipnitsk,libcue,$(LIBCUE_VERSION)) LIBCUE_LICENSE = GPL-2.0, BSD-2-Clause (rem.c) -LIBCUE_LICENSE_FILES = COPYING +LIBCUE_LICENSE_FILES = LICENSE LIBCUE_DEPENDENCIES = host-bison host-flex flex LIBCUE_INSTALL_STAGING = YES -LIBCUE_AUTORECONF = YES -LIBCUE_MAKE = $(MAKE1) - -# Needed for autoreconf -define LIBCUE_MAKE_CONFIG_DIR - mkdir $(@D)/config -endef -LIBCUE_POST_EXTRACT_HOOKS += LIBCUE_MAKE_CONFIG_DIR - -$(eval $(autotools-package)) +$(eval $(cmake-package)) diff --git a/buildroot/package/libcuefile/libcuefile.hash b/buildroot/package/libcuefile/libcuefile.hash index 57db91f3227..47c0c2fd76b 100644 --- a/buildroot/package/libcuefile/libcuefile.hash +++ b/buildroot/package/libcuefile/libcuefile.hash @@ -2,3 +2,6 @@ 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/buildroot/package/libcurl/libcurl.hash b/buildroot/package/libcurl/libcurl.hash index b1afe1891d1..cb1e6e72f20 100644 --- a/buildroot/package/libcurl/libcurl.hash +++ b/buildroot/package/libcurl/libcurl.hash @@ -1,4 +1,4 @@ # Locally calculated after checking pgp signature -# https://curl.haxx.se/download/curl-7.58.0.tar.xz.asc -sha256 6a813875243609eb75f37fa72044e4ad618b55ec15a4eafdac2df6a7e800e3e3 curl-7.58.0.tar.xz +# https://curl.haxx.se/download/curl-7.60.0.tar.xz.asc +sha256 8736ff8ded89ddf7e926eec7b16f82597d029fc1469f3a551f1fafaac164e6a0 curl-7.60.0.tar.xz sha256 5f3849ec38ddb927e79f514bf948890c41b8d1407286a49609b8fb1585931095 COPYING diff --git a/buildroot/package/libcurl/libcurl.mk b/buildroot/package/libcurl/libcurl.mk index 39ed3e4da5f..fbaeaa8975f 100644 --- a/buildroot/package/libcurl/libcurl.mk +++ b/buildroot/package/libcurl/libcurl.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBCURL_VERSION = 7.58.0 +LIBCURL_VERSION = 7.60.0 LIBCURL_SOURCE = curl-$(LIBCURL_VERSION).tar.xz LIBCURL_SITE = https://curl.haxx.se/download LIBCURL_DEPENDENCIES = host-pkgconf \ @@ -76,6 +76,13 @@ 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 + define LIBCURL_FIX_DOT_PC printf 'Requires: openssl\n' >>$(@D)/libcurl.pc.in endef diff --git a/buildroot/package/libdaemon/libdaemon.hash b/buildroot/package/libdaemon/libdaemon.hash index 8dbbb5a3582..b5103218280 100644 --- a/buildroot/package/libdaemon/libdaemon.hash +++ b/buildroot/package/libdaemon/libdaemon.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 fd23eb5f6f986dcc7e708307355ba3289abe03cc381fc47a80bca4a50aa6b834 libdaemon-0.14.tar.gz +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 LICENSE diff --git a/buildroot/package/libdcadec/libdcadec.hash b/buildroot/package/libdcadec/libdcadec.hash index dda58d10651..e2b68cd70ff 100644 --- a/buildroot/package/libdcadec/libdcadec.hash +++ b/buildroot/package/libdcadec/libdcadec.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 ed9d207fde3e8d576f3af8b0d1235b3371e315175757173689104efcaebf0d44 libdcadec-v0.2.0.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPLv2.1 diff --git a/buildroot/package/libdmtx/libdmtx.hash b/buildroot/package/libdmtx/libdmtx.hash index 505baf4ee4b..01e4ba49100 100644 --- a/buildroot/package/libdmtx/libdmtx.hash +++ b/buildroot/package/libdmtx/libdmtx.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 686bcfb44e50b96345aa53f41e285f2118a2cf87a333b69b74165a2e7ddca492 libdmtx-0.7.4.tar.gz +sha256 fe6959a664a7abb7d19bf125fa58a045d8757fe3cb3dc41975a54da0e627313d LICENSE diff --git a/buildroot/package/libdnet/libdnet.hash b/buildroot/package/libdnet/libdnet.hash index ee418723d91..d2e820270f6 100644 --- a/buildroot/package/libdnet/libdnet.hash +++ b/buildroot/package/libdnet/libdnet.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 0eb78415c8f2564c2f1e8ad36e98473348d9c94852f796a226360c716cc7ca53 libdnet-1.11.tar.gz +sha256 1e94df12cb3701fa64e07eeb60284bb16a3544815d5a39860dacff7b86610584 LICENSE diff --git a/buildroot/package/libdri2/libdri2.hash b/buildroot/package/libdri2/libdri2.hash index 03a37ad44fc..4cb360ff6b9 100644 --- a/buildroot/package/libdri2/libdri2.hash +++ b/buildroot/package/libdri2/libdri2.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 7c427f5c3fbda3d1df1dc77129e87605f4af1f3ad2adf2653c560d1703aa4395 libdri2-4f1eef3183df2b270c3d5cbef07343ee5127a6a4.tar.gz +sha256 4fac4d581d00f11c459d68b7cb970f3d4e5a5bbfb53784d85f59a90076280301 COPYING diff --git a/buildroot/package/libdrm/libdrm.hash b/buildroot/package/libdrm/libdrm.hash index 0842411c5a8..bc15ecf79f3 100644 --- a/buildroot/package/libdrm/libdrm.hash +++ b/buildroot/package/libdrm/libdrm.hash @@ -1,5 +1,5 @@ -# From https://lists.freedesktop.org/archives/dri-devel/2017-December/160530.html -md5 5307a147dde67ac643f6753a42b5d32c libdrm-2.4.89.tar.bz2 -sha1 43123da26271df9a29deb687c1855bef3fed249c libdrm-2.4.89.tar.bz2 -sha256 629f9782aabbb4809166de5f24d26fe0766055255038f16935602d89f136a02e libdrm-2.4.89.tar.bz2 -sha512 380e4e46cd3971a73264bd1b482791fab0503268adb65ac81b674df009662cfb8ef5741e362f19670b2a43b1c46f022d857706c9a4bebed2b1cddaa317b7706d libdrm-2.4.89.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002853.html +md5 23d87cda92700b710a37d9b8edaa9f54 libdrm-2.4.91.tar.bz2 +sha1 44e42ce3cd41666e343ba393c73f6f1ad9fe1e74 libdrm-2.4.91.tar.bz2 +sha256 634a0ed0cc1eff06f48674b1da81aafa661a9f001e7a4f43dde81076886dc800 libdrm-2.4.91.tar.bz2 +sha512 07578c00c121ba37033db7172590e26d1545f81c242bbce2cfb7fb904bde504822c275d6468e5c5d20360d0046ae73d9b058aa0459ba35eb11927141cc998772 libdrm-2.4.91.tar.bz2 diff --git a/buildroot/package/libdrm/libdrm.mk b/buildroot/package/libdrm/libdrm.mk index 1c898a5b547..8f533d72d7a 100644 --- a/buildroot/package/libdrm/libdrm.mk +++ b/buildroot/package/libdrm/libdrm.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBDRM_VERSION = 2.4.89 +LIBDRM_VERSION = 2.4.91 LIBDRM_SOURCE = libdrm-$(LIBDRM_VERSION).tar.bz2 LIBDRM_SITE = https://dri.freedesktop.org/libdrm LIBDRM_LICENSE = MIT diff --git a/buildroot/package/libdvbcsa/libdvbcsa.hash b/buildroot/package/libdvbcsa/libdvbcsa.hash index d8360e60bce..55ad51b5957 100644 --- a/buildroot/package/libdvbcsa/libdvbcsa.hash +++ b/buildroot/package/libdvbcsa/libdvbcsa.hash @@ -2,3 +2,6 @@ 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/buildroot/package/libdvbpsi/libdvbpsi.hash b/buildroot/package/libdvbpsi/libdvbpsi.hash index cf76616ff4a..5623250dd31 100644 --- a/buildroot/package/libdvbpsi/libdvbpsi.hash +++ b/buildroot/package/libdvbpsi/libdvbpsi.hash @@ -1,4 +1,7 @@ -# From http://download.videolan.org/pub/libdvbpsi/1.3.0/libdvbpsi-1.3.0.tar.bz2.md5 -md5 2b217039a1299000c39423441f77e76a libdvbpsi-1.3.0.tar.bz2 -# From http://download.videolan.org/pub/libdvbpsi/1.3.0/libdvbpsi-1.3.0.tar.bz2.sha256 -sha256 a2fed1d11980662f919bbd1f29e2462719e0f6227e1a531310bd5a706db0a1fe libdvbpsi-1.3.0.tar.bz2 +# From http://download.videolan.org/pub/libdvbpsi/1.3.2/libdvbpsi-1.3.2.tar.bz2.md5 +md5 be7398560955c69d318439fce3a2d84f libdvbpsi-1.3.2.tar.bz2 +# From http://download.videolan.org/pub/libdvbpsi/1.3.2/libdvbpsi-1.3.2.tar.bz2.sha256 +sha256 ac4e39f2b9b1e15706ad261fa175a9430344d650a940be9aaf502d4cb683c5fe libdvbpsi-1.3.2.tar.bz2 + +# Hash for license file: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/buildroot/package/libdvbpsi/libdvbpsi.mk b/buildroot/package/libdvbpsi/libdvbpsi.mk index 9a0a4accdfb..c4118b2652e 100644 --- a/buildroot/package/libdvbpsi/libdvbpsi.mk +++ b/buildroot/package/libdvbpsi/libdvbpsi.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBDVBPSI_VERSION = 1.3.0 +LIBDVBPSI_VERSION = 1.3.2 LIBDVBPSI_SITE = http://download.videolan.org/pub/libdvbpsi/$(LIBDVBPSI_VERSION) LIBDVBPSI_SOURCE = libdvbpsi-$(LIBDVBPSI_VERSION).tar.bz2 LIBDVBPSI_LICENSE = LGPL-2.1+ diff --git a/buildroot/package/libdvbsi/libdvbsi.hash b/buildroot/package/libdvbsi/libdvbsi.hash index 7454625afe8..3628fdbdbeb 100644 --- a/buildroot/package/libdvbsi/libdvbsi.hash +++ b/buildroot/package/libdvbsi/libdvbsi.hash @@ -1,2 +1,5 @@ # From http://www.saftware.de/libdvbsi++/libdvbsi++-0.3.7.tar.bz2.md5 md5 7eb50352c06b17c499a6d51e18e99ec5 libdvbsi++-0.3.7.tar.bz2 + +# Hash for license file: +sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 COPYING diff --git a/buildroot/package/libdvdcss/libdvdcss.hash b/buildroot/package/libdvdcss/libdvdcss.hash index 57abd77a29d..1e1b03ed20f 100644 --- a/buildroot/package/libdvdcss/libdvdcss.hash +++ b/buildroot/package/libdvdcss/libdvdcss.hash @@ -1,2 +1,5 @@ -# From http://download.videolan.org/pub/videolan/libdvdcss/1.4.0/libdvdcss-1.4.0.tar.bz2.sha256 -sha256 2089375984800df29a4817b37f3123c1706723342d6dab4d0a8b75c25c2c845a libdvdcss-1.4.0.tar.bz2 +# From http://download.videolan.org/pub/videolan/libdvdcss/1.4.2/libdvdcss-1.4.2.tar.bz2.sha256 +sha256 78c2ed77ec9c0d8fbed7bf7d3abc82068b8864be494cfad165821377ff3f2575 libdvdcss-1.4.2.tar.bz2 + +# Hash for license file: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/buildroot/package/libdvdcss/libdvdcss.mk b/buildroot/package/libdvdcss/libdvdcss.mk index e5ba3af20b0..0593d556e14 100644 --- a/buildroot/package/libdvdcss/libdvdcss.mk +++ b/buildroot/package/libdvdcss/libdvdcss.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBDVDCSS_VERSION = 1.4.0 +LIBDVDCSS_VERSION = 1.4.2 LIBDVDCSS_SOURCE = libdvdcss-$(LIBDVDCSS_VERSION).tar.bz2 LIBDVDCSS_SITE = http://www.videolan.org/pub/videolan/libdvdcss/$(LIBDVDCSS_VERSION) LIBDVDCSS_INSTALL_STAGING = YES diff --git a/buildroot/package/libdvdnav/libdvdnav.hash b/buildroot/package/libdvdnav/libdvdnav.hash index d3b6fdb810c..c251d0af27c 100644 --- a/buildroot/package/libdvdnav/libdvdnav.hash +++ b/buildroot/package/libdvdnav/libdvdnav.hash @@ -1,2 +1,5 @@ -# From http://download.videolan.org/pub/videolan/libdvdnav/5.0.3/libdvdnav-5.0.3.tar.bz2.sha256 -sha256 5097023e3d2b36944c763f1df707ee06b19dc639b2b68fb30113a5f2cbf60b6d libdvdnav-5.0.3.tar.bz2 +# From http://download.videolan.org/pub/videolan/libdvdnav/6.0.0/libdvdnav-6.0.0.tar.bz2.sha256 +sha256 f0a2711b08a021759792f8eb14bb82ff8a3c929bf88c33b64ffcddaa27935618 libdvdnav-6.0.0.tar.bz2 + +# Hash for license file: +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/buildroot/package/libdvdnav/libdvdnav.mk b/buildroot/package/libdvdnav/libdvdnav.mk index 5cb47ab0ba4..549a31829fc 100644 --- a/buildroot/package/libdvdnav/libdvdnav.mk +++ b/buildroot/package/libdvdnav/libdvdnav.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBDVDNAV_VERSION = 5.0.3 +LIBDVDNAV_VERSION = 6.0.0 LIBDVDNAV_SOURCE = libdvdnav-$(LIBDVDNAV_VERSION).tar.bz2 LIBDVDNAV_SITE = http://www.videolan.org/pub/videolan/libdvdnav/$(LIBDVDNAV_VERSION) LIBDVDNAV_INSTALL_STAGING = YES diff --git a/buildroot/package/libdvdread/libdvdread.hash b/buildroot/package/libdvdread/libdvdread.hash index bef93fc0156..44a3f98468a 100644 --- a/buildroot/package/libdvdread/libdvdread.hash +++ b/buildroot/package/libdvdread/libdvdread.hash @@ -1,2 +1,5 @@ -# From http://download.videolan.org/pub/videolan/libdvdread/5.0.0/libdvdread-5.0.3.tar.bz2.sha256 -sha256 321cdf2dbdc83c96572bc583cd27d8c660ddb540ff16672ecb28607d018ed82b libdvdread-5.0.3.tar.bz2 +# From http://download.videolan.org/pub/videolan/libdvdread/6.0.0/libdvdread-6.0.0.tar.bz2.sha256 +sha256 b33b1953b4860545b75f6efc06e01d9849e2ea4f797652263b0b4af6dd10f935 libdvdread-6.0.0.tar.bz2 + +# Hash for license file: +sha256 d6cb0e9e560f51085556949a84af12b79a00f10ab8b66c752537faf7cd665572 COPYING diff --git a/buildroot/package/libdvdread/libdvdread.mk b/buildroot/package/libdvdread/libdvdread.mk index 0e335e5c676..f41a188f8e9 100644 --- a/buildroot/package/libdvdread/libdvdread.mk +++ b/buildroot/package/libdvdread/libdvdread.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBDVDREAD_VERSION = 5.0.3 +LIBDVDREAD_VERSION = 6.0.0 LIBDVDREAD_SOURCE = libdvdread-$(LIBDVDREAD_VERSION).tar.bz2 LIBDVDREAD_SITE = http://www.videolan.org/pub/videolan/libdvdread/$(LIBDVDREAD_VERSION) LIBDVDREAD_INSTALL_STAGING = YES diff --git a/buildroot/package/libeXosip2/libeXosip2.hash b/buildroot/package/libeXosip2/libeXosip2.hash index 1f16994b0f5..86335a3c47b 100644 --- a/buildroot/package/libeXosip2/libeXosip2.hash +++ b/buildroot/package/libeXosip2/libeXosip2.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 91da1a084c9ab663afe04b493342e075ad59ac54a1af011c7f2ba4543a923564 libeXosip2-3.6.0.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/buildroot/package/libebml/0001-EbmlSInteger-Use-limits-instead-of-climits.patch b/buildroot/package/libebml/0001-EbmlSInteger-Use-limits-instead-of-climits.patch new file mode 100644 index 00000000000..d6e906fe7b3 --- /dev/null +++ b/buildroot/package/libebml/0001-EbmlSInteger-Use-limits-instead-of-climits.patch @@ -0,0 +1,28 @@ +From e46906b80e7662fb78d305f576412f9fa4a22218 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Hugo=20Beauz=C3=A9e-Luyssen?= +Date: Mon, 23 Apr 2018 12:05:42 +0200 +Subject: [PATCH] EbmlSInteger: Use instead of + +The former is the proper header to use for std::numerical_limits + +Retrieved from: +https://github.com/Matroska-Org/libebml/commit/e46906b80e7662fb78d305f576412f9fa4a22218 + +Signed-off-by: Fabrice Fontaine +--- + src/EbmlSInteger.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/EbmlSInteger.cpp b/src/EbmlSInteger.cpp +index 33f3637..b930f7d 100644 +--- a/src/EbmlSInteger.cpp ++++ b/src/EbmlSInteger.cpp +@@ -33,7 +33,7 @@ + \author Moritz Bunkus + */ + #include +-#include ++#include + + #include "ebml/EbmlSInteger.h" + diff --git a/buildroot/package/libebml/libebml.hash b/buildroot/package/libebml/libebml.hash index 5abc1ebfb05..6daa4746c2c 100644 --- a/buildroot/package/libebml/libebml.hash +++ b/buildroot/package/libebml/libebml.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 35fb44daa41961f94a0ac1b8f06801e88cc9bf2ad6f562ced8ab7c1f1a875499 libebml-1.3.3.tar.bz2 +sha256 1e5a7a7820c493aa62b0f35e15b4233c792cc03458c55ebdfa7a6521e4b43e9e libebml-1.3.6.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.LGPL diff --git a/buildroot/package/libebml/libebml.mk b/buildroot/package/libebml/libebml.mk index 8c5dee3f4bd..3c34462738d 100644 --- a/buildroot/package/libebml/libebml.mk +++ b/buildroot/package/libebml/libebml.mk @@ -4,11 +4,11 @@ # ################################################################################ -LIBEBML_VERSION = 1.3.3 -LIBEBML_SOURCE = libebml-$(LIBEBML_VERSION).tar.bz2 +LIBEBML_VERSION = 1.3.6 +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 -$(eval $(autotools-package)) +$(eval $(cmake-package)) diff --git a/buildroot/package/libedit/0001-check-bsd-functions-in-libbsd.patch b/buildroot/package/libedit/0001-check-bsd-functions-in-libbsd.patch index de452a5c24a..7438340d48f 100644 --- a/buildroot/package/libedit/0001-check-bsd-functions-in-libbsd.patch +++ b/buildroot/package/libedit/0001-check-bsd-functions-in-libbsd.patch @@ -1,5 +1,7 @@ configure: on Linux, the BSD functions require linking against libbsd +Signed-off-by: "Fabrice Fontaine" +(Rebased against 20170329-3.1) Signed-off-by: "Yann E. MORIN" (Rebased against 20150325-3.1) Signed-off-by: Bernd Kuhls @@ -15,6 +17,6 @@ diff -durN libedit-20130712-3.1.orig/configure.ac libedit-20130712-3.1/configure +# 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 fgetln vis strvis strunvis __secure_getenv secure_getenv]) - + AC_CHECK_FUNCS([endpwent isascii memchr memset re_comp regcomp strcasecmp strchr strcspn strdup strerror strrchr strstr strtol issetugid wcsdup strlcpy strlcat getline vis strvis strunvis __secure_getenv secure_getenv]) + # strlcpy diff --git a/buildroot/package/libedit/libedit.hash b/buildroot/package/libedit/libedit.hash index 4bfb8afce82..e8136df9c49 100644 --- a/buildroot/package/libedit/libedit.hash +++ b/buildroot/package/libedit/libedit.hash @@ -1,2 +1,3 @@ # Locally computed -sha256 c88a5e4af83c5f40dda8455886ac98923a9c33125699742603a88a0253fcc8c5 libedit-20150325-3.1.tar.gz +sha256 91f2d90fbd2a048ff6dad7131d9a39e690fd8a8fd982a353f1333dd4017dd4be libedit-20170329-3.1.tar.gz +sha256 9da6c9c74987a36c84302982799d17d2f748ba1c1c0c471425716173c1d07649 COPYING diff --git a/buildroot/package/libedit/libedit.mk b/buildroot/package/libedit/libedit.mk index 51ca87d4dbd..bbdc871b35b 100644 --- a/buildroot/package/libedit/libedit.mk +++ b/buildroot/package/libedit/libedit.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBEDIT_VERSION = 20150325-3.1 +LIBEDIT_VERSION = 20170329-3.1 LIBEDIT_SITE = http://www.thrysoee.dk/editline LIBEDIT_INSTALL_STAGING = YES LIBEDIT_DEPENDENCIES = ncurses @@ -14,15 +14,6 @@ LIBEDIT_LICENSE_FILES = COPYING # We're patching configure.ac LIBEDIT_AUTORECONF = YES -# Needed for autoreconf to work properly -define LIBEDIT_FIXUP_M4_DIR - mkdir $(@D)/m4 -endef -LIBEDIT_POST_EXTRACT_HOOKS += LIBEDIT_FIXUP_M4_DIR - -# Doesn't really support !wchar, but support is disabled otherwise -LIBEDIT_CONF_OPTS += --enable-widec - # musl is ISO 10646 compliant but doesn't define __STDC_ISO_10646__, # so let's define it manually ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y) diff --git a/buildroot/package/libee/libee.hash b/buildroot/package/libee/libee.hash index b70242aa295..5ad47e162c5 100644 --- a/buildroot/package/libee/libee.hash +++ b/buildroot/package/libee/libee.hash @@ -1,2 +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/buildroot/package/libenca/libenca.hash b/buildroot/package/libenca/libenca.hash index 1a03c8fa46d..6c874b16a5f 100644 --- a/buildroot/package/libenca/libenca.hash +++ b/buildroot/package/libenca/libenca.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 3a487eca40b41021e2e4b7a6440b97d822e6532db5464471f572ecf77295e8b8 enca-1.19.tar.xz +sha256 87f1bd4a52b4029476b684fcdd51fed3c6b2540e462d3c2d3bfc9be4558b2825 COPYING diff --git a/buildroot/package/libepoxy/0001-Forward-EGL-cflags-into-epoxy.pc.patch b/buildroot/package/libepoxy/0001-Forward-EGL-cflags-into-epoxy.pc.patch deleted file mode 100644 index 286f875bc95..00000000000 --- a/buildroot/package/libepoxy/0001-Forward-EGL-cflags-into-epoxy.pc.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 99b8373dbe8fb3bac835ebad90f91cfd213e4acb Mon Sep 17 00:00:00 2001 -From: Gustavo Zacarias -Date: Wed, 15 Mar 2017 10:02:54 -0300 -Subject: [PATCH] Forward EGL cflags into epoxy.pc - -When building mesa egl without x11 and gles2 the headers need a -MESA_EGL_NO_X11_HEADERS define to avoid including X11 headers. -Forward EGL CFLAGS into epoxy.pc to avoid build failures when linking -against libepoxy on this scenario. - -Signed-off-by: Gustavo Zacarias ---- -Status: pull request https://github.com/anholt/libepoxy/pull/113 - - epoxy.pc.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/epoxy.pc.in b/epoxy.pc.in -index 7828a77..8278b7d 100644 ---- a/epoxy.pc.in -+++ b/epoxy.pc.in -@@ -10,6 +10,6 @@ epoxy_has_wgl=@epoxy_has_wgl@ - Name: epoxy - Description: epoxy GL dispatch Library - Version: @PACKAGE_VERSION@ --Cflags: -I${includedir} -+Cflags: -I${includedir} @EGL_CFLAGS@ - Libs: -L${libdir} -lepoxy - Libs.private: @DLOPEN_LIBS@ --- -2.10.2 - diff --git a/buildroot/package/libepoxy/libepoxy.hash b/buildroot/package/libepoxy/libepoxy.hash index d7ebec5b5fe..654d1675fd2 100644 --- a/buildroot/package/libepoxy/libepoxy.hash +++ b/buildroot/package/libepoxy/libepoxy.hash @@ -1,2 +1,5 @@ -# From ftp://ftp.gnome.org/pub/GNOME/sources/libepoxy/1.4/libepoxy-1.4.3.sha256sum -sha256 0b808a06c9685a62fca34b680abb8bc7fb2fda074478e329b063c1f872b826f6 libepoxy-1.4.3.tar.xz +# From ftp://ftp.gnome.org/pub/gnome/sources/libepoxy/1.5/libepoxy-1.5.0.sha256sum +sha256 4c94995398a6ebf691600dda2e9685a0cac261414175c2adf4645cdfab42a5d5 libepoxy-1.5.0.tar.xz + +# Hashes for license files: +sha256 8d5144666f9c4df9bbd69b8900086d5979259152a1060421cdcc0fb9061a1c12 COPYING diff --git a/buildroot/package/libepoxy/libepoxy.mk b/buildroot/package/libepoxy/libepoxy.mk index 366cc113678..b9498b17b4f 100644 --- a/buildroot/package/libepoxy/libepoxy.mk +++ b/buildroot/package/libepoxy/libepoxy.mk @@ -4,8 +4,8 @@ # ################################################################################ -LIBEPOXY_VERSION_MAJOR = 1.4 -LIBEPOXY_VERSION = $(LIBEPOXY_VERSION_MAJOR).3 +LIBEPOXY_VERSION_MAJOR = 1.5 +LIBEPOXY_VERSION = $(LIBEPOXY_VERSION_MAJOR).0 LIBEPOXY_SITE = http://ftp.gnome.org/pub/gnome/sources/libepoxy/$(LIBEPOXY_VERSION_MAJOR) LIBEPOXY_SOURCE = libepoxy-$(LIBEPOXY_VERSION).tar.xz LIBEPOXY_INSTALL_STAGING = YES diff --git a/buildroot/package/liberation/liberation.hash b/buildroot/package/liberation/liberation.hash index 34328803b65..5ae4034deae 100644 --- a/buildroot/package/liberation/liberation.hash +++ b/buildroot/package/liberation/liberation.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 7890278a6cd17873c57d9cd785c2d230d9abdea837e96516019c5885dd271504 liberation-fonts-ttf-2.00.1.tar.gz +sha256 93fed46019c38bbe566b479d22148e2e8a1e85ada614accb0211c37b2c61c19b LICENSE diff --git a/buildroot/package/libesmtp/libesmtp.hash b/buildroot/package/libesmtp/libesmtp.hash index c9c0fa303e8..9e1ca22b5b2 100644 --- a/buildroot/package/libesmtp/libesmtp.hash +++ b/buildroot/package/libesmtp/libesmtp.hash @@ -1,2 +1,4 @@ # Locally calculated sha256 d0a61a5c52d99fa7ce7d00ed0a07e341dbda67101dbed1ab0cdae3f37db4eb0b libesmtp-1.0.6.tar.bz2 +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING +sha256 f18a0811fa0e220ccbc42f661545e77f0388631e209585ed582a1c693029c6aa COPYING.LIB diff --git a/buildroot/package/libestr/libestr.hash b/buildroot/package/libestr/libestr.hash index e37cbb13c2c..dcb504d3e1b 100644 --- a/buildroot/package/libestr/libestr.hash +++ b/buildroot/package/libestr/libestr.hash @@ -1,2 +1,5 @@ # From http://libestr.adiscon.com/download/libestr-0-1-10/ sha256 bd655e126e750edd18544b88eb1568d200a424a0c23f665eb14bbece07ac703c libestr-0.1.10.tar.gz + +# Hash for license file: +sha256 835b4793da5cbb8965fbd63905b55a4cb4310b7d1b882077d23066b08f901ff8 COPYING diff --git a/buildroot/package/libev/Config.in b/buildroot/package/libev/Config.in index db8d263df03..71abe7737d1 100644 --- a/buildroot/package/libev/Config.in +++ b/buildroot/package/libev/Config.in @@ -1,7 +1,5 @@ config BR2_PACKAGE_LIBEV bool "libev" - # needs memory fences - depends on !BR2_bfin help Userspace library for handling asynchronous notifications diff --git a/buildroot/package/libev/libev.hash b/buildroot/package/libev/libev.hash index d3b7bb5ca3c..ba9d654bee9 100644 --- a/buildroot/package/libev/libev.hash +++ b/buildroot/package/libev/libev.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 973593d3479abdf657674a55afe5f78624b0e440614e2b8cb3a07f16d4d7f821 libev-4.24.tar.gz +sha256 c4dd1a5bc38b041a320b93c5d6c08f5c41a63f2ce718ee16cfcb757fad448199 LICENSE diff --git a/buildroot/package/libevdev/libevdev.hash b/buildroot/package/libevdev/libevdev.hash index 0702a7b0069..e4294dcade5 100644 --- a/buildroot/package/libevdev/libevdev.hash +++ b/buildroot/package/libevdev/libevdev.hash @@ -1,5 +1,8 @@ -# From https://lists.freedesktop.org/archives/input-tools/2018-January/001447.html -md5 c25a8c3939e4ad59a5e9e5e1e354832d libevdev-1.5.8.tar.xz -sha1 a60e7a43570cdbc64af5adf99ca80023d21a1174 libevdev-1.5.8.tar.xz -sha256 6083d81e46609da8ba80cb826c02d9080764a6dec33c8267ccb7e158833d4c6d libevdev-1.5.8.tar.xz -sha512 e9485d8c6b48ebf762b32b003bc6b761c548024ad3bc34a0793485b53383746881fcc9b206a078d571937291e519d9822e50c5d8816778d347094691b65ec3fa libevdev-1.5.8.tar.xz +# https://lists.freedesktop.org/archives/input-tools/2018-March/001464.html +md5 a1ca11e961c1efed720fac4130881904 libevdev-1.5.9.tar.xz +sha1 9457e33af5c1e66e29c1385a5550fe60aef8e42e libevdev-1.5.9.tar.xz +sha256 e1663751443bed9d3e76a4fe2caf6fa866a79705d91cacad815c04e706198a75 libevdev-1.5.9.tar.xz +sha512 4496ab4d9dc165f416a574c21a7fcee54ae104c21ef4785a4dd0311fff428020cdbb5da7bf3f835e78dae05effdb1a557d189347f6e62dd6be2d8bcdc845850c libevdev-1.5.9.tar.xz + +# Hash for license files: +sha256 f063d1279b31e73007e1c54493391818b4cb5f9162d590120397e0347b932137 COPYING diff --git a/buildroot/package/libevdev/libevdev.mk b/buildroot/package/libevdev/libevdev.mk index 1893863efd8..880d75dfbdd 100644 --- a/buildroot/package/libevdev/libevdev.mk +++ b/buildroot/package/libevdev/libevdev.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBEVDEV_VERSION = 1.5.8 +LIBEVDEV_VERSION = 1.5.9 LIBEVDEV_SITE = http://www.freedesktop.org/software/libevdev LIBEVDEV_SOURCE = libevdev-$(LIBEVDEV_VERSION).tar.xz LIBEVDEV_LICENSE = X11 diff --git a/buildroot/package/libevent/libevent.hash b/buildroot/package/libevent/libevent.hash index 21381c87b33..aa0358bcfee 100644 --- a/buildroot/package/libevent/libevent.hash +++ b/buildroot/package/libevent/libevent.hash @@ -1,3 +1,4 @@ # locally computed md5 f3eeaed018542963b7d2416ef1135ecc libevent-2.1.8-stable.tar.gz sha1 2a1b8bb7a262d3fd0ed6a080a20991a6eed675ec libevent-2.1.8-stable.tar.gz +sha256 ff02effc9b331edcdac387d198691bfa3e575e7d244ad10cb826aa51ef085670 LICENSE diff --git a/buildroot/package/libevent/libevent.mk b/buildroot/package/libevent/libevent.mk index 65bf1c2b7b9..f0c989afa12 100644 --- a/buildroot/package/libevent/libevent.mk +++ b/buildroot/package/libevent/libevent.mk @@ -24,8 +24,8 @@ ifneq ($(BR2_PACKAGE_PYTHON),y) LIBEVENT_POST_INSTALL_TARGET_HOOKS += LIBEVENT_REMOVE_PYSCRIPT endif -ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) -LIBEVENT_DEPENDENCIES += host-pkgconf libopenssl +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBEVENT_DEPENDENCIES += host-pkgconf openssl LIBEVENT_CONF_OPTS += --enable-openssl else LIBEVENT_CONF_OPTS += --disable-openssl diff --git a/buildroot/package/libexif/libexif.hash b/buildroot/package/libexif/libexif.hash index cf1b4d7c459..aa9fcc8d89c 100644 --- a/buildroot/package/libexif/libexif.hash +++ b/buildroot/package/libexif/libexif.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 16cdaeb62eb3e6dfab2435f7d7bccd2f37438d21c5218ec4e58efa9157d4d41a libexif-0.6.21.tar.bz2 +sha256 36b6d3fa47916943fd5fec313c584784946047ec1337a78b440e5992cb595f89 COPYING diff --git a/buildroot/package/libfastjson/0001-m4-fix-detection-of-atomics.patch b/buildroot/package/libfastjson/0001-m4-fix-detection-of-atomics.patch deleted file mode 100644 index 1fdbf1923f4..00000000000 --- a/buildroot/package/libfastjson/0001-m4-fix-detection-of-atomics.patch +++ /dev/null @@ -1,86 +0,0 @@ -From df087711cf7be55268a55e7820f4d928cb34c078 Mon Sep 17 00:00:00 2001 -From: "Yann E. MORIN" -Date: Sat, 9 Jul 2016 20:44:36 +0200 -Subject: [PATCH] m4: fix detection of atomics - -In cross-compilation, it is impossible to run code at configure time to -detect the target specifics. - -As such, AC_TRY_RUN fails miserably to detect reliably that atomic -intrisics are present in a toolchain, and decides they are not just -because this is cross-compilation. - -Instead of AC_TRY_RUN, use AC_LINK_IFELSE that does not need to actually -run code, since all we're interested in is whether the intrisics are -present (or not). Fix both the 32- and 64-bit variants, even if the -latter is not used currently. - -Fixes build failures detected by the Buildroot autobuilders, like: - http://autobuild.buildroot.org/results/23a/23ac0e742ed3a70ae4d038f8c9eadc23e708f671/build-end.log - http://autobuild.buildroot.org/results/192/1923d0b570adba494f83747a9610ea6ec35f5223/build-end.log - -and many other cases, espcially on architectures where such intrisics are -present, but where the toolchain does not have threads (and anyway, it -is much more efficient to use the intrisics rather than use mutexes). - -Signed-off-by: "Yann E. MORIN" ---- -Patch sent upstream: - https://github.com/rsyslog/libfastjson/pull/109 - ---- - m4/atomic_operations.m4 | 6 ++---- - m4/atomic_operations_64bit.m4 | 6 ++---- - 2 files changed, 4 insertions(+), 8 deletions(-) - -diff --git a/m4/atomic_operations.m4 b/m4/atomic_operations.m4 -index ad0ee60..7d2bca6 100644 ---- a/m4/atomic_operations.m4 -+++ b/m4/atomic_operations.m4 -@@ -9,9 +9,7 @@ - # - AC_DEFUN([RS_ATOMIC_OPERATIONS], - [AC_CACHE_CHECK([whether the compiler provides atomic builtins], [ap_cv_atomic_builtins], --[AC_TRY_RUN([ --int main() --{ -+[AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[ - unsigned long val = 1010, tmp, *mem = &val; - - if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020) -@@ -44,7 +42,7 @@ int main() - return 1; - - return 0; --}], [ap_cv_atomic_builtins=yes], [ap_cv_atomic_builtins=no], [ap_cv_atomic_builtins=no])]) -+]])], [ap_cv_atomic_builtins=yes], [ap_cv_atomic_builtins=no])]) - - if test "$ap_cv_atomic_builtins" = "yes"; then - AC_DEFINE(HAVE_ATOMIC_BUILTINS, 1, [Define if compiler provides atomic builtins]) -diff --git a/m4/atomic_operations_64bit.m4 b/m4/atomic_operations_64bit.m4 -index 9fbef0a..d01a977 100644 ---- a/m4/atomic_operations_64bit.m4 -+++ b/m4/atomic_operations_64bit.m4 -@@ -9,9 +9,7 @@ - # - AC_DEFUN([RS_ATOMIC_OPERATIONS_64BIT], - [AC_CACHE_CHECK([whether the compiler provides atomic builtins for 64 bit data types], [ap_cv_atomic_builtins_64], --[AC_TRY_RUN([ --int main() --{ -+[AC_LINK_IFELSE([AC_LANG_PROGRAM([], [[ - unsigned long long val = 1010, tmp, *mem = &val; - - if (__sync_fetch_and_add(&val, 1010) != 1010 || val != 2020) -@@ -44,7 +42,7 @@ int main() - return 1; - - return 0; --}], [ap_cv_atomic_builtins_64=yes], [ap_cv_atomic_builtins_64=no], [ap_cv_atomic_builtins_64=no])]) -+]])], [ap_cv_atomic_builtins_64=yes], [ap_cv_atomic_builtins_64=no])]) - - if test "$ap_cv_atomic_builtins_64" = "yes"; then - AC_DEFINE(HAVE_ATOMIC_BUILTINS64, 1, [Define if compiler provides 64 bit atomic builtins]) --- -2.7.4 - diff --git a/buildroot/package/libfastjson/libfastjson.hash b/buildroot/package/libfastjson/libfastjson.hash index 427db9c7026..72fb9856a00 100644 --- a/buildroot/package/libfastjson/libfastjson.hash +++ b/buildroot/package/libfastjson/libfastjson.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 03ef63dcc88417e71c19ce4436804159e3397e3a20d3529efef6a43c3bef5c8d libfastjson-v0.99.4.tar.gz +sha256 7e49057b26a5a9e3c6623e024f95f9fd9a14b571b9150aeb89d6d475fc3633e3 libfastjson-v0.99.8.tar.gz +sha256 b29370bbfa98816e1fca0901f18149d920736771bfd68b4ee0eb00c78b38d245 COPYING diff --git a/buildroot/package/libfastjson/libfastjson.mk b/buildroot/package/libfastjson/libfastjson.mk index 06da0d8edd7..565cdd0ec8c 100644 --- a/buildroot/package/libfastjson/libfastjson.mk +++ b/buildroot/package/libfastjson/libfastjson.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBFASTJSON_VERSION = v0.99.4 +LIBFASTJSON_VERSION = v0.99.8 LIBFASTJSON_SITE = $(call github,rsyslog,libfastjson,$(LIBFASTJSON_VERSION)) LIBFASTJSON_INSTALL_STAGING = YES LIBFASTJSON_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' diff --git a/buildroot/package/libfcgi/libfcgi.hash b/buildroot/package/libfcgi/libfcgi.hash index 586ff1e7ad4..98aa2ecf8f6 100644 --- a/buildroot/package/libfcgi/libfcgi.hash +++ b/buildroot/package/libfcgi/libfcgi.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 66fc45c6b36a21bf2fbbb68e90f780cc21a9da1fffbae75e76d2b4402d3f05b9 fcgi-2.4.0.tar.gz +sha256 f0a8fe4513a43e8eebb24cdcf9d2e7efc52e4d8259178c6d76d3d84418397d81 LICENSE.TERMS diff --git a/buildroot/package/libfcgi/libfcgi.mk b/buildroot/package/libfcgi/libfcgi.mk index ced850c1530..78da772916b 100644 --- a/buildroot/package/libfcgi/libfcgi.mk +++ b/buildroot/package/libfcgi/libfcgi.mk @@ -7,7 +7,7 @@ LIBFCGI_VERSION = 2.4.0 LIBFCGI_SOURCE = fcgi-$(LIBFCGI_VERSION).tar.gz LIBFCGI_SITE = http://www.fastcgi.com/dist -LIBFCGI_LICENSE = fcgi license +LIBFCGI_LICENSE = OML LIBFCGI_LICENSE_FILES = LICENSE.TERMS LIBFCGI_INSTALL_STAGING = YES LIBFCGI_AUTORECONF = YES diff --git a/buildroot/package/libfm-extra/libfm-extra.hash b/buildroot/package/libfm-extra/libfm-extra.hash index 8a78adebb4f..233abe7d753 100644 --- a/buildroot/package/libfm-extra/libfm-extra.hash +++ b/buildroot/package/libfm-extra/libfm-extra.hash @@ -1,3 +1,7 @@ # From https://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/LibFM/ -md5 74997d75e7e87dc73398746fd373bf52 libfm-1.2.4.tar.xz -sha1 2f8183389c8e74edb15c6c8ab260df5dd39f3b2d libfm-1.2.4.tar.xz +md5 02a024714d51e0d37afc7bd596a44f3b libfm-1.3.0.2.tar.xz +sha1 aa7f73987866e557b74b8a28d0fea339d53899b6 libfm-1.3.0.2.tar.xz + +# Hash for license files: +sha256 d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388 COPYING +sha256 c3a3d93e111462f2b0292b56a6a7b87d342fd7156741d8b81b8b08723be4597e src/extra/fm-xml-file.c diff --git a/buildroot/package/libfm-extra/libfm-extra.mk b/buildroot/package/libfm-extra/libfm-extra.mk index 67d6dc12947..7802b88631e 100644 --- a/buildroot/package/libfm-extra/libfm-extra.mk +++ b/buildroot/package/libfm-extra/libfm-extra.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBFM_EXTRA_VERSION = 1.2.4 +LIBFM_EXTRA_VERSION = 1.3.0.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 diff --git a/buildroot/package/libfm/0001-modules-fix-cross-compilation.patch b/buildroot/package/libfm/0001-modules-fix-cross-compilation.patch new file mode 100644 index 00000000000..8b5f1cff6bf --- /dev/null +++ b/buildroot/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/buildroot/package/libfm/libfm.hash b/buildroot/package/libfm/libfm.hash index 69c4c31f6de..71befc355eb 100644 --- a/buildroot/package/libfm/libfm.hash +++ b/buildroot/package/libfm/libfm.hash @@ -1,3 +1,7 @@ # From https://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/LibFM/ -md5 a1ba9ae5e920f38b647dd511edd6c807 libfm-1.2.5.tar.xz -sha1 5887aa4e85ee0964e7da67368136849957afd5d6 libfm-1.2.5.tar.xz +md5 02a024714d51e0d37afc7bd596a44f3b libfm-1.3.0.2.tar.xz +sha1 aa7f73987866e557b74b8a28d0fea339d53899b6 libfm-1.3.0.2.tar.xz + +# Hash for license files: +sha256 d8c320ffc0030d1b096ae4732b50d2b811cf95e9a9b7377c1127b2563e0a0388 COPYING +sha256 c3a3d93e111462f2b0292b56a6a7b87d342fd7156741d8b81b8b08723be4597e src/extra/fm-xml-file.c diff --git a/buildroot/package/libfm/libfm.mk b/buildroot/package/libfm/libfm.mk index c49cd3e6333..292a0ab5d80 100644 --- a/buildroot/package/libfm/libfm.mk +++ b/buildroot/package/libfm/libfm.mk @@ -4,13 +4,15 @@ # ################################################################################ -LIBFM_VERSION = 1.2.5 +LIBFM_VERSION = 1.3.0.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 diff --git a/buildroot/package/libfreefare/libfreefare.hash b/buildroot/package/libfreefare/libfreefare.hash index 4d231368b41..ed982c9dd7c 100644 --- a/buildroot/package/libfreefare/libfreefare.hash +++ b/buildroot/package/libfreefare/libfreefare.hash @@ -1,2 +1,5 @@ # From https://github.com/nfc-tools/libfreefare/releases/download/libfreefare-0.4.0/libfreefare-0.4.0.tar.bz2 sha256 bfa31d14a99a1247f5ed49195d6373de512e3eb75bf1627658b40cf7f876bc64 libfreefare-0.4.0.tar.bz2 + +# Hash for license file: +sha256 be6209dfd763a0ba77fbe990cfd2512804441d8b5f0cad927baa3341b50fcade COPYING diff --git a/buildroot/package/libfreeglut/libfreeglut.hash b/buildroot/package/libfreeglut/libfreeglut.hash index a69a0b41d1d..cc7a2866163 100644 --- a/buildroot/package/libfreeglut/libfreeglut.hash +++ b/buildroot/package/libfreeglut/libfreeglut.hash @@ -1,2 +1,5 @@ # From http://sourceforge.net/projects/freeglut/files/freeglut/3.0.0/ sha1 fca52242f9344627a30f11487ee42002e6b0dacd freeglut-3.0.0.tar.gz + +# Hash for license file: +sha256 b6593d5ec4c113a274abb85b10e8615895cb0ddb89f7912af5fe5aa8df38a275 COPYING diff --git a/buildroot/package/libfreeimage/0005-Manage-powf64-with-glibc.patch b/buildroot/package/libfreeimage/0005-Manage-powf64-with-glibc.patch new file mode 100644 index 00000000000..f85aef541fc --- /dev/null +++ b/buildroot/package/libfreeimage/0005-Manage-powf64-with-glibc.patch @@ -0,0 +1,725 @@ +From d8f40eabb25953bff5d90017478dc59d586346d1 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 3 May 2018 15:44:14 +0200 +Subject: [PATCH] Manage powf64 with glibc + +powf64 is now included in latest version of glibc so rename powf64 into +powf_64 + +Signed-off-by: Fabrice Fontaine +--- + Source/LibRawLite/dcraw/dcraw.c | 108 ++++++++++++++-------------- + Source/LibRawLite/internal/dcraw_common.cpp | 108 ++++++++++++++-------------- + 2 files changed, 108 insertions(+), 108 deletions(-) + +diff --git a/Source/LibRawLite/dcraw/dcraw.c b/Source/LibRawLite/dcraw/dcraw.c +index 6bf607d..3e52cec 100644 +--- a/Source/LibRawLite/dcraw/dcraw.c ++++ b/Source/LibRawLite/dcraw/dcraw.c +@@ -6727,7 +6727,7 @@ static float powf_lim(float a, float b, float limup) + { + return (b>limup || b < -limup)?0.f:powf(a,b); + } +-static float powf64(float a, float b) ++static float powf_64(float a, float b) + { + return powf_lim(a,b,64.f); + } +@@ -6764,7 +6764,7 @@ static float _CanonConvert2EV(short in) + static float _CanonConvertAperture(short in) + { + if (in == (short)0xffe0) return 0.0f; +- else return powf64(2.0f, _CanonConvert2EV(in) / 2.0f); ++ else return powf_64(2.0f, _CanonConvert2EV(in) / 2.0f); + } + + void CLASS setCanonBodyFeatures (unsigned id) +@@ -7046,15 +7046,15 @@ void CLASS processNikonLensData (uchar *LensData, unsigned len) + imgdata.lens.nikon.NikonLensIDNumber = LensData[i]; + imgdata.lens.nikon.NikonLensFStops = LensData[i + 1]; + imgdata.lens.makernotes.LensFStops = (float)imgdata.lens.nikon.NikonLensFStops /12.0f; +- imgdata.lens.makernotes.MinFocal = 5.0f * powf64(2.0f, (float)LensData[i + 2] / 24.0f); +- imgdata.lens.makernotes.MaxFocal = 5.0f * powf64(2.0f, (float)LensData[i + 3] / 24.0f); +- imgdata.lens.makernotes.MaxAp4MinFocal = powf64(2.0f, (float)LensData[i + 4] / 24.0f); +- imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(2.0f, (float)LensData[i + 5] / 24.0f); ++ imgdata.lens.makernotes.MinFocal = 5.0f * powf_64(2.0f, (float)LensData[i + 2] / 24.0f); ++ imgdata.lens.makernotes.MaxFocal = 5.0f * powf_64(2.0f, (float)LensData[i + 3] / 24.0f); ++ imgdata.lens.makernotes.MaxAp4MinFocal = powf_64(2.0f, (float)LensData[i + 4] / 24.0f); ++ imgdata.lens.makernotes.MaxAp4MaxFocal = powf_64(2.0f, (float)LensData[i + 5] / 24.0f); + imgdata.lens.nikon.NikonMCUVersion = LensData[i + 6]; + if (i != 2) + { +- imgdata.lens.makernotes.CurFocal = 5.0f * powf64(2.0f, (float)LensData[i - 1] / 24.0f); +- imgdata.lens.nikon.NikonEffectiveMaxAp = powf64(2.0f, (float)LensData[i + 7] / 24.0f); ++ imgdata.lens.makernotes.CurFocal = 5.0f * powf_64(2.0f, (float)LensData[i - 1] / 24.0f); ++ imgdata.lens.nikon.NikonEffectiveMaxAp = powf_64(2.0f, (float)LensData[i + 7] / 24.0f); + } + imgdata.lens.makernotes.LensID = + (unsigned long long) LensData[i] << 56 | +@@ -7563,11 +7563,11 @@ void CLASS process_Sony_0x9050 (uchar * buf, unsigned id) + { + if (buf[0]) + imgdata.lens.makernotes.MaxAp = +- my_roundf(powf64(2.0f, ((float)SonySubstitution[buf[0]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f; ++ my_roundf(powf_64(2.0f, ((float)SonySubstitution[buf[0]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f; + + if (buf[1]) + imgdata.lens.makernotes.MinAp = +- my_roundf(powf64(2.0f, ((float)SonySubstitution[buf[1]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f; ++ my_roundf(powf_64(2.0f, ((float)SonySubstitution[buf[1]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f; + } + + if (imgdata.lens.makernotes.CameraMount != LIBRAW_MOUNT_FixedLens) +@@ -7577,7 +7577,7 @@ void CLASS process_Sony_0x9050 (uchar * buf, unsigned id) + lid = SonySubstitution[buf[0x3d]] << 8 | + SonySubstitution[buf[0x3c]]; + imgdata.lens.makernotes.CurAp = +- powf64(2.0f, ((float)lid/256.0f - 16.0f) / 2.0f); ++ powf_64(2.0f, ((float)lid/256.0f - 16.0f) / 2.0f); + } + if (buf[0x105] && (imgdata.lens.makernotes.LensMount != LIBRAW_MOUNT_Canon_EF)) + imgdata.lens.makernotes.LensMount = +@@ -7957,7 +7957,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + { + unsigned char cc; + fread(&cc, 1, 1, ifp); +- iso_speed = (int)(100.0 * powf64(2.0, (double)(cc) / 12.0 - 5.0)); ++ iso_speed = (int)(100.0 * powf_64(2.0, (double)(cc) / 12.0 - 5.0)); + break; + } + } +@@ -7989,7 +7989,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + } + break; + case 0x1002: +- imgdata.lens.makernotes.CurAp = powf64(2.0f, getreal(type)/2); ++ imgdata.lens.makernotes.CurAp = powf_64(2.0f, getreal(type)/2); + break; + case 0x20100201: + imgdata.lens.makernotes.LensID = +@@ -8009,10 +8009,10 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + fread(imgdata.lens.makernotes.Lens, len, 1, ifp); + break; + case 0x20100205: +- imgdata.lens.makernotes.MaxAp4MinFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4MinFocal = powf_64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100206: +- imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4MaxFocal = powf_64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100207: + imgdata.lens.makernotes.MinFocal = (float)get2(); +@@ -8023,7 +8023,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + imgdata.lens.makernotes.MaxFocal = imgdata.lens.makernotes.MinFocal; + break; + case 0x2010020a: +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4CurFocal = powf_64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100301: + imgdata.lens.makernotes.TeleconverterID = fgetc(ifp) << 8; +@@ -8121,13 +8121,13 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + if (table_buf[iLensData+9] && + (fabs(imgdata.lens.makernotes.CurFocal) < 0.1f)) + imgdata.lens.makernotes.CurFocal = +- 10*(table_buf[iLensData+9]>>2) * powf64(4, (table_buf[iLensData+9] & 0x03)-2); ++ 10*(table_buf[iLensData+9]>>2) * powf_64(4, (table_buf[iLensData+9] & 0x03)-2); + if (table_buf[iLensData+10] & 0xf0) + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+10] & 0xf0) >>4)/4.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+10] & 0xf0) >>4)/4.0f); + if (table_buf[iLensData+10] & 0x0f) + imgdata.lens.makernotes.MinAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+10] & 0x0f) + 10)/4.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+10] & 0x0f) + 10)/4.0f); + if ( + (imgdata.lens.makernotes.CamID != 0x12e6c) && // K-r + (imgdata.lens.makernotes.CamID != 0x12e76) && // K-5 +@@ -8148,14 +8148,14 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + if ((table_buf[iLensData+14] > 1) && + (fabs(imgdata.lens.makernotes.MaxAp4CurFocal) < 0.7f)) + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+14] & 0x7f) -1)/32.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+14] & 0x7f) -1)/32.0f); + } + else if ((imgdata.lens.makernotes.CamID != 0x12e76) && // K-5 + (table_buf[iLensData+15] > 1) && + (fabs(imgdata.lens.makernotes.MaxAp4CurFocal) < 0.7f)) + { + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+15] & 0x7f) -1)/32.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+15] & 0x7f) -1)/32.0f); + } + } + free(table_buf); +@@ -8321,7 +8321,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + lid = (((ushort)table_buf[2])<<8) | + ((ushort)table_buf[3]); + imgdata.lens.makernotes.CurAp = +- powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f); ++ powf_64(2.0f, ((float)lid/8.0f-1.0f)/2.0f); + } + break; + case 1536: +@@ -8801,7 +8801,7 @@ void CLASS parse_makernote (int base, int uptag) + } + break; + case 0x1002: +- imgdata.lens.makernotes.CurAp = powf64(2.0f, getreal(type)/2); ++ imgdata.lens.makernotes.CurAp = powf_64(2.0f, getreal(type)/2); + break; + case 0x20100201: + imgdata.lens.makernotes.LensID = +@@ -8821,10 +8821,10 @@ void CLASS parse_makernote (int base, int uptag) + fread(imgdata.lens.makernotes.Lens, len, 1, ifp); + break; + case 0x20100205: +- imgdata.lens.makernotes.MaxAp4MinFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4MinFocal = powf_64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100206: +- imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4MaxFocal = powf_64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100207: + imgdata.lens.makernotes.MinFocal = (float)get2(); +@@ -8835,7 +8835,7 @@ void CLASS parse_makernote (int base, int uptag) + imgdata.lens.makernotes.MaxFocal = imgdata.lens.makernotes.MinFocal; + break; + case 0x2010020a: +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4CurFocal = powf_64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100301: + imgdata.lens.makernotes.TeleconverterID = fgetc(ifp) << 8; +@@ -8993,13 +8993,13 @@ void CLASS parse_makernote (int base, int uptag) + { + if (table_buf[iLensData+9] && (fabs(imgdata.lens.makernotes.CurFocal) < 0.1f)) + imgdata.lens.makernotes.CurFocal = +- 10*(table_buf[iLensData+9]>>2) * powf64(4, (table_buf[iLensData+9] & 0x03)-2); ++ 10*(table_buf[iLensData+9]>>2) * powf_64(4, (table_buf[iLensData+9] & 0x03)-2); + if (table_buf[iLensData+10] & 0xf0) + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+10] & 0xf0) >>4)/4.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+10] & 0xf0) >>4)/4.0f); + if (table_buf[iLensData+10] & 0x0f) + imgdata.lens.makernotes.MinAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+10] & 0x0f) + 10)/4.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+10] & 0x0f) + 10)/4.0f); + if ( + (imgdata.lens.makernotes.CamID != 0x12e6c) && // K-r + (imgdata.lens.makernotes.CamID != 0x12e76) && // K-5 +@@ -9020,14 +9020,14 @@ void CLASS parse_makernote (int base, int uptag) + if ((table_buf[iLensData+14] > 1) && + (fabs(imgdata.lens.makernotes.MaxAp4CurFocal) < 0.7f)) + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+14] & 0x7f) -1)/32.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+14] & 0x7f) -1)/32.0f); + } + else if ((imgdata.lens.makernotes.CamID != 0x12e76) && // K-5 + (table_buf[iLensData+15] > 1) && + (fabs(imgdata.lens.makernotes.MaxAp4CurFocal) < 0.7f)) + { + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+15] & 0x7f) -1)/32.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+15] & 0x7f) -1)/32.0f); + } + } + free(table_buf); +@@ -9188,7 +9188,7 @@ void CLASS parse_makernote (int base, int uptag) + lid = (((ushort)table_buf[2])<<8) | + ((ushort)table_buf[3]); + imgdata.lens.makernotes.CurAp = +- powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f); ++ powf_64(2.0f, ((float)lid/8.0f-1.0f)/2.0f); + } + break; + case 1536: +@@ -9273,15 +9273,15 @@ void CLASS parse_makernote (int base, int uptag) + { + unsigned char cc; + fread(&cc,1,1,ifp); +- iso_speed = int(100.0 * powf64(2.0f,float(cc)/12.0-5.0)); ++ iso_speed = int(100.0 * powf_64(2.0f,float(cc)/12.0-5.0)); + } + if (tag == 4 && len > 26 && len < 35) { + if ((i=(get4(),get2())) != 0x7fff && (!iso_speed || iso_speed == 65535)) +- iso_speed = 50 * powf64(2.0, i/32.0 - 4); ++ iso_speed = 50 * powf_64(2.0, i/32.0 - 4); + if ((i=(get2(),get2())) != 0x7fff && !aperture) +- aperture = powf64(2.0, i/64.0); ++ aperture = powf_64(2.0, i/64.0); + if ((i=get2()) != 0xffff && !shutter) +- shutter = powf64(2.0, (short) i/-32.0); ++ shutter = powf_64(2.0, (short) i/-32.0); + wbi = (get2(),get2()); + shot_order = (get2(),get2()); + } +@@ -9732,7 +9732,7 @@ void CLASS parse_exif (int base) + imgdata.lens.Lens[0] = 0; + break; + case 0x9205: +- imgdata.lens.EXIF_MaxAp = powf64(2.0f, (getreal(type) / 2.0f)); ++ imgdata.lens.EXIF_MaxAp = powf_64(2.0f, (getreal(type) / 2.0f)); + break; + #endif + case 33434: shutter = getreal(type); break; +@@ -9745,10 +9745,10 @@ void CLASS parse_exif (int base) + case 36867: + case 36868: get_timestamp(0); break; + case 37377: if ((expo = -getreal(type)) < 128 && shutter == 0.) +- shutter = powf64(2.0, expo); break; ++ shutter = powf_64(2.0, expo); break; + case 37378: + if (fabs(ape = getreal(type))<256.0) +- aperture = powf64(2.0, ape/2); ++ aperture = powf_64(2.0, ape/2); + break; + case 37385: flash_used = getreal(type); break; + case 37386: focal_len = getreal(type); break; +@@ -10361,7 +10361,7 @@ int CLASS parse_tiff_ifd (int base) + imgdata.lens.Lens[0] = 0; + break; + case 0x9205: +- imgdata.lens.EXIF_MaxAp = powf64(2.0f, (getreal(type) / 2.0f)); ++ imgdata.lens.EXIF_MaxAp = powf_64(2.0f, (getreal(type) / 2.0f)); + break; + // IB end + #endif +@@ -11130,22 +11130,22 @@ void CLASS parse_ciff (int offset, int length, int depth) + thumb_length = len; + } + if (type == 0x1818) { +- shutter = powf64(2.0f, -int_to_float((get4(),get4()))); +- aperture = powf64(2.0f, int_to_float(get4())/2); ++ shutter = powf_64(2.0f, -int_to_float((get4(),get4()))); ++ aperture = powf_64(2.0f, int_to_float(get4())/2); + #ifdef LIBRAW_LIBRARY_BUILD + imgdata.lens.makernotes.CurAp = aperture; + #endif + } + if (type == 0x102a) { + // iso_speed = pow (2.0, (get4(),get2())/32.0 - 4) * 50; +- iso_speed = powf64(2.0f, ((get2(),get2()) + get2())/32.0f - 5.0f) * 100.0f; ++ iso_speed = powf_64(2.0f, ((get2(),get2()) + get2())/32.0f - 5.0f) * 100.0f; + #ifdef LIBRAW_LIBRARY_BUILD + aperture = _CanonConvertAperture((get2(),get2())); + imgdata.lens.makernotes.CurAp = aperture; + #else +- aperture = powf64(2.0, (get2(),(short)get2())/64.0); ++ aperture = powf_64(2.0, (get2(),(short)get2())/64.0); + #endif +- shutter = powf64(2.0,-((short)get2())/32.0); ++ shutter = powf_64(2.0,-((short)get2())/32.0); + wbi = (get2(),get2()); + if (wbi > 17) wbi = 0; + fseek (ifp, 32, SEEK_CUR); +@@ -11349,8 +11349,8 @@ void CLASS parse_phase_one (int base) + setPhaseOneFeatures(unique_id); + break; + case 0x0401: +- if (type == 4) imgdata.lens.makernotes.CurAp = powf64(2.0f, (int_to_float(data)/2.0f)); +- else imgdata.lens.makernotes.CurAp = powf64(2.0f, (getreal(type)/2.0f)); ++ if (type == 4) imgdata.lens.makernotes.CurAp = powf_64(2.0f, (int_to_float(data)/2.0f)); ++ else imgdata.lens.makernotes.CurAp = powf_64(2.0f, (getreal(type)/2.0f)); + break; + case 0x0403: + if (type == 4) imgdata.lens.makernotes.CurFocal = int_to_float(data); +@@ -11364,16 +11364,16 @@ void CLASS parse_phase_one (int base) + break; + case 0x0414: + if (type == 4) { +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, (int_to_float(data)/2.0f)); ++ imgdata.lens.makernotes.MaxAp4CurFocal = powf_64(2.0f, (int_to_float(data)/2.0f)); + } else { +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, (getreal(type) / 2.0f)); ++ imgdata.lens.makernotes.MaxAp4CurFocal = powf_64(2.0f, (getreal(type) / 2.0f)); + } + break; + case 0x0415: + if (type == 4) { +- imgdata.lens.makernotes.MinAp4CurFocal = powf64(2.0f, (int_to_float(data)/2.0f)); ++ imgdata.lens.makernotes.MinAp4CurFocal = powf_64(2.0f, (int_to_float(data)/2.0f)); + } else { +- imgdata.lens.makernotes.MinAp4CurFocal = powf64(2.0f, (getreal(type) / 2.0f)); ++ imgdata.lens.makernotes.MinAp4CurFocal = powf_64(2.0f, (getreal(type) / 2.0f)); + } + break; + case 0x0416: +@@ -13324,15 +13324,15 @@ void CLASS identify() + case 18: iso_speed = 320; break; + case 19: iso_speed = 400; break; + } +- shutter = powf64(2.0f, (((float)get4())/8.0f)) / 16000.0f; ++ shutter = powf_64(2.0f, (((float)get4())/8.0f)) / 16000.0f; + FORC4 cam_mul[c ^ (c >> 1)] = get4(); + fseek (ifp, 88, SEEK_SET); +- aperture = powf64(2.0f, ((float)get4())/16.0f); ++ aperture = powf_64(2.0f, ((float)get4())/16.0f); + fseek (ifp, 112, SEEK_SET); + focal_len = get4(); + #ifdef LIBRAW_LIBRARY_BUILD + fseek (ifp, 104, SEEK_SET); +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, ((float)get4())/16.0f); ++ imgdata.lens.makernotes.MaxAp4CurFocal = powf_64(2.0f, ((float)get4())/16.0f); + fseek (ifp, 124, SEEK_SET); + fread(imgdata.lens.makernotes.Lens, 32, 1, ifp); + imgdata.lens.makernotes.CameraMount = LIBRAW_MOUNT_Contax_N; +diff --git a/Source/LibRawLite/internal/dcraw_common.cpp b/Source/LibRawLite/internal/dcraw_common.cpp +index a936a93..0fc4d81 100644 +--- a/Source/LibRawLite/internal/dcraw_common.cpp ++++ b/Source/LibRawLite/internal/dcraw_common.cpp +@@ -5543,7 +5543,7 @@ static float powf_lim(float a, float b, float limup) + { + return (b>limup || b < -limup)?0.f:powf(a,b); + } +-static float powf64(float a, float b) ++static float powf_64(float a, float b) + { + return powf_lim(a,b,64.f); + } +@@ -5580,7 +5580,7 @@ static float _CanonConvert2EV(short in) + static float _CanonConvertAperture(short in) + { + if (in == (short)0xffe0) return 0.0f; +- else return powf64(2.0f, _CanonConvert2EV(in) / 2.0f); ++ else return powf_64(2.0f, _CanonConvert2EV(in) / 2.0f); + } + + void CLASS setCanonBodyFeatures (unsigned id) +@@ -5862,15 +5862,15 @@ void CLASS processNikonLensData (uchar *LensData, unsigned len) + imgdata.lens.nikon.NikonLensIDNumber = LensData[i]; + imgdata.lens.nikon.NikonLensFStops = LensData[i + 1]; + imgdata.lens.makernotes.LensFStops = (float)imgdata.lens.nikon.NikonLensFStops /12.0f; +- imgdata.lens.makernotes.MinFocal = 5.0f * powf64(2.0f, (float)LensData[i + 2] / 24.0f); +- imgdata.lens.makernotes.MaxFocal = 5.0f * powf64(2.0f, (float)LensData[i + 3] / 24.0f); +- imgdata.lens.makernotes.MaxAp4MinFocal = powf64(2.0f, (float)LensData[i + 4] / 24.0f); +- imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(2.0f, (float)LensData[i + 5] / 24.0f); ++ imgdata.lens.makernotes.MinFocal = 5.0f * powf_64(2.0f, (float)LensData[i + 2] / 24.0f); ++ imgdata.lens.makernotes.MaxFocal = 5.0f * powf_64(2.0f, (float)LensData[i + 3] / 24.0f); ++ imgdata.lens.makernotes.MaxAp4MinFocal = powf_64(2.0f, (float)LensData[i + 4] / 24.0f); ++ imgdata.lens.makernotes.MaxAp4MaxFocal = powf_64(2.0f, (float)LensData[i + 5] / 24.0f); + imgdata.lens.nikon.NikonMCUVersion = LensData[i + 6]; + if (i != 2) + { +- imgdata.lens.makernotes.CurFocal = 5.0f * powf64(2.0f, (float)LensData[i - 1] / 24.0f); +- imgdata.lens.nikon.NikonEffectiveMaxAp = powf64(2.0f, (float)LensData[i + 7] / 24.0f); ++ imgdata.lens.makernotes.CurFocal = 5.0f * powf_64(2.0f, (float)LensData[i - 1] / 24.0f); ++ imgdata.lens.nikon.NikonEffectiveMaxAp = powf_64(2.0f, (float)LensData[i + 7] / 24.0f); + } + imgdata.lens.makernotes.LensID = + (unsigned long long) LensData[i] << 56 | +@@ -6379,11 +6379,11 @@ void CLASS process_Sony_0x9050 (uchar * buf, unsigned id) + { + if (buf[0]) + imgdata.lens.makernotes.MaxAp = +- my_roundf(powf64(2.0f, ((float)SonySubstitution[buf[0]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f; ++ my_roundf(powf_64(2.0f, ((float)SonySubstitution[buf[0]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f; + + if (buf[1]) + imgdata.lens.makernotes.MinAp = +- my_roundf(powf64(2.0f, ((float)SonySubstitution[buf[1]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f; ++ my_roundf(powf_64(2.0f, ((float)SonySubstitution[buf[1]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f; + } + + if (imgdata.lens.makernotes.CameraMount != LIBRAW_MOUNT_FixedLens) +@@ -6393,7 +6393,7 @@ void CLASS process_Sony_0x9050 (uchar * buf, unsigned id) + lid = SonySubstitution[buf[0x3d]] << 8 | + SonySubstitution[buf[0x3c]]; + imgdata.lens.makernotes.CurAp = +- powf64(2.0f, ((float)lid/256.0f - 16.0f) / 2.0f); ++ powf_64(2.0f, ((float)lid/256.0f - 16.0f) / 2.0f); + } + if (buf[0x105] && (imgdata.lens.makernotes.LensMount != LIBRAW_MOUNT_Canon_EF)) + imgdata.lens.makernotes.LensMount = +@@ -6773,7 +6773,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + { + unsigned char cc; + fread(&cc, 1, 1, ifp); +- iso_speed = (int)(100.0 * powf64(2.0, (double)(cc) / 12.0 - 5.0)); ++ iso_speed = (int)(100.0 * powf_64(2.0, (double)(cc) / 12.0 - 5.0)); + break; + } + } +@@ -6805,7 +6805,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + } + break; + case 0x1002: +- imgdata.lens.makernotes.CurAp = powf64(2.0f, getreal(type)/2); ++ imgdata.lens.makernotes.CurAp = powf_64(2.0f, getreal(type)/2); + break; + case 0x20100201: + imgdata.lens.makernotes.LensID = +@@ -6825,10 +6825,10 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + fread(imgdata.lens.makernotes.Lens, len, 1, ifp); + break; + case 0x20100205: +- imgdata.lens.makernotes.MaxAp4MinFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4MinFocal = powf_64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100206: +- imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4MaxFocal = powf_64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100207: + imgdata.lens.makernotes.MinFocal = (float)get2(); +@@ -6839,7 +6839,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + imgdata.lens.makernotes.MaxFocal = imgdata.lens.makernotes.MinFocal; + break; + case 0x2010020a: +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4CurFocal = powf_64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100301: + imgdata.lens.makernotes.TeleconverterID = fgetc(ifp) << 8; +@@ -6937,13 +6937,13 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + if (table_buf[iLensData+9] && + (fabs(imgdata.lens.makernotes.CurFocal) < 0.1f)) + imgdata.lens.makernotes.CurFocal = +- 10*(table_buf[iLensData+9]>>2) * powf64(4, (table_buf[iLensData+9] & 0x03)-2); ++ 10*(table_buf[iLensData+9]>>2) * powf_64(4, (table_buf[iLensData+9] & 0x03)-2); + if (table_buf[iLensData+10] & 0xf0) + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+10] & 0xf0) >>4)/4.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+10] & 0xf0) >>4)/4.0f); + if (table_buf[iLensData+10] & 0x0f) + imgdata.lens.makernotes.MinAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+10] & 0x0f) + 10)/4.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+10] & 0x0f) + 10)/4.0f); + if ( + (imgdata.lens.makernotes.CamID != 0x12e6c) && // K-r + (imgdata.lens.makernotes.CamID != 0x12e76) && // K-5 +@@ -6964,14 +6964,14 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + if ((table_buf[iLensData+14] > 1) && + (fabs(imgdata.lens.makernotes.MaxAp4CurFocal) < 0.7f)) + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+14] & 0x7f) -1)/32.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+14] & 0x7f) -1)/32.0f); + } + else if ((imgdata.lens.makernotes.CamID != 0x12e76) && // K-5 + (table_buf[iLensData+15] > 1) && + (fabs(imgdata.lens.makernotes.MaxAp4CurFocal) < 0.7f)) + { + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+15] & 0x7f) -1)/32.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+15] & 0x7f) -1)/32.0f); + } + } + free(table_buf); +@@ -7137,7 +7137,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + lid = (((ushort)table_buf[2])<<8) | + ((ushort)table_buf[3]); + imgdata.lens.makernotes.CurAp = +- powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f); ++ powf_64(2.0f, ((float)lid/8.0f-1.0f)/2.0f); + } + break; + case 1536: +@@ -7617,7 +7617,7 @@ void CLASS parse_makernote (int base, int uptag) + } + break; + case 0x1002: +- imgdata.lens.makernotes.CurAp = powf64(2.0f, getreal(type)/2); ++ imgdata.lens.makernotes.CurAp = powf_64(2.0f, getreal(type)/2); + break; + case 0x20100201: + imgdata.lens.makernotes.LensID = +@@ -7637,10 +7637,10 @@ void CLASS parse_makernote (int base, int uptag) + fread(imgdata.lens.makernotes.Lens, len, 1, ifp); + break; + case 0x20100205: +- imgdata.lens.makernotes.MaxAp4MinFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4MinFocal = powf_64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100206: +- imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4MaxFocal = powf_64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100207: + imgdata.lens.makernotes.MinFocal = (float)get2(); +@@ -7651,7 +7651,7 @@ void CLASS parse_makernote (int base, int uptag) + imgdata.lens.makernotes.MaxFocal = imgdata.lens.makernotes.MinFocal; + break; + case 0x2010020a: +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4CurFocal = powf_64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100301: + imgdata.lens.makernotes.TeleconverterID = fgetc(ifp) << 8; +@@ -7809,13 +7809,13 @@ void CLASS parse_makernote (int base, int uptag) + { + if (table_buf[iLensData+9] && (fabs(imgdata.lens.makernotes.CurFocal) < 0.1f)) + imgdata.lens.makernotes.CurFocal = +- 10*(table_buf[iLensData+9]>>2) * powf64(4, (table_buf[iLensData+9] & 0x03)-2); ++ 10*(table_buf[iLensData+9]>>2) * powf_64(4, (table_buf[iLensData+9] & 0x03)-2); + if (table_buf[iLensData+10] & 0xf0) + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+10] & 0xf0) >>4)/4.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+10] & 0xf0) >>4)/4.0f); + if (table_buf[iLensData+10] & 0x0f) + imgdata.lens.makernotes.MinAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+10] & 0x0f) + 10)/4.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+10] & 0x0f) + 10)/4.0f); + if ( + (imgdata.lens.makernotes.CamID != 0x12e6c) && // K-r + (imgdata.lens.makernotes.CamID != 0x12e76) && // K-5 +@@ -7836,14 +7836,14 @@ void CLASS parse_makernote (int base, int uptag) + if ((table_buf[iLensData+14] > 1) && + (fabs(imgdata.lens.makernotes.MaxAp4CurFocal) < 0.7f)) + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+14] & 0x7f) -1)/32.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+14] & 0x7f) -1)/32.0f); + } + else if ((imgdata.lens.makernotes.CamID != 0x12e76) && // K-5 + (table_buf[iLensData+15] > 1) && + (fabs(imgdata.lens.makernotes.MaxAp4CurFocal) < 0.7f)) + { + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+15] & 0x7f) -1)/32.0f); ++ powf_64(2.0f, (float)((table_buf[iLensData+15] & 0x7f) -1)/32.0f); + } + } + free(table_buf); +@@ -8004,7 +8004,7 @@ void CLASS parse_makernote (int base, int uptag) + lid = (((ushort)table_buf[2])<<8) | + ((ushort)table_buf[3]); + imgdata.lens.makernotes.CurAp = +- powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f); ++ powf_64(2.0f, ((float)lid/8.0f-1.0f)/2.0f); + } + break; + case 1536: +@@ -8089,15 +8089,15 @@ void CLASS parse_makernote (int base, int uptag) + { + unsigned char cc; + fread(&cc,1,1,ifp); +- iso_speed = int(100.0 * powf64(2.0f,float(cc)/12.0-5.0)); ++ iso_speed = int(100.0 * powf_64(2.0f,float(cc)/12.0-5.0)); + } + if (tag == 4 && len > 26 && len < 35) { + if ((i=(get4(),get2())) != 0x7fff && (!iso_speed || iso_speed == 65535)) +- iso_speed = 50 * powf64(2.0, i/32.0 - 4); ++ iso_speed = 50 * powf_64(2.0, i/32.0 - 4); + if ((i=(get2(),get2())) != 0x7fff && !aperture) +- aperture = powf64(2.0, i/64.0); ++ aperture = powf_64(2.0, i/64.0); + if ((i=get2()) != 0xffff && !shutter) +- shutter = powf64(2.0, (short) i/-32.0); ++ shutter = powf_64(2.0, (short) i/-32.0); + wbi = (get2(),get2()); + shot_order = (get2(),get2()); + } +@@ -8548,7 +8548,7 @@ void CLASS parse_exif (int base) + imgdata.lens.Lens[0] = 0; + break; + case 0x9205: +- imgdata.lens.EXIF_MaxAp = powf64(2.0f, (getreal(type) / 2.0f)); ++ imgdata.lens.EXIF_MaxAp = powf_64(2.0f, (getreal(type) / 2.0f)); + break; + #endif + case 33434: shutter = getreal(type); break; +@@ -8561,10 +8561,10 @@ void CLASS parse_exif (int base) + case 36867: + case 36868: get_timestamp(0); break; + case 37377: if ((expo = -getreal(type)) < 128 && shutter == 0.) +- shutter = powf64(2.0, expo); break; ++ shutter = powf_64(2.0, expo); break; + case 37378: + if (fabs(ape = getreal(type))<256.0) +- aperture = powf64(2.0, ape/2); ++ aperture = powf_64(2.0, ape/2); + break; + case 37385: flash_used = getreal(type); break; + case 37386: focal_len = getreal(type); break; +@@ -9171,7 +9171,7 @@ int CLASS parse_tiff_ifd (int base) + imgdata.lens.Lens[0] = 0; + break; + case 0x9205: +- imgdata.lens.EXIF_MaxAp = powf64(2.0f, (getreal(type) / 2.0f)); ++ imgdata.lens.EXIF_MaxAp = powf_64(2.0f, (getreal(type) / 2.0f)); + break; + // IB end + #endif +@@ -9940,22 +9940,22 @@ void CLASS parse_ciff (int offset, int length, int depth) + thumb_length = len; + } + if (type == 0x1818) { +- shutter = powf64(2.0f, -int_to_float((get4(),get4()))); +- aperture = powf64(2.0f, int_to_float(get4())/2); ++ shutter = powf_64(2.0f, -int_to_float((get4(),get4()))); ++ aperture = powf_64(2.0f, int_to_float(get4())/2); + #ifdef LIBRAW_LIBRARY_BUILD + imgdata.lens.makernotes.CurAp = aperture; + #endif + } + if (type == 0x102a) { + // iso_speed = pow (2.0, (get4(),get2())/32.0 - 4) * 50; +- iso_speed = powf64(2.0f, ((get2(),get2()) + get2())/32.0f - 5.0f) * 100.0f; ++ iso_speed = powf_64(2.0f, ((get2(),get2()) + get2())/32.0f - 5.0f) * 100.0f; + #ifdef LIBRAW_LIBRARY_BUILD + aperture = _CanonConvertAperture((get2(),get2())); + imgdata.lens.makernotes.CurAp = aperture; + #else +- aperture = powf64(2.0, (get2(),(short)get2())/64.0); ++ aperture = powf_64(2.0, (get2(),(short)get2())/64.0); + #endif +- shutter = powf64(2.0,-((short)get2())/32.0); ++ shutter = powf_64(2.0,-((short)get2())/32.0); + wbi = (get2(),get2()); + if (wbi > 17) wbi = 0; + fseek (ifp, 32, SEEK_CUR); +@@ -10159,8 +10159,8 @@ void CLASS parse_phase_one (int base) + setPhaseOneFeatures(unique_id); + break; + case 0x0401: +- if (type == 4) imgdata.lens.makernotes.CurAp = powf64(2.0f, (int_to_float(data)/2.0f)); +- else imgdata.lens.makernotes.CurAp = powf64(2.0f, (getreal(type)/2.0f)); ++ if (type == 4) imgdata.lens.makernotes.CurAp = powf_64(2.0f, (int_to_float(data)/2.0f)); ++ else imgdata.lens.makernotes.CurAp = powf_64(2.0f, (getreal(type)/2.0f)); + break; + case 0x0403: + if (type == 4) imgdata.lens.makernotes.CurFocal = int_to_float(data); +@@ -10174,16 +10174,16 @@ void CLASS parse_phase_one (int base) + break; + case 0x0414: + if (type == 4) { +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, (int_to_float(data)/2.0f)); ++ imgdata.lens.makernotes.MaxAp4CurFocal = powf_64(2.0f, (int_to_float(data)/2.0f)); + } else { +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, (getreal(type) / 2.0f)); ++ imgdata.lens.makernotes.MaxAp4CurFocal = powf_64(2.0f, (getreal(type) / 2.0f)); + } + break; + case 0x0415: + if (type == 4) { +- imgdata.lens.makernotes.MinAp4CurFocal = powf64(2.0f, (int_to_float(data)/2.0f)); ++ imgdata.lens.makernotes.MinAp4CurFocal = powf_64(2.0f, (int_to_float(data)/2.0f)); + } else { +- imgdata.lens.makernotes.MinAp4CurFocal = powf64(2.0f, (getreal(type) / 2.0f)); ++ imgdata.lens.makernotes.MinAp4CurFocal = powf_64(2.0f, (getreal(type) / 2.0f)); + } + break; + case 0x0416: +@@ -11996,15 +11996,15 @@ void CLASS identify() + case 18: iso_speed = 320; break; + case 19: iso_speed = 400; break; + } +- shutter = powf64(2.0f, (((float)get4())/8.0f)) / 16000.0f; ++ shutter = powf_64(2.0f, (((float)get4())/8.0f)) / 16000.0f; + FORC4 cam_mul[c ^ (c >> 1)] = get4(); + fseek (ifp, 88, SEEK_SET); +- aperture = powf64(2.0f, ((float)get4())/16.0f); ++ aperture = powf_64(2.0f, ((float)get4())/16.0f); + fseek (ifp, 112, SEEK_SET); + focal_len = get4(); + #ifdef LIBRAW_LIBRARY_BUILD + fseek (ifp, 104, SEEK_SET); +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, ((float)get4())/16.0f); ++ imgdata.lens.makernotes.MaxAp4CurFocal = powf_64(2.0f, ((float)get4())/16.0f); + fseek (ifp, 124, SEEK_SET); + fread(imgdata.lens.makernotes.Lens, 32, 1, ifp); + imgdata.lens.makernotes.CameraMount = LIBRAW_MOUNT_Contax_N; +-- +2.14.1 + diff --git a/buildroot/package/libfreeimage/Config.in b/buildroot/package/libfreeimage/Config.in index 4b462cb633b..9bffd035b72 100644 --- a/buildroot/package/libfreeimage/Config.in +++ b/buildroot/package/libfreeimage/Config.in @@ -5,8 +5,6 @@ config BR2_PACKAGE_LIBFREEIMAGE depends on BR2_USE_WCHAR # compiler issue: "Error: invalid register number `63'" depends on !BR2_arc - # Numerous build issues - depends on !BR2_bfin help FreeImage is an Open Source library project for developers who would like to support popular graphics image formats like PNG, @@ -17,5 +15,4 @@ config BR2_PACKAGE_LIBFREEIMAGE comment "libfreeimage needs a toolchain w/ C++, dynamic library, wchar" depends on !BR2_arc - depends on !BR2_bfin depends on BR2_STATIC_LIBS || !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR diff --git a/buildroot/package/libfreeimage/libfreeimage.hash b/buildroot/package/libfreeimage/libfreeimage.hash index 4e69508be9c..eded0297ec9 100644 --- a/buildroot/package/libfreeimage/libfreeimage.hash +++ b/buildroot/package/libfreeimage/libfreeimage.hash @@ -1,2 +1,5 @@ # Locally computed sha256 fbfc65e39b3d4e2cb108c4ffa8c41fd02c07d4d436c594fff8dab1a6d5297f89 FreeImage3170.zip +sha256 d51615a1a47f1ddbb027920d60d3fc30a00e1284c795a47857883e641349fadf license-gplv2.txt +sha256 084be110e3e8757d8e6945cda1fbc7e5073bbe688dc19b92c0d8440155d8e282 license-gplv3.txt +sha256 0bb9a3123297c73ae6e19c70459fb0e58f313f67ca63176fd43f8e77668b8243 license-fi.txt diff --git a/buildroot/package/libfreeimage/libfreeimage.mk b/buildroot/package/libfreeimage/libfreeimage.mk index 0ca23933a60..e0aa1f0ae8c 100644 --- a/buildroot/package/libfreeimage/libfreeimage.mk +++ b/buildroot/package/libfreeimage/libfreeimage.mk @@ -12,7 +12,7 @@ LIBFREEIMAGE_LICENSE_FILES = license-gplv2.txt license-gplv3.txt license-fi.txt LIBFREEIMAGE_INSTALL_STAGING = YES define LIBFREEIMAGE_EXTRACT_CMDS - $(UNZIP) $(DL_DIR)/$(LIBFREEIMAGE_SOURCE) -d $(@D) + $(UNZIP) $(LIBFREEIMAGE_DL_DIR)/$(LIBFREEIMAGE_SOURCE) -d $(@D) mv $(@D)/FreeImage/* $(@D) rmdir $(@D)/FreeImage endef diff --git a/buildroot/package/libftdi/Config.in b/buildroot/package/libftdi/Config.in index beb42d34c5c..23dae1be1f8 100644 --- a/buildroot/package/libftdi/Config.in +++ b/buildroot/package/libftdi/Config.in @@ -10,7 +10,7 @@ config BR2_PACKAGE_LIBFTDI if BR2_PACKAGE_LIBFTDI -config BR2_PACKAGE_LIBTFDI_CPP +config BR2_PACKAGE_LIBFTDI_CPP bool "C++ bindings" depends on BR2_INSTALL_LIBSTDCPP depends on BR2_USE_WCHAR diff --git a/buildroot/package/libftdi/libftdi.mk b/buildroot/package/libftdi/libftdi.mk index c1952ac68be..cdd77c2e68e 100644 --- a/buildroot/package/libftdi/libftdi.mk +++ b/buildroot/package/libftdi/libftdi.mk @@ -15,7 +15,7 @@ LIBFTDI_AUTORECONF = YES LIBFTDI_CONF_OPTS = --without-examples # configure detect it automaticaly so we need to force it -ifeq ($(BR2_PACKAGE_LIBTFDI_CPP),y) +ifeq ($(BR2_PACKAGE_LIBFTDI_CPP),y) LIBFTDI_DEPENDENCIES += boost LIBFTDI_CONF_OPTS += --enable-libftdipp else diff --git a/buildroot/package/libftdi1/libftdi1.hash b/buildroot/package/libftdi1/libftdi1.hash index 40512a7fc30..f17543fa031 100644 --- a/buildroot/package/libftdi1/libftdi1.hash +++ b/buildroot/package/libftdi1/libftdi1.hash @@ -1,3 +1,8 @@ # Locally computed after checking the signature # https://www.intra2net.com/en/developer/libftdi/download/libftdi1-1.4.tar.bz2.sig sha256 ec36fb49080f834690c24008328a5ef42d3cf584ef4060f3a35aa4681cb31b74 libftdi1-1.4.tar.bz2 + +# Hash for license files: +sha256 524f46428bf72bb8c6acfeca4909551fd2e0bdbb5305406d38382f4056095c56 LICENSE +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING.GPL +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING.LIB diff --git a/buildroot/package/libfuse/libfuse.hash b/buildroot/package/libfuse/libfuse.hash index 60bdf639901..f02c78418e9 100644 --- a/buildroot/package/libfuse/libfuse.hash +++ b/buildroot/package/libfuse/libfuse.hash @@ -1,2 +1,6 @@ # Locally calculated after checking pgp signature sha256 832432d1ad4f833c20e13b57cf40ce5277a9d33e483205fc63c78111b3358874 fuse-2.9.7.tar.gz + +# Hash for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/buildroot/package/libg7221/libg7221.hash b/buildroot/package/libg7221/libg7221.hash index d1472a6c69f..09023f95439 100644 --- a/buildroot/package/libg7221/libg7221.hash +++ b/buildroot/package/libg7221/libg7221.hash @@ -1,2 +1,3 @@ # Locally computed sha256 330dafa58d37a585a866167bc33f8fbe06dbcfc9a69cad43fab0b6702ebf2393 libg7221-dbfc29d4806ecdace50379a2f4d68a992a6fec34.tar.gz +sha256 26cc5f718279b45dbe34e25a2d29b2c8ca487bd9ab11b2d68c9318ff59d5c645 COPYING diff --git a/buildroot/package/libgee/libgee.hash b/buildroot/package/libgee/libgee.hash index 83ac8101561..77f39d6b690 100644 --- a/buildroot/package/libgee/libgee.hash +++ b/buildroot/package/libgee/libgee.hash @@ -1,2 +1,5 @@ -# From http://ftp.acc.umu.se/pub/gnome/sources/libgee/0.18/libgee-0.18.1.sha256sum -sha256 99686bbe5a9c89ba9502c25f61314ee8efa0dd2a1159c9a639afc1458c2839a2 libgee-0.18.1.tar.xz +# From http://ftp.acc.umu.se/pub/gnome/sources/libgee/0.20/libgee-0.20.1.sha256sum +sha256 bb2802d29a518e8c6d2992884691f06ccfcc25792a5686178575c7111fea4630 libgee-0.20.1.tar.xz + +# Hash for license file: +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING diff --git a/buildroot/package/libgee/libgee.mk b/buildroot/package/libgee/libgee.mk index 9d87169e44f..264ba98946c 100644 --- a/buildroot/package/libgee/libgee.mk +++ b/buildroot/package/libgee/libgee.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBGEE_VERSION_MAJOR = 0.18 +LIBGEE_VERSION_MAJOR = 0.20 LIBGEE_VERSION = $(LIBGEE_VERSION_MAJOR).1 LIBGEE_SITE = http://ftp.gnome.org/pub/gnome/sources/libgee/$(LIBGEE_VERSION_MAJOR) LIBGEE_SOURCE = libgee-$(LIBGEE_VERSION).tar.xz diff --git a/buildroot/package/libgeotiff/0002-fix-GEO_NORMALIZE_DISABLE_TOWGS84-define.patch b/buildroot/package/libgeotiff/0002-fix-GEO_NORMALIZE_DISABLE_TOWGS84-define.patch new file mode 100644 index 00000000000..a8a2d257cbb --- /dev/null +++ b/buildroot/package/libgeotiff/0002-fix-GEO_NORMALIZE_DISABLE_TOWGS84-define.patch @@ -0,0 +1,20 @@ +Fix GEO_NORMALIZE_DISABLE_TOWGS84 definition + +Fix "missing template: GEO_NORMALIZE_DISABLE_TOWGS84" error by adding +a non-empty description of GEO_NORMALIZE_DISABLE_TOWGS84 in AC_DEFINE + +Signed-off-by: Fabrice Fontaine + +Index: libgeotiff/configure.ac +=================================================================== +--- libgeotiff/configure.ac (rテゥvision 2818) ++++ libgeotiff/configure.ac (copie de travail) +@@ -317,7 +317,7 @@ + AM_CONDITIONAL([CSV_IS_CONFIG], [test ! x$CSV_CONFIG = xno]) + + +-AC_ARG_ENABLE(towgs84, [ --disable-towgs84 Disable WGS84 parameters for binary compatibility with pre-1.4.1], AC_DEFINE(GEO_NORMALIZE_DISABLE_TOWGS84)) ++AC_ARG_ENABLE(towgs84, [ --disable-towgs84 Disable WGS84 parameters for binary compatibility with pre-1.4.1], AC_DEFINE(GEO_NORMALIZE_DISABLE_TOWGS84, [], [Disable WGS84 parameters])) + + dnl ######################################################################### + dnl Doxygen settings diff --git a/buildroot/package/libgeotiff/libgeotiff.hash b/buildroot/package/libgeotiff/libgeotiff.hash index 66b8cb74b2a..a2b16ac0b25 100644 --- a/buildroot/package/libgeotiff/libgeotiff.hash +++ b/buildroot/package/libgeotiff/libgeotiff.hash @@ -1,2 +1,3 @@ # Locally computed -sha1 4c6f405869826bb7d9f35f1d69167e3b44a57ef0 libgeotiff-1.4.0.tar.gz +sha256 ad87048adb91167b07f34974a8e53e4ec356494c29f1748de95252e8f81a5e6e libgeotiff-1.4.2.tar.gz +sha256 16b83cf7c3bbfd20bffa768b9bfdb16506ca50f5c140a9f3431e740b155359c1 LICENSE diff --git a/buildroot/package/libgeotiff/libgeotiff.mk b/buildroot/package/libgeotiff/libgeotiff.mk index 96f04c2e097..a1f234b33b6 100644 --- a/buildroot/package/libgeotiff/libgeotiff.mk +++ b/buildroot/package/libgeotiff/libgeotiff.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBGEOTIFF_VERSION = 1.4.0 +LIBGEOTIFF_VERSION = 1.4.2 LIBGEOTIFF_SITE = http://download.osgeo.org/geotiff/libgeotiff LIBGEOTIFF_LICENSE = X11-style, public domain LIBGEOTIFF_LICENSE_FILES = LICENSE diff --git a/buildroot/package/libglade/libglade.hash b/buildroot/package/libglade/libglade.hash index fdcc837efce..b96c5814b4d 100644 --- a/buildroot/package/libglade/libglade.hash +++ b/buildroot/package/libglade/libglade.hash @@ -1,2 +1,5 @@ # From http://ftp.gnome.org/pub/GNOME/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/buildroot/package/libglfw/libglfw.hash b/buildroot/package/libglfw/libglfw.hash index c0ad2af1c0e..39d6c261398 100644 --- a/buildroot/package/libglfw/libglfw.hash +++ b/buildroot/package/libglfw/libglfw.hash @@ -1,2 +1,3 @@ # Locally computed sha256 e10f0de1384d75e6fc210c53e91843f6110d6c4f3afbfb588130713c2f9d8fe8 libglfw-3.2.1.tar.gz +sha256 8d85c2fc8de8f3b8c0906e317a2d6423268ef4291a3682d94ac910f65389a441 COPYING.txt diff --git a/buildroot/package/libglib2/0003-gobject-fix-compilation-with-gcc-4.7.patch b/buildroot/package/libglib2/0003-gobject-fix-compilation-with-gcc-4.7.patch new file mode 100644 index 00000000000..fc672513ee4 --- /dev/null +++ b/buildroot/package/libglib2/0003-gobject-fix-compilation-with-gcc-4.7.patch @@ -0,0 +1,50 @@ +From a2b27c0d038ad76cc8016999f8788245da97e946 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Tue, 10 Apr 2018 19:18:57 +0200 +Subject: [PATCH] gobject: fix compilation with gcc <= 4.7 + +On gcc 4.7, we got the following error: + +i686-nptl-linux-gnu-gcc --version +> i686-nptl-linux-gnu-gcc (crosstool-NG 1.20.0) 4.7.4 +> $ echo '#include ' | i686-nptl-linux-gnu-gcc -x c -I +staging/usr/include/glib-2.0 -I staging/usr/lib/glib-2.0/include -Wall +-Werror -c - -o /tmp/foo.o +> In file included from +staging/usr/include/glib-2.0/gobject/gbinding.h:29:0, +> from staging/usr/include/glib-2.0/glib-object.h:23, +> from :1: +> staging/usr/include/glib-2.0/gobject/gobject.h: In function +'g_set_object': +> staging/usr/include/glib-2.0/gobject/gobject.h:725:5: error: value +computed is not used [-Werror=unused-value] +> cc1: all warnings being treated as errors + +This error has been added by commit 3fae39a5d742afe73741f5fd7aa24e3ae8182f06 +So enable the new g_set_object definition only if gcc >= 4.8 + +Fixes: + - http://autobuild.buildroot.net/results/b29a2f868438a2210873ea72f491db63175848be + +Signed-off-by: Fabrice Fontaine +Upstream-status: https://bugzilla.gnome.org/show_bug.cgi?id=795138 +--- + gobject/gobject.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gobject/gobject.h b/gobject/gobject.h +index 9830663ce..838046fe0 100644 +--- a/gobject/gobject.h ++++ b/gobject/gobject.h +@@ -507,7 +507,7 @@ GLIB_AVAILABLE_IN_ALL + void g_object_remove_weak_pointer (GObject *object, + gpointer *weak_pointer_location); + +-#if defined(__GNUC__) && !defined(__cplusplus) && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_56 ++#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) && !defined(__cplusplus) && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_56 + /* Make reference APIs type safe with macros */ + #define g_object_ref(Obj) ((__typeof__(Obj)) (g_object_ref) (Obj)) + #define g_object_ref_sink(Obj) ((__typeof__(Obj)) (g_object_ref_sink) (Obj)) +-- +2.14.1 + diff --git a/buildroot/package/libglib2/libglib2.hash b/buildroot/package/libglib2/libglib2.hash index cf1c9557f84..7ce031aa89d 100644 --- a/buildroot/package/libglib2/libglib2.hash +++ b/buildroot/package/libglib2/libglib2.hash @@ -1,4 +1,4 @@ -# https://download.gnome.org/sources/glib/2.54/glib-2.54.2.sha256sum -sha256 bb89e5c5aad33169a8c7f28b45671c7899c12f74caf707737f784d7102758e6c glib-2.54.2.tar.xz +# https://download.gnome.org/sources/glib/2.56/glib-2.56.1.sha256sum +sha256 40ef3f44f2c651c7a31aedee44259809b6f03d3d20be44545cd7d177221c0b8d glib-2.56.1.tar.xz # License files, locally calculated sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/buildroot/package/libglib2/libglib2.mk b/buildroot/package/libglib2/libglib2.mk index 097c980393d..67db5ac3598 100644 --- a/buildroot/package/libglib2/libglib2.mk +++ b/buildroot/package/libglib2/libglib2.mk @@ -4,11 +4,11 @@ # ################################################################################ -LIBGLIB2_VERSION_MAJOR = 2.54 -LIBGLIB2_VERSION = $(LIBGLIB2_VERSION_MAJOR).2 +LIBGLIB2_VERSION_MAJOR = 2.56 +LIBGLIB2_VERSION = $(LIBGLIB2_VERSION_MAJOR).1 LIBGLIB2_SOURCE = glib-$(LIBGLIB2_VERSION).tar.xz LIBGLIB2_SITE = http://ftp.gnome.org/pub/gnome/sources/glib/$(LIBGLIB2_VERSION_MAJOR) -LIBGLIB2_LICENSE = LGPL-2.0+ +LIBGLIB2_LICENSE = LGPL-2.1+ LIBGLIB2_LICENSE_FILES = COPYING # 0002-disable-tests.patch LIBGLIB2_AUTORECONF = YES diff --git a/buildroot/package/libglob/libglob.hash b/buildroot/package/libglob/libglob.hash index 0b394075f44..2d90536845a 100644 --- a/buildroot/package/libglob/libglob.hash +++ b/buildroot/package/libglob/libglob.hash @@ -1,2 +1,3 @@ # Locally calculated: sha256 4f1b204dad065689941c64828a92441fb316c9c7539b39525fa728125da65e22 libglob-1.0.tar.gz +sha256 4cd4bac6ef90d4a91ee6e52df30f241045fb1a27fb53541ef4a9f8e47e6103ca LICENSE diff --git a/buildroot/package/libglu/libglu.hash b/buildroot/package/libglu/libglu.hash index 784386e0caf..468787864e8 100644 --- a/buildroot/package/libglu/libglu.hash +++ b/buildroot/package/libglu/libglu.hash @@ -1,2 +1,3 @@ # locally computed sha256 3d19cca9b26ec4048dd22e3d294acd43e080a3205a29ff47765bd514571ea8f9 glu-9.0.0.tar.gz +sha256 84187ce0fd0153769675cb7f3301583eb27393f66b57c5604999a1d805a9184c include/GL/glu.h diff --git a/buildroot/package/libgpg-error/libgpg-error.hash b/buildroot/package/libgpg-error/libgpg-error.hash index 0541d2311ab..608f9c62d71 100644 --- a/buildroot/package/libgpg-error/libgpg-error.hash +++ b/buildroot/package/libgpg-error/libgpg-error.hash @@ -1,2 +1,6 @@ # Locally calculated after checking pgp signature -sha256 04bdc7fd12001c797cc689b007fe24909f55aa0ee1d6d6aef967d9eebf5b2461 libgpg-error-1.27.tar.gz +# https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.31.tar.bz2.sig +sha256 40d0a823c9329478063903192a1f82496083b277265904878f4bc09e0db7a4ef libgpg-error-1.31.tar.bz2 +# Locally calculated +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LIB diff --git a/buildroot/package/libgpg-error/libgpg-error.mk b/buildroot/package/libgpg-error/libgpg-error.mk index 2140258c6e6..aed5a517b0a 100644 --- a/buildroot/package/libgpg-error/libgpg-error.mk +++ b/buildroot/package/libgpg-error/libgpg-error.mk @@ -4,8 +4,9 @@ # ################################################################################ -LIBGPG_ERROR_VERSION = 1.27 -LIBGPG_ERROR_SITE = ftp://ftp.gnupg.org/gcrypt/libgpg-error +LIBGPG_ERROR_VERSION = 1.31 +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_INSTALL_STAGING = YES diff --git a/buildroot/package/libgpgme/libgpgme.hash b/buildroot/package/libgpgme/libgpgme.hash index 6bd595c5acd..54c7bf7a098 100644 --- a/buildroot/package/libgpgme/libgpgme.hash +++ b/buildroot/package/libgpgme/libgpgme.hash @@ -1,7 +1,7 @@ -# From https://lists.gnupg.org/pipermail/gnupg-announce/2017q4/000418.html -sha1 77d3390887da25ed70b7ac04392360efbdca501f gpgme-1.10.0.tar.bz2 +# From https://lists.gnupg.org/pipermail/gnupg-announce/2018q2/000423.html +sha1 95b1fc427871ca8d30d6d3b1985c816fe0b5077b gpgme-1.11.1.tar.bz2 # Locally calculated after checking pgp signature -# https://gnupg.org/ftp/gcrypt/gpgme/gpgme-1.10.0.tar.bz2.sig -sha256 1a8fed1197c3b99c35f403066bb344a26224d292afc048cfdfc4ccd5690a0693 gpgme-1.10.0.tar.bz2 +# https://gnupg.org/ftp/gcrypt/gpgme/gpgme-1.11.1.tar.bz2.sig +sha256 2d1b111774d2e3dd26dcd7c251819ce4ef774ec5e566251eb9308fa7542fbd6f gpgme-1.11.1.tar.bz2 # Locally calculated sha256 ca0061fc1381a3ab242310e4b3f56389f28e3d460eb2fd822ed7a21c6f030532 COPYING.LESSER diff --git a/buildroot/package/libgpgme/libgpgme.mk b/buildroot/package/libgpgme/libgpgme.mk index 5c46c7c561a..03402cf3828 100644 --- a/buildroot/package/libgpgme/libgpgme.mk +++ b/buildroot/package/libgpgme/libgpgme.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBGPGME_VERSION = 1.10.0 +LIBGPGME_VERSION = 1.11.1 LIBGPGME_SITE = https://gnupg.org/ftp/gcrypt/gpgme LIBGPGME_SOURCE = gpgme-$(LIBGPGME_VERSION).tar.bz2 LIBGPGME_LICENSE = LGPL-2.1+ diff --git a/buildroot/package/libgphoto2/libgphoto2.hash b/buildroot/package/libgphoto2/libgphoto2.hash index 1afe275ce3f..e0590df89b7 100644 --- a/buildroot/package/libgphoto2/libgphoto2.hash +++ b/buildroot/package/libgphoto2/libgphoto2.hash @@ -1,6 +1,7 @@ -# https://sourceforge.net/projects/gphoto/files/libgphoto/2.5.13/ -md5 73bf5b3d94c8c6f5fad9ea6b5e561843 libgphoto2-2.5.13.tar.bz2 -sha1 cef2d2f1930f8ada16a63aca15683188231a626a libgphoto2-2.5.13.tar.bz2 +# https://sourceforge.net/projects/gphoto/files/libgphoto/2.5.17/ +md5 ae78e7a7936a6962c3a22b256bee1869 libgphoto2-2.5.17.tar.bz2 +sha1 b55167bbb73518c5b7f67f90e619c46d05005c7d libgphoto2-2.5.17.tar.bz2 # Locally calculated hash -sha256 ceaacbdf187d1cd1aed5336991f46b0100f6960b6c8383f9aeab98f1f64780ef libgphoto2-2.5.13.tar.bz2 +sha256 417464f0a313fa937e8a71cdf18a371cf01e750830195cd63ae31da0d092b555 libgphoto2-2.5.17.tar.bz2 +sha256 ebc385a0b1d477be5177ed6d9129557aa59a3ad0f26ebe7dd97ee942a0fb68ee COPYING diff --git a/buildroot/package/libgphoto2/libgphoto2.mk b/buildroot/package/libgphoto2/libgphoto2.mk index f6dadf1f453..2828fcb36f1 100644 --- a/buildroot/package/libgphoto2/libgphoto2.mk +++ b/buildroot/package/libgphoto2/libgphoto2.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBGPHOTO2_VERSION = 2.5.13 +LIBGPHOTO2_VERSION = 2.5.17 LIBGPHOTO2_SOURCE = libgphoto2-$(LIBGPHOTO2_VERSION).tar.bz2 # Project is maintained on github but github tarball doesn't have # configure, so use tarballs from SourceForge diff --git a/buildroot/package/libgpiod/libgpiod.hash b/buildroot/package/libgpiod/libgpiod.hash index 6baeee23586..9ed4b59ab9a 100644 --- a/buildroot/package/libgpiod/libgpiod.hash +++ b/buildroot/package/libgpiod/libgpiod.hash @@ -1,4 +1,4 @@ # From https://www.kernel.org/pub/software/libs/libgpiod/sha256sums.asc -sha256 50c7862428ca90b58672e2475aea66d33a6fc86c6bab1928c0660f3aedf44a37 libgpiod-0.3.2.tar.xz +sha256 972924195367f5fb045c023d65340c4b7dfc8764499516be446553865208dedc libgpiod-1.0.1.tar.xz # Hash for license file sha256 ce64d5f7b49ea6d80fdb6d4cdee6839d1a94274f7493dc797c3b55b65ec8e9ed COPYING diff --git a/buildroot/package/libgpiod/libgpiod.mk b/buildroot/package/libgpiod/libgpiod.mk index bc2e51d2806..7f8fa4b7ddc 100644 --- a/buildroot/package/libgpiod/libgpiod.mk +++ b/buildroot/package/libgpiod/libgpiod.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBGPIOD_VERSION = 0.3.2 +LIBGPIOD_VERSION = 1.0.1 LIBGPIOD_SOURCE = libgpiod-$(LIBGPIOD_VERSION).tar.xz LIBGPIOD_SITE = https://www.kernel.org/pub/software/libs/libgpiod LIBGPIOD_LICENSE = LGPL-2.1+ diff --git a/buildroot/package/libgsasl/Config.in b/buildroot/package/libgsasl/Config.in index 51813862721..228f8823777 100644 --- a/buildroot/package/libgsasl/Config.in +++ b/buildroot/package/libgsasl/Config.in @@ -1,5 +1,6 @@ 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 @@ -9,3 +10,6 @@ config BR2_PACKAGE_LIBGSASL against servers. http://www.gnu.org/software/gsasl + +comment "libgsasl needs a toolchain w/ wchar" + depends on !BR2_USE_WCHAR diff --git a/buildroot/package/libgsasl/libgsasl.hash b/buildroot/package/libgsasl/libgsasl.hash index 42059271687..82bfe339c64 100644 --- a/buildroot/package/libgsasl/libgsasl.hash +++ b/buildroot/package/libgsasl/libgsasl.hash @@ -1,2 +1,7 @@ # Locally calculated after checking pgp signature sha256 3adfb49f9c92a719dea855fd1840d698cde55d4648d332a69032ba8bea207720 libgsasl-1.8.0.tar.gz + +# Hash for license files: +sha256 4eb54155afd4684d7e9423f6037e5cc887ae4d8818e83d3af93350ebd4a8e6eb README +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/libgsm/libgsm.hash b/buildroot/package/libgsm/libgsm.hash index a73359d6530..523e629dc4d 100644 --- a/buildroot/package/libgsm/libgsm.hash +++ b/buildroot/package/libgsm/libgsm.hash @@ -1,2 +1,3 @@ # Locally computed sha256 855a57d1694941ddf3c73cb79b8d0b3891e9c9e7870b4981613b734e1ad07601 gsm-1.0.17.tar.gz +sha256 81c68a3374937ed9b5e4929c709e81a2c4b35b5d1f450ecf8c473e2daea46ff6 COPYRIGHT diff --git a/buildroot/package/libgtk2/libgtk2.hash b/buildroot/package/libgtk2/libgtk2.hash index 3388c5cda2e..49bec78da1c 100644 --- a/buildroot/package/libgtk2/libgtk2.hash +++ b/buildroot/package/libgtk2/libgtk2.hash @@ -1,2 +1,5 @@ -# From http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.31.sha256sum -sha256 68c1922732c7efc08df4656a5366dcc3afdc8791513400dac276009b40954658 gtk+-2.24.31.tar.xz +# From http://ftp.gnome.org/pub/gnome/sources/gtk+/2.24/gtk+-2.24.32.sha256sum +sha256 b6c8a93ddda5eabe3bfee1eb39636c9a03d2a56c7b62828b359bf197943c582e gtk+-2.24.32.tar.xz + +# Hash for license file: +sha256 d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5 COPYING diff --git a/buildroot/package/libgtk2/libgtk2.mk b/buildroot/package/libgtk2/libgtk2.mk index 0b26d7205b1..8f60573a5e9 100644 --- a/buildroot/package/libgtk2/libgtk2.mk +++ b/buildroot/package/libgtk2/libgtk2.mk @@ -5,7 +5,7 @@ ################################################################################ LIBGTK2_VERSION_MAJOR = 2.24 -LIBGTK2_VERSION = $(LIBGTK2_VERSION_MAJOR).31 +LIBGTK2_VERSION = $(LIBGTK2_VERSION_MAJOR).32 LIBGTK2_SOURCE = gtk+-$(LIBGTK2_VERSION).tar.xz LIBGTK2_SITE = http://ftp.gnome.org/pub/gnome/sources/gtk+/$(LIBGTK2_VERSION_MAJOR) LIBGTK2_INSTALL_STAGING = YES diff --git a/buildroot/package/libgtk3/libgtk3.hash b/buildroot/package/libgtk3/libgtk3.hash index 0f259e9a1c6..b7a89901ddb 100644 --- a/buildroot/package/libgtk3/libgtk3.hash +++ b/buildroot/package/libgtk3/libgtk3.hash @@ -1,2 +1,5 @@ -# From http://ftp.gnome.org/pub/gnome/sources/gtk+/3.22/gtk+-3.22.15.sha256sum -sha256 c8a012c2a99132629ab043f764a2b7cb6388483a015cd15c7a4288bec3590fdb gtk+-3.22.15.tar.xz +# From http://ftp.gnome.org/pub/gnome/sources/gtk+/3.22/gtk+-3.22.30.sha256sum +sha256 a1a4a5c12703d4e1ccda28333b87ff462741dc365131fbc94c218ae81d9a6567 gtk+-3.22.30.tar.xz + +# Hash for license file: +sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING diff --git a/buildroot/package/libgtk3/libgtk3.mk b/buildroot/package/libgtk3/libgtk3.mk index b4a8b8c5177..1b85d00aae0 100644 --- a/buildroot/package/libgtk3/libgtk3.mk +++ b/buildroot/package/libgtk3/libgtk3.mk @@ -5,7 +5,7 @@ ################################################################################ LIBGTK3_VERSION_MAJOR = 3.22 -LIBGTK3_VERSION = $(LIBGTK3_VERSION_MAJOR).15 +LIBGTK3_VERSION = $(LIBGTK3_VERSION_MAJOR).30 LIBGTK3_SOURCE = gtk+-$(LIBGTK3_VERSION).tar.xz LIBGTK3_SITE = http://ftp.gnome.org/pub/gnome/sources/gtk+/$(LIBGTK3_VERSION_MAJOR) LIBGTK3_LICENSE = LGPL-2.0+ diff --git a/buildroot/package/libgudev/libgudev.hash b/buildroot/package/libgudev/libgudev.hash index a6c1d6b5351..138ae93d717 100644 --- a/buildroot/package/libgudev/libgudev.hash +++ b/buildroot/package/libgudev/libgudev.hash @@ -1,2 +1,5 @@ -# From: http://ftp.gnome.org/pub/GNOME/sources/libgudev/230/libgudev-230.sha256sum -sha256 a2e77faced0c66d7498403adefcc0707105e03db71a2b2abd620025b86347c18 libgudev-230.tar.xz +# From: http://ftp.gnome.org/pub/GNOME/sources/libgudev/232/libgudev-232.sha256sum +sha256 ee4cb2b9c573cdf354f6ed744f01b111d4b5bed3503ffa956cefff50489c7860 libgudev-232.tar.xz + +# Hash for license file: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/buildroot/package/libgudev/libgudev.mk b/buildroot/package/libgudev/libgudev.mk index fce710a1c29..50432c461ed 100644 --- a/buildroot/package/libgudev/libgudev.mk +++ b/buildroot/package/libgudev/libgudev.mk @@ -4,12 +4,13 @@ # ################################################################################ -LIBGUDEV_VERSION = 230 +LIBGUDEV_VERSION = 232 LIBGUDEV_SOURCE = libgudev-$(LIBGUDEV_VERSION).tar.xz LIBGUDEV_SITE = http://ftp.gnome.org/pub/GNOME/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 = --disable-umockdev $(eval $(autotools-package)) diff --git a/buildroot/package/libhid/libhid.hash b/buildroot/package/libhid/libhid.hash index 7a843b60f4e..933ba22a928 100644 --- a/buildroot/package/libhid/libhid.hash +++ b/buildroot/package/libhid/libhid.hash @@ -1,2 +1,3 @@ # locally computed sha256 f6809ab3b9c907cbb05ceba9ee6ca23a705f85fd71588518e14b3a7d9f2550e5 libhid-0.2.16.tar.gz +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/buildroot/package/libhttpparser/0001-Use-f-option-when-calling-ln-at-install-time.patch b/buildroot/package/libhttpparser/0001-Use-f-option-when-calling-ln-at-install-time.patch index df166565f9b..70f16f662f2 100644 --- a/buildroot/package/libhttpparser/0001-Use-f-option-when-calling-ln-at-install-time.patch +++ b/buildroot/package/libhttpparser/0001-Use-f-option-when-calling-ln-at-install-time.patch @@ -8,28 +8,32 @@ This allows "make install; make install" to work properly. Signed-off-by: Thomas Petazzoni Signed-off-by: Renaud AUBIN --- - Makefile | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + Makefile | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile -index 33c8ba0..b36d95a 100644 +index 6cf63bd..c182e5c 100644 --- a/Makefile +++ b/Makefile -@@ -125,12 +125,12 @@ tags: http_parser.c http_parser.h test.c +@@ -133,14 +133,14 @@ tags: http_parser.c http_parser.h test.c install: library - $(INSTALL) -D http_parser.h $(INCLUDEDIR)/http_parser.h - $(INSTALL) -D $(SONAME) $(LIBDIR)/$(SONAME) -- ln -s $(LIBDIR)/$(SONAME) $(LIBDIR)/libhttp_parser.$(SOEXT) -+ ln -sf $(LIBDIR)/$(SONAME) $(LIBDIR)/libhttp_parser.$(SOEXT) + $(INSTALL) -D http_parser.h $(DESTDIR)$(INCLUDEDIR)/http_parser.h + $(INSTALL) -D $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME) +- ln -s $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) +- ln -s $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) ++ ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) ++ ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) install-strip: library - $(INSTALL) -D http_parser.h $(INCLUDEDIR)/http_parser.h - $(INSTALL) -D -s $(SONAME) $(LIBDIR)/$(SONAME) -- ln -s $(LIBDIR)/$(SONAME) $(LIBDIR)/libhttp_parser.$(SOEXT) -+ ln -sf $(LIBDIR)/$(SONAME) $(LIBDIR)/libhttp_parser.$(SOEXT) + $(INSTALL) -D http_parser.h $(DESTDIR)$(INCLUDEDIR)/http_parser.h + $(INSTALL) -D -s $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(LIBNAME) +- ln -s $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) +- ln -s $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) ++ ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SONAME) ++ ln -sf $(LIBNAME) $(DESTDIR)$(LIBDIR)/$(SOLIBNAME).$(SOEXT) uninstall: - rm $(INCLUDEDIR)/http_parser.h + rm $(DESTDIR)$(INCLUDEDIR)/http_parser.h -- 2.6.2 diff --git a/buildroot/package/libhttpparser/libhttpparser.hash b/buildroot/package/libhttpparser/libhttpparser.hash index a1b772e54c1..acbf3787f97 100644 --- a/buildroot/package/libhttpparser/libhttpparser.hash +++ b/buildroot/package/libhttpparser/libhttpparser.hash @@ -1,2 +1,3 @@ # Locally computed: -sha256 70409ad324e5de2da6a0f39e859e566d497c1ff0a249c0c38a5012df91b386b3 libhttpparser-v2.7.1.tar.gz +sha256 51615f68b8d67eadfd2482decc63b3e55d749ce0055502bbb5b0032726d22d96 libhttpparser-v2.8.1.tar.gz +sha256 79e6ba8b687cb54786207342b9b6fcee0ac10218453ed9009b84d949b2233cc0 LICENSE-MIT diff --git a/buildroot/package/libhttpparser/libhttpparser.mk b/buildroot/package/libhttpparser/libhttpparser.mk index 1df26017e77..c71e043cdc5 100644 --- a/buildroot/package/libhttpparser/libhttpparser.mk +++ b/buildroot/package/libhttpparser/libhttpparser.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBHTTPPARSER_VERSION = v2.7.1 +LIBHTTPPARSER_VERSION = v2.8.1 LIBHTTPPARSER_SITE = $(call github,nodejs,http-parser,$(LIBHTTPPARSER_VERSION)) LIBHTTPPARSER_INSTALL_STAGING = YES LIBHTTPPARSER_LICENSE = MIT diff --git a/buildroot/package/libical/libical.hash b/buildroot/package/libical/libical.hash index 5c42cdcc61a..7edb29bd282 100644 --- a/buildroot/package/libical/libical.hash +++ b/buildroot/package/libical/libical.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 089ce3c42d97fbd7a5d4b3c70adbdd82115dd306349c1f5c46a8fb3f8c949592 libical-1.0.1.tar.gz +sha256 c393726f82e6f21df5262110215f6a4382b32046d10afdcfcc49338aa7a191f2 LICENSE diff --git a/buildroot/package/libiconv/libiconv.hash b/buildroot/package/libiconv/libiconv.hash index 440daee51e7..93ad555e155 100644 --- a/buildroot/package/libiconv/libiconv.hash +++ b/buildroot/package/libiconv/libiconv.hash @@ -1,2 +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/buildroot/package/libid3tag/libid3tag.hash b/buildroot/package/libid3tag/libid3tag.hash index fb02882db72..82ad59d9ac1 100644 --- a/buildroot/package/libid3tag/libid3tag.hash +++ b/buildroot/package/libid3tag/libid3tag.hash @@ -1,2 +1,4 @@ # Locally computed: sha256 63da4f6e7997278f8a3fef4c6a372d342f705051d1eeb6a46a86b03610e26151 libid3tag-0.15.1b.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING +sha256 7f12ad28dc075763e91b91bfa60fad04062380011ddad8f6bac21dd7b1f44367 COPYRIGHT diff --git a/buildroot/package/libidn/0001-lib-punycode.c-decode_digit-Fix-integer-overflow.patch b/buildroot/package/libidn/0001-lib-punycode.c-decode_digit-Fix-integer-overflow.patch deleted file mode 100644 index 8a8ca47a66b..00000000000 --- a/buildroot/package/libidn/0001-lib-punycode.c-decode_digit-Fix-integer-overflow.patch +++ /dev/null @@ -1,36 +0,0 @@ -From e9e81b8063b095b02cf104bb992fa9bf9515b9d8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Tim=20R=C3=BChsen?= -Date: Fri, 1 Sep 2017 10:04:48 +0200 -Subject: [PATCH] lib/punycode.c (decode_digit): Fix integer overflow - -This fix is a backport from libidn2 and addresses -CVE-2017-14062. - -Signed-off-by: Baruch Siach ---- -Upstream status: commit e9e81b8063b095 - - lib/punycode.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/lib/punycode.c b/lib/punycode.c -index 86819a7deb85..49250a13e2cc 100644 ---- a/lib/punycode.c -+++ b/lib/punycode.c -@@ -88,10 +88,10 @@ enum - /* point (for use in representing integers) in the range 0 to */ - /* base-1, or base if cp does not represent a value. */ - --static punycode_uint --decode_digit (punycode_uint cp) -+static unsigned -+decode_digit (int cp) - { -- return cp - 48 < 10 ? cp - 22 : cp - 65 < 26 ? cp - 65 : -+ return (unsigned) cp - 48 < 10 ? cp - 22 : cp - 65 < 26 ? cp - 65 : - cp - 97 < 26 ? cp - 97 : base; - } - --- -2.14.1 - diff --git a/buildroot/package/libidn/0002-Update-intprops.h-for-gcc-7-compatibility.patch b/buildroot/package/libidn/0002-Update-intprops.h-for-gcc-7-compatibility.patch deleted file mode 100644 index 89720442e57..00000000000 --- a/buildroot/package/libidn/0002-Update-intprops.h-for-gcc-7-compatibility.patch +++ /dev/null @@ -1,333 +0,0 @@ -From bd705da12e244dda18474a54a2942591e5ef5148 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Tim=20R=C3=BChsen?= -Date: Wed, 1 Feb 2017 10:44:36 +0100 -Subject: [PATCH] Update intprops.h for gcc-7 compatibility - -[Backport from upstream commit 230930b3bc3e431b819eb45420cb42475d83ca93.] -Signed-off-by: Thomas Petazzoni ---- - gl/intprops.h | 65 ++++++++++++++++++++++++++++++-------------------- - lib/gltests/intprops.h | 65 ++++++++++++++++++++++++++++++-------------------- - 2 files changed, 78 insertions(+), 52 deletions(-) - -diff --git a/gl/intprops.h b/gl/intprops.h -index e1fce5c9..eb06b691 100644 ---- a/gl/intprops.h -+++ b/gl/intprops.h -@@ -1,18 +1,18 @@ - /* intprops.h -- properties of integer types - -- Copyright (C) 2001-2016 Free Software Foundation, Inc. -+ Copyright (C) 2001-2017 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 -+ under the terms of the GNU Lesser General Public License as published -+ by the Free Software Foundation; either version 2.1 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. -+ GNU Lesser General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see . */ - - /* Written by Paul Eggert. */ -@@ -47,12 +47,16 @@ - - /* Minimum and maximum values for integer types and expressions. */ - -+/* The width in bits of the integer type or expression T. -+ Padding bits are not supported; this is checked at compile-time below. */ -+#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) -+ - /* The maximum and minimum values for the integer type T. */ - #define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t)) - #define TYPE_MAXIMUM(t) \ - ((t) (! TYPE_SIGNED (t) \ - ? (t) -1 \ -- : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) -+ : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) - - /* The maximum and minimum values for the type of the expression E, - after integer promotion. E should not have side effects. */ -@@ -65,7 +69,13 @@ - ? _GL_SIGNED_INT_MAXIMUM (e) \ - : _GL_INT_NEGATE_CONVERT (e, 1)) - #define _GL_SIGNED_INT_MAXIMUM(e) \ -- (((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1) -+ (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH ((e) + 0) - 2)) - 1) * 2 + 1) -+ -+/* Work around OpenVMS incompatibility with C99. */ -+#if !defined LLONG_MAX && defined __INT64_MAX -+# define LLONG_MAX __INT64_MAX -+# define LLONG_MIN __INT64_MIN -+#endif - - /* This include file assumes that signed types are two's complement without - padding bits; the above macros have undefined behavior otherwise. -@@ -84,10 +94,15 @@ verify (TYPE_MAXIMUM (long int) == LONG_MAX); - verify (TYPE_MINIMUM (long long int) == LLONG_MIN); - verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); - #endif -+/* Similarly, sanity-check one ISO/IEC TS 18661-1:2014 macro if defined. */ -+#ifdef UINT_WIDTH -+verify (TYPE_WIDTH (unsigned int) == UINT_WIDTH); -+#endif - - /* Does the __typeof__ keyword work? This could be done by - 'configure', but for now it's easier to do it by hand. */ --#if (2 <= __GNUC__ || defined __IBM__TYPEOF__ \ -+#if (2 <= __GNUC__ \ -+ || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ - || (0x5110 <= __SUNPRO_C && !__STDC__)) - # define _GL_HAVE___TYPEOF__ 1 - #else -@@ -116,8 +131,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); - signed, this macro may overestimate the true bound by one byte when - applied to unsigned types of size 2, 4, 16, ... bytes. */ - #define INT_STRLEN_BOUND(t) \ -- (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT \ -- - _GL_SIGNED_TYPE_OR_EXPR (t)) \ -+ (INT_BITS_STRLEN_BOUND (TYPE_WIDTH (t) - _GL_SIGNED_TYPE_OR_EXPR (t)) \ - + _GL_SIGNED_TYPE_OR_EXPR (t)) - - /* Bound on buffer size needed to represent an integer type or expression T, -@@ -222,20 +236,23 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); - ? (a) < (min) >> (b) \ - : (max) >> (b) < (a)) - --/* True if __builtin_add_overflow (A, B, P) works when P is null. */ --#define _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL (7 <= __GNUC__) -+/* True if __builtin_add_overflow (A, B, P) works when P is non-null. */ -+#define _GL_HAS_BUILTIN_OVERFLOW (5 <= __GNUC__) -+ -+/* True if __builtin_add_overflow_p (A, B, C) works. */ -+#define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) - - /* The _GL*_OVERFLOW macros have the same restrictions as the - *_RANGE_OVERFLOW macros, except that they do not assume that operands - (e.g., A and B) have the same type as MIN and MAX. Instead, they assume - that the result (e.g., A + B) has that type. */ --#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL --# define _GL_ADD_OVERFLOW(a, b, min, max) -- __builtin_add_overflow (a, b, (__typeof__ ((a) + (b)) *) 0) --# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) -- __builtin_sub_overflow (a, b, (__typeof__ ((a) - (b)) *) 0) --# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) -- __builtin_mul_overflow (a, b, (__typeof__ ((a) * (b)) *) 0) -+#if _GL_HAS_BUILTIN_OVERFLOW_P -+# define _GL_ADD_OVERFLOW(a, b, min, max) \ -+ __builtin_add_overflow_p (a, b, (__typeof__ ((a) + (b))) 0) -+# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ -+ __builtin_sub_overflow_p (a, b, (__typeof__ ((a) - (b))) 0) -+# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ -+ __builtin_mul_overflow_p (a, b, (__typeof__ ((a) * (b))) 0) - #else - # define _GL_ADD_OVERFLOW(a, b, min, max) \ - ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \ -@@ -315,7 +332,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); - _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) - #define INT_SUBTRACT_OVERFLOW(a, b) \ - _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) --#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL -+#if _GL_HAS_BUILTIN_OVERFLOW_P - # define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a) - #else - # define INT_NEGATE_OVERFLOW(a) \ -@@ -349,10 +366,6 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); - #define INT_MULTIPLY_WRAPV(a, b, r) \ - _GL_INT_OP_WRAPV (a, b, r, *, __builtin_mul_overflow, INT_MULTIPLY_OVERFLOW) - --#ifndef __has_builtin --# define __has_builtin(x) 0 --#endif -- - /* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 - https://llvm.org/bugs/show_bug.cgi?id=25390 -@@ -369,7 +382,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); - the operation. BUILTIN is the builtin operation, and OVERFLOW the - overflow predicate. Return 1 if the result overflows. See above - for restrictions. */ --#if 5 <= __GNUC__ || __has_builtin (__builtin_add_overflow) -+#if _GL_HAS_BUILTIN_OVERFLOW - # define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) builtin (a, b, r) - #elif 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS - # define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \ -@@ -412,7 +425,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); - # else - # define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ -- long int, LONG_MIN, LONG_MAX)) -+ long int, LONG_MIN, LONG_MAX) - # endif - #endif - -diff --git a/lib/gltests/intprops.h b/lib/gltests/intprops.h -index e1fce5c9..eb06b691 100644 ---- a/lib/gltests/intprops.h -+++ b/lib/gltests/intprops.h -@@ -1,18 +1,18 @@ - /* intprops.h -- properties of integer types - -- Copyright (C) 2001-2016 Free Software Foundation, Inc. -+ Copyright (C) 2001-2017 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 -+ under the terms of the GNU Lesser General Public License as published -+ by the Free Software Foundation; either version 2.1 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. -+ GNU Lesser General Public License for more details. - -- You should have received a copy of the GNU General Public License -+ You should have received a copy of the GNU Lesser General Public License - along with this program. If not, see . */ - - /* Written by Paul Eggert. */ -@@ -47,12 +47,16 @@ - - /* Minimum and maximum values for integer types and expressions. */ - -+/* The width in bits of the integer type or expression T. -+ Padding bits are not supported; this is checked at compile-time below. */ -+#define TYPE_WIDTH(t) (sizeof (t) * CHAR_BIT) -+ - /* The maximum and minimum values for the integer type T. */ - #define TYPE_MINIMUM(t) ((t) ~ TYPE_MAXIMUM (t)) - #define TYPE_MAXIMUM(t) \ - ((t) (! TYPE_SIGNED (t) \ - ? (t) -1 \ -- : ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1))) -+ : ((((t) 1 << (TYPE_WIDTH (t) - 2)) - 1) * 2 + 1))) - - /* The maximum and minimum values for the type of the expression E, - after integer promotion. E should not have side effects. */ -@@ -65,7 +69,13 @@ - ? _GL_SIGNED_INT_MAXIMUM (e) \ - : _GL_INT_NEGATE_CONVERT (e, 1)) - #define _GL_SIGNED_INT_MAXIMUM(e) \ -- (((_GL_INT_CONVERT (e, 1) << (sizeof ((e) + 0) * CHAR_BIT - 2)) - 1) * 2 + 1) -+ (((_GL_INT_CONVERT (e, 1) << (TYPE_WIDTH ((e) + 0) - 2)) - 1) * 2 + 1) -+ -+/* Work around OpenVMS incompatibility with C99. */ -+#if !defined LLONG_MAX && defined __INT64_MAX -+# define LLONG_MAX __INT64_MAX -+# define LLONG_MIN __INT64_MIN -+#endif - - /* This include file assumes that signed types are two's complement without - padding bits; the above macros have undefined behavior otherwise. -@@ -84,10 +94,15 @@ verify (TYPE_MAXIMUM (long int) == LONG_MAX); - verify (TYPE_MINIMUM (long long int) == LLONG_MIN); - verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); - #endif -+/* Similarly, sanity-check one ISO/IEC TS 18661-1:2014 macro if defined. */ -+#ifdef UINT_WIDTH -+verify (TYPE_WIDTH (unsigned int) == UINT_WIDTH); -+#endif - - /* Does the __typeof__ keyword work? This could be done by - 'configure', but for now it's easier to do it by hand. */ --#if (2 <= __GNUC__ || defined __IBM__TYPEOF__ \ -+#if (2 <= __GNUC__ \ -+ || (1210 <= __IBMC__ && defined __IBM__TYPEOF__) \ - || (0x5110 <= __SUNPRO_C && !__STDC__)) - # define _GL_HAVE___TYPEOF__ 1 - #else -@@ -116,8 +131,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); - signed, this macro may overestimate the true bound by one byte when - applied to unsigned types of size 2, 4, 16, ... bytes. */ - #define INT_STRLEN_BOUND(t) \ -- (INT_BITS_STRLEN_BOUND (sizeof (t) * CHAR_BIT \ -- - _GL_SIGNED_TYPE_OR_EXPR (t)) \ -+ (INT_BITS_STRLEN_BOUND (TYPE_WIDTH (t) - _GL_SIGNED_TYPE_OR_EXPR (t)) \ - + _GL_SIGNED_TYPE_OR_EXPR (t)) - - /* Bound on buffer size needed to represent an integer type or expression T, -@@ -222,20 +236,23 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); - ? (a) < (min) >> (b) \ - : (max) >> (b) < (a)) - --/* True if __builtin_add_overflow (A, B, P) works when P is null. */ --#define _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL (7 <= __GNUC__) -+/* True if __builtin_add_overflow (A, B, P) works when P is non-null. */ -+#define _GL_HAS_BUILTIN_OVERFLOW (5 <= __GNUC__) -+ -+/* True if __builtin_add_overflow_p (A, B, C) works. */ -+#define _GL_HAS_BUILTIN_OVERFLOW_P (7 <= __GNUC__) - - /* The _GL*_OVERFLOW macros have the same restrictions as the - *_RANGE_OVERFLOW macros, except that they do not assume that operands - (e.g., A and B) have the same type as MIN and MAX. Instead, they assume - that the result (e.g., A + B) has that type. */ --#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL --# define _GL_ADD_OVERFLOW(a, b, min, max) -- __builtin_add_overflow (a, b, (__typeof__ ((a) + (b)) *) 0) --# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) -- __builtin_sub_overflow (a, b, (__typeof__ ((a) - (b)) *) 0) --# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) -- __builtin_mul_overflow (a, b, (__typeof__ ((a) * (b)) *) 0) -+#if _GL_HAS_BUILTIN_OVERFLOW_P -+# define _GL_ADD_OVERFLOW(a, b, min, max) \ -+ __builtin_add_overflow_p (a, b, (__typeof__ ((a) + (b))) 0) -+# define _GL_SUBTRACT_OVERFLOW(a, b, min, max) \ -+ __builtin_sub_overflow_p (a, b, (__typeof__ ((a) - (b))) 0) -+# define _GL_MULTIPLY_OVERFLOW(a, b, min, max) \ -+ __builtin_mul_overflow_p (a, b, (__typeof__ ((a) * (b))) 0) - #else - # define _GL_ADD_OVERFLOW(a, b, min, max) \ - ((min) < 0 ? INT_ADD_RANGE_OVERFLOW (a, b, min, max) \ -@@ -315,7 +332,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); - _GL_BINARY_OP_OVERFLOW (a, b, _GL_ADD_OVERFLOW) - #define INT_SUBTRACT_OVERFLOW(a, b) \ - _GL_BINARY_OP_OVERFLOW (a, b, _GL_SUBTRACT_OVERFLOW) --#if _GL_HAS_BUILTIN_OVERFLOW_WITH_NULL -+#if _GL_HAS_BUILTIN_OVERFLOW_P - # define INT_NEGATE_OVERFLOW(a) INT_SUBTRACT_OVERFLOW (0, a) - #else - # define INT_NEGATE_OVERFLOW(a) \ -@@ -349,10 +366,6 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); - #define INT_MULTIPLY_WRAPV(a, b, r) \ - _GL_INT_OP_WRAPV (a, b, r, *, __builtin_mul_overflow, INT_MULTIPLY_OVERFLOW) - --#ifndef __has_builtin --# define __has_builtin(x) 0 --#endif -- - /* Nonzero if this compiler has GCC bug 68193 or Clang bug 25390. See: - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68193 - https://llvm.org/bugs/show_bug.cgi?id=25390 -@@ -369,7 +382,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); - the operation. BUILTIN is the builtin operation, and OVERFLOW the - overflow predicate. Return 1 if the result overflows. See above - for restrictions. */ --#if 5 <= __GNUC__ || __has_builtin (__builtin_add_overflow) -+#if _GL_HAS_BUILTIN_OVERFLOW - # define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) builtin (a, b, r) - #elif 201112 <= __STDC_VERSION__ && !_GL__GENERIC_BOGUS - # define _GL_INT_OP_WRAPV(a, b, r, op, builtin, overflow) \ -@@ -412,7 +425,7 @@ verify (TYPE_MAXIMUM (long long int) == LLONG_MAX); - # else - # define _GL_INT_OP_WRAPV_LONGISH(a, b, r, op, overflow) \ - _GL_INT_OP_CALC (a, b, r, op, overflow, unsigned long int, \ -- long int, LONG_MIN, LONG_MAX)) -+ long int, LONG_MIN, LONG_MAX) - # endif - #endif - --- -2.13.6 - diff --git a/buildroot/package/libidn/libidn.hash b/buildroot/package/libidn/libidn.hash index 4658a3e8576..0d033424478 100644 --- a/buildroot/package/libidn/libidn.hash +++ b/buildroot/package/libidn/libidn.hash @@ -1,4 +1,9 @@ -# From http://lists.nongnu.org/archive/html/help-libidn/2016-07/msg00009.html -sha1 57872fdc665dcc585e16f4ac0bb35374b1103f7e libidn-1.33.tar.gz +# From http://lists.nongnu.org/archive/html/help-libidn/2018-03/msg00006.html +sha1 8701e3d01df25431802ce483756ecad698156835 libidn-1.34.tar.gz # Calculated based on the hash above -sha256 44a7aab635bb721ceef6beecc4d49dfd19478325e1b47f3196f7d2acc4930e19 libidn-1.33.tar.gz +sha256 3719e2975f2fb28605df3479c380af2cf4ab4e919e1506527e4c7670afff6e3c libidn-1.34.tar.gz + +# Hash for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYINGv2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYINGv3 +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING.LESSERv3 diff --git a/buildroot/package/libidn/libidn.mk b/buildroot/package/libidn/libidn.mk index b50a8b622f2..77733edaa9e 100644 --- a/buildroot/package/libidn/libidn.mk +++ b/buildroot/package/libidn/libidn.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBIDN_VERSION = 1.33 +LIBIDN_VERSION = 1.34 LIBIDN_SITE = $(BR2_GNU_MIRROR)/libidn LIBIDN_INSTALL_STAGING = YES LIBIDN_CONF_ENV = EMACS="no" MAKEINFO=true @@ -12,8 +12,6 @@ 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 -# lib/punycode.c patch triggers reconf in doc/ -LIBIDN_AUTORECONF = YES define LIBIDN_REMOVE_BINARY rm -f $(TARGET_DIR)/usr/bin/idn diff --git a/buildroot/package/libiio/libiio.hash b/buildroot/package/libiio/libiio.hash index 027e2a072b9..fbb4bccb905 100644 --- a/buildroot/package/libiio/libiio.hash +++ b/buildroot/package/libiio/libiio.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 002d57f35715821efae66479859bc5357b4d8d33bfff1446b4e17b02ae2c10d2 libiio-0.10.tar.gz +sha256 12063db7a9366aa00bfd789db30afaddb29686bc29b3ce1e5d4adfe1c3b42527 libiio-0.14.tar.gz +sha256 102900208eef27b766380135906d431dba87edaa7ec6aa72e6ebd3dd67f3a97b COPYING.txt diff --git a/buildroot/package/libiio/libiio.mk b/buildroot/package/libiio/libiio.mk index 3fbd39188a3..d2376bca34d 100644 --- a/buildroot/package/libiio/libiio.mk +++ b/buildroot/package/libiio/libiio.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBIIO_VERSION = 0.10 +LIBIIO_VERSION = 0.14 LIBIIO_SITE = $(call github,analogdevicesinc,libiio,v$(LIBIIO_VERSION)) LIBIIO_INSTALL_STAGING = YES LIBIIO_LICENSE = LGPL-2.1+ diff --git a/buildroot/package/libilbc/libilbc.hash b/buildroot/package/libilbc/libilbc.hash index e6789c5e842..81a0c4e0373 100644 --- a/buildroot/package/libilbc/libilbc.hash +++ b/buildroot/package/libilbc/libilbc.hash @@ -1,2 +1,3 @@ # Locally computed sha256 70cd6a4f6bbe6dcebfc4293eea7b6200f883d1bf0affa1efba819d44d274e35f libilbc-829b08c7902ceb87a261279fabb36b6d523c6e07.tar.gz +sha256 b7f4cbb4a12cd11a3d1aeda9bd17c99f59b054de4b3ee53045531cd2fa74dd2a gips_iLBClicense.pdf diff --git a/buildroot/package/libimxvpuapi/libimxvpuapi.hash b/buildroot/package/libimxvpuapi/libimxvpuapi.hash index cd0c8f1f5f9..6e0e5d60c99 100644 --- a/buildroot/package/libimxvpuapi/libimxvpuapi.hash +++ b/buildroot/package/libimxvpuapi/libimxvpuapi.hash @@ -1,2 +1,3 @@ # locally computed hash sha256 7151e10a24929935bada1d3d87626f17e411575b3a4ac0d86440999ad0100a55 libimxvpuapi-0.10.3.tar.gz +sha256 4bb33cc4cd956b56b779b501f18cae46a9e26f8c8500cca86ed758b8bc5e1788 LICENSE diff --git a/buildroot/package/libiscsi/libiscsi.hash b/buildroot/package/libiscsi/libiscsi.hash index 4f7d1af50e1..0688f2dd2fb 100644 --- a/buildroot/package/libiscsi/libiscsi.hash +++ b/buildroot/package/libiscsi/libiscsi.hash @@ -1,2 +1,5 @@ # Locally computed: sha256 464d104e12533dc11f0dd7662cbc2f01c132f94aa4f5bd519e3413ef485830e8 libiscsi-1.18.0.tar.gz +sha256 88e3eccc48722b2a0eaff456dda94b8e8e123848d01f631969bec8e3c6c6eb85 COPYING +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENCE-GPL-2.txt +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENCE-LGPL-2.1.txt diff --git a/buildroot/package/libite/libite.hash b/buildroot/package/libite/libite.hash index ec894c5e009..7ef9dca57a8 100644 --- a/buildroot/package/libite/libite.hash +++ b/buildroot/package/libite/libite.hash @@ -1,5 +1,5 @@ # Locally calculated -sha256 18c087123f02cc3cfb612bf53b12dc8a94d4d3ebf015ed5937b1f9203eef72f8 libite-v1.9.2.tar.gz +sha256 39a4c12af30a38a813fac7c8d7512efb3692f910eba9c697a50ce0203e039dad libite-v2.0.1.tar.gz sha256 0e97ab27b60e20a7ddb8e9638189ad159124e51d2c12e12735b05423df224da5 LICENSE -sha256 9e0fb98d251dddf5ba81a355f6b4d89835ec53bc5d7f5fcd2c866b54ec5ccec8 chomp.c -sha256 a7d29c148e057fae11a87febc3a51970a26433c35a08fc710be689394442d32d pidfile.c +sha256 9e0fb98d251dddf5ba81a355f6b4d89835ec53bc5d7f5fcd2c866b54ec5ccec8 src/chomp.c +sha256 a7d29c148e057fae11a87febc3a51970a26433c35a08fc710be689394442d32d src/pidfile.c diff --git a/buildroot/package/libite/libite.mk b/buildroot/package/libite/libite.mk index e88060d1dce..a128953c7af 100644 --- a/buildroot/package/libite/libite.mk +++ b/buildroot/package/libite/libite.mk @@ -4,10 +4,10 @@ # ################################################################################ -LIBITE_VERSION = v1.9.2 +LIBITE_VERSION = v2.0.1 LIBITE_SITE = $(call github,troglobit,libite,$(LIBITE_VERSION)) LIBITE_LICENSE = MIT, X11, ISC, BSD-2-Clause -LIBITE_LICENSE_FILES = LICENSE chomp.c pidfile.c +LIBITE_LICENSE_FILES = LICENSE src/chomp.c src/pidfile.c LIBITE_INSTALL_STAGING = YES LIBITE_AUTORECONF = YES diff --git a/buildroot/package/libjpeg/libjpeg.hash b/buildroot/package/libjpeg/libjpeg.hash index 2ad7dda6cfc..7d47f550cb5 100644 --- a/buildroot/package/libjpeg/libjpeg.hash +++ b/buildroot/package/libjpeg/libjpeg.hash @@ -1,2 +1,3 @@ # locally computed hash -sha256 240fd398da741669bf3c90366f58452ea59041cacc741a489b99f2f6a0bad052 jpegsrc.v9b.tar.gz +sha256 650250979303a649e21f87b5ccd02672af1ea6954b911342ea491f351ceb7122 jpegsrc.v9c.tar.gz +sha256 31f366acfb6259456d9046eb7f16875e387f8bf029d37ac4c4397bf63f22fd6b README diff --git a/buildroot/package/libjpeg/libjpeg.mk b/buildroot/package/libjpeg/libjpeg.mk index 95663a9e00f..edda2a5a1bc 100644 --- a/buildroot/package/libjpeg/libjpeg.mk +++ b/buildroot/package/libjpeg/libjpeg.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBJPEG_VERSION = 9b +LIBJPEG_VERSION = 9c LIBJPEG_SITE = http://www.ijg.org/files LIBJPEG_SOURCE = jpegsrc.v$(LIBJPEG_VERSION).tar.gz LIBJPEG_LICENSE = jpeg-license (BSD-3-Clause-like) diff --git a/buildroot/package/libjson/libjson.hash b/buildroot/package/libjson/libjson.hash index f3447ee73db..3d9b26a53d9 100644 --- a/buildroot/package/libjson/libjson.hash +++ b/buildroot/package/libjson/libjson.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 07267a3951038ee2e02d26cc41bf8e275668c38f751240d3e78dc979182e7376 libjson_7.6.1.zip +sha256 bd62d605bef39ab7ae39f6fa333ba513edb93cfcd56c9c966f1d34e31ff7c69b License.txt diff --git a/buildroot/package/libjson/libjson.mk b/buildroot/package/libjson/libjson.mk index 74224ba6572..d04ddc40f33 100644 --- a/buildroot/package/libjson/libjson.mk +++ b/buildroot/package/libjson/libjson.mk @@ -23,7 +23,7 @@ endif LIBJSON_MAKE_OPTS += BUILD_TYPE= CXXFLAGS="$(LIBJSON_CXXFLAGS)" define LIBJSON_EXTRACT_CMDS - $(UNZIP) -d $(@D) $(DL_DIR)/$(LIBJSON_SOURCE) + $(UNZIP) -d $(@D) $(LIBJSON_DL_DIR)/$(LIBJSON_SOURCE) mv $(@D)/libjson/* $(@D) $(RM) -r $(@D)/libjson $(SED) '/ldconfig/d' $(@D)/makefile diff --git a/buildroot/package/libkcapi/0001-Fix-getrandom-call-in-kcapi-rng.c.patch b/buildroot/package/libkcapi/0001-Fix-getrandom-call-in-kcapi-rng.c.patch new file mode 100644 index 00000000000..d83edd92614 --- /dev/null +++ b/buildroot/package/libkcapi/0001-Fix-getrandom-call-in-kcapi-rng.c.patch @@ -0,0 +1,31 @@ +From 581717cfb0e35c041246da0c0c591a6e9f7a40e5 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Wed, 2 May 2018 21:03:45 +0200 +Subject: [PATCH] Fix getrandom call in kcapi-rng.c + +_GNU_SOURCE must be defined and unistd.h must be included to be able to +use getrandom + +Signed-off-by: Fabrice Fontaine + +[Upstream status: https://github.com/smuellerDD/libkcapi/pull/56] +--- + lib/kcapi-rng.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/lib/kcapi-rng.c b/lib/kcapi-rng.c +index 45f4d18..9ceabd4 100644 +--- a/lib/kcapi-rng.c ++++ b/lib/kcapi-rng.c +@@ -18,6 +18,8 @@ + * DAMAGE. + */ + ++#define _GNU_SOURCE ++#include + #include + #ifdef HAVE_GETRANDOM + #include +-- +2.14.1 + diff --git a/buildroot/package/libkcapi/0001-Have-sufficient-memory-size-for-message.patch b/buildroot/package/libkcapi/0001-Have-sufficient-memory-size-for-message.patch deleted file mode 100644 index 39e683f58ab..00000000000 --- a/buildroot/package/libkcapi/0001-Have-sufficient-memory-size-for-message.patch +++ /dev/null @@ -1,31 +0,0 @@ -From b56deda7c13c257050fdbdd71c1a5a47b78aa63e Mon Sep 17 00:00:00 2001 -From: Stephan Mueller -Date: Thu, 3 Aug 2017 17:50:51 +0200 -Subject: [PATCH] Have sufficient memory size for message - -With GCC 7, the size of the buffer in snprintf is checked. The -occurrence here is found to be too small. - -Signed-off-by: Stephan Mueller -[Upstream commit: https://github.com/smuellerDD/libkcapi/commit/b56deda7c13c257050fdbdd71c1a5a47b78aa63e] -Signed-off-by: Marcin Nowakowski ---- - speed-test/cryptoperf-base.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/speed-test/cryptoperf-base.c b/speed-test/cryptoperf-base.c -index 8766ca7..07384ae 100644 ---- a/speed-test/cryptoperf-base.c -+++ b/speed-test/cryptoperf-base.c -@@ -172,7 +172,7 @@ char *cp_print_status(struct cp_test *test, int raw) - (unsigned long)(processed_bytes/totaltime), - (unsigned long)ops); - } else { -- #define VALLEN 10 -+ #define VALLEN 23 - char byteseconds[VALLEN + 1]; - - memset(byteseconds, 0, sizeof(byteseconds)); --- -2.7.4 - diff --git a/buildroot/package/libkcapi/0002-Do-not-compile-unused-functions.patch b/buildroot/package/libkcapi/0002-Do-not-compile-unused-functions.patch deleted file mode 100644 index 97ab7fc50ba..00000000000 --- a/buildroot/package/libkcapi/0002-Do-not-compile-unused-functions.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 217b154a5f65d46064ceb69ce69664105e703a74 Mon Sep 17 00:00:00 2001 -From: Stephan Mueller -Date: Thu, 3 Aug 2017 17:52:48 +0200 -Subject: [PATCH] Do not compile unused functions - -GCC 7 now rightfully complains about unused functions. - -Signed-off-by: Stephan Mueller - -[Upstream commit: https://github.com/smuellerDD/libkcapi/commit/217b154a5f65d46064ceb69ce69664105e703a74] -Signed-off-by: Marcin Nowakowski ---- - apps/kcapi-rng.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/apps/kcapi-rng.c b/apps/kcapi-rng.c -index df7decf..e15edf9 100644 ---- a/apps/kcapi-rng.c -+++ b/apps/kcapi-rng.c -@@ -45,6 +45,7 @@ struct kcapi_handle *rng = NULL; - unsigned int Verbosity = 0; - char *rng_name = NULL; - -+#ifndef HAVE_GETRANDOM - static int read_complete(int fd, uint8_t *buf, uint32_t buflen) - { - ssize_t ret; -@@ -76,6 +77,7 @@ static int read_random(uint8_t *buf, uint32_t buflen) - close(fd); - return ret; - } -+#endif - - static int get_random(uint8_t *buf, uint32_t buflen) - { diff --git a/buildroot/package/libkcapi/0003-Unify-code-to-read-from-seed-sources.patch b/buildroot/package/libkcapi/0003-Unify-code-to-read-from-seed-sources.patch deleted file mode 100644 index b636ffe908b..00000000000 --- a/buildroot/package/libkcapi/0003-Unify-code-to-read-from-seed-sources.patch +++ /dev/null @@ -1,132 +0,0 @@ -From 450dfb09ee72ffedea8f2a25fdce17295f01f62f Mon Sep 17 00:00:00 2001 -From: Stephan Mueller -Date: Tue, 8 Aug 2017 10:04:06 +0200 -Subject: [PATCH] Unify code to read from seed sources - -Remove the code duplication for FD reads and syscall reads. - -This patch also fixes the use of __NR_getrandom resolution. - -[Upstream commit: https://github.com/smuellerDD/libkcapi/commit/450dfb09ee72ffedea8f2a25fdce17295f01f62f] -Signed-off-by: Marcin Nowakowski - ---- - apps/kcapi-rng.c | 71 +++++++++++++++++++++++++------------------------------- - 1 file changed, 32 insertions(+), 39 deletions(-) - -diff --git a/apps/kcapi-rng.c b/apps/kcapi-rng.c -index e15edf9..96da111 100644 ---- a/apps/kcapi-rng.c -+++ b/apps/kcapi-rng.c -@@ -17,7 +17,9 @@ - * DAMAGE. - */ - -+#define _GNU_SOURCE - #include -+#include - #include - #include - #include -@@ -41,56 +43,48 @@ - /* Minimum seed is 256 bits. */ - #define KCAPI_RNG_MINSEEDSIZE 32 - --struct kcapi_handle *rng = NULL; --unsigned int Verbosity = 0; --char *rng_name = NULL; -+static struct kcapi_handle *rng = NULL; -+static unsigned int Verbosity = 0; -+static char *rng_name = NULL; - --#ifndef HAVE_GETRANDOM --static int read_complete(int fd, uint8_t *buf, uint32_t buflen) -+#if !defined(HAVE_GETRANDOM) && !defined(__NR_getrandom) -+static int random_fd = -1; -+static int open_random(void) - { -- ssize_t ret; -+ random_fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC); -+ if (0 > random_fd) -+ return random_fd; - -- do { -- ret = read(fd, buf, buflen); -- if (0 < ret) { -- buflen -= ret; -- buf += ret; -- } -- } while ((0 < ret || EINTR == errno || ERESTART == errno) -- && buflen > 0); -- -- if (buflen == 0) -- return 0; -- return 1; -+ return 0; - } - --static int read_random(uint8_t *buf, uint32_t buflen) -+static void close_random(void) - { -- int fd; -- int ret = 0; -- -- fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC); -- if (0 > fd) -- return fd; -- -- ret = read_complete(fd, buf, buflen); -- close(fd); -- return ret; -+ close(random_fd); - } - #endif - - static int get_random(uint8_t *buf, uint32_t buflen) - { -+ ssize_t ret; -+ - if (buflen > INT_MAX) - return 1; - -+#if (!defined(HAVE_GETRANDOM) && !defined(__NR_getrandom)) -+ ret = open_random(); -+ if (ret) -+ return ret; -+#endif -+ -+ do { - #ifdef HAVE_GETRANDOM -- return getrandom(buf, buflen, 0); -+ ret = getrandom(buf, buflen, 0); -+#elif defined __NR_getrandom -+ ret = syscall(__NR_getrandom, buf, buflen, 0); - #else --# ifdef __NR_getrandom -- do { -- int ret = syscall(__NR_getrandom, buf, buflen, 0); -- -+ ret = read(random_fd, buf, buflen); -+#endif - if (0 < ret) { - buflen -= ret; - buf += ret; -@@ -98,14 +92,13 @@ static int get_random(uint8_t *buf, uint32_t buflen) - } while ((0 < ret || EINTR == errno || ERESTART == errno) - && buflen > 0); - -+#if (!defined(HAVE_GETRANDOM) && !defined(__NR_getrandom)) -+ close_random(); -+#endif -+ - if (buflen == 0) - return 0; -- - return 1; --# else -- return read_random(buf, buflen); --# endif --#endif - } - - static void usage(void) diff --git a/buildroot/package/libkcapi/0004-internal.h-make-inline-functions-static.patch b/buildroot/package/libkcapi/0004-internal.h-make-inline-functions-static.patch deleted file mode 100644 index a050173964f..00000000000 --- a/buildroot/package/libkcapi/0004-internal.h-make-inline-functions-static.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 2b9e01ee31c1b7596b19f0c89954e93e217b0479 Mon Sep 17 00:00:00 2001 -From: Marcin Nowakowski -Date: Thu, 21 Sep 2017 10:16:33 +0200 -Subject: [PATCH] internal.h: make inline functions static - -With some GCC configurations/build options it is possible for gcc to -ignore the inline hint. As the methods are not declared static, gcc -expects a definition to be provided elsewhere, which is not the case -here resulting in the following linker error: - -libtool: link: /home/marcin/br-test-pkg/br-arm-cortex-a9-glibc/host/bin/arm-linux-gcc --fstack-protector-strong -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE --D_FILE_OFFSET_BITS=64 -Os -Wl,-z -Wl,relro -Wl,-z -Wl,now -o bin/kcapi -test/bin_kcapi-kcapi-main.o ./.libs/libkcapi.so -Wl,-rpath --Wl,/home/marcin/br-test-pkg/br-arm-cortex-a9-glibc/build/libkcapi-0.14.0/.libs -./.libs/libkcapi.so: undefined reference to `_kcapi_common_vmsplice_iov' -./.libs/libkcapi.so: undefined reference to `_kcapi_common_read_data' -./.libs/libkcapi.so: undefined reference to `_kcapi_aio_read_iov' -./.libs/libkcapi.so: undefined reference to `_kcapi_common_recv_data' -./.libs/libkcapi.so: undefined reference to `_kcapi_common_send_data' -./.libs/libkcapi.so: undefined reference to `_kcapi_common_vmsplice_chunk' -./.libs/libkcapi.so: undefined reference to `_kcapi_common_send_meta' -collect2: error: ld returned 1 exit status - -$ arm-linux-gcc --version -arm-linux-gcc.br_real (Buildroot 2017.08-git-01078-g95b1dae) 7.1.0 - -Signed-off-by: Marcin Nowakowski -Signed-off-by: Stephan Mueller - -[Upstream commit: https://github.com/smuellerDD/libkcapi/commit/2b9e01ee31c1b7596b19f0c89954e93e217b0479] -Signed-off-by: Marcin Nowakowski ---- - lib/internal.h | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -diff --git a/lib/internal.h b/lib/internal.h -index 0d98f24..addf450 100644 ---- a/lib/internal.h -+++ b/lib/internal.h -@@ -233,7 +233,7 @@ void kcapi_dolog(int severity, const char *fmt, ...); - int32_t _kcapi_common_send_meta_fd(struct kcapi_handle *handle, int *fdptr, - struct iovec *iov, uint32_t iovlen, - uint32_t enc, uint32_t flags); --inline int32_t _kcapi_common_send_meta(struct kcapi_handle *handle, -+static inline int32_t _kcapi_common_send_meta(struct kcapi_handle *handle, - struct iovec *iov, uint32_t iovlen, - uint32_t enc, uint32_t flags) - { -@@ -244,7 +244,7 @@ inline int32_t _kcapi_common_send_meta(struct kcapi_handle *handle, - int32_t _kcapi_common_vmsplice_iov_fd(struct kcapi_handle *handle, int *fdptr, - struct iovec *iov, unsigned long iovlen, - uint32_t flags); --inline int32_t _kcapi_common_vmsplice_iov(struct kcapi_handle *handle, -+static inline int32_t _kcapi_common_vmsplice_iov(struct kcapi_handle *handle, - struct iovec *iov, unsigned long iovlen, - uint32_t flags) - { -@@ -255,7 +255,7 @@ inline int32_t _kcapi_common_vmsplice_iov(struct kcapi_handle *handle, - int32_t _kcapi_common_send_data_fd(struct kcapi_handle *handle, int *fdprt, - struct iovec *iov, uint32_t iovlen, - uint32_t flags); --inline int32_t _kcapi_common_send_data(struct kcapi_handle *handle, -+static inline int32_t _kcapi_common_send_data(struct kcapi_handle *handle, - struct iovec *iov, uint32_t iovlen, - uint32_t flags) - { -@@ -265,7 +265,7 @@ inline int32_t _kcapi_common_send_data(struct kcapi_handle *handle, - - int32_t _kcapi_common_recv_data_fd(struct kcapi_handle *handle, int *fdptr, - struct iovec *iov, uint32_t iovlen); --inline int32_t _kcapi_common_recv_data(struct kcapi_handle *handle, -+static inline int32_t _kcapi_common_recv_data(struct kcapi_handle *handle, - struct iovec *iov, uint32_t iovlen) - { - return _kcapi_common_recv_data_fd(handle, &handle->opfd, iov, iovlen); -@@ -273,7 +273,7 @@ inline int32_t _kcapi_common_recv_data(struct kcapi_handle *handle, - - int32_t _kcapi_common_read_data_fd(struct kcapi_handle *handle, int *fdptr, - uint8_t *out, uint32_t outlen); --inline int32_t _kcapi_common_read_data(struct kcapi_handle *handle, -+static inline int32_t _kcapi_common_read_data(struct kcapi_handle *handle, - uint8_t *out, uint32_t outlen) - { - return _kcapi_common_read_data_fd(handle, &handle->opfd, out, outlen); -@@ -285,7 +285,7 @@ int _kcapi_common_close(struct kcapi_handle *handle, int fdptr); - int32_t _kcapi_common_vmsplice_chunk_fd(struct kcapi_handle *handle, int *fdptr, - const uint8_t *in, uint32_t inlen, - uint32_t flags); --inline int32_t _kcapi_common_vmsplice_chunk(struct kcapi_handle *handle, -+static inline int32_t _kcapi_common_vmsplice_chunk(struct kcapi_handle *handle, - const uint8_t *in, uint32_t inlen, - uint32_t flags) - { -@@ -315,7 +315,7 @@ int _kcapi_aio_send_iov(struct kcapi_handle *handle, struct iovec *iov, - - int32_t _kcapi_aio_read_iov_fd(struct kcapi_handle *handle, int *fdptr, - struct iovec *iov, uint32_t iovlen); --inline int32_t _kcapi_aio_read_iov(struct kcapi_handle *handle, -+static inline int32_t _kcapi_aio_read_iov(struct kcapi_handle *handle, - struct iovec *iov, uint32_t iovlen) - { - return _kcapi_aio_read_iov_fd(handle, &handle->opfd, iov, iovlen); diff --git a/buildroot/package/libkcapi/Config.in b/buildroot/package/libkcapi/Config.in index 2b981777e6a..1dbcdc381bc 100644 --- a/buildroot/package/libkcapi/Config.in +++ b/buildroot/package/libkcapi/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_LIBKCAPI bool "libkcapi" + depends on BR2_TOOLCHAIN_HAS_SYNC_4 help Linux Kernel Crypto API userspace interface library @@ -7,11 +8,21 @@ config BR2_PACKAGE_LIBKCAPI if BR2_PACKAGE_LIBKCAPI -config BR2_PACKAGE_LIBKCAPI_APPS - bool "build test applications" +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_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() - help - Build additional test applications that can provide - performance or algorithm tests. endif diff --git a/buildroot/package/libkcapi/libkcapi.hash b/buildroot/package/libkcapi/libkcapi.hash index 9873e6623e4..9cb1e80ccbf 100644 --- a/buildroot/package/libkcapi/libkcapi.hash +++ b/buildroot/package/libkcapi/libkcapi.hash @@ -1,2 +1,5 @@ # Locally calculated -sha256 411fc32b3e36ac0268837a8d4538eb8aef487b3a3e9b21a2b88b8ed2f926edf3 libkcapi-0.14.0.tar.xz +sha256 ac80211317750f6a545b1e5547cfb6ae450b37c11acb6d24982a581705eb5250 libkcapi-1.1.0.tar.xz +sha256 b0336f8f07a6abf8b0a59d961f53601d7c4a7c09a8137805b730a34a976039f8 COPYING +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 COPYING.gplv2 +sha256 13aa749a5b0a454917a944ed8fffc530b784f5ead522b1aacaf4ec8aa55a6239 COPYING.bsd diff --git a/buildroot/package/libkcapi/libkcapi.mk b/buildroot/package/libkcapi/libkcapi.mk index d21c81b1681..1a45f4f996d 100644 --- a/buildroot/package/libkcapi/libkcapi.mk +++ b/buildroot/package/libkcapi/libkcapi.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBKCAPI_VERSION = 0.14.0 +LIBKCAPI_VERSION = 1.1.0 LIBKCAPI_SOURCE = libkcapi-$(LIBKCAPI_VERSION).tar.xz LIBKCAPI_SITE = http://www.chronox.de/libkcapi LIBKCAPI_AUTORECONF = YES @@ -12,18 +12,28 @@ 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 -ifeq ($(BR2_PACKAGE_LIBKCAPI_APPS),y) -LIBKCAPI_CONF_OPTS += \ - --enable-kcapi-speed \ - --enable-kcapi-test \ - --enable-kcapi-hasher \ - --enable-kcapi-rngapp +ifeq ($(BR2_PACKAGE_LIBKCAPI_HASHER),y) +LIBKCAPI_CONF_OPTS += --enable-kcapi-hasher else -LIBKCAPI_CONF_OPTS += \ - --disable-kcapi-speed \ - --disable-kcapi-test \ - --disable-kcapi-hasher \ - --disable-kcapi-rngapp +LIBKCAPI_CONF_OPTS += --disable-kcapi-hasher +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/buildroot/package/libkrb5/Config.in b/buildroot/package/libkrb5/Config.in new file mode 100644 index 00000000000..2e24c872296 --- /dev/null +++ b/buildroot/package/libkrb5/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_LIBKRB5 + bool "libkrb5" + # needs fork() + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + 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/buildroot/package/libkrb5/libkrb5.hash b/buildroot/package/libkrb5/libkrb5.hash new file mode 100644 index 00000000000..2980947faad --- /dev/null +++ b/buildroot/package/libkrb5/libkrb5.hash @@ -0,0 +1,5 @@ +# Locally calculated after checking pgp signature +sha256 214ffe394e3ad0c730564074ec44f1da119159d94281bbec541dc29168d21117 krb5-1.16.1.tar.gz + +# Hash for license file: +sha256 58534f00ed877fd32936fcab094f49d399aeef7716393204d8028c4b89050c82 NOTICE diff --git a/buildroot/package/libkrb5/libkrb5.mk b/buildroot/package/libkrb5/libkrb5.mk new file mode 100644 index 00000000000..d9d7160ae8d --- /dev/null +++ b/buildroot/package/libkrb5/libkrb5.mk @@ -0,0 +1,59 @@ +################################################################################ +# +# libkrb5 +# +################################################################################ + +LIBKRB5_VERSION_MAJOR = 1.16 +LIBKRB5_VERSION = $(LIBKRB5_VERSION_MAJOR).1 +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 +LIBKRB5_LICENSE_FILES = NOTICE +LIBKRB5_DEPENDENCIES = host-bison +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 + +# Never use the host packages +LIBKRB5_CONF_OPTS = \ + --without-system-db \ + --without-system-et \ + --without-system-ss \ + --without-system-verto \ + --without-tcl \ + --disable-rpath + +ifeq ($(BR2_PACKAGE_OPENLDAP),y) +LIBKRB5_CONF_OPTS += --with-ldap +LIBKRB5_DEPENDENCIES += openldap +else +LIBKRB5_CONF_OPTS += --without-ldap +endif + +ifeq ($(BR2_PACKAGE_LIBEDIT),y) +LIBKRB5_CONF_OPTS += --with-libedit +LIBKRB5_DEPENDENCIES += 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/buildroot/package/libksba/libksba.hash b/buildroot/package/libksba/libksba.hash index f0a38f3de3c..8ab7e6efe8b 100644 --- a/buildroot/package/libksba/libksba.hash +++ b/buildroot/package/libksba/libksba.hash @@ -1,2 +1,9 @@ # Locally calculated after checking pgp signature sha256 41444fd7a6ff73a79ad9728f985e71c9ba8cd3e5e53358e70d5f066d35c1a340 libksba-1.3.5.tar.bz2 + +# Hash for license files: +sha256 240908e1356ffeb5d0730227b6198dcc8e878375d28632fd813e0ed75b35ccc2 AUTHORS +sha256 6197b98c6bf69838c624809c509d84333de1bc847155168c0e84527446a27076 COPYING +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING.GPLv2 +sha256 0abbff814cd00e2b0b6d08395af2b419c1a92026c4b4adacbb65ccda45fa58cf COPYING.GPLv3 +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 COPYING.LGPLv3 diff --git a/buildroot/package/libldns/libldns.hash b/buildroot/package/libldns/libldns.hash index dc6b1a341ac..f20bb4be591 100644 --- a/buildroot/package/libldns/libldns.hash +++ b/buildroot/package/libldns/libldns.hash @@ -2,3 +2,6 @@ sha1 ceeeccf8a27e61a854762737f6ee02f44662c1b8 ldns-1.7.0.tar.gz # From http://www.nlnetlabs.nl/downloads/ldns/ldns-1.7.0.tar.gz.sha256 sha256 c19f5b1b4fb374cfe34f4845ea11b1e0551ddc67803bd6ddd5d2a20f0997a6cc ldns-1.7.0.tar.gz + +# Hash for license file: +sha256 9e0b1505c358d1a7c79555ee8bd1acbe2985dbc74dd81f3697cebf2161e922e6 LICENSE diff --git a/buildroot/package/liblinear/0001-blas-don-t-overwrite-ar-options.patch b/buildroot/package/liblinear/0001-blas-don-t-overwrite-ar-options.patch index 5d1ef3f52a5..0c13e35c4c8 100644 --- a/buildroot/package/liblinear/0001-blas-don-t-overwrite-ar-options.patch +++ b/buildroot/package/liblinear/0001-blas-don-t-overwrite-ar-options.patch @@ -7,6 +7,7 @@ ar's rcv options get lost when AR is passed on the command line. Signed-off-by: Romain Naour +Signed-off-by: Fabrice Fontaine --- blas/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) @@ -18,14 +19,14 @@ index 895fd24..78cec9a 100644 @@ -1,4 +1,4 @@ -AR = ar rcv +AR = ar - RANLIB = ranlib + RANLIB = ranlib HEADERS = blas.h blasp.h @@ -8,7 +8,7 @@ CFLAGS = $(OPTFLAGS) FFLAGS = $(OPTFLAGS) blas: $(FILES) $(HEADERS) -- $(AR) blas.a $(FILES) +- $(AR) blas.a $(FILES) + $(AR) rcv blas.a $(FILES) $(RANLIB) blas.a diff --git a/buildroot/package/liblinear/liblinear.hash b/buildroot/package/liblinear/liblinear.hash index 4f03fa4a84a..9644bc02dd9 100644 --- a/buildroot/package/liblinear/liblinear.hash +++ b/buildroot/package/liblinear/liblinear.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 fa5c12dedc76ffca12f1681de7073b03af68163c4e4be65194217c99e55a7d68 liblinear-2.1.tar.gz +sha256 3f9fef20e76267bed1b817c9dc96d561ab5ee487828109bd44ed268fbf42048f liblinear-2.20.tar.gz +sha256 2ad9363447d0afeca34d53619163cffd502ec172bdb44d8d112c7acb99ae2558 COPYRIGHT diff --git a/buildroot/package/liblinear/liblinear.mk b/buildroot/package/liblinear/liblinear.mk index 84527ab8f52..e1a0d10909a 100644 --- a/buildroot/package/liblinear/liblinear.mk +++ b/buildroot/package/liblinear/liblinear.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBLINEAR_VERSION = 2.1 +LIBLINEAR_VERSION = 2.20 LIBLINEAR_SITE = http://www.csie.ntu.edu.tw/~cjlin/liblinear LIBLINEAR_LICENSE = BSD-3-Clause LIBLINEAR_LICENSE_FILES = COPYRIGHT diff --git a/buildroot/package/libllcp/libllcp.hash b/buildroot/package/libllcp/libllcp.hash index 47c909f1e69..e6f63017311 100644 --- a/buildroot/package/libllcp/libllcp.hash +++ b/buildroot/package/libllcp/libllcp.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 4336533304a11ecb3041d211ccecd7759b7c7aad4f44037721803e2da1094d22 libllcp-05dfa8003433a7070bfd8ae02efdb0203bbf34aa.tar.gz +sha256 9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1 COPYING diff --git a/buildroot/package/liblo/0001-server-use-correct-poll.h-header.patch b/buildroot/package/liblo/0001-server-use-correct-poll.h-header.patch new file mode 100644 index 00000000000..04c0445534a --- /dev/null +++ b/buildroot/package/liblo/0001-server-use-correct-poll.h-header.patch @@ -0,0 +1,32 @@ +From d59f2e6f42a9e4f8a9184d7ed75546f47dc50123 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 8 Apr 2018 11:09:02 +0200 +Subject: [PATCH] server: use correct poll.h header + +Fixes build with the musl C library: + http://autobuild.buildroot.net/results/000a46954d0c6d3dbc4b4634a0d3a3c955fac679 + +Signed-off-by: "Yann E. MORIN" +--- +Upstream status: + PR sent: https://github.com/radarsat1/liblo/pull/66 +--- + src/server.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/server.c b/src/server.c +index 01fa08f..11c62d2 100644 +--- a/src/server.c ++++ b/src/server.c +@@ -51,7 +51,7 @@ + #include + #include + #ifdef HAVE_POLL +-#include ++#include + #endif + #include + #include +-- +2.14.1 + diff --git a/buildroot/package/liblo/liblo.hash b/buildroot/package/liblo/liblo.hash index a4e01a6d73c..fe61f82e67e 100644 --- a/buildroot/package/liblo/liblo.hash +++ b/buildroot/package/liblo/liblo.hash @@ -1,3 +1,6 @@ -# From http://sourceforge.net/projects/liblo/files/liblo/0.26/ -sha1 21942c8f19e9829b5842cb85352f98c49dfbc823 liblo-0.26.tar.gz -md5 5351de14262560e15e7f23865293b16f liblo-0.26.tar.gz +# From http://sourceforge.net/projects/liblo/files/liblo/0.29/ +sha1 6aa69456787d3d6ef915281b4a0f8f2c79548ce3 liblo-0.29.tar.gz +md5 b0e70bc0fb2254addf94adddf85cffd3 liblo-0.29.tar.gz + +# Locally computed +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING diff --git a/buildroot/package/liblo/liblo.mk b/buildroot/package/liblo/liblo.mk index 3c852be7e3e..e28e52803a2 100644 --- a/buildroot/package/liblo/liblo.mk +++ b/buildroot/package/liblo/liblo.mk @@ -4,11 +4,20 @@ # ################################################################################ -LIBLO_VERSION = 0.26 +LIBLO_VERSION = 0.29 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/buildroot/package/liblog4c-localtime/liblog4c-localtime.hash b/buildroot/package/liblog4c-localtime/liblog4c-localtime.hash index 2e4e6417ceb..c638d7325fe 100644 --- a/buildroot/package/liblog4c-localtime/liblog4c-localtime.hash +++ b/buildroot/package/liblog4c-localtime/liblog4c-localtime.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 a1f68d8251509c0171f8bfea42f9e2a5255a4185f7dcbe67f584aa09709b2496 liblog4c-localtime-v1.0.tar.gz +sha256 a190dc9c8043755d90f8b0a75fa66b9e42d4af4c980bf5ddc633f0124db3cee7 COPYING diff --git a/buildroot/package/liblogging/liblogging.hash b/buildroot/package/liblogging/liblogging.hash index f5674a1c6d0..618689b49b4 100644 --- a/buildroot/package/liblogging/liblogging.hash +++ b/buildroot/package/liblogging/liblogging.hash @@ -1,2 +1,5 @@ # From http://www.liblogging.org/ -sha256 310dc1691279b7a669d383581fe4b0babdc7bf75c9b54a24e51e60428624890b liblogging-1.0.5.tar.gz +sha256 338c6174e5c8652eaa34f956be3451f7491a4416ab489aef63151f802b00bf93 liblogging-1.0.6.tar.gz + +# Hash for license file: +sha256 a5626f700d3ee92513673b5f43733af5b651d9e7a9157d4bd81ceb9c89ec04b0 COPYING diff --git a/buildroot/package/liblogging/liblogging.mk b/buildroot/package/liblogging/liblogging.mk index ec57a0ac350..c756891a862 100644 --- a/buildroot/package/liblogging/liblogging.mk +++ b/buildroot/package/liblogging/liblogging.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBLOGGING_VERSION = 1.0.5 +LIBLOGGING_VERSION = 1.0.6 LIBLOGGING_SITE = http://download.rsyslog.com/liblogging LIBLOGGING_LICENSE = BSD-2-Clause LIBLOGGING_LICENSE_FILES = COPYING diff --git a/buildroot/package/libmad/libmad.hash b/buildroot/package/libmad/libmad.hash index 173399f7ff9..8b7859395f9 100644 --- a/buildroot/package/libmad/libmad.hash +++ b/buildroot/package/libmad/libmad.hash @@ -1,3 +1,4 @@ # Locally computed: sha256 bbfac3ed6bfbc2823d3775ebb931087371e142bb0e9bb1bee51a76a6e0078690 libmad-0.15.1b.tar.gz sha256 0e21f2c6b19337d0b237dacc04f7b90a56be7f359f4c9a2ee0b202d9af0cfa69 frame_length.diff +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/buildroot/package/libmatroska/libmatroska.hash b/buildroot/package/libmatroska/libmatroska.hash index 275af639955..e42a9b2824f 100644 --- a/buildroot/package/libmatroska/libmatroska.hash +++ b/buildroot/package/libmatroska/libmatroska.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 d3efaa9f6d3964351a05bea0f848a8d5dc570e4791f179816ce9a93730296bd7 libmatroska-1.4.4.tar.bz2 +sha256 38a61dd5d87c070928b5deb3922b63b2b83c09e2e4a10f9393eecb6afa9795c8 libmatroska-1.4.9.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 LICENSE.LGPL diff --git a/buildroot/package/libmatroska/libmatroska.mk b/buildroot/package/libmatroska/libmatroska.mk index 18ea505af09..b8d0d84d35d 100644 --- a/buildroot/package/libmatroska/libmatroska.mk +++ b/buildroot/package/libmatroska/libmatroska.mk @@ -4,12 +4,12 @@ # ################################################################################ -LIBMATROSKA_VERSION = 1.4.4 -LIBMATROSKA_SOURCE = libmatroska-$(LIBMATROSKA_VERSION).tar.bz2 +LIBMATROSKA_VERSION = 1.4.9 +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_DEPENDENCIES = libebml host-pkgconf -$(eval $(autotools-package)) +$(eval $(cmake-package)) diff --git a/buildroot/package/libmbim/0001-mbim-device-prefer-realpath-to-canonicalize_file_nam.patch b/buildroot/package/libmbim/0001-mbim-device-prefer-realpath-to-canonicalize_file_nam.patch deleted file mode 100644 index 1a72b618afc..00000000000 --- a/buildroot/package/libmbim/0001-mbim-device-prefer-realpath-to-canonicalize_file_nam.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 6b043b9b676e88a80e3d4013863c5e970fdde1df Mon Sep 17 00:00:00 2001 -From: Aleksander Morgado -Date: Mon, 11 Sep 2017 09:31:03 +0200 -Subject: [PATCH] mbim-device: prefer realpath() to canonicalize_file_name() - -Usually the canonicalize_file_name() GNU extension is preferred to the -POSIX realpath(), as it covers some of the limitations the latter has. -But this extension isn't available in lots of platforms or in other -c library implementations (e.g. musl), so just default to the POSIX -method to improve portability. - -Note that the check for canonicalize_file_name() availability during -configure isn't as trivial as adding a new AC_CHECK_FUNCS(), and -importing a gnulib module seems overkill just for this one liner. - -(cherry picked from commit 417b0b80023dc30d61c111ec0a54da2884d3a541) -Signed-off-by: Aleksander Morgado ---- - src/libmbim-glib/mbim-device.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/libmbim-glib/mbim-device.c b/src/libmbim-glib/mbim-device.c -index e1f32a6..20e64af 100644 ---- a/src/libmbim-glib/mbim-device.c -+++ b/src/libmbim-glib/mbim-device.c -@@ -867,7 +867,7 @@ get_descriptors_filepath (MbimDevice *self) - * /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:2.0 - */ - tmp = g_strdup_printf ("/sys/class/%s/%s/device", subsystems[i], device_basename); -- path = canonicalize_file_name (tmp); -+ path = realpath (tmp, NULL); - g_free (tmp); - - if (g_file_test (path, G_FILE_TEST_EXISTS)) { --- -2.13.1 - diff --git a/buildroot/package/libmbim/libmbim.hash b/buildroot/package/libmbim/libmbim.hash index 664513e5c03..9734181a340 100644 --- a/buildroot/package/libmbim/libmbim.hash +++ b/buildroot/package/libmbim/libmbim.hash @@ -1,4 +1,4 @@ # Locally computed: -sha256 22cafe6b8432433aa58bedcf7db71111522ce6531bfe24e8e9b6058412cd31cf libmbim-1.14.2.tar.xz +sha256 c8ca50beeddd4b43309df5b698917268303bf176cea58fe4fe53d5bf0e93fac2 libmbim-1.16.0.tar.xz sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/buildroot/package/libmbim/libmbim.mk b/buildroot/package/libmbim/libmbim.mk index b67905a7fa4..169cdc1dcd6 100644 --- a/buildroot/package/libmbim/libmbim.mk +++ b/buildroot/package/libmbim/libmbim.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBMBIM_VERSION = 1.14.2 +LIBMBIM_VERSION = 1.16.0 LIBMBIM_SITE = http://www.freedesktop.org/software/libmbim LIBMBIM_SOURCE = libmbim-$(LIBMBIM_VERSION).tar.xz LIBMBIM_LICENSE = LGPL-2.0+ (library), GPL-2.0+ (programs) diff --git a/buildroot/package/libmbus/libmbus.hash b/buildroot/package/libmbus/libmbus.hash index faf6a27ab7a..91fe15ced10 100644 --- a/buildroot/package/libmbus/libmbus.hash +++ b/buildroot/package/libmbus/libmbus.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 9fca42592da0ba75df66c6f885a4dbfa916d23e65e3d1ce6e38d940d2a2719a4 libmbus-0.8.0.tar.gz +sha256 ea171a4ae443eca7186f564db2c3cc8b84c1ac343f227f92cd52ec6a948f4a74 COPYING diff --git a/buildroot/package/libmcrypt/libmcrypt.hash b/buildroot/package/libmcrypt/libmcrypt.hash index d0d3a9c977b..30b57522b8d 100644 --- a/buildroot/package/libmcrypt/libmcrypt.hash +++ b/buildroot/package/libmcrypt/libmcrypt.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 e4eb6c074bbab168ac47b947c195ff8cef9d51a211cdd18ca9c9ef34d27a373e libmcrypt-2.5.8.tar.gz +sha256 ca0061fc1381a3ab242310e4b3f56389f28e3d460eb2fd822ed7a21c6f030532 COPYING.LIB diff --git a/buildroot/package/libmediaart/Config.in b/buildroot/package/libmediaart/Config.in index e5e770d4fcc..e0736773959 100644 --- a/buildroot/package/libmediaart/Config.in +++ b/buildroot/package/libmediaart/Config.in @@ -20,17 +20,17 @@ choice prompt "media art backend" default BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE -config BR2_PACKAGE_MEDIAART_BACKEND_NONE +config BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE bool "none" help With no backend, libmediaart will not be able to process MP3 album art. -config BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF +config BR2_PACKAGE_LIBMEDIAART_BACKEND_GDK_PIXBUF bool "gdk-pixbuf" select BR2_PACKAGE_GDK_PIXBUF -config BR2_PACKAGE_MEDIAART_BACKEND_QT +config BR2_PACKAGE_LIBMEDIAART_BACKEND_QT bool "Qt" depends on BR2_PACKAGE_QT || BR2_PACKAGE_QT5 select BR2_PACKAGE_QT_GUI_MODULE if BR2_PACKAGE_QT @@ -41,4 +41,4 @@ comment "Qt backend depends on Qt or Qt5" endchoice -endif # BR2_PACKAGE_MEDIAART +endif # BR2_PACKAGE_LIBMEDIAART diff --git a/buildroot/package/libmediaart/libmediaart.mk b/buildroot/package/libmediaart/libmediaart.mk index db4f1fa2a18..f64210c2668 100644 --- a/buildroot/package/libmediaart/libmediaart.mk +++ b/buildroot/package/libmediaart/libmediaart.mk @@ -15,12 +15,12 @@ LIBMEDIAART_INSTALL_STAGING = YES LIBMEDIAART_DEPENDENCIES = libglib2 LIBMEDIAART_CONF_OPTS = --disable-unit-tests -ifeq ($(BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF),y) +ifeq ($(BR2_PACKAGE_LIBMEDIAART_BACKEND_GDK_PIXBUF),y) LIBMEDIAART_DEPENDENCIES += gdk-pixbuf LIBMEDIAART_CONF_OPTS += \ --enable-gdkpixbuf \ --disable-qt -else ifeq ($(BR2_PACKAGE_MEDIAART_BACKEND_QT),y) +else ifeq ($(BR2_PACKAGE_LIBMEDIAART_BACKEND_QT),y) # qt5 needs c++11 (since qt-5.7) ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) LIBMEDIAART_CONF_ENV += CXXFLAGS="$(TARGET_CXXFLAGS) -std=c++11" @@ -31,7 +31,7 @@ LIBMEDIAART_DEPENDENCIES += \ LIBMEDIAART_CONF_OPTS += \ --disable-gdkpixbuf \ --enable-qt -else ifeq ($(BR2_PACKAGE_MEDIAART_BACKEND_NONE),y) +else ifeq ($(BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE),y) LIBMEDIAART_CONF_OPTS += \ --disable-gdkpixbuf \ --disable-qt diff --git a/buildroot/package/libmemcached/libmemcached.hash b/buildroot/package/libmemcached/libmemcached.hash index 85df58f01e9..77d7c478bc0 100644 --- a/buildroot/package/libmemcached/libmemcached.hash +++ b/buildroot/package/libmemcached/libmemcached.hash @@ -1,2 +1,5 @@ # From https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz/+md5 md5 b3958716b4e53ddc5992e6c49d97e819 libmemcached-1.0.18.tar.gz + +# Hash for license file: +sha256 4e9032d0f539276db05519ee3d09ca6167d2134ec91c556e8c80ef3efe633fd2 COPYING diff --git a/buildroot/package/libmhash/libmhash.hash b/buildroot/package/libmhash/libmhash.hash index 5ae56866522..06c1fe48975 100644 --- a/buildroot/package/libmhash/libmhash.hash +++ b/buildroot/package/libmhash/libmhash.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 56521c52a9033779154432d0ae47ad7198914785265e1f570cee21ab248dfef0 mhash-0.9.9.9.tar.bz2 +sha256 d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5 COPYING diff --git a/buildroot/package/libmicrohttpd/libmicrohttpd.hash b/buildroot/package/libmicrohttpd/libmicrohttpd.hash index e628cb2c6cd..e534e8e80bb 100644 --- a/buildroot/package/libmicrohttpd/libmicrohttpd.hash +++ b/buildroot/package/libmicrohttpd/libmicrohttpd.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 dec1a76487d7e48ad74b468a888bfda1c05731f185ff950f1e363ca9d39caf4e libmicrohttpd-0.9.57.tar.gz +sha256 9b9ccd7d0b11b0e179f1f58dc2caa3e0c62c8609e1e1dc7dcaadf941b67d923c libmicrohttpd-0.9.59.tar.gz sha256 70e12e2a60151b9ed1a4c94a5ffeb99cd086fa94542b5a92fec581506e8d3121 COPYING diff --git a/buildroot/package/libmicrohttpd/libmicrohttpd.mk b/buildroot/package/libmicrohttpd/libmicrohttpd.mk index 62fb7fc2378..1cda4348199 100644 --- a/buildroot/package/libmicrohttpd/libmicrohttpd.mk +++ b/buildroot/package/libmicrohttpd/libmicrohttpd.mk @@ -4,18 +4,17 @@ # ################################################################################ -LIBMICROHTTPD_VERSION = 0.9.57 +LIBMICROHTTPD_VERSION = 0.9.59 LIBMICROHTTPD_SITE = $(BR2_GNU_MIRROR)/libmicrohttpd LIBMICROHTTPD_LICENSE_FILES = COPYING LIBMICROHTTPD_INSTALL_STAGING = YES LIBMICROHTTPD_CONF_OPTS = --disable-curl --disable-examples LIBMICROHTTPD_CFLAGS = $(TARGET_CFLAGS) -std=c99 -# gcc on arc and bfin doesn't define _REENTRANT when -pthread is -# passed while it should. Compensate this deficiency here otherwise -# libmicrohttpd configure script doesn't find that thread support is -# enabled. -ifeq ($(BR2_arc)$(BR2_bfin),y) +# gcc on arc doesn't define _REENTRANT when -pthread is passed while +# it should. Compensate this deficiency here otherwise libmicrohttpd +# configure script doesn't find that thread support is enabled. +ifeq ($(BR2_arc),y) LIBMICROHTTPD_CFLAGS += -D_REENTRANT endif diff --git a/buildroot/package/libminiupnpc/libminiupnpc.hash b/buildroot/package/libminiupnpc/libminiupnpc.hash index 985d69d45f6..c83b38aa60d 100644 --- a/buildroot/package/libminiupnpc/libminiupnpc.hash +++ b/buildroot/package/libminiupnpc/libminiupnpc.hash @@ -1,2 +1,3 @@ # Locally computed sha256 d434ceb8986efbe199c5ca53f90ed53eab290b1e6d0530b717eb6fa49d61f93b miniupnpc-2.0.tar.gz +sha256 4025f2214fa46ad40c156605b83d66e8faf45823e67eb3337af3869716e6d7dd LICENSE diff --git a/buildroot/package/libmms/libmms.hash b/buildroot/package/libmms/libmms.hash index 69865f7c3e3..f424e3afbb1 100644 --- a/buildroot/package/libmms/libmms.hash +++ b/buildroot/package/libmms/libmms.hash @@ -1,2 +1,3 @@ # Locally computed: -sha256 01931b62172d7d7050fc9ef9b1b64162f3b6e9f6cc4415170192a32a0b7ea432 libmms-0.6.2.tar.gz +sha256 3c05e05aebcbfcc044d9e8c2d4646cd8359be39a3f0ba8ce4e72a9094bee704f libmms-0.6.4.tar.gz +sha256 d80c9d084ebfb50ea1ed91bfbc2410d6ce542097a32c43b00781b83adcb8c77f COPYING.LIB diff --git a/buildroot/package/libmms/libmms.mk b/buildroot/package/libmms/libmms.mk index dd0b1df5382..236fe1376e6 100644 --- a/buildroot/package/libmms/libmms.mk +++ b/buildroot/package/libmms/libmms.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBMMS_VERSION = 0.6.2 +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 diff --git a/buildroot/package/libmng/libmng.hash b/buildroot/package/libmng/libmng.hash index a695cc3706a..02a493f414c 100644 --- a/buildroot/package/libmng/libmng.hash +++ b/buildroot/package/libmng/libmng.hash @@ -1,3 +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/buildroot/package/libmnl/libmnl.hash b/buildroot/package/libmnl/libmnl.hash index 98385b857c3..e5bb2fa603b 100644 --- a/buildroot/package/libmnl/libmnl.hash +++ b/buildroot/package/libmnl/libmnl.hash @@ -1,3 +1,6 @@ # From ftp://ftp.netfilter.org/pub/libmnl/libmnl-1.0.4.tar.bz2.{md5sum,sha1sum} md5 be9b4b5328c6da1bda565ac5dffadb2d libmnl-1.0.4.tar.bz2 sha1 2db40dea612e88c62fd321906be40ab5f8f1685a libmnl-1.0.4.tar.bz2 + +# Hash for license file: +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/buildroot/package/libmodbus/libmodbus.hash b/buildroot/package/libmodbus/libmodbus.hash index b5c4450d6b0..2d65e28a349 100644 --- a/buildroot/package/libmodbus/libmodbus.hash +++ b/buildroot/package/libmodbus/libmodbus.hash @@ -1,2 +1,3 @@ # Locally computed sha256 c8c862b0e9a7ba699a49bc98f62bdffdfafd53a5716c0e162696b4bf108d3637 libmodbus-3.1.4.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LESSER diff --git a/buildroot/package/libmodplug/libmodplug.hash b/buildroot/package/libmodplug/libmodplug.hash index 0077e26ccd8..d50a56eeda8 100644 --- a/buildroot/package/libmodplug/libmodplug.hash +++ b/buildroot/package/libmodplug/libmodplug.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 77462d12ee99476c8645cb5511363e3906b88b33a6b54362b4dbc0f39aa2daad libmodplug-0.8.8.5.tar.gz +sha256 49942e7b3b175f549e751feb08b5270ca6f6c5fb7a1be9f9517db275ec32c92e COPYING diff --git a/buildroot/package/libmpd/libmpd.hash b/buildroot/package/libmpd/libmpd.hash index ca06c754fbb..c0e5c6b3c3d 100644 --- a/buildroot/package/libmpd/libmpd.hash +++ b/buildroot/package/libmpd/libmpd.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 fe20326b0d10641f71c4673fae637bf9222a96e1712f71f170fca2fc34bf7a83 libmpd-11.8.17.tar.gz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/libmpdclient/libmpdclient.hash b/buildroot/package/libmpdclient/libmpdclient.hash index 2fd20a41fb5..eb32786419a 100644 --- a/buildroot/package/libmpdclient/libmpdclient.hash +++ b/buildroot/package/libmpdclient/libmpdclient.hash @@ -1,2 +1,3 @@ -# Verified against http://www.musicpd.org/download/libmpdclient/2/libmpdclient-2.10.tar.xz.sig, sha256 locally computed -sha256 4f08cde82dae70895f8e4532a6e9b54b201efd5591c6b5d6834895807ed2ff82 libmpdclient-2.10.tar.xz +# Verified against http://www.musicpd.org/download/libmpdclient/2/libmpdclient-2.14.tar.xz.sig, sha256 locally computed +sha256 0a84e2791bfe3077cf22ee1784c805d5bb550803dffe56a39aa3690a38061372 libmpdclient-2.14.tar.xz +sha256 9574c3b0a9c31723cc3d5f32af4655a015fff5ec6ec8115b7906cd7d9623cf32 COPYING diff --git a/buildroot/package/libmpdclient/libmpdclient.mk b/buildroot/package/libmpdclient/libmpdclient.mk index 691aba9f718..6ff27241c01 100644 --- a/buildroot/package/libmpdclient/libmpdclient.mk +++ b/buildroot/package/libmpdclient/libmpdclient.mk @@ -5,12 +5,41 @@ ################################################################################ LIBMPDCLIENT_VERSION_MAJOR = 2 -LIBMPDCLIENT_VERSION = $(LIBMPDCLIENT_VERSION_MAJOR).10 +LIBMPDCLIENT_VERSION = $(LIBMPDCLIENT_VERSION_MAJOR).14 LIBMPDCLIENT_SOURCE = libmpdclient-$(LIBMPDCLIENT_VERSION).tar.xz LIBMPDCLIENT_SITE = http://www.musicpd.org/download/libmpdclient/$(LIBMPDCLIENT_VERSION_MAJOR) -LIBMPDCLIENT_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' LIBMPDCLIENT_INSTALL_STAGING = YES LIBMPDCLIENT_LICENSE = BSD-3-Clause LIBMPDCLIENT_LICENSE_FILES = COPYING +LIBMPDCLIENT_DEPENDENCIES = host-meson -$(eval $(autotools-package)) +LIBMPDCLIENT_CONF_OPTS += \ + --prefix=/usr \ + --libdir=/usr/lib \ + --default-library $(if $(BR2_STATIC_LIBS),static,shared) \ + --buildtype $(if $(BR2_ENABLE_DEBUG),debug,release) \ + --cross-file $(HOST_DIR)/etc/meson/cross-compilation.conf + +LIBMPDCLIENT_NINJA_OPTS = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS) + +define LIBMPDCLIENT_CONFIGURE_CMDS + rm -rf $(@D)/build + mkdir -p $(@D)/build + $(TARGET_MAKE_ENV) meson $(LIBMPDCLIENT_CONF_OPTS) $(@D) $(@D)/build +endef + +define LIBMPDCLIENT_BUILD_CMDS + $(TARGET_MAKE_ENV) ninja $(LIBMPDCLIENT_NINJA_OPTS) -C $(@D)/build +endef + +define LIBMPDCLIENT_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) DESTDIR=$(TARGET_DIR) \ + ninja $(LIBMPDCLIENT_NINJA_OPTS) -C $(@D)/build install +endef + +define LIBMPDCLIENT_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) DESTDIR=$(STAGING_DIR) \ + ninja $(LIBMPDCLIENT_NINJA_OPTS) -C $(@D)/build install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/libmpeg2/libmpeg2.hash b/buildroot/package/libmpeg2/libmpeg2.hash index c2adb67de0d..615d0ea6bfd 100644 --- a/buildroot/package/libmpeg2/libmpeg2.hash +++ b/buildroot/package/libmpeg2/libmpeg2.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 dee22e893cb5fc2b2b6ebd60b88478ab8556cb3b93f9a0d7ce8f3b61851871d4 libmpeg2-0.5.1.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/buildroot/package/libnatpmp/libnatpmp.hash b/buildroot/package/libnatpmp/libnatpmp.hash index a5cab3ce264..baf9b353929 100644 --- a/buildroot/package/libnatpmp/libnatpmp.hash +++ b/buildroot/package/libnatpmp/libnatpmp.hash @@ -1,2 +1,3 @@ # Locally computed sha256 e1aa9c4c4219bc06943d6b2130f664daee213fb262fcb94dd355815b8f4536b0 libnatpmp-20150609.tar.gz +sha256 e8d8277e1a101fcfedb0cd5a1cc76646522c0da69f3490dd5a4055fc87ea96a2 LICENSE diff --git a/buildroot/package/libndp/libndp.hash b/buildroot/package/libndp/libndp.hash index 51e312dd796..1861e0b4ddf 100644 --- a/buildroot/package/libndp/libndp.hash +++ b/buildroot/package/libndp/libndp.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 42c0a8938d4302c72a42e2d954deef7e4903bb3974da6804a929a3cd0b5b6aa7 libndp-v1.5.tar.gz +sha256 565d6c4167f83ec697c762ea002f23e8f0b00828d0749b1ce928f068543e5aad libndp-v1.6.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/buildroot/package/libndp/libndp.mk b/buildroot/package/libndp/libndp.mk index 4fa1d3331d1..3fd8ac7bf9b 100644 --- a/buildroot/package/libndp/libndp.mk +++ b/buildroot/package/libndp/libndp.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBNDP_VERSION = v1.5 +LIBNDP_VERSION = v1.6 LIBNDP_SITE = $(call github,jpirko,libndp,$(LIBNDP_VERSION)) LIBNDP_LICENSE = LGPL-2.1+ LIBNDP_LICENSE_FILES = COPYING diff --git a/buildroot/package/libnetfilter_acct/libnetfilter_acct.hash b/buildroot/package/libnetfilter_acct/libnetfilter_acct.hash index 7c386646122..0d37c436776 100644 --- a/buildroot/package/libnetfilter_acct/libnetfilter_acct.hash +++ b/buildroot/package/libnetfilter_acct/libnetfilter_acct.hash @@ -1,3 +1,6 @@ # From ftp://ftp.netfilter.org/pub/libnetfilter_acct/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/buildroot/package/libnetfilter_cthelper/libnetfilter_cthelper.hash b/buildroot/package/libnetfilter_cthelper/libnetfilter_cthelper.hash index 51086526381..42deade7dd2 100644 --- a/buildroot/package/libnetfilter_cthelper/libnetfilter_cthelper.hash +++ b/buildroot/package/libnetfilter_cthelper/libnetfilter_cthelper.hash @@ -1,3 +1,6 @@ # From ftp://ftp.netfilter.org/pub/libnetfilter_cthelper/libnetfilter_cthelper-1.0.0.tar.bz2.{md5sum,sha1sum} md5 b2efab1a3a198a5add448960ba011acd libnetfilter_cthelper-1.0.0.tar.bz2 sha1 5d0a82794bd46aafde20c16800edca23d563de66 libnetfilter_cthelper-1.0.0.tar.bz2 + +# Hash for license file: +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/buildroot/package/libnetfilter_cttimeout/libnetfilter_cttimeout.hash b/buildroot/package/libnetfilter_cttimeout/libnetfilter_cttimeout.hash index 7749f96ec8f..af5a281e4d9 100644 --- a/buildroot/package/libnetfilter_cttimeout/libnetfilter_cttimeout.hash +++ b/buildroot/package/libnetfilter_cttimeout/libnetfilter_cttimeout.hash @@ -1,3 +1,6 @@ # From ftp://ftp.netfilter.org/pub/libnetfilter_cttimeout/libnetfilter_cttimeout-1.0.0.tar.bz2.{md5sum,sha1sum} md5 7697437fc9ebb6f6b83df56a633db7f9 libnetfilter_cttimeout-1.0.0.tar.bz2 sha1 24cba24b0371e80007be4ea0fa9d872df63b8a7a libnetfilter_cttimeout-1.0.0.tar.bz2 + +# Hash for license file: +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/buildroot/package/libnetfilter_log/libnetfilter_log.hash b/buildroot/package/libnetfilter_log/libnetfilter_log.hash index 4fe6a9b8b6a..292538db5d0 100644 --- a/buildroot/package/libnetfilter_log/libnetfilter_log.hash +++ b/buildroot/package/libnetfilter_log/libnetfilter_log.hash @@ -1,3 +1,6 @@ # From ftp://ftp.netfilter.org/pub/libnetfilter_log/libnetfilter_log-1.0.1.tar.bz2.{md5sum,sha1sum} md5 2a4bb0654ae675a52d2e8d1c06090b94 libnetfilter_log-1.0.1.tar.bz2 sha1 0b95bcb1ad15eea906fa3607cd6c2290bd48d5bd libnetfilter_log-1.0.1.tar.bz2 + +# Hash for license file: +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/buildroot/package/libnfc/libnfc.hash b/buildroot/package/libnfc/libnfc.hash index 307e04929a9..32decf2d031 100644 --- a/buildroot/package/libnfc/libnfc.hash +++ b/buildroot/package/libnfc/libnfc.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 945e74d8e27683f9b8a6f6e529557b305d120df347a960a6a7ead6cb388f4072 libnfc-1.7.1.tar.bz2 +sha256 9ccf26cfe845e0eb8bb58053e47366e7ab6b697ae010f7650978d4b71b7d1fc1 COPYING diff --git a/buildroot/package/libnfnetlink/libnfnetlink.hash b/buildroot/package/libnfnetlink/libnfnetlink.hash index 93844f22eed..3392d239b66 100644 --- a/buildroot/package/libnfnetlink/libnfnetlink.hash +++ b/buildroot/package/libnfnetlink/libnfnetlink.hash @@ -1,3 +1,6 @@ # From ftp://ftp.netfilter.org/pub/libnfnetlink/libnfnetlink-1.0.1.tar.bz2.{md5sum,sha1sum} md5 98927583d2016a9fb1936fed992e2c5e libnfnetlink-1.0.1.tar.bz2 sha1 27ae2dfbd976e28cb7a417f9e946c901f512dd9a libnfnetlink-1.0.1.tar.bz2 + +# Hash for license file: +sha256 91df39d1816bfb17a4dda2d3d2c83b1f6f2d38d53e53e41e8f97ad5ac46a0cad COPYING diff --git a/buildroot/package/libnice/0001-configure-Fix-configure-failure-when-building-without-.patch b/buildroot/package/libnice/0001-configure-Fix-configure-failure-when-building-without-.patch deleted file mode 100644 index f6b2eb4cb93..00000000000 --- a/buildroot/package/libnice/0001-configure-Fix-configure-failure-when-building-without-.patch +++ /dev/null @@ -1,45 +0,0 @@ -From 81a929ac141aae66b6450e8ce93cb357ed404cda Mon Sep 17 00:00:00 2001 -From: Timo Gurr -Date: Mon, 1 Jun 2015 16:10:16 +0200 -Subject: [PATCH] configure: Fix configure failure when building without - gstreamer support - -Error introduced in 20ea22e0a11a9bdfe4d8125b68083249b694338a, resulting in a -configure/build error when building without gstreamer: - -configure: error: conditional "HAVE_GST_CHECK" was never defined. -Usually this means the macro was only invoked conditionally. - -https://bugs.freedesktop.org/show_bug.cgi?id=90801 -Signed-off-by: Gustavo Zacarias ---- -Patch status: upstream - - configure.ac | 4 +--- - 1 file changed, 1 insertion(+), 3 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 6031cec..64a571f 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -231,9 +231,6 @@ AS_IF([test "$with_gstreamer" != no], [ - [ - have_gst_check=no - ]) -- -- AM_CONDITIONAL(HAVE_GST_CHECK, test "$have_gst_check" = yes) -- - ]) - - AS_IF([test "$with_gstreamer010" != no], [ -@@ -260,6 +257,7 @@ AC_SUBST(gstplugindir) - AC_SUBST(gstplugin010dir) - - AM_CONDITIONAL(WITH_GSTREAMER, test "$with_gstreamer" = yes) -+AM_CONDITIONAL(HAVE_GST_CHECK, test "$have_gst_check" = yes) - AM_CONDITIONAL(WITH_GSTREAMER010, test "$with_gstreamer010" = yes) - - GUPNP_IGD_REQUIRED=0.2.4 --- -2.10.2 - diff --git a/buildroot/package/libnice/Config.in b/buildroot/package/libnice/Config.in index c803a317209..af8e8146186 100644 --- a/buildroot/package/libnice/Config.in +++ b/buildroot/package/libnice/Config.in @@ -1,8 +1,10 @@ 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_GNUTLS select BR2_PACKAGE_LIBGLIB2 help Libnice is an implementation of the IETF's Interactive @@ -15,6 +17,7 @@ config BR2_PACKAGE_LIBNICE http://nice.freedesktop.org/wiki/ -comment "libnice needs a toolchain w/ wchar, threads" +comment "libnice needs a toolchain w/ wchar, threads, dynamic library" depends on BR2_USE_MMU - depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS + depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || \ + BR2_STATIC_LIBS diff --git a/buildroot/package/libnice/libnice.hash b/buildroot/package/libnice/libnice.hash index d08c2d78397..3c1f0d845ac 100644 --- a/buildroot/package/libnice/libnice.hash +++ b/buildroot/package/libnice/libnice.hash @@ -1,2 +1,7 @@ # Locally computed after checking pgp signature -sha256 61112d9f3be933a827c8365f20551563953af6718057928f51f487bfe88419e1 libnice-0.1.13.tar.gz +sha256 be120ba95d4490436f0da077ffa8f767bf727b82decf2bf499e39becc027809c libnice-0.1.14.tar.gz + +# Hash for license files: +sha256 9246b2ee8b1db30cf03d5d9719ad8bb5edce1cadc85f8cfef319c23d24d950b5 COPYING +sha256 3b3c75ae6c663c4f93987647eb5463d33dc1602a1aded3ac479773f2c3928e3a COPYING.MPL +sha256 a9bdde5616ecdd1e980b44f360600ee8783b1f99b8cc83a2beb163a0a390e861 COPYING.LGPL diff --git a/buildroot/package/libnice/libnice.mk b/buildroot/package/libnice/libnice.mk index 6afcb7635a8..e023728f448 100644 --- a/buildroot/package/libnice/libnice.mk +++ b/buildroot/package/libnice/libnice.mk @@ -4,14 +4,12 @@ # ################################################################################ -LIBNICE_VERSION = 0.1.13 +LIBNICE_VERSION = 0.1.14 LIBNICE_SITE = http://nice.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_DEPENDENCIES = gnutls libglib2 host-pkgconf LIBNICE_INSTALL_STAGING = YES -# For 0001-configure-Fix-configure-failure-when-building-without-.patch -LIBNICE_AUTORECONF = YES LIBNICE_CONF_OPTS = \ --without-gstreamer \ --without-gstreamer-0.10 diff --git a/buildroot/package/libnpth/libnpth.hash b/buildroot/package/libnpth/libnpth.hash index f8cfefa4488..251d54badfc 100644 --- a/buildroot/package/libnpth/libnpth.hash +++ b/buildroot/package/libnpth/libnpth.hash @@ -1,2 +1,5 @@ # Locally calculated after checking signature sha256 294a690c1f537b92ed829d867bee537e46be93fbd60b16c04630fbbfcd9db3c2 npth-1.5.tar.bz2 + +# Hash for license file: +sha256 ce64d5f7b49ea6d80fdb6d4cdee6839d1a94274f7493dc797c3b55b65ec8e9ed COPYING.LIB diff --git a/buildroot/package/libnspr/Config.in b/buildroot/package/libnspr/Config.in index ba1ea559332..1d951552482 100644 --- a/buildroot/package/libnspr/Config.in +++ b/buildroot/package/libnspr/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT def_bool y - depends on !BR2_arc && !BR2_xtensa && !BR2_bfin + depends on !BR2_arc && !BR2_xtensa if BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT diff --git a/buildroot/package/libnspr/libnspr.hash b/buildroot/package/libnspr/libnspr.hash index 46c091e0da7..3067afd7203 100644 --- a/buildroot/package/libnspr/libnspr.hash +++ b/buildroot/package/libnspr/libnspr.hash @@ -1,4 +1,4 @@ -# From https://ftp.mozilla.org/pub/nspr/releases/v4.17/src/SHA256SUMS -sha256 590a0aea29412ae22d7728038c21ef2ab42646e48172a47d2e4bb782846d1095 nspr-4.17.tar.gz +# From https://ftp.mozilla.org/pub/nspr/releases/v4.19/src/SHA256SUMS +sha256 2ed95917fa2277910d1d1cf36030607dccc0ba522bba08e2af13c113dcd8f729 nspr-4.19.tar.gz # Locally calculated sha256 fab3dd6bdab226f1c08630b1dd917e11fcb4ec5e1e020e2c16f83a0a13863e85 nspr/LICENSE diff --git a/buildroot/package/libnspr/libnspr.mk b/buildroot/package/libnspr/libnspr.mk index 0c782ae3099..d91393f6e8b 100644 --- a/buildroot/package/libnspr/libnspr.mk +++ b/buildroot/package/libnspr/libnspr.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBNSPR_VERSION = 4.17 +LIBNSPR_VERSION = 4.19 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 @@ -49,4 +49,7 @@ 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/buildroot/package/libnss/0002-add-zlib-include-dir-variable.patch b/buildroot/package/libnss/0002-add-zlib-include-dir-variable.patch new file mode 100644 index 00000000000..cd0bdeec316 --- /dev/null +++ b/buildroot/package/libnss/0002-add-zlib-include-dir-variable.patch @@ -0,0 +1,49 @@ +Add ZLIB_INCLUDE_DIR variable + +On Linux platform[1], the build system forces to use zlib from the +system instead of compiling the one located intree. + +The following error is raised when the zlib header is installed +somewhere else than in the default system include path: + + ssl3con.c:39:18: fatal error: zlib.h: No such file or directory + #include "zlib.h" + +The same trick setup for sqlite include directory is reproduced for +zlib. The build system disallows in any manner to give arguments to the +compiler explicity. + +The variable ZLIB_INCLUDE_DIR point to the directory where the zlib +header is located. + +[1]: https://hg.mozilla.org/projects/nss/file/NSS_3_33_BRANCH/coreconf/Linux.mk#l180 +[2]: https://hg.mozilla.org/projects/nss/file/NSS_3_33_BRANCH/lib/softoken/manifest.mn#l17 + +Signed-off-by: Gaテォl PORTAY + +--- libnss-3.33.orig/nss/lib/ssl/manifest.mn 2017-09-20 02:47:27.000000000 -0400 ++++ libnss-3.33/nss/lib/ssl/manifest.mn 2018-02-16 16:45:41.512709898 -0500 +@@ -6,6 +6,10 @@ + + # DEFINES = -DTRACE + ++ifdef ZLIB_INCLUDE_DIR ++INCLUDES += -I$(ZLIB_INCLUDE_DIR) ++endif ++ + EXPORTS = \ + ssl.h \ + sslt.h \ +--- host-libnss-3.33.orig/nss/cmd/signtool/manifest.mn.orig 2018-02-16 17:08:58.474777871 -0500 ++++ host-libnss-3.33/nss/cmd/signtool/manifest.mn 2018-02-16 17:09:22.603710963 -0500 +@@ -6,6 +6,10 @@ + + MODULE = nss + ++ifdef ZLIB_INCLUDE_DIR ++INCLUDES += -I$(ZLIB_INCLUDE_DIR) ++endif ++ + EXPORTS = + + CSRCS = signtool.c \ diff --git a/buildroot/package/libnss/0003-Build-Hacl_Poly1305_64_o_on_Aarch64.patch b/buildroot/package/libnss/0003-Build-Hacl_Poly1305_64_o_on_Aarch64.patch new file mode 100644 index 00000000000..94f1a652730 --- /dev/null +++ b/buildroot/package/libnss/0003-Build-Hacl_Poly1305_64_o_on_Aarch64.patch @@ -0,0 +1,38 @@ +# HG changeset patch +# User Daiki Ueno +# Date 1516710574 -3600 +# Node ID 1668fafc1db4f739d5d15fbc94283858f842deb5 +# Parent c3702e37a048e386f88e7c50a228d27669332725 +Bug 1432455, Build Hacl_Poly1305_64.o on AArch64 even with make, r=fkiefer + +[Upstream: https://hg.mozilla.org/projects/nss/rev/1668fafc1db4 + Peter: adjust paths for tarball] +Signed-off-by: Peter Korsgaard +diff --git a/nss/lib/freebl/Makefile b/nss/lib/freebl/Makefile +--- a/nss/lib/freebl/Makefile ++++ b/nss/lib/freebl/Makefile +@@ -522,17 +522,22 @@ ifndef NSS_DISABLE_CHACHAPOLY + + ifneq (1,$(CC_IS_GCC)) + EXTRA_SRCS += chacha20.c + VERIFIED_SRCS += Hacl_Chacha20.c + else + EXTRA_SRCS += chacha20_vec.c + endif + else +- EXTRA_SRCS += poly1305.c ++ ifeq ($(CPU_ARCH),aarch64) ++ EXTRA_SRCS += Hacl_Poly1305_64.c ++ else ++ EXTRA_SRCS += poly1305.c ++ endif ++ + EXTRA_SRCS += chacha20.c + VERIFIED_SRCS += Hacl_Chacha20.c + endif # x86_64 + endif # NSS_DISABLE_CHACHAPOLY + + ifeq (,$(filter-out i386 x386 x86 x86_64 aarch64,$(CPU_ARCH))) + # All intel architectures get the 64 bit version + # With custom uint128 if necessary (faster than generic 32 bit version). + diff --git a/buildroot/package/libnss/0004-Bug-1438426-Avoid-stringop-truncation-warning-r-fran.patch b/buildroot/package/libnss/0004-Bug-1438426-Avoid-stringop-truncation-warning-r-fran.patch new file mode 100644 index 00000000000..c14880b1177 --- /dev/null +++ b/buildroot/package/libnss/0004-Bug-1438426-Avoid-stringop-truncation-warning-r-fran.patch @@ -0,0 +1,33 @@ +From f0ce70989526fc9a0223398c99ea0d09777ea5df Mon Sep 17 00:00:00 2001 +From: Martin Thomson +Date: Thu, 15 Feb 2018 16:34:02 +1100 +Subject: [PATCH] Bug 1438426 - Avoid stringop-truncation warning, r=franziskus + +--HG-- +extra : rebase_source : 4ea1630d0da0ce3523309e3da33ee50961682242 + +Upstream-commit: https://github.com/nss-dev/nss/commit/f0ce70989526fc9a0223398c99ea0d09777ea5df +[Thomas: edited after git format-patch to add the nss/ prefix needed +for the patch to apply properly on the source code extracted by the +tarball.] +Signed-off-by: Thomas Petazzoni +--- + nss/coreconf/nsinstall/pathsub.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/nss/coreconf/nsinstall/pathsub.c b/nss/coreconf/nsinstall/pathsub.c +index a42a9f30a..c31a946f0 100644 +--- a/nss/coreconf/nsinstall/pathsub.c ++++ b/nss/coreconf/nsinstall/pathsub.c +@@ -212,7 +212,7 @@ reversepath(char *inpath, char *name, int len, char *outpath) + xchdir(".."); + } else { + cp -= 3; +- strncpy(cp, "../", 3); ++ memcpy(cp, "../", 3); + xchdir(buf); + } + } +-- +2.14.3 + diff --git a/buildroot/package/libnss/Config.in b/buildroot/package/libnss/Config.in index 599c9a65365..34ddb91dfa0 100644 --- a/buildroot/package/libnss/Config.in +++ b/buildroot/package/libnss/Config.in @@ -3,6 +3,7 @@ config BR2_PACKAGE_LIBNSS depends on BR2_TOOLCHAIN_HAS_THREADS # libnspr depends on BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT # libnspr depends on !BR2_STATIC_LIBS + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_85862 select BR2_PACKAGE_LIBNSPR select BR2_PACKAGE_SQLITE select BR2_PACKAGE_ZLIB @@ -18,3 +19,6 @@ config BR2_PACKAGE_LIBNSS 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 + +comment "libnss needs a toolchain not affected by GCC bug 85862" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_85862 diff --git a/buildroot/package/libnss/libnss.hash b/buildroot/package/libnss/libnss.hash index 6c8ce837842..775ef4868cb 100644 --- a/buildroot/package/libnss/libnss.hash +++ b/buildroot/package/libnss/libnss.hash @@ -1,4 +1,4 @@ -# From https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_33_RTM/src/SHA256SUMS -sha256 98f0dabd36408e83dd3a11727336cc3cdfee4cbdd9aede2b2831eb2389c284e4 nss-3.33.tar.gz +# From https://ftp.mozilla.org/pub/security/nss/releases/NSS_3_35_RTM/src/SHA256SUMS +sha256 f4127de09bede39f5fd0f789d33c3504c5d261e69ea03022d46b319b3e32f6fa nss-3.35.tar.gz # Locally calculated sha256 a20c1a32d1f8102432360b42e932869f7c11c7cdbacf9cac554c422132af47f4 nss/COPYING diff --git a/buildroot/package/libnss/libnss.mk b/buildroot/package/libnss/libnss.mk index 27d305cc341..0fa7f2cfac4 100644 --- a/buildroot/package/libnss/libnss.mk +++ b/buildroot/package/libnss/libnss.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBNSS_VERSION = 3.33 +LIBNSS_VERSION = 3.35 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 @@ -92,4 +92,52 @@ define LIBNSS_INSTALL_TARGET_CMDS $(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 \ + BUILD_OPT=1 \ + 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_ECC=1 + +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) $(MAKE1) -C $(@D)/nss coreconf \ + SOURCE_MD_DIR=$(@D)/$(LIBNSS_DISTDIR) \ + DIST=$(@D)/$(LIBNSS_DISTDIR) \ + CHECKLOC= \ + $(HOST_LIBNSS_BUILD_VARS) + $(HOST_CONFIGURE_OPTS) $(MAKE1) -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/buildroot/package/liboauth/liboauth.hash b/buildroot/package/liboauth/liboauth.hash index 6806a08f9f9..5fa0353d50e 100644 --- a/buildroot/package/liboauth/liboauth.hash +++ b/buildroot/package/liboauth/liboauth.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 0df60157b052f0e774ade8a8bac59d6e8d4b464058cc55f9208d72e41156811f liboauth-1.0.3.tar.gz +sha256 c30608672733bf3abd2ccf6f3206be8d91b7ee58b007b2fdbcfbc61c655e7fb7 COPYING.MIT diff --git a/buildroot/package/libogg/libogg.hash b/buildroot/package/libogg/libogg.hash index 0c65b8e1a91..d6962a55ede 100644 --- a/buildroot/package/libogg/libogg.hash +++ b/buildroot/package/libogg/libogg.hash @@ -1,2 +1,5 @@ # From: http://www.xiph.org/downloads/ sha256 4f3fc6178a533d392064f14776b23c397ed4b9f48f5de297aba73b643f955c08 libogg-1.3.3.tar.xz + +# Hash for license file: +sha256 d2ab5758336489da61c12cc5bb757da5339c4ae9001f9bb0562b4370249af814 COPYING diff --git a/buildroot/package/libopenssl/libopenssl.hash b/buildroot/package/libopenssl/libopenssl.hash index e3d3da757d8..48b7471c20a 100644 --- a/buildroot/package/libopenssl/libopenssl.hash +++ b/buildroot/package/libopenssl/libopenssl.hash @@ -1,8 +1,8 @@ -# From https://www.openssl.org/source/openssl-1.0.2n.tar.gz.sha256 -sha256 370babb75f278c39e0c50e8c4e7493bc0f18db6867478341a832a982fd15a8fe openssl-1.0.2n.tar.gz +# From https://www.openssl.org/source/openssl-1.0.2o.tar.gz.sha256 +sha256 ec3f5c9714ba0fd45cb4e087301eb1336c317e0d20b575a125050470e8089e4d openssl-1.0.2o.tar.gz # Locally computed sha256 eddd8a5123748052c598214487ac178e4bfa4e31ba2ec520c70d59c8c5bfa2e9 openssl-1.0.2a-parallel-install-dirs.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d sha256 147c3eeaad614c044749ea527cb433eae5e2d5cad34a78c6ba61cd967bfbe01f openssl-1.0.2a-parallel-obj-headers.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d sha256 30cb49489de5041841a74da9155cd4fabfbce33237262ba7cd23974314ae2956 openssl-1.0.2a-parallel-symlinking.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d sha256 deaf6f3af41874ecc6d63841ea14b8e6c71cea81d4a511a754bc90c9a993147f openssl-1.0.2d-parallel-build.patch?id=c8abcbe8de5d3b6cdd68c162f398c011ff6e2d9d -sha256 9ee37d72966bb4a841343f0606ce44d41b3eae4df4285200c5a8ddc2b935992a LICENSE +sha256 c8f60f4842bbad0353f5d81620e72b168b5638ca3a0a999f5da113b22491612e LICENSE diff --git a/buildroot/package/libopenssl/libopenssl.mk b/buildroot/package/libopenssl/libopenssl.mk index 5a78676c64a..16a9c2e9d26 100644 --- a/buildroot/package/libopenssl/libopenssl.mk +++ b/buildroot/package/libopenssl/libopenssl.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBOPENSSL_VERSION = 1.0.2n +LIBOPENSSL_VERSION = 1.0.2o LIBOPENSSL_SITE = http://www.openssl.org/source LIBOPENSSL_SOURCE = openssl-$(LIBOPENSSL_VERSION).tar.gz LIBOPENSSL_LICENSE = OpenSSL or SSLeay diff --git a/buildroot/package/libosip2/libosip2.hash b/buildroot/package/libosip2/libosip2.hash index 9ff2d9a98a2..c6df5f23621 100644 --- a/buildroot/package/libosip2/libosip2.hash +++ b/buildroot/package/libosip2/libosip2.hash @@ -1,2 +1,5 @@ # Locally calculated after checking pgp signature sha256 c9a18b0c760506d150017cdb1fa5c1cefe12b8dcbbf9a7e784eb75af376e96cd libosip2-3.6.0.tar.gz + +# Hash for license file: +sha256 8d9e95ed0e48df46dc758eb0d86df611f771eab4eed94bebb77dca87f1c897de COPYING diff --git a/buildroot/package/libostree/libostree.hash b/buildroot/package/libostree/libostree.hash index 54bc263f065..1f0e9ce95f4 100644 --- a/buildroot/package/libostree/libostree.hash +++ b/buildroot/package/libostree/libostree.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 8b5e3b80425b91c93aeb916bb047ee194aa138a9cf00ce173dcc0ebc0dd11f4b libostree-2018.1.tar.xz +sha256 f5b1e083ed630fd32a263731fe9595ecdd07cfd5cba3e354931f481c4181de1c libostree-2018.4.tar.xz sha256 b7993225104d90ddd8024fd838faf300bea5e83d91203eab98e29512acebd69c COPYING diff --git a/buildroot/package/libostree/libostree.mk b/buildroot/package/libostree/libostree.mk index 336d11a9785..ba6379d7e79 100644 --- a/buildroot/package/libostree/libostree.mk +++ b/buildroot/package/libostree/libostree.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBOSTREE_VERSION = 2018.1 +LIBOSTREE_VERSION = 2018.4 LIBOSTREE_SOURCE = libostree-$(LIBOSTREE_VERSION).tar.xz LIBOSTREE_SITE = https://github.com/ostreedev/ostree/releases/download/v$(LIBOSTREE_VERSION) diff --git a/buildroot/package/libpam-radius-auth/libpam-radius-auth.hash b/buildroot/package/libpam-radius-auth/libpam-radius-auth.hash index ffd7404df31..3e8dc025583 100644 --- a/buildroot/package/libpam-radius-auth/libpam-radius-auth.hash +++ b/buildroot/package/libpam-radius-auth/libpam-radius-auth.hash @@ -1,2 +1,5 @@ # Locally calculated after checking PGP signature sha256 742d79fc39824726c098e746bd3dc3484f983f5ee082c621c1e848b2c3725305 pam_radius-1.4.0.tar.gz + +# Hash for license file: +sha256 67f82e045cf7acfef853ea0f426575a8359161a0a325e19f02b529a87c4b6c34 LICENSE diff --git a/buildroot/package/libpcap/libpcap.hash b/buildroot/package/libpcap/libpcap.hash index 6894046aff4..f8bc1bcfef1 100644 --- a/buildroot/package/libpcap/libpcap.hash +++ b/buildroot/package/libpcap/libpcap.hash @@ -1,2 +1,5 @@ # Locally calculated after checking pgp signature sha256 673dbc69fdc3f5a86fb5759ab19899039a8e5e6c631749e48dcd9c6f0c83541e libpcap-1.8.1.tar.gz + +# Hash for license file: +sha256 8a54594d257e14a5260ac770f1633516cb51e3fc28c40136ce2697014eda7afd LICENSE diff --git a/buildroot/package/libpciaccess/libpciaccess.hash b/buildroot/package/libpciaccess/libpciaccess.hash index b73c27c290f..651f0462b7e 100644 --- a/buildroot/package/libpciaccess/libpciaccess.hash +++ b/buildroot/package/libpciaccess/libpciaccess.hash @@ -3,3 +3,6 @@ md5 8f436e151d5106a9cfaa71857a066d33 libpciaccess-0.14.tar.bz2 sha1 f70a958bf4e744cb4ee93be64e9bc52ac05cdaeb libpciaccess-0.14.tar.bz2 sha256 3df543e12afd41fea8eac817e48cbfde5aed8817b81670a4e9e493bb2f5bf2a4 libpciaccess-0.14.tar.bz2 sha512 bf40214dfd22f2a223f7c948566e6eaa4bfed60116e71b3eb19f6fe7ab2c4546649eb0416c06d5983e476ea5e27de036936646eb5f800ea97763b6d1f1976f4b libpciaccess-0.14.tar.bz2 + +# Hash for license file: +sha256 47012fd746980d1712ac4f3841ab6164bda1d2b84880760e45dbe1e1dc07f608 COPYING diff --git a/buildroot/package/libpjsip/libpjsip.hash b/buildroot/package/libpjsip/libpjsip.hash index edac3d578f8..36c2ea12893 100644 --- a/buildroot/package/libpjsip/libpjsip.hash +++ b/buildroot/package/libpjsip/libpjsip.hash @@ -1,6 +1,6 @@ -# From http://www.pjsip.org/release/2.7.1/MD5SUM.TXT -md5 99a64110fa5c2debff40e0e8d4676380 pjproject-2.7.1.tar.bz2 +# From http://www.pjsip.org/release/2.7.2/MD5SUM.TXT +md5 fa3f0bc098c4bff48ddd92db1c016a7a pjproject-2.7.2.tar.bz2 # Locally computed -sha256 59fabc62a02b2b80857297cfb10e2c68c473f4a0acc6e848cfefe8421f2c3126 pjproject-2.7.1.tar.bz2 +sha256 9c2c828abab7626edf18e04b041ef274bfaa86f99adf2c25ff56f1509e813772 pjproject-2.7.2.tar.bz2 sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/buildroot/package/libpjsip/libpjsip.mk b/buildroot/package/libpjsip/libpjsip.mk index 53b654d072c..db9e474be76 100644 --- a/buildroot/package/libpjsip/libpjsip.mk +++ b/buildroot/package/libpjsip/libpjsip.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBPJSIP_VERSION = 2.7.1 +LIBPJSIP_VERSION = 2.7.2 LIBPJSIP_SOURCE = pjproject-$(LIBPJSIP_VERSION).tar.bz2 LIBPJSIP_SITE = http://www.pjsip.org/release/$(LIBPJSIP_VERSION) LIBPJSIP_DEPENDENCIES = libsrtp diff --git a/buildroot/package/libplayer/Config.in b/buildroot/package/libplayer/Config.in index 82083a0eea3..3cad6832481 100644 --- a/buildroot/package/libplayer/Config.in +++ b/buildroot/package/libplayer/Config.in @@ -9,11 +9,6 @@ config BR2_PACKAGE_LIBPLAYER http://libplayer.geexbox.org/ if BR2_PACKAGE_LIBPLAYER -config BR2_PACKAGE_LIBPLAYER_MPLAYER - bool "mplayer backend" - depends on BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS - depends on BR2_TOOLCHAIN_HAS_SYNC_4 # mplayer - select BR2_PACKAGE_MPLAYER config BR2_PACKAGE_LIBPLAYER_GSTREAMER bool "gstreamer backend" diff --git a/buildroot/package/libplayer/libplayer.mk b/buildroot/package/libplayer/libplayer.mk index f4eccedb06f..8d139cea0e5 100644 --- a/buildroot/package/libplayer/libplayer.mk +++ b/buildroot/package/libplayer/libplayer.mk @@ -20,18 +20,12 @@ define LIBPLAYER_CONFIGURE_CMDS ./configure \ --prefix=/usr \ --cross-compile \ + --disable-mplayer \ $(SHARED_STATIC_LIBS_OPTS) \ $(LIBPLAYER_CONF_OPTS) \ ) endef -ifeq ($(BR2_PACKAGE_LIBPLAYER_MPLAYER),y) -LIBPLAYER_DEPENDENCIES += mplayer -LIBPLAYER_CONF_OPTS += --enable-mplayer -else -LIBPLAYER_CONF_OPTS += --disable-mplayer -endif - ifeq ($(BR2_PACKAGE_LIBPLAYER_GSTREAMER),y) LIBPLAYER_DEPENDENCIES += gstreamer LIBPLAYER_CONF_OPTS += --enable-gstreamer diff --git a/buildroot/package/libpng/0002-Don-t-append-prefix-to-symbol-names-in-version-script.patch b/buildroot/package/libpng/0002-Don-t-append-prefix-to-symbol-names-in-version-script.patch deleted file mode 100644 index de772225bad..00000000000 --- a/buildroot/package/libpng/0002-Don-t-append-prefix-to-symbol-names-in-version-script.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 473fdecd9a580b45251480b8ccbbb1927c598310 Mon Sep 17 00:00:00 2001 -From: Gustavo Zacarias -Date: Thu, 26 May 2016 16:27:13 -0300 -Subject: [PATCH] Don't append prefix to symbol names in version script - -Even if Blackfin GNU toolchain add prefix '_' to all symbols, -symbol prefix is not accepted in the link flag --version-script. -Don't append prefix in the symbols in the version script file. - -Original patch by: Sonic Zhang - -[Gustavo: update for 1.6.22] -Signed-off-by: Gustavo Zacarias - -[Julien: update for 1.6.25] -Signed-off-by: Julien Boibessot - -[Bernd: update for 1.6.29] -Signed-off-by: Bernd Kuhls - -Signed-off-by: Gustavo Zacarias ---- - Makefile.am | 2 +- - Makefile.in | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index 3430dca..db6a7a2 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -245,7 +245,7 @@ contrib/tools/pngfix.o: pnglibconf.h - # interfering with the symbol file format. - SYMBOL_CFLAGS = -DPNGLIB_LIBNAME='PNG@PNGLIB_MAJOR@@PNGLIB_MINOR@_0'\ - -DPNGLIB_VERSION='@PNGLIB_VERSION@'\ -- -DSYMBOL_PREFIX='$(SYMBOL_PREFIX)'\ -+ -DSYMBOL_PREFIX=''\ - -DPNG_NO_USE_READ_MACROS -DPNG_BUILDING_SYMBOL_TABLE - - if DO_PNG_PREFIX -diff --git a/Makefile.in b/Makefile.in -index 4e67782..5f468d9 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -766,7 +766,7 @@ SUFFIXES = .chk .out - # interfering with the symbol file format. - SYMBOL_CFLAGS = -DPNGLIB_LIBNAME='PNG@PNGLIB_MAJOR@@PNGLIB_MINOR@_0' \ - -DPNGLIB_VERSION='@PNGLIB_VERSION@' \ -- -DSYMBOL_PREFIX='$(SYMBOL_PREFIX)' -DPNG_NO_USE_READ_MACROS \ -+ -DSYMBOL_PREFIX='' -DPNG_NO_USE_READ_MACROS \ - -DPNG_BUILDING_SYMBOL_TABLE $(am__append_9) - - # EXT_LIST is a list of the possibly library directory extensions, this exists --- -2.7.3 - diff --git a/buildroot/package/libqmi/libqmi.hash b/buildroot/package/libqmi/libqmi.hash index 1c54231a991..297e1f0fa20 100644 --- a/buildroot/package/libqmi/libqmi.hash +++ b/buildroot/package/libqmi/libqmi.hash @@ -1,4 +1,4 @@ # Locally computed: -sha256 a0a42c55935e75a630208e2f70840bd4407f56fe1c5258f5b0f6c0aaedf88cec libqmi-1.18.0.tar.xz +sha256 21428cd3749c56246565123f707fee51238651a22c60bdc85ebce97388626eb4 libqmi-1.20.0.tar.xz sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/buildroot/package/libqmi/libqmi.mk b/buildroot/package/libqmi/libqmi.mk index 08875649a61..a7140dc38c9 100644 --- a/buildroot/package/libqmi/libqmi.mk +++ b/buildroot/package/libqmi/libqmi.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBQMI_VERSION = 1.18.0 +LIBQMI_VERSION = 1.20.0 LIBQMI_SITE = http://www.freedesktop.org/software/libqmi LIBQMI_SOURCE = libqmi-$(LIBQMI_VERSION).tar.xz LIBQMI_LICENSE = LGPL-2.0+ (library), GPL-2.0+ (programs) diff --git a/buildroot/package/libraw/0003-internal-dcraw_common-rename-internal-powf64.patch b/buildroot/package/libraw/0003-internal-dcraw_common-rename-internal-powf64.patch new file mode 100644 index 00000000000..ef3b81aa24f --- /dev/null +++ b/buildroot/package/libraw/0003-internal-dcraw_common-rename-internal-powf64.patch @@ -0,0 +1,348 @@ +From 045c57d9d030075575409cf50cd7f6ee635df5c0 Mon Sep 17 00:00:00 2001 +From: Romain Naour +Date: Mon, 5 Feb 2018 16:22:39 +0100 +Subject: [PATCH] internal/dcraw_common: rename internal powf64() + +Starting with Glibc 2.27, powf64() is provided by the C library +and colide with the one defined dy libraw. + +Rename internal powf64 to libraw_powf64. + +Signed-off-by: Romain Naour +--- + internal/dcraw_common.cpp | 98 +++++++++++++++++++++++------------------------ + 1 file changed, 49 insertions(+), 49 deletions(-) + +diff --git a/internal/dcraw_common.cpp b/internal/dcraw_common.cpp +index 0c7c07a..cf26865 100644 +--- a/internal/dcraw_common.cpp ++++ b/internal/dcraw_common.cpp +@@ -5537,7 +5537,7 @@ static float powf_lim(float a, float b, float limup) + { + return (b>limup || b < -limup)?0.f:powf(a,b); + } +-static float powf64(float a, float b) ++static float libraw_powf64(float a, float b) + { + return powf_lim(a,b,64.f); + } +@@ -5561,7 +5561,7 @@ static float my_roundf(float x) { + static float _CanonConvertAperture(ushort in) + { + if ((in == (ushort)0xffe0) || (in == (ushort)0x7fff)) return 0.0f; +- return powf64(2.0, in/64.0); ++ return libraw_powf64(2.0, in/64.0); + } + + void CLASS setCanonBodyFeatures (unsigned id) +@@ -5902,21 +5902,21 @@ void CLASS processNikonLensData (uchar *LensData, unsigned len) + if (fabsf(imgdata.lens.makernotes.MinFocal) < 1.1f) + { + if ((imgdata.lens.nikon.NikonLensType ^ (uchar)0x01) || LensData[i + 2]) +- imgdata.lens.makernotes.MinFocal = 5.0f * powf64(2.0f, (float)LensData[i + 2] / 24.0f); ++ imgdata.lens.makernotes.MinFocal = 5.0f * libraw_powf64(2.0f, (float)LensData[i + 2] / 24.0f); + if ((imgdata.lens.nikon.NikonLensType ^ (uchar)0x01) || LensData[i + 3]) +- imgdata.lens.makernotes.MaxFocal = 5.0f * powf64(2.0f, (float)LensData[i + 3] / 24.0f); ++ imgdata.lens.makernotes.MaxFocal = 5.0f * libraw_powf64(2.0f, (float)LensData[i + 3] / 24.0f); + if ((imgdata.lens.nikon.NikonLensType ^ (uchar)0x01) || LensData[i + 4]) +- imgdata.lens.makernotes.MaxAp4MinFocal = powf64(2.0f, (float)LensData[i + 4] / 24.0f); ++ imgdata.lens.makernotes.MaxAp4MinFocal = libraw_powf64(2.0f, (float)LensData[i + 4] / 24.0f); + if ((imgdata.lens.nikon.NikonLensType ^ (uchar)0x01) || LensData[i + 5]) +- imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(2.0f, (float)LensData[i + 5] / 24.0f); ++ imgdata.lens.makernotes.MaxAp4MaxFocal = libraw_powf64(2.0f, (float)LensData[i + 5] / 24.0f); + } + imgdata.lens.nikon.NikonMCUVersion = LensData[i + 6]; + if (i != 2) + { + if ((LensData[i - 1]) && + (fabsf(imgdata.lens.makernotes.CurFocal) < 1.1f)) +- imgdata.lens.makernotes.CurFocal = 5.0f * powf64(2.0f, (float)LensData[i - 1] / 24.0f); +- if (LensData[i + 7]) imgdata.lens.nikon.NikonEffectiveMaxAp = powf64(2.0f, (float)LensData[i + 7] / 24.0f); ++ imgdata.lens.makernotes.CurFocal = 5.0f * libraw_powf64(2.0f, (float)LensData[i - 1] / 24.0f); ++ if (LensData[i + 7]) imgdata.lens.nikon.NikonEffectiveMaxAp = libraw_powf64(2.0f, (float)LensData[i + 7] / 24.0f); + } + imgdata.lens.makernotes.LensID = + (unsigned long long) LensData[i] << 56 | +@@ -6088,13 +6088,13 @@ void CLASS PentaxLensInfo (unsigned id, unsigned len) // tag 0x0207 + if (table_buf[iLensData+9] && + (fabs(imgdata.lens.makernotes.CurFocal) < 0.1f)) + imgdata.lens.makernotes.CurFocal = +- 10*(table_buf[iLensData+9]>>2) * powf64(4, (table_buf[iLensData+9] & 0x03)-2); ++ 10*(table_buf[iLensData+9]>>2) * libraw_powf64(4, (table_buf[iLensData+9] & 0x03)-2); + if (table_buf[iLensData+10] & 0xf0) + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+10] & 0xf0) >>4)/4.0f); ++ libraw_powf64(2.0f, (float)((table_buf[iLensData+10] & 0xf0) >>4)/4.0f); + if (table_buf[iLensData+10] & 0x0f) + imgdata.lens.makernotes.MinAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+10] & 0x0f) + 10)/4.0f); ++ libraw_powf64(2.0f, (float)((table_buf[iLensData+10] & 0x0f) + 10)/4.0f); + + if (iLensData != 12) + { +@@ -6111,14 +6111,14 @@ void CLASS PentaxLensInfo (unsigned id, unsigned len) // tag 0x0207 + if ((table_buf[iLensData+14] > 1) && + (fabs(imgdata.lens.makernotes.MaxAp4CurFocal) < 0.7f)) + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+14] & 0x7f) -1)/32.0f); ++ libraw_powf64(2.0f, (float)((table_buf[iLensData+14] & 0x7f) -1)/32.0f); + } + else if ((id != 0x12e76) && // K-5 + (table_buf[iLensData+15] > 1) && + (fabs(imgdata.lens.makernotes.MaxAp4CurFocal) < 0.7f)) + { + imgdata.lens.makernotes.MaxAp4CurFocal = +- powf64(2.0f, (float)((table_buf[iLensData+15] & 0x7f) -1)/32.0f); ++ libraw_powf64(2.0f, (float)((table_buf[iLensData+15] & 0x7f) -1)/32.0f); + } + } + free(table_buf); +@@ -6525,11 +6525,11 @@ void CLASS process_Sony_0x9050 (uchar * buf, unsigned id) + { + if (buf[0]) + imgdata.lens.makernotes.MaxAp4CurFocal = +- my_roundf(powf64(2.0f, ((float)SonySubstitution[buf[0]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f; ++ my_roundf(libraw_powf64(2.0f, ((float)SonySubstitution[buf[0]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f; + + if (buf[1]) + imgdata.lens.makernotes.MinAp4CurFocal = +- my_roundf(powf64(2.0f, ((float)SonySubstitution[buf[1]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f; ++ my_roundf(libraw_powf64(2.0f, ((float)SonySubstitution[buf[1]] / 8.0 - 1.06f) / 2.0f)*10.0f) / 10.0f; + } + + if (imgdata.lens.makernotes.CameraMount != LIBRAW_MOUNT_FixedLens) +@@ -6539,7 +6539,7 @@ void CLASS process_Sony_0x9050 (uchar * buf, unsigned id) + lid = SonySubstitution[buf[0x3d]] << 8 | + SonySubstitution[buf[0x3c]]; + imgdata.lens.makernotes.CurAp = +- powf64(2.0f, ((float)lid/256.0f - 16.0f) / 2.0f); ++ libraw_powf64(2.0f, ((float)lid/256.0f - 16.0f) / 2.0f); + } + if (buf[0x105] && (imgdata.lens.makernotes.LensMount != LIBRAW_MOUNT_Canon_EF)) + imgdata.lens.makernotes.LensMount = +@@ -6924,7 +6924,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + { + unsigned char cc; + fread(&cc, 1, 1, ifp); +- iso_speed = (int)(100.0 * powf64(2.0, (double)(cc) / 12.0 - 5.0)); ++ iso_speed = (int)(100.0 * libraw_powf64(2.0, (double)(cc) / 12.0 - 5.0)); + break; + } + } +@@ -6957,7 +6957,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + } + break; + case 0x1002: +- imgdata.lens.makernotes.CurAp = powf64(2.0f, getreal(type)/2); ++ imgdata.lens.makernotes.CurAp = libraw_powf64(2.0f, getreal(type)/2); + break; + case 0x20100201: + imgdata.lens.makernotes.LensID = +@@ -6977,10 +6977,10 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + fread(imgdata.lens.makernotes.Lens, MIN(len,127), 1, ifp); + break; + case 0x20100205: +- imgdata.lens.makernotes.MaxAp4MinFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4MinFocal = libraw_powf64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100206: +- imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4MaxFocal = libraw_powf64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100207: + imgdata.lens.makernotes.MinFocal = (float)get2(); +@@ -6991,7 +6991,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + imgdata.lens.makernotes.MaxFocal = imgdata.lens.makernotes.MinFocal; + break; + case 0x2010020a: +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4CurFocal = libraw_powf64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100301: + imgdata.lens.makernotes.TeleconverterID = fgetc(ifp) << 8; +@@ -7195,7 +7195,7 @@ void CLASS parse_makernote_0xc634(int base, int uptag, unsigned dng_writer) + lid = (((ushort)table_buf[2])<<8) | + ((ushort)table_buf[3]); + imgdata.lens.makernotes.CurAp = +- powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f); ++ libraw_powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f); + } + break; + case 1536: +@@ -7669,7 +7669,7 @@ void CLASS parse_makernote (int base, int uptag) + } + break; + case 0x1002: +- imgdata.lens.makernotes.CurAp = powf64(2.0f, getreal(type)/2); ++ imgdata.lens.makernotes.CurAp = libraw_powf64(2.0f, getreal(type)/2); + break; + case 0x20100201: + { +@@ -7694,10 +7694,10 @@ void CLASS parse_makernote (int base, int uptag) + fread(imgdata.lens.makernotes.Lens, MIN(len,127), 1, ifp); + break; + case 0x20100205: +- imgdata.lens.makernotes.MaxAp4MinFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4MinFocal = libraw_powf64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100206: +- imgdata.lens.makernotes.MaxAp4MaxFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4MaxFocal = libraw_powf64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100207: + imgdata.lens.makernotes.MinFocal = (float)get2(); +@@ -7708,7 +7708,7 @@ void CLASS parse_makernote (int base, int uptag) + imgdata.lens.makernotes.MaxFocal = imgdata.lens.makernotes.MinFocal; + break; + case 0x2010020a: +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(sqrt(2.0f), get2() / 256.0f); ++ imgdata.lens.makernotes.MaxAp4CurFocal = libraw_powf64(sqrt(2.0f), get2() / 256.0f); + break; + case 0x20100301: + imgdata.lens.makernotes.TeleconverterID = fgetc(ifp) << 8; +@@ -7977,7 +7977,7 @@ void CLASS parse_makernote (int base, int uptag) + lid = (((ushort)table_buf[2])<<8) | + ((ushort)table_buf[3]); + imgdata.lens.makernotes.CurAp = +- powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f); ++ libraw_powf64(2.0f, ((float)lid/8.0f-1.0f)/2.0f); + } + break; + case 1536: +@@ -8064,19 +8064,19 @@ void CLASS parse_makernote (int base, int uptag) + { + unsigned char cc; + fread(&cc,1,1,ifp); +- iso_speed = int(100.0 * powf64(2.0f,float(cc)/12.0-5.0)); ++ iso_speed = int(100.0 * libraw_powf64(2.0f,float(cc)/12.0-5.0)); + } + if (tag == 4 && len > 26 && len < 35) { + if ((i=(get4(),get2())) != 0x7fff && (!iso_speed || iso_speed == 65535)) +- iso_speed = 50 * powf64(2.0, i/32.0 - 4); ++ iso_speed = 50 * libraw_powf64(2.0, i/32.0 - 4); + #ifdef LIBRAW_LIBRARY_BUILD + get4(); + #else + if ((i=(get2(),get2())) != 0x7fff && !aperture) +- aperture = powf64(2.0, i/64.0); ++ aperture = libraw_powf64(2.0, i/64.0); + #endif + if ((i=get2()) != 0xffff && !shutter) +- shutter = powf64(2.0, (short) i/-32.0); ++ shutter = libraw_powf64(2.0, (short) i/-32.0); + wbi = (get2(),get2()); + shot_order = (get2(),get2()); + } +@@ -8579,7 +8579,7 @@ void CLASS parse_exif (int base) + imgdata.lens.Lens[0] = 0; + break; + case 0x9205: +- imgdata.lens.EXIF_MaxAp = powf64(2.0f, (getreal(type) / 2.0f)); ++ imgdata.lens.EXIF_MaxAp = libraw_powf64(2.0f, (getreal(type) / 2.0f)); + break; + #endif + case 33434: shutter = getreal(type); break; +@@ -8592,10 +8592,10 @@ void CLASS parse_exif (int base) + case 36867: + case 36868: get_timestamp(0); break; + case 37377: if ((expo = -getreal(type)) < 128 && shutter == 0.) +- shutter = powf64(2.0, expo); break; ++ shutter = libraw_powf64(2.0, expo); break; + case 37378: // 0x9202 ApertureValue + if ((fabs(ape = getreal(type))<256.0) && (!aperture)) +- aperture = powf64(2.0, ape/2); ++ aperture = libraw_powf64(2.0, ape/2); + break; + case 37385: flash_used = getreal(type); break; + case 37386: focal_len = getreal(type); break; +@@ -9196,7 +9196,7 @@ int CLASS parse_tiff_ifd (int base) + imgdata.lens.Lens[0] = 0; + break; + case 0x9205: +- imgdata.lens.EXIF_MaxAp = powf64(2.0f, (getreal(type) / 2.0f)); ++ imgdata.lens.EXIF_MaxAp = libraw_powf64(2.0f, (getreal(type) / 2.0f)); + break; + // IB end + #endif +@@ -9970,22 +9970,22 @@ void CLASS parse_ciff (int offset, int length, int depth) + thumb_length = len; + } + if (type == 0x1818) { +- shutter = powf64(2.0f, -int_to_float((get4(),get4()))); +- aperture = powf64(2.0f, int_to_float(get4())/2); ++ shutter = libraw_powf64(2.0f, -int_to_float((get4(),get4()))); ++ aperture = libraw_powf64(2.0f, int_to_float(get4())/2); + #ifdef LIBRAW_LIBRARY_BUILD + imgdata.lens.makernotes.CurAp = aperture; + #endif + } + if (type == 0x102a) { + // iso_speed = pow (2.0, (get4(),get2())/32.0 - 4) * 50; +- iso_speed = powf64(2.0f, ((get2(),get2()) + get2())/32.0f - 5.0f) * 100.0f; ++ iso_speed = libraw_powf64(2.0f, ((get2(),get2()) + get2())/32.0f - 5.0f) * 100.0f; + #ifdef LIBRAW_LIBRARY_BUILD + aperture = _CanonConvertAperture((get2(),get2())); + imgdata.lens.makernotes.CurAp = aperture; + #else +- aperture = powf64(2.0, (get2(),(short)get2())/64.0); ++ aperture = libraw_powf64(2.0, (get2(),(short)get2())/64.0); + #endif +- shutter = powf64(2.0,-((short)get2())/32.0); ++ shutter = libraw_powf64(2.0,-((short)get2())/32.0); + wbi = (get2(),get2()); + if (wbi > 17) wbi = 0; + fseek (ifp, 32, SEEK_CUR); +@@ -10189,8 +10189,8 @@ void CLASS parse_phase_one (int base) + setPhaseOneFeatures(unique_id); + break; + case 0x0401: +- if (type == 4) imgdata.lens.makernotes.CurAp = powf64(2.0f, (int_to_float(data)/2.0f)); +- else imgdata.lens.makernotes.CurAp = powf64(2.0f, (getreal(type)/2.0f)); ++ if (type == 4) imgdata.lens.makernotes.CurAp = libraw_powf64(2.0f, (int_to_float(data)/2.0f)); ++ else imgdata.lens.makernotes.CurAp = libraw_powf64(2.0f, (getreal(type)/2.0f)); + break; + case 0x0403: + if (type == 4) imgdata.lens.makernotes.CurFocal = int_to_float(data); +@@ -10204,16 +10204,16 @@ void CLASS parse_phase_one (int base) + break; + case 0x0414: + if (type == 4) { +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, (int_to_float(data)/2.0f)); ++ imgdata.lens.makernotes.MaxAp4CurFocal = libraw_powf64(2.0f, (int_to_float(data)/2.0f)); + } else { +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, (getreal(type) / 2.0f)); ++ imgdata.lens.makernotes.MaxAp4CurFocal = libraw_powf64(2.0f, (getreal(type) / 2.0f)); + } + break; + case 0x0415: + if (type == 4) { +- imgdata.lens.makernotes.MinAp4CurFocal = powf64(2.0f, (int_to_float(data)/2.0f)); ++ imgdata.lens.makernotes.MinAp4CurFocal = libraw_powf64(2.0f, (int_to_float(data)/2.0f)); + } else { +- imgdata.lens.makernotes.MinAp4CurFocal = powf64(2.0f, (getreal(type) / 2.0f)); ++ imgdata.lens.makernotes.MinAp4CurFocal = libraw_powf64(2.0f, (getreal(type) / 2.0f)); + } + break; + case 0x0416: +@@ -12119,15 +12119,15 @@ void CLASS identify() + case 18: iso_speed = 320; break; + case 19: iso_speed = 400; break; + } +- shutter = powf64(2.0f, (((float)get4())/8.0f)) / 16000.0f; ++ shutter = libraw_powf64(2.0f, (((float)get4())/8.0f)) / 16000.0f; + FORC4 cam_mul[c ^ (c >> 1)] = get4(); + fseek (ifp, 88, SEEK_SET); +- aperture = powf64(2.0f, ((float)get4())/16.0f); ++ aperture = libraw_powf64(2.0f, ((float)get4())/16.0f); + fseek (ifp, 112, SEEK_SET); + focal_len = get4(); + #ifdef LIBRAW_LIBRARY_BUILD + fseek (ifp, 104, SEEK_SET); +- imgdata.lens.makernotes.MaxAp4CurFocal = powf64(2.0f, ((float)get4())/16.0f); ++ imgdata.lens.makernotes.MaxAp4CurFocal = libraw_powf64(2.0f, ((float)get4())/16.0f); + fseek (ifp, 124, SEEK_SET); + fread(imgdata.lens.makernotes.Lens, 32, 1, ifp); + imgdata.lens.makernotes.CameraMount = LIBRAW_MOUNT_Contax_N; +-- +2.14.3 + diff --git a/buildroot/package/libressl/0002-Fix-build-with-musl-and-older-Linux-kernel.patch b/buildroot/package/libressl/0002-Fix-build-with-musl-and-older-Linux-kernel.patch deleted file mode 100644 index ddb953402d9..00000000000 --- a/buildroot/package/libressl/0002-Fix-build-with-musl-and-older-Linux-kernel.patch +++ /dev/null @@ -1,38 +0,0 @@ -From: Baruch Siach -Date: Fri, 29 Sep 2017 10:06:52 +0300 -Subject: [PATCH] Fix build with musl and older Linux kernel - -The musl libc carries its own copy of Linux system calls. When building -with Linux headers older than v3.17, musl provides SYS_getrandom -definition, but not GRND_NONBLOCK. This causes build failure for -libressl and openntpd: - -getentropy_linux.c: In function 'getentropy_getrandom': -getentropy_linux.c:205:42: error: 'GRND_NONBLOCK' undeclared (first use in this function) - ret = syscall(SYS_getrandom, buf, len, GRND_NONBLOCK); - ^~~~~~~~~~~~~ - -Define GRND_NONBLOCK locally when its definition is missing to fix the -build. There should be no run-time effect. Older kernels return ENOSYS -for unsupported syscall(). - -[ from upstream pull request with file location changed ] -Signed-off-by: Baruch Siach ---- -Upstream status: https://github.com/libressl-portable/openbsd/pull/82 - -diff -Nuar libressl-2.5.5-orig/crypto/compat/getentropy_linux.c libressl-2.5.5/crypto/compat/getentropy_linux.c ---- libressl-2.5.5-orig/crypto/compat/getentropy_linux.c 2017-07-09 13:59:48.000000000 +0300 -+++ libressl-2.5.5/crypto/compat/getentropy_linux.c 2017-09-29 10:03:32.447958829 +0300 -@@ -194,6 +194,11 @@ - } - - #ifdef SYS_getrandom -+ -+#ifndef GRND_NONBLOCK -+#define GRND_NONBLOCK 0x0001 -+#endif -+ - static int - getentropy_getrandom(void *buf, size_t len) - { diff --git a/buildroot/package/libressl/libressl.hash b/buildroot/package/libressl/libressl.hash index 9d926c677bb..53b7e0af590 100644 --- a/buildroot/package/libressl/libressl.hash +++ b/buildroot/package/libressl/libressl.hash @@ -1,2 +1,4 @@ # From https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/SHA256 -sha256 638a20c2f9e99ee283a841cd787ab4d846d1880e180c4e96904fc327d419d11f libressl-2.6.4.tar.gz +sha256 917a8779c342177ff3751a2bf955d0262d1d8916a4b408930c45cef326700995 libressl-2.7.2.tar.gz +# Locally computed +sha256 5c63613f008f16a9c0025c096bbd736cecf720494d121b5c5203e0ec6e5955b1 COPYING diff --git a/buildroot/package/libressl/libressl.mk b/buildroot/package/libressl/libressl.mk index 24670861618..1a1dda10002 100644 --- a/buildroot/package/libressl/libressl.mk +++ b/buildroot/package/libressl/libressl.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBRESSL_VERSION = 2.6.4 +LIBRESSL_VERSION = 2.7.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 diff --git a/buildroot/package/libselinux/0002-fix-musl-build.patch b/buildroot/package/libselinux/0001-fix-musl-build.patch similarity index 100% rename from buildroot/package/libselinux/0002-fix-musl-build.patch rename to buildroot/package/libselinux/0001-fix-musl-build.patch diff --git a/buildroot/package/libselinux/0001-workaround-blackfin-issue.patch b/buildroot/package/libselinux/0001-workaround-blackfin-issue.patch deleted file mode 100644 index 5d00c6983bb..00000000000 --- a/buildroot/package/libselinux/0001-workaround-blackfin-issue.patch +++ /dev/null @@ -1,24 +0,0 @@ -Do not make symbols hidden on Blackfin - -The libselinux logic to hide internal symbols from the DSO doesn't -work properly on Blackfin due to the USER_LABEL_PREFIX not being -handled properly. A real fix is not that simple, so this patch simply -disables the internal symbol hiding mechanism. This means that those -symbols are visible in the final DSO, which is not a problem for -proper execution, it just isn't as clean. - -Signed-off-by: Thomas Petazzoni - -Index: b/src/dso.h -=================================================================== ---- a/src/dso.h -+++ b/src/dso.h -@@ -1,7 +1,7 @@ - #ifndef _SELINUX_DSO_H - #define _SELINUX_DSO_H 1 - --#ifdef SHARED -+#if defined(SHARED) && !defined(__bfin__) - # define hidden __attribute__ ((visibility ("hidden"))) - # define hidden_proto(fct) __hidden_proto (fct, fct##_internal) - # define __hidden_proto(fct, internal) \ diff --git a/buildroot/package/libselinux/0003-libselinux-build-follow-standard-semantics-for-DESTD.patch b/buildroot/package/libselinux/0002-libselinux-build-follow-standard-semantics-for-DESTD.patch similarity index 100% rename from buildroot/package/libselinux/0003-libselinux-build-follow-standard-semantics-for-DESTD.patch rename to buildroot/package/libselinux/0002-libselinux-build-follow-standard-semantics-for-DESTD.patch diff --git a/buildroot/package/libselinux/0004-revert-ln-relative.patch b/buildroot/package/libselinux/0003-revert-ln-relative.patch similarity index 100% rename from buildroot/package/libselinux/0004-revert-ln-relative.patch rename to buildroot/package/libselinux/0003-revert-ln-relative.patch diff --git a/buildroot/package/libsemanage/0002-libsemanage-build-follow-standard-semantics-for-DESTD.patch b/buildroot/package/libsemanage/0001-libsemanage-build-follow-standard-semantics-for-DESTD.patch similarity index 100% rename from buildroot/package/libsemanage/0002-libsemanage-build-follow-standard-semantics-for-DESTD.patch rename to buildroot/package/libsemanage/0001-libsemanage-build-follow-standard-semantics-for-DESTD.patch diff --git a/buildroot/package/libsemanage/0001-workaround-blackfin-issue.patch b/buildroot/package/libsemanage/0001-workaround-blackfin-issue.patch deleted file mode 100644 index 7ce960665ce..00000000000 --- a/buildroot/package/libsemanage/0001-workaround-blackfin-issue.patch +++ /dev/null @@ -1,25 +0,0 @@ -Do not make symbols hidden on Blackfin - -The libselinux logic to hide internal symbols from the DSO doesn't -work properly on Blackfin due to the USER_LABEL_PREFIX not being -handled properly. A real fix is not that simple, so this patch simply -disables the internal symbol hiding mechanism. This means that those -symbols are visible in the final DSO, which is not a problem for -proper execution, it just isn't as clean. - -Signed-off-by: Thomas Petazzoni -Signed-off-by: Adam Duskett - -Index: b/src/dso.h -=================================================================== ---- a/src/dso.h -+++ b/src/dso.h -@@ -1,7 +1,7 @@ - #ifndef _SEPOL_DSO_H - #define _SEPOL_DSO_H 1 - --#ifdef SHARED -+#if defined(SHARED) && !defined(__bfin__) - # define hidden __attribute__ ((visibility ("hidden"))) - # define hidden_proto(fct) __hidden_proto (fct, fct##_internal) - # define __hidden_proto(fct, internal) \ diff --git a/buildroot/package/libsepol/0003-support-static-only.patch b/buildroot/package/libsepol/0002-support-static-only.patch similarity index 100% rename from buildroot/package/libsepol/0003-support-static-only.patch rename to buildroot/package/libsepol/0002-support-static-only.patch diff --git a/buildroot/package/libsepol/0002-workaround-blackfin-issue.patch b/buildroot/package/libsepol/0002-workaround-blackfin-issue.patch deleted file mode 100644 index 3c3bd4827fd..00000000000 --- a/buildroot/package/libsepol/0002-workaround-blackfin-issue.patch +++ /dev/null @@ -1,26 +0,0 @@ -Do not make symbols hidden on Blackfin - -The libselinux logic to hide internal symbols from the DSO doesn't -work properly on Blackfin due to the USER_LABEL_PREFIX not being -handled properly. A real fix is not that simple, so this patch simply -disables the internal symbol hiding mechanism. This means that those -symbols are visible in the final DSO, which is not a problem for -proper execution, it just isn't as clean. - -Signed-off-by: Thomas Petazzoni -Signed-off-by: Adam Duskett - -Index: b/src/dso.h -=================================================================== ---- a/src/dso.h -+++ b/src/dso.h -@@ -5,7 +5,7 @@ - #define DISABLE_SYMVER 1 - #endif - --#ifdef SHARED -+#if defined(SHARED) && !defined(__bfin__) - # define hidden __attribute__ ((visibility ("hidden"))) - # define hidden_proto(fct) __hidden_proto (fct, fct##_internal) - # define __hidden_proto(fct, internal) \ - diff --git a/buildroot/package/libsepol/0004-revert-ln-relative.patch b/buildroot/package/libsepol/0003-revert-ln-relative.patch similarity index 100% rename from buildroot/package/libsepol/0004-revert-ln-relative.patch rename to buildroot/package/libsepol/0003-revert-ln-relative.patch diff --git a/buildroot/package/libsigrokdecode/libsigrokdecode.hash b/buildroot/package/libsigrokdecode/libsigrokdecode.hash index a4914b25922..c2e15f61cbc 100644 --- a/buildroot/package/libsigrokdecode/libsigrokdecode.hash +++ b/buildroot/package/libsigrokdecode/libsigrokdecode.hash @@ -1,2 +1,3 @@ # Locally computed -sha256 4aa8579ecea9b421b8ac048a9b18c27e63206839f269374398d89c14a47bd1c1 libsigrokdecode-0.5.0.tar.gz +sha256 493d8b555ae4c245a5feebbd94de33aec7ee85a4f16bc3f4c3985961b459b51e libsigrokdecode-0.5.1.tar.gz +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/libsigrokdecode/libsigrokdecode.mk b/buildroot/package/libsigrokdecode/libsigrokdecode.mk index 95e6e69af31..8b4802a7f34 100644 --- a/buildroot/package/libsigrokdecode/libsigrokdecode.mk +++ b/buildroot/package/libsigrokdecode/libsigrokdecode.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBSIGROKDECODE_VERSION = 0.5.0 +LIBSIGROKDECODE_VERSION = 0.5.1 LIBSIGROKDECODE_SITE = http://sigrok.org/download/source/libsigrokdecode LIBSIGROKDECODE_LICENSE = GPL-3.0+ LIBSIGROKDECODE_LICENSE_FILES = COPYING diff --git a/buildroot/package/libsigsegv/libsigsegv.hash b/buildroot/package/libsigsegv/libsigsegv.hash index e937259ece8..47ba3568217 100644 --- a/buildroot/package/libsigsegv/libsigsegv.hash +++ b/buildroot/package/libsigsegv/libsigsegv.hash @@ -1,2 +1,5 @@ # Locally calculated after checking pgp signature -sha256 dd7c2eb2ef6c47189406d562c1dc0f96f2fc808036834d596075d58377e37a18 libsigsegv-2.11.tar.gz +# https://ftp.gnu.org/gnu/libsigsegv/libsigsegv-2.12.tar.gz.sig +sha256 3ae1af359eebaa4ffc5896a1aee3568c052c99879316a1ab57f8fe1789c390b6 libsigsegv-2.12.tar.gz +# Locally calculated +sha256 8f2983e9a940367f48999881c14775db725ee643bce1e2f1ba195eb629a33cde COPYING diff --git a/buildroot/package/libsigsegv/libsigsegv.mk b/buildroot/package/libsigsegv/libsigsegv.mk index d2524977a4d..6fa0929bba0 100644 --- a/buildroot/package/libsigsegv/libsigsegv.mk +++ b/buildroot/package/libsigsegv/libsigsegv.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBSIGSEGV_VERSION = 2.11 +LIBSIGSEGV_VERSION = 2.12 LIBSIGSEGV_SITE = $(BR2_GNU_MIRROR)/libsigsegv LIBSIGSEGV_INSTALL_STAGING = YES LIBSIGSEGV_CONF_ENV = sv_cv_fault_posix=yes diff --git a/buildroot/package/libsoil/libsoil.mk b/buildroot/package/libsoil/libsoil.mk index efa67d9eee5..2945edd8dde 100644 --- a/buildroot/package/libsoil/libsoil.mk +++ b/buildroot/package/libsoil/libsoil.mk @@ -14,7 +14,7 @@ LIBSOIL_LICENSE_FILES = src/stb_image_aug.c src/image_helper.c LIBSOIL_MAKEFILE = ../projects/makefile/alternate_Makefile.txt define LIBSOIL_EXTRACT_CMDS - $(UNZIP) -d $(@D) $(DL_DIR)/$(LIBSOIL_SOURCE) + $(UNZIP) -d $(@D) $(LIBSOIL_DL_DIR)/$(LIBSOIL_SOURCE) mv $(@D)/Simple\ OpenGL\ Image\ Library/* $(@D) endef diff --git a/buildroot/package/libss7/Config.in b/buildroot/package/libss7/Config.in index b99c578182a..bdf5fbe3a8d 100644 --- a/buildroot/package/libss7/Config.in +++ b/buildroot/package/libss7/Config.in @@ -1,5 +1,6 @@ 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 diff --git a/buildroot/package/libssh2/0002-acinclude.m4-add-mbedtls-to-LIBS.patch b/buildroot/package/libssh2/0002-acinclude.m4-add-mbedtls-to-LIBS.patch new file mode 100644 index 00000000000..76e08c51a93 --- /dev/null +++ b/buildroot/package/libssh2/0002-acinclude.m4-add-mbedtls-to-LIBS.patch @@ -0,0 +1,31 @@ +From f4846473f0f0ec313f8ed7ff4cd9f59c1741465d Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 20 Mar 2018 20:21:53 +0200 +Subject: [PATCH] acinclude.m4: add mbedtls to LIBS + +This is useful for static builds so that the Libs.private field in +libssh2.pc contains correct info for the benefit of pkg-config users. +Static link with libssh2 requires this information. + +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/libssh2/libssh2/pull/242 + + acinclude.m4 | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/acinclude.m4 b/acinclude.m4 +index c0e89a1a0c98..02c70845d27c 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -441,6 +441,7 @@ m4_case([$1], + [mbedtls], [ + LIBSSH2_LIB_HAVE_LINKFLAGS([mbedcrypto], [], [#include ], [ + AC_DEFINE(LIBSSH2_MBEDTLS, 1, [Use $1]) ++ LIBS="$LIBS $LIBMBEDCRYPTO" + found_crypto="$1" + support_clear_memory=yes + ]) +-- +2.16.2 + diff --git a/buildroot/package/libtomcrypt/libtomcrypt.mk b/buildroot/package/libtomcrypt/libtomcrypt.mk index 974ef3f2f2f..ff6222cc91e 100644 --- a/buildroot/package/libtomcrypt/libtomcrypt.mk +++ b/buildroot/package/libtomcrypt/libtomcrypt.mk @@ -20,7 +20,9 @@ define LIBTOMCRYPT_BUILD_CMDS endef define LIBTOMCRYPT_INSTALL_STAGING_CMDS - $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(STAGING_DIR)" NODOCS=1 INSTALL_USER=$(shell id -u) INSTALL_GROUP=$(shell id -g) install + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) DESTDIR="$(STAGING_DIR)" \ + PREFIX=/usr NODOCS=1 INSTALL_USER=$(shell id -u) \ + INSTALL_GROUP=$(shell id -g) install endef $(eval $(generic-package)) diff --git a/buildroot/package/libunistring/libunistring.hash b/buildroot/package/libunistring/libunistring.hash index 15e35cb81c5..8a5da7782d3 100644 --- a/buildroot/package/libunistring/libunistring.hash +++ b/buildroot/package/libunistring/libunistring.hash @@ -1,2 +1,6 @@ # Locally calculated after checking pgp signature -sha256 2e3764512aaf2ce598af5a38818c0ea23dedf1ff5460070d1b6cee5c3336e797 libunistring-0.9.7.tar.xz +# https://ftp.gnu.org/gnu/libunistring/libunistring-0.9.9.tar.xz.sig +sha256 a4d993ecfce16cf503ff7579f5da64619cee66226fb3b998dafb706190d9a833 libunistring-0.9.9.tar.xz +# Locally calculated +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 a853c2ffec17057872340eee242ae4d96cbf2b520ae27d903e1b2fef1a5f9d1c COPYING.LIB diff --git a/buildroot/package/libunistring/libunistring.mk b/buildroot/package/libunistring/libunistring.mk index 9340e79937f..929b52ebd5b 100644 --- a/buildroot/package/libunistring/libunistring.mk +++ b/buildroot/package/libunistring/libunistring.mk @@ -4,18 +4,12 @@ # ################################################################################ -LIBUNISTRING_VERSION = 0.9.7 +LIBUNISTRING_VERSION = 0.9.9 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.LIB - -ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) -LIBUNISTRING_CONF_OPTS += --enable-threads=posix -else -LIBUNISTRING_CONF_OPTS += --disable-threads -endif +LIBUNISTRING_LICENSE_FILES = COPYING COPYING.LIB $(eval $(autotools-package)) $(eval $(host-autotools-package)) diff --git a/buildroot/package/libupnp/libupnp.hash b/buildroot/package/libupnp/libupnp.hash index 929e5c42e78..e52b7ea9d7d 100644 --- a/buildroot/package/libupnp/libupnp.hash +++ b/buildroot/package/libupnp/libupnp.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 7d83d79af3bb4062e5c3a58bf2e90d2da5b8b99e2b2d57c23b5b6f766288cf96 libupnp-1.6.24.tar.bz2 +sha256 c5a300b86775435c076d58a79cc0d5a977d76027d2a7d721590729b7f369fa43 libupnp-1.6.25.tar.bz2 sha256 0375955c8a79d6e8fa0792d45d00fc4e7710d7ac95bcbd27f9225a83f5c946fd LICENSE diff --git a/buildroot/package/libupnp/libupnp.mk b/buildroot/package/libupnp/libupnp.mk index c7085c2148b..8831885ba41 100644 --- a/buildroot/package/libupnp/libupnp.mk +++ b/buildroot/package/libupnp/libupnp.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBUPNP_VERSION = 1.6.24 +LIBUPNP_VERSION = 1.6.25 LIBUPNP_SOURCE = libupnp-$(LIBUPNP_VERSION).tar.bz2 LIBUPNP_SITE = http://downloads.sourceforge.net/project/pupnp/pupnp/libUPnP%20$(LIBUPNP_VERSION) LIBUPNP_CONF_ENV = ac_cv_lib_compat_ftime=no diff --git a/buildroot/package/libupnp18/libupnp18.mk b/buildroot/package/libupnp18/libupnp18.mk index a75558e92b7..07ef4382f01 100644 --- a/buildroot/package/libupnp18/libupnp18.mk +++ b/buildroot/package/libupnp18/libupnp18.mk @@ -12,4 +12,12 @@ LIBUPNP18_INSTALL_STAGING = YES LIBUPNP18_LICENSE = BSD-3-Clause LIBUPNP18_LICENSE_FILES = LICENSE +ifeq ($(BR2_PACKAGE_OPENSSL),y) +LIBUPNP18_CONF_OPTS += --enable-open-ssl +LIBUPNP18_DEPENDENCIES += host-pkgconf openssl +LIBUPNP18_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`" +else +LIBUPNP18_CONF_OPTS += --disable-open-ssl +endif + $(eval $(autotools-package)) diff --git a/buildroot/package/libupnpp/0001-Fix-cross-compilation-with-uclibc-on-arm-m68k.patch b/buildroot/package/libupnpp/0001-Fix-cross-compilation-with-uclibc-on-arm-m68k.patch new file mode 100644 index 00000000000..2c0a4ec79f2 --- /dev/null +++ b/buildroot/package/libupnpp/0001-Fix-cross-compilation-with-uclibc-on-arm-m68k.patch @@ -0,0 +1,36 @@ +From 2828c2535d4380419ec5114cc3a0564d3686aba9 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Fri, 4 May 2018 11:45:59 +0200 +Subject: [PATCH] Fix cross-compilation with uclibc on arm/m68k + +Commit 3f1132ecd27186fa3f1a87ead6a0389802baccbb breaks cross-compilation +with uclibc on arm and m68k because host_os is set to +arm-buildroot-uclinux-uclibc or m68k-buildroot-uclinux-uclibc so add +uclinux to the linux case + +Fixes: + - http://autobuild.buildroot.net/results/cfb332a169863bcb3e6bc6ee7d6f6199f856b0b8 + - http://autobuild.buildroot.net/results/2f6f464f6360ed9ea4c238f503d2c3b8ab3cbd86 + +[Sent upstream]: https://opensourceprojects.eu/p/libupnpp/code/merge-requests/3 +Signed-off-by: Fabrice Fontaine +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 8903b72..3bb354c 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -35,7 +35,7 @@ build_linux=no + build_mac=no + # Detect the target system + case "${host_os}" in +- linux*) build_linux=yes;; ++ linux*|uclinux*) build_linux=yes;; + darwin*) build_mac=yes;; + *) AC_MSG_ERROR(["OS $host_os is not supported"]);; + esac +-- +2.14.1 + diff --git a/buildroot/package/libupnpp/libupnpp.hash b/buildroot/package/libupnpp/libupnpp.hash index f19e0b5441d..742a0c7f62a 100644 --- a/buildroot/package/libupnpp/libupnpp.hash +++ b/buildroot/package/libupnpp/libupnpp.hash @@ -1,2 +1,5 @@ -# Hashes from: http://www.lesbonscomptes.com/upmpdcli/downloads/libupnpp-0.16.0.tar.gz.sha256 -sha256 b34b179e69c46993cf360da9e85db646b03c15ab2927b19eb70e27bf3c359017 libupnpp-0.16.0.tar.gz +# Hashes from: http://www.lesbonscomptes.com/upmpdcli/downloads/libupnpp-0.16.1.tar.gz.sha256 +sha256 d2ab5a4bb6df035ddddd11542bd4631ab7031354259145f07fbc3c56a8f50fac libupnpp-0.16.1.tar.gz + +# Hash for license file: +sha256 00a89b0d18aacd4114decf79122db87bf35bddaf2bc50e383c9c9f4c263390b2 COPYING diff --git a/buildroot/package/libupnpp/libupnpp.mk b/buildroot/package/libupnpp/libupnpp.mk index 4755b706d65..852a72e8220 100644 --- a/buildroot/package/libupnpp/libupnpp.mk +++ b/buildroot/package/libupnpp/libupnpp.mk @@ -4,12 +4,14 @@ # ################################################################################ -LIBUPNPP_VERSION = 0.16.0 +LIBUPNPP_VERSION = 0.16.1 LIBUPNPP_SITE = http://www.lesbonscomptes.com/upmpdcli/downloads -LIBUPNPP_LICENSE = GPL-2.0+ +LIBUPNPP_LICENSE = LGPL-2.1+ LIBUPNPP_LICENSE_FILES = COPYING LIBUPNPP_INSTALL_STAGING = YES LIBUPNPP_DEPENDENCIES = expat libcurl libupnp +# We're patching configure.ac +LIBUPNPP_AUTORECONF = YES # configure script fails to link against the dependencies of libupnp # and libcurl causing detection to fail when statically linking diff --git a/buildroot/package/liburiparser/Config.in b/buildroot/package/liburiparser/Config.in index e85a2626d23..b39e3907dd2 100644 --- a/buildroot/package/liburiparser/Config.in +++ b/buildroot/package/liburiparser/Config.in @@ -4,4 +4,4 @@ config BR2_PACKAGE_LIBURIPARSER uriparser is a strictly RFC 3986 compliant URI parsing and handling library written in C. - http://uriparser.sourceforge.net + https://uriparser.github.io diff --git a/buildroot/package/liburiparser/liburiparser.hash b/buildroot/package/liburiparser/liburiparser.hash index 9e9517c17ff..c03e832f9fc 100644 --- a/buildroot/package/liburiparser/liburiparser.hash +++ b/buildroot/package/liburiparser/liburiparser.hash @@ -1,5 +1,3 @@ -# From http://sourceforge.net/projects/uriparser/files/Sources/0.8.4/ -md5 9aabdc3611546f553f4af372167de6d6 uriparser-0.8.4.tar.bz2 -sha1 7a1948c20bed54b04dad0e1d7d2fa8f80fc7b2b3 uriparser-0.8.4.tar.bz2 # Locally calculated -sha256 c6ef125800c2ef13a41a22126bfc77e8b8c08993a6b96196117695988ea76249 COPYING +sha256 58eacd5c03d9e341c04eb0b30831faec89f3b415949ff8d72254e63432352cdd uriparser-0.8.5.tar.bz2 +sha256 ee90029e62d11f48faa59360d15c3ad8e7c094c74cc25b055716d92340da561f COPYING diff --git a/buildroot/package/liburiparser/liburiparser.mk b/buildroot/package/liburiparser/liburiparser.mk index 856a6aafd4e..4b32b7f7f29 100644 --- a/buildroot/package/liburiparser/liburiparser.mk +++ b/buildroot/package/liburiparser/liburiparser.mk @@ -4,9 +4,9 @@ # ################################################################################ -LIBURIPARSER_VERSION = 0.8.4 +LIBURIPARSER_VERSION = 0.8.5 LIBURIPARSER_SOURCE = uriparser-$(LIBURIPARSER_VERSION).tar.bz2 -LIBURIPARSER_SITE = http://sourceforge.net/projects/uriparser/files/Sources/$(LIBURIPARSER_VERSION) +LIBURIPARSER_SITE = https://github.com/uriparser/uriparser/releases/download/uriparser-$(LIBURIPARSER_VERSION) LIBURIPARSER_LICENSE = BSD-3-Clause LIBURIPARSER_LICENSE_FILES = COPYING LIBURIPARSER_INSTALL_STAGING = YES diff --git a/buildroot/package/libusbgx/libusbgx.hash b/buildroot/package/libusbgx/libusbgx.hash index c185c5803cb..107123ae114 100644 --- a/buildroot/package/libusbgx/libusbgx.hash +++ b/buildroot/package/libusbgx/libusbgx.hash @@ -1,2 +1,4 @@ # Locally computed: -sha256 1e258205dcde99d0eeb52404ee7ff1bc9a39eb3878e8455fb72bad7cf90c7357 libusbgx-2e3d43ee098ed928d1baa61ce791ce9ff4788c5a.tar.gz +sha256 b15abc89a0ef82c6a650cc1d58b5ba50f7ce076db392add84caabcd86c608ee2 libusbgx-libusbgx-v0.2.0.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL diff --git a/buildroot/package/libusbgx/libusbgx.mk b/buildroot/package/libusbgx/libusbgx.mk index 1964b47d022..e7c082f9f37 100644 --- a/buildroot/package/libusbgx/libusbgx.mk +++ b/buildroot/package/libusbgx/libusbgx.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBUSBGX_VERSION = 2e3d43ee098ed928d1baa61ce791ce9ff4788c5a +LIBUSBGX_VERSION = libusbgx-v0.2.0 LIBUSBGX_SITE = $(call github,libusbgx,libusbgx,$(LIBUSBGX_VERSION)) LIBUSBGX_LICENSE = GPL-2.0+ (examples), LGPL-2.1+ (library) LIBUSBGX_LICENSE_FILES = COPYING COPYING.LGPL diff --git a/buildroot/package/libuv/libuv.hash b/buildroot/package/libuv/libuv.hash index cc5a30ae102..899fae28170 100644 --- a/buildroot/package/libuv/libuv.hash +++ b/buildroot/package/libuv/libuv.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 8d96a6230af4f9f33d6ec021b599e157279a2af72ed38cf4a8c25e6d58d952ef libuv-v1.19.1.tar.gz +sha256 a5e62a6ed3c25a712477b55ce923e7f49af95b80319f88b9c950200d65427793 libuv-v1.20.2.tar.gz sha256 6d20216ae022fbeed23916f48508fd807ece3d8464992330643b0e64e5c0c24b LICENSE diff --git a/buildroot/package/libuv/libuv.mk b/buildroot/package/libuv/libuv.mk index 2666c14f936..d857d64c49d 100644 --- a/buildroot/package/libuv/libuv.mk +++ b/buildroot/package/libuv/libuv.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBUV_VERSION = v1.19.1 +LIBUV_VERSION = v1.20.2 LIBUV_SITE = $(call github,libuv,libuv,$(LIBUV_VERSION)) LIBUV_DEPENDENCIES = host-pkgconf LIBUV_INSTALL_STAGING = YES diff --git a/buildroot/package/libva-intel-driver/libva-intel-driver.hash b/buildroot/package/libva-intel-driver/libva-intel-driver.hash index 4ffc60cab51..dbe5d67fb44 100644 --- a/buildroot/package/libva-intel-driver/libva-intel-driver.hash +++ b/buildroot/package/libva-intel-driver/libva-intel-driver.hash @@ -1,5 +1,5 @@ # From https://github.com/01org/intel-vaapi-driver/releases -sha1 19e83c084a404817263c04371c42345b617900ff intel-vaapi-driver-2.0.0.tar.bz2 +sha1 a40c6bd89b71b547986bf9f9fa2533bb50cf269e intel-vaapi-driver-2.1.0.tar.bz2 # Locally computed -sha256 10f6b0a91f34715d8d4d9a9e0fb3cc0afe5fcf85355db1272bd5fff31522f469 intel-vaapi-driver-2.0.0.tar.bz2 +sha256 ecfaf2ccc4b9af7340e002d2ef807d1e33051d4992f1983f5f4d60e516f86bdf intel-vaapi-driver-2.1.0.tar.bz2 sha256 c86a782ee845b52472dae9b9d79fb915d333628ac0efe49cdce63644814931de COPYING diff --git a/buildroot/package/libva-intel-driver/libva-intel-driver.mk b/buildroot/package/libva-intel-driver/libva-intel-driver.mk index 0255038b0af..dd1903024f4 100644 --- a/buildroot/package/libva-intel-driver/libva-intel-driver.mk +++ b/buildroot/package/libva-intel-driver/libva-intel-driver.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBVA_INTEL_DRIVER_VERSION = 2.0.0 +LIBVA_INTEL_DRIVER_VERSION = 2.1.0 LIBVA_INTEL_DRIVER_SOURCE = intel-vaapi-driver-$(LIBVA_INTEL_DRIVER_VERSION).tar.bz2 LIBVA_INTEL_DRIVER_SITE = \ https://github.com/01org/intel-vaapi-driver/releases/download/$(LIBVA_INTEL_DRIVER_VERSION) diff --git a/buildroot/package/libva-utils/libva-utils.hash b/buildroot/package/libva-utils/libva-utils.hash index 3429fb53a6e..46674a36757 100644 --- a/buildroot/package/libva-utils/libva-utils.hash +++ b/buildroot/package/libva-utils/libva-utils.hash @@ -1,5 +1,5 @@ # From https://github.com/01org/libva-utils/releases -sha1 b4dc39459f8539c1ea16e7ca957a853fb7735ec4 libva-utils-2.0.0.tar.bz2 +sha1 9902eb944c3ace00be4fe95627708f156fc5ace7 libva-utils-2.1.0.tar.bz2 # Locally computed -sha256 a921df31311d8f49d2e392a5fc2a068d79f89aeb588309fbff24365310dbc5f6 libva-utils-2.0.0.tar.bz2 +sha256 f6a7790c3dcc56537372c90a83036a3136194a8b397e84e97bf9cc9254fa2c51 libva-utils-2.1.0.tar.bz2 sha256 c6220c9f87832c27abcb8a32eafdd2823e13ce146b3ea63d5deae2a76798ef50 COPYING diff --git a/buildroot/package/libva-utils/libva-utils.mk b/buildroot/package/libva-utils/libva-utils.mk index 275d5996063..85ee3083fd7 100644 --- a/buildroot/package/libva-utils/libva-utils.mk +++ b/buildroot/package/libva-utils/libva-utils.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBVA_UTILS_VERSION = 2.0.0 +LIBVA_UTILS_VERSION = 2.1.0 LIBVA_UTILS_SOURCE = libva-utils-$(LIBVA_UTILS_VERSION).tar.bz2 LIBVA_UTILS_SITE = https://github.com/01org/libva-utils/releases/download/$(LIBVA_UTILS_VERSION) LIBVA_UTILS_LICENSE = MIT diff --git a/buildroot/package/libva/libva.hash b/buildroot/package/libva/libva.hash index 1736575447f..ed707095f01 100644 --- a/buildroot/package/libva/libva.hash +++ b/buildroot/package/libva/libva.hash @@ -1,5 +1,5 @@ # From https://github.com/01org/libva/releases -sha1 762a49f8925ca1d0531c5071afbd629ffea93b90 libva-2.0.0.tar.bz2 +sha1 9ecde2b6c9deda16e895a0b00b8aef3a765acb4c libva-2.1.0.tar.bz2 # Locally computed -sha256 bb0601f9a209e60d8d0b867067323661a7816ff429021441b775452b8589e533 libva-2.0.0.tar.bz2 +sha256 f3fa953a11d3210c3a4ee79031abdbe0863d5ce13d9b3f93f315f1eec60a4b0f libva-2.1.0.tar.bz2 sha256 c86a782ee845b52472dae9b9d79fb915d333628ac0efe49cdce63644814931de COPYING diff --git a/buildroot/package/libva/libva.mk b/buildroot/package/libva/libva.mk index 8d1e27f270b..79956a9d8e9 100644 --- a/buildroot/package/libva/libva.mk +++ b/buildroot/package/libva/libva.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBVA_VERSION = 2.0.0 +LIBVA_VERSION = 2.1.0 LIBVA_SOURCE = libva-$(LIBVA_VERSION).tar.bz2 LIBVA_SITE = https://github.com/01org/libva/releases/download/$(LIBVA_VERSION) LIBVA_LICENSE = MIT diff --git a/buildroot/package/libvorbis/0001-CVE-2017-14633-Don-t-allow-for-more-than-256-channel.patch b/buildroot/package/libvorbis/0001-CVE-2017-14633-Don-t-allow-for-more-than-256-channel.patch deleted file mode 100644 index 416aa66ddf1..00000000000 --- a/buildroot/package/libvorbis/0001-CVE-2017-14633-Don-t-allow-for-more-than-256-channel.patch +++ /dev/null @@ -1,36 +0,0 @@ -From a79ec216cd119069c68b8f3542c6a425a74ab993 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Guido=20G=C3=BCnther?= -Date: Tue, 31 Oct 2017 18:32:46 +0100 -Subject: [PATCH] CVE-2017-14633: Don't allow for more than 256 channels - -Otherwise - - for(i=0;ichannels;i++){ - /* the encoder setup assumes that all the modes used by any - specific bitrate tweaking use the same floor */ - int submap=info->chmuxlist[i]; - -overreads later in mapping0_forward since chmuxlist is a fixed array of -256 elements max. - -Signed-off-by: Peter Korsgaard ---- - lib/info.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lib/info.c b/lib/info.c -index fe759ed..7bc4ea4 100644 ---- a/lib/info.c -+++ b/lib/info.c -@@ -588,7 +588,7 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v, - oggpack_buffer opb; - private_state *b=v->backend_state; - -- if(!b||vi->channels<=0){ -+ if(!b||vi->channels<=0||vi->channels>256){ - ret=OV_EFAULT; - goto err_out; - } --- -2.11.0 - diff --git a/buildroot/package/libvorbis/0002-CVE-2017-14632-vorbis_analysis_header_out-Don-t-clea.patch b/buildroot/package/libvorbis/0002-CVE-2017-14632-vorbis_analysis_header_out-Don-t-clea.patch deleted file mode 100644 index ffb4cc92f2c..00000000000 --- a/buildroot/package/libvorbis/0002-CVE-2017-14632-vorbis_analysis_header_out-Don-t-clea.patch +++ /dev/null @@ -1,56 +0,0 @@ -From c1c2831fc7306d5fbd7bc800324efd12b28d327f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Guido=20G=C3=BCnther?= -Date: Wed, 15 Nov 2017 18:22:59 +0100 -Subject: [PATCH] CVE-2017-14632: vorbis_analysis_header_out: Don't clear opb - if not initialized - -If the number of channels is not within the allowed range -we call oggback_writeclear altough it's not initialized yet. - -This fixes - - =23371== Invalid free() / delete / delete[] / realloc() - ==23371== at 0x4C2CE1B: free (vg_replace_malloc.c:530) - ==23371== by 0x829CA31: oggpack_writeclear (in /usr/lib/x86_64-linux-gnu/libogg.so.0.8.2) - ==23371== by 0x84B96EE: vorbis_analysis_headerout (info.c:652) - ==23371== by 0x9FBCBCC: ??? (in /usr/lib/x86_64-linux-gnu/sox/libsox_fmt_vorbis.so) - ==23371== by 0x4E524F1: ??? (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1) - ==23371== by 0x4E52CCA: sox_open_write (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1) - ==23371== by 0x10D82A: open_output_file (sox.c:1556) - ==23371== by 0x10D82A: process (sox.c:1753) - ==23371== by 0x10D82A: main (sox.c:3012) - ==23371== Address 0x68768c8 is 488 bytes inside a block of size 880 alloc'd - ==23371== at 0x4C2BB1F: malloc (vg_replace_malloc.c:298) - ==23371== by 0x4C2DE9F: realloc (vg_replace_malloc.c:785) - ==23371== by 0x4E545C2: lsx_realloc (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1) - ==23371== by 0x9FBC9A0: ??? (in /usr/lib/x86_64-linux-gnu/sox/libsox_fmt_vorbis.so) - ==23371== by 0x4E524F1: ??? (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1) - ==23371== by 0x4E52CCA: sox_open_write (in /usr/lib/x86_64-linux-gnu/libsox.so.2.0.1) - ==23371== by 0x10D82A: open_output_file (sox.c:1556) - ==23371== by 0x10D82A: process (sox.c:1753) - ==23371== by 0x10D82A: main (sox.c:3012) - -as seen when using the testcase from CVE-2017-11333 with -008d23b782be09c8d75ba8190b1794abd66c7121 applied. However the error was -there before. - -Signed-off-by: Peter Korsgaard ---- - lib/info.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/lib/info.c b/lib/info.c -index 7bc4ea4..8d0b2ed 100644 ---- a/lib/info.c -+++ b/lib/info.c -@@ -589,6 +589,7 @@ int vorbis_analysis_headerout(vorbis_dsp_state *v, - private_state *b=v->backend_state; - - if(!b||vi->channels<=0||vi->channels>256){ -+ b = NULL; - ret=OV_EFAULT; - goto err_out; - } --- -2.11.0 - diff --git a/buildroot/package/libvorbis/libvorbis.hash b/buildroot/package/libvorbis/libvorbis.hash index e990f4d74f2..15bd01f22a8 100644 --- a/buildroot/package/libvorbis/libvorbis.hash +++ b/buildroot/package/libvorbis/libvorbis.hash @@ -1,2 +1,4 @@ # From http://www.xiph.org/downloads/ -sha256 54f94a9527ff0a88477be0a71c0bab09a4c3febe0ed878b24824906cd4b0e1d1 libvorbis-1.3.5.tar.xz +sha256 af00bb5a784e7c9e69f56823de4637c350643deedaf333d0fa86ecdba6fcb415 libvorbis-1.3.6.tar.xz +# License files, locally calculated +sha256 29e9914e6173b7061b7d48c25e6159fc1438326738bc047cc7248abc01b271f6 COPYING diff --git a/buildroot/package/libvorbis/libvorbis.mk b/buildroot/package/libvorbis/libvorbis.mk index 98ec97bfd65..ae2c1efffef 100644 --- a/buildroot/package/libvorbis/libvorbis.mk +++ b/buildroot/package/libvorbis/libvorbis.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBVORBIS_VERSION = 1.3.5 +LIBVORBIS_VERSION = 1.3.6 LIBVORBIS_SOURCE = libvorbis-$(LIBVORBIS_VERSION).tar.xz LIBVORBIS_SITE = http://downloads.xiph.org/releases/vorbis LIBVORBIS_INSTALL_STAGING = YES diff --git a/buildroot/package/libvpx/Config.in b/buildroot/package/libvpx/Config.in index 67a4c578f44..6b0400c0a2f 100644 --- a/buildroot/package/libvpx/Config.in +++ b/buildroot/package/libvpx/Config.in @@ -1,6 +1,5 @@ config BR2_PACKAGE_LIBVPX bool "libvpx" - depends on !BR2_bfin depends on BR2_TOOLCHAIN_HAS_THREADS help A high-quality, open video format that's freely available to @@ -9,5 +8,4 @@ config BR2_PACKAGE_LIBVPX http://webmproject.org comment "libvpx needs a toolchain w/ threads" - depends on !BR2_bfin depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/libvpx/libvpx.hash b/buildroot/package/libvpx/libvpx.hash index 95ff3a80826..1397b62f7b9 100644 --- a/buildroot/package/libvpx/libvpx.hash +++ b/buildroot/package/libvpx/libvpx.hash @@ -1,2 +1,4 @@ # Locally computed: -sha256 1c2c0c2a97fba9474943be34ee39337dee756780fc12870ba1dc68372586a819 libvpx-1.6.1.tar.bz2 +sha256 1fec931eb5c94279ad219a5b6e0202358e94a93a90cfb1603578c326abfc1238 libvpx-v1.7.0.tar.gz +sha256 8267348d5af1262c11d1a08de2f5afc77457755f1ac658627dd9acf71011d615 LICENSE +sha256 cc3273e0694ea5896145e0677699b53471b03ea43021ddc50e7923fbb9f5023c PATENTS diff --git a/buildroot/package/libvpx/libvpx.mk b/buildroot/package/libvpx/libvpx.mk index 24c39032e4d..0f867eb2a9b 100644 --- a/buildroot/package/libvpx/libvpx.mk +++ b/buildroot/package/libvpx/libvpx.mk @@ -4,9 +4,8 @@ # ################################################################################ -LIBVPX_VERSION = 1.6.1 -LIBVPX_SOURCE = libvpx-$(LIBVPX_VERSION).tar.bz2 -LIBVPX_SITE = http://storage.googleapis.com/downloads.webmproject.org/releases/webm +LIBVPX_VERSION = v1.7.0 +LIBVPX_SITE = $(call github,webmproject,libvpx,$(LIBVPX_VERSION)) LIBVPX_LICENSE = BSD-3-Clause LIBVPX_LICENSE_FILES = LICENSE PATENTS LIBVPX_INSTALL_STAGING = YES diff --git a/buildroot/package/libwebsockets/libwebsockets.hash b/buildroot/package/libwebsockets/libwebsockets.hash index 490139746f2..ea7c8ca6baf 100644 --- a/buildroot/package/libwebsockets/libwebsockets.hash +++ b/buildroot/package/libwebsockets/libwebsockets.hash @@ -1,2 +1,3 @@ # Locally computed: -sha256 e7f9eaef258e003c9ada0803a9a5636757a5bc0a58927858834fb38a87d18ad2 libwebsockets-v2.2.1.tar.gz +sha256 73012d7fcf428dedccc816e83a63a01462e27819d5537b8e0d0c7264bfacfad6 libwebsockets-v2.4.2.tar.gz +sha256 078fbbbeab357fc6d4f8090e95e9022fa4cb9eac1efd77b2f1387e9ccc51917a LICENSE diff --git a/buildroot/package/libwebsockets/libwebsockets.mk b/buildroot/package/libwebsockets/libwebsockets.mk index b29a2f14c7a..28fd183393a 100644 --- a/buildroot/package/libwebsockets/libwebsockets.mk +++ b/buildroot/package/libwebsockets/libwebsockets.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBWEBSOCKETS_VERSION = v2.2.1 +LIBWEBSOCKETS_VERSION = v2.4.2 LIBWEBSOCKETS_SITE = $(call github,warmcat,libwebsockets,$(LIBWEBSOCKETS_VERSION)) LIBWEBSOCKETS_LICENSE = LGPL-2.1 with exceptions LIBWEBSOCKETS_LICENSE_FILES = LICENSE diff --git a/buildroot/package/libxslt/libxslt.mk b/buildroot/package/libxslt/libxslt.mk index d89dde8d00c..868ba6a10f9 100644 --- a/buildroot/package/libxslt/libxslt.mk +++ b/buildroot/package/libxslt/libxslt.mk @@ -19,12 +19,6 @@ LIBXSLT_CONF_OPTS = \ LIBXSLT_CONFIG_SCRIPTS = xslt-config LIBXSLT_DEPENDENCIES = libxml2 -# GCC bug with Os/O2/O3, PR77311 -# error: unable to find a register to spill in class 'CCREGS' -ifeq ($(BR2_bfin),y) -LIBXSLT_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O1" -endif - # If we have enabled libgcrypt then use it, else disable crypto support. ifeq ($(BR2_PACKAGE_LIBGCRYPT),y) LIBXSLT_DEPENDENCIES += libgcrypt diff --git a/buildroot/package/libyaml/libyaml.hash b/buildroot/package/libyaml/libyaml.hash index 44b04a33659..d4a0c335c36 100644 --- a/buildroot/package/libyaml/libyaml.hash +++ b/buildroot/package/libyaml/libyaml.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 8088e457264a98ba451a90b8661fcb4f9d6f478f7265d48322a196cec2480729 yaml-0.1.7.tar.gz +sha256 d0d8b09800a45cd982e9568fc7669d9c1a4c330e275a821bbe24d54366d16fe9 LICENSE diff --git a/buildroot/package/linux-firmware/Config.in b/buildroot/package/linux-firmware/Config.in index f93561ee14a..074bcc6c78d 100644 --- a/buildroot/package/linux-firmware/Config.in +++ b/buildroot/package/linux-firmware/Config.in @@ -19,6 +19,11 @@ 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 @@ -29,6 +34,16 @@ config BR2_PACKAGE_LINUX_FIRMWARE_RADEON 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 + endmenu # Video menu "Bluetooth firmware" @@ -83,6 +98,11 @@ config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA998X help Firmware files for the Atheros QCA988X module +config BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA6174 + bool "Atheros 10k (QCA6174)" + help + Firmware files for the Atheros QCA6174 module + config BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XX bool "Broadcom BRCM bcm43xx" help diff --git a/buildroot/package/linux-firmware/linux-firmware.hash b/buildroot/package/linux-firmware/linux-firmware.hash index 1beb1f76da1..0106db2ffb3 100644 --- a/buildroot/package/linux-firmware/linux-firmware.hash +++ b/buildroot/package/linux-firmware/linux-firmware.hash @@ -1,8 +1,11 @@ # Locally calculated sha256 d253f7abb32e0407bcc840a5bddba1dc20190bb4a4bb6d40512f279fde384671 linux-firmware-65b1c68c63f974d72610db38dfae49861117cae2.tar.gz sha256 8116433f4004fc0c24d72b3d9e497808b724aa0e5e1cd63fc1bf66b715b1e2e9 LICENCE.Abilis +sha256 448a367f518ff62c0501ded89c3da03cd3b632aa05bf62b4d5b969b136476d96 LICENSE.amdgpu sha256 38f2037aa14631b4b29826d7a99379613c41a97064d1defdee30a7a022138b20 LICENCE.Marvell sha256 802b7014b26c606cf6248ae8b0ab1ce6d2d1b0db236d38dd269e676cd70710f2 LICENCE.atheros_firmware +sha256 3b5eb392b2d9d8c46d6aae26d06c187e5ea3029b12d13bc2b8deb8b3ce6bfa53 ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt +sha256 c565861ff7c42f5df98e15239241f1f42614e5e15f362094a2d3e8da724dc842 ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt sha256 b16056fc91b82a0e3e8de8f86c2dac98201aa9dc3cbd33e8d38f1b087fcec30d LICENCE.broadcom_bcm43xx sha256 a5777f9e80aca0603b0648454de996168b1c530322550ccda94d6d78bcf6c061 LICENCE.chelsio_firmware sha256 60fbc9cccb455e1a3306c97db942d6f24fa93664be61d54c497637e6d0e2ae83 LICENCE.fw_sst_0f28 @@ -25,3 +28,4 @@ sha256 be904cd28cb292b80cdb6cf412ab0d9159d431671e987ad433c1f62e0988a9bc LICENSE. sha256 fc6223d4bfe9f2f9e2eddc44b9fe5721d0caf49f01cb08d602906add686d8c6f LICENSE.radeon sha256 2bdd2e716f05d9737d3f9a20f9a3a3c0caee0e866100ddb0673f1178e42f92b9 LICENSE.sdma_firmware sha256 9703115e298649dfad003d7d3d55f4b2bd417e28f19e9cf6d5c6f9a906a2c4d9 WHENCE +sha256 fa43e1b9a13b341a07adca9dbe73d0f9072d7966fdfe811c01f0dd2872d7309a qcom/NOTICE.txt diff --git a/buildroot/package/linux-firmware/linux-firmware.mk b/buildroot/package/linux-firmware/linux-firmware.mk index 82680937aa1..46ab9d5ffec 100644 --- a/buildroot/package/linux-firmware/linux-firmware.mk +++ b/buildroot/package/linux-firmware/linux-firmware.mk @@ -14,6 +14,11 @@ 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 @@ -24,6 +29,16 @@ 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 + # Intel Wireless Bluetooth ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IBT),y) LINUX_FIRMWARE_FILES += intel/ibt-* @@ -143,6 +158,17 @@ LINUX_FIRMWARE_FILES += ath10k/QCA988X/hw2.0/board.bin \ LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware endif +# ath10k-qca6174 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA6174),y) +LINUX_FIRMWARE_FILES += ath10k/QCA6174/hw3.0/board.bin \ + ath10k/QCA6174/hw3.0/board-2.bin \ + ath10k/QCA6174/hw3.0/firmware-4.bin \ + ath10k/QCA6174/hw3.0/firmware-6.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware \ + ath10k/QCA6174/hw3.0/notice_ath10k_firmware-4.txt \ + ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt +endif + # sd8686 v8 ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_LIBERTAS_SD8686_V8),y) LINUX_FIRMWARE_FILES += libertas/sd8686_v8.bin libertas/sd8686_v8_helper.bin @@ -478,6 +504,7 @@ ifneq ($(LINUX_FIRMWARE_DIRS),) define LINUX_FIRMWARE_INSTALL_DIRS $(foreach d,$(LINUX_FIRMWARE_DIRS), \ rm -rf $(TARGET_DIR)/lib/firmware/$(d); \ + mkdir -p $(dir $(TARGET_DIR)/lib/firmware/$(d)); \ cp -a $(@D)/$(d) $(TARGET_DIR)/lib/firmware/$(d)$(sep)) endef endif diff --git a/buildroot/package/linux-headers/Config.in.host b/buildroot/package/linux-headers/Config.in.host index d74f267a2ed..c7640f1ab2e 100644 --- a/buildroot/package/linux-headers/Config.in.host +++ b/buildroot/package/linux-headers/Config.in.host @@ -6,7 +6,7 @@ config BR2_PACKAGE_HOST_LINUX_HEADERS choice prompt "Kernel Headers" default BR2_KERNEL_HEADERS_AS_KERNEL if BR2_LINUX_KERNEL - default BR2_KERNEL_HEADERS_4_15 + default BR2_KERNEL_HEADERS_4_16 help Select the kernel version to get headers from. @@ -67,6 +67,10 @@ config BR2_KERNEL_HEADERS_4_15 bool "Linux 4.15.x kernel headers" select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 +config BR2_KERNEL_HEADERS_4_16 + bool "Linux 4.16.x kernel headers" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16 + config BR2_KERNEL_HEADERS_VERSION bool "Manually specified Linux version" @@ -89,6 +93,10 @@ choice This is used to hide/show some packages that have strict requirements on the version of kernel headers. +config BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_16 + bool "4.16.x" + select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16 + config BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_15 bool "4.15.x" select BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15 @@ -240,14 +248,15 @@ endchoice config BR2_DEFAULT_KERNEL_HEADERS string - default "3.2.99" if BR2_KERNEL_HEADERS_3_2 - default "4.1.49" if BR2_KERNEL_HEADERS_4_1 - default "4.4.119" if BR2_KERNEL_HEADERS_4_4 - default "4.9.86" if BR2_KERNEL_HEADERS_4_9 + default "3.2.101" if BR2_KERNEL_HEADERS_3_2 + default "4.1.51" if BR2_KERNEL_HEADERS_4_1 + default "4.4.131" if BR2_KERNEL_HEADERS_4_4 + default "4.9.101" if BR2_KERNEL_HEADERS_4_9 default "4.10.17" if BR2_KERNEL_HEADERS_4_10 default "4.11.12" if BR2_KERNEL_HEADERS_4_11 default "4.12.14" if BR2_KERNEL_HEADERS_4_12 default "4.13.16" if BR2_KERNEL_HEADERS_4_13 - default "4.14.24" if BR2_KERNEL_HEADERS_4_14 - default "4.15.7" if BR2_KERNEL_HEADERS_4_15 + default "4.14.42" if BR2_KERNEL_HEADERS_4_14 + default "4.15.18" if BR2_KERNEL_HEADERS_4_15 + default "4.16.10" if BR2_KERNEL_HEADERS_4_16 default BR2_DEFAULT_KERNEL_VERSION if BR2_KERNEL_HEADERS_VERSION diff --git a/buildroot/package/linux-headers/linux-headers.mk b/buildroot/package/linux-headers/linux-headers.mk index f1e37906083..954c6b7978e 100644 --- a/buildroot/package/linux-headers/linux-headers.mk +++ b/buildroot/package/linux-headers/linux-headers.mk @@ -82,6 +82,9 @@ endif endif # ! BR2_KERNEL_HEADERS_AS_KERNEL +# linux-headers really is the same as the linux package +LINUX_HEADERS_DL_SUBDIR = linux + LINUX_HEADERS_LICENSE = GPL-2.0 LINUX_HEADERS_LICENSE_FILES = COPYING diff --git a/buildroot/package/linux-syscall-support/linux-syscall-support.mk b/buildroot/package/linux-syscall-support/linux-syscall-support.mk index b8145de496c..050c5058abb 100644 --- a/buildroot/package/linux-syscall-support/linux-syscall-support.mk +++ b/buildroot/package/linux-syscall-support/linux-syscall-support.mk @@ -25,5 +25,5 @@ define HOST_LINUX_SYSCALL_SUPPORT_INSTALL_CMDS $(HOST_DIR)/include/linux_syscall_support.h endef -$(eval $(host-generic-package)) $(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/linux-tools/Config.in b/buildroot/package/linux-tools/Config.in index e3ccd850f99..2527c90257b 100644 --- a/buildroot/package/linux-tools/Config.in +++ b/buildroot/package/linux-tools/Config.in @@ -7,7 +7,6 @@ config BR2_PACKAGE_LINUX_TOOLS config BR2_PACKAGE_LINUX_TOOLS_CPUPOWER bool "cpupower" - depends on !BR2_bfin # pciutils select BR2_PACKAGE_LINUX_TOOLS select BR2_PACKAGE_PCIUTILS help @@ -54,6 +53,19 @@ config BR2_PACKAGE_LINUX_TOOLS_PERF https://perf.wiki.kernel.org/ +if BR2_PACKAGE_LINUX_TOOLS_PERF + +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. + +endif + config BR2_PACKAGE_LINUX_TOOLS_SELFTESTS bool"selftests" depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash diff --git a/buildroot/package/linux-tools/linux-tool-perf.mk.in b/buildroot/package/linux-tools/linux-tool-perf.mk.in index 69492ba8da9..80e00c3c56e 100644 --- a/buildroot/package/linux-tools/linux-tool-perf.mk.in +++ b/buildroot/package/linux-tools/linux-tool-perf.mk.in @@ -22,7 +22,6 @@ PERF_MAKE_FLAGS = \ prefix=/usr \ WERROR=0 \ NO_LIBAUDIT=1 \ - NO_NEWT=1 \ NO_GTK2=1 \ NO_LIBPERL=1 \ NO_LIBPYTHON=1 \ @@ -59,10 +58,10 @@ ifeq ($(BR2_arc),y) PERF_MAKE_FLAGS += NO_BACKTRACE=1 endif -ifeq ($(BR2_PACKAGE_SLANG),y) +ifeq ($(BR2_PACKAGE_LINUX_TOOLS_PERF_TUI),y) PERF_DEPENDENCIES += slang else -PERF_MAKE_FLAGS += NO_SLANG=1 +PERF_MAKE_FLAGS += NO_NEWT=1 NO_SLANG=1 endif ifeq ($(BR2_PACKAGE_LIBUNWIND),y) @@ -128,6 +127,13 @@ define PERF_BUILD_CMDS 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 diff --git a/buildroot/package/llvm/0001-Fix-return-type-in-ORC-readMem-client-interface.patch b/buildroot/package/llvm/0001-Fix-return-type-in-ORC-readMem-client-interface.patch new file mode 100644 index 00000000000..0343b4c7e8b --- /dev/null +++ b/buildroot/package/llvm/0001-Fix-return-type-in-ORC-readMem-client-interface.patch @@ -0,0 +1,37 @@ +From 72ea6ea635d5b5a88f411710daf7e1d340d232d8 Mon Sep 17 00:00:00 2001 +From: Tilmann Scheller +Date: Thu, 1 Feb 2018 11:40:01 -0600 +Subject: [PATCH] Fix return type in ORC readMem() client interface. + +GCC 8.0.1 detects the type mismatch and causes the compilation to fail. Clang +and earlier versions of GCC don't detect the issue. + +Fixes rhbz#1540620. + +This patch was taken from llvm5.0-5.0.1-7.fc28.src.rpm + +Link to bug: https://bugzilla.redhat.com/show_bug.cgi?id=1540620 + +Signed-off-by: Valentin Korenblit +--- + include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h b/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h +index da02250ba16..bed472e2e0e 100644 +--- a/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h ++++ b/include/llvm/ExecutionEngine/Orc/OrcRemoteTargetClient.h +@@ -713,8 +713,8 @@ private: + + uint32_t getTrampolineSize() const { return RemoteTrampolineSize; } + +- Expected> readMem(char *Dst, JITTargetAddress Src, +- uint64_t Size) { ++ Expected> readMem(char *Dst, JITTargetAddress Src, ++ uint64_t Size) { + // Check for an 'out-of-band' error, e.g. from an MM destructor. + if (ExistingError) + return std::move(ExistingError); +-- +2.14.3 + diff --git a/buildroot/package/llvm/Config.in b/buildroot/package/llvm/Config.in new file mode 100644 index 00000000000..83e94660eb6 --- /dev/null +++ b/buildroot/package/llvm/Config.in @@ -0,0 +1,48 @@ +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 + +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 + +config BR2_PACKAGE_LLVM + bool "llvm" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on BR2_HOST_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # std::wstring + 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. + +endif + +comment "llvm needs a toolchain w/ wchar, threads, C++, gcc >= 4.8, host gcc >= 4.8, dynamic library" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_HOST_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \ + || BR2_STATIC_LIBS || !BR2_USE_WCHAR + +comment "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/buildroot/package/llvm/llvm.hash b/buildroot/package/llvm/llvm.hash new file mode 100644 index 00000000000..14f8bb44880 --- /dev/null +++ b/buildroot/package/llvm/llvm.hash @@ -0,0 +1,3 @@ +# locally calculated +sha256 d522eda97835a9c75f0b88ddc81437e5edbb87dc2740686cb8647763855c2b3c llvm-5.0.2.src.tar.xz +sha256 abd4d8794808bacb1eb6924d49efafd9ab6eef88faaaeb5d3cfa13ee3670d672 LICENSE.TXT diff --git a/buildroot/package/llvm/llvm.mk b/buildroot/package/llvm/llvm.mk new file mode 100644 index 00000000000..3abf4289898 --- /dev/null +++ b/buildroot/package/llvm/llvm.mk @@ -0,0 +1,277 @@ +################################################################################ +# +# llvm +# +################################################################################ + +LLVM_VERSION = 5.0.2 +LLVM_SITE = http://llvm.org/releases/$(LLVM_VERSION) +LLVM_SOURCE = llvm-$(LLVM_VERSION).src.tar.xz +LLVM_LICENSE = NCSA +LLVM_LICENSE_FILES = LICENSE.TXT +LLVM_SUPPORTS_IN_SOURCE_BUILD = NO +LLVM_INSTALL_STAGING = YES + +# http://llvm.org/docs/GettingStarted.html#software +# host-python: Python interpreter 2.7 or newer is required for builds and testing. +HOST_LLVM_DEPENDENCIES = host-python +LLVM_DEPENDENCIES = host-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" + +# Disable experimental Global Instruction Selection support. +# https://llvm.org/docs/GlobalISel.html +HOST_LLVM_CONF_OPTS += -DLLVM_BUILD_GLOBAL_ISEL=OFF +LLVM_CONF_OPTS += -DLLVM_BUILD_GLOBAL_ISEL=OFF + +# Get target architecture +LLVM_TARGET_ARCH = $(call qstrip,$(BR2_PACKAGE_LLVM_TARGET_ARCH)) + +# Build backend for target architecture. This include backends like AMDGPU. +LLVM_TARGETS_TO_BUILD = $(LLVM_TARGET_ARCH) +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 + +# Use native llvm-tblgen from host-llvm (needed for cross-compilation) +LLVM_CONF_OPTS += -DLLVM_TABLEGEN=$(HOST_DIR)/bin/llvm-tblgen + +# 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 + +# 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 + +# Disable C++1y (ISO C++ 2014 standard) +# Disable C++1z (ISO C++ 2017 standard) +# Compile llvm with the C++11 (ISO C++ 2011 standard) which is the fallback. +HOST_LLVM_CONF_OPTS += \ + -DLLVM_ENABLE_CXX1Y=OFF \ + -DLLVM_ENABLE_CXX1Z=OFF +LLVM_CONF_OPTS += \ + -DLLVM_ENABLE_CXX1Y=OFF \ + -DLLVM_ENABLE_CXX1Z=OFF + +# 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) + +# The Go bindings have no CMake rules at the moment, but better remove the +# check preventively. Building the Go and OCaml bindings is yet unsupported. +HOST_LLVM_CONF_OPTS += \ + -DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND \ + -DOCAMLFIND=OCAMLFIND-NOTFOUND + +# 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 \ + -DLLVM_BUILD_TOOLS=OFF + +# 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 \ + -DLLVM_POLLY_BUILD=OFF +LLVM_CONF_OPTS += \ + -DLLVM_BUILD_EXTERNAL_COMPILER_RT=OFF \ + -DLLVM_BUILD_RUNTIME=OFF \ + -DLLVM_INCLUDE_RUNTIMES=OFF \ + -DLLVM_POLLY_BUILD=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 +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 + +# 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 HOST_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 = HOST_LLVM_COPY_LLVM_CONFIG_TO_STAGING_DIR + +# 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/buildroot/package/log4cplus/Config.in b/buildroot/package/log4cplus/Config.in index 8a112a4e8f9..fd224dd2704 100644 --- a/buildroot/package/log4cplus/Config.in +++ b/buildroot/package/log4cplus/Config.in @@ -3,6 +3,8 @@ config BR2_PACKAGE_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_7 # 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 @@ -11,5 +13,9 @@ config BR2_PACKAGE_LOG4CPLUS http://sourceforge.net/projects/log4cplus -comment "log4cplus needs a toolchain w/ C++, wchar, threads" - depends on !(BR2_INSTALL_LIBSTDCPP && BR2_USE_WCHAR && BR2_TOOLCHAIN_HAS_THREADS) +comment "log4cplus needs a toolchain w/ C++, wchar, threads, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + +comment "log4cplus needs a toolchain not affected by GCC bug 64735" + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_64735 diff --git a/buildroot/package/log4cplus/log4cplus.hash b/buildroot/package/log4cplus/log4cplus.hash index 395e9fe5357..2f1d24a8557 100644 --- a/buildroot/package/log4cplus/log4cplus.hash +++ b/buildroot/package/log4cplus/log4cplus.hash @@ -1,2 +1,3 @@ # Locally computed: -sha256 999427580cded403b4edc8a85088621f27493c489f08b9f564fb5fe76c16a883 log4cplus-1.1.2.tar.xz +sha256 8c85e769c3dbec382ed4db91f15e5bc24ba979f810262723781f2fc596339bf4 log4cplus-2.0.0.tar.xz +sha256 91d7e42ff80e74c4c94e5ad353375fa0358cd0abbf43f5fe957097cdbd4e2c4d LICENSE diff --git a/buildroot/package/log4cplus/log4cplus.mk b/buildroot/package/log4cplus/log4cplus.mk index 292fa66d49e..890d2ee8f5f 100644 --- a/buildroot/package/log4cplus/log4cplus.mk +++ b/buildroot/package/log4cplus/log4cplus.mk @@ -4,10 +4,10 @@ # ################################################################################ -LOG4CPLUS_VERSION = 1.1.2 +LOG4CPLUS_VERSION = 2.0.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 +LOG4CPLUS_LICENSE = Apache-2.0, BSD-2-Clause, BSD-like (threadpool) LOG4CPLUS_LICENSE_FILES = LICENSE LOG4CPLUS_INSTALL_STAGING = YES diff --git a/buildroot/package/lshw/Config.in b/buildroot/package/lshw/Config.in index 3caac66c72c..5e0e47b6e2e 100644 --- a/buildroot/package/lshw/Config.in +++ b/buildroot/package/lshw/Config.in @@ -2,6 +2,9 @@ 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_USB_IDS help lshw (Hardware Lister) is a small tool to provide detailed information on the hardware configuration of the diff --git a/buildroot/package/lshw/lshw.mk b/buildroot/package/lshw/lshw.mk index 9b52b091675..4195c073e2f 100644 --- a/buildroot/package/lshw/lshw.mk +++ b/buildroot/package/lshw/lshw.mk @@ -23,6 +23,7 @@ endef define LSHW_INSTALL_TARGET_CMDS $(LSHW_MAKE_ENV) $(MAKE) -C $(@D)/src DESTDIR=$(TARGET_DIR) \ $(LSHW_MAKE_OPTS) install + $(RM) -rf $(TARGET_DIR)/usr/share/lshw endef $(eval $(generic-package)) diff --git a/buildroot/package/lsof/lsof.mk b/buildroot/package/lsof/lsof.mk index e5cd4bce6eb..0dc8e2de2f3 100644 --- a/buildroot/package/lsof/lsof.mk +++ b/buildroot/package/lsof/lsof.mk @@ -32,7 +32,7 @@ endif # The .tar.bz2 contains another .tar, which contains the source code. define LSOF_EXTRACT_CMDS - $(call suitable-extractor,$(LSOF_SOURCE)) $(DL_DIR)/$(LSOF_SOURCE) | \ + $(call suitable-extractor,$(LSOF_SOURCE)) $(LSOF_DL_DIR)/$(LSOF_SOURCE) | \ $(TAR) -O $(TAR_OPTIONS) - lsof_$(LSOF_VERSION)/lsof_$(LSOF_VERSION)_src.tar | \ $(TAR) --strip-components=1 -C $(LSOF_DIR) $(TAR_OPTIONS) - endef diff --git a/buildroot/package/ltp-testsuite/ltp-testsuite.mk b/buildroot/package/ltp-testsuite/ltp-testsuite.mk index c47f587836b..f5ea4344edc 100644 --- a/buildroot/package/ltp-testsuite/ltp-testsuite.mk +++ b/buildroot/package/ltp-testsuite/ltp-testsuite.mk @@ -10,16 +10,8 @@ LTP_TESTSUITE_SITE = https://github.com/linux-test-project/ltp/releases/download LTP_TESTSUITE_LICENSE = GPL-2.0, GPL-2.0+ LTP_TESTSUITE_LICENSE_FILES = COPYING -# Do not enable Open POSIX testsuite as it doesn't cross-compile -# properly: t0 program is built for the host machine. Notice that due -# to a bug, --without-open-posix-testsuite actually enables the test -# suite. -# See https://github.com/linux-test-project/ltp/issues/143 (invalid -# autoconf test) and -# https://github.com/linux-test-project/ltp/issues/144 (Open POSIX -# testsuite not cross-compiling). LTP_TESTSUITE_CONF_OPTS += \ - --with-realtime-testsuite + --with-realtime-testsuite --with-open-posix-testsuite ifeq ($(BR2_LINUX_KERNEL),y) LTP_TESTSUITE_DEPENDENCIES += linux diff --git a/buildroot/package/ltrace/Config.in b/buildroot/package/ltrace/Config.in index 4d5fb723d62..2defbe28a0c 100644 --- a/buildroot/package/ltrace/Config.in +++ b/buildroot/package/ltrace/Config.in @@ -1,14 +1,20 @@ +config BR2_PACKAGE_LTRACE_ARCH_SUPPORTS + bool + 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_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils - # ltrace normally has mips/mipsel support, but it's currently - # broken (error: 'struct ltelf' has no member named - # 'relplt_count'). Issue reported upstream at - # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=756764. - depends on (BR2_i386 || BR2_arm || BR2_mips || BR2_mipsel \ - || BR2_powerpc || BR2_sparc || BR2_x86_64 || BR2_xtensa) + depends on BR2_PACKAGE_LTRACE_ARCH_SUPPORTS select BR2_PACKAGE_ELFUTILS help Debugging program which runs a specified command until it @@ -19,5 +25,6 @@ config BR2_PACKAGE_LTRACE http://ltrace.org comment "ltrace needs a uClibc or glibc toolchain w/ wchar, dynamic library" + depends on BR2_PACKAGE_LTRACE_ARCH_SUPPORTS depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS \ || !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) diff --git a/buildroot/package/lua-ev/Config.in b/buildroot/package/lua-ev/Config.in index 0cb4c22a920..52f82e11288 100644 --- a/buildroot/package/lua-ev/Config.in +++ b/buildroot/package/lua-ev/Config.in @@ -1,7 +1,6 @@ config BR2_PACKAGE_LUA_EV bool "lua-ev" depends on BR2_PACKAGE_HAS_LUAINTERPRETER - depends on !BR2_bfin # libev select BR2_PACKAGE_LIBEV help Get access to the libev library from Lua. diff --git a/buildroot/package/lua/lua.mk b/buildroot/package/lua/lua.mk index 0ac2e0e25d7..851dc8f734a 100644 --- a/buildroot/package/lua/lua.mk +++ b/buildroot/package/lua/lua.mk @@ -16,10 +16,10 @@ endif LUA_SITE = http://www.lua.org/ftp LUA_INSTALL_STAGING = YES LUA_LICENSE = MIT -ifeq ($(BR2_PACKAGE_LUA_5_1),y) -LUA_LICENSE_FILES = COPYRIGHT -else +ifeq ($(BR2_PACKAGE_LUA_5_2)$(BR2_PACKAGE_LUA_5_3),y) LUA_LICENSE_FILES = doc/readme.html +else +LUA_LICENSE_FILES = COPYRIGHT endif LUA_PROVIDES = luainterpreter diff --git a/buildroot/package/luainterpreter/Config.in b/buildroot/package/luainterpreter/Config.in index e89a9b84d2d..7bc54d862fa 100644 --- a/buildroot/package/luainterpreter/Config.in +++ b/buildroot/package/luainterpreter/Config.in @@ -7,3 +7,7 @@ config BR2_PACKAGE_PROVIDES_LUAINTERPRETER config BR2_PACKAGE_LUAINTERPRETER_ABI_VERSION string + +config BR2_PACKAGE_PROVIDES_HOST_LUAINTERPRETER + string + default "host-lua" diff --git a/buildroot/package/luainterpreter/luainterpreter.mk b/buildroot/package/luainterpreter/luainterpreter.mk index cb1d5dde18a..58d421b183e 100644 --- a/buildroot/package/luainterpreter/luainterpreter.mk +++ b/buildroot/package/luainterpreter/luainterpreter.mk @@ -20,4 +20,4 @@ endif $(eval $(virtual-package)) $(eval $(host-virtual-package)) -LUA_RUN = $(HOST_DIR)/bin/$(call qstrip,$(BR2_PACKAGE_PROVIDES_LUAINTERPRETER)) +LUA_RUN = $(HOST_DIR)/bin/lua diff --git a/buildroot/package/luarocks/luarocks.hash b/buildroot/package/luarocks/luarocks.hash index 27845a46c47..7c3f96606fd 100644 --- a/buildroot/package/luarocks/luarocks.hash +++ b/buildroot/package/luarocks/luarocks.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 4d414d32fed5bb121c72d3ff1280b7f2dc9027a9bc012e41dfbffd5b519b362e luarocks-2.4.3.tar.gz +sha256 3938df33de33752ff2c526e604410af3dceb4b7ff06a770bc4a240de80a1f934 luarocks-2.4.4.tar.gz diff --git a/buildroot/package/luarocks/luarocks.mk b/buildroot/package/luarocks/luarocks.mk index e050cb553cc..63d908a416f 100644 --- a/buildroot/package/luarocks/luarocks.mk +++ b/buildroot/package/luarocks/luarocks.mk @@ -4,7 +4,7 @@ # ################################################################################ -LUAROCKS_VERSION = 2.4.3 +LUAROCKS_VERSION = 2.4.4 LUAROCKS_SITE = http://luarocks.org/releases LUAROCKS_LICENSE = MIT LUAROCKS_LICENSE_FILES = COPYING @@ -23,10 +23,6 @@ HOST_LUAROCKS_CONF_OPTS = \ --sysconfdir=$(LUAROCKS_CONFIG_DIR) \ --with-lua=$(HOST_DIR) -ifeq ($(BR2_PACKAGE_LUAJIT),y) -HOST_LUAROCKS_CONF_OPTS += --lua-suffix=jit -endif - define HOST_LUAROCKS_CONFIGURE_CMDS cd $(@D) && ./configure $(HOST_LUAROCKS_CONF_OPTS) endef diff --git a/buildroot/package/lxc/0001-Fix-compilation-on-toolchain-without-prlimit.patch b/buildroot/package/lxc/0001-Fix-compilation-on-toolchain-without-prlimit.patch deleted file mode 100644 index 031f77539f9..00000000000 --- a/buildroot/package/lxc/0001-Fix-compilation-on-toolchain-without-prlimit.patch +++ /dev/null @@ -1,98 +0,0 @@ -From f48b5fd8ab03c200eaf5e3a9b03bcd01b2659cf3 Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Thu, 2 Nov 2017 16:00:33 +0100 -Subject: [PATCH] Fix compilation on toolchain without prlimit - -Some toolchains which are not bionic like uclibc does not support -prlimit or prlimit64. In this case, return an error. -Moreover, if prlimit64 is available, use lxc implementation of prlimit. - -Signed-off-by: Fabrice Fontaine ---- - configure.ac | 4 ++++ - src/lxc/Makefile.am | 6 ++++++ - src/lxc/conf.c | 12 +++++++++--- - 3 files changed, 19 insertions(+), 3 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 642b78e7..63df7466 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -671,6 +671,10 @@ AC_CHECK_FUNCS([prlimit], - AM_CONDITIONAL(HAVE_PRLIMIT, true) - AC_DEFINE(HAVE_PRLIMIT,1,[Have prlimit]), - AM_CONDITIONAL(HAVE_PRLIMIT, false)) -+AC_CHECK_FUNCS([prlimit64], -+ AM_CONDITIONAL(HAVE_PRLIMIT64, true) -+ AC_DEFINE(HAVE_PRLIMIT64,1,[Have prlimit64]), -+ AM_CONDITIONAL(HAVE_PRLIMIT64, false)) - - # Check for some libraries - AC_SEARCH_LIBS(sem_open, [rt pthread]) -diff --git a/src/lxc/Makefile.am b/src/lxc/Makefile.am -index fff32ae4..8f0c11ec 100644 ---- a/src/lxc/Makefile.am -+++ b/src/lxc/Makefile.am -@@ -45,7 +45,10 @@ noinst_HEADERS += \ - ../include/ifaddrs.h \ - ../include/openpty.h \ - ../include/lxcmntent.h -+endif -+ - if !HAVE_PRLIMIT -+if HAVE_PRLIMIT64 - noinst_HEADERS += ../include/prlimit.h - endif - endif -@@ -143,7 +146,10 @@ liblxc_la_SOURCES += \ - ../include/ifaddrs.c ../include/ifaddrs.h \ - ../include/openpty.c ../include/openpty.h \ - ../include/lxcmntent.c ../include/lxcmntent.h -+endif -+ - if !HAVE_PRLIMIT -+if HAVE_PRLIMIT64 - liblxc_la_SOURCES += ../include/prlimit.c ../include/prlimit.h - endif - endif -diff --git a/src/lxc/conf.c b/src/lxc/conf.c -index 44d97843..8a66f2d0 100644 ---- a/src/lxc/conf.c -+++ b/src/lxc/conf.c -@@ -97,13 +97,14 @@ - - #if IS_BIONIC - #include <../include/lxcmntent.h> --#ifndef HAVE_PRLIMIT --#include <../include/prlimit.h> --#endif - #else - #include - #endif - -+#if !defined(HAVE_PRLIMIT) && defined(HAVE_PRLIMIT64) -+#include <../include/prlimit.h> -+#endif -+ - lxc_log_define(lxc_conf, lxc); - - #if HAVE_LIBCAP -@@ -2399,10 +2400,15 @@ int setup_resource_limits(struct lxc_list *limits, pid_t pid) { - return -1; - } - -+#if HAVE_PRLIMIT || HAVE_PRLIMIT64 - if (prlimit(pid, resid, &lim->limit, NULL) != 0) { - ERROR("failed to set limit %s: %s", lim->resource, strerror(errno)); - return -1; - } -+#else -+ ERROR("Cannot set limit %s as prlimit is missing", lim->resource); -+ return -1; -+#endif - } - return 0; - } --- -2.14.1 - diff --git a/buildroot/package/lxc/0001-lxc-tools-lxc_monitor-include-missing-stddef.h.patch b/buildroot/package/lxc/0001-lxc-tools-lxc_monitor-include-missing-stddef.h.patch new file mode 100644 index 00000000000..525d5d72b02 --- /dev/null +++ b/buildroot/package/lxc/0001-lxc-tools-lxc_monitor-include-missing-stddef.h.patch @@ -0,0 +1,40 @@ +From 77d407537f57c3fb92787bdda1eeaec7941d344f Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Fri, 20 Apr 2018 12:26:33 +0200 +Subject: [PATCH] lxc/tools/lxc_monitor: include missing +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +lxc_monitor.c uses offsetof(), so it should include +. Otherwise the build fails with the musl C library: + +tools/lxc_monitor.c: In function 窶詫xc_abstract_unix_connect窶: +tools/lxc_monitor.c:324:9: warning: implicit declaration of function 窶椀ffsetof窶 [-Wimplicit-function-declaration] + offsetof(struct sockaddr_un, sun_path) + len + 1); + ^~~~~~~~ +tools/lxc_monitor.c:324:18: error: expected expression before 窶struct窶 + offsetof(struct sockaddr_un, sun_path) + len + 1); + ^~~~~~ + +Signed-off-by: Thomas Petazzoni +Upstream-status: https://github.com/lxc/lxc/pull/2285 +--- + src/lxc/tools/lxc_monitor.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/lxc/tools/lxc_monitor.c b/src/lxc/tools/lxc_monitor.c +index 72dca8e2..c60e14ff 100644 +--- a/src/lxc/tools/lxc_monitor.c ++++ b/src/lxc/tools/lxc_monitor.c +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + #include + #include + #include +-- +2.14.3 + diff --git a/buildroot/package/lxc/0002-Fix-compilation-with-static-libcap-and-shared-gnutls.patch b/buildroot/package/lxc/0002-Fix-compilation-with-static-libcap-and-shared-gnutls.patch new file mode 100644 index 00000000000..04837b3eefd --- /dev/null +++ b/buildroot/package/lxc/0002-Fix-compilation-with-static-libcap-and-shared-gnutls.patch @@ -0,0 +1,73 @@ +From 49bc916b1daa79cffe38fae32059bcdd985c8c8e Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Sat, 7 Apr 2018 15:48:46 +0200 +Subject: [PATCH] Fix compilation with static libcap and shared gnutls + +Commit c06ed219c47098f34485d408410b6ecc94a40877 has broken +compilation with a static libcap and a shared gnutls. +This results in a build failure on init_lxc_static if gnutls is +a shared library as init_lxc_static is built with -all-static option +(see src/lxc/Makefile.am) and AC_CHECK_LIB adds gnutls to LIBS. + +This commit fix the issue by removing default behavior of AC_CHECK_LIB +and handling manually GNUTLS_LIBS and HAVE_LIBGNUTLS + +Fixes: + - http://autobuild.buildroot.net/results/b655d6853c25a195df28d91512b3ffb6c654fc90 + +Signed-off-by: Fabrice Fontaine +Upstream-status: https://github.com/lxc/lxc/commit/49bc916b1daa79cffe38fae32059bcdd985c8c8e +--- + configure.ac | 2 +- + src/lxc/Makefile.am | 8 ++++++-- + 2 files changed, 7 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 50c99836..2467bb54 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -263,7 +263,7 @@ AM_CONDITIONAL([ENABLE_GNUTLS], [test "x$enable_gnutls" = "xyes"]) + + AM_COND_IF([ENABLE_GNUTLS], + [AC_CHECK_HEADER([gnutls/gnutls.h],[],[AC_MSG_ERROR([You must install the GnuTLS development package in order to compile lxc])]) +- AC_CHECK_LIB([gnutls], [gnutls_hash_fast],[],[AC_MSG_ERROR([You must install the GnuTLS development package in order to compile lxc])]) ++ AC_CHECK_LIB([gnutls], [gnutls_hash_fast],[true],[AC_MSG_ERROR([You must install the GnuTLS development package in order to compile lxc])]) + AC_SUBST([GNUTLS_LIBS], [-lgnutls])]) + + # SELinux +diff --git a/src/lxc/Makefile.am b/src/lxc/Makefile.am +index c8d76836..0662d83d 100644 +--- a/src/lxc/Makefile.am ++++ b/src/lxc/Makefile.am +@@ -175,6 +175,10 @@ if ENABLE_APPARMOR + AM_CFLAGS += -DHAVE_APPARMOR + endif + ++if ENABLE_GNUTLS ++AM_CFLAGS += -DHAVE_LIBGNUTLS ++endif ++ + if ENABLE_SELINUX + AM_CFLAGS += -DHAVE_SELINUX + endif +@@ -196,7 +200,7 @@ liblxc_la_LDFLAGS = \ + -Wl,-soname,liblxc.so.$(firstword $(subst ., ,@LXC_ABI@)) \ + -version-info @LXC_ABI_MAJOR@ + +-liblxc_la_LIBADD = $(CAP_LIBS) $(SELINUX_LIBS) $(SECCOMP_LIBS) ++liblxc_la_LIBADD = $(CAP_LIBS) $(GNUTLS_LIBS) $(SELINUX_LIBS) $(SECCOMP_LIBS) + + bin_SCRIPTS= + +@@ -243,7 +247,7 @@ AM_LDFLAGS = -Wl,-E + if ENABLE_RPATH + AM_LDFLAGS += -Wl,-rpath -Wl,$(libdir) + endif +-LDADD=liblxc.la @CAP_LIBS@ @SELINUX_LIBS@ @SECCOMP_LIBS@ ++LDADD=liblxc.la @CAP_LIBS@ @GNUTLS_LIBS@ @SELINUX_LIBS@ @SECCOMP_LIBS@ + + if ENABLE_TOOLS + lxc_attach_SOURCES = tools/lxc_attach.c tools/arguments.c tools/tool_utils.c +-- +2.14.1 + diff --git a/buildroot/package/lxc/0002-lxc-start.c-Fix-legacy-PR_-G-S-ET_NO_NEW_PRIVS-handl.patch b/buildroot/package/lxc/0002-lxc-start.c-Fix-legacy-PR_-G-S-ET_NO_NEW_PRIVS-handl.patch deleted file mode 100644 index a11f785002f..00000000000 --- a/buildroot/package/lxc/0002-lxc-start.c-Fix-legacy-PR_-G-S-ET_NO_NEW_PRIVS-handl.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 995accccbb07d59381aa60939cd44b41dc092dda Mon Sep 17 00:00:00 2001 -From: Peter Korsgaard -Date: Mon, 6 Nov 2017 09:35:48 +0100 -Subject: [PATCH] lxc/start.c: Fix legacy PR_{G,S}ET_NO_NEW_PRIVS handling -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The configure checks for these use AC_CHECK_DECLS, which define the symbol -to 0 if not available - So adjust the code to match. From the autoconf -manual: - -https://www.gnu.org/software/autoconf/manual/autoconf-2.65/html_node/Generic-Declarations.html) - -For each of the symbols (comma-separated list), define HAVE_DECL_symbol (in -all capitals) to 窶1窶 if symbol is declared, otherwise to 窶0窶. - -[Submitted upstream: https://github.com/lxc/lxc/pull/1901] -Signed-off-by: Peter Korsgaard ---- - src/lxc/start.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/lxc/start.c b/src/lxc/start.c -index 2632a9b1..fe76b235 100644 ---- a/src/lxc/start.c -+++ b/src/lxc/start.c -@@ -52,15 +52,15 @@ - #include - #endif - --#ifndef HAVE_DECL_PR_CAPBSET_DROP -+#if !HAVE_DECL_PR_CAPBSET_DROP - #define PR_CAPBSET_DROP 24 - #endif - --#ifndef HAVE_DECL_PR_SET_NO_NEW_PRIVS -+#if !HAVE_DECL_PR_SET_NO_NEW_PRIVS - #define PR_SET_NO_NEW_PRIVS 38 - #endif - --#ifndef HAVE_DECL_PR_GET_NO_NEW_PRIVS -+#if !HAVE_DECL_PR_GET_NO_NEW_PRIVS - #define PR_GET_NO_NEW_PRIVS 39 - #endif - --- -2.11.0 - diff --git a/buildroot/package/lxc/lxc.hash b/buildroot/package/lxc/lxc.hash index d8526e93a3a..e2f91085076 100644 --- a/buildroot/package/lxc/lxc.hash +++ b/buildroot/package/lxc/lxc.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 68663a67450a8d6734e137eac54cc7077209fb15c456eec401a2c26e6386eff6 lxc-2.1.1.tar.gz +sha256 6230224c27f050201b372b18a9f39cd220ed584899c5f0cf73c6b313dabc8d8a lxc-3.0.0.tar.gz sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/buildroot/package/lxc/lxc.mk b/buildroot/package/lxc/lxc.mk index a65c1666649..5a7038f88fb 100644 --- a/buildroot/package/lxc/lxc.mk +++ b/buildroot/package/lxc/lxc.mk @@ -4,17 +4,15 @@ # ################################################################################ -LXC_VERSION = 2.1.1 +LXC_VERSION = 3.0.0 LXC_SITE = https://linuxcontainers.org/downloads/lxc LXC_LICENSE = LGPL-2.1+ LXC_LICENSE_FILES = COPYING LXC_DEPENDENCIES = host-pkgconf LXC_INSTALL_STAGING = YES -# We're patching configure.ac -LXC_AUTORECONF = YES LXC_CONF_OPTS = --disable-apparmor --with-distro=buildroot \ - --disable-python --disable-werror \ + --disable-werror \ $(if $(BR2_PACKAGE_BASH),,--disable-bash) ifeq ($(BR2_PACKAGE_GNUTLS),y) @@ -45,15 +43,4 @@ else LXC_CONF_OPTS += --disable-selinux endif -ifeq ($(BR2_PACKAGE_HAS_LUAINTERPRETER),y) -LXC_CONF_OPTS += --enable-lua -LXC_DEPENDENCIES += luainterpreter -ifeq ($(BR2_PACKAGE_LUAJIT),y) -# By default, lxc will only search for lua.pc -LXC_CONF_OPTS += --with-lua-pc=luajit -endif -else -LXC_CONF_OPTS += --disable-lua -endif - $(eval $(autotools-package)) diff --git a/buildroot/package/lynx/0001-src-chrtrans-don-t-build-host-tools-with-target-LDFL.patch b/buildroot/package/lynx/0001-src-chrtrans-don-t-build-host-tools-with-target-LDFL.patch new file mode 100644 index 00000000000..cc057cee13e --- /dev/null +++ b/buildroot/package/lynx/0001-src-chrtrans-don-t-build-host-tools-with-target-LDFL.patch @@ -0,0 +1,41 @@ +From bb47abe9e7996147f6b7b325f5c9b2143abf8f13 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 7 May 2018 22:00:52 +0200 +Subject: [PATCH] src/chrtrans: don't build host tools with target LDFLAGS + +In a cross-compilation context, the LDFLAGS variable contains linker +flags used when building things for the target. However, the makeuctb +tool is built for the host machine, and therefore should not use the +same LDFLAGS as the target, which is why BUILD_LDFLAGS exist. + +Using LDFLAGS when building a tool for the host can cause problems +when some flags in LDFLAGS are not supported by the host machine. For +example, if you're linking statically lynx for the target, but the +build machine does not support static linking: + +gcc -I../.. -I../../src -I../../src/chrtrans -I../../WWW/Library/Implementation -I../../ -static -o makeuctb makeuctb.o +/usr/bin/ld: cannot find -lc +collect2: error: ld returned 1 exit status + +Signed-off-by: Thomas Petazzoni +Upstream-status: submitted on the mailing list +--- + src/chrtrans/makefile.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/chrtrans/makefile.in b/src/chrtrans/makefile.in +index aab358f..6e0ef03 100644 +--- a/src/chrtrans/makefile.in ++++ b/src/chrtrans/makefile.in +@@ -123,7 +123,7 @@ OBJS = makeuctb$o + C_SRC = $(OBJS:$o=.c) + + $(MAKEUCTB) : $(OBJS) +- $(BUILD_CC) $(CC_OPTS) $(LDFLAGS) $(BUILD_LDFLAGS) -o $@ $(OBJS) $(INTLLIB) $(BUILD_LIBS) ++ $(BUILD_CC) $(CC_OPTS) $(BUILD_LDFLAGS) -o $@ $(OBJS) $(INTLLIB) $(BUILD_LIBS) + + makeuctb$o : $(srcdir)/UCkd.h $(srcdir)/makeuctb.c + +-- +2.14.3 + diff --git a/buildroot/package/lz4/0001-use-more-restrictive-conditions-for-clock_gettime.patch b/buildroot/package/lz4/0001-use-more-restrictive-conditions-for-clock_gettime.patch new file mode 100644 index 00000000000..678f16abb77 --- /dev/null +++ b/buildroot/package/lz4/0001-use-more-restrictive-conditions-for-clock_gettime.patch @@ -0,0 +1,58 @@ +From 7dba09af47dd3daa1562a6332a643a1a59dba4a8 Mon Sep 17 00:00:00 2001 +From: Yann Collet +Date: Tue, 16 Jan 2018 10:21:37 -0800 +Subject: [PATCH] use more restrictive conditions for clock_gettime() + +Signed-off-by: Baruch Siach +--- +Upstream status: commit 7dba09af47dd3 + + programs/util.h | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/programs/util.h b/programs/util.h +index fc7f63e8140e..a3576d7e3a57 100644 +--- a/programs/util.h ++++ b/programs/util.h +@@ -141,6 +141,7 @@ extern "C" { + * Time functions + ******************************************/ + #if defined(_WIN32) /* Windows */ ++ + typedef LARGE_INTEGER UTIL_time_t; + UTIL_STATIC UTIL_time_t UTIL_getTime(void) { UTIL_time_t x; QueryPerformanceCounter(&x); return x; } + UTIL_STATIC U64 UTIL_getSpanTimeMicro(UTIL_time_t clockStart, UTIL_time_t clockEnd) +@@ -165,7 +166,9 @@ extern "C" { + } + return 1000000000ULL*(clockEnd.QuadPart - clockStart.QuadPart)/ticksPerSecond.QuadPart; + } ++ + #elif defined(__APPLE__) && defined(__MACH__) ++ + #include + typedef U64 UTIL_time_t; + UTIL_STATIC UTIL_time_t UTIL_getTime(void) { return mach_absolute_time(); } +@@ -189,7 +192,9 @@ extern "C" { + } + return ((clockEnd - clockStart) * (U64)rate.numer) / ((U64)rate.denom); + } +-#elif (PLATFORM_POSIX_VERSION >= 200112L) ++ ++#elif (PLATFORM_POSIX_VERSION >= 200112L) && (defined __UCLIBC__ || ((__GLIBC__ == 2 && __GLIBC_MINOR__ >= 17) || __GLIBC__ > 2)) ++ + #include + typedef struct timespec UTIL_time_t; + UTIL_STATIC UTIL_time_t UTIL_getTime(void) +@@ -227,7 +232,9 @@ extern "C" { + nano += diff.tv_nsec; + return nano; + } ++ + #else /* relies on standard C (note : clock_t measurements can be wrong when using multi-threading) */ ++ + typedef clock_t UTIL_time_t; + UTIL_STATIC UTIL_time_t UTIL_getTime(void) { return clock(); } + UTIL_STATIC U64 UTIL_getSpanTimeMicro(UTIL_time_t clockStart, UTIL_time_t clockEnd) { return 1000000ULL * (clockEnd - clockStart) / CLOCKS_PER_SEC; } +-- +2.17.0 + diff --git a/buildroot/package/lz4/0002-lib-allow-to-disable-shared-libraries.patch b/buildroot/package/lz4/0002-lib-allow-to-disable-shared-libraries.patch new file mode 100644 index 00000000000..4f89e85577b --- /dev/null +++ b/buildroot/package/lz4/0002-lib-allow-to-disable-shared-libraries.patch @@ -0,0 +1,59 @@ +From 95bde2a4ae4a92e984a5783ca1f09f44bf04fadb Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Thu, 19 Apr 2018 12:28:11 +0300 +Subject: [PATCH] lib: allow to disable shared libraries + +Just like BUILD_STATIC=no disables static libraries, BUILD_SHARED=no +disabled shared libraries. This is useful to support toolchains that do +not support shared libraries. + +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/lz4/lz4/pull/504 + + lib/Makefile | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/lib/Makefile b/lib/Makefile +index dd33f50351a8..976d57cd75ed 100644 +--- a/lib/Makefile ++++ b/lib/Makefile +@@ -42,6 +42,7 @@ LIBVER_MINOR := $(shell echo $(LIBVER_MINOR_SCRIPT)) + LIBVER_PATCH := $(shell echo $(LIBVER_PATCH_SCRIPT)) + LIBVER := $(shell echo $(LIBVER_SCRIPT)) + ++BUILD_SHARED:=yes + BUILD_STATIC:=yes + + CPPFLAGS+= -DXXH_NAMESPACE=LZ4_ +@@ -92,6 +93,7 @@ ifeq ($(BUILD_STATIC),yes) # can be disabled on command line + endif + + $(LIBLZ4): $(SRCFILES) ++ifeq ($(BUILD_SHARED),yes) # can be disabled on command line + @echo compiling dynamic library $(LIBVER) + ifneq (,$(filter Windows%,$(OS))) + @$(CC) $(FLAGS) -DLZ4_DLL_EXPORT=1 -shared $^ -o dll\$@.dll +@@ -102,6 +104,7 @@ else + @ln -sf $@ liblz4.$(SHARED_EXT_MAJOR) + @ln -sf $@ liblz4.$(SHARED_EXT) + endif ++endif + + liblz4: $(LIBLZ4) + +@@ -159,9 +162,11 @@ ifeq ($(BUILD_STATIC),yes) + @$(INSTALL_DATA) liblz4.a $(DESTDIR)$(LIBDIR)/liblz4.a + @$(INSTALL_DATA) lz4frame_static.h $(DESTDIR)$(INCLUDEDIR)/lz4frame_static.h + endif ++ifeq ($(BUILD_SHARED),yes) + @$(INSTALL_PROGRAM) liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR) + @ln -sf liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT_MAJOR) + @ln -sf liblz4.$(SHARED_EXT_VER) $(DESTDIR)$(LIBDIR)/liblz4.$(SHARED_EXT) ++endif + @echo Installing headers in $(INCLUDEDIR) + @$(INSTALL_DATA) lz4.h $(DESTDIR)$(INCLUDEDIR)/lz4.h + @$(INSTALL_DATA) lz4hc.h $(DESTDIR)$(INCLUDEDIR)/lz4hc.h +-- +2.17.0 + diff --git a/buildroot/package/lz4/lz4.hash b/buildroot/package/lz4/lz4.hash index 5048503f806..bdc43d1e669 100644 --- a/buildroot/package/lz4/lz4.hash +++ b/buildroot/package/lz4/lz4.hash @@ -1,2 +1,4 @@ # sha256 locally computed -sha256 0190cacd63022ccb86f44fa5041dc6c3804407ad61550ca21c382827319e7e7e lz4-v1.7.5.tar.gz +sha256 12f3a9e776a923275b2dc78ae138b4967ad6280863b77ff733028ce89b8123f9 lz4-v1.8.1.2.tar.gz +sha256 d15d99c8dc6b0ec22174c0e563a95bc40f9363ca7f9d9d793bb5c5a8e8d0af71 lib/LICENSE +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 programs/COPYING diff --git a/buildroot/package/lz4/lz4.mk b/buildroot/package/lz4/lz4.mk index de8c311a312..c5540124e92 100644 --- a/buildroot/package/lz4/lz4.mk +++ b/buildroot/package/lz4/lz4.mk @@ -4,21 +4,21 @@ # ################################################################################ -LZ4_VERSION = v1.7.5 +LZ4_VERSION = v1.8.1.2 LZ4_SITE = $(call github,lz4,lz4,$(LZ4_VERSION)) LZ4_INSTALL_STAGING = YES LZ4_LICENSE = BSD-2-Clause (library), GPL-2.0+ (programs) LZ4_LICENSE_FILES = lib/LICENSE programs/COPYING ifeq ($(BR2_STATIC_LIBS),y) -define LZ4_DISABLE_SHARED - $(SED) '/SHARED/d' $(@D)/lib/Makefile -endef -LZ4_POST_PATCH_HOOKS += LZ4_DISABLE_SHARED +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) all + $(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 @@ -27,17 +27,20 @@ define HOST_LZ4_INSTALL_CMDS endef define LZ4_BUILD_CMDS - $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) all + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(LZ4_MAKE_OPTS) \ + -C $(@D) lib + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(LZ4_MAKE_OPTS) \ + -C $(@D) lz4 endef define LZ4_INSTALL_STAGING_CMDS $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) DESTDIR=$(STAGING_DIR) \ - PREFIX=/usr install -C $(@D) + PREFIX=/usr $(LZ4_MAKE_OPTS) install -C $(@D) endef define LZ4_INSTALL_TARGET_CMDS $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) DESTDIR=$(TARGET_DIR) \ - PREFIX=/usr install -C $(@D) + PREFIX=/usr $(LZ4_MAKE_OPTS) install -C $(@D) endef $(eval $(generic-package)) diff --git a/buildroot/package/lzip/lzip.hash b/buildroot/package/lzip/lzip.hash index e074c76005c..9945f9cfe55 100644 --- a/buildroot/package/lzip/lzip.hash +++ b/buildroot/package/lzip/lzip.hash @@ -1,2 +1,4 @@ -# From http://lists.nongnu.org/archive/html/lzip-bug/2017-05/msg00000.html -sha256 ffadc4f56be1bc0d3ae155ec4527bd003133bdc703a753b2cc683f610e646ba9 lzip-1.19.tar.gz +# From http://lists.nongnu.org/archive/html/lzip-bug/2018-02/msg00006.html +sha256 c93b81a5a7788ef5812423d311345ba5d3bd4f5ebf1f693911e3a13553c1290c lzip-1.20.tar.gz +# Locally calculated +sha256 3d77c1a58fbde5ddba612d1fe09965e20a3804953eca12e8c1892298bb8a5eef COPYING diff --git a/buildroot/package/lzip/lzip.mk b/buildroot/package/lzip/lzip.mk index b7ba5dd21df..72742240a57 100644 --- a/buildroot/package/lzip/lzip.mk +++ b/buildroot/package/lzip/lzip.mk @@ -4,7 +4,7 @@ # ################################################################################ -LZIP_VERSION = 1.19 +LZIP_VERSION = 1.20 LZIP_SITE = http://download.savannah.gnu.org/releases/lzip LZIP_LICENSE = GPL-2.0+ LZIP_LICENSE_FILES = COPYING @@ -16,7 +16,7 @@ endef define HOST_LZIP_CONFIGURE_CMDS (cd $(@D); $(HOST_MAKE_ENV) ./configure --prefix=$(HOST_DIR) \ - $(HOST_CONFIGURE_OPTS) ) + $(HOST_CONFIGURE_OPTS) CC="$(HOSTCC_NOCCACHE)" CXX="$(HOSTCXX_NOCCACHE)") endef define LZIP_BUILD_CMDS diff --git a/buildroot/package/make/0001-configure.ac-Support-GLIBC-glob-interface-version-2.patch b/buildroot/package/make/0001-configure.ac-Support-GLIBC-glob-interface-version-2.patch new file mode 100644 index 00000000000..62e67f850a2 --- /dev/null +++ b/buildroot/package/make/0001-configure.ac-Support-GLIBC-glob-interface-version-2.patch @@ -0,0 +1,31 @@ +From 48c8a116a914a325a0497721f5d8b58d5bba34d4 Mon Sep 17 00:00:00 2001 +From: Paul Smith +Date: Sun, 19 Nov 2017 15:09:16 -0500 +Subject: [PATCH] * configure.ac: Support GLIBC glob interface version 2 + +Signed-off-by: Baruch Siach +--- +Upstream status: commit 48c8a116a914a3 + + configure.ac | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 8c72568cf276..4710832ae568 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -404,10 +404,9 @@ AC_CACHE_CHECK([if system libc has GNU glob], [make_cv_sys_gnu_glob], + #include + #include + +-#define GLOB_INTERFACE_VERSION 1 + #if !defined _LIBC && defined __GNU_LIBRARY__ && __GNU_LIBRARY__ > 1 + # include +-# if _GNU_GLOB_INTERFACE_VERSION == GLOB_INTERFACE_VERSION ++# if _GNU_GLOB_INTERFACE_VERSION == 1 || _GNU_GLOB_INTERFACE_VERSION == 2 + gnu glob + # endif + #endif], +-- +2.16.2 + diff --git a/buildroot/package/make/make.mk b/buildroot/package/make/make.mk index 5717628fa3e..01cd2eaa18f 100644 --- a/buildroot/package/make/make.mk +++ b/buildroot/package/make/make.mk @@ -7,9 +7,11 @@ MAKE_VERSION = 4.2.1 MAKE_SOURCE = make-$(MAKE_VERSION).tar.bz2 MAKE_SITE = $(BR2_GNU_MIRROR)/make -MAKE_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) +MAKE_DEPENDENCIES = $(TARGET_NLS_DEPENDENCIES) host-pkgconf MAKE_LICENSE = GPL-3.0+ MAKE_LICENSE_FILES = COPYING +# Patching configure.ac +MAKE_AUTORECONF = YES MAKE_CONF_OPTS = --without-guile diff --git a/buildroot/package/mariadb/mariadb.hash b/buildroot/package/mariadb/mariadb.hash index cc1e353ab7f..b8b2dde3743 100644 --- a/buildroot/package/mariadb/mariadb.hash +++ b/buildroot/package/mariadb/mariadb.hash @@ -1,5 +1,5 @@ -# From https://downloads.mariadb.org/mariadb/10.1.31/ -sha256 ab7641c2fe4e5289da6141766a9c3350e013def56fafd6f1377080bc8048b2e6 mariadb-10.1.31.tar.gz +# From https://downloads.mariadb.org/mariadb/10.1.32/ +sha256 0e2aae6a6a190d07c8e36e87dd43377057fa82651ca3c583462563f3e9369096 mariadb-10.1.32.tar.gz # Hash for license files sha256 69ce89a0cadbe35a858398c258be93c388715e84fc0ca04e5a1fd1aa9770dd3a README diff --git a/buildroot/package/mariadb/mariadb.mk b/buildroot/package/mariadb/mariadb.mk index 54eafc17029..391655fb0ae 100644 --- a/buildroot/package/mariadb/mariadb.mk +++ b/buildroot/package/mariadb/mariadb.mk @@ -4,7 +4,7 @@ # ################################################################################ -MARIADB_VERSION = 10.1.31 +MARIADB_VERSION = 10.1.32 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 diff --git a/buildroot/package/mbedtls/0001-dhm-Fix-typo-in-RFC-5114-constants.patch b/buildroot/package/mbedtls/0001-dhm-Fix-typo-in-RFC-5114-constants.patch deleted file mode 100644 index effaf3d931a..00000000000 --- a/buildroot/package/mbedtls/0001-dhm-Fix-typo-in-RFC-5114-constants.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 129f50838bf14f4e1319f06f41c827fae9cc4b73 Mon Sep 17 00:00:00 2001 -From: Jaeden Amero -Date: Thu, 8 Feb 2018 14:25:36 +0000 -Subject: [PATCH] dhm: Fix typo in RFC 5114 constants - -We accidentally named the constant MBEDTLS_DHM_RFC5114_MODP_P instead of -MBEDTLS_DHM_RFC5114_MODP_2048_P. - -Fixes #1358 - -Signed-off-by: Baruch Siach ---- -Patch status: upstream commit 129f50838bf - - include/mbedtls/dhm.h | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/include/mbedtls/dhm.h b/include/mbedtls/dhm.h -index da2e66b111b6..00fafd8d16f4 100644 ---- a/include/mbedtls/dhm.h -+++ b/include/mbedtls/dhm.h -@@ -372,7 +372,7 @@ MBEDTLS_DEPRECATED typedef char const * mbedtls_deprecated_constant_t; - * in RFC-5114: Additional Diffie-Hellman Groups for Use with - * IETF Standards. - */ --#define MBEDTLS_DHM_RFC5114_MODP_P \ -+#define MBEDTLS_DHM_RFC5114_MODP_2048_P \ - MBEDTLS_DEPRECATED_STRING_CONSTANT( \ - "AD107E1E9123A9D0D660FAA79559C51FA20D64E5683B9FD1" \ - "B54B1597B61D0A75E6FA141DF95A56DBAF9A3C407BA1DF15" \ --- -2.16.1 - diff --git a/buildroot/package/mbedtls/mbedtls.hash b/buildroot/package/mbedtls/mbedtls.hash index a62c0f58dec..16f03fb7d8b 100644 --- a/buildroot/package/mbedtls/mbedtls.hash +++ b/buildroot/package/mbedtls/mbedtls.hash @@ -1,5 +1,5 @@ -# From https://tls.mbed.org/tech-updates/releases/mbedtls-2.7.0-2.1.10-and-1.3.22-released -sha1 01ffebf679c8696cc941c41224fa73d8944d2c85 mbedtls-2.7.0-apache.tgz -sha256 aeb66d6cd43aa1c79c145d15845c655627a7fc30d624148aaafbb6c36d7f55ef mbedtls-2.7.0-apache.tgz +# From https://tls.mbed.org/tech-updates/releases/mbedtls-2.9.0-2.7.3-and-2.1.12-released +sha1 8352f6713a9ee695f6f19e893c0e85941af71967 mbedtls-2.7.3-apache.tgz +sha256 05282af7d95fedb2430c248ffe3081646800b8dae9071f8da11a07100963d765 mbedtls-2.7.3-apache.tgz # Locally calculated sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 apache-2.0.txt diff --git a/buildroot/package/mbedtls/mbedtls.mk b/buildroot/package/mbedtls/mbedtls.mk index 7c26ea95ee6..e6012dcb3f9 100644 --- a/buildroot/package/mbedtls/mbedtls.mk +++ b/buildroot/package/mbedtls/mbedtls.mk @@ -5,7 +5,7 @@ ################################################################################ MBEDTLS_SITE = https://tls.mbed.org/code/releases -MBEDTLS_VERSION = 2.7.0 +MBEDTLS_VERSION = 2.7.3 MBEDTLS_SOURCE = mbedtls-$(MBEDTLS_VERSION)-apache.tgz MBEDTLS_CONF_OPTS = \ -DENABLE_PROGRAMS=$(if $(BR2_PACKAGE_MBEDTLS_PROGRAMS),ON,OFF) \ diff --git a/buildroot/package/memcached/memcached.hash b/buildroot/package/memcached/memcached.hash index 204590d27c7..82789338276 100644 --- a/buildroot/package/memcached/memcached.hash +++ b/buildroot/package/memcached/memcached.hash @@ -1,4 +1,3 @@ -# From http://www.memcached.org/files/memcached-1.5.0.tar.gz.sha1 -sha1 e12af93e63c05ab7e89398e4cfd0bfc7b7bff1c5 memcached-1.5.0.tar.gz -# Calculated based on the hash above -sha256 c001f812024bb461b5e4d7d0506daab63dff9614eea26f46536c3b7e1e601c32 memcached-1.5.0.tar.gz +# From http://www.memcached.org/files/memcached-1.5.6.tar.gz.sha1 +sha1 ca35929e74b132c2495a6957cfdc80556337fb90 memcached-1.5.6.tar.gz +sha256 9675ee859d7d81f7a950f190a6812720b26f08228d356044ec517d4d5af25f03 memcached-1.5.6.tar.gz diff --git a/buildroot/package/memcached/memcached.mk b/buildroot/package/memcached/memcached.mk index d0e3bc01d93..c15abc79bfb 100644 --- a/buildroot/package/memcached/memcached.mk +++ b/buildroot/package/memcached/memcached.mk @@ -4,7 +4,7 @@ # ################################################################################ -MEMCACHED_VERSION = 1.5.0 +MEMCACHED_VERSION = 1.5.6 MEMCACHED_SITE = http://www.memcached.org/files MEMCACHED_DEPENDENCIES = libevent MEMCACHED_CONF_ENV = ac_cv_prog_cc_c99='-std=gnu99' diff --git a/buildroot/package/menu-cache/menu-cache.hash b/buildroot/package/menu-cache/menu-cache.hash index 1b30fcc11c8..a46a7070caa 100644 --- a/buildroot/package/menu-cache/menu-cache.hash +++ b/buildroot/package/menu-cache/menu-cache.hash @@ -1,3 +1,6 @@ -# From https://sourceforge.net/projects/lxde/files/menu-cache/1.0/ -md5 a856ba860b16fdc8c69ee784bc4ade36 menu-cache-1.0.1.tar.xz -sha1 58862c665f2ae56870a9937cdcd643674b2ac8ba menu-cache-1.0.1.tar.xz +# 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/buildroot/package/menu-cache/menu-cache.mk b/buildroot/package/menu-cache/menu-cache.mk index b5fde9907e1..c2b8c3b7409 100644 --- a/buildroot/package/menu-cache/menu-cache.mk +++ b/buildroot/package/menu-cache/menu-cache.mk @@ -4,8 +4,8 @@ # ################################################################################ -MENU_CACHE_VERSION_MAJOR = 1.0 -MENU_CACHE_VERSION = $(MENU_CACHE_VERSION_MAJOR).1 +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 diff --git a/buildroot/package/mesa3d-demos/0001-demos-optional-gl.patch b/buildroot/package/mesa3d-demos/0001-demos-makes-opengl-an-optional-component.patch similarity index 52% rename from buildroot/package/mesa3d-demos/0001-demos-optional-gl.patch rename to buildroot/package/mesa3d-demos/0001-demos-makes-opengl-an-optional-component.patch index 6470e9d8d99..b328fca8101 100644 --- a/buildroot/package/mesa3d-demos/0001-demos-optional-gl.patch +++ b/buildroot/package/mesa3d-demos/0001-demos-makes-opengl-an-optional-component.patch @@ -1,12 +1,22 @@ -This patches makes opengl an optional component. +From bb0ffae7164d296d32da24fa5499534de259169a Mon Sep 17 00:00:00 2001 +From: Spenser Gilliland +Date: Sat, 24 Feb 2018 11:36:17 +0100 +Subject: [PATCH] demos: makes opengl an optional component Signed-off-by: Spenser Gilliland +[Romain: convert to git patch, rebase on 8.4.0] +Signed-off-by: Romain Naour --- -Index: mesa3d-demos-8.1.0/configure.ac -=================================================================== ---- mesa3d-demos-8.1.0.orig/configure.ac -+++ mesa3d-demos-8.1.0/configure.ac -@@ -51,6 +51,14 @@ + configure.ac | 12 +++++++++++- + src/egl/opengl/Makefile.am | 2 ++ + src/util/Makefile.am | 2 ++ + 3 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 0b5e9a76..24298c44 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -51,6 +51,14 @@ m4_ifndef([PKG_PROG_PKG_CONFIG], ACLOCAL="aclocal -I/other/macro/dir" before running autoreconf.])]) PKG_PROG_PKG_CONFIG() @@ -21,7 +31,7 @@ Index: mesa3d-demos-8.1.0/configure.ac dnl Get the pkg-config definitions for libGL. We include a fallback dnl path for GL implementation that don't provide a .pc file PKG_CHECK_MODULES(GL, [gl], [], [ -@@ -113,6 +121,8 @@ +@@ -112,6 +120,8 @@ PKG_CHECK_MODULES(GLU, [glu], [], DEMO_CFLAGS="$DEMO_CFLAGS $GLU_CFLAGS" DEMO_LIBS="$DEMO_LIBS $GLU_LIBS" @@ -30,7 +40,7 @@ Index: mesa3d-demos-8.1.0/configure.ac AC_ARG_ENABLE([egl], [AS_HELP_STRING([--enable-egl], [enable EGL library @<:@default=auto@:>@])], -@@ -303,7 +313,7 @@ +@@ -302,7 +312,7 @@ AC_SUBST([MESA_GLAPI]) AC_SUBST([WAYLAND_CFLAGS]) AC_SUBST([WAYLAND_LIBS]) @@ -39,29 +49,30 @@ Index: mesa3d-demos-8.1.0/configure.ac AM_CONDITIONAL(HAVE_EGL, test "x$egl_enabled" = "xyes") AM_CONDITIONAL(HAVE_GLESV1, test "x$glesv1_enabled" = "xyes") AM_CONDITIONAL(HAVE_GLESV2, test "x$glesv2_enabled" = "xyes") -Index: mesa3d-demos-8.1.0/src/egl/opengl/Makefile.am -=================================================================== ---- mesa3d-demos-8.1.0.orig/src/egl/opengl/Makefile.am -+++ mesa3d-demos-8.1.0/src/egl/opengl/Makefile.am -@@ -50,12 +50,14 @@ +diff --git a/src/egl/opengl/Makefile.am b/src/egl/opengl/Makefile.am +index 6d184ff6..219ab850 100644 +--- a/src/egl/opengl/Makefile.am ++++ b/src/egl/opengl/Makefile.am +@@ -56,6 +56,7 @@ endif endif if HAVE_EGL +if HAVE_GL + bin_PROGRAMS = \ + eglinfo noinst_PROGRAMS = \ - eglinfo \ - peglgears \ - $(EGL_DRM_DEMOS) \ - $(EGL_X11_DEMOS) +@@ -64,6 +65,7 @@ noinst_PROGRAMS = \ + $(EGL_X11_DEMOS) \ + $(EGL_WL_DEMOS) endif +endif egltri_x11_SOURCES = egltri.c eglgears_x11_SOURCES = eglgears.c -Index: mesa3d-demos-8.1.0/src/util/Makefile.am -=================================================================== ---- mesa3d-demos-8.1.0.orig/src/util/Makefile.am -+++ mesa3d-demos-8.1.0/src/util/Makefile.am +diff --git a/src/util/Makefile.am b/src/util/Makefile.am +index 759a293a..012b9c75 100644 +--- a/src/util/Makefile.am ++++ b/src/util/Makefile.am @@ -27,7 +27,9 @@ AM_CFLAGS = \ AM_LDFLAGS = \ $(DEMO_LIBS) @@ -72,3 +83,6 @@ Index: mesa3d-demos-8.1.0/src/util/Makefile.am if HAVE_GLUT AM_CFLAGS += \ +-- +2.14.3 + diff --git a/buildroot/package/mesa3d-demos/mesa3d-demos.hash b/buildroot/package/mesa3d-demos/mesa3d-demos.hash index a50a3a1e0cb..8a771df2f82 100644 --- a/buildroot/package/mesa3d-demos/mesa3d-demos.hash +++ b/buildroot/package/mesa3d-demos/mesa3d-demos.hash @@ -1,2 +1,5 @@ -# From http://lists.freedesktop.org/archives/mesa-announce/2015-December/000191.html -sha256 c173154bbd0d5fb53d732471984def42fb1b14ac85fcb834138fb9518b3e0bef mesa-demos-8.3.0.tar.bz2 +# From https://lists.freedesktop.org/archives/mesa-dev/2018-February/186542.html +md5 6b65a02622765522176d00f553086fa3 mesa-demos-8.4.0.tar.bz2 +sha1 57ba892e919fa22ce3db9f25e7331a6fa33c652c mesa-demos-8.4.0.tar.bz2 +sha256 01e99c94a0184e63e796728af89bfac559795fb2a0d6f506fa900455ca5fff7d mesa-demos-8.4.0.tar.bz2 +sha512 b72d03cad36e0535ff18dcfb222ec4200064b9264f6da51a6e5f03b0dd912abe188bc1d600b6698de3ce6f63b28d2ce01565886ca8e7079edc4967fbf2fb0957 mesa-demos-8.4.0.tar.bz2 diff --git a/buildroot/package/mesa3d-demos/mesa3d-demos.mk b/buildroot/package/mesa3d-demos/mesa3d-demos.mk index 9182803748a..ddff9b9ed99 100644 --- a/buildroot/package/mesa3d-demos/mesa3d-demos.mk +++ b/buildroot/package/mesa3d-demos/mesa3d-demos.mk @@ -4,9 +4,10 @@ # ################################################################################ -MESA3D_DEMOS_VERSION = 8.3.0 +MESA3D_DEMOS_VERSION = 8.4.0 MESA3D_DEMOS_SOURCE = mesa-demos-$(MESA3D_DEMOS_VERSION).tar.bz2 -MESA3D_DEMOS_SITE = ftp://ftp.freedesktop.org/pub/mesa/demos/$(MESA3D_DEMOS_VERSION) +MESA3D_DEMOS_SITE = ftp://ftp.freedesktop.org/pub/mesa/demos +# 0001-demos-makes-opengl-an-optional-component.patch MESA3D_DEMOS_AUTORECONF = YES MESA3D_DEMOS_DEPENDENCIES = host-pkgconf MESA3D_DEMOS_LICENSE = MIT diff --git a/buildroot/package/mesa3d-headers/mesa3d-headers.mk b/buildroot/package/mesa3d-headers/mesa3d-headers.mk index 4eb57b3ad40..5a8e3f9b846 100644 --- a/buildroot/package/mesa3d-headers/mesa3d-headers.mk +++ b/buildroot/package/mesa3d-headers/mesa3d-headers.mk @@ -12,9 +12,10 @@ endif # Not possible to directly refer to mesa3d variables, because of # first/second expansion trickery... -MESA3D_HEADERS_VERSION = 17.3.6 +MESA3D_HEADERS_VERSION = 18.0.3 MESA3D_HEADERS_SOURCE = mesa-$(MESA3D_HEADERS_VERSION).tar.xz MESA3D_HEADERS_SITE = https://mesa.freedesktop.org/archive +MESA3D_HEADERS_DL_SUBDIR = mesa3d MESA3D_HEADERS_LICENSE = MIT, SGI, Khronos MESA3D_HEADERS_LICENSE_FILES = docs/license.html diff --git a/buildroot/package/mesa3d/0002-Fix-endianess-detection-with-musl-based-toolchains.patch b/buildroot/package/mesa3d/0002-Fix-endianess-detection-with-musl-based-toolchains.patch deleted file mode 100644 index 4846b34c9d1..00000000000 --- a/buildroot/package/mesa3d/0002-Fix-endianess-detection-with-musl-based-toolchains.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 4135bd2e13880866deb0440855d1a869397e5024 Mon Sep 17 00:00:00 2001 -From: Bernd Kuhls -Date: Fri, 4 Nov 2016 19:44:37 +0100 -Subject: [PATCH] Fix endianess detection with musl-based toolchains - -Musl does not define __GLIBC__ and will not provide a __MUSL__ macro: -http://wiki.musl-libc.org/wiki/FAQ#Q:_why_is_there_no_MUSL_macro_.3F - -This patch checks for the presence of endian.h and promotes the result -to src/amd/Makefile.addrlib.am which executes the broken build command. -Fixes compile errors detected by the autobuilder infrastructure of the -buildroot project: - -http://autobuild.buildroot.net/results/e27/e27a9a95f72dba3076549beb2a2ccfdbea2fcfee/ -http://autobuild.buildroot.net/results/e27/e27a9a95f72dba3076549beb2a2ccfdbea2fcfee/ - -Patch sent upstream: https://patchwork.freedesktop.org/patch/119961/ - -Signed-off-by: Bernd Kuhls -[Romain: rebase on mesa 17.3.1] -Signed-off-by: Romain Naour ---- - configure.ac | 1 + - src/amd/Makefile.addrlib.am | 1 + - src/util/u_endian.h | 2 +- - 3 files changed, 3 insertions(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index a02173f244..ee03d6f582 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -791,6 +791,7 @@ fi - AC_HEADER_MAJOR - AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"]) - AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"]) -+AC_CHECK_HEADER([endian.h], [DEFINES="$DEFINES -DHAVE_ENDIAN_H"]) - AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"]) - AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"]) - AC_CHECK_FUNC([memfd_create], [DEFINES="$DEFINES -DHAVE_MEMFD_CREATE"]) -diff --git a/src/amd/Makefile.addrlib.am b/src/amd/Makefile.addrlib.am -index 46689637f9..508edfd0d5 100644 ---- a/src/amd/Makefile.addrlib.am -+++ b/src/amd/Makefile.addrlib.am -@@ -30,6 +30,7 @@ addrlib_libamdgpu_addrlib_la_CPPFLAGS = \ - -I$(srcdir)/addrlib/inc/chip/r800 \ - -I$(srcdir)/addrlib/gfx9/chip \ - -I$(srcdir)/addrlib/r800/chip \ -+ $(DEFINES) \ - -DBRAHMA_BUILD=1 - - addrlib_libamdgpu_addrlib_la_CXXFLAGS = \ -diff --git a/src/util/u_endian.h b/src/util/u_endian.h -index 9e09f80181..038a28fac9 100644 ---- a/src/util/u_endian.h -+++ b/src/util/u_endian.h -@@ -27,7 +27,7 @@ - #ifndef U_ENDIAN_H - #define U_ENDIAN_H - --#if defined(__GLIBC__) || defined(ANDROID) || defined(__CYGWIN__) -+#if defined(__GLIBC__) || defined(ANDROID) || defined(__CYGWIN__) || defined(HAVE_ENDIAN_H) - #include - - #if __BYTE_ORDER == __LITTLE_ENDIAN --- -2.14.3 - diff --git a/buildroot/package/mesa3d/0003-configure.ac-invert-order-for-wayland-scanner-check.patch b/buildroot/package/mesa3d/0002-configure.ac-invert-order-for-wayland-scanner-check.patch similarity index 100% rename from buildroot/package/mesa3d/0003-configure.ac-invert-order-for-wayland-scanner-check.patch rename to buildroot/package/mesa3d/0002-configure.ac-invert-order-for-wayland-scanner-check.patch diff --git a/buildroot/package/mesa3d/0003-configure.ac-rework-latomic-check.patch b/buildroot/package/mesa3d/0003-configure.ac-rework-latomic-check.patch new file mode 100644 index 00000000000..ee8107d2adf --- /dev/null +++ b/buildroot/package/mesa3d/0003-configure.ac-rework-latomic-check.patch @@ -0,0 +1,124 @@ +From 5865c7cb4e4ed1d63699e384ea52984448adfec9 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Mon, 7 May 2018 10:36:10 +0200 +Subject: [PATCH] configure.ac: rework -latomic check + +The configure.ac logic added in commit +2ef7f23820a67e958c2252bd81eb0458903ebf33 ("configure: check if +-latomic is needed for __atomic_*") makes the assumption that if a +64-bit atomic intrinsic test program fails to link without -latomic, +it is because we must use -latomic. + +Unfortunately, this is not completely correct: libatomic only appeared +in gcc 4.8, and therefore gcc versions before that will not have +libatomic, and therefore don't provide atomic intrinsics for all +architectures. This issue was for example encountered on PowerPC with +a gcc 4.7 toolchain, where the build fails with: + +powerpc-ctng_e500v2-linux-gnuspe/bin/ld: cannot find -latomic + +This commit aims at fixing that, by not assuming -latomic is +available. The commit re-organizes the atomic intrinsics detection as +follows: + + (1) Test if a program using 64-bit atomic intrinsics links properly, + without -latomic. If this is the case, we have atomic intrinsics, + and we're good to go. + + (2) If (1) has failed, then test to link the same program, but this + time with -latomic in LDFLAGS. If this is the case, then we have + atomic intrinsics, provided we link with -latomic. + +This has been tested in three situations: + + - On x86-64, where atomic instrinsics are all built-in, with no need + for libatomic. In this case, config.log contains: + + GCC_ATOMIC_BUILTINS_SUPPORTED_FALSE='#' + GCC_ATOMIC_BUILTINS_SUPPORTED_TRUE='' + LIBATOMIC_LIBS='' + + This means: atomic intrinsics are available, and we don't need to + link with libatomic. + + - On NIOS2, where atomic intrinsics are available, but some of them + (64-bit ones) require using libatomic. In this case, config.log + contains: + + GCC_ATOMIC_BUILTINS_SUPPORTED_FALSE='#' + GCC_ATOMIC_BUILTINS_SUPPORTED_TRUE='' + LIBATOMIC_LIBS='-latomic' + + This means: atomic intrinsics are available, and we need to link + with libatomic. + + - On PowerPC with an old gcc 4.7 toolchain, where 32-bit atomic + instrinsics are available, but not 64-bit atomic instrinsics, and + there is no libatomic. In this case, config.log contains: + + GCC_ATOMIC_BUILTINS_SUPPORTED_FALSE='' + GCC_ATOMIC_BUILTINS_SUPPORTED_TRUE='#' + + With means that atomic intrinsics are not usable. + +Signed-off-by: Thomas Petazzoni +Upstream-status: https://lists.freedesktop.org/archives/mesa-dev/2018-May/194214.html +--- + configure.ac | 37 +++++++++++++++++++++---------------- + 1 file changed, 21 insertions(+), 16 deletions(-) + +diff --git a/configure.ac b/configure.ac +index f1fbdcc6c7..c94e547874 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -433,26 +433,31 @@ fi + AM_CONDITIONAL([SSE41_SUPPORTED], [test x$SSE41_SUPPORTED = x1]) + AC_SUBST([SSE41_CFLAGS], $SSE41_CFLAGS) + +-dnl Check for new-style atomic builtins +-AC_COMPILE_IFELSE([AC_LANG_SOURCE([[ ++dnl Check for new-style atomic builtins. We first check without linking to ++dnl -latomic. ++AC_LINK_IFELSE([AC_LANG_SOURCE([[ ++#include + int main() { +- int n; +- return __atomic_load_n(&n, __ATOMIC_ACQUIRE); ++ uint64_t n; ++ return (int)__atomic_load_n(&n, __ATOMIC_ACQUIRE); + }]])], GCC_ATOMIC_BUILTINS_SUPPORTED=1) ++ ++dnl If that didn't work, we try linking with -latomic, which is needed on some ++dnl platforms. ++if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" != x1; then ++ save_LDFLAGS=$LDFLAGS ++ LDFLAGS="$LDFLAGS -latomic" ++ AC_LINK_IFELSE([AC_LANG_SOURCE([[ ++ #include ++ int main() { ++ uint64_t n; ++ return (int)__atomic_load_n(&n, __ATOMIC_ACQUIRE); ++ }]])], GCC_ATOMIC_BUILTINS_SUPPORTED=1 LIBATOMIC_LIBS="-latomic") ++ LDFLAGS=$save_LDFLAGS ++fi ++ + if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then + DEFINES="$DEFINES -DUSE_GCC_ATOMIC_BUILTINS" +- dnl On some platforms, new-style atomics need a helper library +- AC_MSG_CHECKING(whether -latomic is needed) +- AC_LINK_IFELSE([AC_LANG_SOURCE([[ +- #include +- uint64_t v; +- int main() { +- return (int)__atomic_load_n(&v, __ATOMIC_ACQUIRE); +- }]])], GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC=no, GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC=yes) +- AC_MSG_RESULT($GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC) +- if test "x$GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC" = xyes; then +- LIBATOMIC_LIBS="-latomic" +- fi + fi + AC_SUBST([LIBATOMIC_LIBS]) + +-- +2.14.3 + diff --git a/buildroot/package/mesa3d/Config.in b/buildroot/package/mesa3d/Config.in index f141587c4d1..8c1877fbc14 100644 --- a/buildroot/package/mesa3d/Config.in +++ b/buildroot/package/mesa3d/Config.in @@ -25,6 +25,32 @@ menuconfig BR2_PACKAGE_MESA3D 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_HOST_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_INSTALL_LIBSTDCPP + depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735 # std::shared_future + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR # std::wstring + select BR2_PACKAGE_LLVM + +comment "llvm support needs a toolchain w/ wchar, threads, C++, gcc >= 4.8, host gcc >= 4.8, dynamic library" + depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS + depends on !BR2_TOOLCHAIN_HAS_THREADS || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_HOST_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 \ + || BR2_STATIC_LIBS || !BR2_USE_WCHAR + +comment "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 + # inform the .mk file of gallium, dri or vulkan driver selection config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER bool @@ -75,12 +101,45 @@ config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU 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 select BR2_PACKAGE_MESA3D_NEEDS_XA 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_i386 || BR2_x86_64 + depends on BR2_PACKAGE_MESA3D_LLVM + depends on BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC # elfutils + 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 + select BR2_PACKAGE_MESA3D_NEEDS_XA + help + Driver for ATI/AMD Radeon HD7000/HD8000/Rx200 GPUs. + +# Radeon SI needs libelf +# musl is not currently compatible with elfutils +comment "Radeon SI driver needs a uClibc or glibc toolchain" + depends on BR2_PACKAGE_MESA3D_LLVM + depends on !(BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_GLIBC) + config BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SVGA bool "Gallium vmware svga driver" depends on BR2_i386 || BR2_x86_64 diff --git a/buildroot/package/mesa3d/mesa3d.hash b/buildroot/package/mesa3d/mesa3d.hash index a61fe02b6de..983c0e65e5e 100644 --- a/buildroot/package/mesa3d/mesa3d.hash +++ b/buildroot/package/mesa3d/mesa3d.hash @@ -1,8 +1,8 @@ -# From https://lists.freedesktop.org/archives/mesa-announce/2018-February/000403.html -md5 ba66ae0f09b9b84482268608557cd175 mesa-17.3.6.tar.xz -sha1 eff29cb8c284a813977d4201dd646d949b1d8fc4 mesa-17.3.6.tar.xz -sha256 e5915680d44ac9d05defdec529db7459ac9edd441c9845266eff2e2d3e57fbf8 mesa-17.3.6.tar.xz -sha512 5164ed5a1d3d25031b712a9f443f0e467a29b2bca0a1aa11324ed5c10279411979c9c7482825053926a813e76c58b78a3439c7c81fcd51a7808f53977080828f mesa-17.3.6.tar.xz +# From https://lists.freedesktop.org/archives/mesa-announce/2018-May/000426.html +md5 b260580a26b71a5e52c608e3fe6d08a6 mesa-18.0.3.tar.xz +sha1 2c12c9f69eb7ba787dd1245b53bb98ceb08362d3 mesa-18.0.3.tar.xz +sha256 099d9667327a76a61741a533f95067d76ea71a656e66b91507b3c0caf1d49e30 mesa-18.0.3.tar.xz +sha512 decd050bab049d17bcde3f832d4da0ffdb80f147c99377a162739bbe72fd6fd32b51e56e6fc66895b8c30fc19a1815bae164b21aa557816c3998ad18c1ffca2d mesa-18.0.3.tar.xz # License sha256 630e75b4fdeb75ee2bf9e55db54dd1e3ff7353d52d9314ca8512bfd460f8e24c docs/license.html sha256 a75ee0cec909515ff80a3ec07155b7fb0aafe8051abe1f0e45d5c4c5e2539366 docs/patents.txt diff --git a/buildroot/package/mesa3d/mesa3d.mk b/buildroot/package/mesa3d/mesa3d.mk index 5f4832c0f05..d897c0d4c20 100644 --- a/buildroot/package/mesa3d/mesa3d.mk +++ b/buildroot/package/mesa3d/mesa3d.mk @@ -5,7 +5,7 @@ ################################################################################ # When updating the version, please also update mesa3d-headers -MESA3D_VERSION = 17.3.6 +MESA3D_VERSION = 18.0.3 MESA3D_SOURCE = mesa-$(MESA3D_VERSION).tar.xz MESA3D_SITE = https://mesa.freedesktop.org/archive MESA3D_LICENSE = MIT, SGI, Khronos @@ -32,6 +32,21 @@ ifeq ($(BR2_SHARED_STATIC_LIBS),y) MESA3D_CONF_OPTS += --disable-static endif +ifeq ($(BR2_PACKAGE_MESA3D_LLVM),y) +MESA3D_DEPENDENCIES += host-llvm llvm +MESA3D_CONF_OPTS += \ + --with-llvm-prefix=$(STAGING_DIR)/usr \ + --enable-llvm-shared-libs \ + --enable-llvm +else +# Avoid automatic search of llvm-config +MESA3D_CONF_OPTS += --disable-llvm +endif + +ifeq ($(BR2_PACKAGE_MESA3D_NEEDS_ELFUTILS),y) +MESA3D_DEPENDENCIES += elfutils +endif + # The Sourcery MIPS toolchain has a special (non-upstream) feature to # have "compact exception handling", which unfortunately breaks with # mesa3d, so we disable it here by passing -mno-compact-eh. @@ -69,6 +84,7 @@ endif MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV) += etnaviv imx MESA3D_GALLIUM_DRIVERS-$(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_NOUVEAU) += nouveau 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_VC4) += vc4 @@ -155,6 +171,8 @@ else ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_ETNAVIV),y) MESA3D_PLATFORMS = drm else ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_VIRGL),y) MESA3D_PLATFORMS = drm +else ifeq ($(BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_RADEONSI),y) +MESA3D_PLATFORMS = drm endif ifeq ($(BR2_PACKAGE_WAYLAND),y) MESA3D_DEPENDENCIES += wayland wayland-protocols @@ -219,7 +237,4 @@ else MESA3D_CONF_OPTS += --disable-lmsensors endif -# Avoid automatic search of llvm-config -MESA3D_CONF_OPTS += --with-llvm-prefix=$(STAGING_DIR)/usr/bin - $(eval $(autotools-package)) diff --git a/buildroot/package/meson/meson.hash b/buildroot/package/meson/meson.hash index 279dd93a514..44785aef292 100644 --- a/buildroot/package/meson/meson.hash +++ b/buildroot/package/meson/meson.hash @@ -1,4 +1,4 @@ # Locally calculated after checking pgp signature -# https://github.com/mesonbuild/meson/releases/download/0.44.0/meson-0.44.0.tar.gz.asc -sha256 50f9b12b77272ef6ab064d26b7e06667f07fa9f931e6a20942bba2216ba4281b meson-0.44.0.tar.gz +# https://github.com/mesonbuild/meson/releases/download/0.46.0/meson-0.46.0.tar.gz.asc +sha256 b7df91b01a358a8facdbfa33596a47cda38a760435ab55e1985c0bff06a9cbf0 meson-0.46.0.tar.gz sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 COPYING diff --git a/buildroot/package/meson/meson.mk b/buildroot/package/meson/meson.mk index 764c187ee77..9b5ca0d5b98 100644 --- a/buildroot/package/meson/meson.mk +++ b/buildroot/package/meson/meson.mk @@ -4,7 +4,7 @@ # ################################################################################ -MESON_VERSION = 0.44.0 +MESON_VERSION = 0.46.0 MESON_SITE = https://github.com/mesonbuild/meson/releases/download/$(MESON_VERSION) MESON_LICENSE = Apache-2.0 MESON_LICENSE_FILES = COPYING diff --git a/buildroot/package/micropython-lib/micropython-lib.hash b/buildroot/package/micropython-lib/micropython-lib.hash index bc0c22efc5a..f63c52cf0c8 100644 --- a/buildroot/package/micropython-lib/micropython-lib.hash +++ b/buildroot/package/micropython-lib/micropython-lib.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 eb696009ff8c33004211e484649b34edb14f3efb2ff618942bc8888716757a55 micropython-lib-v1.8.6.tar.gz +sha256 66e15380eb109613263beb6825b8eecb9191088270c1a59e8c7d922dd57183c7 micropython-lib-v1.9.3.tar.gz diff --git a/buildroot/package/micropython-lib/micropython-lib.mk b/buildroot/package/micropython-lib/micropython-lib.mk index c9423feac6c..3c46b92429a 100644 --- a/buildroot/package/micropython-lib/micropython-lib.mk +++ b/buildroot/package/micropython-lib/micropython-lib.mk @@ -4,7 +4,7 @@ # ################################################################################ -MICROPYTHON_LIB_VERSION = v1.8.6 +MICROPYTHON_LIB_VERSION = v1.9.3 MICROPYTHON_LIB_SITE = $(call github,micropython,micropython-lib,$(MICROPYTHON_LIB_VERSION)) MICROPYTHON_LIB_LICENSE = Python-2.0 (some modules), MIT (everything else) MICROPYTHON_LIB_LICENSE_FILES = LICENSE diff --git a/buildroot/package/micropython/Config.in b/buildroot/package/micropython/Config.in index 00649d4fb6e..b5dc47279d9 100644 --- a/buildroot/package/micropython/Config.in +++ b/buildroot/package/micropython/Config.in @@ -2,8 +2,6 @@ config BR2_PACKAGE_MICROPYTHON bool "micropython" depends on BR2_TOOLCHAIN_HAS_THREADS depends on !BR2_STATIC_LIBS - # libffi doesn't provide the closure implementation on Blackfin - depends on !BR2_bfin select BR2_PACKAGE_LIBFFI help Micro Python is a lean and fast implementation of the Python @@ -14,4 +12,3 @@ config BR2_PACKAGE_MICROPYTHON comment "micropython needs a toolchain w/ threads, dynamic library" depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS - depends on !BR2_bfin diff --git a/buildroot/package/micropython/micropython.hash b/buildroot/package/micropython/micropython.hash index 6ab7b10b668..d42d7ee1487 100644 --- a/buildroot/package/micropython/micropython.hash +++ b/buildroot/package/micropython/micropython.hash @@ -1,2 +1,2 @@ #locally computed -sha256 55dd751c4c812809841fd06f4729b8341171c4b6c1dc28a9412455282554f8a5 micropython-v1.8.7.tar.gz +sha256 ce6b5c4548e85d84075635ff3e94d5cd3356b5fcc7593a7b49dd513612b6ed01 micropython-v1.9.3.tar.gz diff --git a/buildroot/package/micropython/micropython.mk b/buildroot/package/micropython/micropython.mk index 8336fb436f7..2c6bddd81d5 100644 --- a/buildroot/package/micropython/micropython.mk +++ b/buildroot/package/micropython/micropython.mk @@ -4,7 +4,7 @@ # ################################################################################ -MICROPYTHON_VERSION = v1.8.7 +MICROPYTHON_VERSION = v1.9.3 MICROPYTHON_SITE = $(call github,micropython,micropython,$(MICROPYTHON_VERSION)) MICROPYTHON_LICENSE = MIT MICROPYTHON_LICENSE_FILES = LICENSE @@ -22,14 +22,15 @@ MICROPYTHON_MAKE_OPTS = MICROPY_PY_BTREE=0 MICROPYTHON_MAKE_OPTS += MICROPY_PY_USSL=0 define MICROPYTHON_BUILD_CMDS - $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/unix \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/mpy-cross + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/ports/unix \ $(MICROPYTHON_MAKE_OPTS) \ CROSS_COMPILE=$(TARGET_CROSS) \ CFLAGS_EXTRA=$(MICROPYTHON_CFLAGS) endef define MICROPYTHON_INSTALL_TARGET_CMDS - $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/unix \ + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/ports/unix \ $(MICROPYTHON_MAKE_OPTS) \ CROSS_COMPILE=$(TARGET_CROSS) \ CFLAGS_EXTRA=$(MICROPYTHON_CFLAGS) \ diff --git a/buildroot/package/minissdpd/minissdpd.hash b/buildroot/package/minissdpd/minissdpd.hash index dd166775be3..a1729d68557 100644 --- a/buildroot/package/minissdpd/minissdpd.hash +++ b/buildroot/package/minissdpd/minissdpd.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 dfd637b185731e1acb412a86faa9718eb93c04ca08280541a6d22d14d1fb890f minissdpd-1.5.tar.gz -sha256 c432d6ee83deb6a0c105a2c3ebd11e3855ab91498b0847a8657e68ce8e4491a5 LICENSE +sha256 bba94209b40755b32022db9450ee3f4446896a16912915fbb292001a7f8087b0 minissdpd-1.5.20180223.tar.gz +sha256 8801b32567ec20015c7d31668602a3a7f4a4785b7e17468360146b6003713cba LICENSE diff --git a/buildroot/package/minissdpd/minissdpd.mk b/buildroot/package/minissdpd/minissdpd.mk index f3f383b17f1..31d942eac57 100644 --- a/buildroot/package/minissdpd/minissdpd.mk +++ b/buildroot/package/minissdpd/minissdpd.mk @@ -4,7 +4,7 @@ # ################################################################################ -MINISSDPD_VERSION = 1.5 +MINISSDPD_VERSION = 1.5.20180223 MINISSDPD_SITE = http://miniupnp.free.fr/files MINISSDPD_LICENSE = BSD-3-Clause MINISSDPD_LICENSE_FILES = LICENSE diff --git a/buildroot/package/mkpasswd/mkpasswd.c b/buildroot/package/mkpasswd/mkpasswd.c index 5820f325019..fd16230468a 100644 --- a/buildroot/package/mkpasswd/mkpasswd.c +++ b/buildroot/package/mkpasswd/mkpasswd.c @@ -44,6 +44,11 @@ #include #endif +/* glibc without crypt() */ +#ifndef _XOPEN_CRYPT +#include +#endif + /* Application-specific */ #include "utils.h" diff --git a/buildroot/package/mksh/mksh.mk b/buildroot/package/mksh/mksh.mk index b5706dbe0f8..4fa0e020afa 100644 --- a/buildroot/package/mksh/mksh.mk +++ b/buildroot/package/mksh/mksh.mk @@ -21,4 +21,12 @@ 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/buildroot/package/modem-manager/Config.in b/buildroot/package/modem-manager/Config.in index 8e995b4175d..215449a50e8 100644 --- a/buildroot/package/modem-manager/Config.in +++ b/buildroot/package/modem-manager/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_MODEM_MANAGER bool "modemmanager" depends on BR2_PACKAGE_HAS_UDEV - depends on BR2_USE_WCHAR # libglib2 and gnutls + depends on BR2_USE_WCHAR # libglib2 depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 depends on BR2_USE_MMU # dbus select BR2_PACKAGE_DBUS # runtime dependency diff --git a/buildroot/package/modem-manager/S44modem-manager b/buildroot/package/modem-manager/S44modem-manager index cf6d89601dd..416c1e2ee6d 100755 --- a/buildroot/package/modem-manager/S44modem-manager +++ b/buildroot/package/modem-manager/S44modem-manager @@ -3,15 +3,16 @@ # Starts ModemManager # -PIDFILE=/var/run/ModemManager.pid +# Allow a few customizations from a config file +test -r /etc/default/ModemManager && . /etc/default/ModemManager -[ -x $MODEMMANAGER_BIN ] || exit 0 +PIDFILE=/var/run/ModemManager.pid start() { printf "Starting ModemManager: " umask 077 start-stop-daemon -S -q -b -m -p $PIDFILE \ - --exec /usr/sbin/ModemManager + --exec /usr/sbin/ModemManager -- $MODEMMANAGER_ARGS [ $? = 0 ] && echo "OK" || echo "FAIL" } stop() { diff --git a/buildroot/package/modem-manager/modem-manager.hash b/buildroot/package/modem-manager/modem-manager.hash index bc0804485fb..8531330d221 100644 --- a/buildroot/package/modem-manager/modem-manager.hash +++ b/buildroot/package/modem-manager/modem-manager.hash @@ -1,4 +1,4 @@ # Locally computed -sha256 bc74326fa69ae8012f806e235f3d296144922669b952d4d4987dd0af645d5f68 ModemManager-1.6.10.tar.xz +sha256 eefb7615c2c7ebc994abfc2782bfa9e798643a633362b40db96f7f61706a6283 ModemManager-1.6.12.tar.xz sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LIB diff --git a/buildroot/package/modem-manager/modem-manager.mk b/buildroot/package/modem-manager/modem-manager.mk index b741acf066d..fe4a7a95dad 100644 --- a/buildroot/package/modem-manager/modem-manager.mk +++ b/buildroot/package/modem-manager/modem-manager.mk @@ -4,13 +4,14 @@ # ################################################################################ -MODEM_MANAGER_VERSION = 1.6.10 +MODEM_MANAGER_VERSION = 1.6.12 MODEM_MANAGER_SOURCE = ModemManager-$(MODEM_MANAGER_VERSION).tar.xz MODEM_MANAGER_SITE = http://www.freedesktop.org/software/ModemManager MODEM_MANAGER_LICENSE = GPL-2.0+ (programs, plugins), LGPL-2.0+ (libmm-glib) MODEM_MANAGER_LICENSE_FILES = COPYING COPYING.LIB MODEM_MANAGER_DEPENDENCIES = host-pkgconf host-intltool libglib2 libgudev MODEM_MANAGER_INSTALL_STAGING = YES +MODEM_MANAGER_CONF_OPTS = --disable-more-warnings ifeq ($(BR2_PACKAGE_MODEM_MANAGER_LIBQMI),y) MODEM_MANAGER_DEPENDENCIES += libqmi diff --git a/buildroot/package/mongrel2/Config.in b/buildroot/package/mongrel2/Config.in index a9b09b786ce..09bc8bd0a2e 100644 --- a/buildroot/package/mongrel2/Config.in +++ b/buildroot/package/mongrel2/Config.in @@ -7,15 +7,15 @@ config BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS default y if BR2_TOOLCHAIN_USES_UCLIBC && \ (BR2_arm || BR2_armeb || BR2_i386 || BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el || BR2_sparc || BR2_x86_64) -comment "mongrel2 needs a uClibc or glibc toolchain w/ C++, threads, dynamic library" +comment "mongrel2 needs a uClibc or glibc toolchain w/ C++, NPTL, dynamic library" depends on !BR2_INSTALL_LIBSTDCPP || \ - !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \ + !BR2_TOOLCHAIN_HAS_THREADS_NPTL || 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_TOOLCHAIN_HAS_THREADS_NPTL # zeromq depends on !BR2_STATIC_LIBS # uses dlopen() depends on BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS select BR2_PACKAGE_SQLITE diff --git a/buildroot/package/mono/Config.in b/buildroot/package/mono/Config.in index d162237086f..63208fef493 100644 --- a/buildroot/package/mono/Config.in +++ b/buildroot/package/mono/Config.in @@ -5,9 +5,9 @@ config BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS config BR2_PACKAGE_MONO_ARCH_SUPPORTS bool - depends on BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS default y if (BR2_arm || BR2_armeb || BR2_i386 || BR2_mips || \ BR2_mipsel || BR2_powerpc || BR2_x86_64) + depends on BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS config BR2_PACKAGE_MONO bool "mono" diff --git a/buildroot/package/motion/motion.mk b/buildroot/package/motion/motion.mk index 2ba16fc837d..0f4898674b0 100644 --- a/buildroot/package/motion/motion.mk +++ b/buildroot/package/motion/motion.mk @@ -59,7 +59,7 @@ endif # directories: docs, examples and init scripts define MOTION_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0644 $(@D)/motion-dist.conf \ - $(TARGET_DIR)/etc/motion.conf + $(TARGET_DIR)/etc/motion/motion.conf $(INSTALL) -D -m 0755 $(@D)/motion $(TARGET_DIR)/usr/bin/motion endef diff --git a/buildroot/package/mpd-mpc/mpd-mpc.hash b/buildroot/package/mpd-mpc/mpd-mpc.hash index 8336893744b..05ec389e2c9 100644 --- a/buildroot/package/mpd-mpc/mpd-mpc.hash +++ b/buildroot/package/mpd-mpc/mpd-mpc.hash @@ -1,2 +1,3 @@ # Locally calculated after checking pgp signature -sha256 a4337d06c85dc81a638821d30fce8a137a58d13d510be34a11c1cce95cabc547 mpc-0.28.tar.xz +sha256 65fc5b0a8430efe9acbe6e261127960682764b20ab994676371bdc797d867fce mpc-0.30.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/mpd-mpc/mpd-mpc.mk b/buildroot/package/mpd-mpc/mpd-mpc.mk index 6c15c0d9a37..942530a561e 100644 --- a/buildroot/package/mpd-mpc/mpd-mpc.mk +++ b/buildroot/package/mpd-mpc/mpd-mpc.mk @@ -5,12 +5,33 @@ ################################################################################ MPD_MPC_VERSION_MAJOR = 0 -MPD_MPC_VERSION = $(MPD_MPC_VERSION_MAJOR).28 +MPD_MPC_VERSION = $(MPD_MPC_VERSION_MAJOR).30 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_ENV = ac_cv_prog_cc_c99='-std=c99' +MPD_MPC_DEPENDENCIES = host-meson host-pkgconf libmpdclient -$(eval $(autotools-package)) +MPD_MPC_CONF_OPTS += \ + --prefix=/usr \ + --buildtype $(if $(BR2_ENABLE_DEBUG),debug,release) \ + --cross-file $(HOST_DIR)/etc/meson/cross-compilation.conf + +MPD_MPC_NINJA_OPTS = $(if $(VERBOSE),-v) -j$(PARALLEL_JOBS) + +define MPD_MPC_CONFIGURE_CMDS + rm -rf $(@D)/build + mkdir -p $(@D)/build + $(TARGET_MAKE_ENV) meson $(MPD_MPC_CONF_OPTS) $(@D) $(@D)/build +endef + +define MPD_MPC_BUILD_CMDS + $(TARGET_MAKE_ENV) ninja $(MPD_MPC_NINJA_OPTS) -C $(@D)/build +endef + +define MPD_MPC_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) DESTDIR=$(TARGET_DIR) ninja $(MPD_MPC_NINJA_OPTS) \ + -C $(@D)/build install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/mpd/Config.in b/buildroot/package/mpd/Config.in index 5991b6f4bb4..857f2124774 100644 --- a/buildroot/package/mpd/Config.in +++ b/buildroot/package/mpd/Config.in @@ -174,12 +174,24 @@ config BR2_PACKAGE_MPD_TWOLAME 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 @@ -285,6 +297,12 @@ config BR2_PACKAGE_MPD_AVAHI_SUPPORT comment "avahi support needs a toolchain w/ dynamic library" depends on BR2_STATIC_LIBS +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 @@ -309,7 +327,7 @@ config BR2_PACKAGE_MPD_TCP config BR2_PACKAGE_MPD_UPNP bool "UPnP" select BR2_PACKAGE_EXPAT - select BR2_PACKAGE_LIBUPNP + select BR2_PACKAGE_LIBUPNP18 if !BR2_PACKAGE_LIBUPNP help Enable MPD UPnP client support. diff --git a/buildroot/package/mpd/S95mpd b/buildroot/package/mpd/S95mpd index 9f68b45837b..a258930b3ec 100644 --- a/buildroot/package/mpd/S95mpd +++ b/buildroot/package/mpd/S95mpd @@ -1,7 +1,6 @@ #!/bin/sh # Sanity checks -test -f /usr/bin/mpd || exit 0 test -f /etc/mpd.conf || exit 0 start() { diff --git a/buildroot/package/mpd/mpd.hash b/buildroot/package/mpd/mpd.hash index 735ea700ff3..d6e66216cf4 100644 --- a/buildroot/package/mpd/mpd.hash +++ b/buildroot/package/mpd/mpd.hash @@ -1,2 +1,3 @@ # Locally calculated after checking pgp signature -sha256 c69c4f67e665380ea3bbde6cff8958edc85f7cd40e7918ae5ce0a2184ca9eb40 mpd-0.20.15.tar.xz +sha256 6a582dc2ae90b94ff3853f9ffd7d80b2c2b5fe2e2c35cb1da0b36f3f3dfad434 mpd-0.20.18.tar.xz +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/mpd/mpd.mk b/buildroot/package/mpd/mpd.mk index 482859518ae..d41ffe1571b 100644 --- a/buildroot/package/mpd/mpd.mk +++ b/buildroot/package/mpd/mpd.mk @@ -5,7 +5,7 @@ ################################################################################ MPD_VERSION_MAJOR = 0.20 -MPD_VERSION = $(MPD_VERSION_MAJOR).15 +MPD_VERSION = $(MPD_VERSION_MAJOR).18 MPD_SOURCE = mpd-$(MPD_VERSION).tar.xz MPD_SITE = http://www.musicpd.org/download/mpd/$(MPD_VERSION_MAJOR) MPD_DEPENDENCIES = host-pkgconf boost @@ -59,6 +59,13 @@ else MPD_CONF_OPTS += --disable-bzip2 endif +ifeq ($(BR2_PACKAGE_MPD_CDIO_PARANOIA),y) +MPD_DEPENDENCIES += libcdio-paranoia +MPD_CONF_OPTS += --enable-cdio-paranoia +else +MPD_CONF_OPTS += --disable-cdio-paranoia +endif + ifeq ($(BR2_PACKAGE_MPD_CURL),y) MPD_DEPENDENCIES += libcurl MPD_CONF_OPTS += --enable-curl @@ -113,6 +120,20 @@ else MPD_CONF_OPTS += --disable-lame-encoder endif +ifeq ($(BR2_PACKAGE_MPD_LIBMPDCLIENT),y) +MPD_DEPENDENCIES += libmpdclient +MPD_CONF_OPTS += --enable-libmpdclient +else +MPD_CONF_OPTS += --disable-libmpdclient +endif + +ifeq ($(BR2_PACKAGE_MPD_LIBMMS),y) +MPD_DEPENDENCIES += libmms +MPD_CONF_OPTS += --enable-mms +else +MPD_CONF_OPTS += --disable-mms +endif + ifeq ($(BR2_PACKAGE_MPD_LIBNFS),y) MPD_DEPENDENCIES += libnfs MPD_CONF_OPTS += --enable-nfs @@ -236,7 +257,9 @@ MPD_CONF_OPTS += --disable-twolame-encoder endif ifeq ($(BR2_PACKAGE_MPD_UPNP),y) -MPD_DEPENDENCIES += expat libupnp +MPD_DEPENDENCIES += \ + expat \ + $(if $(BR2_PACKAGE_LIBUPNP),libupnp,libupnp18) MPD_CONF_OPTS += --enable-upnp else MPD_CONF_OPTS += --disable-upnp diff --git a/buildroot/package/mplayer/0001-disable-install-strip.patch b/buildroot/package/mplayer/0001-disable-install-strip.patch deleted file mode 100644 index 1bd1dc00ae7..00000000000 --- a/buildroot/package/mplayer/0001-disable-install-strip.patch +++ /dev/null @@ -1,23 +0,0 @@ -Disable stripping on installation - -Using the -s option of install does not work, as it uses the host -strip instead of the cross strip. So, get rid of it, and let Buildroot -handle the stripping. - -[Vincent: tweak patch for version 1.2] - -Signed-off-by: Thomas Petazzoni -Signed-off-by: Vicente Olivert Riera - -diff -Nrua a/configure b/configure ---- a/configure 2015-10-02 21:29:04.000000000 +0100 -+++ b/configure 2015-10-06 13:28:37.245349592 +0100 -@@ -2780,7 +2780,7 @@ - - - # Checking for CFLAGS --_install_strip="-s" -+_install_strip= - if test -z "$CFLAGS" || test "$_profile" != "" || test "$_debug" != ""; then - if test "$cc_vendor" = "intel" ; then - CFLAGS="-O2 $_march $_mcpu $_pipe -fomit-frame-pointer" diff --git a/buildroot/package/mplayer/0002-mpdemux-live555-async-interface.patch b/buildroot/package/mplayer/0002-mpdemux-live555-async-interface.patch deleted file mode 100644 index 5a62a187103..00000000000 --- a/buildroot/package/mplayer/0002-mpdemux-live555-async-interface.patch +++ /dev/null @@ -1,126 +0,0 @@ -From d3195ea13f4a9aae546ff996e53681349a1a3cdb Mon Sep 17 00:00:00 2001 -From: sherpya -Date: Fri, 14 Jun 2013 05:25:38 +0200 -Subject: [PATCH 25/27] mpdemux: live555 async interface - -From: https://raw.github.com/sherpya/mplayer-be/master/patches/mp/0025-mpdemux-live555-async-interface.patch - -Adjust live555 interface code for modern versions of live555. - -Signed-off-by: Peter Korsgaard ---- - libmpdemux/demux_rtp.cpp | 51 ++++++++++++++++++++++++++++++++---------------- - 2 files changed, 35 insertions(+), 22 deletions(-) - -diff --git a/libmpdemux/demux_rtp.cpp b/libmpdemux/demux_rtp.cpp -index ad7a7f1..05d06e0 100644 ---- a/libmpdemux/demux_rtp.cpp -+++ b/libmpdemux/demux_rtp.cpp -@@ -19,8 +19,6 @@ - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - --#define RTSPCLIENT_SYNCHRONOUS_INTERFACE 1 -- - extern "C" { - // on MinGW, we must include windows.h before the things it conflicts - #ifdef __MINGW32__ // with. they are each protected from -@@ -94,15 +92,6 @@ struct RTPState { - - extern "C" char* network_username; - extern "C" char* network_password; --static char* openURL_rtsp(RTSPClient* client, char const* url) { -- // If we were given a user name (and optional password), then use them: -- if (network_username != NULL) { -- char const* password = network_password == NULL ? "" : network_password; -- return client->describeWithPassword(url, network_username, password); -- } else { -- return client->describeURL(url); -- } --} - - static char* openURL_sip(SIPClient* client, char const* url) { - // If we were given a user name (and optional password), then use them: -@@ -118,6 +107,19 @@ static char* openURL_sip(SIPClient* client, char const* url) { - extern AVCodecContext *avcctx; - #endif - -+static char fWatchVariableForSyncInterface; -+static char* fResultString; -+static int fResultCode; -+ -+static void responseHandlerForSyncInterface(RTSPClient* rtspClient, int responseCode, char* responseString) { -+ // Set result values: -+ fResultCode = responseCode; -+ fResultString = responseString; -+ -+ // Signal a break from the event loop (thereby returning from the blocking command): -+ fWatchVariableForSyncInterface = ~0; -+} -+ - extern "C" int audio_id, video_id, dvdsub_id; - extern "C" demuxer_t* demux_open_rtp(demuxer_t* demuxer) { - Boolean success = False; -@@ -146,13 +148,19 @@ extern "C" demuxer_t* demux_open_rtp(demuxer_t* demuxer) { - rtsp_transport_http = demuxer->stream->streaming_ctrl->url->port; - rtsp_transport_tcp = 1; - } -- rtspClient = RTSPClient::createNew(*env, verbose, "MPlayer", rtsp_transport_http); -+ rtspClient = RTSPClient::createNew(*env, url, verbose, "MPlayer", rtsp_transport_http); - if (rtspClient == NULL) { - fprintf(stderr, "Failed to create RTSP client: %s\n", - env->getResultMsg()); - break; - } -- sdpDescription = openURL_rtsp(rtspClient, url); -+ fWatchVariableForSyncInterface = 0; -+ rtspClient->sendDescribeCommand(responseHandlerForSyncInterface); -+ env->taskScheduler().doEventLoop(&fWatchVariableForSyncInterface); -+ if (fResultCode == 0) -+ sdpDescription = fResultString; -+ else -+ delete[] fResultString; - } else { // SIP - unsigned char desiredAudioType = 0; // PCMU (use 3 for GSM) - sipClient = SIPClient::createNew(*env, desiredAudioType, NULL, -@@ -236,8 +244,12 @@ extern "C" demuxer_t* demux_open_rtp(demuxer_t* demuxer) { - - if (rtspClient != NULL) { - // Issue a RTSP "SETUP" command on the chosen subsession: -- if (!rtspClient->setupMediaSubsession(*subsession, False, -- rtsp_transport_tcp)) break; -+ fWatchVariableForSyncInterface = 0; -+ rtspClient->sendSetupCommand(*subsession, responseHandlerForSyncInterface, False, rtsp_transport_tcp); -+ env->taskScheduler().doEventLoop(&fWatchVariableForSyncInterface); -+ delete[] fResultString; -+ if (fResultCode != 0) break; -+ - if (!strcmp(subsession->mediumName(), "audio")) - audiofound = 1; - if (!strcmp(subsession->mediumName(), "video")) -@@ -248,7 +260,11 @@ extern "C" demuxer_t* demux_open_rtp(demuxer_t* demuxer) { - - if (rtspClient != NULL) { - // Issue a RTSP aggregate "PLAY" command on the whole session: -- if (!rtspClient->playMediaSession(*mediaSession)) break; -+ fWatchVariableForSyncInterface = 0; -+ rtspClient->sendPlayCommand(*mediaSession, responseHandlerForSyncInterface); -+ env->taskScheduler().doEventLoop(&fWatchVariableForSyncInterface); -+ delete[] fResultString; -+ if (fResultCode != 0) break; - } else if (sipClient != NULL) { - sipClient->sendACK(); // to start the stream flowing - } -@@ -637,7 +653,8 @@ static void teardownRTSPorSIPSession(RTPState* rtpState) { - MediaSession* mediaSession = rtpState->mediaSession; - if (mediaSession == NULL) return; - if (rtpState->rtspClient != NULL) { -- rtpState->rtspClient->teardownMediaSession(*mediaSession); -+ fWatchVariableForSyncInterface = 0; -+ rtpState->rtspClient->sendTeardownCommand(*mediaSession, NULL); - } else if (rtpState->sipClient != NULL) { - rtpState->sipClient->sendBYE(); - } --- -1.8.5.2 - diff --git a/buildroot/package/mplayer/0003-configure-armv8.patch b/buildroot/package/mplayer/0003-configure-armv8.patch deleted file mode 100644 index 98686433fbf..00000000000 --- a/buildroot/package/mplayer/0003-configure-armv8.patch +++ /dev/null @@ -1,43 +0,0 @@ -Fix aarch64 compile by adding HAVE_ARMV8 define - -Fixes build errors seen on the buildroot autobuilders: -http://autobuild.buildroot.net/results/5f8/5f85c32eb89aac48ae8da892d9800bd13274cd3e/build-end.log - -libavutil/aarch64/cpu.c: In function 'ff_get_cpu_flags_aarch64': -libavutil/aarch64/cpu.c:25:32: error: 'HAVE_ARMV8' undeclared (first use in this function) - return AV_CPU_FLAG_ARMV8 * HAVE_ARMV8 | - -Signed-off-by: Bernd Kuhls -(patch sent upstream: - http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2016-May/073496.html) - -Index: configure -=================================================================== ---- a/configure (revision 37871) -+++ b/configure (working copy) -@@ -1445,6 +1445,8 @@ - --disable-armv6) _armv6=no ;; - --enable-armv6t2) _armv6t2=yes ;; - --disable-armv6t2) _armv6t2=no ;; -+ --enable-armv8) _armv8=yes ;; -+ --disable-armv8) _armv8=no ;; - --enable-armvfp) _armvfp=yes ;; - --disable-armvfp) _armvfp=no ;; - --enable-vfpv3) vfpv3=yes ;; -@@ -3261,7 +3263,7 @@ - echores "$_iwmmxt" - fi - --cpuexts_all='ALTIVEC XOP AVX AVX2 FMA3 FMA4 MMX MMX2 MMXEXT AMD3DNOW AMD3DNOWEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE42 FAST_CMOV I686 FAST_CLZ ARMV5TE ARMV6 ARMV6T2 VFP VFPV3 SETEND NEON IWMMXT MMI VIS MVI' -+cpuexts_all='ALTIVEC XOP AVX AVX2 FMA3 FMA4 MMX MMX2 MMXEXT AMD3DNOW AMD3DNOWEXT SSE SSE2 SSE3 SSSE3 SSE4 SSE42 FAST_CMOV I686 FAST_CLZ ARMV5TE ARMV6 ARMV6T2 ARMV8 VFP VFPV3 SETEND NEON IWMMXT MMI VIS MVI' - test "$_altivec" = yes && cpuexts="ALTIVEC $cpuexts" - test "$_mmx" = yes && cpuexts="MMX $cpuexts" - test "$_mmxext" = yes && cpuexts="MMX2 $cpuexts" -@@ -3285,6 +3287,7 @@ - test "$_armv5te" = yes && cpuexts="ARMV5TE $cpuexts" - test "$_armv6" = yes && cpuexts="ARMV6 $cpuexts" - test "$_armv6t2" = yes && cpuexts="ARMV6T2 $cpuexts" -+test "$_armv8" = yes && cpuexts="ARMV8 $cpuexts" - test "$_armvfp" = yes && cpuexts="VFP $cpuexts" - test "$vfpv3" = yes && cpuexts="VFPV3 $cpuexts" - test "$setend" = yes && cpuexts="SETEND $cpuexts" diff --git a/buildroot/package/mplayer/0004-configure-zlib.patch b/buildroot/package/mplayer/0004-configure-zlib.patch deleted file mode 100644 index 7c1b2c8ec02..00000000000 --- a/buildroot/package/mplayer/0004-configure-zlib.patch +++ /dev/null @@ -1,30 +0,0 @@ -configure: Fix compilation when zlib is missing. - -Downloaded from upstream commit: - -$ LC_ALL=C svn log -r 37816 ------------------------------------------------------------------------- -r37816 | reimar | 2016-02-28 14:39:42 +0100 (Sun, 28 Feb 2016) | 3 lines - -configure: Fix compilation when zlib is missing. - -APNG and a few other decoders also cannot be enabled without it. ------------------------------------------------------------------------- - -Signed-off-by: Bernd Kuhls - -Index: configure -=================================================================== ---- a/configure (revision 37795) -+++ b/configure (revision 37816) -@@ -6464,8 +6464,8 @@ - mplayer_encoders="$mplayer_encoders PNG_ENCODER" - else - def_zlib='#define CONFIG_ZLIB 0' -- libavdecoders=$(filter_out_component decoder 'FLASHSV FLASHSV2 PNG ZMBV ZLIB DXA EXR G2M TSCC ZEROCODEC') -- libavencoders=$(filter_out_component encoder 'FLASHSV FLASHSV2 PNG ZMBV ZLIB') -+ libavdecoders=$(filter_out_component decoder 'APNG FLASHSV FLASHSV2 PNG ZMBV ZLIB DXA EXR G2M RSCC SCREENPRESSO TDSC TSCC ZEROCODEC') -+ libavencoders=$(filter_out_component encoder 'APNG FLASHSV FLASHSV2 PNG ZMBV ZLIB') - fi - echores "$_zlib" - diff --git a/buildroot/package/mplayer/0005-tremor-ogg.patch b/buildroot/package/mplayer/0005-tremor-ogg.patch deleted file mode 100644 index b4d65052a32..00000000000 --- a/buildroot/package/mplayer/0005-tremor-ogg.patch +++ /dev/null @@ -1,29 +0,0 @@ -Fix static linking with tremor & libogg - -The order of the libraries needs to be changed to fix a bug during -static linking caught by buildroot autobuilders: - -http://autobuild.buildroot.net/results/bc9/bc98fa585399b53ea181dbaf392b93424145911d/ - -/home/test/autobuild/instance-3/output/host/usr/powerpc-buildroot-linux-uclibc/sysroot/usr/lib/libvorbisidec.a(synthesis.o): In function `_vorbis_synthesis1': -synthesis.c:(.text+0x90): undefined reference to `oggpack_readinit' -synthesis.c:(.text+0x9c): undefined reference to `oggpack_read' -[...] - -Signed-off-by: Bernd Kuhls -(patch sent upstream: - http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2016-July/073501.html) - -Index: configure -=================================================================== ---- a/configure (revision 37873) -+++ b/configure (working copy) -@@ -6629,7 +6629,7 @@ - def_tremor='#define CONFIG_TREMOR 1' - codecmodules="tremor $codecmodules" - res_comment="integer libvorbis" -- extra_ldflags="$extra_ldflags -logg -lvorbisidec" -+ extra_ldflags="$extra_ldflags -lvorbisidec -logg" - elif test "$_libvorbis" = yes ; then - _vorbis=yes - def_vorbis='#define CONFIG_OGGVORBIS 1' diff --git a/buildroot/package/mplayer/0006-musl-ldt.patch b/buildroot/package/mplayer/0006-musl-ldt.patch deleted file mode 100644 index 8165f6f56ae..00000000000 --- a/buildroot/package/mplayer/0006-musl-ldt.patch +++ /dev/null @@ -1,22 +0,0 @@ -Fixes musl build error - -loader/ldt_keeper.o: In function `Setup_LDT_Keeper': -ldt_keeper.c:(.text+0xab): undefined reference to `modify_ldt' - -Downloaded from -https://github.com/dimkr/rlsd2/blob/master/rules/mplayer/musl.patch - -Signed-off-by: Bernd Kuhls - -diff -rup MPlayer-1.1.1-orig/loader/ldt_keeper.c MPlayer-1.1.1/loader/ldt_keeper.c ---- MPlayer-1.1.1-orig/loader/ldt_keeper.c 2015-04-23 15:07:09.580805888 +0300 -+++ MPlayer-1.1.1/loader/ldt_keeper.c 2015-04-23 15:08:07.736807270 +0300 -@@ -47,7 +47,7 @@ - #if defined(__GLIBC__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ == 0)) - _syscall3( int, modify_ldt, int, func, void *, ptr, unsigned long, bytecount ); - #else --int modify_ldt(int func, void *ptr, unsigned long bytecount); -+#define modify_ldt(func, ptr, bytecount) syscall(__NR_modify_ldt, func, ptr, bytecount) - #endif - #else - #if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) diff --git a/buildroot/package/mplayer/0007-fixmmx.patch b/buildroot/package/mplayer/0007-fixmmx.patch deleted file mode 100644 index 9634a3b667b..00000000000 --- a/buildroot/package/mplayer/0007-fixmmx.patch +++ /dev/null @@ -1,77 +0,0 @@ -fix compilation failure with MMX - -Fixes -libmpcodecs/vf_fspp.c: In function 'column_fidct_c': -libmpcodecs/vf_fspp.c:750:5: error: unknown type name 'int_simd16_t' -libmpcodecs/vf_fspp.c:751:5: error: unknown type name 'int_simd16_t' -libmpcodecs/vf_fspp.c:752:5: error: unknown type name 'int_simd16_t' -libmpcodecs/vf_fspp.c:753:5: error: unknown type name 'int_simd16_t' -libmpcodecs/vf_fspp.c:789:18: error: 'FIX_0_707106781' undeclared (first use in this function) -libmpcodecs/vf_fspp.c:789:18: note: each undeclared identifier is reported only once for each function it appears in -libmpcodecs/vf_fspp.c:804:21: error: 'FIX_1_414213562_A' undeclared (first use in this function) -libmpcodecs/vf_fspp.c:817:18: error: 'FIX_0_382683433' undeclared (first use in this function) -libmpcodecs/vf_fspp.c:818:18: error: 'FIX_0_541196100' undeclared (first use in this function) -libmpcodecs/vf_fspp.c:819:18: error: 'FIX_1_306562965' undeclared (first use in this function) -libmpcodecs/vf_fspp.c:844:21: error: 'FIX_1_414213562' undeclared (first use in this function) -libmpcodecs/vf_fspp.c:845:21: error: 'FIX_1_847759065' undeclared (first use in this function) -libmpcodecs/vf_fspp.c:846:21: error: 'FIX_1_082392200' undeclared (first use in this function) -libmpcodecs/vf_fspp.c:847:21: error: 'FIX_2_613125930' undeclared (first use in this function) - -found using this defconfig after fixing the original bug: -http://autobuild.buildroot.net/results/642/6422adeef19ec547c7bc3f8ad3b0d51702015240/ - -Downloaded from upstream mailinglist: -http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2016-May/073488.html - -Signed-off-by: Bernd Kuhls - -diff -uNr MPlayer-1.3.0.org/libmpcodecs/vf_fspp.c MPlayer-1.3.0/libmpcodecs/vf_fspp.c ---- MPlayer-1.3.0.org/libmpcodecs/vf_fspp.c 2015-10-17 21:44:31.000000000 +0200 -+++ MPlayer-1.3.0/libmpcodecs/vf_fspp.c 2017-04-10 21:26:57.771819064 +0200 -@@ -173,7 +173,6 @@ - #define store_slice_s store_slice_c - #define store_slice2_s store_slice2_c - #define mul_thrmat_s mul_thrmat_c --#define column_fidct_s column_fidct_c - #define row_idct_s row_idct_c - #define row_fdct_s row_fdct_c - -@@ -393,7 +392,6 @@ - ); - } - --static void column_fidct_mmx(int16_t* thr_adr, int16_t *data, int16_t *output, int cnt); - static void row_idct_mmx(int16_t* workspace, - int16_t* output_adr, int output_stride, int cnt); - static void row_fdct_mmx(int16_t *data, const uint8_t *pixels, int line_size, int cnt); -@@ -401,11 +399,18 @@ - #define store_slice_s store_slice_mmx - #define store_slice2_s store_slice2_mmx - #define mul_thrmat_s mul_thrmat_mmx --#define column_fidct_s column_fidct_mmx - #define row_idct_s row_idct_mmx - #define row_fdct_s row_fdct_mmx - #endif // HAVE_MMX_INLINE - -+#if !HAVE_MMXEXT_INLINE -+static void column_fidct_c(int16_t* thr_adr, int16_t *data, int16_t *output, int cnt); -+#define column_fidct_s column_fidct_c -+#else -+static void column_fidct_mmx(int16_t* thr_adr, int16_t *data, int16_t *output, int cnt); -+#define column_fidct_s column_fidct_mmx -+#endif -+ - static void filter(struct vf_priv_s *p, uint8_t *dst, uint8_t *src, - int dst_stride, int src_stride, - int width, int height, -@@ -728,7 +733,9 @@ - DECLARE_ASM_CONST(8, uint64_t, MM_DESCALE_RND)=C64(4); - DECLARE_ASM_CONST(8, uint64_t, MM_2)=C64(2); - --#else /* !HAVE_MMXEXT_INLINE */ -+#endif /* !HAVE_MMX_INLINE */ -+ -+#if !HAVE_MMX_INLINE || !HAVE_MMXEXT_INLINE - - typedef int32_t int_simd16_t; - static const int16_t FIX_0_382683433=FIX(0.382683433, 14); diff --git a/buildroot/package/mplayer/Config.in b/buildroot/package/mplayer/Config.in deleted file mode 100644 index 15c903ae7ba..00000000000 --- a/buildroot/package/mplayer/Config.in +++ /dev/null @@ -1,42 +0,0 @@ -config BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS - bool - default y - # Those architectures are not supported by MPlayer - depends on !(BR2_bfin || BR2_sh2a || BR2_sh4a || BR2_sh4aeb \ - || BR2_m68k || BR2_microblaze || BR2_nios2 || BR2_or1k) - # Broken support for +Date: Thu, 30 Nov 2017 16:05:49 +0000 +Subject: [PATCH] Fix build with musl libc + +Signed-off-by: Baruch Siach +--- +Upstream status: commit 19c37f8d02cf + + multicat.c | 7 ++----- + util.h | 3 ++- + 2 files changed, 4 insertions(+), 6 deletions(-) + +diff --git a/multicat.c b/multicat.c +index eeab930fc1db..e8b6874d6f4c 100644 +--- a/multicat.c ++++ b/multicat.c +@@ -1,7 +1,7 @@ + /***************************************************************************** + * multicat.c: netcat-equivalent for multicast + ***************************************************************************** +- * Copyright (C) 2009, 2011-2012, 2015-2016 VideoLAN ++ * Copyright (C) 2009, 2011-2012, 2015-2017 VideoLAN + * $Id$ + * + * Authors: Christophe Massiot +@@ -43,10 +43,7 @@ + #include + #include + #include +- +-#ifdef __FreeBSD__ +-# include +-#endif ++#include + + #ifdef SIOCGSTAMPNS + # define HAVE_TIMESTAMPS +diff --git a/util.h b/util.h +index 1959a2edb155..724e7d843d22 100644 +--- a/util.h ++++ b/util.h +@@ -1,7 +1,7 @@ + /***************************************************************************** + * util.h: Utils for the multicat suite + ***************************************************************************** +- * Copyright (C) 2009, 2011, 2014-2016 VideoLAN ++ * Copyright (C) 2009, 2011, 2014-2017 VideoLAN + * $Id$ + * + * Authors: Christophe Massiot +@@ -23,6 +23,7 @@ + + #include + #include ++#include + + #if defined(__APPLE__) || defined(__FreeBSD__) + #define POLLRDHUP 0 +-- +2.17.0 + diff --git a/buildroot/package/multicat/0001-Fix-missing-pthread.patch b/buildroot/package/multicat/0001-Fix-missing-pthread.patch deleted file mode 100644 index 1ad2c987721..00000000000 --- a/buildroot/package/multicat/0001-Fix-missing-pthread.patch +++ /dev/null @@ -1,20 +0,0 @@ -Makefile: link with pthread - -Otherwise building multicat in a static context fails: - aggregartp.c:381: undefined reference to `pthread_self' - -Signed-off-by: Jテカrg Krause -Sent upstream: https://mailman.videolan.org/pipermail/multicat-devel/2016-March/000125.html - -diff -purN multicat-2.1.orig/Makefile multicat-2.1/Makefile ---- multicat-2.1.orig/Makefile 2015-10-05 18:36:29.000000000 +0200 -+++ multicat-2.1/Makefile 2016-03-19 21:47:59.467745127 +0100 -@@ -4,7 +4,7 @@ VERSION = 2.1 - CFLAGS += -Wall -Wformat-security -O3 -fomit-frame-pointer -D_FILE_OFFSET_BITS=64 -D_ISOC99_SOURCE -D_BSD_SOURCE - CFLAGS += -g - # Comment out the following line for Mac OS X build --LDLIBS += -lrt -+LDLIBS += -lrt -pthread - - OBJ_MULTICAT = multicat.o util.o - OBJ_INGESTS = ingests.o util.o diff --git a/buildroot/package/multicat/0002-Fix-musl-build.patch b/buildroot/package/multicat/0002-Fix-musl-build.patch deleted file mode 100644 index 07e15a353a0..00000000000 --- a/buildroot/package/multicat/0002-Fix-musl-build.patch +++ /dev/null @@ -1,47 +0,0 @@ -Fix musl build - -Defining _GNU_SOURCE is required to get proper member names in `struct udphdr` -when building against musl. Build error: - - util.c: In function 'RawFillHeaders': - util.c:481:9: error: 'struct udphdr' has no member named 'source' - udph->source = htons(portsrc); - ^ - util.c:482:9: error: 'struct udphdr' has no member named 'dest' - udph->dest = htons(portdst); - ^ - util.c:483:9: error: 'struct udphdr' has no member named 'len' - udph->len = htons(sizeof(struct udphdr) + len); - ^ - util.c:484:9: error: 'struct udphdr' has no member named 'check' - udph->check = 0; - -Including in needed for mode_t, otherwise musl build fails: - util.h:91:1: error: unknown type name 'mode_t' - -Signed-off-by: Jテカrg Krause -Sent upstream: https://mailman.videolan.org/pipermail/multicat-devel/2016-March/000126.html - -diff -purN multicat-2.1.orig/util.c multicat-2.1/util.c ---- multicat-2.1.orig/util.c 2015-07-17 18:03:17.000000000 +0200 -+++ multicat-2.1/util.c 2016-03-19 22:21:01.110178772 +0100 -@@ -21,6 +21,8 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. - *****************************************************************************/ - -+#define _GNU_SOURCE -+ - #include - #include - #include -diff -purN multicat-2.1.orig/util.h multicat-2.1/util.h ---- multicat-2.1.orig/util.h 2015-07-15 22:47:39.000000000 +0200 -+++ multicat-2.1/util.h 2016-03-19 22:21:58.649834990 +0100 -@@ -21,6 +21,7 @@ - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. - *****************************************************************************/ - -+#include - #include - #include - diff --git a/buildroot/package/multicat/0003-Fix-have-clock-nanosleep-with-uclibc.patch b/buildroot/package/multicat/0003-Fix-have-clock-nanosleep-with-uclibc.patch deleted file mode 100644 index 108fb0b85b8..00000000000 --- a/buildroot/package/multicat/0003-Fix-have-clock-nanosleep-with-uclibc.patch +++ /dev/null @@ -1,24 +0,0 @@ -uClibc may be configured without support for clock_nanosleep(). The function is -only available with uClibc if the C library is build with NPTL support (sets -__UCLIBC_HAS_THREADS_NATIVE__) and __UCLIBC_HAS_ADVANCED_REALTIME__ set. - -Upstream status: Pending -https://mailman.videolan.org/pipermail/multicat-devel/2016-March/000129.html - -Signed-off-by: Jテカrg Krause - -diff -purN multicat-2.1.orig/util.h multicat-2.1/util.h ---- multicat-2.1.orig/util.h 2015-07-15 22:47:39.000000000 +0200 -+++ multicat-2.1/util.h 2016-03-20 18:13:51.899780405 +0100 -@@ -26,7 +26,10 @@ - - #ifdef __APPLE__ - #define POLLRDHUP 0 --#else -+/* uClibc may not have clock_nanosleep() available */ -+#elif !defined (__UCLIBC__) || \ -+ defined (__UCLIBC__) && defined (__UCLIBC_HAS_THREADS_NATIVE__) \ -+ && defined (__UCLIBC_HAS_ADVANCED_REALTIME__) - #define HAVE_CLOCK_NANOSLEEP - #endif - diff --git a/buildroot/package/multicat/multicat.hash b/buildroot/package/multicat/multicat.hash index 38cf9d7dc4e..0f718d0e0e6 100644 --- a/buildroot/package/multicat/multicat.hash +++ b/buildroot/package/multicat/multicat.hash @@ -1,4 +1,5 @@ -# from https://get.videolan.org/multicat/2.1/multicat-2.1.tar.bz2.md5 -md5 2e3ecd8dee64f5bd32a61733d4cc2226 multicat-2.1.tar.bz2 +# from https://get.videolan.org/multicat/2.2/multicat-2.2.tar.bz2.md5 +md5 91bd35aa5aa94c370664276bd5af6f48 multicat-2.2.tar.bz2 # locally calculated -sha256 5eabe8d9a3dde452b2d348683cc7da213680551a9d4059c356f7319c6aa9b3d1 multicat-2.1.tar.bz2 +sha256 fa4e48b38665658df7719293f9358df08f59f3eb7f7b77df510b35951e316b40 multicat-2.2.tar.bz2 +sha256 94f68aec169fb6c9937eade757251714d38a56812be5dbfc3973914a71ad8d2d COPYING diff --git a/buildroot/package/multicat/multicat.mk b/buildroot/package/multicat/multicat.mk index 6f882667bd7..67cebec26ad 100644 --- a/buildroot/package/multicat/multicat.mk +++ b/buildroot/package/multicat/multicat.mk @@ -4,7 +4,7 @@ # ################################################################################ -MULTICAT_VERSION = 2.1 +MULTICAT_VERSION = 2.2 MULTICAT_SOURCE = multicat-$(MULTICAT_VERSION).tar.bz2 MULTICAT_SITE = https://get.videolan.org/multicat/$(MULTICAT_VERSION) MULTICAT_LICENSE = GPL-2.0+ @@ -12,7 +12,9 @@ MULTICAT_LICENSE_FILES = COPYING MULTICAT_DEPENDENCIES = bitstream -MULTICAT_MAKE_ENV = $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) +# 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) diff --git a/buildroot/package/musl-compat-headers/musl-compat-headers.mk b/buildroot/package/musl-compat-headers/musl-compat-headers.mk index 91f5074ef60..1cfa894879a 100644 --- a/buildroot/package/musl-compat-headers/musl-compat-headers.mk +++ b/buildroot/package/musl-compat-headers/musl-compat-headers.mk @@ -20,7 +20,7 @@ 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 $(DL_DIR)/$(notdir $(MUSL_COMPAT_HEADERS_QUEUE_H)) $(@D)/queue.h + $(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 diff --git a/buildroot/package/musl/musl.hash b/buildroot/package/musl/musl.hash index 68e6aab1fdc..c011bbb7114 100644 --- a/buildroot/package/musl/musl.hash +++ b/buildroot/package/musl/musl.hash @@ -1,3 +1,4 @@ # Locally calculated after checking pgp signature from -# http://www.musl-libc.org/releases/musl-1.1.18.tar.gz.asc -sha256 d017ee5d01aec0c522a1330fdff06b1e428cb409e1db819cc4935d5da4a5a118 musl-1.1.18.tar.gz +# http://www.musl-libc.org/releases/musl-1.1.19.tar.gz.asc +sha256 db59a8578226b98373f5b27e61f0dd29ad2456f4aa9cec587ba8c24508e4c1d9 musl-1.1.19.tar.gz +sha256 15d9afbf84041872b4d840ed7d165d3eee786ff3f97e703b10467c259ff4e7d9 COPYRIGHT diff --git a/buildroot/package/musl/musl.mk b/buildroot/package/musl/musl.mk index b1aace0400b..fa775d1e787 100644 --- a/buildroot/package/musl/musl.mk +++ b/buildroot/package/musl/musl.mk @@ -4,7 +4,7 @@ # ################################################################################ -MUSL_VERSION = 1.1.18 +MUSL_VERSION = 1.1.19 MUSL_SITE = http://www.musl-libc.org/releases MUSL_LICENSE = MIT MUSL_LICENSE_FILES = COPYRIGHT diff --git a/buildroot/package/mutt/mutt.hash b/buildroot/package/mutt/mutt.hash index f6dc472d482..cab8d2db684 100644 --- a/buildroot/package/mutt/mutt.hash +++ b/buildroot/package/mutt/mutt.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 9b81746d67ffeca5ea44f60893b70dc93c86d4bc10187d4dd360185e4d42ed42 mutt-1.8.3.tar.gz +sha256 bf617e64ae4e08a998bef8e42a965a211587e051f1437a3a4884b351a9385753 mutt-1.9.5.tar.gz +sha256 732f24b69a6c71cd8e01e4672bb8e12cc1cbb88a50a4665e6ca4fd95000a57ee GPL diff --git a/buildroot/package/mutt/mutt.mk b/buildroot/package/mutt/mutt.mk index b0bf5a7b413..d224138c57a 100644 --- a/buildroot/package/mutt/mutt.mk +++ b/buildroot/package/mutt/mutt.mk @@ -4,7 +4,7 @@ # ################################################################################ -MUTT_VERSION = 1.8.3 +MUTT_VERSION = 1.9.5 MUTT_SITE = https://bitbucket.org/mutt/mutt/downloads MUTT_LICENSE = GPL-2.0+ MUTT_LICENSE_FILES = GPL diff --git a/buildroot/package/nasm/0001-nasmlib-Drop-unused-seg_init.patch b/buildroot/package/nasm/0001-nasmlib-Drop-unused-seg_init.patch new file mode 100644 index 00000000000..a18d121bfb4 --- /dev/null +++ b/buildroot/package/nasm/0001-nasmlib-Drop-unused-seg_init.patch @@ -0,0 +1,32 @@ +From 5eb1838b4d3752fd863d19442943983a2a5ee87c Mon Sep 17 00:00:00 2001 +From: Cyrill Gorcunov +Date: Sat, 10 Feb 2018 00:33:41 +0300 +Subject: [PATCH] nasmlib: Drop unused seg_init + +The helper has been eliminated in 2c4a4d5810d0a59b033a07876a2648ef5d4c2859 + +https://bugzilla.nasm.us/show_bug.cgi?id=3392461 + +Signed-off-by: Cyrill Gorcunov +--- + include/nasmlib.h | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/include/nasmlib.h b/include/nasmlib.h +index 79e866b5..fee1b5ea 100644 +--- a/include/nasmlib.h ++++ b/include/nasmlib.h +@@ -188,10 +188,8 @@ int64_t readnum(char *str, bool *error); + int64_t readstrnum(char *str, int length, bool *warn); + + /* +- * seg_init: Initialise the segment-number allocator. + * seg_alloc: allocate a hitherto unused segment number. + */ +-void pure_func seg_init(void); + int32_t pure_func seg_alloc(void); + + /* +-- +2.17.0 + diff --git a/buildroot/package/nasm/nasm.hash b/buildroot/package/nasm/nasm.hash index 260e5d7bc4d..db5b8571932 100644 --- a/buildroot/package/nasm/nasm.hash +++ b/buildroot/package/nasm/nasm.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 8ac3235f49a6838ff7a8d7ef7c19a4430d0deecc0c2d3e3e237b5e9f53291757 nasm-2.13.02.tar.xz +sha256 812ecfb0dcbc5bd409aaa8f61c7de94c5b8752a7b00c632883d15b2ed6452573 nasm-2.13.03.tar.xz sha256 1563996c52e220e15ef2418e67d39488255aa8c28c89e617074d3afe3ee329e0 LICENSE diff --git a/buildroot/package/nasm/nasm.mk b/buildroot/package/nasm/nasm.mk index ee3fd9c542d..76bcca3bbf7 100644 --- a/buildroot/package/nasm/nasm.mk +++ b/buildroot/package/nasm/nasm.mk @@ -4,7 +4,7 @@ # ################################################################################ -NASM_VERSION = 2.13.02 +NASM_VERSION = 2.13.03 NASM_SOURCE = nasm-$(NASM_VERSION).tar.xz NASM_SITE = http://www.nasm.us/pub/nasm/releasebuilds/$(NASM_VERSION) NASM_LICENSE = BSD-2-Clause diff --git a/buildroot/package/ncmpc/ncmpc.hash b/buildroot/package/ncmpc/ncmpc.hash index 82fae1d78c2..0e9a4a903c6 100644 --- a/buildroot/package/ncmpc/ncmpc.hash +++ b/buildroot/package/ncmpc/ncmpc.hash @@ -1,2 +1,5 @@ # Locally calculated after checking pgp signature -sha256 f9a26a3fc869cfdf0a16b0ea3e6512c2fe28a031bbc71b1d24a2bf0bbd3e15d9 ncmpc-0.27.tar.xz +sha256 ef68a9b67172383ea80ee46579015109433fa058728812d2b0ebede660d85f12 ncmpc-0.29.tar.xz + +# Hash for license file: +sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6 COPYING diff --git a/buildroot/package/ncmpc/ncmpc.mk b/buildroot/package/ncmpc/ncmpc.mk index 31b4f08d140..1d464b72de3 100644 --- a/buildroot/package/ncmpc/ncmpc.mk +++ b/buildroot/package/ncmpc/ncmpc.mk @@ -5,11 +5,41 @@ ################################################################################ NCMPC_VERSION_MAJOR = 0 -NCMPC_VERSION = $(NCMPC_VERSION_MAJOR).27 +NCMPC_VERSION = $(NCMPC_VERSION_MAJOR).29 NCMPC_SOURCE = ncmpc-$(NCMPC_VERSION).tar.xz NCMPC_SITE = http://www.musicpd.org/download/ncmpc/$(NCMPC_VERSION_MAJOR) -NCMPC_DEPENDENCIES = host-pkgconf libglib2 libmpdclient ncurses +NCMPC_DEPENDENCIES = host-meson host-pkgconf libglib2 libmpdclient ncurses NCMPC_LICENSE = GPL-2.0+ NCMPC_LICENSE_FILES = COPYING -$(eval $(autotools-package)) +NCMPC_CONF_OPTS += \ + --prefix=/usr \ + -Dcurses=ncurses \ + --buildtype $(if $(BR2_ENABLE_DEBUG),debug,release) \ + --cross-file $(HOST_DIR)/etc/meson/cross-compilation.conf + +ifeq ($(BR2_PACKAGE_LIRC_TOOLS),y) +NCMPC_DEPENDENCIES += lirc-tools +NCMPC_CONF_OPTS += -Dlirc=true +else +NCMPC_CONF_OPTS += -Dlirc=false +endif + +NCMPC_NINJA_OPTS = $(if $(VERBOSE),-v) + +define NCMPC_CONFIGURE_CMDS + rm -rf $(@D)/build + mkdir -p $(@D)/build + $(TARGET_MAKE_ENV) meson $(NCMPC_CONF_OPTS) $(@D) $(@D)/build +endef + +define NCMPC_BUILD_CMDS + $(TARGET_MAKE_ENV) ninja $(NCMPC_NINJA_OPTS) -C $(@D)/build +endef + +define NCMPC_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) DESTDIR=$(TARGET_DIR) \ + ninja $(NCMPC_NINJA_OPTS) -C $(@D)/build install +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/ncurses/0001-gcc-5.x-MKlib_gen.patch b/buildroot/package/ncurses/0001-gcc-5.x-MKlib_gen.patch index df7c15fee97..0106e8077fe 100644 --- a/buildroot/package/ncurses/0001-gcc-5.x-MKlib_gen.patch +++ b/buildroot/package/ncurses/0001-gcc-5.x-MKlib_gen.patch @@ -11,10 +11,11 @@ http://ncurses.scripts.mit.edu/?p=ncurses.git;a=commit;h=97bb4678dc03e753290b39b Original author: Thomas E. Dickey Signed-off-by: Mikhail Peselnik - +[Adam Duskett: Refresh for 6.1] +Signed-off-by: Adam Duskett --- a/ncurses/base/MKlib_gen.sh 2015-08-06 20:48:24.000000000 -0400 +++ b/ncurses/base/MKlib_gen.sh 2017-02-07 10:09:01.293962392 -0500 -@@ -491,11 +491,22 @@ +@@ -505,11 +505,22 @@ -e 's/gen_$//' \ -e 's/ / /g' >>$TMP diff --git a/buildroot/package/ncurses/0002-recognise-uclinux.patch b/buildroot/package/ncurses/0002-recognise-uclinux.patch deleted file mode 100644 index 57dd4cf37fd..00000000000 --- a/buildroot/package/ncurses/0002-recognise-uclinux.patch +++ /dev/null @@ -1,29 +0,0 @@ -aclocal: fix detection for uclinux hosts -uclinux is just a linux like the others... - -Signed-off-by: "Yann E. MORIN" -Signed-off-by: "Adam Duskett" - ---- a/aclocal.m4 2015-08-05 20:46:34.000000000 -0400 -+++ b/aclocal.m4 2017-02-07 09:58:17.770056849 -0500 -@@ -7656,7 +7656,7 @@ - cf_xopen_source="-D_SGI_SOURCE" - cf_XOPEN_SOURCE= - ;; --(linux*|gnu*|mint*|k*bsd*-gnu) -+(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu) - CF_GNU_SOURCE - ;; - (minix*) -diff -durN a/configure b/configure ---- a/configure 2015-08-05 05:20:32.000000000 -0400 -+++ b/configure 2017-02-07 09:58:52.883886426 -0500 -@@ -7869,7 +7869,7 @@ - cf_xopen_source="-D_SGI_SOURCE" - cf_XOPEN_SOURCE= - ;; --(linux*|gnu*|mint*|k*bsd*-gnu) -+(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu) - - echo "$as_me:7874: checking if we must define _GNU_SOURCE" >&5 - echo $ECHO_N "checking if we must define _GNU_SOURCE... $ECHO_C" >&6 diff --git a/buildroot/package/ncurses/Config.in b/buildroot/package/ncurses/Config.in index bb45bd8dc0e..9f7753b06aa 100644 --- a/buildroot/package/ncurses/Config.in +++ b/buildroot/package/ncurses/Config.in @@ -13,8 +13,6 @@ if BR2_PACKAGE_NCURSES config BR2_PACKAGE_NCURSES_WCHAR bool "enable wide char support" depends on BR2_USE_WCHAR - # Build broken @ curses.priv.h with bad declarations - depends on !(BR2_bfin && BR2_BINFMT_FLAT) help Enable wide char & UTF-8 support in ncurses libraries @@ -23,4 +21,14 @@ config BR2_PACKAGE_NCURSES_TARGET_PROGS 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/buildroot/package/ncurses/ncurses.hash b/buildroot/package/ncurses/ncurses.hash index 6bca1438360..045625ae3b1 100644 --- a/buildroot/package/ncurses/ncurses.hash +++ b/buildroot/package/ncurses/ncurses.hash @@ -1,2 +1,2 @@ # Locally calculated after checking pgp signature -sha256 f551c24b30ce8bfb6e96d9f59b42fbea30fa3a6123384172f9e7284bcf647260 ncurses-6.0.tar.gz +sha256 aa057eeeb4a14d470101eff4597d5833dcef5965331be3528c08d99cebaa0d17 ncurses-6.1.tar.gz diff --git a/buildroot/package/ncurses/ncurses.mk b/buildroot/package/ncurses/ncurses.mk index e63b6e4aed2..90cf4a4dc5b 100644 --- a/buildroot/package/ncurses/ncurses.mk +++ b/buildroot/package/ncurses/ncurses.mk @@ -4,7 +4,7 @@ # ################################################################################ -NCURSES_VERSION = 6.0 +NCURSES_VERSION = 6.1 NCURSES_SITE = $(BR2_GNU_MIRROR)/ncurses NCURSES_INSTALL_STAGING = YES NCURSES_DEPENDENCIES = host-ncurses @@ -25,6 +25,7 @@ NCURSES_CONF_OPTS = \ --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 @@ -63,7 +64,8 @@ NCURSES_TERMINFO_FILES = \ x/xterm+256color \ x/xterm-256color \ x/xterm-color \ - x/xterm-xfree86 + x/xterm-xfree86 \ + $(call qstrip,$(BR2_PACKAGE_NCURSES_ADDITIONAL_TERMINFO)) ifeq ($(BR2_PACKAGE_NCURSES_WCHAR),y) NCURSES_CONF_OPTS += --enable-widec diff --git a/buildroot/package/neard/S53neard b/buildroot/package/neard/S53neard index f515668389a..4fd4e0aad3d 100755 --- a/buildroot/package/neard/S53neard +++ b/buildroot/package/neard/S53neard @@ -4,15 +4,11 @@ # NAME=neard -DAEMON=/usr/libexec/nfc/$NAME - -# Exit gracefully if the package has been removed -[ -x $DAEMON ] || exit 0 case "$1" in start) printf "Starting $NAME: " - start-stop-daemon -S -q -p /var/run/${NAME}.pid -x $DAEMON -- -d '*' + start-stop-daemon -S -q -p /var/run/${NAME}.pid -x /usr/libexec/nfc/neard -- -d '*' echo "OK" ;; stop) diff --git a/buildroot/package/netcat-openbsd/netcat-openbsd.hash b/buildroot/package/netcat-openbsd/netcat-openbsd.hash index 1bf62bbcd6c..2cf47134497 100644 --- a/buildroot/package/netcat-openbsd/netcat-openbsd.hash +++ b/buildroot/package/netcat-openbsd/netcat-openbsd.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 63d72b4e5ea629af148d6d655125dcbe48f4996a8a2a8c5e234c62eba2856b5f netcat-openbsd-debian_1.187-1.tar.gz +sha256 06b04b163e8c923943b9fc276eea555625f615a530d5bd8fbdbc1af9b2b0d5db netcat-openbsd-debian_1.190-1.tar.gz sha256 e2e86d58c38f044a49f51e45515747585db58a2305419c73323eaad88fcaef5c debian/copyright diff --git a/buildroot/package/netcat-openbsd/netcat-openbsd.mk b/buildroot/package/netcat-openbsd/netcat-openbsd.mk index 6d3be500ebe..5784e4d68e2 100644 --- a/buildroot/package/netcat-openbsd/netcat-openbsd.mk +++ b/buildroot/package/netcat-openbsd/netcat-openbsd.mk @@ -4,7 +4,7 @@ # ################################################################################ -NETCAT_OPENBSD_VERSION = debian/1.187-1 +NETCAT_OPENBSD_VERSION = debian/1.190-1 NETCAT_OPENBSD_SITE = git://anonscm.debian.org/collab-maint/netcat-openbsd NETCAT_OPENBSD_LICENSE = BSD-3-Clause NETCAT_OPENBSD_LICENSE_FILES = debian/copyright diff --git a/buildroot/package/netcat/netcat.mk b/buildroot/package/netcat/netcat.mk index eb7ddcac272..d8b3c930b93 100644 --- a/buildroot/package/netcat/netcat.mk +++ b/buildroot/package/netcat/netcat.mk @@ -9,4 +9,17 @@ NETCAT_SITE = http://downloads.sourceforge.net/project/netcat/netcat/$(NETCAT_VE NETCAT_LICENSE = GPL-2.0+ NETCAT_LICENSE_FILES = COPYING +# Ensure Busybox gets built/installed before, so that this package +# overrides Busybox nc. +ifeq ($(BR2_PACKAGE_BUSYBOX),y) +NETCAT_DEPENDENCIES += busybox +endif + +# Netcat doesn't overwrite a pre-existing 'nc' (e.g. from busybox) so +# force-remove it. +define NETCAT_RMOVE_NC_LINK + rm -f $(TARGET_DIR)/usr/bin/nc +endef +NETCAT_PRE_INSTALL_TARGET_HOOKS += NETCAT_RMOVE_NC_LINK + $(eval $(autotools-package)) diff --git a/buildroot/package/netplug/S29netplug b/buildroot/package/netplug/S29netplug index d3df9ddff53..03422499d65 100755 --- a/buildroot/package/netplug/S29netplug +++ b/buildroot/package/netplug/S29netplug @@ -32,8 +32,6 @@ elif [ ! -f /etc/network/interfaces ]; then exit 0 fi -[ -x /sbin/netplugd ] || exit 0 - if [ -f /etc/sysconfig/netplugd ]; then . /etc/sysconfig/netplugd fi diff --git a/buildroot/package/netsnmp/S59snmpd b/buildroot/package/netsnmp/S59snmpd index 4ff844ee3ae..96ed8237ac0 100755 --- a/buildroot/package/netsnmp/S59snmpd +++ b/buildroot/package/netsnmp/S59snmpd @@ -14,9 +14,6 @@ export PATH=/sbin:/usr/sbin:/bin:/usr/bin -test -x /usr/sbin/snmpd || exit 0 -test -x /usr/sbin/snmptrapd || exit 0 - # Defaults export MIBDIRS=/usr/share/snmp/mibs SNMPDRUN=yes diff --git a/buildroot/package/network-manager/S45network-manager b/buildroot/package/network-manager/S45network-manager index f39e20d73b7..bc775d3b201 100755 --- a/buildroot/package/network-manager/S45network-manager +++ b/buildroot/package/network-manager/S45network-manager @@ -1,12 +1,7 @@ #!/bin/sh -prefix=/usr -exec_prefix=/usr -sbindir=${exec_prefix}/sbin - -NETWORKMANAGER_BIN=${sbindir}/NetworkManager - -[ -x $NETWORKMANAGER_BIN ] || exit 0 +# Allow a few customizations from a config file +test -r /etc/default/NetworkManager && . /etc/default/NetworkManager PID=`pidof NetworkManager` case "$1" in @@ -14,7 +9,7 @@ case "$1" in printf "Starting NetworkManager ... " [ ! -d /var/run/NetworkManager ] && install -d /var/run/NetworkManager if [ -z "$PID" ]; then - $NETWORKMANAGER_BIN + /usr/sbin/NetworkManager $NETWORKMANAGER_ARGS fi if [ ! -z "$PID" -o $? -gt 0 ]; then echo "failed!" diff --git a/buildroot/package/nfs-utils/Config.in b/buildroot/package/nfs-utils/Config.in index 4e139363fce..055b711f0d4 100644 --- a/buildroot/package/nfs-utils/Config.in +++ b/buildroot/package/nfs-utils/Config.in @@ -11,7 +11,7 @@ config BR2_PACKAGE_NFS_UTILS help The NFS Linux kernel server. - http://sourceforge.net/projects/nfs + http://linux-nfs.org/ if BR2_PACKAGE_NFS_UTILS diff --git a/buildroot/package/nfs-utils/S60nfs b/buildroot/package/nfs-utils/S60nfs index 893b1e49a67..4183ff62682 100755 --- a/buildroot/package/nfs-utils/S60nfs +++ b/buildroot/package/nfs-utils/S60nfs @@ -3,11 +3,6 @@ # nfs This shell script takes care of starting and stopping # the NFS services. Stolen from RedHat FC5. -[ -x /usr/sbin/rpc.statd ] || exit 0 -[ -x /usr/sbin/rpc.nfsd ] || exit 0 -[ -x /usr/sbin/rpc.mountd ] || exit 0 -[ -x /usr/sbin/exportfs ] || exit 0 - mkdir -p /var/lock/subsys mkdir -p /run/nfs/sm mkdir -p /run/nfs/sm.bak diff --git a/buildroot/package/nftables/0001-src-fix-build-with-older-glibc.patch b/buildroot/package/nftables/0001-src-fix-build-with-older-glibc.patch deleted file mode 100644 index d1ba2953069..00000000000 --- a/buildroot/package/nftables/0001-src-fix-build-with-older-glibc.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 381eaa40735385a1a60e5ab0a7daf4bb847fc2ab Mon Sep 17 00:00:00 2001 -From: Baruch Siach -Date: Fri, 9 Feb 2018 14:42:31 +0200 -Subject: [PATCH] src: fix build with older glibc - -glibc before 2.19 missed the definition of IPPROTO_MH. This leads to -build failure: - -parser_bison.y: In function 'nft_parse': -parser_bison.y:3793:21: error: 'IPPROTO_MH' undeclared (first use in this function) - | MH { $$ = IPPROTO_MH; } - ^ - -Since we have a local definition of IPPROTO_MH in headers.h use that to -fix the build. - -Signed-off-by: Baruch Siach ---- -Upstream status: https://marc.info/?l=netfilter-devel&m=151818061103886&w=2 - - src/parser_bison.y | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/parser_bison.y b/src/parser_bison.y -index 2e79109f4da3..578bfdc10429 100644 ---- a/src/parser_bison.y -+++ b/src/parser_bison.y -@@ -29,6 +29,7 @@ - #include - #include - #include -+#include - #include - #include - #include --- -2.15.1 - diff --git a/buildroot/package/nftables/nftables.hash b/buildroot/package/nftables/nftables.hash index d6ccf7b479a..3effe68f2eb 100644 --- a/buildroot/package/nftables/nftables.hash +++ b/buildroot/package/nftables/nftables.hash @@ -1,6 +1,6 @@ # From http://www.netfilter.org/projects/nftables/downloads.html -sha1 51fd436845718f1221ee198128656ef9055c2588 nftables-0.8.1.tar.bz2 +sha1 533cb3bf17e90579d24f9621fdb22bdb4f7e3287 nftables-0.8.3.tar.bz2 # Locally calculated after checking pgp signature -# http://www.netfilter.org/projects/nftables/files/nftables-0.8.1.tar.bz2.sig -sha256 8aead66cce70d68c70e4be917813abcbcf62811ee6de4c7761d0e34391772fc4 nftables-0.8.1.tar.bz2 +# http://www.netfilter.org/projects/nftables/files/nftables-0.8.3.tar.bz2.sig +sha256 d16be1f5db88e95d29fc0b0e4df88acd079f3ee8e2b872ec7673f9a0d5d95e38 nftables-0.8.3.tar.bz2 sha256 c17bc4fa5b2434c6f283ffcb2312e5bf3c7cdf5787b79505f094d8de734ac53e COPYING diff --git a/buildroot/package/nftables/nftables.mk b/buildroot/package/nftables/nftables.mk index 329b9871fea..571cd33ad5f 100644 --- a/buildroot/package/nftables/nftables.mk +++ b/buildroot/package/nftables/nftables.mk @@ -4,13 +4,14 @@ # ################################################################################ -NFTABLES_VERSION = 0.8.1 +NFTABLES_VERSION = 0.8.3 NFTABLES_SOURCE = nftables-$(NFTABLES_VERSION).tar.bz2 NFTABLES_SITE = http://www.netfilter.org/projects/nftables/files NFTABLES_DEPENDENCIES = gmp libmnl libnftnl host-bison host-flex \ host-pkgconf $(TARGET_NLS_DEPENDENCIES) NFTABLES_LICENSE = GPL-2.0 NFTABLES_LICENSE_FILES = COPYING +NFTABLES_CONF_OPTS = --disable-man-doc --disable-pdf-doc ifeq ($(BR2_PACKAGE_READLINE),y) NFTABLES_DEPENDENCIES += readline @@ -23,12 +24,6 @@ ifeq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_LIBNFTNL_JSON),yy) NFTABLES_LIBS += -ljansson -lm endif -NFTABLES_CONF_ENV = \ - ac_cv_prog_CONFIG_PDF=no \ - LIBS="$(NFTABLES_LIBS)" \ - DBLATEX=no \ - DOCBOOK2X_MAN=no \ - DOCBOOK2MAN=no \ - DB2X_DOCBOOK2MAN=no +NFTABLES_CONF_ENV = LIBS="$(NFTABLES_LIBS)" $(eval $(autotools-package)) diff --git a/buildroot/package/nmap/0002-configure.ac-fix-AC_CHECK_HEADER-call-to-test-for-li.patch b/buildroot/package/nmap/0002-configure.ac-fix-AC_CHECK_HEADER-call-to-test-for-li.patch deleted file mode 100644 index ed5cae259e4..00000000000 --- a/buildroot/package/nmap/0002-configure.ac-fix-AC_CHECK_HEADER-call-to-test-for-li.patch +++ /dev/null @@ -1,30 +0,0 @@ -From ff629766dbd3b5e179330ba4f07fd7e3d8384ec0 Mon Sep 17 00:00:00 2001 -From: Max Filippov -Date: Wed, 1 Nov 2017 15:30:40 +0100 -Subject: [PATCH] configure.ac: fix AC_CHECK_HEADER call to test for libssh2 - -The -lm argument is passed as an argument to AC_CHECK_HEADER(), which -doesn't make sense. The intention was to pass it as the fifth -argument of AC_CHECK_LIB(). - -Signed-off-by: Max Filippov ---- - configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/configure.ac b/configure.ac -index 3d00e164e..67db42e08 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -674,7 +674,7 @@ AC_HELP_STRING([--without-libssh2], [Compile without libssh2]), - AC_CHECK_LIB(ssh2, libssh2_version, - [have_libssh2=yes - LIBSSH2_INC=$with_libssh2/include -- LIBSSH2_LIB=$with_libssh2/lib])],,[-lm]) -+ LIBSSH2_LIB=$with_libssh2/lib],,[-lm])]) - - LDFLAGS=$_ldflags - CPPFLAGS=$_cppflags --- -2.13.6 - diff --git a/buildroot/package/nmap/Config.in b/buildroot/package/nmap/Config.in index 79f587afd10..c1aafeceb9c 100644 --- a/buildroot/package/nmap/Config.in +++ b/buildroot/package/nmap/Config.in @@ -4,13 +4,56 @@ config BR2_PACKAGE_NMAP depends on BR2_USE_MMU # fork() depends on BR2_TOOLCHAIN_HAS_THREADS select BR2_PACKAGE_LIBPCAP - select BR2_PACKAGE_PCRE + select BR2_PACKAGE_NMAP_NMAP \ + if !BR2_PACKAGE_NMAP_NCAT && !BR2_PACKAGE_NMAP_NPING && !BR2_PACKAGE_NMAP_NDIFF help Nmap ("Network Mapper") is a free and open source (license) utility for network discovery and security auditing. http://nmap.org -comment "nmap needs a toolchain w/ C++, threads" +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. + + If 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_NDIFF + bool "install ndiff" + # ndiff only works with python2.x + depends on BR2_PACKAGE_PYTHON + help + This option installs the 'ndiff' tool. + +comment "ndiff needs Python 2.x" + depends on !BR2_PACKAGE_PYTHON + +config BR2_PACKAGE_NMAP_NMAP + bool "install nmap" + select BR2_PACKAGE_PCRE + 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/buildroot/package/nmap/nmap.hash b/buildroot/package/nmap/nmap.hash index 740ec7a001e..349f98d48b9 100644 --- a/buildroot/package/nmap/nmap.hash +++ b/buildroot/package/nmap/nmap.hash @@ -1,2 +1,4 @@ -# From https://nmap.org/dist/sigs/nmap-7.60.tar.bz2.digest.txt -sha256 a8796ecc4fa6c38aad6139d9515dc8113023a82e9d787e5a5fb5fa1b05516f21 nmap-7.60.tar.bz2 +# From https://nmap.org/dist/sigs/nmap-7.70.tar.bz2.digest.txt +sha256 847b068955f792f4cc247593aca6dc3dc4aae12976169873247488de147a6e18 nmap-7.70.tar.bz2 +# Locally calculated +sha256 e013006fbdb7a7923e456e72272b115a5d722a3c6a372f27b5e8fcd282104651 COPYING diff --git a/buildroot/package/nmap/nmap.mk b/buildroot/package/nmap/nmap.mk index ceb08ec0066..1c89b5424e7 100644 --- a/buildroot/package/nmap/nmap.mk +++ b/buildroot/package/nmap/nmap.mk @@ -4,24 +4,15 @@ # ################################################################################ -NMAP_VERSION = 7.60 +NMAP_VERSION = 7.70 NMAP_SITE = https://nmap.org/dist NMAP_SOURCE = nmap-$(NMAP_VERSION).tar.bz2 -NMAP_DEPENDENCIES = libpcap pcre host-autoconf +NMAP_DEPENDENCIES = libpcap NMAP_CONF_OPTS = --without-liblua --without-zenmap \ - --with-libdnet=included --with-liblinear=included \ - --with-libpcre="$(STAGING_DIR)/usr" --without-ncat + --with-libdnet=included --with-liblinear=included NMAP_LICENSE = GPL-2.0 NMAP_LICENSE_FILES = COPYING -# nmap doesn't autoreconf properly, so we just re-generate the -# top-level configure script, since we are patching configure.ac. -define NMAP_DO_AUTOCONF - (cd $(@D); $(HOST_DIR)/bin/autoconf) -endef - -NMAP_PRE_CONFIGURE_HOOKS += NMAP_DO_AUTOCONF - # needed by libpcap NMAP_LIBS_FOR_STATIC_LINK += `$(STAGING_DIR)/usr/bin/pcap-config --static --additional-libs` @@ -51,11 +42,52 @@ else NMAP_CONF_OPTS += --without-openssl endif -# ndiff only works with python2.x -ifeq ($(BR2_PACKAGE_PYTHON),y) +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_NDIFF),y) NMAP_DEPENDENCIES += python +NMAP_CONF_OPTS += --with-ndiff +NMAP_MAKE_OPTS += build-ndiff +NMAP_INSTALL_TARGET_OPTS += install-ndiff else NMAP_CONF_OPTS += --without-ndiff endif +ifeq ($(BR2_PACKAGE_NMAP_NMAP),y) +NMAP_DEPENDENCIES += pcre +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 + +# If we are going to install ncat, ensure Busybox gets built/installed +# before, so that this package overrides Busybox nc. +ifeq ($(BR2_PACKAGE_NMAP_NCAT)$(BR2_PACKAGE_BUSYBOX),yy) +NMAP_DEPENDENCIES += busybox +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/buildroot/package/nmon/nmon.mk b/buildroot/package/nmon/nmon.mk index f561d6dcc0d..f7edd66a265 100644 --- a/buildroot/package/nmon/nmon.mk +++ b/buildroot/package/nmon/nmon.mk @@ -13,7 +13,7 @@ NMON_DEPENDENCIES = ncurses NMON_CFLAGS = $(TARGET_CFLAGS) -D JFS -D GETUSER -D LARGEMEM -D DEBIAN define NMON_EXTRACT_CMDS - cp $(DL_DIR)/$(NMON_SOURCE) $(@D) + cp $(NMON_DL_DIR)/$(NMON_SOURCE) $(@D) endef define NMON_BUILD_CMDS diff --git a/buildroot/package/nodejs/nodejs.hash b/buildroot/package/nodejs/nodejs.hash index 107a24f7bfa..b3900f6a7dc 100644 --- a/buildroot/package/nodejs/nodejs.hash +++ b/buildroot/package/nodejs/nodejs.hash @@ -1,2 +1,5 @@ -# From http://nodejs.org/dist/v8.9.4/SHASUMS256.txt -sha256 6cdcde9c9c1ca9f450a0b24eafa229ca759e576daa0fae892ce74d541ecdc86f node-v8.9.4.tar.xz +# From http://nodejs.org/dist/v8.11.1/SHASUMS256.txt +sha256 40a6eb51ea37fafcf0cfb58786b15b99152bec672cccf861c14d1cca0ad4758a node-v8.11.1.tar.xz + +# Hash for license file +sha256 b87be6c1479ed977481115869c2dd8b6d59e5ea55aa09939d6c898242121b2f5 LICENSE diff --git a/buildroot/package/nodejs/nodejs.mk b/buildroot/package/nodejs/nodejs.mk index a72b9a704fe..2642525c477 100644 --- a/buildroot/package/nodejs/nodejs.mk +++ b/buildroot/package/nodejs/nodejs.mk @@ -4,7 +4,7 @@ # ################################################################################ -NODEJS_VERSION = 8.9.4 +NODEJS_VERSION = 8.11.1 NODEJS_SOURCE = node-v$(NODEJS_VERSION).tar.xz NODEJS_SITE = http://nodejs.org/dist/v$(NODEJS_VERSION) NODEJS_DEPENDENCIES = host-python host-nodejs c-ares \ diff --git a/buildroot/package/ntp/0003-ntpq-fpic.patch b/buildroot/package/ntp/0003-ntpq-fpic.patch deleted file mode 100644 index 6e05a677c59..00000000000 --- a/buildroot/package/ntp/0003-ntpq-fpic.patch +++ /dev/null @@ -1,23 +0,0 @@ -ntpq/Makefile.am: add NTP_HARD_CFLAGS - -Pass NTP_HARD_CFLAGS when building ntpq, like in all other ntp -modules, to make sure -fPIC is passed. - -Originally taken from -https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=494143c3b4921a5c8b8596d58f2c8b98296bf688. - -Signed-off-by: Thomas Petazzoni - -Index: b/ntpq/Makefile.am -=================================================================== ---- a/ntpq/Makefile.am -+++ b/ntpq/Makefile.am -@@ -23,7 +23,7 @@ - ntpq_LDADD += $(LDADD_NTP) - noinst_HEADERS= ntpq.h - noinst_LIBRARIES= libntpq.a --libntpq_a_CFLAGS= -DNO_MAIN_ALLOWED -DBUILD_AS_LIB -+libntpq_a_CFLAGS= $(NTP_HARD_CFLAGS) -DNO_MAIN_ALLOWED -DBUILD_AS_LIB - CLEANFILES= - DISTCLEANFILES= .version version.c config.log $(man_MANS) - ETAGS_ARGS= Makefile.am diff --git a/buildroot/package/ntp/S49ntp b/buildroot/package/ntp/S49ntp index b4047fcedac..35e58746b49 100755 --- a/buildroot/package/ntp/S49ntp +++ b/buildroot/package/ntp/S49ntp @@ -1,10 +1,6 @@ #! /bin/sh NAME=ntpd -DAEMON=/usr/sbin/$NAME - -# Gracefully exit if the package has been removed. -test -x $DAEMON || exit 0 # Read config file if it is present. if [ -r /etc/default/$NAME ] @@ -15,7 +11,7 @@ fi case "$1" in start) printf "Starting $NAME: " - start-stop-daemon -S -q -x $DAEMON -- -g + start-stop-daemon -S -q -x /usr/sbin/ntpd -- -g [ $? = 0 ] && echo "OK" || echo "FAIL" ;; stop) diff --git a/buildroot/package/ntp/ntp.hash b/buildroot/package/ntp/ntp.hash index d8b7083c47b..ea86c1586fd 100644 --- a/buildroot/package/ntp/ntp.hash +++ b/buildroot/package/ntp/ntp.hash @@ -1,4 +1,5 @@ -# From https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p10.tar.gz.md5 -md5 745384ed0dedb3f66b33fe84d66466f9 ntp-4.2.8p10.tar.gz +# From https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p11.tar.gz.md5 +md5 00950ca2855579541896513e78295361 ntp-4.2.8p11.tar.gz # Calculated based on the hash above -sha256 ddd2366e64219b9efa0f7438e06800d0db394ac5c88e13c17b70d0dcdf99b99f ntp-4.2.8p10.tar.gz +sha256 f14a39f753688252d683ff907035ffff106ba8d3db21309b742e09b5c3cd278e ntp-4.2.8p11.tar.gz +sha256 62c87b269365b38b55359b16dfde7ec28c683c722ef489db90afd0f2e478e4a1 COPYRIGHT diff --git a/buildroot/package/ntp/ntp.mk b/buildroot/package/ntp/ntp.mk index cc363269c36..77bb33a42f3 100644 --- a/buildroot/package/ntp/ntp.mk +++ b/buildroot/package/ntp/ntp.mk @@ -5,7 +5,7 @@ ################################################################################ NTP_VERSION_MAJOR = 4.2 -NTP_VERSION = $(NTP_VERSION_MAJOR).8p10 +NTP_VERSION = $(NTP_VERSION_MAJOR).8p11 NTP_SITE = https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-$(NTP_VERSION_MAJOR) NTP_DEPENDENCIES = host-pkgconf libevent $(if $(BR2_PACKAGE_BUSYBOX),busybox) NTP_LICENSE = NTP @@ -20,10 +20,9 @@ NTP_CONF_OPTS = \ --disable-local-libevent # 0002-ntp-syscalls-fallback.patch -# 0003-ntpq-fpic.patch NTP_AUTORECONF = YES -ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +ifeq ($(BR2_PACKAGE_OPENSSL),y) NTP_CONF_OPTS += --with-crypto --enable-openssl-random NTP_DEPENDENCIES += openssl else @@ -31,9 +30,9 @@ NTP_CONF_OPTS += --without-crypto --disable-openssl-random endif ifeq ($(BR2_TOOLCHAIN_HAS_SSP),y) -NTP_CONF_OPTS += --with-locfile=linux +NTP_CONF_OPTS += --with-hardenfile=linux else -NTP_CONF_OPTS += --with-locfile=default +NTP_CONF_OPTS += --with-hardenfile=default endif ifeq ($(BR2_PACKAGE_LIBCAP),y) diff --git a/buildroot/package/nvidia-driver/nvidia-driver.mk b/buildroot/package/nvidia-driver/nvidia-driver.mk index e56661059fb..404fa881ec6 100644 --- a/buildroot/package/nvidia-driver/nvidia-driver.mk +++ b/buildroot/package/nvidia-driver/nvidia-driver.mk @@ -144,7 +144,7 @@ endif # BR2_PACKAGE_NVIDIA_DRIVER_MODULE == y # virtually everywhere, and it is fine enough to provide useful options. # Except it can't extract into an existing (even empty) directory. define NVIDIA_DRIVER_EXTRACT_CMDS - $(SHELL) $(DL_DIR)/$(NVIDIA_DRIVER_SOURCE) --extract-only --target \ + $(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) diff --git a/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.mk b/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.mk index 5514643416d..2885021c58c 100644 --- a/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.mk +++ b/buildroot/package/nvidia-tegra23/nvidia-tegra23-codecs/nvidia-tegra23-codecs.mk @@ -15,7 +15,7 @@ NVIDIA_TEGRA23_CODECS_REDISTRIBUTE = NO define NVIDIA_TEGRA23_CODECS_EXTRACT_CMDS $(INSTALL) -d $(@D) $(call suitable-extractor,$(NVIDIA_TEGRA23_CODECS_SOURCE)) \ - $(DL_DIR)/$(NVIDIA_TEGRA23_CODECS_SOURCE) | \ + $(NVIDIA_TEGRA23_CODECS_DL_DIR)/$(NVIDIA_TEGRA23_CODECS_SOURCE) | \ $(TAR) --strip-components=0 -C $(@D) $(TAR_OPTIONS) - $(INSTALL) -d $(@D)/restricted_codecs $(call suitable-extractor,$(@D)/restricted_codecs.tbz2) \ diff --git a/buildroot/package/openal/openal.hash b/buildroot/package/openal/openal.hash index aead6e15b8e..cb41dc4e126 100644 --- a/buildroot/package/openal/openal.hash +++ b/buildroot/package/openal/openal.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 2d51a6529526ef22484f51567e31a5c346a599767991a3dc9d4dcd9d9cec71dd openal-soft-1.18.1.tar.bz2 +sha256 9f8ac1e27fba15a59758a13f0c7f6540a0605b6c3a691def9d420570506d7e82 openal-soft-1.18.2.tar.bz2 diff --git a/buildroot/package/openal/openal.mk b/buildroot/package/openal/openal.mk index 439f5f109d1..c687c08be17 100644 --- a/buildroot/package/openal/openal.mk +++ b/buildroot/package/openal/openal.mk @@ -4,7 +4,7 @@ # ################################################################################ -OPENAL_VERSION = 1.18.1 +OPENAL_VERSION = 1.18.2 OPENAL_SOURCE = openal-soft-$(OPENAL_VERSION).tar.bz2 OPENAL_SITE = http://kcat.strangesoft.net/openal-releases OPENAL_LICENSE = LGPL-2.0+ diff --git a/buildroot/package/openblas/0001-Complete-support-for-MIPS-n32-ABI.patch b/buildroot/package/openblas/0001-Complete-support-for-MIPS-n32-ABI.patch deleted file mode 100644 index 6e6c5a68bc8..00000000000 --- a/buildroot/package/openblas/0001-Complete-support-for-MIPS-n32-ABI.patch +++ /dev/null @@ -1,116 +0,0 @@ -From 7f28cd1f88145a701e5dbbf50558bb65fce79f61 Mon Sep 17 00:00:00 2001 -From: Vicente Olivert Riera -Date: Thu, 14 Jul 2016 17:20:51 +0100 -Subject: [PATCH] Complete support for MIPS n32 ABI - -Pull request: https://github.com/xianyi/OpenBLAS/pull/926 - -Signed-off-by: Vicente Olivert Riera ---- - Makefile.system | 27 +++++++++------------------ - c_check | 9 +++++++-- - f_check | 7 ++++++- - 3 files changed, 22 insertions(+), 21 deletions(-) - -diff --git a/Makefile.system b/Makefile.system -index 24a7a64..bbcdb82 100644 ---- a/Makefile.system -+++ b/Makefile.system -@@ -502,13 +502,16 @@ endif - - ifdef NO_BINARY_MODE - --ifeq ($(ARCH), $(filter $(ARCH),mips64 mips)) -+ifeq ($(ARCH), $(filter $(ARCH),mips64)) - ifdef BINARY64 - CCOMMON_OPT += -mabi=64 - else --CCOMMON_OPT += -mabi=32 -+CCOMMON_OPT += -mabi=n32 - endif - BINARY_DEFINED = 1 -+else ifeq ($(ARCH), $(filter $(ARCH),mips)) -+CCOMMON_OPT += -mabi=32 -+BINARY_DEFINED = 1 - endif - - ifeq ($(CORE), LOONGSON3A) -@@ -599,12 +602,14 @@ ifneq ($(NO_LAPACK), 1) - EXTRALIB += -lgfortran - endif - ifdef NO_BINARY_MODE --ifeq ($(ARCH), $(filter $(ARCH),mips64 mips)) -+ifeq ($(ARCH), $(filter $(ARCH),mips64)) - ifdef BINARY64 - FCOMMON_OPT += -mabi=64 - else --FCOMMON_OPT += -mabi=32 -+FCOMMON_OPT += -mabi=n32 - endif -+else ifeq ($(ARCH), $(filter $(ARCH),mips)) -+FCOMMON_OPT += -mabi=32 - endif - else - ifdef BINARY64 -@@ -688,20 +693,6 @@ endif - endif - endif - --ifeq ($(filter $(ARCH),mips64 mips)) --ifndef BINARY64 --FCOMMON_OPT += -m32 --else --FCOMMON_OPT += -m64 --endif --else --ifdef BINARY64 --FCOMMON_OPT += -mabi=64 --else --FCOMMON_OPT += -mabi=32 --endif --endif -- - ifeq ($(USE_OPENMP), 1) - FCOMMON_OPT += -mp - endif -diff --git a/c_check b/c_check -index 50ff360..9f457df 100644 ---- a/c_check -+++ b/c_check -@@ -79,8 +79,13 @@ if ($os eq "AIX") { - $defined = 1; - } - --if (($architecture eq "mips") || ($architecture eq "mips64")) { -- $compiler_name .= " -mabi=32" if ($binary eq "32"); -+if ($architecture eq "mips") { -+ $compiler_name .= " -mabi=32"; -+ $defined = 1; -+} -+ -+if ($architecture eq "mips64") { -+ $compiler_name .= " -mabi=n32" if ($binary eq "32"); - $compiler_name .= " -mabi=64" if ($binary eq "64"); - $defined = 1; - } -diff --git a/f_check b/f_check -index 4c03ac7..3520e8b 100644 ---- a/f_check -+++ b/f_check -@@ -223,7 +223,12 @@ if (!$?) { - } - #For gfortran MIPS - if ($?) { -- $link = `$compiler $openmp -mabi=32 -v ftest2.f 2>&1 && rm -f a.out a.exe`; -+ $mips_data = `$compiler_bin -E -dM - < /dev/null`; -+ if ($mips_data =~ /_MIPS_ISA_MIPS64/) { -+ $link = `$compiler $openmp -mabi=n32 -v ftest2.f 2>&1 && rm -f a.out a.exe`; -+ } else { -+ $link = `$compiler $openmp -mabi=32 -v ftest2.f 2>&1 && rm -f a.out a.exe`; -+ } - } - $binary = "" if ($?); - } --- -2.7.3 - diff --git a/buildroot/package/openblas/0001-Makefile.arm-remove-march-flags.patch b/buildroot/package/openblas/0001-Makefile.arm-remove-march-flags.patch new file mode 100644 index 00000000000..db975de59d4 --- /dev/null +++ b/buildroot/package/openblas/0001-Makefile.arm-remove-march-flags.patch @@ -0,0 +1,55 @@ +From e6c498f68b61057fb5505e41c3858c2b5d223227 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 7 Aug 2016 23:20:00 +0200 +Subject: [PATCH] Makefile.arm: remove -march flags + +The provided -march flags, especially for ARMv5 and ARMv6 may not +necessarily match the needed ones: for ARMv5, it might be armv5, +armv5te, armv5t, etc. If the wrong one is used, the incorrect toolchain +sysroot can be used in a multilib toolchain. + +Therefore, let the user building OpenBLAS pass the appropriate -march +flag. + +The other flags, such as -mfpu=vfp or -mfloat-abi=hard are kept, as they +are actually required for the build to proceed (OpenBLAS uses VFP +instructions, and assume an EABIhf ABI). + +[Peter: update for v0.2.20] +Signed-off-by: Thomas Petazzoni +Signed-off-by: Peter Korsgaard +--- + Makefile.arm | 13 ++++--------- + 1 file changed, 4 insertions(+), 9 deletions(-) + +diff --git a/Makefile.arm b/Makefile.arm +index eedd39b7..b5d80f8e 100644 +--- a/Makefile.arm ++++ b/Makefile.arm +@@ -1,7 +1,7 @@ + ifeq ($(CORE), $(filter $(CORE),ARMV7 CORTEXA9 CORTEXA15)) + ifeq ($(OSNAME), Android) +-CCOMMON_OPT += -mfpu=neon -march=armv7-a +-FCOMMON_OPT += -mfpu=neon -march=armv7-a ++CCOMMON_OPT += -mfpu=neon ++FCOMMON_OPT += -mfpu=neon + else + CCOMMON_OPT += -mfpu=vfpv3 -march=armv7-a + FCOMMON_OPT += -mfpu=vfpv3 -march=armv7-a +@@ -9,11 +9,6 @@ endif + endif + + ifeq ($(CORE), ARMV6) +-CCOMMON_OPT += -mfpu=vfp -march=armv6 +-FCOMMON_OPT += -mfpu=vfp -march=armv6 +-endif +- +-ifeq ($(CORE), ARMV5) +-CCOMMON_OPT += -march=armv5 +-FCOMMON_OPT += -march=armv5 ++CCOMMON_OPT += -mfpu=vfp ++FCOMMON_OPT += -mfpu=vfp + endif +-- +2.11.0 + diff --git a/buildroot/package/openblas/0002-Makefile.arm-remove-march-flags.patch b/buildroot/package/openblas/0002-Makefile.arm-remove-march-flags.patch deleted file mode 100644 index 39058f7dfc3..00000000000 --- a/buildroot/package/openblas/0002-Makefile.arm-remove-march-flags.patch +++ /dev/null @@ -1,73 +0,0 @@ -From 71b9e9b7f080c464777d07bd1a917a1c449d2ef8 Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Sun, 7 Aug 2016 23:20:00 +0200 -Subject: [PATCH] Makefile.arm: remove -march flags - -The provided -march flags, especially for ARMv5 and ARMv6 may not -necessarily match the needed ones: for ARMv5, it might be armv5, -armv5te, armv5t, etc. If the wrong one is used, the incorrect toolchain -sysroot can be used in a multilib toolchain. - -Therefore, let the user building OpenBLAS pass the appropriate -march -flag. - -The other flags, such as -mfpu=vfp or -mfloat-abi=hard are kept, as they -are actually required for the build to proceed (OpenBLAS uses VFP -instructions, and assume an EABIhf ABI). - -Signed-off-by: Thomas Petazzoni ---- - Makefile.arm | 24 ++++++++++++------------ - 1 file changed, 12 insertions(+), 12 deletions(-) - -diff --git a/Makefile.arm b/Makefile.arm -index 62bf275..c0d6ab8 100644 ---- a/Makefile.arm -+++ b/Makefile.arm -@@ -1,31 +1,31 @@ - # ifeq logical or - ifeq ($(CORE), $(filter $(CORE),CORTEXA9 CORTEXA15)) - ifeq ($(OSNAME), Android) --CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a --FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a -+CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -+FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard - else --CCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a --FCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a -+CCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -+FCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard - endif - endif - - ifeq ($(CORE), ARMV7) - ifeq ($(OSNAME), Android) --CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a -Wl,--no-warn-mismatch --FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -march=armv7-a -Wl,--no-warn-mismatch -+CCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -Wl,--no-warn-mismatch -+FCOMMON_OPT += -marm -mfpu=neon -mfloat-abi=hard -Wl,--no-warn-mismatch - else --CCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a --FCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -march=armv7-a -+CCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard -+FCOMMON_OPT += -marm -mfpu=vfpv3 -mfloat-abi=hard - endif - endif - - ifeq ($(CORE), ARMV6) --CCOMMON_OPT += -marm -mfpu=vfp -mfloat-abi=hard -march=armv6 --FCOMMON_OPT += -marm -mfpu=vfp -mfloat-abi=hard -march=armv6 -+CCOMMON_OPT += -marm -mfpu=vfp -mfloat-abi=hard -+FCOMMON_OPT += -marm -mfpu=vfp -mfloat-abi=hard - endif - - - ifeq ($(CORE), ARMV5) --CCOMMON_OPT += -marm -march=armv5 --FCOMMON_OPT += -marm -march=armv5 -+CCOMMON_OPT += -marm -+FCOMMON_OPT += -marm - endif --- -2.7.4 - diff --git a/buildroot/package/openblas/0002-Rework-__GLIBC_PREREQ-checks-to-avoid-breaking-non-g.patch b/buildroot/package/openblas/0002-Rework-__GLIBC_PREREQ-checks-to-avoid-breaking-non-g.patch new file mode 100644 index 00000000000..7659ee08884 --- /dev/null +++ b/buildroot/package/openblas/0002-Rework-__GLIBC_PREREQ-checks-to-avoid-breaking-non-g.patch @@ -0,0 +1,73 @@ +From ad0f270ed32635d8ef9a7446ae280db415cf78ac Mon Sep 17 00:00:00 2001 +From: Martin Kroeker +Date: Mon, 31 Jul 2017 21:02:43 +0200 +Subject: [PATCH] Rework __GLIBC_PREREQ checks to avoid breaking non-glibc + builds + +[baruch: backported to v0.2.20 +Signed-off-by: Baruch Siach +--- +Upstream status: commit 63cfa32691680 + + driver/others/memory.c | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +diff --git a/driver/others/memory.c b/driver/others/memory.c +index 38d063715602..79d6988e08a4 100644 +--- a/driver/others/memory.c ++++ b/driver/others/memory.c +@@ -155,7 +155,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + #ifdef DYNAMIC_ARCH + gotoblas_t *gotoblas = NULL; + #endif +- + extern void openblas_warning(int verbose, const char * msg); + + #ifndef SMP +@@ -187,25 +186,24 @@ int i,n; + + #if !defined(__GLIBC_PREREQ) + return nums; +-#endif +-#if !__GLIBC_PREREQ(2, 3) ++#else ++ #if !__GLIBC_PREREQ(2, 3) + return nums; +-#endif ++ #endif + +-#if !__GLIBC_PREREQ(2, 7) ++ #if !__GLIBC_PREREQ(2, 7) + ret = sched_getaffinity(0,sizeof(cpu_set_t), cpusetp); + if (ret!=0) return nums; + n=0; +-#if !__GLIBC_PREREQ(2, 6) ++ #if !__GLIBC_PREREQ(2, 6) + for (i=0;i +Date: Tue, 17 Apr 2018 18:46:29 +0300 +Subject: [PATCH] Fix build when __GLIBC_PREREQ is not defined + +Rearrange the code so that __GLIBC_PREREQ is not used when not defined. +This fixes build with musl libc. + +[baruch: backport to v0.2.20] +Signed-off-by: Baruch Siach +--- +Upstream status: combines upstream commits 480e69768176 and c4af196a2d +--- + driver/others/init.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/driver/others/init.c b/driver/others/init.c +index 4c75d72e4075..adce075f0ac0 100644 +--- a/driver/others/init.c ++++ b/driver/others/init.c +@@ -838,7 +838,11 @@ void gotoblas_affinity_init(void) { + + nums = sysconf(_SC_NPROCESSORS_CONF); + +-#if !defined(__GLIBC_PREREQ) || !__GLIBC_PREREQ(2, 3) ++#if !defined(__GLIBC_PREREQ) ++ common->num_procs = nums; ++#else ++ ++#if !__GLIBC_PREREQ(2, 3) + common->num_procs = nums; + #elif __GLIBC_PREREQ(2, 7) + cpusetp = CPU_ALLOC(nums); +@@ -872,6 +876,8 @@ void gotoblas_affinity_init(void) { + + #endif + ++#endif ++ + if(common -> num_procs > MAX_CPUS) { + fprintf(stderr, "\nOpenBLAS Warning : The number of CPU/Cores(%d) is beyond the limit(%d). Terminated.\n", common->num_procs, MAX_CPUS); + exit(1); +-- +2.17.0 + diff --git a/buildroot/package/openblas/Config.in b/buildroot/package/openblas/Config.in index eb93e319e40..8e71a43f982 100644 --- a/buildroot/package/openblas/Config.in +++ b/buildroot/package/openblas/Config.in @@ -3,7 +3,7 @@ config BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET default "P2" if BR2_x86_pentium2 default "KATMAI" if BR2_x86_pentium3 default "NORTHWOOD" if BR2_x86_pentium4 - default "PRESCOTT" if BR2_x86_prescott + 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 @@ -14,9 +14,9 @@ config BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET default "OPTERON" if BR2_x86_opteron default "OPTERON_SSE3" if BR2_x86_opteron_sse3 default "BARCELONA" if BR2_x86_barcelona + default "JAGUAR" if BR2_x86_jaguar default "STEAMROLLER" if BR2_x86_steamroller default "VIAC3" if BR2_x86_c3 || BR2_x86_c32 - default "SSE_GENERIC" if BR2_X86_CPU_HAS_SSE default "POWER4" if BR2_powerpc_power4 default "POWER5" if BR2_powerpc_power5 default "POWER6" if BR2_powerpc_power6 diff --git a/buildroot/package/openblas/openblas.hash b/buildroot/package/openblas/openblas.hash index b402cac5228..e4a3989f670 100644 --- a/buildroot/package/openblas/openblas.hash +++ b/buildroot/package/openblas/openblas.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 2ad0270a39dbaf891b439baacf198ea4ab149cd6ed39a5f50c494723f1936be5 openblas-f04af36ad0e85b64f12a7c38095383192cc52345.tar.gz +sha256 5ef38b15d9c652985774869efd548b8e3e972e1e99475c673b25537ed7bcf394 openblas-v0.2.20.tar.gz +sha256 190b5a9c8d9723fe958ad33916bd7346d96fab3c5ea90832bb02d854f620fcff LICENSE diff --git a/buildroot/package/openblas/openblas.mk b/buildroot/package/openblas/openblas.mk index 93dbc1f9323..e9a87b02622 100644 --- a/buildroot/package/openblas/openblas.mk +++ b/buildroot/package/openblas/openblas.mk @@ -4,7 +4,7 @@ # ################################################################################ -OPENBLAS_VERSION = f04af36ad0e85b64f12a7c38095383192cc52345 +OPENBLAS_VERSION = v0.2.20 OPENBLAS_SITE = $(call github,xianyi,OpenBLAS,$(OPENBLAS_VERSION)) OPENBLAS_LICENSE = BSD-3-Clause OPENBLAS_LICENSE_FILES = LICENSE diff --git a/buildroot/package/opencv3/opencv3.mk b/buildroot/package/opencv3/opencv3.mk index cffe66b8922..15e4eadfe32 100644 --- a/buildroot/package/opencv3/opencv3.mk +++ b/buildroot/package/opencv3/opencv3.mk @@ -327,6 +327,7 @@ OPENCV3_CONF_OPTS += \ -DPYTHON3_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION) OPENCV3_DEPENDENCIES += python3 endif +OPENCV3_CONF_ENV += $(PKG_PYTHON_DISTUTILS_ENV) OPENCV3_DEPENDENCIES += python-numpy else OPENCV3_CONF_OPTS += \ diff --git a/buildroot/package/openldap/openldap.hash b/buildroot/package/openldap/openldap.hash index aec4aaebfd2..37e2673c4bd 100644 --- a/buildroot/package/openldap/openldap.hash +++ b/buildroot/package/openldap/openldap.hash @@ -1,4 +1,7 @@ -# From http://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.4.45.md5 -md5 00ff8301277cdfd0af728a6927042a13 openldap-2.4.45.tgz -# From http://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.4.45.sha1 -sha1 c98437385d3eaee80c9e2c09f3f0d4b7c140233d openldap-2.4.45.tgz +# From http://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.4.46.md5 +md5 829016c5a9f45c51adc50073ac6f9fd7 openldap-2.4.46.tgz +# From http://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-2.4.46.sha1 +sha1 a9ae2273eb9bdd70090dafe0d018a3132606bef6 openldap-2.4.46.tgz +# Locally computed +sha256 9a90dcb86b99ae790ccab93b7585a31fbcbeec8c94bf0f7ab0ca0a87ea0c4b2d openldap-2.4.46.tgz +sha256 310fe25c858a9515fc8c8d7d1f24a67c9496f84a91e0a0e41ea9975b1371e569 LICENSE diff --git a/buildroot/package/openldap/openldap.mk b/buildroot/package/openldap/openldap.mk index 2bf6fc3f27b..3f00f2b7dfc 100644 --- a/buildroot/package/openldap/openldap.mk +++ b/buildroot/package/openldap/openldap.mk @@ -4,7 +4,7 @@ # ################################################################################ -OPENLDAP_VERSION = 2.4.45 +OPENLDAP_VERSION = 2.4.46 OPENLDAP_SOURCE = openldap-$(OPENLDAP_VERSION).tgz OPENLDAP_SITE = http://www.openldap.org/software/download/OpenLDAP/openldap-release OPENLDAP_LICENSE = OpenLDAP Public License @@ -12,9 +12,9 @@ OPENLDAP_LICENSE_FILES = LICENSE OPENLDAP_INSTALL_STAGING = YES OPENLDAP_DEPENDENCIES = host-pkgconf -ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) +ifeq ($(BR2_PACKAGE_OPENSSL),y) OPENLDAP_TLS = openssl -OPENLDAP_DEPENDENCIES += libopenssl +OPENLDAP_DEPENDENCIES += openssl else ifeq ($(BR2_PACKAGE_GNUTLS),y) OPENLDAP_TLS = gnutls OPENLDAP_DEPENDENCIES += gnutls diff --git a/buildroot/package/openntpd/S49ntp b/buildroot/package/openntpd/S49ntp index c211ac835ed..7ce46eba280 100755 --- a/buildroot/package/openntpd/S49ntp +++ b/buildroot/package/openntpd/S49ntp @@ -1,6 +1,5 @@ #!/bin/sh -[ -x /usr/sbin/ntpd ] || exit 0 [ -f /etc/ntpd.conf ] || exit 0 case "$1" in diff --git a/buildroot/package/openocd/openocd.mk b/buildroot/package/openocd/openocd.mk index 9d2576ceeb9..548d8b81a0f 100644 --- a/buildroot/package/openocd/openocd.mk +++ b/buildroot/package/openocd/openocd.mk @@ -11,7 +11,12 @@ OPENOCD_LICENSE = GPL-2.0+ OPENOCD_LICENSE_FILES = COPYING # 0002-configure-enable-build-on-uclinux.patch patches configure.ac OPENOCD_AUTORECONF = YES -OPENOCD_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -std=gnu99" + +# The bundled jimtcl really wants to find a existing $CXX, so feed it +# false when we do not have one. +OPENOCD_CONF_ENV = \ + $(if $(BR2_INSTALL_LIBSTDCPP),,CXX=false) \ + CFLAGS="$(TARGET_CFLAGS) -std=gnu99" OPENOCD_CONF_OPTS = \ --oldincludedir=$(STAGING_DIR)/usr/include \ diff --git a/buildroot/package/openssh/0001-configure-ac-detect-mips-abi.patch b/buildroot/package/openssh/0001-configure-ac-detect-mips-abi.patch deleted file mode 100644 index 0d43e6baf0f..00000000000 --- a/buildroot/package/openssh/0001-configure-ac-detect-mips-abi.patch +++ /dev/null @@ -1,44 +0,0 @@ -From f4fcd8c788a4854d4ebae400cf55e3957f906835 Mon Sep 17 00:00:00 2001 -From: Vicente Olivert Riera -Date: Tue, 20 Jun 2017 16:42:11 +0100 -Subject: [PATCH] configure.ac: detect MIPS ABI - -Signed-off-by: Vicente Olivert Riera -[Upstream commit: ttps://github.com/openssh/openssh-portable/commit/f4fcd8c788a4854d4ebae400cf55e3957f906835] -Signed-off-by: Thomas Petazzoni ---- - configure.ac | 21 +++++++++++++++++++++ - 1 file changed, 21 insertions(+) - -diff --git a/configure.ac b/configure.ac -index 18079acba..f990cfe08 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -746,6 +746,27 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) - fi - AC_CHECK_HEADERS([linux/seccomp.h linux/filter.h linux/audit.h], [], - [], [#include ]) -+ # Obtain MIPS ABI -+ case "$host" in -+ mips*) -+ AC_COMPILE_IFELSE([ -+#if _MIPS_SIM != _ABIO32 -+#error -+#endif -+ ],[mips_abi="o32"],[AC_COMPILE_IFELSE([ -+#if _MIPS_SIM != _ABIN32 -+#error -+#endif -+ ],[mips_abi="n32"],[AC_COMPILE_IFELSE([ -+#if _MIPS_SIM != _ABI64 -+#error -+#endif -+ ],[mips_abi="n64"],[AC_MSG_ERROR([unknown MIPS ABI]) -+ ]) -+ ]) -+ ]) -+ ;; -+ esac - AC_MSG_CHECKING([for seccomp architecture]) - seccomp_audit_arch= - case "$host" in diff --git a/buildroot/package/openssh/0003-fix-pam-uclibc-pthreads-clash.patch b/buildroot/package/openssh/0001-fix-pam-uclibc-pthreads-clash.patch similarity index 100% rename from buildroot/package/openssh/0003-fix-pam-uclibc-pthreads-clash.patch rename to buildroot/package/openssh/0001-fix-pam-uclibc-pthreads-clash.patch diff --git a/buildroot/package/openssh/0002-configure-ac-properly-set-seccomp-audit-arch-for-mips64.patch b/buildroot/package/openssh/0002-configure-ac-properly-set-seccomp-audit-arch-for-mips64.patch deleted file mode 100644 index 879af5e3d57..00000000000 --- a/buildroot/package/openssh/0002-configure-ac-properly-set-seccomp-audit-arch-for-mips64.patch +++ /dev/null @@ -1,63 +0,0 @@ -From afc3e31b637db9dae106d4fad78f7b481c8c24e3 Mon Sep 17 00:00:00 2001 -From: Vicente Olivert Riera -Date: Tue, 20 Jun 2017 16:42:28 +0100 -Subject: [PATCH] configure.ac: properly set seccomp_audit_arch for MIPS64 - -Currently seccomp_audit_arch is set to AUDIT_ARCH_MIPS64 or -AUDIT_ARCH_MIPSEL64 (depending on the endinness) when openssh is built -for MIPS64. However, that's only valid for n64 ABI. The right macros for -n32 ABI defined in seccomp.h are AUDIT_ARCH_MIPS64N32 and -AUDIT_ARCH_MIPSEL64N32, for big and little endian respectively. - -Because of that an sshd built for MIPS64 n32 rejects connection attempts -and the output of strace reveals that the problem is related to seccomp -audit: - -[pid 194] prctl(PR_SET_SECCOMP, SECCOMP_MODE_FILTER, {len=57, -filter=0x555d5da0}) = 0 -[pid 194] write(7, "\0\0\0]\0\0\0\5\0\0\0Ulist_hostkey_types: "..., 97) = ? -[pid 193] <... poll resumed> ) = 2 ([{fd=5, revents=POLLIN|POLLHUP}, -{fd=6, revents=POLLHUP}]) -[pid 194] +++ killed by SIGSYS +++ - -This patch fixes that problem by setting the right value to -seccomp_audit_arch taking into account the MIPS64 ABI. - -Signed-off-by: Vicente Olivert Riera -[Upstream commit: https://github.com/openssh/openssh-portable/commit/afc3e31b637db9dae106d4fad78f7b481c8c24e3] -Signed-off-by: Thomas Petazzoni ---- - configure.ac | 18 ++++++++++++++++-- - 1 file changed, 16 insertions(+), 2 deletions(-) - -diff --git a/configure.ac b/configure.ac -index f990cfe08..5d640f679 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -801,10 +801,24 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16)) - seccomp_audit_arch=AUDIT_ARCH_MIPSEL - ;; - mips64-*) -- seccomp_audit_arch=AUDIT_ARCH_MIPS64 -+ case "$mips_abi" in -+ "n32") -+ seccomp_audit_arch=AUDIT_ARCH_MIPS64N32 -+ ;; -+ "n64") -+ seccomp_audit_arch=AUDIT_ARCH_MIPS64 -+ ;; -+ esac - ;; - mips64el-*) -- seccomp_audit_arch=AUDIT_ARCH_MIPSEL64 -+ case "$mips_abi" in -+ "n32") -+ seccomp_audit_arch=AUDIT_ARCH_MIPSEL64N32 -+ ;; -+ "n64") -+ seccomp_audit_arch=AUDIT_ARCH_MIPSEL64 -+ ;; -+ esac - ;; - esac - if test "x$seccomp_audit_arch" != "x" ; then diff --git a/buildroot/package/openssh/0004-fix-howmany-include.patch b/buildroot/package/openssh/0002-fix-howmany-include.patch similarity index 100% rename from buildroot/package/openssh/0004-fix-howmany-include.patch rename to buildroot/package/openssh/0002-fix-howmany-include.patch diff --git a/buildroot/package/openssh/0005-openbsd-compat-bsd-getpagesize.c-include-includes.h-.patch b/buildroot/package/openssh/0005-openbsd-compat-bsd-getpagesize.c-include-includes.h-.patch deleted file mode 100644 index ce600729345..00000000000 --- a/buildroot/package/openssh/0005-openbsd-compat-bsd-getpagesize.c-include-includes.h-.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 9a43657a3dcb868b4f36ade3aba5dcf0871fb412 Mon Sep 17 00:00:00 2001 -From: Peter Korsgaard -Date: Mon, 30 Oct 2017 23:36:56 +0100 -Subject: [PATCH] openbsd-compat/bsd-getpagesize.c: include includes.h for - config.h defines - -The configure script checks for getpagesize() and sets HAVE_GETPAGESIZE in -config.h, but bsd-getpagesize.c forgot to include includes.h (which -indirectly includes config.h) so the checks always fails, causing linker -issues when linking statically on systems with getpagesize(): - -http://autobuild.buildroot.net/results/8cc/8cc30818a400c7a392a3de787cabc9cd8425495f/build-end.log - -Fix it by including includes.h - -Signed-off-by: Peter Korsgaard ---- - openbsd-compat/bsd-getpagesize.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/openbsd-compat/bsd-getpagesize.c b/openbsd-compat/bsd-getpagesize.c -index 9daddfbd..416a8d4c 100644 ---- a/openbsd-compat/bsd-getpagesize.c -+++ b/openbsd-compat/bsd-getpagesize.c -@@ -1,5 +1,7 @@ - /* Placed in the public domain */ - -+#include "includes.h" -+ - #ifndef HAVE_GETPAGESIZE - - #include --- -2.11.0 - diff --git a/buildroot/package/openssh/openssh.hash b/buildroot/package/openssh/openssh.hash index d8a4da32ad1..69d34ba65ec 100644 --- a/buildroot/package/openssh/openssh.hash +++ b/buildroot/package/openssh/openssh.hash @@ -1,4 +1,4 @@ -# From http://www.openssh.com/txt/release-7.6 (base64 encoded) -sha256 a323caeeddfe145baaa0db16e98d784b1fbc7dd436a6bf1f479dfd5cd1d21723 openssh-7.6p1.tar.gz +# From http://www.openssh.com/txt/release-7.7 (base64 encoded) +sha256 d73be7e684e99efcd024be15a30bffcbe41b012b2f7b3c9084aed621775e6b8f openssh-7.7p1.tar.gz # Locally calculated sha256 05a4c25ef464e19656c5259bd4f4da8428efab01044f3541b79fbb3ff209350f LICENCE diff --git a/buildroot/package/openssh/openssh.mk b/buildroot/package/openssh/openssh.mk index 6b7ac22c19d..b28429e1bb2 100644 --- a/buildroot/package/openssh/openssh.mk +++ b/buildroot/package/openssh/openssh.mk @@ -4,14 +4,10 @@ # ################################################################################ -OPENSSH_VERSION = 7.6p1 +OPENSSH_VERSION = 7.7p1 OPENSSH_SITE = http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable OPENSSH_LICENSE = BSD-3-Clause, BSD-2-Clause, Public Domain OPENSSH_LICENSE_FILES = LICENCE -# Autoreconf needed due to the following patches modifying configure.ac: -# 0001-configure-ac-detect-mips-abi.patch -# 0002-configure-ac-properly-set-seccomp-audit-arch-for-mips64.patch -OPENSSH_AUTORECONF = YES OPENSSH_CONF_ENV = LD="$(TARGET_CC)" LDFLAGS="$(TARGET_CFLAGS)" OPENSSH_CONF_OPTS = \ --sysconfdir=/etc/ssh \ @@ -73,4 +69,10 @@ define OPENSSH_INSTALL_INIT_SYSV $(TARGET_DIR)/etc/init.d/S50sshd endef +define OPENSSH_INSTALL_SSH_COPY_ID + $(INSTALL) -D -m 755 $(@D)/contrib/ssh-copy-id $(TARGET_DIR)/usr/bin/ssh-copy-id +endef + +OPENSSH_POST_INSTALL_TARGET_HOOKS += OPENSSH_INSTALL_SSH_COPY_ID + $(eval $(autotools-package)) diff --git a/buildroot/package/opentyrian-data/opentyrian-data.mk b/buildroot/package/opentyrian-data/opentyrian-data.mk index 4b879df1c3a..9e38b61bfa5 100644 --- a/buildroot/package/opentyrian-data/opentyrian-data.mk +++ b/buildroot/package/opentyrian-data/opentyrian-data.mk @@ -10,7 +10,7 @@ OPENTYRIAN_DATA_SOURCE = tyrian21.zip OPENTYRIAN_DATA_LICENSE = Freeware define OPENTYRIAN_DATA_EXTRACT_CMDS - $(UNZIP) -d $(@D) $(DL_DIR)/$(OPENTYRIAN_DATA_SOURCE) + $(UNZIP) -d $(@D) $(OPENTYRIAN_DATA_DL_DIR)/$(OPENTYRIAN_DATA_SOURCE) endef define OPENTYRIAN_DATA_INSTALL_TARGET_CMDS diff --git a/buildroot/package/openvpn/S60openvpn b/buildroot/package/openvpn/S60openvpn index de82a5095e3..bc1ab01c1a8 100755 --- a/buildroot/package/openvpn/S60openvpn +++ b/buildroot/package/openvpn/S60openvpn @@ -7,13 +7,11 @@ test $DEBIAN_SCRIPT_DEBUG && set -v -x -DAEMON=/usr/sbin/openvpn CONFIG_DIR=/etc/openvpn -test -x $DAEMON || exit 0 test -d $CONFIG_DIR || exit 0 start_vpn () { - $DAEMON --daemon --writepid /var/run/openvpn.$NAME.pid \ + /usr/sbin/openvpn --daemon --writepid /var/run/openvpn.$NAME.pid \ --config $CONFIG_DIR/$NAME.conf --cd $CONFIG_DIR || printf " FAILED->" printf " $NAME" } @@ -79,8 +77,6 @@ reload|force-reload) printf "(restarted)" else kill -HUP `cat $PIDFILE` || true -# start-stop-daemon --stop --signal HUP --quiet --oknodo \ -# --exec $DAEMON --pidfile $PIDFILE printf " $NAME" fi done diff --git a/buildroot/package/openvpn/openvpn.hash b/buildroot/package/openvpn/openvpn.hash index 318f9edb88e..b740ea9a86f 100644 --- a/buildroot/package/openvpn/openvpn.hash +++ b/buildroot/package/openvpn/openvpn.hash @@ -1,2 +1,3 @@ # Locally calculated after checking signature -sha256 96cd1b8fe1e8cb2920f07c3fd3985faea756e16fdeebd11d3e146d5bd2b04a80 openvpn-2.4.4.tar.xz +sha256 4f6434fa541cc9e363434ea71a16a62cf2615fb2f16af5b38f43ab5939998c26 openvpn-2.4.6.tar.xz +sha256 1fcb78d7e478bb8a9408010bdc91b36e213b1facfad093df3f7ce7e28af19043 COPYRIGHT.GPL diff --git a/buildroot/package/openvpn/openvpn.mk b/buildroot/package/openvpn/openvpn.mk index 086f99bf4d7..858398a3219 100644 --- a/buildroot/package/openvpn/openvpn.mk +++ b/buildroot/package/openvpn/openvpn.mk @@ -4,7 +4,7 @@ # ################################################################################ -OPENVPN_VERSION = 2.4.4 +OPENVPN_VERSION = 2.4.6 OPENVPN_SOURCE = openvpn-$(OPENVPN_VERSION).tar.xz OPENVPN_SITE = http://swupdate.openvpn.net/community/releases OPENVPN_DEPENDENCIES = host-pkgconf openssl @@ -17,7 +17,8 @@ OPENVPN_CONF_OPTS = \ $(if $(BR2_STATIC_LIBS),--disable-plugins) OPENVPN_CONF_ENV = IFCONFIG=/sbin/ifconfig \ NETSTAT=/bin/netstat \ - ROUTE=/sbin/route + ROUTE=/sbin/route \ + IPROUTE=/sbin/ip ifeq ($(BR2_PACKAGE_OPENVPN_SMALL),y) OPENVPN_CONF_OPTS += \ @@ -25,16 +26,6 @@ OPENVPN_CONF_OPTS += \ --disable-plugins endif -# BusyBox 1.21+ places the ip applet in the "correct" place -# but previous versions didn't. -ifeq ($(BR2_PACKAGE_IPROUTE2),y) -OPENVPN_CONF_ENV += IPROUTE=/sbin/ip -else ifeq ($(BR2_BUSYBOX_VERSION_1_19_X)$(BR2_BUSYBOX_VERSION_1_20_X),y) -OPENVPN_CONF_ENV += IPROUTE=/bin/ip -else -OPENVPN_CONF_ENV += IPROUTE=/sbin/ip -endif - ifeq ($(BR2_PACKAGE_OPENVPN_LZ4),y) OPENVPN_DEPENDENCIES += lz4 else diff --git a/buildroot/package/opus-tools/opus-tools.hash b/buildroot/package/opus-tools/opus-tools.hash index 185c94ce754..c7759e559f0 100644 --- a/buildroot/package/opus-tools/opus-tools.hash +++ b/buildroot/package/opus-tools/opus-tools.hash @@ -1,2 +1,5 @@ # From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt sha256 a2357532d19471b70666e0e0ec17d514246d8b3cb2eb168f68bb0f6fd372b28c opus-tools-0.1.10.tar.gz + +# Hash for license file +sha256 88021117568c64038175d7fb3b8286056f7cdb54f09dc806578f6bd9342c62cc COPYING diff --git a/buildroot/package/opus-tools/opus-tools.mk b/buildroot/package/opus-tools/opus-tools.mk index a81e75eb0e4..ab00ced7055 100644 --- a/buildroot/package/opus-tools/opus-tools.mk +++ b/buildroot/package/opus-tools/opus-tools.mk @@ -6,7 +6,7 @@ OPUS_TOOLS_VERSION = 0.1.10 OPUS_TOOLS_SITE = https://downloads.xiph.org/releases/opus -OPUS_TOOLS_LICENSE = BSD-2-Clause +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 = opus libogg host-pkgconf diff --git a/buildroot/package/opus/opus.hash b/buildroot/package/opus/opus.hash index 32fe2e245be..c1a92d6b94b 100644 --- a/buildroot/package/opus/opus.hash +++ b/buildroot/package/opus/opus.hash @@ -1,2 +1,5 @@ # From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt sha256 cfafd339ccd9c5ef8d6ab15d7e1a412c054bf4cb4ecbbbcc78c12ef2def70732 opus-1.2.1.tar.gz + +# Hash for license file +sha256 8338ce8d922bb4416ce3dd1e5680173332435e3f0755007ac7801ccd674fe682 COPYING diff --git a/buildroot/package/opusfile/opusfile.hash b/buildroot/package/opusfile/opusfile.hash index 528ded20797..59e08192f5a 100644 --- a/buildroot/package/opusfile/opusfile.hash +++ b/buildroot/package/opusfile/opusfile.hash @@ -1,2 +1,5 @@ # From http://downloads.xiph.org/releases/opus/SHA256SUMS.txt sha256 f75fb500e40b122775ac1a71ad80c4477698842a8fe9da4a1b4a1a9f16e4e979 opusfile-0.9.tar.gz + +# Hash for license file +sha256 0267ae795ab744c4e0f9c45e249440fdf2e75dac8c804f36066b28649bf74aaf COPYING diff --git a/buildroot/package/opusfile/opusfile.mk b/buildroot/package/opusfile/opusfile.mk index 28d4368e85f..186288ddff0 100644 --- a/buildroot/package/opusfile/opusfile.mk +++ b/buildroot/package/opusfile/opusfile.mk @@ -11,8 +11,8 @@ OPUSFILE_LICENSE = BSD-3-Clause OPUSFILE_LICENSE_FILES = COPYING OPUSFILE_INSTALL_STAGING = YES -ifeq ($(BR2_PACKAGE_LIBOPENSSL),y) -OPUSFILE_DEPENDENCIES += libopenssl +ifeq ($(BR2_PACKAGE_OPENSSL),y) +OPUSFILE_DEPENDENCIES += openssl else OPUSFILE_CONF_OPTS += --disable-http endif diff --git a/buildroot/package/p7zip/0001-bfin.patch b/buildroot/package/p7zip/0001-bfin.patch deleted file mode 100644 index 76addb652fe..00000000000 --- a/buildroot/package/p7zip/0001-bfin.patch +++ /dev/null @@ -1,19 +0,0 @@ -Add support for blackfin arch. - -Fixes compilation error: -../../../../CPP/myWindows/mySplitCommandLine.cpp:99:8: error: #error ENDIANNESS - -Signed-off-by: Bernd Kuhls -(Patch sent upstream: https://sourceforge.net/p/p7zip/patches/33/ - -diff -uNr p7zip_15.14.1.org/C/CpuArch.h p7zip_15.14.1/C/CpuArch.h ---- p7zip_15.14.1.org/C/CpuArch.h 2016-02-17 07:27:16.000000000 +0100 -+++ p7zip_15.14.1/C/CpuArch.h 2016-06-08 19:47:49.000000000 +0200 -@@ -66,6 +66,7 @@ - || defined(__MIPSEL__) \ - || defined(__MIPSEL) \ - || defined(_MIPSEL) \ -+ || defined(__BFIN__) \ - || (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)) - #define MY_CPU_LE - #endif diff --git a/buildroot/package/patch/0002-Allow-input-files-to-be-missing-for-ed-style-patches.patch b/buildroot/package/patch/0002-Allow-input-files-to-be-missing-for-ed-style-patches.patch new file mode 100644 index 00000000000..7d5757d1af8 --- /dev/null +++ b/buildroot/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/buildroot/package/patch/0003-Fix-arbitrary-command-execution-in-ed-style-patches-.patch b/buildroot/package/patch/0003-Fix-arbitrary-command-execution-in-ed-style-patches-.patch new file mode 100644 index 00000000000..b44bdd0faca --- /dev/null +++ b/buildroot/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/buildroot/package/patch/Config.in b/buildroot/package/patch/Config.in index 0c2425823a2..13fa7bfc52e 100644 --- a/buildroot/package/patch/Config.in +++ b/buildroot/package/patch/Config.in @@ -1,5 +1,6 @@ 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 @@ -10,4 +11,5 @@ config BR2_PACKAGE_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/buildroot/package/patch/patch.mk b/buildroot/package/patch/patch.mk index 33f0039d601..d581682c709 100644 --- a/buildroot/package/patch/patch.mk +++ b/buildroot/package/patch/patch.mk @@ -11,10 +11,10 @@ PATCH_LICENSE = GPL-3.0+ PATCH_LICENSE_FILES = COPYING ifeq ($(BR2_PACKAGE_ATTR),y) -PATCH_CONF_OPTS += --enable-attr +PATCH_CONF_OPTS += --enable-xattr PATCH_DEPENDENCIES += attr else -PATCH_CONF_OPTS += --disable-attr +PATCH_CONF_OPTS += --disable-xattr endif $(eval $(autotools-package)) diff --git a/buildroot/package/pciutils/Config.in b/buildroot/package/pciutils/Config.in index d46df6c0d64..a082f239977 100644 --- a/buildroot/package/pciutils/Config.in +++ b/buildroot/package/pciutils/Config.in @@ -1,7 +1,5 @@ config BR2_PACKAGE_PCIUTILS bool "pciutils" - # PCI not supported on Blackfin - depends on !BR2_bfin help Various utilities dealing with the PCI bus. Provides things like setpci and lspci. diff --git a/buildroot/package/pcmanfm/pcmanfm.hash b/buildroot/package/pcmanfm/pcmanfm.hash index 155e9beb824..f633b49aac6 100644 --- a/buildroot/package/pcmanfm/pcmanfm.hash +++ b/buildroot/package/pcmanfm/pcmanfm.hash @@ -1,3 +1,6 @@ # From https://sourceforge.net/projects/pcmanfm/files/PCManFM%20%2B%20Libfm%20%28tarball%20release%29/PCManFM/ -md5 b4d1f8ce08d87e4f27805a246fc51ac2 pcmanfm-1.2.5.tar.xz -sha1 9a8a2b4abebdf859e5ba2486eff84d505ad17b89 pcmanfm-1.2.5.tar.xz +md5 827838f7f6b17dc97e1690c07da8fdb3 pcmanfm-1.3.0.tar.xz +sha1 690fb28c0957ad56e28d1b8f5384e63462c118b2 pcmanfm-1.3.0.tar.xz + +# Hash for license file: +sha256 231f7edcc7352d7734a96eef0b8030f77982678c516876fcb81e25b32d68564c COPYING diff --git a/buildroot/package/pcmanfm/pcmanfm.mk b/buildroot/package/pcmanfm/pcmanfm.mk index 31acae65bcc..6dadfaeebd4 100644 --- a/buildroot/package/pcmanfm/pcmanfm.mk +++ b/buildroot/package/pcmanfm/pcmanfm.mk @@ -4,7 +4,7 @@ # ################################################################################ -PCMANFM_VERSION = 1.2.5 +PCMANFM_VERSION = 1.3.0 PCMANFM_SOURCE = pcmanfm-$(PCMANFM_VERSION).tar.xz PCMANFM_SITE = http://sourceforge.net/projects/pcmanfm/files PCMANFM_DEPENDENCIES = libglib2 menu-cache libfm diff --git a/buildroot/package/pcsc-lite/Config.in b/buildroot/package/pcsc-lite/Config.in index 658ebe30689..3250a463b42 100644 --- a/buildroot/package/pcsc-lite/Config.in +++ b/buildroot/package/pcsc-lite/Config.in @@ -6,7 +6,7 @@ config BR2_PACKAGE_PCSC_LITE help Middleware to access smart card using SCard API (PC/SC). - http://pcsclite.alioth.debian.org/ + https://muscle.apdu.fr/ if BR2_PACKAGE_PCSC_LITE diff --git a/buildroot/package/pcsc-lite/pcsc-lite.hash b/buildroot/package/pcsc-lite/pcsc-lite.hash index efd974930d2..fe5ce946967 100644 --- a/buildroot/package/pcsc-lite/pcsc-lite.hash +++ b/buildroot/package/pcsc-lite/pcsc-lite.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 ec7d0114016c788c1c09859c84860f6cec6c4595436d23245105154b9c046bb2 pcsc-lite-1.8.22.tar.bz2 +sha256 5a27262586eff39cfd5c19aadc8891dd71c0818d3d629539bd631b958be689c9 pcsc-lite-1.8.23.tar.bz2 +sha256 2ce8f52bc5afa74f223121955e4e6328c432b16044ea535acd550435dda2b5db COPYING diff --git a/buildroot/package/pcsc-lite/pcsc-lite.mk b/buildroot/package/pcsc-lite/pcsc-lite.mk index 15c37f9ef06..0d55d4b7063 100644 --- a/buildroot/package/pcsc-lite/pcsc-lite.mk +++ b/buildroot/package/pcsc-lite/pcsc-lite.mk @@ -4,9 +4,9 @@ # ################################################################################ -PCSC_LITE_VERSION = 1.8.22 +PCSC_LITE_VERSION = 1.8.23 PCSC_LITE_SOURCE = pcsc-lite-$(PCSC_LITE_VERSION).tar.bz2 -PCSC_LITE_SITE = http://alioth.debian.org/frs/download.php/file/4203 +PCSC_LITE_SITE = https://pcsclite.apdu.fr/files PCSC_LITE_INSTALL_STAGING = YES PCSC_LITE_DEPENDENCIES = host-pkgconf PCSC_LITE_LICENSE = BSD-3-Clause @@ -29,6 +29,13 @@ 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 ($(PACKAGE_PCSC_LITE_DEBUGATR),y) PCSC_LITE_CONF_OPTS += --enable-debugatr endif diff --git a/buildroot/package/perl/perl.hash b/buildroot/package/perl/perl.hash index 14e6b117cac..210f6d581bc 100644 --- a/buildroot/package/perl/perl.hash +++ b/buildroot/package/perl/perl.hash @@ -1,7 +1,7 @@ -# Hashes from: http://www.cpan.org/src/5.0/perl-5.26.1.tar.xz.{md5,sha1,sha256}.txt -md5 70e988b4318739b0cf3ad5e120bfde88 perl-5.26.1.tar.xz -sha1 403bb1804cb41416153d908eea093f2be22a77f6 perl-5.26.1.tar.xz -sha256 fe8208133e73e47afc3251c08d2c21c5a60160165a8ab8b669c43a420e4ec680 perl-5.26.1.tar.xz +# Hashes from: http://www.cpan.org/src/5.0/perl-5.26.2.tar.xz.{md5,sha1,sha256}.txt +md5 1fa1b53eeff76aa37b17bfc9b2771671 perl-5.26.2.tar.xz +sha1 bfa5c7921ed7bf5e035dbf2f7ff81367b81e372c perl-5.26.2.tar.xz +sha256 0f8c0fb1b0db4681adb75c3ba0dd77a0472b1b359b9e80efd79fc27b4352132c perl-5.26.2.tar.xz -# Hashes from: http://github.com/arsv/perl-cross/releases/download/1.1.8/perl-cross-1.1.8.hash -sha256 08e626ed9c419b8a695a8762ff8b41a553023175e4ad67b5e858fc9b4322521c perl-cross-1.1.8.tar.gz +# Hashes from: http://github.com/arsv/perl-cross/releases/download/1.1.9/perl-cross-1.1.9.hash +sha256 0bbb450e48d07e7fdf867d578b1780ac8f0e8dc284d52301dac4d763b42f6041 perl-cross-1.1.9.tar.gz diff --git a/buildroot/package/perl/perl.mk b/buildroot/package/perl/perl.mk index 58bf3eb6ae5..f7e5604edb9 100644 --- a/buildroot/package/perl/perl.mk +++ b/buildroot/package/perl/perl.mk @@ -6,14 +6,14 @@ # When updating the version here, also update utils/scancpan PERL_VERSION_MAJOR = 26 -PERL_VERSION = 5.$(PERL_VERSION_MAJOR).1 +PERL_VERSION = 5.$(PERL_VERSION_MAJOR).2 PERL_SITE = http://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_INSTALL_STAGING = YES -PERL_CROSS_VERSION = 1.1.8 +PERL_CROSS_VERSION = 1.1.9 # 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 @@ -24,7 +24,7 @@ PERL_EXTRA_DOWNLOADS = $(PERL_CROSS_SITE)/$(PERL_CROSS_SOURCE) # as a separate package. Instead, it is downloaded and extracted # together with perl define PERL_CROSS_EXTRACT - $(call suitable-extractor,$(PERL_CROSS_SOURCE)) $(DL_DIR)/$(PERL_CROSS_SOURCE) | \ + $(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 diff --git a/buildroot/package/php-zmq/Config.in b/buildroot/package/php-zmq/Config.in index 058f93d9a86..3f7406b262a 100644 --- a/buildroot/package/php-zmq/Config.in +++ b/buildroot/package/php-zmq/Config.in @@ -1,11 +1,11 @@ -comment "php-zmq needs a toolchain w/ C++, threads" - depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) +comment "php-zmq needs a toolchain w/ C++, NPTL" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS_NPTL) config BR2_PACKAGE_PHP_ZMQ bool "php-zmq" depends on BR2_PACKAGE_PHP depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # zeromq select BR2_PACKAGE_ZEROMQ help ZeroMQ messaging bindings for PHP diff --git a/buildroot/package/php/0007-Call-apxs-with-correct-prefix.patch b/buildroot/package/php/0006-Call-apxs-with-correct-prefix.patch similarity index 100% rename from buildroot/package/php/0007-Call-apxs-with-correct-prefix.patch rename to buildroot/package/php/0006-Call-apxs-with-correct-prefix.patch diff --git a/buildroot/package/php/0006-avoid-bfin-gcc-segfault.patch b/buildroot/package/php/0006-avoid-bfin-gcc-segfault.patch deleted file mode 100644 index 7f8cb24e7a0..00000000000 --- a/buildroot/package/php/0006-avoid-bfin-gcc-segfault.patch +++ /dev/null @@ -1,17 +0,0 @@ -Avoid gcc segmentation fault - -Signed-off-by: Waldemar Brodkorb -Signed-off-by: Adam Duskett -[aduskett@gmail.com: Update for 7.2.2] -diff -Nur php-7.0.12.orig/Zend/zend_portability.h php-7.0.12/Zend/zend_portability.h ---- php-7.0.12.orig/Zend/zend_portability.h 2016-10-13 16:04:17.000000000 +0200 -+++ php-7.0.12/Zend/zend_portability.h 2016-11-08 02:49:39.118388999 +0100 -@@ -95,7 +95,7 @@ - - #if defined(ZEND_WIN32) && !defined(__clang__) - # define ZEND_ASSUME(c) __assume(c) --#elif ((defined(__GNUC__) && ZEND_GCC_VERSION >= 4005) || __has_builtin(__builtin_unreachable)) && PHP_HAVE_BUILTIN_EXPECT -+#elif ((defined(__GNUC__) && ZEND_GCC_VERSION >= 4005) || __has_builtin(__builtin_unreachable)) && PHP_HAVE_BUILTIN_EXPECT && !defined(__bfin__) - # define ZEND_ASSUME(c) do { \ - if (__builtin_expect(!(c), 0)) __builtin_unreachable(); \ - } while (0) diff --git a/buildroot/package/php/0007-ext-xml-expat_compat.h-add-missing-php.h-include.patch b/buildroot/package/php/0007-ext-xml-expat_compat.h-add-missing-php.h-include.patch new file mode 100644 index 00000000000..daf004dcf7f --- /dev/null +++ b/buildroot/package/php/0007-ext-xml-expat_compat.h-add-missing-php.h-include.patch @@ -0,0 +1,71 @@ +From fb1f0e17eed729204a6d5caf590715d6257dceb3 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Thu, 5 Apr 2018 22:50:00 +0200 +Subject: [PATCH] ext/xml/expat_compat.h: add missing php.h include + +When expat support is disabled and libxml support is enabled, the +following part of the code in expat_compat.h gets used: + +and therefore "php".h" is included. However, when libexpat support is +enabled, HAVE_LIBEXPAT is defined, and therefore the following part of +the code is used: + +In this case, "php.h" is not included. Due to this, zend_alloc.h is +never included when building the ext/xmlrpc/libxmlrpc/xml_element.c +file, and therefore the estrdup -> _estrdup macros are never defined, +causing the following link time failure: + +ext/xmlrpc/libxmlrpc/xml_element.o: In function `xml_element_serialize': +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:462: undefined reference to `efree' +ext/xmlrpc/libxmlrpc/xml_element.o: In function `xml_elem_entity_escape': +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:347: undefined reference to `emalloc' +ext/xmlrpc/libxmlrpc/xml_element.o: In function `_xmlrpc_charHandler': +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:646: undefined reference to `efree' +ext/xmlrpc/libxmlrpc/xml_element.o: In function `xml_elem_free_non_recurse': +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:198: undefined reference to `efree' +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:199: undefined reference to `efree' +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:200: undefined reference to `efree' +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:207: undefined reference to `efree' +ext/xmlrpc/libxmlrpc/xml_element.o: In function `xml_elem_new': +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:263: undefined reference to `ecalloc' +ext/xmlrpc/libxmlrpc/xml_element.o: In function `_xmlrpc_startElement': +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:602: undefined reference to `estrdup' +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:607: undefined reference to `emalloc' +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:609: undefined reference to `estrdup' +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:610: undefined reference to `estrdup' +ext/xmlrpc/libxmlrpc/xml_element.o: In function `xml_elem_free_non_recurse': +/home/thomas/projets/php/ext/xmlrpc/libxmlrpc/xml_element.c:211: undefined reference to `efree' +collect2: error: ld returned 1 exit status +make: *** [Makefile:248: sapi/cgi/php-cgi] Error 1 + +This link time failure can be produced with: + +./configure --prefix=/usr --with-libdir=/usr/lib64 --disable-all \ + --without-pear --with-config-file-path=/etc --disable-phpdbg \ + --disable-cli --enable-cgi --disable-fpm --enable-xmlreader \ + --enable-xmlwriter --enable-libxml --enable-wddx --with-xmlrpc \ + --with-libexpat-dir=/ + +We fix it by including "php.h" in the HAVE_LIBEXPAT case. + +Signed-off-by: Thomas Petazzoni +Upstream-status: https://github.com/php/php-src/pull/3212 +--- + ext/xml/expat_compat.h | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/ext/xml/expat_compat.h b/ext/xml/expat_compat.h +index ed621ab53d..29fe48a7dd 100644 +--- a/ext/xml/expat_compat.h ++++ b/ext/xml/expat_compat.h +@@ -154,6 +154,7 @@ PHP_XML_API const XML_Char *XML_ExpatVersion(void); + PHP_XML_API void XML_ParserFree(XML_Parser); + + #elif defined(HAVE_LIBEXPAT) ++#include "php.h" + #include + #endif /* HAVE_LIBEXPAT */ + +-- +2.14.3 + diff --git a/buildroot/package/php/0008-ext-sockets-make-AI_IDN-usage-optional.patch b/buildroot/package/php/0008-ext-sockets-make-AI_IDN-usage-optional.patch deleted file mode 100644 index 7ab086865e8..00000000000 --- a/buildroot/package/php/0008-ext-sockets-make-AI_IDN-usage-optional.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 923cab3a5ee112d3de44b5571e73402f1fa3d619 Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Mon, 26 Feb 2018 19:06:40 +0100 -Subject: [PATCH] ext/sockets: make AI_IDN usage optional - -AI_IDN is not supported by all C libraries (uClibc, musl), so make it -optional, like AI_ALL. - -Signed-off-by: Thomas Petazzoni -Upstream-status: https://github.com/php/php-src/pull/3160 ---- - ext/sockets/config.m4 | 13 +++++++++++++ - ext/sockets/sockets.c | 2 +- - 2 files changed, 14 insertions(+), 1 deletion(-) - -diff --git a/ext/sockets/config.m4 b/ext/sockets/config.m4 -index fe7d22a10a..2bf6a2bd11 100644 ---- a/ext/sockets/config.m4 -+++ b/ext/sockets/config.m4 -@@ -69,6 +69,19 @@ if test "$PHP_SOCKETS" != "no"; then - AC_DEFINE(HAVE_AI_ALL,1,[Whether you have AI_ALL]) - fi - -+ dnl Check for AI_IDN flag -+ AC_CACHE_CHECK([if getaddrinfo supports AI_IDN],[ac_cv_gai_ai_idn], -+ [ -+ AC_TRY_COMPILE([ -+#include -+ ], [int flag = AI_IDN;], -+ ac_cv_gai_ai_idn=yes, ac_cv_gai_ai_idn=no) -+ ]) -+ -+ if test "$ac_cv_gai_ai_idn" = yes; then -+ AC_DEFINE(HAVE_AI_IDN,1,[Whether you have AI_IDN]) -+ fi -+ - PHP_NEW_EXTENSION([sockets], [sockets.c multicast.c conversions.c sockaddr_conv.c sendrecvmsg.c], [$ext_shared],, -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1) - PHP_INSTALL_HEADERS([ext/sockets/], [php_sockets.h]) - fi -diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c -index 6db56c2816..ee9651ce09 100644 ---- a/ext/sockets/sockets.c -+++ b/ext/sockets/sockets.c -@@ -796,7 +796,7 @@ static PHP_MINIT_FUNCTION(sockets) - REGISTER_LONG_CONSTANT("AI_ALL", AI_ALL, CONST_CS | CONST_PERSISTENT); - #endif - REGISTER_LONG_CONSTANT("AI_ADDRCONFIG", AI_ADDRCONFIG, CONST_CS | CONST_PERSISTENT); --#ifdef __USE_GNU -+#if defined(HAVE_AI_IDN) && defined(__USE_GNU) - REGISTER_LONG_CONSTANT("AI_IDN", AI_IDN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("AI_CANONIDN", AI_CANONIDN, CONST_CS | CONST_PERSISTENT); - REGISTER_LONG_CONSTANT("AI_IDN_ALLOW_UNASSIGNED", AI_IDN_ALLOW_UNASSIGNED, CONST_CS | CONST_PERSISTENT); --- -2.14.3 - diff --git a/buildroot/package/php/0009-main-php_ini.c-build-empty-php_load_zend_extension_c.patch b/buildroot/package/php/0009-main-php_ini.c-build-empty-php_load_zend_extension_c.patch deleted file mode 100644 index bc5149d1d69..00000000000 --- a/buildroot/package/php/0009-main-php_ini.c-build-empty-php_load_zend_extension_c.patch +++ /dev/null @@ -1,62 +0,0 @@ -From b7bbdfbcb0869b5c068143d4e27bab9eac4ae72b Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Mon, 26 Feb 2018 19:30:55 +0100 -Subject: [PATCH] main/php_ini.c: build empty php_load_zend_extension_cb() when - !HAVE_LIBDL - -Commit 0782a7fc6314c8bd3cbfd57f12d0479bf9cc8dc7 ("Fixed bug #74866 -extension_dir = "./ext" now use current directory for base") modified -the php_load_zend_extension_cb() function to use php_load_shlib(), and -pass a handle to the newly introduced zend_load_extension_handle() -function instead of passing the extension path to -zend_load_extension(). - -While doing so, it introduced a call to php_load_shlib() from code -that is built even when HAVE_LIBDL is not defined. However, -php_load_shlib() is not implemented when HAVE_LIBDL is not defined, -for obvious reasons. - -It turns out that zend_load_extension_handle() anyway doesn't do -anything when ZEND_EXTENSIONS_SUPPORT is defined to 0, and -ZEND_EXTENSIONS_SUPPORT is not defined when HAVE_LIBDL is not defined -(Zend/zend_portability.h). - -Fixes the following build failure when building on a system that -doesn't have libdl: - -main/php_ini.o: In function `php_load_zend_extension_cb': -php_ini.c:(.text+0x478): undefined reference to `php_load_shlib' -php_ini.c:(.text+0x4b0): undefined reference to `php_load_shlib' -collect2: error: ld returned 1 exit status - -Signed-off-by: Thomas Petazzoni -Upstream-status: https://github.com/php/php-src/pull/3161 ---- - main/php_ini.c | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/main/php_ini.c b/main/php_ini.c -index ba58eb1180..fca263e5f0 100644 ---- a/main/php_ini.c -+++ b/main/php_ini.c -@@ -350,6 +350,7 @@ static void php_load_php_extension_cb(void *arg) - - /* {{{ php_load_zend_extension_cb - */ -+#ifdef HAVE_LIBDL - static void php_load_zend_extension_cb(void *arg) - { - char *filename = *((char **) arg); -@@ -409,6 +410,9 @@ static void php_load_zend_extension_cb(void *arg) - efree(libpath); - } - } -+#else -+static void php_load_zend_extension_cb(void *arg) { } -+#endif - /* }}} */ - - /* {{{ php_init_config --- -2.14.3 - diff --git a/buildroot/package/php/Config.in b/buildroot/package/php/Config.in index 11514e04b17..24695735416 100644 --- a/buildroot/package/php/Config.in +++ b/buildroot/package/php/Config.in @@ -1,15 +1,15 @@ config BR2_PACKAGE_PHP bool "php" + # 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 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 - # 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 help PHP is a widely-used general-purpose scripting language that is especially suited for Web development diff --git a/buildroot/package/php/php.hash b/buildroot/package/php/php.hash index 34230df874f..4ddef442748 100644 --- a/buildroot/package/php/php.hash +++ b/buildroot/package/php/php.hash @@ -1,5 +1,5 @@ # From http://php.net/downloads.php -sha256 b3a94f1b562f413c0b96f54bc309706d83b29ac65d9b172bc7ed9fb40a5e651f php-7.2.3.tar.xz +sha256 af70a33b3f7a51510467199b39af151333fbbe4cc21923bad9c7cf64268cddb2 php-7.2.5.tar.xz # License file sha256 00e567a8d50359d93ee1f9afdd9511277660c1e70a0cbf3229f84403aa9aebb1 LICENSE diff --git a/buildroot/package/php/php.mk b/buildroot/package/php/php.mk index dcb89b03d31..4c3a87118ee 100644 --- a/buildroot/package/php/php.mk +++ b/buildroot/package/php/php.mk @@ -4,7 +4,7 @@ # ################################################################################ -PHP_VERSION = 7.2.3 +PHP_VERSION = 7.2.5 PHP_SITE = http://www.php.net/distributions PHP_SOURCE = php-$(PHP_VERSION).tar.xz PHP_INSTALL_STAGING = YES @@ -228,10 +228,6 @@ ifneq ($(BR2_PACKAGE_PHP_EXT_MYSQLI)$(BR2_PACKAGE_PHP_EXT_PDO_MYSQL),) PHP_CONF_OPTS += --with-mysql-sock=$(MYSQL_SOCKET) endif -define PHP_DISABLE_PCRE_JIT - $(SED) '/^#define SUPPORT_JIT/d' $(@D)/ext/pcre/pcrelib/config.h -endef - define PHP_DISABLE_VALGRIND $(SED) '/^#define HAVE_VALGRIND/d' $(@D)/main/php_config.h endef @@ -249,8 +245,10 @@ ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),) PHP_CFLAGS += -DSLJIT_SINGLE_THREADED=1 endif # check ext/pcre/pcrelib/sljit/sljitConfigInternal.h for supported archs -ifeq ($(BR2_i386)$(BR2_x86_64)$(BR2_arm)$(BR2_armeb)$(BR2_aarch64)$(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el)$(BR2_powerpc)$(BR2_sparc),) -PHP_POST_CONFIGURE_HOOKS += PHP_DISABLE_PCRE_JIT +ifeq ($(BR2_i386)$(BR2_x86_64)$(BR2_arm)$(BR2_armeb)$(BR2_aarch64)$(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el)$(BR2_powerpc)$(BR2_sparc),y) +PHP_CONF_OPTS += --with-pcre-jit +else +PHP_CONF_OPTS += --without-pcre-jit endif endif diff --git a/buildroot/package/picocom/0001-Compile-with-libc-s-without-cispeed-cospeed.patch b/buildroot/package/picocom/0001-Compile-with-libc-s-without-cispeed-cospeed.patch new file mode 100644 index 00000000000..5143e311020 --- /dev/null +++ b/buildroot/package/picocom/0001-Compile-with-libc-s-without-cispeed-cospeed.patch @@ -0,0 +1,49 @@ +From 30c712c5f14306460c44bea70e24419db9d44f8c Mon Sep 17 00:00:00 2001 +From: Nick Patavalis +Date: Thu, 12 Apr 2018 15:16:04 +0300 +Subject: [PATCH] Compile with libc's without cispeed / cospeed + +Some libc implementations (e.g. musl) do not define the cispeed and +cospeed struct termios fields. So we have to check the +_HAVE_STRUCT_TERMIOS_C_ISPEED and _HAVE_STRUCT_TERMIOS_C_OSPEED +macros. If not defined, we disable custom baudrate support. + +[baruch: backported from upstream master to 3.1] +Signed-off-by: Baruch Siach +--- +Upstream status: commit 1acf1ddabaf3 + + custbaud.h | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/custbaud.h b/custbaud.h +index 48151a4a4e84..ae4ae8daf49e 100644 +--- a/custbaud.h ++++ b/custbaud.h +@@ -26,6 +26,8 @@ + #ifndef CUSTBAUD_H + #define CUSTBAUD_H + ++#include ++ + #ifndef NO_CUSTOM_BAUD + + #if defined (__linux__) +@@ -33,7 +35,13 @@ + /* Enable by-default for kernels > 2.6.0 on x86 and x86_64 only */ + #include + #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,0) +-#if defined (__i386__) || defined (__x86_64__) || defined (USE_CUSTOM_BAUD) ++/* Some libc implementations (e.g. musl) do not define the cispeed and ++ cospeed struct termios fields. We do not support custom baudrates ++ on them. */ ++#if ( (defined (__i386__) || defined (__x86_64__)) \ ++ && defined (_HAVE_STRUCT_TERMIOS_C_ISPEED) \ ++ && defined (_HAVE_STRUCT_TERMIOS_C_OSPEED) ) \ ++ || defined (USE_CUSTOM_BAUD) + #ifndef USE_CUSTOM_BAUD + #define USE_CUSTOM_BAUD + #endif +-- +2.16.3 + diff --git a/buildroot/package/picocom/picocom.hash b/buildroot/package/picocom/picocom.hash index f1558304930..28f2d9cdc5a 100644 --- a/buildroot/package/picocom/picocom.hash +++ b/buildroot/package/picocom/picocom.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 a539db95bde3a5ebd52ae58a21f40d00cc2c97bf14b1f50caffc07257989112e picocom-3.0.tar.gz +sha256 e6761ca932ffc6d09bd6b11ff018bdaf70b287ce518b3282d29e0270e88420bb picocom-3.1.tar.gz sha256 9273c6b2c55be95f0f0df292d87e8900e5bfdf5b510a6ea09e80306cf45c10f6 LICENSE.txt diff --git a/buildroot/package/picocom/picocom.mk b/buildroot/package/picocom/picocom.mk index 0fa60f99c3b..d27c7343766 100644 --- a/buildroot/package/picocom/picocom.mk +++ b/buildroot/package/picocom/picocom.mk @@ -4,7 +4,7 @@ # ################################################################################ -PICOCOM_VERSION = 3.0 +PICOCOM_VERSION = 3.1 PICOCOM_SITE = $(call github,npat-efault,picocom,$(PICOCOM_VERSION)) PICOCOM_LICENSE = GPL-2.0+ PICOCOM_LICENSE_FILES = LICENSE.txt diff --git a/buildroot/package/pixiewps/Config.in b/buildroot/package/pixiewps/Config.in new file mode 100644 index 00000000000..05719f4211f --- /dev/null +++ b/buildroot/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/buildroot/package/pixiewps/pixiewps.hash b/buildroot/package/pixiewps/pixiewps.hash new file mode 100644 index 00000000000..bb566303882 --- /dev/null +++ b/buildroot/package/pixiewps/pixiewps.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 d3d3cf57851e3e734fb1797aa078239ef161d1cbeffc4438497d58a425ef22a2 pixiewps-9e5bdc6c86c8487b2a6107d5ab3559ed5c738c59.tar.gz +sha256 ccb349b4132ed7737f25e5adebfe61f3d52dca33708df1e50352320438d1d4c2 LICENSE.md diff --git a/buildroot/package/pixiewps/pixiewps.mk b/buildroot/package/pixiewps/pixiewps.mk new file mode 100644 index 00000000000..95a253ab835 --- /dev/null +++ b/buildroot/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) CC=$(TARGET_CC) -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/buildroot/package/pkg-cmake.mk b/buildroot/package/pkg-cmake.mk index 14ffe4a88f7..51a1929ebbb 100644 --- a/buildroot/package/pkg-cmake.mk +++ b/buildroot/package/pkg-cmake.mk @@ -132,6 +132,7 @@ define $(2)_CONFIGURE_CMDS -DCMAKE_C_FLAGS="$$(HOST_CFLAGS)" \ -DCMAKE_CXX_FLAGS="$$(HOST_CXXFLAGS)" \ -DCMAKE_EXE_LINKER_FLAGS="$$(HOST_LDFLAGS)" \ + -DCMAKE_SHARED_LINKER_FLAGS="$$(HOST_LDFLAGS)" \ -DCMAKE_ASM_COMPILER="$$(HOSTAS)" \ -DCMAKE_C_COMPILER="$$(CMAKE_HOST_C_COMPILER)" \ -DCMAKE_CXX_COMPILER="$$(CMAKE_HOST_CXX_COMPILER)" \ @@ -252,8 +253,8 @@ endif # 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. -$(HOST_DIR)/share/buildroot/toolchainfile.cmake: - @mkdir -p $(@D) +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))#' \ @@ -267,7 +268,10 @@ $(HOST_DIR)/share/buildroot/toolchainfile.cmake: -e 's#@@TOOLCHAIN_HAS_FORTRAN@@#$(if $(BR2_TOOLCHAIN_HAS_FORTRAN),1,0)#' \ -e 's#@@CMAKE_BUILD_TYPE@@#$(if $(BR2_ENABLE_DEBUG),Debug,Release)#' \ $(TOPDIR)/support/misc/toolchainfile.cmake.in \ - > $@ + > $(HOST_DIR)/share/buildroot/toolchainfile.cmake + $(Q)$(INSTALL) -D -m 0644 support/misc/Buildroot.cmake \ + $(HOST_DIR)/share/buildroot/Platform/Buildroot.cmake +endef -$(HOST_DIR)/share/buildroot/Platform/Buildroot.cmake: - $(Q)$(INSTALL) -D -m 0644 support/misc/Buildroot.cmake $(@) +TOOLCHAIN_POST_INSTALL_STAGING_HOOKS += TOOLCHAIN_CMAKE_INSTALL_FILES +TOOLCHAIN_INSTALL_STAGING = YES diff --git a/buildroot/package/pkg-download.mk b/buildroot/package/pkg-download.mk index 3712b9ccc6f..2ca6ccf44df 100644 --- a/buildroot/package/pkg-download.mk +++ b/buildroot/package/pkg-download.mk @@ -19,6 +19,7 @@ SSH := $(call qstrip,$(BR2_SSH)) export LOCALFILES := $(call qstrip,$(BR2_LOCALFILES)) DL_WRAPPER = support/download/dl-wrapper +FLOCK = flock $($(PKG)_DL_DIR)/ # DL_DIR may have been set already from the environment ifeq ($(origin DL_DIR),undefined) @@ -42,6 +43,8 @@ DL_DIR := $(shell mkdir -p $(DL_DIR) && cd $(DL_DIR) >/dev/null && pwd) # # 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 @@ -61,152 +64,46 @@ github = https://github.com/$(1)/$(2)/archive/$(3) export BR_NO_CHECK_HASH_FOR = ################################################################################ -# The DOWNLOAD_* helpers are in charge of getting a working copy -# of the source repository for their corresponding SCM, -# checking out the requested version / commit / tag, and create an -# archive out of it. DOWNLOAD_SCP uses scp to obtain a remote file with -# ssh authentication. DOWNLOAD_WGET is the normal wget-based download -# mechanism. -# -################################################################################ - -define DOWNLOAD_GIT - $(EXTRA_ENV) $(DL_WRAPPER) -b git \ - -o $(DL_DIR)/$($(PKG)_SOURCE) \ - $(if $($(PKG)_GIT_SUBMODULES),-r) \ - -H $(PKGDIR)/$($(PKG)_RAWNAME).hash \ - $(QUIET) \ - -- \ - $($(PKG)_SITE) \ - $($(PKG)_DL_VERSION) \ - $($(PKG)_RAW_BASE_NAME) \ - $($(PKG)_DL_OPTS) -endef - -define DOWNLOAD_BZR - $(EXTRA_ENV) $(DL_WRAPPER) -b bzr \ - -o $(DL_DIR)/$($(PKG)_SOURCE) \ - $(QUIET) \ - -- \ - $($(PKG)_SITE) \ - $($(PKG)_DL_VERSION) \ - $($(PKG)_RAW_BASE_NAME) \ - $($(PKG)_DL_OPTS) -endef - -define DOWNLOAD_CVS - $(EXTRA_ENV) $(DL_WRAPPER) -b cvs \ - -o $(DL_DIR)/$($(PKG)_SOURCE) \ - $(QUIET) \ - -- \ - $(call stripurischeme,$(call qstrip,$($(PKG)_SITE))) \ - $($(PKG)_DL_VERSION) \ - $($(PKG)_RAWNAME) \ - $($(PKG)_RAW_BASE_NAME) \ - $($(PKG)_DL_OPTS) -endef - -define DOWNLOAD_SVN - $(EXTRA_ENV) $(DL_WRAPPER) -b svn \ - -o $(DL_DIR)/$($(PKG)_SOURCE) \ - $(QUIET) \ - -- \ - $($(PKG)_SITE) \ - $($(PKG)_DL_VERSION) \ - $($(PKG)_RAW_BASE_NAME) \ - $($(PKG)_DL_OPTS) -endef - -# SCP URIs should be of the form scp://[user@]host:filepath -# Note that filepath is relative to the user's home directory, so you may want -# to prepend the path with a slash: scp://[user@]host:/absolutepath -define DOWNLOAD_SCP - $(EXTRA_ENV) $(DL_WRAPPER) -b scp \ - -o $(DL_DIR)/$(2) \ - -H $(PKGDIR)/$($(PKG)_RAWNAME).hash \ - $(QUIET) \ - -- \ - '$(call stripurischeme,$(call qstrip,$(1)))' \ - $($(PKG)_DL_OPTS) -endef - -define DOWNLOAD_HG - $(EXTRA_ENV) $(DL_WRAPPER) -b hg \ - -o $(DL_DIR)/$($(PKG)_SOURCE) \ - $(QUIET) \ - -- \ - $($(PKG)_SITE) \ - $($(PKG)_DL_VERSION) \ - $($(PKG)_RAW_BASE_NAME) \ - $($(PKG)_DL_OPTS) -endef - -define DOWNLOAD_WGET - $(EXTRA_ENV) $(DL_WRAPPER) -b wget \ - -o $(DL_DIR)/$(2) \ - -H $(PKGDIR)/$($(PKG)_RAWNAME).hash \ - $(QUIET) \ - -- \ - '$(call qstrip,$(1))' \ - $($(PKG)_DL_OPTS) -endef - -define DOWNLOAD_LOCALFILES - $(EXTRA_ENV) $(DL_WRAPPER) -b cp \ - -o $(DL_DIR)/$(2) \ - -H $(PKGDIR)/$($(PKG)_RAWNAME).hash \ - $(QUIET) \ - -- \ - $(call stripurischeme,$(call qstrip,$(1))) \ - $($(PKG)_DL_OPTS) -endef - -################################################################################ -# DOWNLOAD -- Download helper. Will try to download source from: +# DOWNLOAD -- Download helper. Will call DL_WRAPPER which will try to download +# source 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 # -# E.G. use like this: -# $(call DOWNLOAD,$(FOO_SITE)) -# -# For PRIMARY and BACKUP site, any ? in the URL is replaced by %3F. A ? in -# the URL is used to separate query arguments, but the PRIMARY and BACKUP -# sites serve just plain files. ################################################################################ -define DOWNLOAD - $(call DOWNLOAD_INNER,$(1),$(notdir $(1)),DOWNLOAD) -endef +ifneq ($(call qstrip,$(BR2_PRIMARY_SITE)),) +DOWNLOAD_URIS += \ + -u $(call getschemeplusuri,$(call qstrip,$(BR2_PRIMARY_SITE)/$($(PKG)_DL_SUBDIR)),urlencode) \ + -u $(call getschemeplusuri,$(call qstrip,$(BR2_PRIMARY_SITE)),urlencode) +endif + +ifeq ($(BR2_PRIMARY_SITE_ONLY),) +DOWNLOAD_URIS += \ + -u $(patsubst %/,%,$(dir $(call qstrip,$(1)))) +ifneq ($(call qstrip,$(BR2_BACKUP_SITE)),) +DOWNLOAD_URIS += \ + -u $(call getschemeplusuri,$(call qstrip,$(BR2_BACKUP_SITE)/$($(PKG)_DL_SUBDIR)),urlencode) \ + -u $(call getschemeplusuri,$(call qstrip,$(BR2_BACKUP_SITE)),urlencode) +endif +endif -define DOWNLOAD_INNER - $(Q)$(if $(filter bzr cvs hg svn,$($(PKG)_SITE_METHOD)),export BR_NO_CHECK_HASH_FOR=$(2);) \ - if test -n "$(call qstrip,$(BR2_PRIMARY_SITE))" ; then \ - case "$(call geturischeme,$(BR2_PRIMARY_SITE))" in \ - file) $(call $(3)_LOCALFILES,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \ - scp) $(call $(3)_SCP,$(BR2_PRIMARY_SITE)/$(2),$(2)) && exit ;; \ - *) $(call $(3)_WGET,$(BR2_PRIMARY_SITE)/$(subst ?,%3F,$(2)),$(2)) && exit ;; \ - esac ; \ - fi ; \ - if test "$(BR2_PRIMARY_SITE_ONLY)" = "y" ; then \ - exit 1 ; \ - fi ; \ - if test -n "$(1)" ; then \ - case "$($(PKG)_SITE_METHOD)" in \ - git) $($(3)_GIT) && exit ;; \ - svn) $($(3)_SVN) && exit ;; \ - cvs) $($(3)_CVS) && exit ;; \ - bzr) $($(3)_BZR) && exit ;; \ - file) $($(3)_LOCALFILES) && exit ;; \ - scp) $($(3)_SCP) && exit ;; \ - hg) $($(3)_HG) && exit ;; \ - *) $(call $(3)_WGET,$(1),$(2)) && exit ;; \ - esac ; \ - fi ; \ - if test -n "$(call qstrip,$(BR2_BACKUP_SITE))" ; then \ - $(call $(3)_WGET,$(BR2_BACKUP_SITE)/$(subst ?,%3F,$(2)),$(2)) && exit ; \ - fi ; \ - exit 1 +define DOWNLOAD + $(Q)mkdir -p $($(PKG)_DL_DIR) + $(EXTRA_ENV) $(FLOCK) $(DL_WRAPPER) \ + -c '$($(PKG)_DL_VERSION)' \ + -d '$($(PKG)_DL_DIR)' \ + -D '$(DL_DIR)' \ + -f '$(notdir $(1))' \ + -H '$(PKGDIR)/$($(PKG)_RAWNAME).hash' \ + -n '$($(PKG)_BASENAME_RAW)' \ + -N '$($(PKG)_RAWNAME)' \ + -o '$($(PKG)_DL_DIR)/$(notdir $(1))' \ + $(if $($(PKG)_GIT_SUBMODULES),-r) \ + $(DOWNLOAD_URIS) \ + $(QUIET) \ + -- \ + $($(PKG)_DL_OPTS) endef diff --git a/buildroot/package/pkg-generic.mk b/buildroot/package/pkg-generic.mk index a2a12e7b560..8a3b5f90a9a 100644 --- a/buildroot/package/pkg-generic.mk +++ b/buildroot/package/pkg-generic.mk @@ -57,53 +57,28 @@ GLOBAL_INSTRUMENTATION_HOOKS += step_time # Hooks to collect statistics about installed files -define _step_pkg_size_get_file_list - (cd $(2) ; \ - ( \ - find . -xtype f -print0 | xargs -0 md5sum ; \ - find . -xtype d -print0 | xargs -0 -I{} printf 'directory {}\n'; \ - ) \ - ) | sort > $1 -endef - -# This hook will be called before the installation of a package. We store in -# a file named .br_filelist_before the list of files currently installed. -# Note that the MD5 is also stored, in order to identify if the files are -# overwritten. -# $(1): package name (ignored) -# $(2): base directory to search in -define step_pkg_size_start - $(call _step_pkg_size_get_file_list,$($(PKG)_DIR)/.br_filelist_before,$(2)) -endef - -# This hook will be called after the installation of a package. We store in -# a file named .br_filelist_after the list of files (and their MD5) currently -# installed. We then do a diff with the .br_filelist_before to compute the -# list of files installed by this package. # The suffix is typically empty for the target variant, for legacy backward # compatibility. -# $(1): package name (ignored) +# $(1): package name # $(2): base directory to search in # $(3): suffix of file (optional) -define step_pkg_size_end - $(call _step_pkg_size_get_file_list,$($(PKG)_DIR)/.br_filelist_after,$(2)) - comm -13 $($(PKG)_DIR)/.br_filelist_before $($(PKG)_DIR)/.br_filelist_after | \ - while read hash file ; do \ - echo "$(1),$${file}" ; \ - done >> $(BUILD_DIR)/packages-file-list$(3).txt - rm -f $($(PKG)_DIR)/.br_filelist_before $($(PKG)_DIR)/.br_filelist_after +define step_pkg_size_inner + @touch $(BUILD_DIR)/packages-file-list$(3).txt + $(SED) '/^$(1),/d' $(BUILD_DIR)/packages-file-list$(3).txt + cd $(2); \ + find . \( -type f -o -type l \) \ + -newer $($(PKG)_DIR)/.stamp_built \ + -exec printf '$(1),%s\n' {} + \ + >> $(BUILD_DIR)/packages-file-list$(3).txt endef define step_pkg_size $(if $(filter install-target,$(2)),\ - $(if $(filter start,$(1)),$(call step_pkg_size_start,$(3),$(TARGET_DIR))) \ - $(if $(filter end,$(1)),$(call step_pkg_size_end,$(3),$(TARGET_DIR)))) + $(if $(filter end,$(1)),$(call step_pkg_size_inner,$(3),$(TARGET_DIR)))) $(if $(filter install-staging,$(2)),\ - $(if $(filter start,$(1)),$(call step_pkg_size_start,$(3),$(STAGING_DIR),-staging)) \ - $(if $(filter end,$(1)),$(call step_pkg_size_end,$(3),$(STAGING_DIR),-staging))) + $(if $(filter end,$(1)),$(call step_pkg_size_inner,$(3),$(STAGING_DIR),-staging))) $(if $(filter install-host,$(2)),\ - $(if $(filter start,$(1)),$(call step_pkg_size_start,$(3),$(HOST_DIR),-host)) \ - $(if $(filter end,$(1)),$(call step_pkg_size_end,$(3),$(HOST_DIR),-host))) + $(if $(filter end,$(1)),$(call step_pkg_size_inner,$(3),$(HOST_DIR),-host))) endef GLOBAL_INSTRUMENTATION_HOOKS += step_pkg_size @@ -112,6 +87,7 @@ define check_bin_arch $(if $(filter end-install-target,$(1)-$(2)),\ support/scripts/check-bin-arch -p $(3) \ -l $(BUILD_DIR)/packages-file-list.txt \ + $(foreach i,$($(PKG)_BIN_ARCH_EXCLUDE),-i "$(i)") \ -r $(TARGET_READELF) \ -a $(BR2_READELF_ARCH_NAME)) endef @@ -159,7 +135,7 @@ $(BUILD_DIR)/%/.stamp_downloaded: $(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 $(DL_DIR)/`basename $$p` ; then \ + if test ! -e $($(PKG)_DL_DIR)/`basename $$p` ; then \ $(call MESSAGE,"Downloading") ; \ break ; \ fi ; \ @@ -171,7 +147,7 @@ $(BUILD_DIR)/%/.stamp_downloaded: # Retrieve actual source archive, e.g. for prebuilt external toolchains $(BUILD_DIR)/%/.stamp_actual_downloaded: - $(call DOWNLOAD,$($(PKG)_ACTUAL_SOURCE_SITE)/$($(PKG)_ACTUAL_SOURCE_TARBALL)); \ + $(call DOWNLOAD,$($(PKG)_ACTUAL_SOURCE_SITE)/$($(PKG)_ACTUAL_SOURCE_TARBALL)) $(Q)mkdir -p $(@D) $(Q)touch $@ @@ -194,7 +170,7 @@ $(BUILD_DIR)/%/.stamp_rsynced: @$(call MESSAGE,"Syncing from source dir $(SRCDIR)") $(foreach hook,$($(PKG)_PRE_RSYNC_HOOKS),$(call $(hook))$(sep)) @test -d $(SRCDIR) || (echo "ERROR: $(SRCDIR) does not exist" ; exit 1) - rsync -au --chmod=u=rwX,go=rX $(RSYNC_VCS_EXCLUSIONS) $(call qstrip,$(SRCDIR))/ $(@D) + rsync -au --chmod=u=rwX,go=rX $(RSYNC_VCS_EXCLUSIONS) $($(PKG)_OVERRIDE_SRCDIR_RSYNC_EXCLUSIONS) $(call qstrip,$(SRCDIR))/ $(@D) $(foreach hook,$($(PKG)_POST_RSYNC_HOOKS),$(call $(hook))$(sep)) $(Q)touch $@ @@ -211,7 +187,7 @@ $(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) $(DL_DIR) $(notdir $(p))$(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 \ @@ -410,6 +386,10 @@ endef 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))),) @@ -452,10 +432,11 @@ ifdef $(3)_OVERRIDE_SRCDIR $(2)_OVERRIDE_SRCDIR ?= $$($(3)_OVERRIDE_SRCDIR) endif -$(2)_BASE_NAME = $$(if $$($(2)_VERSION),$(1)-$$($(2)_VERSION),$(1)) -$(2)_RAW_BASE_NAME = $$(if $$($(2)_VERSION),$$($(2)_RAWNAME)-$$($(2)_VERSION),$$($(2)_RAWNAME)) -$(2)_DL_DIR = $$(DL_DIR) -$(2)_DIR = $$(BUILD_DIR)/$$($(2)_BASE_NAME) +$(2)_BASENAME = $$(if $$($(2)_VERSION),$(1)-$$($(2)_VERSION),$(1)) +$(2)_BASENAME_RAW = $$(if $$($(2)_VERSION),$$($(2)_RAWNAME)-$$($(2)_VERSION),$$($(2)_RAWNAME)) +$(2)_DL_SUBDIR ?= $$($(2)_RAWNAME) +$(2)_DL_DIR = $$(DL_DIR)/$$($(2)_DL_SUBDIR) +$(2)_DIR = $$(BUILD_DIR)/$$($(2)_BASENAME) ifndef $(2)_SUBDIR ifdef $(3)_SUBDIR @@ -484,7 +465,7 @@ ifndef $(2)_SOURCE ifdef $(3)_SOURCE $(2)_SOURCE = $$($(3)_SOURCE) else ifdef $(2)_VERSION - $(2)_SOURCE ?= $$($(2)_RAW_BASE_NAME).tar.gz + $(2)_SOURCE ?= $$($(2)_BASENAME_RAW).tar.gz endif endif @@ -502,8 +483,13 @@ ifndef $(2)_PATCH endif endif +ifneq ($$(filter bzr cvs hg svn,$$($(2)_SITE_METHOD)),) +BR_NO_CHECK_HASH_FOR += $$($(2)_SOURCE) +endif + $(2)_ALL_DOWNLOADS = \ - $$(foreach p,$$($(2)_SOURCE) $$($(2)_PATCH) $$($(2)_EXTRA_DOWNLOADS),\ + $$(if $$($(2)_SOURCE),$$($(2)_SITE_METHOD)+$$($(2)_SITE)/$$($(2)_SOURCE)) \ + $$(foreach p,$$($(2)_PATCH) $$($(2)_EXTRA_DOWNLOADS),\ $$(if $$(findstring ://,$$(p)),$$(p),\ $$($(2)_SITE)/$$(p))) @@ -558,7 +544,7 @@ endif $(2)_REDISTRIBUTE ?= YES -$(2)_REDIST_SOURCES_DIR = $$(REDIST_SOURCES_DIR_$$(call UPPERCASE,$(4)))/$$($(2)_RAW_BASE_NAME) +$(2)_REDIST_SOURCES_DIR = $$(REDIST_SOURCES_DIR_$$(call UPPERCASE,$(4)))/$$($(2)_BASENAME_RAW) # When a target package is a toolchain dependency set this variable to # 'NO' so the 'toolchain' dependency is not added to prevent a circular @@ -577,10 +563,43 @@ $(2)_DEPENDENCIES += toolchain endif endif +ifneq ($(1),host-skeleton) +$(2)_DEPENDENCIES += host-skeleton +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 += $(BR2_XZCAT_HOST_DEPENDENCY) +endif + +ifeq ($(filter host-tar host-skeleton host-xz host-lzip host-fakedate,$(1)),) +$(2)_EXTRACT_DEPENDENCIES += $(BR2_LZIP_HOST_DEPENDENCY) +endif + +ifeq ($(BR2_CCACHE),y) +ifeq ($(filter host-tar host-skeleton host-xz host-lzip host-fakedate host-ccache,$(1)),) +$(2)_DEPENDENCIES += host-ccache +endif +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_EXTRACT_DEPENDENCIES = $$(sort $$($(2)_EXTRACT_DEPENDENCIES)) $(2)_FINAL_PATCH_DEPENDENCIES = $$(sort $$($(2)_PATCH_DEPENDENCIES)) -$(2)_FINAL_ALL_DEPENDENCIES = $$(sort $$($(2)_FINAL_DEPENDENCIES) $$($(2)_FINAL_PATCH_DEPENDENCIES)) +$(2)_FINAL_ALL_DEPENDENCIES = \ + $$(sort \ + $$($(2)_FINAL_DEPENDENCIES) \ + $$($(2)_FINAL_EXTRACT_DEPENDENCIES) \ + $$($(2)_FINAL_PATCH_DEPENDENCIES)) $(2)_INSTALL_STAGING ?= NO $(2)_INSTALL_IMAGES ?= NO @@ -602,7 +621,7 @@ $(2)_TARGET_DIRCLEAN = $$($(2)_DIR)/.stamp_dircleaned # default extract command $(2)_EXTRACT_CMDS ?= \ - $$(if $$($(2)_SOURCE),$$(INFLATE$$(suffix $$($(2)_SOURCE))) $$(DL_DIR)/$$($(2)_SOURCE) | \ + $$(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)' ) \ @@ -633,7 +652,12 @@ $(2)_PRE_LEGAL_INFO_HOOKS ?= $(2)_POST_LEGAL_INFO_HOOKS ?= $(2)_TARGET_FINALIZE_HOOKS ?= $(2)_ROOTFS_PRE_CMD_HOOKS ?= -$(2)_ROOTFS_POST_CMD_HOOKS ?= + +ifeq ($$($(2)_TYPE),target) +ifneq ($$(HOST_$(2)_KCONFIG_VAR),) +$$(error "Package $(1) defines host variant before target variant!") +endif +endif # human-friendly targets and target sequencing $(1): $(1)-install @@ -683,9 +707,7 @@ $(1)-configure: $$($(2)_TARGET_CONFIGURE) $$($(2)_TARGET_CONFIGURE): | $$($(2)_FINAL_DEPENDENCIES) $$($(2)_TARGET_SOURCE) $$($(2)_TARGET_RSYNC): | dirs prepare -ifeq ($$(filter $(1),$$(DEPENDENCIES_HOST_PREREQ)),) $$($(2)_TARGET_SOURCE) $$($(2)_TARGET_RSYNC): | dependencies -endif ifeq ($$($(2)_OVERRIDE_SRCDIR),) # In the normal case (no package override), the sequence of steps is @@ -703,6 +725,7 @@ $$($(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_DEPENDENCIES) @@ -753,9 +776,17 @@ $(1)-show-version: $(1)-show-depends: @echo $$($(2)_FINAL_ALL_DEPENDENCIES) +$(1)-show-recursive-depends: + @cd "$$(CONFIG_DIR)" && \ + $$(TOPDIR)/support/scripts/graph-depends -p $(1) -f -q + $(1)-show-rdepends: @echo $$($(2)_RDEPENDENCIES) +$(1)-show-recursive-rdepends: + @cd "$$(CONFIG_DIR)" && \ + $$(TOPDIR)/support/scripts/graph-depends -p $(1) --reverse -f -q + $(1)-show-build-order: $$(patsubst %,%-show-build-order,$$($(2)_FINAL_ALL_DEPENDENCIES)) $$(info $(1)) @@ -864,9 +895,9 @@ ifneq ($$(call qstrip,$$($(2)_SOURCE)),) # is that the license still applies to the files distributed as part # of the rootfs, even if the sources are not themselves redistributed. ifeq ($$(call qstrip,$$($(2)_LICENSE_FILES)),) - $(Q)$$(call legal-warning-pkg,$$($(2)_RAW_BASE_NAME),cannot save license ($(2)_LICENSE_FILES not defined)) + $(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,$$($(2)_RAWNAME),$$($(2)_RAW_BASE_NAME),$$($(2)_PKGDIR),$$(F),$$($(2)_DIR)/$$(F),$$(call UPPERCASE,$(4)))$$(sep)) + $(Q)$$(foreach F,$$($(2)_LICENSE_FILES),$$(call legal-license-file,$$($(2)_RAWNAME),$$($(2)_BASENAME_RAW),$$($(2)_PKGDIR),$$(F),$$($(2)_DIR)/$$(F),$$(call UPPERCASE,$(4)))$$(sep)) endif # license files ifeq ($$($(2)_SITE_METHOD),local) @@ -884,7 +915,7 @@ ifeq ($$($(2)_REDISTRIBUTE),YES) # patches, as they are handled specially afterwards. $$(foreach e,$$($(2)_ACTUAL_SOURCE_TARBALL) $$(notdir $$($(2)_EXTRA_DOWNLOADS)),\ $$(Q)support/scripts/hardlink-or-copy \ - $$(DL_DIR)/$$(e) \ + $$($(2)_DL_DIR)/$$(e) \ $$($(2)_REDIST_SOURCES_DIR)$$(sep)) # Save patches and generate the series file $$(Q)while read f; do \ @@ -944,7 +975,6 @@ PACKAGES_USERS += $$($(2)_USERS)$$(sep) endif TARGET_FINALIZE_HOOKS += $$($(2)_TARGET_FINALIZE_HOOKS) ROOTFS_PRE_CMD_HOOKS += $$($(2)_ROOTFS_PRE_CMD_HOOKS) -ROOTFS_POST_CMD_HOOKS += $$($(2)_ROOTFS_POST_CMD_HOOKS) ifeq ($$($(2)_SITE_METHOD),svn) DL_TOOLS_DEPENDENCIES += svn diff --git a/buildroot/package/pkg-golang.mk b/buildroot/package/pkg-golang.mk new file mode 100644 index 00000000000..bf178622b50 --- /dev/null +++ b/buildroot/package/pkg-golang.mk @@ -0,0 +1,132 @@ +################################################################################ +# 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 + +# We pass an empty GOBIN, otherwise "go install: cannot install +# cross-compiled binaries when GOBIN is set" +GO_TARGET_ENV = \ + $(HOST_GO_TARGET_ENV) \ + PATH=$(BR_PATH) \ + GOBIN= \ + CGO_ENABLED=$(HOST_GO_CGO_ENABLED) + +################################################################################ +# 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) +# +# NOTE Only type target is supported at the moment +################################################################################ + +define inner-golang-package + +$(2)_WORKSPACE ?= _gopath + +ifeq ($(BR2_STATIC_LIBS),y) +$(2)_LDFLAGS += -extldflags '-static' +endif + +$(2)_BUILD_OPTS += -ldflags "$$($(2)_LDFLAGS)" +$(2)_BUILD_OPTS += -tags "$$($(2)_TAGS)" + +# Target packages need the Go compiler on the host. +$(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 ?= $(1) +endif + +$(2)_INSTALL_BINS ?= $(1) + +# Source files in Go should be extracted in a precise folder in the hierarchy +# of GOPATH. It usually resolves around domain/vendor/software. By default, we +# derive domain/vendor/software from the upstream URL of the project, but we +# allow $(2)_SRC_SUBDIR to be overridden if needed. +$(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)_SRC_SUBDIR ?= $$($(2)_SRC_DOMAIN)/$$($(2)_SRC_VENDOR)/$$($(2)_SRC_SOFTWARE) +$(2)_SRC_PATH = $$(@D)/$$($(2)_WORKSPACE)/src/$$($(2)_SRC_SUBDIR) + +# Configure step. Only define it if not already defined by the package .mk +# file. +ifndef $(2)_CONFIGURE_CMDS +define $(2)_CONFIGURE_CMDS + mkdir -p $$(dir $$($(2)_SRC_PATH)) + ln -sf $$(@D) $$($(2)_SRC_PATH) +endef +endif + +# Build step. Only define it if not already defined by the package .mk +# file. +ifndef $(2)_BUILD_CMDS +define $(2)_BUILD_CMDS + $$(foreach d,$$($(2)_BUILD_TARGETS),\ + cd $$($(2)_SRC_PATH); \ + $$(GO_TARGET_ENV) \ + GOPATH="$$(@D)/$$($(2)_WORKSPACE)" \ + $$($(2)_GO_ENV) \ + $$(GO_BIN) build -v $$($(2)_BUILD_OPTS) \ + -o $$(@D)/bin/$$(or $$($(2)_BIN_NAME),$$(notdir $$(d))) \ + ./$$(d) + ) +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 + $$(foreach d,$$($(2)_INSTALL_BINS),\ + $(INSTALL) -D -m 0755 $$(@D)/bin/$$(d) $(TARGET_DIR)/usr/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) diff --git a/buildroot/package/pkg-kconfig.mk b/buildroot/package/pkg-kconfig.mk index 0402f81ffe3..81bba5220c6 100644 --- a/buildroot/package/pkg-kconfig.mk +++ b/buildroot/package/pkg-kconfig.mk @@ -11,6 +11,22 @@ # ################################################################################ +# Macro to update back the custom (def)config file +# $(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) + @$(if $($(PKG)_KCONFIG_DEFCONFIG), \ + echo "Unable to perform $(@) when using a defconfig rule"; 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_DOTCONFIG) $($(PKG)_KCONFIG_FILE) +endef + ################################################################################ # inner-kconfig-package -- generates the make targets needed to support a # kconfig package @@ -204,25 +220,17 @@ $(1)-savedefconfig: $(1)-check-configuration-done # 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. +$(1)-update-config: PKG=$(2) $(1)-update-config: $(1)-check-configuration-done - @$$(if $$($(2)_KCONFIG_FRAGMENT_FILES), \ - echo "Unable to perform $(1)-update-config when fragment files are set"; exit 1) - @$$(if $$($(2)_KCONFIG_DEFCONFIG), \ - echo "Unable to perform $(1)-update-config when using a defconfig rule"; exit 1) - cp -f $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) $$($(2)_KCONFIG_FILE) - touch --reference $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) $$($(2)_KCONFIG_FILE) + $$(call kconfig-package-update-config,$$($(2)_KCONFIG_DOTCONFIG)) # 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. +$(1)-update-defconfig: PKG=$(2) $(1)-update-defconfig: $(1)-savedefconfig - @$$(if $$($(2)_KCONFIG_FRAGMENT_FILES), \ - echo "Unable to perform $(1)-update-defconfig when fragment files are set"; exit 1) - @$$(if $$($(2)_KCONFIG_DEFCONFIG), \ - echo "Unable to perform $(1)-update-defconfig when using a defconfig rule"; exit 1) - cp -f $$($(2)_DIR)/defconfig $$($(2)_KCONFIG_FILE) - touch --reference $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG) $$($(2)_KCONFIG_FILE) + $$(call kconfig-package-update-config,defconfig) endif # package enabled diff --git a/buildroot/package/pkg-luarocks.mk b/buildroot/package/pkg-luarocks.mk index d7628671118..e2b48cfb4cc 100644 --- a/buildroot/package/pkg-luarocks.mk +++ b/buildroot/package/pkg-luarocks.mk @@ -52,7 +52,7 @@ ifndef $(2)_EXTRACT_CMDS define $(2)_EXTRACT_CMDS mkdir -p $$($(2)_DIR)/luarocks-extract cd $$($(2)_DIR)/luarocks-extract && \ - $$(LUAROCKS_RUN_ENV) $$(LUAROCKS_RUN_CMD) unpack --force $$(DL_DIR)/$$($(2)_SOURCE) + $$(LUAROCKS_RUN_ENV) $$(LUAROCKS_RUN_CMD) unpack --force $$($(2)_DL_DIR)/$$($(2)_SOURCE) mv $$($(2)_DIR)/luarocks-extract/*/* $$($(2)_DIR) endef endif diff --git a/buildroot/package/pkg-virtual.mk b/buildroot/package/pkg-virtual.mk index 0de79d49be5..05bd63eb18c 100644 --- a/buildroot/package/pkg-virtual.mk +++ b/buildroot/package/pkg-virtual.mk @@ -41,6 +41,11 @@ $$(error No implementation selected for virtual package $(1). Configuration erro 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 diff --git a/buildroot/package/pkgconf/pkg-config.in b/buildroot/package/pkgconf/pkg-config.in index b9ce0935cc4..99c0add8fb6 100644 --- a/buildroot/package/pkgconf/pkg-config.in +++ b/buildroot/package/pkgconf/pkg-config.in @@ -2,4 +2,4 @@ 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@ -PKG_CONFIG_LIBDIR=${PKG_CONFIG_LIBDIR:-${DEFAULT_PKG_CONFIG_LIBDIR}} PKG_CONFIG_SYSROOT_DIR=${PKG_CONFIG_SYSROOT_DIR:-${DEFAULT_PKG_CONFIG_SYSROOT_DIR}} ${PKGCONFDIR}/pkgconf @STATIC@ $@ +PKG_CONFIG_LIBDIR=${PKG_CONFIG_LIBDIR:-${DEFAULT_PKG_CONFIG_LIBDIR}} PKG_CONFIG_SYSROOT_DIR=${PKG_CONFIG_SYSROOT_DIR:-${DEFAULT_PKG_CONFIG_SYSROOT_DIR}} exec ${PKGCONFDIR}/pkgconf @STATIC@ "$@" diff --git a/buildroot/package/pngquant/pngquant.mk b/buildroot/package/pngquant/pngquant.mk index 1ce8359d402..f181d6fb47e 100644 --- a/buildroot/package/pngquant/pngquant.mk +++ b/buildroot/package/pngquant/pngquant.mk @@ -51,5 +51,5 @@ define HOST_PNGQUANT_INSTALL_CMDS $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install endef -$(eval $(host-generic-package)) $(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/poco/Config.in b/buildroot/package/poco/Config.in index 9199b54f0c2..75e31b7e1e7 100644 --- a/buildroot/package/poco/Config.in +++ b/buildroot/package/poco/Config.in @@ -5,7 +5,7 @@ config BR2_PACKAGE_POCO # pthread_condattr_setclock depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL depends on !BR2_STATIC_LIBS # dlopen() - depends on !(BR2_arc || BR2_bfin || BR2_microblaze || BR2_mipsel \ + depends on !(BR2_arc || BR2_microblaze || BR2_mipsel \ || BR2_or1k || BR2_xtensa) select BR2_PACKAGE_ZLIB select BR2_PACKAGE_PCRE @@ -18,6 +18,9 @@ if BR2_PACKAGE_POCO comment "poco components" +config BR2_PACKAGE_POCO_JSON + bool "json" + config BR2_PACKAGE_POCO_XML bool "xml" select BR2_PACKAGE_EXPAT @@ -46,6 +49,20 @@ config BR2_PACKAGE_POCO_ZIP select BR2_PACKAGE_POCO_NET select BR2_PACKAGE_POCO_UTIL +config BR2_PACKAGE_POCO_CPP_PARSER + bool "cpp_parser" + +config BR2_PACKAGE_POCO_PDF + bool "pdf" + +config BR2_PACKAGE_POCO_REDIS + bool "redis" + select BR2_PACKAGE_POCO_NET + +config BR2_PACKAGE_POCO_MONGODB + bool "mongodb" + select BR2_PACKAGE_POCO_NET + config BR2_PACKAGE_POCO_DATA bool @@ -65,5 +82,5 @@ endif # BR2_PACKAGE_POCO comment "poco needs a toolchain w/ wchar, NPTL, C++, dynamic library" depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP \ || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS - depends on !(BR2_arc || BR2_bfin || BR2_microblaze || BR2_mipsel \ + depends on !(BR2_arc || BR2_microblaze || BR2_mipsel \ || BR2_or1k || BR2_xtensa) diff --git a/buildroot/package/poco/poco.mk b/buildroot/package/poco/poco.mk index 3dddb435e90..018344d5c72 100644 --- a/buildroot/package/poco/poco.mk +++ b/buildroot/package/poco/poco.mk @@ -18,12 +18,17 @@ POCO_DEPENDENCIES = zlib pcre \ $(if $(BR2_PACKAGE_POCO_DATA_MYSQL),mysql) POCO_OMIT = Data/ODBC PageCompiler \ + $(if $(BR2_PACKAGE_POCO_JSON),,JSON) \ $(if $(BR2_PACKAGE_POCO_XML),,XML) \ $(if $(BR2_PACKAGE_POCO_UTIL),,Util) \ $(if $(BR2_PACKAGE_POCO_NET),,Net) \ $(if $(BR2_PACKAGE_POCO_NETSSL_OPENSSL),,NetSSL_OpenSSL) \ $(if $(BR2_PACKAGE_POCO_CRYPTO),,Crypto) \ $(if $(BR2_PACKAGE_POCO_ZIP),,Zip) \ + $(if $(BR2_PACKAGE_POCO_CPP_PARSER),,CppParser) \ + $(if $(BR2_PACKAGE_POCO_PDF),,PDF) \ + $(if $(BR2_PACKAGE_POCO_REDIS),,Redis) \ + $(if $(BR2_PACKAGE_POCO_MONGODB),,MongoDB) \ $(if $(BR2_PACKAGE_POCO_DATA),,Data) \ $(if $(BR2_PACKAGE_POCO_DATA_MYSQL),,Data/MySQL) \ $(if $(BR2_PACKAGE_POCO_DATA_SQLITE),,Data/SQLite) diff --git a/buildroot/package/postgresql/Config.in b/buildroot/package/postgresql/Config.in index e9b8f48d4ae..9dda54bf9fa 100644 --- a/buildroot/package/postgresql/Config.in +++ b/buildroot/package/postgresql/Config.in @@ -19,4 +19,5 @@ config BR2_PACKAGE_POSTGRESQL http://www.postgresql.org comment "postgresql needs a toolchain w/ dynamic library" + depends on BR2_USE_MMU depends on BR2_STATIC_LIBS diff --git a/buildroot/package/postgresql/pg_config b/buildroot/package/postgresql/pg_config index 85c0e63ddb2..642252f27f4 100644 --- a/buildroot/package/postgresql/pg_config +++ b/buildroot/package/postgresql/pg_config @@ -14,6 +14,9 @@ case "$1" in --libdir) echo "$prefix/lib" ;; + --version) + echo "PostgreSQL @POSTGRESQL_VERSION@" + ;; *) - echo "Usage: $0 {--includedir|--libdir}" + echo "Usage: $0 {--includedir|--libdir|--version}" esac diff --git a/buildroot/package/postgresql/postgresql.mk b/buildroot/package/postgresql/postgresql.mk index c6b689a146c..94b3e60e593 100644 --- a/buildroot/package/postgresql/postgresql.mk +++ b/buildroot/package/postgresql/postgresql.mk @@ -84,6 +84,7 @@ 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_VERSION@|$(POSTGRESQL_VERSION)|g" $(STAGING_DIR)/usr/bin/pg_config endef POSTGRESQL_POST_INSTALL_STAGING_HOOKS += POSTGRESQL_INSTALL_CUSTOM_PG_CONFIG diff --git a/buildroot/package/powerpc-utils/Config.in b/buildroot/package/powerpc-utils/Config.in index b0ca84789e8..d04d81c08ac 100644 --- a/buildroot/package/powerpc-utils/Config.in +++ b/buildroot/package/powerpc-utils/Config.in @@ -10,7 +10,7 @@ config BR2_PACKAGE_POWERPC_UTILS help System utilities for PowerPC machines. - https://github.com/nfont/powerpc-utils + https://github.com/ibm-power-utilities/powerpc-utils.git if BR2_PACKAGE_POWERPC_UTILS diff --git a/buildroot/package/powertop/Config.in b/buildroot/package/powertop/Config.in index 714b16295aa..0f323a7bfb9 100644 --- a/buildroot/package/powertop/Config.in +++ b/buildroot/package/powertop/Config.in @@ -1,6 +1,5 @@ config BR2_PACKAGE_POWERTOP bool "powertop" - depends on !BR2_bfin # pciutils depends on BR2_INSTALL_LIBSTDCPP depends on BR2_TOOLCHAIN_HAS_THREADS # libnl depends on BR2_USE_WCHAR @@ -14,6 +13,5 @@ config BR2_PACKAGE_POWERTOP https://01.org/powertop/ comment "powertop needs a toolchain w/ C++, threads, wchar" - depends on !BR2_bfin depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \ !BR2_USE_WCHAR diff --git a/buildroot/package/procps-ng/0001-proc-sig-fix-build-for-sparc.patch b/buildroot/package/procps-ng/0001-proc-sig-fix-build-for-sparc.patch new file mode 100644 index 00000000000..74f822aea35 --- /dev/null +++ b/buildroot/package/procps-ng/0001-proc-sig-fix-build-for-sparc.patch @@ -0,0 +1,43 @@ +From 070feb7c5ebd0f2ca721ca5d75bdd3fd8cffe961 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Fri, 27 Apr 2018 07:34:57 +0300 +Subject: [PATCH] proc/sig: fix build for sparc + +The code undefines SIGLOST which breaks references to SIGPWR. + +Taken from a patch suggested in upstream bug report #93. + +Signed-off-by: Baruch Siach +--- +Upstream status: https://gitlab.com/procps-ng/procps/issues/93 +--- + proc/sig.c | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/proc/sig.c b/proc/sig.c +index b883185fc28a..6ca9512cc70c 100644 +--- a/proc/sig.c ++++ b/proc/sig.c +@@ -52,10 +52,6 @@ + # undef SIGSTKFLT + #endif + +-#if !defined(__GNU__) && defined(SIGLOST) +-# undef SIGLOST +-#endif +- + #ifndef SIGRTMIN + # warning Standards require that define SIGRTMIN; assuming 32 + # define SIGRTMIN 32 +@@ -87,7 +83,7 @@ static const mapstruct sigtable[] = { + {"ILL", SIGILL}, + {"INT", SIGINT}, + {"KILL", SIGKILL}, +-#ifdef SIGLOST ++#if defined(__GNU__) + {"LOST", SIGLOST}, /* Hurd-specific */ + #endif + {"PIPE", SIGPIPE}, +-- +2.17.0 + diff --git a/buildroot/package/procps-ng/0001-remove-index.patch b/buildroot/package/procps-ng/0001-remove-index.patch deleted file mode 100644 index 1d85b31cb5c..00000000000 --- a/buildroot/package/procps-ng/0001-remove-index.patch +++ /dev/null @@ -1,16 +0,0 @@ -sysctl: remove use of legacy index() - -[yann.morin.1998@free.fr: adapt to procps-ng] -Signed-off-by: "Yann E. MORIN" -diff -durN procps-v3.3.9.orig/sysctl.c procps-v3.3.9/sysctl.c ---- procps-v3.3.9.orig/sysctl.c 2013-12-03 12:16:18.000000000 +0100 -+++ procps-v3.3.9/sysctl.c 2014-05-31 00:45:00.869748741 +0200 -@@ -794,7 +794,7 @@ - program_invocation_short_name); - - for ( ; *argv; argv++) { -- if (WriteMode || index(*argv, '=')) -+ if (WriteMode || strchr(*argv, '=')) - ReturnCode += WriteSetting(*argv); - else - ReturnCode += ReadSetting(*argv); diff --git a/buildroot/package/procps-ng/0002-use-pkgconfig-for-ncursesw-cflags.patch b/buildroot/package/procps-ng/0002-use-pkgconfig-for-ncursesw-cflags.patch deleted file mode 100644 index 1329ac4bbde..00000000000 --- a/buildroot/package/procps-ng/0002-use-pkgconfig-for-ncursesw-cflags.patch +++ /dev/null @@ -1,57 +0,0 @@ -Don't assume ncursesw headers are in ../usr/include/ncursesw/.. -On a pure build/system without legacy ncurses that may not be true. -Since we're using pkg-config let it provide the correct include path. - -Status: contacted one of the maintainers on sf.net -(ticket submission closed to the public, no other way of contacting them). - -Signed-off-by: Gustavo Zacarias -[Bernd: Rebased for version 3.3.11] - -diff -Nura procps-ng-3.3.10.orig/configure.ac procps-ng-3.3.10/configure.ac ---- procps-ng-3.3.10.orig/configure.ac 2015-04-07 19:21:55.729819952 -0300 -+++ procps-ng-3.3.10/configure.ac 2015-04-07 19:32:09.511706653 -0300 -@@ -138,7 +138,8 @@ - ]) - AM_CONDITIONAL(WITH_NCURSES, true) - if test "$enable_watch8bit" = yes; then -- PKG_CHECK_MODULES([NCURSESW], [ncursesw], [WATCH_NCURSES_LIBS="$NCURSESW_LIBS"], [ -+ PKG_CHECK_MODULES([NCURSESW], [ncursesw], [WATCH_NCURSES_LIBS="$NCURSESW_LIBS"] -+ [WATCH_NCURSES_CFLAGS="$NCURSESW_CFLAGS"], [ - AC_CHECK_LIB([ncursesw], [addwstr], [WATCH_NCURSES_LIBS=-lncursesw], - [AC_MSG_ERROR([Cannot find ncurses wide library ncursesw with --enable-watch8bit])]) - ]) -@@ -148,6 +149,7 @@ - fi - AC_SUBST([NCURSES_LIBS]) - AC_SUBST([WATCH_NCURSES_LIBS]) -+AC_SUBST([WATCH_NCURSES_CFLAGS]) - - AC_ARG_WITH([systemd], - [AS_HELP_STRING([--with-systemd], [enable systemd support])], -diff -Nura procps-ng-3.3.10.orig/Makefile.am procps-ng-3.3.10/Makefile.am ---- procps-ng-3.3.10.orig/Makefile.am 2015-04-07 19:21:55.655817434 -0300 -+++ procps-ng-3.3.10/Makefile.am 2015-04-07 19:32:54.516238136 -0300 -@@ -97,6 +97,7 @@ - slabtop_LDADD = $(LDADD) @NCURSES_LIBS@ - watch_SOURCES = watch.c lib/strutils.c lib/fileutils.c - watch_LDADD = @WATCH_NCURSES_LIBS@ $(CYGWINFLAGS) -+watch_CFLAGS = @WATCH_NCURSES_CFLAGS@ - top_top_SOURCES = \ - top/top.h \ - top/top.c \ -diff -Nura procps-ng-3.3.10.orig/watch.c procps-ng-3.3.10/watch.c ---- procps-ng-3.3.10.orig/watch.c 2015-04-07 19:21:55.707819203 -0300 -+++ procps-ng-3.3.10/watch.c 2015-04-07 19:22:27.323895083 -0300 -@@ -51,10 +51,8 @@ - #ifdef WITH_WATCH8BIT - # include - # include --# include --#else --# include - #endif /* WITH_WATCH8BIT */ -+#include - - #ifdef FORCE_8BIT - # undef isprint diff --git a/buildroot/package/procps-ng/0003-ps-output.c-include-dlfcn.h-only-when-necessary.patch b/buildroot/package/procps-ng/0003-ps-output.c-include-dlfcn.h-only-when-necessary.patch deleted file mode 100644 index dca28fab149..00000000000 --- a/buildroot/package/procps-ng/0003-ps-output.c-include-dlfcn.h-only-when-necessary.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 4fc9a348026a945aec8eddffc7613de9cb10b10c Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Sun, 7 Aug 2016 11:08:26 +0200 -Subject: [PATCH] ps/output.c: include only when necessary - -dlopen() functionality is only used when SELinux support is enabled, so - only needs to be included when ENABLE_LIBSELINUX is -defined. This fixes the build in configurations where is not -available. - -Signed-off-by: Thomas Petazzoni ---- - ps/output.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/ps/output.c b/ps/output.c -index 42c04cf..f540832 100644 ---- a/ps/output.c -+++ b/ps/output.c -@@ -46,7 +46,9 @@ - */ - - #include -+#if ENABLE_LIBSELINUX - #include -+#endif - #include - #include - #include --- -2.7.4 - diff --git a/buildroot/package/procps-ng/procps-ng.hash b/buildroot/package/procps-ng/procps-ng.hash index 62d61727b1f..9488af2d9fb 100644 --- a/buildroot/package/procps-ng/procps-ng.hash +++ b/buildroot/package/procps-ng/procps-ng.hash @@ -1,3 +1,8 @@ # From http://sourceforge.net/projects/procps-ng/files/Production/ -md5 957e42e8b193490b2111252e4a2b443c procps-ng-3.3.12.tar.xz -sha1 82c0745f150f1385ca01fe7d24f05f74e31c94c6 procps-ng-3.3.12.tar.xz +md5 fce371ccc1c15a67af9d85e4057e559d procps-ng-3.3.14.tar.xz +sha1 fcc4631b1185f7250daecee2fcebe15efbbe0d65 procps-ng-3.3.14.tar.xz +# Locally calculated after checking signature +# http://downloads.sourceforge.net/project/procps-ng/Production/procps-ng-3.3.14.tar.xz.asc +sha256 5eda0253999b7d786e690edfa73301b3113c7a67058478866e98e9ff6736726c procps-ng-3.3.14.tar.xz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 681e386e44a19d7d0674b4320272c90e66b6610b741e7e6305f8219c42e85366 COPYING.LIB diff --git a/buildroot/package/procps-ng/procps-ng.mk b/buildroot/package/procps-ng/procps-ng.mk index 22ebc1a8fd5..0d5ce9ddf08 100644 --- a/buildroot/package/procps-ng/procps-ng.mk +++ b/buildroot/package/procps-ng/procps-ng.mk @@ -4,7 +4,7 @@ # ################################################################################ -PROCPS_NG_VERSION = 3.3.12 +PROCPS_NG_VERSION = 3.3.14 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) @@ -12,9 +12,6 @@ PROCPS_NG_LICENSE_FILES = COPYING COPYING.LIB PROCPS_NG_INSTALL_STAGING = YES PROCPS_NG_DEPENDENCIES = ncurses host-pkgconf $(TARGET_NLS_DEPENDENCIES) PROCPS_NG_CONF_OPTS = LIBS=$(TARGET_NLS_LIBS) -# For 0002-use-pkgconfig-for-ncursesw-cflags.patch -PROCPS_NG_AUTORECONF = YES -PROCPS_NG_GETTEXTIZE = YES # If both procps-ng and busybox are selected, make certain procps-ng # wins the fight over who gets to have their utils actually installed. @@ -43,6 +40,10 @@ 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) diff --git a/buildroot/package/proftpd/S50proftpd b/buildroot/package/proftpd/S50proftpd index 336680a4566..3f9070f26a0 100755 --- a/buildroot/package/proftpd/S50proftpd +++ b/buildroot/package/proftpd/S50proftpd @@ -1,15 +1,13 @@ #!/bin/sh -DAEMON=/usr/sbin/proftpd trap "" HUP trap "" TERM -test -f $DAEMON || exit 0 [ ! -d /var/run/proftpd ] && mkdir /var/run/proftpd [ ! -f /var/log/wtmp ] && touch /var/log/wtmp start() { printf "Starting ProFTPD: " - $DAEMON + /usr/sbin/proftpd if [ $? != 0 ]; then echo "FAILED" exit 1 diff --git a/buildroot/package/prosody/0001-enable-syslog.patch b/buildroot/package/prosody/0001-enable-syslog.patch new file mode 100644 index 00000000000..4bd0a15aed7 --- /dev/null +++ b/buildroot/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 +@@ -163,7 +163,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/buildroot/package/prosody/0002-add-pidfile.patch b/buildroot/package/prosody/0002-add-pidfile.patch new file mode 100644 index 00000000000..b6af8dd822c --- /dev/null +++ b/buildroot/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 +@@ -181,6 +181,9 @@ log = { + -- Location of directory to find certificates in (relative to main config file): + certificates = "certs" + ++-- 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/buildroot/package/prosody/Config.in b/buildroot/package/prosody/Config.in index 77eeb85ab10..133b0b1343b 100644 --- a/buildroot/package/prosody/Config.in +++ b/buildroot/package/prosody/Config.in @@ -1,6 +1,8 @@ config BR2_PACKAGE_PROSODY bool "prosody" - depends on BR2_PACKAGE_LUA_5_1 || BR2_PACKAGE_LUAJIT + depends on BR2_USE_MMU # fork + depends on BR2_PACKAGE_HAS_LUAINTERPRETER + depends on !BR2_STATIC_LIBS # luaexpat, luasec, luasocket, luafilesystem select BR2_PACKAGE_LUAEXPAT # runtime select BR2_PACKAGE_LUASEC # runtime select BR2_PACKAGE_LUASOCKET # runtime @@ -14,5 +16,6 @@ config BR2_PACKAGE_PROSODY https://prosody.im -comment "prosody needs the lua interpreter" - depends on !BR2_PACKAGE_LUA_5_1 && !BR2_PACKAGE_LUAJIT +comment "prosody needs the lua interpreter, dynamic library" + depends on !BR2_PACKAGE_HAS_LUAINTERPRETER || BR2_STATIC_LIBS + depends on BR2_USE_MMU diff --git a/buildroot/package/prosody/S50prosody b/buildroot/package/prosody/S50prosody index 84913a5f83b..6fd33671fad 100644 --- a/buildroot/package/prosody/S50prosody +++ b/buildroot/package/prosody/S50prosody @@ -1,7 +1,6 @@ #! /bin/sh NAME=prosody -DAEMON=/usr/bin/$NAME # This must match the pidfile field in # /etc/prosody/prosody.cfg.lua @@ -9,15 +8,12 @@ DAEMON=/usr/bin/$NAME PIDDIR=/var/run/$NAME PIDFILE=$PIDDIR/$NAME.pid -# Gracefully exit if the package has been removed. -test -x $DAEMON || exit 0 - case "$1" in start) printf "Starting $NAME: " mkdir -p $PIDDIR chown $NAME:$NAME $PIDDIR - start-stop-daemon -S -q -o -x $DAEMON -c $NAME + start-stop-daemon -S -q -o -x /usr/bin/prosody -c $NAME [ $? = 0 ] && echo "OK" || echo "FAIL" ;; stop) diff --git a/buildroot/package/prosody/prosody.cfg.lua b/buildroot/package/prosody/prosody.cfg.lua deleted file mode 100644 index 8329c0ad4ee..00000000000 --- a/buildroot/package/prosody/prosody.cfg.lua +++ /dev/null @@ -1,184 +0,0 @@ --- Prosody Example Configuration File --- --- Information on configuring Prosody can be found on our --- website at http://prosody.im/doc/configure --- --- Tip: You can check that the syntax of this file is correct --- when you have finished by running: luac -p prosody.cfg.lua --- If there are any errors, it will let you know what and where --- they are, otherwise it will keep quiet. --- --- The only thing left to do is rename this file to remove the .dist ending, and fill in the --- blanks. Good luck, and happy Jabbering! - - ----------- Server-wide settings ---------- --- Settings in this section apply to the whole server and are the default settings --- for any virtual hosts - --- This is a (by default, empty) list of accounts that are admins --- for the server. Note that you must create the accounts separately --- (see http://prosody.im/doc/creating_accounts for info) --- Example: admins = { "user1@example.com", "user2@example.net" } -admins = { } - --- Enable use of libevent for better performance under high load --- For more information see: http://prosody.im/doc/libevent ---use_libevent = true; - --- This is the list of modules Prosody will load on startup. --- It looks for mod_modulename.lua in the plugins folder, so make sure that exists too. --- Documentation on modules can be found at: http://prosody.im/doc/modules -modules_enabled = { - - -- Generally required - "roster"; -- Allow users to have a roster. Recommended ;) - "saslauth"; -- Authentication for clients and servers. Recommended if you want to log in. - "tls"; -- Add support for secure TLS on c2s/s2s connections - "dialback"; -- s2s dialback support - "disco"; -- Service discovery - - -- Not essential, but recommended - "private"; -- Private XML storage (for room bookmarks, etc.) - "vcard"; -- Allow users to set vCards - - -- These are commented by default as they have a performance impact - --"privacy"; -- Support privacy lists - --"compression"; -- Stream compression - - -- Nice to have - "version"; -- Replies to server version requests - "uptime"; -- Report how long server has been running - "time"; -- Let others know the time here on this server - "ping"; -- Replies to XMPP pings with pongs - "pep"; -- Enables users to publish their mood, activity, playing music and more - "register"; -- Allow users to register on this server using a client and change passwords - - -- Admin interfaces - "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands - --"admin_telnet"; -- Opens telnet console interface on localhost port 5582 - - -- HTTP modules - --"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP" - --"http_files"; -- Serve static files from a directory over HTTP - - -- Other specific functionality - "posix"; -- POSIX functionality, sends server to background, enables syslog, etc. - --"groups"; -- Shared roster support - --"announce"; -- Send announcement to all online users - --"welcome"; -- Welcome users who register accounts - --"watchregistrations"; -- Alert admins of registrations - --"motd"; -- Send a message to users when they log in - --"legacyauth"; -- Legacy authentication. Only used by some old clients and bots. -}; - --- These modules are auto-loaded, but should you want --- to disable them then uncomment them here: -modules_disabled = { - -- "offline"; -- Store offline messages - -- "c2s"; -- Handle client connections - -- "s2s"; -- Handle server-to-server connections -}; - --- Disable account creation by default, for security --- For more information see http://prosody.im/doc/creating_accounts -allow_registration = false; - --- These are the SSL/TLS-related settings. If you don't want --- to use SSL/TLS, you may comment or remove this -ssl = { - key = "certs/localhost.key"; - certificate = "certs/localhost.crt"; -} - --- Force clients to use encrypted connections? This option will --- prevent clients from authenticating unless they are using encryption. - -c2s_require_encryption = false - --- Force certificate authentication for server-to-server connections? --- This provides ideal security, but requires servers you communicate --- with to support encryption AND present valid, trusted certificates. --- NOTE: Your version of LuaSec must support certificate verification! --- For more information see http://prosody.im/doc/s2s#security - -s2s_secure_auth = false - --- Many servers don't support encryption or have invalid or self-signed --- certificates. You can list domains here that will not be required to --- authenticate using certificates. They will be authenticated using DNS. - ---s2s_insecure_domains = { "gmail.com" } - --- Even if you leave s2s_secure_auth disabled, you can still require valid --- certificates for some domains by specifying a list here. - ---s2s_secure_domains = { "jabber.org" } - --- Select the authentication backend to use. The 'internal' providers --- use Prosody's configured data storage to store the authentication data. --- To allow Prosody to offer secure authentication mechanisms to clients, the --- default provider stores passwords in plaintext. If you do not trust your --- server please see http://prosody.im/doc/modules/mod_auth_internal_hashed --- for information about using the hashed backend. - -authentication = "internal_plain" - --- Select the storage backend to use. By default Prosody uses flat files --- in its configured data directory, but it also supports more backends --- through modules. An "sql" backend is included by default, but requires --- additional dependencies. See http://prosody.im/doc/storage for more info. - ---storage = "sql" -- Default is "internal" - --- For the "sql" backend, you can uncomment *one* of the below to configure: ---sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename. ---sql = { driver = "MySQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" } ---sql = { driver = "PostgreSQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" } - --- Logging configuration --- For advanced logging see http://prosody.im/doc/logging -log = { - -- info = "prosody.log"; -- Change 'info' to 'debug' for verbose logging - -- error = "prosody.err"; - "*syslog"; -- Logging to syslog - -- "*console"; -- Log to the console, useful for debugging with daemonize=false -} - -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. - -VirtualHost "localhost" - -VirtualHost "example.com" - -- Assign this host a certificate for TLS, otherwise it would use the one - -- set in the global section (if any). - -- Note that old-style SSL on port 5223 only supports one certificate, and will always - -- use the global one. - ssl = { - key = "certs/example.com.key"; - certificate = "certs/example.com.crt"; - } - ------- Components ------ --- You can specify components to add hosts that provide special services, --- like multi-user conferences, and transports. --- For more information on components, see http://prosody.im/doc/components - ----Set up a MUC (multi-user chat) room server on conference.example.com: ---Component "conference.example.com" "muc" - --- Set up a SOCKS5 bytestream proxy for server-proxied file transfers: ---Component "proxy.example.com" "proxy65" - ----Set up an external component (default component port is 5347) --- --- External components allow adding various services, such as gateways/ --- transports to other networks like ICQ, MSN and Yahoo. For more info --- see: http://prosody.im/doc/components#adding_an_external_component --- ---Component "gateway.example.com" --- component_secret = "password" diff --git a/buildroot/package/prosody/prosody.hash b/buildroot/package/prosody/prosody.hash index 38942ea7ff2..898d21814f9 100644 --- a/buildroot/package/prosody/prosody.hash +++ b/buildroot/package/prosody/prosody.hash @@ -1,5 +1,8 @@ # Hashes from: https://prosody.im/downloads/source/{MD5,SHA1,SHA256,SHA512}SUMS -md5 d743adea6cfbaacc3a24cc0c3928bb1b prosody-0.9.12.tar.gz -sha1 1ee224263a5b3d67960e12edbbe6b2f16b95d147 prosody-0.9.12.tar.gz -sha256 1a59a322b71928a21985522aa00d0eab3552208d7bf9ecb318542a1b2fee3e8d prosody-0.9.12.tar.gz -sha512 e87b5f3b3e327722cec9d8d0470684e2ec2788a1c5ae623c4f505a00572ef21f65afe84cd5b7de47d6a65fe8872506fe34e5e8886e20979ff84710669857ca76 prosody-0.9.12.tar.gz +md5 0eebf7a18ce1fc7dd9954c94ebd85f54 prosody-0.10.0.tar.gz +sha1 57c1c5a665e6453bdde06727ef398cd69accd9d7 prosody-0.10.0.tar.gz +sha256 7414e447256c60b2645578c4a5913113cd74b419ca5a032b54db90d98a978498 prosody-0.10.0.tar.gz +sha512 ee66e240afba6a8cb286623da48d9b535798153fb65e32070cec93aafe360e91f7087eeb49dec0f7d145e24f04339ed0878e50835b52f682130b204e22990ce9 prosody-0.10.0.tar.gz + +# Hash for license file: +sha256 bbbdc1c5426e5944cf869fc0faeaf19d88a220cd2b39ea98b7b8e86b0e88a2ef COPYING diff --git a/buildroot/package/prosody/prosody.mk b/buildroot/package/prosody/prosody.mk index d19653503d2..d95578253d6 100644 --- a/buildroot/package/prosody/prosody.mk +++ b/buildroot/package/prosody/prosody.mk @@ -4,29 +4,30 @@ # ################################################################################ -PROSODY_VERSION = 0.9.12 +PROSODY_VERSION = 0.10.0 PROSODY_SITE = https://prosody.im/downloads/source PROSODY_LICENSE = MIT PROSODY_LICENSE_FILES = COPYING -PROSODY_DEPENDENCIES = openssl libidn +PROSODY_DEPENDENCIES = host-luainterpreter luainterpreter libidn openssl -ifeq ($(BR2_PACKAGE_LUA_5_1),y) -PROSODY_DEPENDENCIES += lua -endif - -ifeq ($(BR2_PACKAGE_LUAJIT),y) -PROSODY_DEPENDENCIES += luajit -endif +PROSODY_CFLAGS = $(TARGET_CFLAGS) -fPIC -std=c99 \ + $(if BR2_TOOLCHAIN_USES_MUSL,-DWITHOUT_MALLINFO) PROSODY_CONF_OPTS = \ + --with-lua-bin=$(HOST_DIR)/usr/bin \ --with-lua=$(STAGING_DIR)/usr \ + --lua-version=$(LUAINTERPRETER_ABIVER) \ --c-compiler=$(TARGET_CC) \ - --cflags="$(TARGET_CFLAGS) -fPIC" \ + --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) \ @@ -58,15 +59,4 @@ endef PROSODY_POST_INSTALL_TARGET_HOOKS += PROSODY_REMOVE_CERT_GENERATOR -# 1. Enable posix functionality -# 2. Log to syslog -# 3. Specify pid file write location -# 4. Enable virtual host example.com -define PROSODY_TWEAK_DEFAULT_CONF - $(INSTALL) -D package/prosody/prosody.cfg.lua \ - $(TARGET_DIR)/etc/prosody/prosody.cfg.lua -endef - -PROSODY_POST_INSTALL_TARGET_HOOKS += PROSODY_TWEAK_DEFAULT_CONF - $(eval $(generic-package)) diff --git a/buildroot/package/ptpd2/ptpd2.mk b/buildroot/package/ptpd2/ptpd2.mk index d95d415bba2..c0c414ae830 100644 --- a/buildroot/package/ptpd2/ptpd2.mk +++ b/buildroot/package/ptpd2/ptpd2.mk @@ -24,12 +24,6 @@ else PTPD2_CONF_OPTS += --disable-snmp endif -# GCC bug with Os/O1/O2/O3 -# internal compiler error: in gen_add2_insn, at optabs.c:4454 -ifeq ($(BR2_bfin),y) -PTPD2_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -O0" -endif - define PTPD2_INSTALL_INIT_SYSV $(INSTALL) -m 755 -D package/ptpd2/S65ptpd2 \ $(TARGET_DIR)/etc/init.d/S65ptpd2 diff --git a/buildroot/package/pulseaudio/0002-memfd-wrappers-only-define-memfd_create-if-not-alrea.patch b/buildroot/package/pulseaudio/0002-memfd-wrappers-only-define-memfd_create-if-not-alrea.patch new file mode 100644 index 00000000000..8f103bf2014 --- /dev/null +++ b/buildroot/package/pulseaudio/0002-memfd-wrappers-only-define-memfd_create-if-not-alrea.patch @@ -0,0 +1,64 @@ +From dfb0460fb4743aec047cdf755a660a9ac2d0f3fb Mon Sep 17 00:00:00 2001 +From: Tanu Kaskinen +Date: Wed, 24 Jan 2018 03:51:49 +0200 +Subject: [PATCH] memfd-wrappers: only define memfd_create() if not already + defined + +glibc 2.27 is to be released soon, and it will provide memfd_create(). +If glibc provides the function, we must not define it ourselves, +otherwise building fails due to conflict between the two implementations +of the same function. + +BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=104733 +Signed-off-by: Romain Naour +--- + configure.ac | 3 +++ + src/pulsecore/memfd-wrappers.h | 7 ++++--- + 2 files changed, 7 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 0084c86e..0eb44b08 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -610,6 +610,9 @@ AS_IF([test "x$enable_memfd" = "xyes" && test "x$HAVE_MEMFD" = "x0"], + [AC_MSG_ERROR([*** Your Linux kernel does not support memfd shared memory. + *** Use linux v3.17 or higher for such a feature.])]) + ++AS_IF([test "x$HAVE_MEMFD" = "x1"], ++ AC_CHECK_FUNCS([memfd_create])) ++ + AC_SUBST(HAVE_MEMFD) + AM_CONDITIONAL([HAVE_MEMFD], [test "x$HAVE_MEMFD" = x1]) + AS_IF([test "x$HAVE_MEMFD" = "x1"], AC_DEFINE([HAVE_MEMFD], 1, [Have memfd shared memory.])) +diff --git a/src/pulsecore/memfd-wrappers.h b/src/pulsecore/memfd-wrappers.h +index 3bed9b2b..c7aadfd3 100644 +--- a/src/pulsecore/memfd-wrappers.h ++++ b/src/pulsecore/memfd-wrappers.h +@@ -20,13 +20,14 @@ + License along with PulseAudio; if not, see . + ***/ + +-#ifdef HAVE_MEMFD ++#if defined(HAVE_MEMFD) && !defined(HAVE_MEMFD_CREATE) + + #include + #include + + /* +- * No glibc wrappers exist for memfd_create(2), so provide our own. ++ * Before glibc version 2.27 there was no wrapper for memfd_create(2), ++ * so we have to provide our own. + * + * Also define memfd fcntl sealing macros. While they are already + * defined in the kernel header file , that file as +@@ -63,6 +64,6 @@ static inline int memfd_create(const char *name, unsigned int flags) { + #define F_SEAL_WRITE 0x0008 /* prevent writes */ + #endif + +-#endif /* HAVE_MEMFD */ ++#endif /* HAVE_MEMFD && !HAVE_MEMFD_CREATE */ + + #endif +-- +2.14.3 + diff --git a/buildroot/package/pulseaudio/pulseaudio.mk b/buildroot/package/pulseaudio/pulseaudio.mk index 13fcec52a3b..f59828d43d1 100644 --- a/buildroot/package/pulseaudio/pulseaudio.mk +++ b/buildroot/package/pulseaudio/pulseaudio.mk @@ -15,6 +15,9 @@ PULSEAUDIO_CONF_OPTS = \ --disable-legacy-database-entry-format \ --disable-manpages +# 0001-memfd-wrappers-only-define-memfd_create-if-not-alrea.patch +PULSEAUDIO_AUTORECONF = YES + PULSEAUDIO_DEPENDENCIES = \ host-pkgconf libtool libsndfile speex host-intltool \ $(if $(BR2_PACKAGE_LIBGLIB2),libglib2) \ diff --git a/buildroot/package/python-backports-ssl-match-hostname/Config.in b/buildroot/package/python-backports-ssl-match-hostname/Config.in new file mode 100644 index 00000000000..8e55191a9e6 --- /dev/null +++ b/buildroot/package/python-backports-ssl-match-hostname/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME + bool "python-backports-ssl-match-hostname" + depends on BR2_PACKAGE_PYTHON + help + The ssl.match_hostname() function from Python 3.5. + + http://bitbucket.org/brandon/backports.ssl_match_hostname diff --git a/buildroot/package/python-backports-ssl-match-hostname/python-backports-ssl-match-hostname.hash b/buildroot/package/python-backports-ssl-match-hostname/python-backports-ssl-match-hostname.hash new file mode 100644 index 00000000000..b43e1af5a64 --- /dev/null +++ b/buildroot/package/python-backports-ssl-match-hostname/python-backports-ssl-match-hostname.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/backports.ssl_match_hostname/json, sha256 locally computed +md5 c03fc5e2c7b3da46b81acf5cbacfe1e6 backports.ssl_match_hostname-3.5.0.1.tar.gz +sha256 502ad98707319f4a51fa2ca1c677bd659008d27ded9f6380c79e8932e38dcdf2 backports.ssl_match_hostname-3.5.0.1.tar.gz +sha256 bfc8a75a4b9aec224aa7973c0c9d7cc0134bdcbf8eefd008936b58554d66e97e backports/ssl_match_hostname/LICENSE.txt diff --git a/buildroot/package/python-backports-ssl-match-hostname/python-backports-ssl-match-hostname.mk b/buildroot/package/python-backports-ssl-match-hostname/python-backports-ssl-match-hostname.mk new file mode 100644 index 00000000000..01c8bc448ca --- /dev/null +++ b/buildroot/package/python-backports-ssl-match-hostname/python-backports-ssl-match-hostname.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-backports-ssl-match-hostname +# +################################################################################ + +PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME_VERSION = 3.5.0.1 +PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME_SOURCE = backports.ssl_match_hostname-$(PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME_VERSION).tar.gz +PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME_SITE = https://pypi.python.org/packages/76/21/2dc61178a2038a5cb35d14b61467c6ac632791ed05131dda72c20e7b9e23 +PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME_SETUP_TYPE = distutils +PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME_LICENSE = Python-2.0 +PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME_LICENSE_FILES = backports/ssl_match_hostname/LICENSE.txt + +$(eval $(python-package)) diff --git a/buildroot/package/python-cached-property/Config.in b/buildroot/package/python-cached-property/Config.in new file mode 100644 index 00000000000..8343973342c --- /dev/null +++ b/buildroot/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/buildroot/package/python-cached-property/python-cached-property.hash b/buildroot/package/python-cached-property/python-cached-property.hash new file mode 100644 index 00000000000..255b2d9ec62 --- /dev/null +++ b/buildroot/package/python-cached-property/python-cached-property.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/cached-property/json, sha256 locally computed +md5 fc7a49d2c4b7987f92b00c7b49128530 cached-property-1.4.0.tar.gz +sha256 a2fa0f89dd422f7e5dd992a4a3e0ce209d5d1e47a4db28fd0a7b5273ec8da3f0 cached-property-1.4.0.tar.gz +sha256 ba4756c8039b25b66e3c456cc5bf635aa528cf459b97ee1499d06684ccd89b9a LICENSE diff --git a/buildroot/package/python-cached-property/python-cached-property.mk b/buildroot/package/python-cached-property/python-cached-property.mk new file mode 100644 index 00000000000..3e1363853f5 --- /dev/null +++ b/buildroot/package/python-cached-property/python-cached-property.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-cached-property +# +################################################################################ + +PYTHON_CACHED_PROPERTY_VERSION = 1.4.0 +PYTHON_CACHED_PROPERTY_SOURCE = cached-property-$(PYTHON_CACHED_PROPERTY_VERSION).tar.gz +PYTHON_CACHED_PROPERTY_SITE = https://pypi.python.org/packages/ce/87/72b7a5a0504ad8d5d5ea6804ac5b24ce4f07869f61c47ea00cd4382320ba +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/buildroot/package/python-cython/Config.in.host b/buildroot/package/python-cython/Config.in.host new file mode 100644 index 00000000000..69d32d5ab36 --- /dev/null +++ b/buildroot/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/buildroot/package/python-cython/python-cython.hash b/buildroot/package/python-cython/python-cython.hash new file mode 100644 index 00000000000..3b918dc7042 --- /dev/null +++ b/buildroot/package/python-cython/python-cython.hash @@ -0,0 +1,6 @@ +# md5 from https://pypi.python.org/pypi/Cython/json, sha256 locally computed +md5 6149238287d662bd5d5e572482252493 Cython-0.27.3.tar.gz +sha256 6a00512de1f2e3ce66ba35c5420babaef1fe2d9c43a8faab4080b0dbcc26bc64 Cython-0.27.3.tar.gz +# License files, locally calculated +sha256 a6cba85bc92e0cff7a450b1d873c0eaa2e9fc96bf472df0247a26bec77bf3ff9 LICENSE.txt +sha256 e1eb1c49a8508e8173dac30157e4a6439a44ad8846194746c424fbc3fc2b95d7 COPYING.txt diff --git a/buildroot/package/python-cython/python-cython.mk b/buildroot/package/python-cython/python-cython.mk new file mode 100644 index 00000000000..88eab834169 --- /dev/null +++ b/buildroot/package/python-cython/python-cython.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# cython +# +################################################################################ + +PYTHON_CYTHON_VERSION = 0.27.3 +PYTHON_CYTHON_SOURCE = Cython-$(PYTHON_CYTHON_VERSION).tar.gz +PYTHON_CYTHON_SITE = https://pypi.python.org/packages/ee/2a/c4d2cdd19c84c32d978d18e9355d1ba9982a383de87d0fcb5928553d37f4 +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/buildroot/package/python-daemonize/Config.in b/buildroot/package/python-daemonize/Config.in new file mode 100644 index 00000000000..d34e35c41cb --- /dev/null +++ b/buildroot/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/buildroot/package/python-daemonize/python-daemonize.hash b/buildroot/package/python-daemonize/python-daemonize.hash new file mode 100644 index 00000000000..d2111a31939 --- /dev/null +++ b/buildroot/package/python-daemonize/python-daemonize.hash @@ -0,0 +1,3 @@ +# From https://pypi.python.org/pypi/daemonize/json +md5 6759005b12dfeea0d4305f8536b4b0c2 daemonize-2.4.7.tar.gz +sha256 c0194e861826be456c7c69985825ac7b79632d8ac7ad4cde8e12fee7971468c8 daemonize-2.4.7.tar.gz diff --git a/buildroot/package/python-daemonize/python-daemonize.mk b/buildroot/package/python-daemonize/python-daemonize.mk new file mode 100644 index 00000000000..bfcfe93378d --- /dev/null +++ b/buildroot/package/python-daemonize/python-daemonize.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-daemonize +# +################################################################################ + +PYTHON_DAEMONIZE_VERSION = 2.4.7 +PYTHON_DAEMONIZE_SOURCE = daemonize-$(PYTHON_DAEMONIZE_VERSION).tar.gz +PYTHON_DAEMONIZE_SITE = https://pypi.python.org/packages/84/15/923e3fe48239adf5d697c29e04a3f868d3e4ce8539aab29d6abe784db5be +PYTHON_DAEMONIZE_SETUP_TYPE = setuptools +PYTHON_DAEMONIZE_LICENSE = MIT +PYTHON_DAEMONIZE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-decorator/python-decorator.mk b/buildroot/package/python-decorator/python-decorator.mk index c0c43f60965..3802f3dc160 100644 --- a/buildroot/package/python-decorator/python-decorator.mk +++ b/buildroot/package/python-decorator/python-decorator.mk @@ -11,3 +11,4 @@ PYTHON_DECORATOR_LICENSE = BSD-2-Clause PYTHON_DECORATOR_SETUP_TYPE = setuptools $(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-docker-pycreds/Config.in b/buildroot/package/python-docker-pycreds/Config.in new file mode 100644 index 00000000000..584c1dbc0ef --- /dev/null +++ b/buildroot/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/buildroot/package/python-docker-pycreds/python-docker-pycreds.hash b/buildroot/package/python-docker-pycreds/python-docker-pycreds.hash new file mode 100644 index 00000000000..9e1182d4a45 --- /dev/null +++ b/buildroot/package/python-docker-pycreds/python-docker-pycreds.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/docker-pycreds/json, sha256 locally computed +md5 ae63c7def3e58cb51a4d8f5810683030 docker-pycreds-0.2.2.tar.gz +sha256 c7ab85de2894baff6ee8f15160cbbfa2fd3a04e56f0372c5793d24060687b299 docker-pycreds-0.2.2.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/buildroot/package/python-docker-pycreds/python-docker-pycreds.mk b/buildroot/package/python-docker-pycreds/python-docker-pycreds.mk new file mode 100644 index 00000000000..e7ffd0eb511 --- /dev/null +++ b/buildroot/package/python-docker-pycreds/python-docker-pycreds.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-docker-pycreds +# +################################################################################ + +PYTHON_DOCKER_PYCREDS_VERSION = 0.2.2 +PYTHON_DOCKER_PYCREDS_SOURCE = docker-pycreds-$(PYTHON_DOCKER_PYCREDS_VERSION).tar.gz +PYTHON_DOCKER_PYCREDS_SITE = https://pypi.python.org/packages/db/73/42d4c698e70633d99f7f7c4c87c6de45ead5ad7b36dcfccd998fd1556ac9 +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/buildroot/package/python-docker/0001-setup.py-make-pip-optional.patch b/buildroot/package/python-docker/0001-setup.py-make-pip-optional.patch new file mode 100644 index 00000000000..d9c958311d3 --- /dev/null +++ b/buildroot/package/python-docker/0001-setup.py-make-pip-optional.patch @@ -0,0 +1,50 @@ +From 978643b7222db66837d39037f884be01fb9af234 Mon Sep 17 00:00:00 2001 +From: Peter Korsgaard +Date: Fri, 9 Mar 2018 18:40:16 +0100 +Subject: [PATCH] setup.py: make pip optional + +pip may not be available on the build host, and it is only used to check if +docker-py is already installed, so skip the check if pip isn't available. + +[Upstream-status: submitted (https://github.com/docker/docker-py/pull/1948)] +Signed-off-by: Peter Korsgaard +--- + setup.py | 20 ++++++++++++-------- + 1 file changed, 12 insertions(+), 8 deletions(-) + +diff --git a/setup.py b/setup.py +index 271d94f..c9b91a3 100644 +--- a/setup.py ++++ b/setup.py +@@ -5,16 +5,20 @@ import codecs + import os + import sys + +-import pip +- + from setuptools import setup, find_packages + +-if 'docker-py' in [x.project_name for x in pip.get_installed_distributions()]: +- print( +- 'ERROR: "docker-py" needs to be uninstalled before installing this' +- ' package:\npip uninstall docker-py', file=sys.stderr +- ) +- sys.exit(1) ++try: ++ import pip ++ ++ if 'docker-py' in \ ++ [x.project_name for x in pip.get_installed_distributions()]: ++ print( ++ 'ERROR: "docker-py" needs to be uninstalled before installing this' ++ ' package:\npip uninstall docker-py', file=sys.stderr ++ ) ++ sys.exit(1) ++except ImportError: ++ pass + + ROOT_DIR = os.path.dirname(__file__) + SOURCE_DIR = os.path.join(ROOT_DIR) +-- +2.11.0 + diff --git a/buildroot/package/python-docker/Config.in b/buildroot/package/python-docker/Config.in new file mode 100644 index 00000000000..35f7666f19f --- /dev/null +++ b/buildroot/package/python-docker/Config.in @@ -0,0 +1,15 @@ +config BR2_PACKAGE_PYTHON_DOCKER + bool "python-docker" + # docker-engine may be running on another host, so no dependency + select BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 # runtime + select BR2_PACKAGE_PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME \ + if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON_REQUESTS # runtime + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_WEBSOCKET_CLIENT # runtime + select BR2_PACKAGE_PYTHON_DOCKER_PYCREDS # runtime + help + A Python library for the Docker Engine API. + + https://github.com/docker/docker-py diff --git a/buildroot/package/python-docker/python-docker.hash b/buildroot/package/python-docker/python-docker.hash new file mode 100644 index 00000000000..e811d3a8ac2 --- /dev/null +++ b/buildroot/package/python-docker/python-docker.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/docker/json, sha256 locally computed +md5 981b23b41fd2346efcae977244b7188e docker-3.1.4.tar.gz +sha256 753251b142d56f243fba53ba321a37740a6b6583c528437f45df4d28ba3d4d5d docker-3.1.4.tar.gz +sha256 f2f0b07fa5e492c11d27aa0d2f3f1a0e64b9d17f32d8aa489ae2af9609af33b2 LICENSE diff --git a/buildroot/package/python-docker/python-docker.mk b/buildroot/package/python-docker/python-docker.mk new file mode 100644 index 00000000000..6a818ebaedc --- /dev/null +++ b/buildroot/package/python-docker/python-docker.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-docker +# +################################################################################ + +PYTHON_DOCKER_VERSION = 3.1.4 +PYTHON_DOCKER_SOURCE = docker-$(PYTHON_DOCKER_VERSION).tar.gz +PYTHON_DOCKER_SITE = https://pypi.python.org/packages/7f/22/fd6e97c99a512f74d46dab2b450fe370eb2f83404ef790298e3fd012cd5c +PYTHON_DOCKER_SETUP_TYPE = setuptools +PYTHON_DOCKER_LICENSE = Apache-2.0 +PYTHON_DOCKER_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-dockerpty/Config.in b/buildroot/package/python-dockerpty/Config.in new file mode 100644 index 00000000000..f0bd85a68f0 --- /dev/null +++ b/buildroot/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/buildroot/package/python-dockerpty/python-dockerpty.hash b/buildroot/package/python-dockerpty/python-dockerpty.hash new file mode 100644 index 00000000000..f5ed252bcf1 --- /dev/null +++ b/buildroot/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/buildroot/package/python-dockerpty/python-dockerpty.mk b/buildroot/package/python-dockerpty/python-dockerpty.mk new file mode 100644 index 00000000000..e6fe6e3b497 --- /dev/null +++ b/buildroot/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/buildroot/package/python-flask-sqlalchemy/Config.in b/buildroot/package/python-flask-sqlalchemy/Config.in new file mode 100644 index 00000000000..fa4a0351106 --- /dev/null +++ b/buildroot/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/buildroot/package/python-flask-sqlalchemy/python-flask-sqlalchemy.hash b/buildroot/package/python-flask-sqlalchemy/python-flask-sqlalchemy.hash new file mode 100644 index 00000000000..9e15b5d8f05 --- /dev/null +++ b/buildroot/package/python-flask-sqlalchemy/python-flask-sqlalchemy.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/Flask-SQLAlchemy/json, sha256 locally computed +md5 373ce61dfd03b593ad2eaba68c9fee35 Flask-SQLAlchemy-2.3.2.tar.gz +sha256 5971b9852b5888655f11db634e87725a9031e170f37c0ce7851cf83497f56e53 Flask-SQLAlchemy-2.3.2.tar.gz +sha256 de2011f25501c45f2b78bfa4f851ce021cfbab0f1e7ab763233688e0b969821f PKG-INFO diff --git a/buildroot/package/python-flask-sqlalchemy/python-flask-sqlalchemy.mk b/buildroot/package/python-flask-sqlalchemy/python-flask-sqlalchemy.mk new file mode 100644 index 00000000000..37fe603f1e7 --- /dev/null +++ b/buildroot/package/python-flask-sqlalchemy/python-flask-sqlalchemy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-flask-sqlalchemy +# +################################################################################ + +PYTHON_FLASK_SQLALCHEMY_VERSION = 2.3.2 +PYTHON_FLASK_SQLALCHEMY_SOURCE = Flask-SQLAlchemy-$(PYTHON_FLASK_SQLALCHEMY_VERSION).tar.gz +PYTHON_FLASK_SQLALCHEMY_SITE = https://pypi.python.org/packages/3a/66/f5ace276517c075f102457dd2f7d8645b033758f9c6effb4e0970a90fec1 +PYTHON_FLASK_SQLALCHEMY_SETUP_TYPE = setuptools +PYTHON_FLASK_SQLALCHEMY_LICENSE = BSD-3c +PYTHON_FLASK_SQLALCHEMY_LICENSE_FILES = PKG-INFO + +$(eval $(python-package)) diff --git a/buildroot/package/python-functools32/Config.in b/buildroot/package/python-functools32/Config.in new file mode 100644 index 00000000000..606341d8288 --- /dev/null +++ b/buildroot/package/python-functools32/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_FUNCTOOLS32 + bool "python-functools32" + depends on BR2_PACKAGE_PYTHON + help + Backport of the functools module from Python 3.2.3 for use on + 2.7 and PyPy. + + https://github.com/MiCHiLU/python-functools32 diff --git a/buildroot/package/python-functools32/python-functools32.hash b/buildroot/package/python-functools32/python-functools32.hash new file mode 100644 index 00000000000..606de817743 --- /dev/null +++ b/buildroot/package/python-functools32/python-functools32.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/functools32/json, sha256 locally computed +md5 09f24ffd9af9f6cd0f63cb9f4e23d4b2 functools32-3.2.3-2.tar.gz +sha256 f6253dfbe0538ad2e387bd8fdfd9293c925d63553f5813c4e587745416501e6d functools32-3.2.3-2.tar.gz +sha256 3f9ea6b89abe1556b72aff67b987d64c8272564815cd6a2832e6c4f6abdfe3b1 LICENSE diff --git a/buildroot/package/python-functools32/python-functools32.mk b/buildroot/package/python-functools32/python-functools32.mk new file mode 100644 index 00000000000..8a88bb2a7f3 --- /dev/null +++ b/buildroot/package/python-functools32/python-functools32.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-functools32 +# +################################################################################ + +PYTHON_FUNCTOOLS32_VERSION = 3.2.3-2 +PYTHON_FUNCTOOLS32_SOURCE = functools32-$(PYTHON_FUNCTOOLS32_VERSION).tar.gz +PYTHON_FUNCTOOLS32_SITE = https://pypi.python.org/packages/c5/60/6ac26ad05857c601308d8fb9e87fa36d0ebf889423f47c3502ef034365db +PYTHON_FUNCTOOLS32_SETUP_TYPE = distutils +PYTHON_FUNCTOOLS32_LICENSE = Python-2.0 +PYTHON_FUNCTOOLS32_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-influxdb/Config.in b/buildroot/package/python-influxdb/Config.in new file mode 100644 index 00000000000..a848e4f2ae4 --- /dev/null +++ b/buildroot/package/python-influxdb/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_PYTHON_INFLUXDB + bool "python-influxdb" + select BR2_PACKAGE_PYTHON_DATEUTIL # 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/buildroot/package/python-influxdb/python-influxdb.hash b/buildroot/package/python-influxdb/python-influxdb.hash new file mode 100644 index 00000000000..28f2825c958 --- /dev/null +++ b/buildroot/package/python-influxdb/python-influxdb.hash @@ -0,0 +1,5 @@ +# md5, sha256 from https://pypi.org/pypi/influxdb/json +md5 dec1e6fe9770c36290d38fb2a37fba25 influxdb-5.0.0.tar.gz +sha256 6adba2ddfd5781a06b5204339e679d66645bf6cc2b7f493eb9d7c8986d714e80 influxdb-5.0.0.tar.gz +# Locally computed sha256 checksums +sha256 70146f78d168b33ac5903490a918469e22a801a8d3a81103f3d8706dc0024c9a LICENSE diff --git a/buildroot/package/python-influxdb/python-influxdb.mk b/buildroot/package/python-influxdb/python-influxdb.mk new file mode 100644 index 00000000000..1571cbd47ab --- /dev/null +++ b/buildroot/package/python-influxdb/python-influxdb.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-influxdb +# +################################################################################ + +PYTHON_INFLUXDB_VERSION = 5.0.0 +PYTHON_INFLUXDB_SOURCE = influxdb-$(PYTHON_INFLUXDB_VERSION).tar.gz +PYTHON_INFLUXDB_SITE = https://files.pythonhosted.org/packages/95/26/33e7b85b72a0df2dc00af4c1b9f5df3e7d0aea29ae4f8f65a83f7024c4e2 +PYTHON_INFLUXDB_SETUP_TYPE = setuptools +PYTHON_INFLUXDB_LICENSE = MIT +PYTHON_INFLUXDB_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-jsonmodels/Config.in b/buildroot/package/python-jsonmodels/Config.in new file mode 100644 index 00000000000..f66982874a1 --- /dev/null +++ b/buildroot/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/buildroot/package/python-jsonmodels/python-jsonmodels.hash b/buildroot/package/python-jsonmodels/python-jsonmodels.hash new file mode 100644 index 00000000000..f5b1ac5ef1e --- /dev/null +++ b/buildroot/package/python-jsonmodels/python-jsonmodels.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/jsonmodels/json, sha256 locally computed +md5 e42b6c0078e731035ec3f1bf8a6cdc92 jsonmodels-2.3.tar.gz +sha256 09e9639c85531e0f37991bb23a363494e37a2e89fb480dbc03d9556258f4ea47 jsonmodels-2.3.tar.gz +sha256 3b1219763eec6924ddd4c4d61dee6a53c5fc9ab62707a9ad763ee363d3050cc5 LICENSE diff --git a/buildroot/package/python-jsonmodels/python-jsonmodels.mk b/buildroot/package/python-jsonmodels/python-jsonmodels.mk new file mode 100644 index 00000000000..4d4da879699 --- /dev/null +++ b/buildroot/package/python-jsonmodels/python-jsonmodels.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-jsonmodels +# +################################################################################ + +PYTHON_JSONMODELS_VERSION = 2.3 +PYTHON_JSONMODELS_SOURCE = jsonmodels-$(PYTHON_JSONMODELS_VERSION).tar.gz +PYTHON_JSONMODELS_SITE = https://pypi.python.org/packages/ab/0f/e214845b49881d3b2bebd1f387eedc5b26ac5580353a0a38074e94439957 +PYTHON_JSONMODELS_SETUP_TYPE = setuptools +PYTHON_JSONMODELS_LICENSE = BSD-3-Clause +PYTHON_JSONMODELS_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-jsonschema/Config.in b/buildroot/package/python-jsonschema/Config.in index 70026537227..b547f4ae1af 100644 --- a/buildroot/package/python-jsonschema/Config.in +++ b/buildroot/package/python-jsonschema/Config.in @@ -1,5 +1,6 @@ config BR2_PACKAGE_PYTHON_JSONSCHEMA bool "python-jsonschema" + select BR2_PACKAGE_PYTHON_FUNCTOOLS32 if BR2_PACKAGE_PYTHON # runtime help An implementation of JSON Schema validation for Python. diff --git a/buildroot/package/python-libusb1/Config.in b/buildroot/package/python-libusb1/Config.in new file mode 100644 index 00000000000..1c4a72edaea --- /dev/null +++ b/buildroot/package/python-libusb1/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_PYTHON_LIBUSB1 + bool "python-libusb1" + depends on BR2_TOOLCHAIN_HAS_THREADS # 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" + depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/python-libusb1/python-libusb1.hash b/buildroot/package/python-libusb1/python-libusb1.hash new file mode 100644 index 00000000000..3649872eca0 --- /dev/null +++ b/buildroot/package/python-libusb1/python-libusb1.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/libusb1/json, sha256 locally computed +md5 9c2eb6032deda59f287a443091d38cb4 libusb1-1.6.4.tar.gz +sha256 8c930d9c1d037d9c83924c82608aa6a1adcaa01ca0e4a23ee0e8e18d7eee670d libusb1-1.6.4.tar.gz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LESSER diff --git a/buildroot/package/python-libusb1/python-libusb1.mk b/buildroot/package/python-libusb1/python-libusb1.mk new file mode 100644 index 00000000000..3329764fef6 --- /dev/null +++ b/buildroot/package/python-libusb1/python-libusb1.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-libusb1 +# +################################################################################ + +PYTHON_LIBUSB1_VERSION = 1.6.4 +PYTHON_LIBUSB1_SOURCE = libusb1-$(PYTHON_LIBUSB1_VERSION).tar.gz +PYTHON_LIBUSB1_SITE = https://pypi.python.org/packages/ec/5d/4fdac6c53525786fe35cff035c3345452e24e2bee5627893be65d12555cb +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/buildroot/package/python-networkx/Config.in b/buildroot/package/python-networkx/Config.in new file mode 100644 index 00000000000..0f3e86f497d --- /dev/null +++ b/buildroot/package/python-networkx/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_NETWORKX + bool "python-networkx" + select BR2_PACKAGE_PYTHON_DECORATOR # runtime + 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/buildroot/package/python-networkx/python-networkx.hash b/buildroot/package/python-networkx/python-networkx.hash new file mode 100644 index 00000000000..92383e75c4f --- /dev/null +++ b/buildroot/package/python-networkx/python-networkx.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/networks/json, sha256 locally computed +md5 6ef584a879e9163013e9a762e1cf7cd1 networkx-1.11.tar.gz +sha256 0d0e70e10dfb47601cbb3425a00e03e2a2e97477be6f80638fef91d54dd1e4b8 networkx-1.11.tar.gz +sha256 f4c13bf0e83bef45116ebda6c360066df6fd99610efaea9790b998c5441b0c0d LICENSE.txt diff --git a/buildroot/package/python-networkx/python-networkx.mk b/buildroot/package/python-networkx/python-networkx.mk new file mode 100644 index 00000000000..4dfdbd5a1c0 --- /dev/null +++ b/buildroot/package/python-networkx/python-networkx.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-networkx +# +################################################################################ + +# The current version of setools (v4.1.1) does not work with python-networkx past v1.11 +PYTHON_NETWORKX_VERSION = 1.11 +PYTHON_NETWORKX_SOURCE = networkx-$(PYTHON_NETWORKX_VERSION).tar.gz +PYTHON_NETWORKX_SITE = https://pypi.python.org/packages/c2/93/dbb41b03cf7c878a7409c8e92226531f840a423c9309ea534873a83c9192 +PYTHON_NETWORKX_LICENSE = BSD-3-Clause +PYTHON_NETWORKX_LICENSE_FILES = LICENSE.txt +PYTHON_NETWORKX_SETUP_TYPE = setuptools +HOST_PYTHON_NETWORKX_DEPENDENCIES = host-python-decorator + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-psycopg2/Config.in b/buildroot/package/python-psycopg2/Config.in new file mode 100644 index 00000000000..ec852bb49e6 --- /dev/null +++ b/buildroot/package/python-psycopg2/Config.in @@ -0,0 +1,22 @@ +config BR2_PACKAGE_PYTHON_PSYCOPG2 + bool "python-psycopg2" + 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/ diff --git a/buildroot/package/python-psycopg2/python-psycopg2.hash b/buildroot/package/python-psycopg2/python-psycopg2.hash new file mode 100644 index 00000000000..ea4a07697be --- /dev/null +++ b/buildroot/package/python-psycopg2/python-psycopg2.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/psycopg2/json, sha256 locally computed +md5 70fc57072e084565a42689d416cf2c5c psycopg2-2.7.4.tar.gz +sha256 8bf51191d60f6987482ef0cfe8511bbf4877a5aa7f313d7b488b53189cf26209 psycopg2-2.7.4.tar.gz +sha256 1752db3c786e12b62ca804178dca033adce8bff4c4b3d98d3449d407fe45210d LICENSE diff --git a/buildroot/package/python-psycopg2/python-psycopg2.mk b/buildroot/package/python-psycopg2/python-psycopg2.mk new file mode 100644 index 00000000000..e9327f46071 --- /dev/null +++ b/buildroot/package/python-psycopg2/python-psycopg2.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# python-psycopg2 +# +################################################################################ + +PYTHON_PSYCOPG2_VERSION = 2.7.4 +PYTHON_PSYCOPG2_SOURCE = psycopg2-$(PYTHON_PSYCOPG2_VERSION).tar.gz +PYTHON_PSYCOPG2_SITE = https://pypi.python.org/packages/74/83/51580322ed0e82cba7ad8e0af590b8fb2cf11bd5aaa1ed872661bd36f462 +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 +PYTHON_PSYCOPG2_BUILD_OPTS = build_ext --pg-config=$(STAGING_DIR)/usr/bin/pg_config +PYTHON_PSYCOPG2_INSTALL_TARGET_OPTS = build_ext --pg-config=$(STAGING_DIR)/usr/bin/pg_config + +$(eval $(python-package)) diff --git a/buildroot/package/python-pymodbus/Config.in b/buildroot/package/python-pymodbus/Config.in new file mode 100644 index 00000000000..49043c10b3a --- /dev/null +++ b/buildroot/package/python-pymodbus/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PYTHON_PYMODBUS + bool "python-pymodbus" + select BR2_PACKAGE_PYTHON_SIX # runtime + help + Pymodbus is a full Modbus protocol implementation. + + https://github.com/riptideio/pymodbus diff --git a/buildroot/package/python-pymodbus/python-pymodbus.hash b/buildroot/package/python-pymodbus/python-pymodbus.hash new file mode 100644 index 00000000000..c930795eb15 --- /dev/null +++ b/buildroot/package/python-pymodbus/python-pymodbus.hash @@ -0,0 +1,3 @@ +# sha256 locally computed +sha256 e33bd0dfbd2cbd4dbc686ca87f809aebb7d72e940eb5846d5d38bb0f3371b26a python-pymodbus-v1.4.0.tar.gz +sha256 796a47993313691ea404d8af7e4c0f9daf1d2760e3900938985b59c9008eee2f doc/LICENSE diff --git a/buildroot/package/python-pymodbus/python-pymodbus.mk b/buildroot/package/python-pymodbus/python-pymodbus.mk new file mode 100644 index 00000000000..40470fe92ee --- /dev/null +++ b/buildroot/package/python-pymodbus/python-pymodbus.mk @@ -0,0 +1,13 @@ +################################################################################ +# +# python-pymodbus +# +################################################################################ + +PYTHON_PYMODBUS_VERSION = v1.4.0 +PYTHON_PYMODBUS_SITE = $(call github,riptideio,pymodbus,$(PYTHON_PYMODBUS_VERSION)) +PYTHON_PYMODBUS_SETUP_TYPE = setuptools +PYTHON_PYMODBUS_LICENSE = BSD-3-Clause +PYTHON_PYMODBUS_LICENSE_FILES = doc/LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-pytz/python-pytz.mk b/buildroot/package/python-pytz/python-pytz.mk index 6e130a6b2f7..1d3603389b0 100644 --- a/buildroot/package/python-pytz/python-pytz.mk +++ b/buildroot/package/python-pytz/python-pytz.mk @@ -12,7 +12,7 @@ PYTHON_PYTZ_LICENSE = MIT PYTHON_PYTZ_LICENSE_FILES = LICENSE.txt define PYTHON_PYTZ_EXTRACT_CMDS - unzip $(DL_DIR)/$(PYTHON_PYTZ_SOURCE) -d $(@D) + unzip $(PYTHON_PYTZ_DL_DIR)/$(PYTHON_PYTZ_SOURCE) -d $(@D) mv $(@D)/pytz-$(PYTHON_PYTZ_VERSION)/* $(@D) rmdir $(@D)/pytz-$(PYTHON_PYTZ_VERSION) endef diff --git a/buildroot/package/python-pyzmq/Config.in b/buildroot/package/python-pyzmq/Config.in index 8f33a635c86..25019125194 100644 --- a/buildroot/package/python-pyzmq/Config.in +++ b/buildroot/package/python-pyzmq/Config.in @@ -1,13 +1,13 @@ config BR2_PACKAGE_PYTHON_PYZMQ bool "python-pyzmq" depends on BR2_INSTALL_LIBSTDCPP # zeromq - depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # 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" +comment "python-pyzmq needs a toolchain w/ C++, NPTL" depends on BR2_PACKAGE_PYTHON - depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS_NPTL) diff --git a/buildroot/package/python-raven/python-raven.hash b/buildroot/package/python-raven/python-raven.hash index 66452a7fc1e..ce21886e762 100644 --- a/buildroot/package/python-raven/python-raven.hash +++ b/buildroot/package/python-raven/python-raven.hash @@ -1,5 +1,5 @@ -# md5 from https://pypi.python.org/pypi/raven/json, sha256 locally computed -md5 4471e9e881da64f057ee7740345a6b27 raven-6.5.0.tar.gz -sha256 84da75114739191bdf2388f296ffd6177e83567a7fbaf2701e034ad6026e4f3b raven-6.5.0.tar.gz +# md5, sha256 from https://pypi.python.org/pypi/raven/json +md5 35398b2447d337315e0069c2580d3468 raven-6.7.0.tar.gz +sha256 f908e9b39f02580e7f822030d119ed3b2e8d32300a2fec6373e5827d588bbae7 raven-6.7.0.tar.gz # License file, locally calculated sha256 5ce9459bc19ced99cc9eb135d4f559ed01e336354bdf16dd998be85aa688c233 LICENSE diff --git a/buildroot/package/python-raven/python-raven.mk b/buildroot/package/python-raven/python-raven.mk index 4a4cdee3538..4aa49f5b379 100644 --- a/buildroot/package/python-raven/python-raven.mk +++ b/buildroot/package/python-raven/python-raven.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_RAVEN_VERSION = 6.5.0 +PYTHON_RAVEN_VERSION = 6.7.0 PYTHON_RAVEN_SOURCE = raven-$(PYTHON_RAVEN_VERSION).tar.gz -PYTHON_RAVEN_SITE = https://pypi.python.org/packages/e0/26/1bdd4431f59ff92fee7f2378b7d54eb175eb69f68c40c6c9b15161f6774f +PYTHON_RAVEN_SITE = https://files.pythonhosted.org/packages/d7/54/7d199f893a0ac01f8df9b7ec39c0f3ac19146e78b33401b1f4984c9d3583 PYTHON_RAVEN_SETUP_TYPE = setuptools PYTHON_RAVEN_LICENSE = BSD-3-Clause PYTHON_RAVEN_LICENSE_FILES = LICENSE diff --git a/buildroot/package/python-remi/python-remi.hash b/buildroot/package/python-remi/python-remi.hash index e3df6cbb030..870e882b732 100644 --- a/buildroot/package/python-remi/python-remi.hash +++ b/buildroot/package/python-remi/python-remi.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 69ab3f7438de76708bfc40396f791b76452f84bb8bca6dafbdaca510c17e9526 python-remi-v1.0.tar.gz +sha256 bb82f3f329aef387b3823e7e9b9d06b85a7deb0a4dc9078a4323812e26abb459 python-remi-v1.1.tar.gz sha256 bc198f9846c1da3a1c1b1fa2b12909b021365d1e7fe9b4039245edfcec3b7f7f LICENSE diff --git a/buildroot/package/python-remi/python-remi.mk b/buildroot/package/python-remi/python-remi.mk index 3356430ddb7..b6c50a3733b 100644 --- a/buildroot/package/python-remi/python-remi.mk +++ b/buildroot/package/python-remi/python-remi.mk @@ -4,7 +4,7 @@ # ################################################################################ -PYTHON_REMI_VERSION = v1.0 +PYTHON_REMI_VERSION = v1.1 PYTHON_REMI_SITE = $(call github,dddomodossola,remi,$(PYTHON_REMI_VERSION)) PYTHON_REMI_LICENSE = Apache-2.0 PYTHON_REMI_LICENSE_FILES = LICENSE diff --git a/buildroot/package/python-requests/Config.in b/buildroot/package/python-requests/Config.in index d2726fb26a1..30158b8d254 100644 --- a/buildroot/package/python-requests/Config.in +++ b/buildroot/package/python-requests/Config.in @@ -4,6 +4,7 @@ config BR2_PACKAGE_PYTHON_REQUESTS select BR2_PACKAGE_PYTHON_CHARDET # runtime select BR2_PACKAGE_PYTHON_IDNA # runtime select BR2_PACKAGE_PYTHON_URLLIB3 # runtime + select BR2_PACKAGE_PYTHON_HASHLIB if BR2_PACKAGE_PYTHON # runtime select BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON # runtime select BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 # runtime select BR2_PACKAGE_PYTHON_ZLIB if BR2_PACKAGE_PYTHON # runtime diff --git a/buildroot/package/python-schedule/python-schedule.hash b/buildroot/package/python-schedule/python-schedule.hash index 2b2f0489e85..92475f973c8 100644 --- a/buildroot/package/python-schedule/python-schedule.hash +++ b/buildroot/package/python-schedule/python-schedule.hash @@ -1,5 +1,5 @@ # md5 from https://pypi.python.org/pypi/schedule/json, sha256 locally computed -md5 ab135a73458547d2b836beddd168528b schedule-0.4.3.tar.gz -sha256 31a160546a17838842199c792ba267575cf41339ca730aaf060567b798f4f46e schedule-0.4.3.tar.gz +md5 53fb2e550b2539264eeceb5d85e82759 schedule-0.5.0.tar.gz +sha256 1003a07c2dce12828c25a03a611a7371cedfa956e5f1b4abc32bcc94eb5a335b schedule-0.5.0.tar.gz # License file, locally calculated sha256 30a8352c318ce1b645acde0299697342d4380ed2637d7ca18a8ad25661e3b41b LICENSE.txt diff --git a/buildroot/package/python-schedule/python-schedule.mk b/buildroot/package/python-schedule/python-schedule.mk index 26a3f5bce16..16612a08813 100644 --- a/buildroot/package/python-schedule/python-schedule.mk +++ b/buildroot/package/python-schedule/python-schedule.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_SCHEDULE_VERSION = 0.4.3 +PYTHON_SCHEDULE_VERSION = 0.5.0 PYTHON_SCHEDULE_SOURCE = schedule-$(PYTHON_SCHEDULE_VERSION).tar.gz -PYTHON_SCHEDULE_SITE = https://pypi.python.org/packages/ee/68/ba6b0bb69b2be13b32983971bca6c5adf22df6321945232e1419bc34a82f +PYTHON_SCHEDULE_SITE = https://pypi.python.org/packages/fd/31/599a3387c2e98c270d5ac21a1575f3eb60a3712c192a0ca97a494a207739 PYTHON_SCHEDULE_SETUP_TYPE = setuptools PYTHON_SCHEDULE_LICENSE = MIT PYTHON_SCHEDULE_LICENSE_FILES = LICENSE.txt diff --git a/buildroot/package/python-simplegeneric/python-simplegeneric.mk b/buildroot/package/python-simplegeneric/python-simplegeneric.mk index cc84320428f..d3bfa69a7ee 100644 --- a/buildroot/package/python-simplegeneric/python-simplegeneric.mk +++ b/buildroot/package/python-simplegeneric/python-simplegeneric.mk @@ -16,7 +16,7 @@ PYTHON_SIMPLEGENERIC_LICENSE = ZPL-2.1 PYTHON_SIMPLEGENERIC_SETUP_TYPE = setuptools define PYTHON_SIMPLEGENERIC_EXTRACT_CMDS - unzip $(DL_DIR)/$(PYTHON_SIMPLEGENERIC_SOURCE) -d $(@D) + unzip $(PYTHON_SIMPLEGENERIC_DL_DIR)/$(PYTHON_SIMPLEGENERIC_SOURCE) -d $(@D) mv $(@D)/simplegeneric-$(PYTHON_SIMPLEGENERIC_VERSION)/* $(@D) rmdir $(@D)/simplegeneric-$(PYTHON_SIMPLEGENERIC_VERSION) endef diff --git a/buildroot/package/python-sqlalchemy/Config.in b/buildroot/package/python-sqlalchemy/Config.in new file mode 100644 index 00000000000..f7ec3a6ad4b --- /dev/null +++ b/buildroot/package/python-sqlalchemy/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_SQLALCHEMY + bool "python-sqlalchemy" + 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/buildroot/package/python-sqlalchemy/python-sqlalchemy.hash b/buildroot/package/python-sqlalchemy/python-sqlalchemy.hash new file mode 100644 index 00000000000..9e13a2f20f3 --- /dev/null +++ b/buildroot/package/python-sqlalchemy/python-sqlalchemy.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/SQLAlchemy/json, sha256 locally computed +md5 968e07dc0aa92f9205bb3877f33f498f SQLAlchemy-1.2.2.tar.gz +sha256 64b4720f0a8e033db0154d3824f5bf677cf2797e11d44743cf0aebd2a0499d9d SQLAlchemy-1.2.2.tar.gz +sha256 73bda3d7d6c568f494c1d12520a97d41a38b7ce91d88c21f1b469b747b17f7fd LICENSE diff --git a/buildroot/package/python-sqlalchemy/python-sqlalchemy.mk b/buildroot/package/python-sqlalchemy/python-sqlalchemy.mk new file mode 100644 index 00000000000..c0023712a28 --- /dev/null +++ b/buildroot/package/python-sqlalchemy/python-sqlalchemy.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-sqlalchemy +# +################################################################################ + +PYTHON_SQLALCHEMY_VERSION = 1.2.2 +PYTHON_SQLALCHEMY_SOURCE = SQLAlchemy-$(PYTHON_SQLALCHEMY_VERSION).tar.gz +PYTHON_SQLALCHEMY_SITE = https://pypi.python.org/packages/b9/fb/a56d2fc0ce3571328fa872734ad124cae25a4cea422088987f865fb71787 +PYTHON_SQLALCHEMY_SETUP_TYPE = setuptools +PYTHON_SQLALCHEMY_LICENSE = MIT +PYTHON_SQLALCHEMY_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-subprocess32/Config.in b/buildroot/package/python-subprocess32/Config.in new file mode 100644 index 00000000000..d7fe84f1e62 --- /dev/null +++ b/buildroot/package/python-subprocess32/Config.in @@ -0,0 +1,13 @@ +config BR2_PACKAGE_PYTHON_SUBPROCESS32 + bool "python-subprocess32" + depends on BR2_PACKAGE_PYTHON + depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 || !BR2_MIPS_NABI64 + help + A backport of the Python 3 subprocess module for use + on Python 2. + + https://github.com/google/python-subprocess32 + +comment "python-subprocess32 needs a toolchain w/ headers >= 3.10 on MIPS N64" + depends on BR2_MIPS_NABI64 + depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 diff --git a/buildroot/package/python-subprocess32/python-subprocess32.hash b/buildroot/package/python-subprocess32/python-subprocess32.hash new file mode 100644 index 00000000000..17a54b00349 --- /dev/null +++ b/buildroot/package/python-subprocess32/python-subprocess32.hash @@ -0,0 +1,4 @@ +# sha256 from https://pypi.org/pypi/subprocess32/json +sha256 1e450a4a4c53bf197ad6402c564b9f7a53539385918ef8f12bdf430a61036590 subprocess32-3.2.7.tar.gz +# Locally computed sha256 checksums +sha256 826b43437249d39422642f695154d064da64de92eb1476048a615f50bc1beb4a LICENSE diff --git a/buildroot/package/python-subprocess32/python-subprocess32.mk b/buildroot/package/python-subprocess32/python-subprocess32.mk new file mode 100644 index 00000000000..483bf5333f6 --- /dev/null +++ b/buildroot/package/python-subprocess32/python-subprocess32.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-subprocess32 +# +################################################################################ + +PYTHON_SUBPROCESS32_VERSION = 3.2.7 +PYTHON_SUBPROCESS32_SOURCE = subprocess32-$(PYTHON_SUBPROCESS32_VERSION).tar.gz +PYTHON_SUBPROCESS32_SITE = https://files.pythonhosted.org/packages/b8/2f/49e53b0d0e94611a2dc624a1ad24d41b6d94d0f1b0a078443407ea2214c2 +PYTHON_SUBPROCESS32_SETUP_TYPE = distutils +PYTHON_SUBPROCESS32_LICENSE = Python-2.0 +PYTHON_SUBPROCESS32_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-texttable/Config.in b/buildroot/package/python-texttable/Config.in new file mode 100644 index 00000000000..1c8dde8d3f1 --- /dev/null +++ b/buildroot/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/buildroot/package/python-texttable/python-texttable.hash b/buildroot/package/python-texttable/python-texttable.hash new file mode 100644 index 00000000000..448d6b7dd15 --- /dev/null +++ b/buildroot/package/python-texttable/python-texttable.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/texttable/json, sha256 locally computed +md5 a712b5a5464d51c5fc43c64d9d2cd0de texttable-0.9.1.tar.gz +sha256 119041773ff03596b56392532f9315cb3a3116e404fd6f36e76a7dc088d95c79 texttable-0.9.1.tar.gz +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE diff --git a/buildroot/package/python-texttable/python-texttable.mk b/buildroot/package/python-texttable/python-texttable.mk new file mode 100644 index 00000000000..96fe6cf882e --- /dev/null +++ b/buildroot/package/python-texttable/python-texttable.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-texttable +# +################################################################################ + +PYTHON_TEXTTABLE_VERSION = 0.9.1 +PYTHON_TEXTTABLE_SOURCE = texttable-$(PYTHON_TEXTTABLE_VERSION).tar.gz +PYTHON_TEXTTABLE_SITE = https://pypi.python.org/packages/02/e1/2565e6b842de7945af0555167d33acfc8a615584ef7abd30d1eae00a4d80 +PYTHON_TEXTTABLE_SETUP_TYPE = distutils +PYTHON_TEXTTABLE_LICENSE = LGPL-3.0+ +PYTHON_TEXTTABLE_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-visitor/Config.in b/buildroot/package/python-visitor/Config.in new file mode 100644 index 00000000000..f8be5ec9be0 --- /dev/null +++ b/buildroot/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/buildroot/package/python-visitor/python-visitor.hash b/buildroot/package/python-visitor/python-visitor.hash new file mode 100644 index 00000000000..6e0cffbd951 --- /dev/null +++ b/buildroot/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/buildroot/package/python-visitor/python-visitor.mk b/buildroot/package/python-visitor/python-visitor.mk new file mode 100644 index 00000000000..1313491c966 --- /dev/null +++ b/buildroot/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/buildroot/package/python-watchdog/0001-Add-a-workaround-to-support-uClibc-library.patch b/buildroot/package/python-watchdog/0001-Add-a-workaround-to-support-uClibc-library.patch new file mode 100644 index 00000000000..c21e6cd089e --- /dev/null +++ b/buildroot/package/python-watchdog/0001-Add-a-workaround-to-support-uClibc-library.patch @@ -0,0 +1,43 @@ +From c3b3c4581b25d7e62f5c2ce1484133229d5e657a Mon Sep 17 00:00:00 2001 +From: Yegor Yefremov +Date: Fri, 16 Feb 2018 13:26:23 +0100 +Subject: [PATCH] Add a workaround to support uClibc library + +uClibc based systems provide only libc.so.0 and libc.so.1 +symlinks. + +So try to find libc.so.0 if neither libc.so nor libc.so.6 +could be found. + +Signed-off-by: Yegor Yefremov +--- + src/watchdog/observers/inotify_c.py | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/src/watchdog/observers/inotify_c.py b/src/watchdog/observers/inotify_c.py +index 5f208b6..0dc7b50 100644 +--- a/src/watchdog/observers/inotify_c.py ++++ b/src/watchdog/observers/inotify_c.py +@@ -45,7 +45,19 @@ def _load_libc(): + try: + return ctypes.CDLL('libc.so') + except (OSError, IOError): ++ pass ++ ++ try: + return ctypes.CDLL('libc.so.6') ++ except (OSError, IOError): ++ pass ++ ++ # uClibc ++ try: ++ return ctypes.CDLL('libc.so.0') ++ except (OSError, IOError) as err: ++ raise err ++ + + libc = _load_libc() + +-- +2.1.4 + diff --git a/buildroot/package/python-watchdog/Config.in b/buildroot/package/python-watchdog/Config.in index e5290897e89..18f569ee44a 100644 --- a/buildroot/package/python-watchdog/Config.in +++ b/buildroot/package/python-watchdog/Config.in @@ -1,8 +1,9 @@ config BR2_PACKAGE_PYTHON_WATCHDOG bool "python-watchdog" - select BR2_PACKAGE_PYTHON_PYYAML - select BR2_PACKAGE_PYTHON_ARGH - select BR2_PACKAGE_PYTHON_PATHTOOLS + 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. diff --git a/buildroot/package/python-webpy/Config.in b/buildroot/package/python-webpy/Config.in index 12dbe61723a..5f4df7832b3 100644 --- a/buildroot/package/python-webpy/Config.in +++ b/buildroot/package/python-webpy/Config.in @@ -1,6 +1,7 @@ config BR2_PACKAGE_PYTHON_WEBPY bool "python-webpy" depends on BR2_PACKAGE_PYTHON + select BR2_PACKAGE_PYTHON_HASHLIB help web.py is a web framework for Python that is as simple as it is powerful. diff --git a/buildroot/package/python-webpy/python-webpy.hash b/buildroot/package/python-webpy/python-webpy.hash index 0e0a8d0fb8c..70981e0cb41 100644 --- a/buildroot/package/python-webpy/python-webpy.hash +++ b/buildroot/package/python-webpy/python-webpy.hash @@ -1,2 +1,4 @@ # Locally computed -sha256 c3cb8930739294103b1ad109e5fd1d0efae67c06d5b6d59fce5b5a2ee6b21624 python-webpy-webpy-0.37.tar.gz +sha256 f074241a0b839408a0b9840ade1198e16fbd6aa6393a48a0e84f73b545baab9a python-webpy-webpy-0.39.tar.gz +sha256 3826fd531a9b904841f5e3560fcda7e93f2ab8d11ef124ec65e10625efa26c34 LICENSE.txt +sha256 7347fd17bfd33c4093c31dc77076733e1e0150ce8c13296c56dc042bbecede84 web/wsgiserver/LICENSE.txt diff --git a/buildroot/package/python-webpy/python-webpy.mk b/buildroot/package/python-webpy/python-webpy.mk index 8bcc8ec37fa..192ba5727fb 100644 --- a/buildroot/package/python-webpy/python-webpy.mk +++ b/buildroot/package/python-webpy/python-webpy.mk @@ -4,9 +4,9 @@ # ################################################################################ -PYTHON_WEBPY_VERSION = webpy-0.37 +PYTHON_WEBPY_VERSION = webpy-0.39 PYTHON_WEBPY_SITE = $(call github,webpy,webpy,$(PYTHON_WEBPY_VERSION)) -PYTHON_WEBPY_SETUP_TYPE = distutils +PYTHON_WEBPY_SETUP_TYPE = setuptools PYTHON_WEBPY_LICENSE = Public Domain, CherryPy License PYTHON_WEBPY_LICENSE_FILES = LICENSE.txt web/wsgiserver/LICENSE.txt diff --git a/buildroot/package/python-websocket-client/Config.in b/buildroot/package/python-websocket-client/Config.in new file mode 100644 index 00000000000..0fbb15b3285 --- /dev/null +++ b/buildroot/package/python-websocket-client/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_PYTHON_WEBSOCKET_CLIENT + bool "python-websocket-client" + select BR2_PACKAGE_PYTHON_SIX # runtime + select BR2_PACKAGE_PYTHON_SSL if BR2_PACKAGE_PYTHON # runtime + select BR2_PACKAGE_PYTHON3_SSL if BR2_PACKAGE_PYTHON3 # runtime + help + WebSocket client for python. hybi13 is supported. + + https://github.com/websocket-client/websocket-client.git diff --git a/buildroot/package/python-websocket-client/python-websocket-client.hash b/buildroot/package/python-websocket-client/python-websocket-client.hash new file mode 100644 index 00000000000..3672ca074bc --- /dev/null +++ b/buildroot/package/python-websocket-client/python-websocket-client.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/websocket-client/json, sha256 locally computed +md5 790b3ecb5364293ad70c59a1b92debb1 websocket_client-0.47.0.tar.gz +sha256 a453dc4dfa6e0db3d8fd7738a308a88effe6240c59f3226eb93e8f020c216149 websocket_client-0.47.0.tar.gz +sha256 e580b2a1a57c33085dd6a07cff693d828f7c3fa8a11ce56ade2a62c46951930d LICENSE diff --git a/buildroot/package/python-websocket-client/python-websocket-client.mk b/buildroot/package/python-websocket-client/python-websocket-client.mk new file mode 100644 index 00000000000..58c8407db30 --- /dev/null +++ b/buildroot/package/python-websocket-client/python-websocket-client.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# python-websocket-client +# +################################################################################ + +PYTHON_WEBSOCKET_CLIENT_VERSION = 0.47.0 +PYTHON_WEBSOCKET_CLIENT_SOURCE = websocket_client-$(PYTHON_WEBSOCKET_CLIENT_VERSION).tar.gz +PYTHON_WEBSOCKET_CLIENT_SITE = https://pypi.python.org/packages/c9/bb/8d3dd9063cfe0cd5d03fe6a1f74ddd948f384e9c1eff0eb978f3976a7d27 +PYTHON_WEBSOCKET_CLIENT_SETUP_TYPE = setuptools +PYTHON_WEBSOCKET_CLIENT_LICENSE = LGPL-2.1+ +PYTHON_WEBSOCKET_CLIENT_LICENSE_FILES = LICENSE + +$(eval $(python-package)) diff --git a/buildroot/package/python-websockets/0001-Fix-behavior-of-recv-in-the-CLOSING-state.patch b/buildroot/package/python-websockets/0001-Fix-behavior-of-recv-in-the-CLOSING-state.patch new file mode 100644 index 00000000000..cb97b36bdef --- /dev/null +++ b/buildroot/package/python-websockets/0001-Fix-behavior-of-recv-in-the-CLOSING-state.patch @@ -0,0 +1,261 @@ +From 402059e4a46a764632eba8a669f5b012f173ee7b Mon Sep 17 00:00:00 2001 +From: Aymeric Augustin +Date: Tue, 1 May 2018 17:05:05 +0200 +Subject: [PATCH] Fix behavior of recv() in the CLOSING state. + +The behavior wasn't tested correctly: in some test cases, the connection +had already moved to the CLOSED state, where the close code and reason +are already known. + +Refactor half_close_connection_{local,remote} to allow multiple runs of +the event loop while remaining in the CLOSING state. Refactor affected +tests accordingly. + +I verified that all tests in the CLOSING state were behaving is intended +by inserting debug statements in recv/send/ping/pong and running: + +$ PYTHONASYNCIODEBUG=1 python -m unittest -v websockets.test_protocol.{Client,Server}Tests.test_{recv,send,ping,pong}_on_closing_connection_{local,remote} + +Fix #317, #327, #350, #357. + +Signed-off-by: Joseph Kogut +--- + websockets/protocol.py | 10 ++--- + websockets/test_protocol.py | 78 +++++++++++++++++++++++++++++-------- + 2 files changed, 66 insertions(+), 22 deletions(-) + +diff --git a/websockets/protocol.py b/websockets/protocol.py +index f8121a1..7583fe9 100644 +--- a/websockets/protocol.py ++++ b/websockets/protocol.py +@@ -303,7 +303,7 @@ class WebSocketCommonProtocol(asyncio.StreamReaderProtocol): + # Don't yield from self.ensure_open() here because messages could be + # received before the closing frame even if the connection is closing. + +- # Wait for a message until the connection is closed ++ # Wait for a message until the connection is closed. + next_message = asyncio_ensure_future( + self.messages.get(), loop=self.loop) + try: +@@ -315,15 +315,15 @@ class WebSocketCommonProtocol(asyncio.StreamReaderProtocol): + next_message.cancel() + raise + +- # Now there's no need to yield from self.ensure_open(). Either a +- # message was received or the connection was closed. +- + if next_message in done: + return next_message.result() + else: + next_message.cancel() + if not self.legacy_recv: +- raise ConnectionClosed(self.close_code, self.close_reason) ++ assert self.state in [State.CLOSING, State.CLOSED] ++ # Wait until the connection is closed to raise ++ # ConnectionClosed with the correct code and reason. ++ yield from self.ensure_open() + + @asyncio.coroutine + def send(self, data): +diff --git a/websockets/test_protocol.py b/websockets/test_protocol.py +index 70348fb..bfd4e3b 100644 +--- a/websockets/test_protocol.py ++++ b/websockets/test_protocol.py +@@ -105,7 +105,7 @@ class CommonTests: + self.loop.call_soon(self.loop.stop) + self.loop.run_forever() + +- def make_drain_slow(self, delay=3 * MS): ++ def make_drain_slow(self, delay=MS): + # Process connection_made in order to initialize self.protocol.writer. + self.run_loop_once() + +@@ -174,6 +174,8 @@ class CommonTests: + # Empty the outgoing data stream so we can make assertions later on. + self.assertOneFrameSent(True, OP_CLOSE, close_frame_data) + ++ assert self.protocol.state is State.CLOSED ++ + def half_close_connection_local(self, code=1000, reason='close'): + """ + Start a closing handshake but do not complete it. +@@ -181,31 +183,56 @@ class CommonTests: + The main difference with `close_connection` is that the connection is + left in the CLOSING state until the event loop runs again. + ++ The current implementation returns a task that must be awaited or ++ cancelled, else asyncio complains about destroying a pending task. ++ + """ + close_frame_data = serialize_close(code, reason) +- # Trigger the closing handshake from the local side. +- self.ensure_future(self.protocol.close(code, reason)) ++ # Trigger the closing handshake from the local endpoint. ++ close_task = self.ensure_future(self.protocol.close(code, reason)) + self.run_loop_once() # wait_for executes + self.run_loop_once() # write_frame executes + # Empty the outgoing data stream so we can make assertions later on. + self.assertOneFrameSent(True, OP_CLOSE, close_frame_data) +- # Prepare the response to the closing handshake from the remote side. +- self.loop.call_soon( +- self.receive_frame, Frame(True, OP_CLOSE, close_frame_data)) +- self.loop.call_soon(self.receive_eof_if_client) ++ ++ assert self.protocol.state is State.CLOSING ++ ++ # Complete the closing sequence at 1ms intervals so the test can run ++ # at each point even it goes back to the event loop several times. ++ self.loop.call_later( ++ MS, self.receive_frame, Frame(True, OP_CLOSE, close_frame_data)) ++ self.loop.call_later(2 * MS, self.receive_eof_if_client) ++ ++ # This task must be awaited or cancelled by the caller. ++ return close_task + + def half_close_connection_remote(self, code=1000, reason='close'): + """ +- Receive a closing handshake. ++ Receive a closing handshake but do not complete it. + + The main difference with `close_connection` is that the connection is + left in the CLOSING state until the event loop runs again. + + """ ++ # On the server side, websockets completes the closing handshake and ++ # closes the TCP connection immediately. Yield to the event loop after ++ # sending the close frame to run the test while the connection is in ++ # the CLOSING state. ++ if not self.protocol.is_client: ++ self.make_drain_slow() ++ + close_frame_data = serialize_close(code, reason) +- # Trigger the closing handshake from the remote side. ++ # Trigger the closing handshake from the remote endpoint. + self.receive_frame(Frame(True, OP_CLOSE, close_frame_data)) +- self.receive_eof_if_client() ++ self.run_loop_once() # read_frame executes ++ # Empty the outgoing data stream so we can make assertions later on. ++ self.assertOneFrameSent(True, OP_CLOSE, close_frame_data) ++ ++ assert self.protocol.state is State.CLOSING ++ ++ # Complete the closing sequence at 1ms intervals so the test can run ++ # at each point even it goes back to the event loop several times. ++ self.loop.call_later(2 * MS, self.receive_eof_if_client) + + def process_invalid_frames(self): + """ +@@ -335,11 +362,13 @@ class CommonTests: + self.assertEqual(data, b'tea') + + def test_recv_on_closing_connection_local(self): +- self.half_close_connection_local() ++ close_task = self.half_close_connection_local() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.recv()) + ++ self.loop.run_until_complete(close_task) # cleanup ++ + def test_recv_on_closing_connection_remote(self): + self.half_close_connection_remote() + +@@ -421,24 +450,29 @@ class CommonTests: + self.assertNoFrameSent() + + def test_send_on_closing_connection_local(self): +- self.half_close_connection_local() ++ close_task = self.half_close_connection_local() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.send('foobar')) ++ + self.assertNoFrameSent() + ++ self.loop.run_until_complete(close_task) # cleanup ++ + def test_send_on_closing_connection_remote(self): + self.half_close_connection_remote() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.send('foobar')) +- self.assertOneFrameSent(True, OP_CLOSE, serialize_close(1000, 'close')) ++ ++ self.assertNoFrameSent() + + def test_send_on_closed_connection(self): + self.close_connection() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.send('foobar')) ++ + self.assertNoFrameSent() + + # Test the ping coroutine. +@@ -466,24 +500,29 @@ class CommonTests: + self.assertNoFrameSent() + + def test_ping_on_closing_connection_local(self): +- self.half_close_connection_local() ++ close_task = self.half_close_connection_local() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.ping()) ++ + self.assertNoFrameSent() + ++ self.loop.run_until_complete(close_task) # cleanup ++ + def test_ping_on_closing_connection_remote(self): + self.half_close_connection_remote() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.ping()) +- self.assertOneFrameSent(True, OP_CLOSE, serialize_close(1000, 'close')) ++ ++ self.assertNoFrameSent() + + def test_ping_on_closed_connection(self): + self.close_connection() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.ping()) ++ + self.assertNoFrameSent() + + # Test the pong coroutine. +@@ -506,24 +545,29 @@ class CommonTests: + self.assertNoFrameSent() + + def test_pong_on_closing_connection_local(self): +- self.half_close_connection_local() ++ close_task = self.half_close_connection_local() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.pong()) ++ + self.assertNoFrameSent() + ++ self.loop.run_until_complete(close_task) # cleanup ++ + def test_pong_on_closing_connection_remote(self): + self.half_close_connection_remote() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.pong()) +- self.assertOneFrameSent(True, OP_CLOSE, serialize_close(1000, 'close')) ++ ++ self.assertNoFrameSent() + + def test_pong_on_closed_connection(self): + self.close_connection() + + with self.assertRaises(ConnectionClosed): + self.loop.run_until_complete(self.protocol.pong()) ++ + self.assertNoFrameSent() + + # Test the protocol's logic for acknowledging pings with pongs. +-- +2.17.0 + diff --git a/buildroot/package/python-xlrd/Config.in.host b/buildroot/package/python-xlrd/Config.in.host new file mode 100644 index 00000000000..cd98fd4da33 --- /dev/null +++ b/buildroot/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/buildroot/package/python-xlrd/python-xlrd.mk b/buildroot/package/python-xlrd/python-xlrd.mk index e3f078c3559..5d1363886d0 100644 --- a/buildroot/package/python-xlrd/python-xlrd.mk +++ b/buildroot/package/python-xlrd/python-xlrd.mk @@ -12,3 +12,4 @@ PYTHON_XLRD_LICENSE = BSD-3-Clause PYTHON_XLRD_LICENSE_FILES = xlrd/licences.py $(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python-yieldfrom/Config.in b/buildroot/package/python-yieldfrom/Config.in new file mode 100644 index 00000000000..1a063d31286 --- /dev/null +++ b/buildroot/package/python-yieldfrom/Config.in @@ -0,0 +1,8 @@ +config BR2_PACKAGE_PYTHON_YIELDFROM + bool "python-yieldfrom" + depends on BR2_PACKAGE_PYTHON + help + A backport of the `yield from` semantic from Python 3.x to + Python 2.7. + + https://github.com/Nurdok/yieldfrom/ diff --git a/buildroot/package/python-yieldfrom/python-yieldfrom.hash b/buildroot/package/python-yieldfrom/python-yieldfrom.hash new file mode 100644 index 00000000000..2df80853277 --- /dev/null +++ b/buildroot/package/python-yieldfrom/python-yieldfrom.hash @@ -0,0 +1,4 @@ +# md5 from https://pypi.python.org/pypi/yieldfrom/json, sha256 locally computed +md5 1a1c6fd152032d49ccd4ac250aad7746 yieldfrom-1.0.3.tar.gz +sha256 388004d0ee8854c2ed7a2c87e664aad13acd70c9b33d7f3c441182d37357739b yieldfrom-1.0.3.tar.gz +sha256 3695faeb17a2507f445b7e0a454043671f646591795477ced20e29de2359d666 PKG-INFO diff --git a/buildroot/package/python-yieldfrom/python-yieldfrom.mk b/buildroot/package/python-yieldfrom/python-yieldfrom.mk new file mode 100644 index 00000000000..b1137cdbb48 --- /dev/null +++ b/buildroot/package/python-yieldfrom/python-yieldfrom.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# python-yieldfrom +# +################################################################################ + +PYTHON_YIELDFROM_VERSION = 1.0.3 +PYTHON_YIELDFROM_SOURCE = yieldfrom-$(PYTHON_YIELDFROM_VERSION).tar.gz +PYTHON_YIELDFROM_SITE = https://pypi.python.org/packages/de/2d/05524f368e691846824d962b64f983e3fde9b8c10839e7efbc1b51d42de3 +PYTHON_YIELDFROM_SETUP_TYPE = setuptools +PYTHON_YIELDFROM_LICENSE = MIT +PYTHON_YIELDFROM_LICENSE_FILES = PKG-INFO + +$(eval $(python-package)) +$(eval $(host-python-package)) diff --git a/buildroot/package/python/0035-GCC8-alignment-fix.patch b/buildroot/package/python/0035-GCC8-alignment-fix.patch new file mode 100644 index 00000000000..b742aa09de0 --- /dev/null +++ b/buildroot/package/python/0035-GCC8-alignment-fix.patch @@ -0,0 +1,65 @@ +From 0b91f8a668201fc58fa732b8acc496caedfdbae0 Mon Sep 17 00:00:00 2001 +From: Florian Weimer +Date: Sun, 29 Apr 2018 12:18:33 -0700 +Subject: [PATCH] Indicate that _PyGC_Head is only 8-byte aligned. (closes + bpo-33374) + +By spec, the "long double" in _PyGC_Head requires the union to always be 16-byte +aligned. However, obmalloc only yields 8-byte alignment. Compilers including GCC +8 are starting to use alignment information to do store-merging. So, the "long +double" needs to be changed to a simple "double" as was long ago done in Python +3 by e348c8d154cf6342c79d627ebfe89dfe9de23817. For 2.7, we need to add some +dummy padding to make sure _PyGC_Head stays the same size. + +Upstream: https://bugs.python.org/issue33374 +Signed-off-by: Stefan Becker +--- + Include/objimpl.h | 17 ++++++++++++++++- + .../2018-04-29-12-07-00.bpo-33374.-xegL6.rst | 3 +++ + 2 files changed, 19 insertions(+), 1 deletion(-) + create mode 100644 Misc/NEWS.d/next/Core and Builtins/2018-04-29-12-07-00.bpo-33374.-xegL6.rst + +diff --git a/Include/objimpl.h b/Include/objimpl.h +index 5f2868332955..cbf6bc3f8763 100644 +--- a/Include/objimpl.h ++++ b/Include/objimpl.h +@@ -248,6 +248,20 @@ PyAPI_FUNC(PyVarObject *) _PyObject_GC_Resize(PyVarObject *, Py_ssize_t); + /* for source compatibility with 2.2 */ + #define _PyObject_GC_Del PyObject_GC_Del + ++/* ++ * Former over-aligned definition of PyGC_Head, used to compute the size of the ++ * padding for the new version below. ++ */ ++union _gc_head; ++union _gc_head_old { ++ struct { ++ union _gc_head_old *gc_next; ++ union _gc_head_old *gc_prev; ++ Py_ssize_t gc_refs; ++ } gc; ++ long double dummy; ++}; ++ + /* GC information is stored BEFORE the object structure. */ + typedef union _gc_head { + struct { +@@ -255,7 +269,8 @@ typedef union _gc_head { + union _gc_head *gc_prev; + Py_ssize_t gc_refs; + } gc; +- long double dummy; /* force worst-case alignment */ ++ double dummy; /* Force at least 8-byte alignment. */ ++ char dummy_padding[sizeof(union _gc_head_old)]; + } PyGC_Head; + + extern PyGC_Head *_PyGC_generation0; +diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-04-29-12-07-00.bpo-33374.-xegL6.rst b/Misc/NEWS.d/next/Core and Builtins/2018-04-29-12-07-00.bpo-33374.-xegL6.rst +new file mode 100644 +index 000000000000..9ec1a605c8f2 +--- /dev/null ++++ b/Misc/NEWS.d/next/Core and Builtins/2018-04-29-12-07-00.bpo-33374.-xegL6.rst +@@ -0,0 +1,3 @@ ++Tweak the definition of PyGC_Head, so compilers do not believe it is always ++16-byte aligned on x86. This prevents crashes with more aggressive ++optimizations present in GCC 8. diff --git a/buildroot/package/qemu/0002-memfd-fix-configure-test.patch b/buildroot/package/qemu/0002-memfd-fix-configure-test.patch new file mode 100644 index 00000000000..3e06c0e9327 --- /dev/null +++ b/buildroot/package/qemu/0002-memfd-fix-configure-test.patch @@ -0,0 +1,58 @@ +From 75e5b70e6b5dcc4f2219992d7cffa462aa406af0 Mon Sep 17 00:00:00 2001 +From: Paolo Bonzini +Date: Tue, 28 Nov 2017 11:51:27 +0100 +Subject: [PATCH] memfd: fix configure test +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Recent glibc added memfd_create in sys/mman.h. This conflicts with +the definition in util/memfd.c: + + /builddir/build/BUILD/qemu-2.11.0-rc1/util/memfd.c:40:12: error: static declaration of memfd_create follows non-static declaration + +Fix the configure test, and remove the sys/memfd.h inclusion since the +file actually does not exist---it is a typo in the memfd_create(2) man +page. + +Cc: Marc-Andrテゥ Lureau +Signed-off-by: Paolo Bonzini +Signed-off-by: Baruch Siach +--- +Upstream status: commit 75e5b70e6b5 + + configure | 2 +- + util/memfd.c | 4 +--- + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/configure b/configure +index 9c8aa5a98bd4..99ccc1725ace 100755 +--- a/configure ++++ b/configure +@@ -3923,7 +3923,7 @@ fi + # check if memfd is supported + memfd=no + cat > $TMPC << EOF +-#include ++#include + + int main(void) + { +diff --git a/util/memfd.c b/util/memfd.c +index 4571d1aba866..412e94a405fc 100644 +--- a/util/memfd.c ++++ b/util/memfd.c +@@ -31,9 +31,7 @@ + + #include "qemu/memfd.h" + +-#ifdef CONFIG_MEMFD +-#include +-#elif defined CONFIG_LINUX ++#if defined CONFIG_LINUX && !defined CONFIG_MEMFD + #include + #include + +-- +2.16.2 + diff --git a/buildroot/package/qemu/Config.in.host b/buildroot/package/qemu/Config.in.host index f14bcec6d6d..957c7d2ae1e 100644 --- a/buildroot/package/qemu/Config.in.host +++ b/buildroot/package/qemu/Config.in.host @@ -1,13 +1,39 @@ +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_powerpc + default y if BR2_powerpc64 + default y if BR2_powerpc64le + default y if BR2_sh + default y if BR2_sparc + default y if BR2_x86_64 + depends on !BR2_powerpc_620 && !BR2_powerpc_630 && !BR2_powerpc_970 + +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 + config BR2_PACKAGE_HOST_QEMU bool "host qemu" - depends on BR2_arm || BR2_armeb || BR2_aarch64 || \ - BR2_i386 || BR2_m68k || BR2_microblazeel || \ - BR2_microblazebe || BR2_mips || BR2_mipsel || \ - BR2_mips64 || BR2_mips64el || BR2_powerpc || \ - BR2_powerpc64 || BR2_powerpc64le || BR2_sh || \ - BR2_sparc || BR2_x86_64 + depends on BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS || BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS select BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE \ - if !BR2_PACKAGE_HOST_QEMU_SYSTEM_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. @@ -22,12 +48,14 @@ 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. diff --git a/buildroot/package/qemu/qemu.mk b/buildroot/package/qemu/qemu.mk index 345ef526681..0a6a6c0609e 100644 --- a/buildroot/package/qemu/qemu.mk +++ b/buildroot/package/qemu/qemu.mk @@ -13,6 +13,127 @@ QEMU_LICENSE_FILES = COPYING COPYING.LIB # the non-(L)GPL license texts are specified in the affected # individual source files. +#------------------------------------------------------------- +# Target-qemu + +QEMU_DEPENDENCIES = host-pkgconf host-python libglib2 zlib pixman + +# 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 \ + PYTHON=$(HOST_DIR)/bin/python2 \ + PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages + +# If we want to specify only a subset of targets, we must still enable all +# of them, so that QEMU properly builds its list of default targets, from +# which it then checks if the specified sub-set is valid. That's what we +# do in the first part of the if-clause. +# Otherwise, if we do not want to pass a sub-set of targets, we then need +# to either enable or disable -user and/or -system emulation appropriately. +# That's what we do in the else-clause. +ifneq ($(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS)),) +QEMU_OPTS += --enable-system --enable-linux-user +QEMU_OPTS += --target-list="$(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS))" +else + +ifeq ($(BR2_PACKAGE_QEMU_SYSTEM),y) +QEMU_OPTS += --enable-system +else +QEMU_OPTS += --disable-system +endif + +ifeq ($(BR2_PACKAGE_QEMU_LINUX_USER),y) +QEMU_OPTS += --enable-linux-user +else +QEMU_OPTS += --disable-linux-user +endif + +endif + +ifeq ($(BR2_PACKAGE_QEMU_SDL),y) +QEMU_OPTS += --enable-sdl +QEMU_DEPENDENCIES += sdl +QEMU_VARS += SDL_CONFIG=$(BR2_STAGING_DIR)/usr/bin/sdl-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_TOOLS),y) +QEMU_OPTS += --enable-tools +else +QEMU_OPTS += --disable-tools +endif + +ifeq ($(BR2_PACKAGE_LIBSSH2),y) +QEMU_OPTS += --enable-libssh2 +QEMU_DEPENDENCIES += libssh2 +else +QEMU_OPTS += --disable-libssh2 +endif + +# Override CPP, as it expects to be able to call it like it'd +# call the compiler. +define QEMU_CONFIGURE_CMDS + ( cd $(@D); \ + LIBS='$(QEMU_LIBS)' \ + $(TARGET_CONFIGURE_OPTS) \ + $(TARGET_CONFIGURE_ARGS) \ + CPP="$(TARGET_CC) -E" \ + $(QEMU_VARS) \ + ./configure \ + --prefix=/usr \ + --cross-prefix=$(TARGET_CROSS) \ + --with-system-pixman \ + --audio-drv-list= \ + --enable-kvm \ + --enable-attr \ + --enable-vhost-net \ + --disable-bsd-user \ + --disable-xen \ + --disable-slirp \ + --disable-vnc \ + --disable-virtfs \ + --disable-brlapi \ + --disable-curses \ + --disable-curl \ + --disable-bluez \ + --disable-vde \ + --disable-linux-aio \ + --disable-cap-ng \ + --disable-docs \ + --disable-spice \ + --disable-rbd \ + --disable-libiscsi \ + --disable-usb-redir \ + --disable-strip \ + --disable-seccomp \ + --disable-sparse \ + $(QEMU_OPTS) \ + ) +endef + +define QEMU_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +endef + +define QEMU_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(QEMU_MAKE_ENV) DESTDIR=$(TARGET_DIR) install +endef + +$(eval $(generic-package)) + #------------------------------------------------------------- # Host-qemu @@ -22,7 +143,6 @@ HOST_QEMU_DEPENDENCIES = host-pkgconf host-python host-zlib host-libglib2 host-p # ------- ---- # arm arm # armeb armeb -# bfin not supported # i486 i386 # i586 i386 # i686 i386 @@ -148,117 +268,3 @@ $(eval $(host-generic-package)) # variable used by other packages QEMU_USER = $(HOST_DIR)/bin/qemu-$(HOST_QEMU_ARCH) - -#------------------------------------------------------------- -# Target-qemu - -QEMU_DEPENDENCIES = host-pkgconf host-python libglib2 zlib pixman - -# 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 \ - PYTHON=$(HOST_DIR)/bin/python2 \ - PYTHONPATH=$(TARGET_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages - -# If we want to specify only a subset of targets, we must still enable all -# of them, so that QEMU properly builds its list of default targets, from -# which it then checks if the specified sub-set is valid. That's what we -# do in the first part of the if-clause. -# Otherwise, if we do not want to pass a sub-set of targets, we then need -# to either enable or disable -user and/or -system emulation appropriately. -# That's what we do in the else-clause. -ifneq ($(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS)),) -QEMU_OPTS += --enable-system --enable-linux-user -QEMU_OPTS += --target-list="$(call qstrip,$(BR2_PACKAGE_QEMU_CUSTOM_TARGETS))" -else - -ifeq ($(BR2_PACKAGE_QEMU_SYSTEM),y) -QEMU_OPTS += --enable-system -else -QEMU_OPTS += --disable-system -endif - -ifeq ($(BR2_PACKAGE_QEMU_LINUX_USER),y) -QEMU_OPTS += --enable-linux-user -else -QEMU_OPTS += --disable-linux-user -endif - -endif - -ifeq ($(BR2_PACKAGE_QEMU_SDL),y) -QEMU_OPTS += --enable-sdl -QEMU_DEPENDENCIES += sdl -QEMU_VARS += SDL_CONFIG=$(BR2_STAGING_DIR)/usr/bin/sdl-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_TOOLS),y) -QEMU_OPTS += --enable-tools -else -QEMU_OPTS += --disable-tools -endif - -# Override CPP, as it expects to be able to call it like it'd -# call the compiler. -define QEMU_CONFIGURE_CMDS - ( cd $(@D); \ - LIBS='$(QEMU_LIBS)' \ - $(TARGET_CONFIGURE_OPTS) \ - $(TARGET_CONFIGURE_ARGS) \ - CPP="$(TARGET_CC) -E" \ - $(QEMU_VARS) \ - ./configure \ - --prefix=/usr \ - --cross-prefix=$(TARGET_CROSS) \ - --with-system-pixman \ - --audio-drv-list= \ - --enable-kvm \ - --enable-attr \ - --enable-vhost-net \ - --disable-bsd-user \ - --disable-xen \ - --disable-slirp \ - --disable-vnc \ - --disable-virtfs \ - --disable-brlapi \ - --disable-curses \ - --disable-curl \ - --disable-bluez \ - --disable-vde \ - --disable-linux-aio \ - --disable-cap-ng \ - --disable-docs \ - --disable-spice \ - --disable-rbd \ - --disable-libiscsi \ - --disable-usb-redir \ - --disable-strip \ - --disable-seccomp \ - --disable-sparse \ - $(QEMU_OPTS) \ - ) -endef - -define QEMU_BUILD_CMDS - $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) -endef - -define QEMU_INSTALL_TARGET_CMDS - $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(QEMU_MAKE_ENV) DESTDIR=$(TARGET_DIR) install -endef - -$(eval $(generic-package)) diff --git a/buildroot/package/qt5/Config.in b/buildroot/package/qt5/Config.in index a9ee44c11fd..b7786f7a63b 100644 --- a/buildroot/package/qt5/Config.in +++ b/buildroot/package/qt5/Config.in @@ -35,14 +35,14 @@ choice prompt "Qt5 version" config BR2_PACKAGE_QT5_VERSION_LATEST - bool "Latest (5.9)" + bool "Latest (5.10)" depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 depends on BR2_HOST_GCC_AT_LEAST_4_8 # C++11 depends on !BR2_ARM_CPU_ARMV4 # needs ARMv5+ # no built-in double-conversion support depends on !BR2_arc && !BR2_nios2 && !BR2_xtensa help - This option builds Qt 5.9, which is licensed under + This option builds Qt 5.10, which is licensed under (L)GPL-3.0+. comment "Latest Qt version needs host/toolchain w/ gcc >= 4.8" diff --git a/buildroot/package/qt5/qt5.mk b/buildroot/package/qt5/qt5.mk index 3c03c10066a..14a2b938a0d 100644 --- a/buildroot/package/qt5/qt5.mk +++ b/buildroot/package/qt5/qt5.mk @@ -5,11 +5,13 @@ ################################################################################ ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) -QT5_VERSION_MAJOR = 5.9 -QT5_VERSION = $(QT5_VERSION_MAJOR).4 +QT5_VERSION_MAJOR = 5.10 +QT5_VERSION = $(QT5_VERSION_MAJOR).1 +QT5_SOURCE_TARBALL_PREFIX = everywhere-src else QT5_VERSION_MAJOR = 5.6 QT5_VERSION = $(QT5_VERSION_MAJOR).3 +QT5_SOURCE_TARBALL_PREFIX = opensource-src endif QT5_SITE = https://download.qt.io/official_releases/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/submodules diff --git a/buildroot/package/qt5/qt53d/qt53d.hash b/buildroot/package/qt5/qt53d/qt53d.hash index 9d629eb5400..9d9ff8f69cb 100644 --- a/buildroot/package/qt5/qt53d/qt53d.hash +++ b/buildroot/package/qt5/qt53d/qt53d.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qt3d-opensource-src-5.6.3.tar.xz.mirrorlist sha256 10d05a30e925fcad971126c7f47a5e32c39f007dab96b298b2094501f9607ffe qt3d-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qt3d-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 ad18b1c98a100025a96d600008c9478f646432c9e8cf11fb9a405c55f1970550 qt3d-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qt3d-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 041fb42536a72bbf9be17a6f52d4b73ce93fb98b456fd63503cc47d80d196b3b qt3d-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPL diff --git a/buildroot/package/qt5/qt53d/qt53d.mk b/buildroot/package/qt5/qt53d/qt53d.mk index fcb743db214..6896b003186 100644 --- a/buildroot/package/qt5/qt53d/qt53d.mk +++ b/buildroot/package/qt5/qt53d/qt53d.mk @@ -6,7 +6,7 @@ QT53D_VERSION = $(QT5_VERSION) QT53D_SITE = $(QT5_SITE) -QT53D_SOURCE = qt3d-opensource-src-$(QT53D_VERSION).tar.xz +QT53D_SOURCE = qt3d-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT53D_VERSION).tar.xz QT53D_DEPENDENCIES = qt5base qt5declarative QT53D_INSTALL_STAGING = YES @@ -30,11 +30,21 @@ define QT53D_INSTALL_STAGING_CMDS $(QT5_LA_PRL_FILES_FIXUP) endef +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT53D_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/qt3d $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + ifeq ($(BR2_STATIC_LIBS),) define QT53D_INSTALL_TARGET_CMDS cp -dpf $(STAGING_DIR)/usr/lib/libQt53D*.so.* $(TARGET_DIR)/usr/lib + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/geometryloaders $(TARGET_DIR)/usr/lib/qt/plugins + cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/renderplugins $(TARGET_DIR)/usr/lib/qt/plugins cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/sceneparsers $(TARGET_DIR)/usr/lib/qt/plugins cp -dpfr $(STAGING_DIR)/usr/qml/Qt3D $(TARGET_DIR)/usr/qml + cp -dpfr $(STAGING_DIR)/usr/qml/QtQuick $(TARGET_DIR)/usr/qml + $(QT53D_INSTALL_TARGET_EXAMPLES) endef endif diff --git a/buildroot/package/qt5/qt5base/5.10.1/0001-qtbase-Fix-build-error-when-using-EGL.patch b/buildroot/package/qt5/qt5base/5.10.1/0001-qtbase-Fix-build-error-when-using-EGL.patch new file mode 100644 index 00000000000..68764980228 --- /dev/null +++ b/buildroot/package/qt5/qt5base/5.10.1/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/buildroot/package/qt5/qt5base/5.6.3/0002-qtbase-Fix-build-error-when-using-EGL.patch b/buildroot/package/qt5/qt5base/5.6.3/0002-qtbase-Fix-build-error-when-using-EGL.patch new file mode 100644 index 00000000000..0d0e0f922bd --- /dev/null +++ b/buildroot/package/qt5/qt5base/5.6.3/0002-qtbase-Fix-build-error-when-using-EGL.patch @@ -0,0 +1,37 @@ +From d69bd3fd52502c7eb2799397fea14afe350e2cbf 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/buildroot/package/qt5/qt5base/Config.in b/buildroot/package/qt5/qt5base/Config.in index b5755e2b9cd..b9aba2d3898 100644 --- a/buildroot/package/qt5/qt5base/Config.in +++ b/buildroot/package/qt5/qt5base/Config.in @@ -103,6 +103,7 @@ config BR2_PACKAGE_QT5BASE_SQLITE_QT config BR2_PACKAGE_QT5BASE_SQLITE_SYSTEM bool "System SQLite" select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_SQLITE_ENABLE_COLUMN_METADATA help Use system SQLite. diff --git a/buildroot/package/qt5/qt5base/qmake.conf b/buildroot/package/qt5/qt5base/qmake.conf.in similarity index 98% rename from buildroot/package/qt5/qt5base/qmake.conf rename to buildroot/package/qt5/qt5base/qmake.conf.in index 8b6debe5837..d62ee7cebed 100644 --- a/buildroot/package/qt5/qt5base/qmake.conf +++ b/buildroot/package/qt5/qt5base/qmake.conf.in @@ -24,5 +24,7 @@ QMAKE_CFLAGS_ISYSTEM = # Architecturespecific configuration include(arch.conf) +@EGLFS_DEVICE@ + include(../common/linux_device_post.conf) load(qt_config) diff --git a/buildroot/package/qt5/qt5base/qt5base.hash b/buildroot/package/qt5/qt5base/qt5base.hash index a72d8cd4da4..d788c071d87 100644 --- a/buildroot/package/qt5/qt5base/qt5base.hash +++ b/buildroot/package/qt5/qt5base/qt5base.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtbase-opensource-src-5.6.3.tar.xz.mirrorlist sha256 fef48529a6fc2617a30d75d952cb327c6be341fd104154993922184b3b3b4da1 qtbase-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtbase-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 69e6bde3ab00673a77e1506173551fec7d0cd899fcbf9b1260517db1b61004cf qtbase-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtbase-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 d8660e189caa5da5142d5894d328b61a4d3ee9750b76d61ad74e4eee8765a969 qtbase-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 diff --git a/buildroot/package/qt5/qt5base/qt5base.mk b/buildroot/package/qt5/qt5base/qt5base.mk index b3f9c799cb5..1eabd7a15b7 100644 --- a/buildroot/package/qt5/qt5base/qt5base.mk +++ b/buildroot/package/qt5/qt5base/qt5base.mk @@ -6,7 +6,7 @@ QT5BASE_VERSION = $(QT5_VERSION) QT5BASE_SITE = $(QT5_SITE) -QT5BASE_SOURCE = qtbase-opensource-src-$(QT5BASE_VERSION).tar.xz +QT5BASE_SOURCE = qtbase-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5BASE_VERSION).tar.xz QT5BASE_DEPENDENCIES = host-pkgconf zlib QT5BASE_INSTALL_STAGING = YES @@ -240,12 +240,14 @@ QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_PRINTSUPPORT) += Qt5PrintSupport QT5BASE_INSTALL_LIBS_$(BR2_PACKAGE_QT5BASE_DBUS) += Qt5DBus -ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST)$(BR2_PACKAGE_IMX_GPU_VIV),yy) +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +ifeq ($(BR2_PACKAGE_IMX_GPU_VIV),y) # use vivante backend -define QT5BASE_CONFIGURE_QMAKE_CONFIG - echo "EGLFS_DEVICE_INTEGRATION = eglfs_viv" >> \ - $(@D)/mkspecs/devices/linux-buildroot-g++/qmake.conf -endef +QT5BASE_EGLFS_DEVICE = EGLFS_DEVICE_INTEGRATION = eglfs_viv +else ifeq ($(BR2_PACKAGE_SUNXI_MALI)$(BR2_PACKAGE_SUNXI_MALI_MAINLINE),y) +# use mali backend +QT5BASE_EGLFS_DEVICE = EGLFS_DEVICE_INTEGRATION = eglfs_mali +endif endif ifneq ($(QT5BASE_CONFIG_FILE),) @@ -263,7 +265,9 @@ endef endif define QT5BASE_CONFIGURE_CMDS - $(INSTALL) -m 0644 -D $(QT5BASE_PKGDIR)/qmake.conf \ + 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 $(QT5BASE_CONFIGURE_QMAKE_CONFIG) $(INSTALL) -m 0644 -D $(QT5BASE_PKGDIR)/qplatformdefs.h \ @@ -289,8 +293,8 @@ define QT5BASE_CONFIGURE_CMDS -nomake tests \ -device buildroot \ -device-option CROSS_COMPILE="$(TARGET_CROSS)" \ - -device-option BR_COMPILER_CFLAGS="$(TARGET_CFLAGS) $(QT5BASE_EXTRA_CFLAGS)" \ - -device-option BR_COMPILER_CXXFLAGS="$(TARGET_CXXFLAGS) $(QT5BASE_EXTRA_CFLAGS)" \ + -device-option BR_COMPILER_CFLAGS="$(TARGET_CFLAGS)" \ + -device-option BR_COMPILER_CXXFLAGS="$(TARGET_CXXFLAGS)" \ $(QT5BASE_CONFIGURE_OPTS) \ ) endef diff --git a/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.hash b/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.hash index 68d1691d3d0..d15fde9df7f 100644 --- a/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.hash +++ b/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtcanvas3d-opensource-src-5.6.3.tar.xz.mirrorlist sha256 e99e0e159f2fba539b7947a1921072f6807f20958d32809edbf12aac571f56ff qtcanvas3d-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtcanvas3d-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 ef358503e2f243c2e162c3fef2181707ff3485376198d8e4fcc6d979e6ebed29 qtcanvas3d-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtcanvas3d-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 de829a8e6aa4b8496048e9b6f3bff306a80c35935855a94426025ddfb8bcb0c0 qtcanvas3d-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 diff --git a/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.mk b/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.mk index 97b0ec494e7..13e233f2379 100644 --- a/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.mk +++ b/buildroot/package/qt5/qt5canvas3d/qt5canvas3d.mk @@ -6,7 +6,7 @@ QT5CANVAS3D_VERSION = $(QT5_VERSION) QT5CANVAS3D_SITE = $(QT5_SITE) -QT5CANVAS3D_SOURCE = qtcanvas3d-opensource-src-$(QT5CANVAS3D_VERSION).tar.xz +QT5CANVAS3D_SOURCE = qtcanvas3d-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5CANVAS3D_VERSION).tar.xz QT5CANVAS3D_DEPENDENCIES = qt5base qt5declarative QT5CANVAS3D_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5charts/qt5charts.hash b/buildroot/package/qt5/qt5charts/qt5charts.hash index a0c2d0d739c..5a5845ef9f4 100644 --- a/buildroot/package/qt5/qt5charts/qt5charts.hash +++ b/buildroot/package/qt5/qt5charts/qt5charts.hash @@ -1,5 +1,5 @@ -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtcharts-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 75f72983fde6720a093d5f065d33f47e77a4bd2188ae9d41ebb9a4fcc459d3e7 qtcharts-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtcharts-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 4f0d577bf73dd2bbb2765c2cfb493a2d68790fc2c64f42544d31dba806321ec9 qtcharts-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 diff --git a/buildroot/package/qt5/qt5charts/qt5charts.mk b/buildroot/package/qt5/qt5charts/qt5charts.mk index 17fdd967021..123cb658fe4 100644 --- a/buildroot/package/qt5/qt5charts/qt5charts.mk +++ b/buildroot/package/qt5/qt5charts/qt5charts.mk @@ -6,7 +6,7 @@ QT5CHARTS_VERSION = $(QT5_VERSION) QT5CHARTS_SITE = $(QT5_SITE) -QT5CHARTS_SOURCE = qtcharts-opensource-src-$(QT5CHARTS_VERSION).tar.xz +QT5CHARTS_SOURCE = qtcharts-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5CHARTS_VERSION).tar.xz QT5CHARTS_DEPENDENCIES = qt5base QT5CHARTS_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5connectivity/qt5connectivity.hash b/buildroot/package/qt5/qt5connectivity/qt5connectivity.hash index 21d0ded4e05..8364536309b 100644 --- a/buildroot/package/qt5/qt5connectivity/qt5connectivity.hash +++ b/buildroot/package/qt5/qt5connectivity/qt5connectivity.hash @@ -1,5 +1,5 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtconnectivity-opensource-src-5.6.3.tar.xz.mirrorlist sha256 fa406e3d63fa4a2acc8ecae6d110f20c766f19a21c7061a12f3c167deb07ccde qtconnectivity-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtconnectivity-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 dba750363bf55648a08bc44372f423d31f405f6deac5393f0b76376a3e9e0c8b qtconnectivity-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtconnectivity-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 652821dc6819658ec4bc1a6bf149fd7a61008748ff4745b54f038ccf276d3ec9 qtconnectivity-everywhere-src-5.10.1.tar.xz diff --git a/buildroot/package/qt5/qt5connectivity/qt5connectivity.mk b/buildroot/package/qt5/qt5connectivity/qt5connectivity.mk index 4369a411a5b..6de1536b78b 100644 --- a/buildroot/package/qt5/qt5connectivity/qt5connectivity.mk +++ b/buildroot/package/qt5/qt5connectivity/qt5connectivity.mk @@ -6,7 +6,7 @@ QT5CONNECTIVITY_VERSION = $(QT5_VERSION) QT5CONNECTIVITY_SITE = $(QT5_SITE) -QT5CONNECTIVITY_SOURCE = qtconnectivity-opensource-src-$(QT5CONNECTIVITY_VERSION).tar.xz +QT5CONNECTIVITY_SOURCE = qtconnectivity-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5CONNECTIVITY_VERSION).tar.xz QT5CONNECTIVITY_DEPENDENCIES = qt5base QT5CONNECTIVITY_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5declarative/qt5declarative.hash b/buildroot/package/qt5/qt5declarative/qt5declarative.hash index 308a4f0f56d..1634a88eccc 100644 --- a/buildroot/package/qt5/qt5declarative/qt5declarative.hash +++ b/buildroot/package/qt5/qt5declarative/qt5declarative.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtdeclarative-opensource-src-5.6.3.tar.xz.mirrorlist sha256 f63fc053d0d16b8a9ca9308f8ead77874b470ae31b66057e2bd336bf648191fc qtdeclarative-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtdeclarative-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 dc638a3b207dd2c6607a21415f6dd8d760568535dfe4b485fdb4576c98832d65 qtdeclarative-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtdeclarative-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 3af9ed51bce5b5c6f04c4a67a6008f98765ccde897c43fff670621ab70789553 qtdeclarative-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 diff --git a/buildroot/package/qt5/qt5declarative/qt5declarative.mk b/buildroot/package/qt5/qt5declarative/qt5declarative.mk index de8b048329b..2fe72b3be6e 100644 --- a/buildroot/package/qt5/qt5declarative/qt5declarative.mk +++ b/buildroot/package/qt5/qt5declarative/qt5declarative.mk @@ -6,7 +6,7 @@ QT5DECLARATIVE_VERSION = $(QT5_VERSION) QT5DECLARATIVE_SITE = $(QT5_SITE) -QT5DECLARATIVE_SOURCE = qtdeclarative-opensource-src-$(QT5DECLARATIVE_VERSION).tar.xz +QT5DECLARATIVE_SOURCE = qtdeclarative-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5DECLARATIVE_VERSION).tar.xz QT5DECLARATIVE_DEPENDENCIES = qt5base qt5xmlpatterns QT5DECLARATIVE_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5enginio/qt5enginio.mk b/buildroot/package/qt5/qt5enginio/qt5enginio.mk index 603b2a517d1..38f309646f0 100644 --- a/buildroot/package/qt5/qt5enginio/qt5enginio.mk +++ b/buildroot/package/qt5/qt5enginio/qt5enginio.mk @@ -7,7 +7,7 @@ # Qt5Enginio does not follow Qt versionning # see https://bugreports.qt.io/browse/QTBUG-50111 QT5ENGINIO_VERSION = 1.6.3 -QT5ENGINIO_SITE = $(QT5_SITE) +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 qt5base QT5ENGINIO_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash b/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash index 9a1bbdac32f..0eb188f1396 100644 --- a/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash +++ b/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtgraphicaleffects-opensource-src-5.6.3.tar.xz.mirrorlist sha256 c742592d5e45b122b29df60b69be23ba7c817f2dc471db86e054f6ea24a999ed qtgraphicaleffects-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtgraphicaleffects-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 97f75327d7d20ec02e920f1c86ee2bc4063396833d93215e509e95c58e24b8ef qtgraphicaleffects-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtgraphicaleffects-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 3f3b0631b579630bf58e99f3ca0d8dfdb6a44153c63cf90ac9e07041b4b1847f qtgraphicaleffects-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 diff --git a/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk b/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk index 2f6380f712b..c5011a94f04 100644 --- a/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk +++ b/buildroot/package/qt5/qt5graphicaleffects/qt5graphicaleffects.mk @@ -6,7 +6,7 @@ QT5GRAPHICALEFFECTS_VERSION = $(QT5_VERSION) QT5GRAPHICALEFFECTS_SITE = $(QT5_SITE) -QT5GRAPHICALEFFECTS_SOURCE = qtgraphicaleffects-opensource-src-$(QT5GRAPHICALEFFECTS_VERSION).tar.xz +QT5GRAPHICALEFFECTS_SOURCE = qtgraphicaleffects-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5GRAPHICALEFFECTS_VERSION).tar.xz QT5GRAPHICALEFFECTS_DEPENDENCIES = qt5base qt5declarative QT5GRAPHICALEFFECTS_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5imageformats/qt5imageformats.hash b/buildroot/package/qt5/qt5imageformats/qt5imageformats.hash index 37d0519ed46..ac858ea2441 100644 --- a/buildroot/package/qt5/qt5imageformats/qt5imageformats.hash +++ b/buildroot/package/qt5/qt5imageformats/qt5imageformats.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtimageformats-opensource-src-5.6.3.tar.xz.mirrorlist sha256 efe4da3c90c976c9b9a2eb6b081d2b8e1435935695104456276ce98e8a5848c3 qtimageformats-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtimageformats-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 69e17081a8649b7db138073942d07d2e99f78f4b954ccd6aab3a406e92dbddd9 qtimageformats-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtimageformats-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 2804baa2779eae015096820e233d7f86bb7fde9853b7c9150a321a453422a283 qtimageformats-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 diff --git a/buildroot/package/qt5/qt5imageformats/qt5imageformats.mk b/buildroot/package/qt5/qt5imageformats/qt5imageformats.mk index f70f131d506..fa13ebedaf4 100644 --- a/buildroot/package/qt5/qt5imageformats/qt5imageformats.mk +++ b/buildroot/package/qt5/qt5imageformats/qt5imageformats.mk @@ -6,7 +6,7 @@ QT5IMAGEFORMATS_VERSION = $(QT5_VERSION) QT5IMAGEFORMATS_SITE = $(QT5_SITE) -QT5IMAGEFORMATS_SOURCE = qtimageformats-opensource-src-$(QT5IMAGEFORMATS_VERSION).tar.xz +QT5IMAGEFORMATS_SOURCE = qtimageformats-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5IMAGEFORMATS_VERSION).tar.xz QT5IMAGEFORMATS_DEPENDENCIES = qt5base QT5IMAGEFORMATS_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5location/qt5location.hash b/buildroot/package/qt5/qt5location/qt5location.hash index 3f9ba667c14..f18c838800b 100644 --- a/buildroot/package/qt5/qt5location/qt5location.hash +++ b/buildroot/package/qt5/qt5location/qt5location.hash @@ -1,13 +1,16 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtlocation-opensource-src-5.6.3.tar.xz.mirrorlist sha256 b7a81c58cc331fb15bea8fba21d3c9a59f6dc6ad2e4855e30a14ce59a2af1466 qtlocation-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtlocation-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 37ed68b0243a30b836cda79802e3f33404b1792f7b845a25b2e4989dc2fed2a0 qtlocation-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtlocation-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 5e5cc05517c701a2c8ebba1fbe3ddff2b6b90d5aa554d307b1c477fe0cfd72c9 qtlocation-everywhere-src-5.10.1.tar.xz # Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 diff --git a/buildroot/package/qt5/qt5location/qt5location.mk b/buildroot/package/qt5/qt5location/qt5location.mk index e9f1e4d93dd..05cd1168a37 100644 --- a/buildroot/package/qt5/qt5location/qt5location.mk +++ b/buildroot/package/qt5/qt5location/qt5location.mk @@ -6,13 +6,13 @@ QT5LOCATION_VERSION = $(QT5_VERSION) QT5LOCATION_SITE = $(QT5_SITE) -QT5LOCATION_SOURCE = qtlocation-opensource-src-$(QT5LOCATION_VERSION).tar.xz +QT5LOCATION_SOURCE = qtlocation-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5LOCATION_VERSION).tar.xz QT5LOCATION_DEPENDENCIES = qt5base QT5LOCATION_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) QT5LOCATION_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) -QT5LOCATION_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +QT5LOCATION_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL else QT5LOCATION_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) QT5LOCATION_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL diff --git a/buildroot/package/qt5/qt5multimedia/qt5multimedia.hash b/buildroot/package/qt5/qt5multimedia/qt5multimedia.hash index 5cb253790a5..0fb25b6e090 100644 --- a/buildroot/package/qt5/qt5multimedia/qt5multimedia.hash +++ b/buildroot/package/qt5/qt5multimedia/qt5multimedia.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtmultimedia-opensource-src-5.6.3.tar.xz.mirrorlist sha256 ae36039ea8037742342f1615687e0ca2188f3ed0d700627a5e5be546c15e1b46 qtmultimedia-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtmultimedia-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 4952a00712e209ad34241b22cb338bad2f44c42a77316b3b05389faeee1e4e74 qtmultimedia-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtmultimedia-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 a1fa98015ee5a6b81f2d337abc98d8b297c6718f7714a1f13fccfd2934c23649 qtmultimedia-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 diff --git a/buildroot/package/qt5/qt5multimedia/qt5multimedia.mk b/buildroot/package/qt5/qt5multimedia/qt5multimedia.mk index 041ef49092a..c97aebfd958 100644 --- a/buildroot/package/qt5/qt5multimedia/qt5multimedia.mk +++ b/buildroot/package/qt5/qt5multimedia/qt5multimedia.mk @@ -6,7 +6,7 @@ QT5MULTIMEDIA_VERSION = $(QT5_VERSION) QT5MULTIMEDIA_SITE = $(QT5_SITE) -QT5MULTIMEDIA_SOURCE = qtmultimedia-opensource-src-$(QT5MULTIMEDIA_VERSION).tar.xz +QT5MULTIMEDIA_SOURCE = qtmultimedia-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5MULTIMEDIA_VERSION).tar.xz QT5MULTIMEDIA_DEPENDENCIES = qt5base QT5MULTIMEDIA_INSTALL_STAGING = YES @@ -34,15 +34,8 @@ ifeq ($(BR2_PACKAGE_ALSA_LIB),y) QT5MULTIMEDIA_DEPENDENCIES += alsa-lib endif -# The mesa's EGL/eglplatform.h header includes X11 headers unless the flag -# MESA_EGL_NO_X11_HEADERS is defined. Tell to not include X11 headers if -# the libxcb is not selected. -ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL)x$(BR2_PACKAGE_LIBXCB),yx) -QT5MULTIMEDIA_QMAKEFLAGS += QMAKE_CXXFLAGS+=-DMESA_EGL_NO_X11_HEADERS -endif - define QT5MULTIMEDIA_CONFIGURE_CMDS - (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake $(QT5MULTIMEDIA_QMAKEFLAGS)) + (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) endef define QT5MULTIMEDIA_BUILD_CMDS @@ -55,7 +48,9 @@ define QT5MULTIMEDIA_INSTALL_STAGING_CMDS endef ifeq ($(BR2_STATIC_LIBS),) -ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y) +# since Qt5.10.1 libqgsttools was renamed to libQtMultimediaGstTools +# and is installed by the default target install step below +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST)x$(BR2_PACKAGE_GST1_PLUGINS_BASE),xy) define QT5MULTIMEDIA_INSTALL_TARGET_QGSTTOOLS_LIB cp -dpf $(STAGING_DIR)/usr/lib/libqgsttools*.so.* $(TARGET_DIR)/usr/lib endef @@ -66,7 +61,7 @@ define QT5MULTIMEDIA_INSTALL_TARGET_LIBS cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/* $(TARGET_DIR)/usr/lib/qt/plugins $(QT5MULTIMEDIA_INSTALL_TARGET_QGSTTOOLS_LIB) endef -endif +endif # !BR2_STATIC_LIBS # this is only built with quick/opengl support enabled ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK)$(BR2_PACKAGE_QT5_GL_AVAILABLE),yy) diff --git a/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.hash b/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.hash index ca1e217d834..809cb6b8883 100644 --- a/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.hash +++ b/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.hash @@ -1,11 +1,14 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtquickcontrols-opensource-src-5.6.3.tar.xz.mirrorlist sha256 31bb0fc8f21b855af6ff02c415be3246128b523d0ef7c05e248e92281ab0db8e qtquickcontrols-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtquickcontrols-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 16a205a09bfe9d54c38e9ef555e6f1ecd082576ef2a33cb80b6d49a7ccaed98b qtquickcontrols-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtquickcontrols-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 d231a1993dc6a3f0dbc60a21d01fc0be15b0c26e881bd0631573952ea61682b7 qtquickcontrols-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL diff --git a/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.mk b/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.mk index 88e767bcf92..5517cc15374 100644 --- a/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.mk +++ b/buildroot/package/qt5/qt5quickcontrols/qt5quickcontrols.mk @@ -6,12 +6,12 @@ QT5QUICKCONTROLS_VERSION = $(QT5_VERSION) QT5QUICKCONTROLS_SITE = $(QT5_SITE) -QT5QUICKCONTROLS_SOURCE = qtquickcontrols-opensource-src-$(QT5QUICKCONTROLS_VERSION).tar.xz +QT5QUICKCONTROLS_SOURCE = qtquickcontrols-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5QUICKCONTROLS_VERSION).tar.xz QT5QUICKCONTROLS_DEPENDENCIES = qt5base qt5declarative QT5QUICKCONTROLS_INSTALL_STAGING = YES QT5QUICKCONTROLS_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-3.0, GFDL-1.3 (docs) -QT5QUICKCONTROLS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv3 LICENSE.FDL +QT5QUICKCONTROLS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.LGPL3 LICENSE.FDL define QT5QUICKCONTROLS_CONFIGURE_CMDS (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) diff --git a/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash b/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash index 15f23b5e4b2..f446980e877 100644 --- a/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash +++ b/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtquickcontrols2-opensource-src-5.6.3.tar.xz.mirrorlist sha256 ec5078470abe2da888c2be5d1749b5961ef5132487c180ce4d4aa19ea7ff81cb qtquickcontrols2-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtquickcontrols2-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 1528a7a356e7073f5eeca93ba6e3330ba708d31c3a8f10dc1ce4546d9557640c qtquickcontrols2-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtquickcontrols2-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 5dc64a1b901e418b76fd3bf65dfa87a0cb11338741fb8970211c1df6df0e604a qtquickcontrols2-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 d2cfc059acb4abd8e513cd0a73cd8489f34cbafa7bc34d5d31fb3210821cf8ca LICENSE.GPLv3 diff --git a/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk b/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk index f27cafc63b6..c2004c2ee73 100644 --- a/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk +++ b/buildroot/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk @@ -6,7 +6,7 @@ QT5QUICKCONTROLS2_VERSION = $(QT5_VERSION) QT5QUICKCONTROLS2_SITE = $(QT5_SITE) -QT5QUICKCONTROLS2_SOURCE = qtquickcontrols2-opensource-src-$(QT5QUICKCONTROLS2_VERSION).tar.xz +QT5QUICKCONTROLS2_SOURCE = qtquickcontrols2-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5QUICKCONTROLS2_VERSION).tar.xz QT5QUICKCONTROLS2_DEPENDENCIES = qt5base qt5declarative QT5QUICKCONTROLS2_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5script/qt5script.hash b/buildroot/package/qt5/qt5script/qt5script.hash index bcb37801a83..6038f315c43 100644 --- a/buildroot/package/qt5/qt5script/qt5script.hash +++ b/buildroot/package/qt5/qt5script/qt5script.hash @@ -1,12 +1,16 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtscript-opensource-src-5.6.3.tar.xz.mirrorlist sha256 f08720dd0e3a70377c1cb7fa3b129e24f4cdedade279e51b67c9271ab470b389 qtscript-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtscript-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 4045da078600b5928f8206341c442cc7f5eec8c51f477f7367072ab5c28ee053 qtscript-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtscript-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 e0618af7cb1f1f30d292c04cf484e3507cf6f4815f79870e35d2b0ce7ac9532d qtscript-everywhere-src-5.10.1.tar.xz # Hashes for license files: -sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 sha256 438c1f9a2b256e47dac33249f2ad6d4a9df643f1ec5312216d528a2f7ad82084 LGPL_EXCEPTION.txt +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL +sha256 5094ecb9c9dcd0eadc34f3c11511d9b5535063032bc150164ecd1a5d5a445547 src/3rdparty/javascriptcore/JavaScriptCore/COPYING.LIB +sha256 43b007cd3ac7b7ea5284b13e9580334028e6f42e859059605d57558f39374197 src/3rdparty/javascriptcore/JavaScriptCore/pcre/COPYING diff --git a/buildroot/package/qt5/qt5script/qt5script.mk b/buildroot/package/qt5/qt5script/qt5script.mk index b6c02d0d1c9..fe0ad9e888e 100644 --- a/buildroot/package/qt5/qt5script/qt5script.mk +++ b/buildroot/package/qt5/qt5script/qt5script.mk @@ -6,12 +6,26 @@ QT5SCRIPT_VERSION = $(QT5_VERSION) QT5SCRIPT_SITE = $(QT5_SITE) -QT5SCRIPT_SOURCE = qtscript-opensource-src-$(QT5SCRIPT_VERSION).tar.xz +QT5SCRIPT_SOURCE = qtscript-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5SCRIPT_VERSION).tar.xz QT5SCRIPT_DEPENDENCIES = qt5base QT5SCRIPT_INSTALL_STAGING = YES -QT5SCRIPT_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) -QT5SCRIPT_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL +# 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. +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +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 +else +QT5SCRIPT_LICENSE = LGPL-2.1, BSD-3-Clause, LGPL-2.1 with exception or LGPL-3.0 with exception (libQt5ScriptTools), GFDL-1.3 (docs) +QT5SCRIPT_LICENSE_FILES = LICENSE.LGPLv21 LICENSE.LGPLv3 LGPL_EXCEPTION.txt LICENSE.FDL +endif +# License files from JavaScriptCore +QT5SCRIPT_LICENSE_FILES += \ + src/3rdparty/javascriptcore/JavaScriptCore/COPYING.LIB \ + src/3rdparty/javascriptcore/JavaScriptCore/pcre/COPYING define QT5SCRIPT_CONFIGURE_CMDS (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake) diff --git a/buildroot/package/qt5/qt5scxml/qt5scxml.hash b/buildroot/package/qt5/qt5scxml/qt5scxml.hash index dbe81ecbb6b..d2728818439 100644 --- a/buildroot/package/qt5/qt5scxml/qt5scxml.hash +++ b/buildroot/package/qt5/qt5scxml/qt5scxml.hash @@ -1,5 +1,5 @@ -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtscxml-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 1decc54e157a1492066fe0e7d534c6a9888c096731af7cac9b64c52fd3950b75 qtscxml-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtscxml-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 0b42d201e4f96af1c404a61f01da6726bab9bfba4e280cc4a82c717f0db26103 qtscxml-everywhere-src-5.10.1.tar.xz # Hashes for license files: diff --git a/buildroot/package/qt5/qt5scxml/qt5scxml.mk b/buildroot/package/qt5/qt5scxml/qt5scxml.mk index 2d197a2bca7..de9ece597c9 100644 --- a/buildroot/package/qt5/qt5scxml/qt5scxml.mk +++ b/buildroot/package/qt5/qt5scxml/qt5scxml.mk @@ -6,7 +6,7 @@ QT5SCXML_VERSION = $(QT5_VERSION) QT5SCXML_SITE = $(QT5_SITE) -QT5SCXML_SOURCE = qtscxml-opensource-src-$(QT5SCXML_VERSION).tar.xz +QT5SCXML_SOURCE = qtscxml-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5SCXML_VERSION).tar.xz QT5SCXML_DEPENDENCIES = qt5base qt5declarative QT5SCXML_INSTALL_STAGING = YES @@ -35,6 +35,10 @@ define QT5SCXML_INSTALL_TARGET_LIBS endef endif +define QT5SCXML_INSTALL_TARGET_QMLS + cp -dpfr $(STAGING_DIR)/usr/qml/QtScxml/ $(TARGET_DIR)/usr/qml/ +endef + ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) define QT5SCXML_INSTALL_TARGET_EXAMPLES cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/scxml $(TARGET_DIR)/usr/lib/qt/examples/ @@ -43,6 +47,7 @@ endif define QT5SCXML_INSTALL_TARGET_CMDS $(QT5SCXML_INSTALL_TARGET_LIBS) + $(QT5SCXML_INSTALL_TARGET_QMLS) $(QT5SCXML_INSTALL_TARGET_EXAMPLES) endef diff --git a/buildroot/package/qt5/qt5sensors/qt5sensors.hash b/buildroot/package/qt5/qt5sensors/qt5sensors.hash index 1a78d467707..0b7222f14da 100644 --- a/buildroot/package/qt5/qt5sensors/qt5sensors.hash +++ b/buildroot/package/qt5/qt5sensors/qt5sensors.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtsensors-opensource-src-5.6.3.tar.xz.mirrorlist sha256 7502d4dc5571865a7eea2a4180c3be396dfb8ce22df4c4f3d7e9ff32ab334973 qtsensors-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtsensors-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 793f3aa056b7ce9ae91acb599eab80525983e5e973bb4a2fdba82776ec9cd458 qtsensors-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtsensors-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 bb0df76c0e53cf2b39d10dbf0964706a264413aae74a4596119143ab4d165c96 qtsensors-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 diff --git a/buildroot/package/qt5/qt5sensors/qt5sensors.mk b/buildroot/package/qt5/qt5sensors/qt5sensors.mk index d4dc47e89c8..805abcccd18 100644 --- a/buildroot/package/qt5/qt5sensors/qt5sensors.mk +++ b/buildroot/package/qt5/qt5sensors/qt5sensors.mk @@ -6,7 +6,7 @@ QT5SENSORS_VERSION = $(QT5_VERSION) QT5SENSORS_SITE = $(QT5_SITE) -QT5SENSORS_SOURCE = qtsensors-opensource-src-$(QT5SENSORS_VERSION).tar.xz +QT5SENSORS_SOURCE = qtsensors-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5SENSORS_VERSION).tar.xz QT5SENSORS_DEPENDENCIES = qt5base QT5SENSORS_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5serialbus/qt5serialbus.hash b/buildroot/package/qt5/qt5serialbus/qt5serialbus.hash index 005fd0b5dc4..d3928978168 100644 --- a/buildroot/package/qt5/qt5serialbus/qt5serialbus.hash +++ b/buildroot/package/qt5/qt5serialbus/qt5serialbus.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtserialbus-opensource-src-5.6.3.tar.xz.mirrorlist sha256 71c89be3879414e2a11cad93a4882758f9259b1c0aec980560309192c99f9a9e qtserialbus-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtserialbus-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 ce91402e9781ef6ff37e313ce504b7f6fecb74e83d57d640fcbf82f1133fcbc4 qtserialbus-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtserialbus-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 0650a17950f140130ec20520b06592618850cc5673a815cb4fd585590d922257 qtserialbus-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 diff --git a/buildroot/package/qt5/qt5serialbus/qt5serialbus.mk b/buildroot/package/qt5/qt5serialbus/qt5serialbus.mk index 218aba4e0ae..c9a2139556b 100644 --- a/buildroot/package/qt5/qt5serialbus/qt5serialbus.mk +++ b/buildroot/package/qt5/qt5serialbus/qt5serialbus.mk @@ -6,7 +6,7 @@ QT5SERIALBUS_VERSION = $(QT5_VERSION) QT5SERIALBUS_SITE = $(QT5_SITE) -QT5SERIALBUS_SOURCE = qtserialbus-opensource-src-$(QT5SERIALBUS_VERSION).tar.xz +QT5SERIALBUS_SOURCE = qtserialbus-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5SERIALBUS_VERSION).tar.xz QT5SERIALBUS_DEPENDENCIES = qt5base qt5serialport QT5SERIALBUS_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5serialport/qt5serialport.hash b/buildroot/package/qt5/qt5serialport/qt5serialport.hash index 04122ef8043..d73056cec76 100644 --- a/buildroot/package/qt5/qt5serialport/qt5serialport.hash +++ b/buildroot/package/qt5/qt5serialport/qt5serialport.hash @@ -1,13 +1,16 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtserialport-opensource-src-5.6.3.tar.xz.mirrorlist sha256 082d1fee2703aed19f840c4e4031e37c9b929e5bd8ebef2ebac4b28c509bae1a qtserialport-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtserialport-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 0c3d8e2908743c167113ce27be7b685e6f5c827c108107411d0c4c8b2f2b519c qtserialport-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtserialport-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 08e4cb13bbf165eb99857301f3cffe280a4946ff58a34ccc542ad1f790194a9e qtserialport-everywhere-src-5.10.1.tar.xz # Hashes for license files: +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 sha256 e1251235ce9853eecfecfa905da9ee29e9b76e4db2a1c9c4a20699f460419b08 LICENSE.FDL sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 diff --git a/buildroot/package/qt5/qt5serialport/qt5serialport.mk b/buildroot/package/qt5/qt5serialport/qt5serialport.mk index 479870b16eb..1cddaf857ee 100644 --- a/buildroot/package/qt5/qt5serialport/qt5serialport.mk +++ b/buildroot/package/qt5/qt5serialport/qt5serialport.mk @@ -6,13 +6,13 @@ QT5SERIALPORT_VERSION = $(QT5_VERSION) QT5SERIALPORT_SITE = $(QT5_SITE) -QT5SERIALPORT_SOURCE = qtserialport-opensource-src-$(QT5SERIALPORT_VERSION).tar.xz +QT5SERIALPORT_SOURCE = qtserialport-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5SERIALPORT_VERSION).tar.xz QT5SERIALPORT_DEPENDENCIES = qt5base QT5SERIALPORT_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) QT5SERIALPORT_LICENSE = GPL-2.0+ or LGPL-3.0, GPL-3.0 with exception(tools), GFDL-1.3 (docs) -QT5SERIALPORT_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +QT5SERIALPORT_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL else QT5SERIALPORT_LICENSE = GPL-2.0 or GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) QT5SERIALPORT_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL diff --git a/buildroot/package/qt5/qt5svg/qt5svg.hash b/buildroot/package/qt5/qt5svg/qt5svg.hash index a94082c4bfb..3a10080e299 100644 --- a/buildroot/package/qt5/qt5svg/qt5svg.hash +++ b/buildroot/package/qt5/qt5svg/qt5svg.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtsvg-opensource-src-5.6.3.tar.xz.mirrorlist sha256 100f183517b46554079beabd8d2cabe3070a74dd0a2e64b6a304eac71cfadcec qtsvg-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtsvg-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 a2f22732bfd4f0f0204443daaa59448298ab5018750dce4600d01d969355037a qtsvg-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtsvg-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 00e00c04abcc8363cf7d94ca8b16af61840995a4af23685d49fa4ccafa1c7f5a qtsvg-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 diff --git a/buildroot/package/qt5/qt5svg/qt5svg.mk b/buildroot/package/qt5/qt5svg/qt5svg.mk index 5a12755f94f..168c4c063f0 100644 --- a/buildroot/package/qt5/qt5svg/qt5svg.mk +++ b/buildroot/package/qt5/qt5svg/qt5svg.mk @@ -6,7 +6,7 @@ QT5SVG_VERSION = $(QT5_VERSION) QT5SVG_SITE = $(QT5_SITE) -QT5SVG_SOURCE = qtsvg-opensource-src-$(QT5SVG_VERSION).tar.xz +QT5SVG_SOURCE = qtsvg-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5SVG_VERSION).tar.xz QT5SVG_DEPENDENCIES = qt5base QT5SVG_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5tools/qt5tools.hash b/buildroot/package/qt5/qt5tools/qt5tools.hash index 40176e6aee9..83e6ef41be8 100644 --- a/buildroot/package/qt5/qt5tools/qt5tools.hash +++ b/buildroot/package/qt5/qt5tools/qt5tools.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qttools-opensource-src-5.6.3.tar.xz.mirrorlist sha256 1a63ba838058d73cb540040589b235ded77f76402693decfd6d4d3c75ea67926 qttools-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qttools-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 95aa5782d5a79be22fba36cea4dc2319cf2a2060a3cc1e24e6585b8d98996e87 qttools-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qttools-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 f1ea441e5fe138756e6de3b60ab7d8d3051799eabe85a9408c995dfd4d048a53 qttools-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 diff --git a/buildroot/package/qt5/qt5tools/qt5tools.mk b/buildroot/package/qt5/qt5tools/qt5tools.mk index cf181e576be..a972756d3ac 100644 --- a/buildroot/package/qt5/qt5tools/qt5tools.mk +++ b/buildroot/package/qt5/qt5tools/qt5tools.mk @@ -6,7 +6,7 @@ QT5TOOLS_VERSION = $(QT5_VERSION) QT5TOOLS_SITE = $(QT5_SITE) -QT5TOOLS_SOURCE = qttools-opensource-src-$(QT5TOOLS_VERSION).tar.xz +QT5TOOLS_SOURCE = qttools-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5TOOLS_VERSION).tar.xz QT5TOOLS_DEPENDENCIES = qt5base QT5TOOLS_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.hash b/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.hash index 81c81edff11..44ef1f230f8 100644 --- a/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.hash +++ b/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.hash @@ -1,5 +1,5 @@ -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtvirtualkeyboard-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 bf742a886054f12a73621952879cf7a2182304c498bc31ec8a61ef376b07e1ee qtvirtualkeyboard-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtvirtualkeyboard-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 4319f90e68a571974d03f39507dde548971412e31f971081ca7eaf388187d52e qtvirtualkeyboard-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 diff --git a/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk b/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk index 7d2201b55dd..bd943b08ac5 100644 --- a/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk +++ b/buildroot/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk @@ -6,7 +6,7 @@ QT5VIRTUALKEYBOARD_VERSION = $(QT5_VERSION) QT5VIRTUALKEYBOARD_SITE = $(QT5_SITE) -QT5VIRTUALKEYBOARD_SOURCE = qtvirtualkeyboard-opensource-src-$(QT5VIRTUALKEYBOARD_VERSION).tar.xz +QT5VIRTUALKEYBOARD_SOURCE = qtvirtualkeyboard-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5VIRTUALKEYBOARD_VERSION).tar.xz QT5VIRTUALKEYBOARD_DEPENDENCIES = qt5base qt5declarative qt5svg QT5VIRTUALKEYBOARD_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5wayland/5.10.1/0001-Fix-compilation-for-Renesas-R-Car-M3.patch b/buildroot/package/qt5/qt5wayland/5.10.1/0001-Fix-compilation-for-Renesas-R-Car-M3.patch new file mode 100644 index 00000000000..df09d4f3822 --- /dev/null +++ b/buildroot/package/qt5/qt5wayland/5.10.1/0001-Fix-compilation-for-Renesas-R-Car-M3.patch @@ -0,0 +1,44 @@ +From 1619f8bcdd1680c9557996b4977580090a749037 Mon Sep 17 00:00:00 2001 +From: Johan Klokkhammer Helsing +Date: Thu, 9 Feb 2017 12:53:56 +0100 +Subject: [PATCH] Fix compilation for Renesas R-Car M3 + +Change-Id: Ib85001884bb880a18d8aa1241da0eb614a6b58ba +Reviewed-by: Paul Olav Tvete + +Upstream: http://code.qt.io/cgit/qt/qtwayland.git/patch/?id=8b204b2c56be5e7c1fd21144ae140c9b865dd86b +Signed-off-by: Peter Seiderer +--- + .../client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp | 2 +- + .../compositor/xcomposite-egl/xcompositeeglintegration.cpp | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp b/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp +index 431cb14..9c3dee3 100644 +--- a/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp ++++ b/src/hardwareintegration/client/xcomposite-egl/qwaylandxcompositeeglwindow.cpp +@@ -121,7 +121,7 @@ void QWaylandXCompositeEGLWindow::createEglSurface() + XCompositeRedirectWindow(m_glxIntegration->xDisplay(), m_xWindow, CompositeRedirectManual); + XMapWindow(m_glxIntegration->xDisplay(), m_xWindow); + +- m_surface = eglCreateWindowSurface(m_glxIntegration->eglDisplay(), m_config, m_xWindow,0); ++ m_surface = eglCreateWindowSurface(m_glxIntegration->eglDisplay(), m_config, reinterpret_cast(m_xWindow), nullptr); + if (m_surface == EGL_NO_SURFACE) { + qFatal("Could not make eglsurface"); + } +diff --git a/src/hardwareintegration/compositor/xcomposite-egl/xcompositeeglintegration.cpp b/src/hardwareintegration/compositor/xcomposite-egl/xcompositeeglintegration.cpp +index 3cc0ba0..071b088 100644 +--- a/src/hardwareintegration/compositor/xcomposite-egl/xcompositeeglintegration.cpp ++++ b/src/hardwareintegration/compositor/xcomposite-egl/xcompositeeglintegration.cpp +@@ -129,7 +129,7 @@ QOpenGLTexture *XCompositeEglClientBuffer::toOpenGlTexture(int plane) + attribList.append(EGL_TEXTURE_2D); + attribList.append(EGL_NONE); + +- EGLSurface surface = eglCreatePixmapSurface(m_integration->eglDisplay(),config,pixmap,attribList.constData()); ++ EGLSurface surface = eglCreatePixmapSurface(m_integration->eglDisplay(), config, reinterpret_cast(pixmap), attribList.constData()); + if (surface == EGL_NO_SURFACE) { + qDebug() << "Failed to create eglsurface" << pixmap << compositorBuffer->window(); + } +-- +2.16.3 + diff --git a/buildroot/package/qt5/qt5wayland/qt5wayland.hash b/buildroot/package/qt5/qt5wayland/qt5wayland.hash index 86dc65179fd..b28677ad297 100644 --- a/buildroot/package/qt5/qt5wayland/qt5wayland.hash +++ b/buildroot/package/qt5/qt5wayland/qt5wayland.hash @@ -1,8 +1,8 @@ # hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtwayland-opensource-src-5.6.3.tar.xz.mirrorlist sha256 5a475278b2db73aa7fa7f3ba6d98d8d72774f5c77e172495007d79f91d09daa3 qtwayland-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtwayland-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 3f7496522013e6122bb8dc00d0c3cc7753a44dca94fa3b22096eaa21e6099874 qtwayland-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtwayland-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 f5a7643a5ebcdc50d02b293191e675f387f67dc360c27bf6f94345372fba6356 qtwayland-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 diff --git a/buildroot/package/qt5/qt5wayland/qt5wayland.mk b/buildroot/package/qt5/qt5wayland/qt5wayland.mk index 8a7f2e1fb59..d018cccd6db 100644 --- a/buildroot/package/qt5/qt5wayland/qt5wayland.mk +++ b/buildroot/package/qt5/qt5wayland/qt5wayland.mk @@ -6,7 +6,7 @@ QT5WAYLAND_VERSION = $(QT5_VERSION) QT5WAYLAND_SITE = $(QT5_SITE) -QT5WAYLAND_SOURCE = qtwayland-opensource-src-$(QT5WAYLAND_VERSION).tar.xz +QT5WAYLAND_SOURCE = qtwayland-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5WAYLAND_VERSION).tar.xz QT5WAYLAND_DEPENDENCIES = qt5base qt5declarative wayland QT5WAYLAND_INSTALL_STAGING = YES @@ -26,13 +26,6 @@ ifeq ($(BR2_PACKAGE_QT5WAYLAND_COMPOSITOR),y) QT5WAYLAND_QMAKEFLAGS += CONFIG+=wayland-compositor endif -# The mesa's EGL/eglplatform.h header includes X11 headers unless the flag -# MESA_EGL_NO_X11_HEADERS is defined. Tell to not include X11 headers if -# the libxcb is not selected. -ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL)x$(BR2_PACKAGE_LIBXCB),yx) -QT5WAYLAND_QMAKEFLAGS += QMAKE_CXXFLAGS+=-DMESA_EGL_NO_X11_HEADERS -endif - define QT5WAYLAND_CONFIGURE_CMDS (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/bin/qmake $(QT5WAYLAND_QMAKEFLAGS)) endef diff --git a/buildroot/package/qt5/qt5webchannel/qt5webchannel.hash b/buildroot/package/qt5/qt5webchannel/qt5webchannel.hash index f1b69438d80..f94942f5775 100644 --- a/buildroot/package/qt5/qt5webchannel/qt5webchannel.hash +++ b/buildroot/package/qt5/qt5webchannel/qt5webchannel.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtwebchannel-opensource-src-5.6.3.tar.xz.mirrorlist sha256 8eb1b0ac2286653c7932758c21e7760788a5d7cfd6162da09afa926d5be50713 qtwebchannel-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtwebchannel-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 90303a72da63f250b6d6731b74827b0a1764904aac790a7264a3f65c94039aa9 qtwebchannel-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtwebchannel-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 c22c449fecb052597d12f8dd59498db39767037f9098123f3defc04eb20a3764 qtwebchannel-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 diff --git a/buildroot/package/qt5/qt5webchannel/qt5webchannel.mk b/buildroot/package/qt5/qt5webchannel/qt5webchannel.mk index d46e053a53b..f1c08532c01 100644 --- a/buildroot/package/qt5/qt5webchannel/qt5webchannel.mk +++ b/buildroot/package/qt5/qt5webchannel/qt5webchannel.mk @@ -6,7 +6,7 @@ QT5WEBCHANNEL_VERSION = $(QT5_VERSION) QT5WEBCHANNEL_SITE = $(QT5_SITE) -QT5WEBCHANNEL_SOURCE = qtwebchannel-opensource-src-$(QT5WEBCHANNEL_VERSION).tar.xz +QT5WEBCHANNEL_SOURCE = qtwebchannel-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5WEBCHANNEL_VERSION).tar.xz QT5WEBCHANNEL_DEPENDENCIES = qt5base qt5websockets QT5WEBCHANNEL_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5webengine/Config.in b/buildroot/package/qt5/qt5webengine/Config.in index 7c99255061d..38486c6dcf7 100644 --- a/buildroot/package/qt5/qt5webengine/Config.in +++ b/buildroot/package/qt5/qt5webengine/Config.in @@ -20,12 +20,18 @@ 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 +comment "qt5webengine needs a toolchain not affected by GCC bug 85862" + depends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS + depends on !BR2_PACKAGE_QT5_VERSION_5_6 + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_85862 # libnss + 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_8 # qt5base-icu depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # qt5base-icu + depends on BR2_TOOLCHAIN_HAS_GCC_BUG_85862 || BR2_PACKAGE_QT5_VERSION_5_6 # libnss 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 @@ -38,6 +44,7 @@ config BR2_PACKAGE_QT5WEBENGINE select BR2_HOSTARCH_NEEDS_IA32_COMPILER if !BR2_ARCH_IS_64 # v8/chromium select BR2_PACKAGE_FFMPEG select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBNSS if !BR2_PACKAGE_QT5_VERSION_5_6 select BR2_PACKAGE_LIBVPX select BR2_PACKAGE_OPUS select BR2_PACKAGE_WEBP diff --git a/buildroot/package/qt5/qt5webengine/host-pkg-config.in b/buildroot/package/qt5/qt5webengine/host-pkg-config.in new file mode 100644 index 00000000000..86a980648b4 --- /dev/null +++ b/buildroot/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/buildroot/package/qt5/qt5webengine/qt5webengine.hash b/buildroot/package/qt5/qt5webengine/qt5webengine.hash index 9195c7f3b64..3b544358223 100644 --- a/buildroot/package/qt5/qt5webengine/qt5webengine.hash +++ b/buildroot/package/qt5/qt5webengine/qt5webengine.hash @@ -1,5 +1,5 @@ # Hash from https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtwebengine-opensource-src-5.6.3.tar.xz.mirrorlist sha256 009d69fb39f6c0e2b0cd89a7e9302cd0ae1872d02c787d3a37f2cacca5ddb7a7 qtwebengine-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtwebengine-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 04b4305489b326bbbfe32b5f1da4a33ae034e54130776e3616b9e6d45a5a8271 qtwebengine-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtwebengine-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 12644f8d2ba8354a2a533d5a7f3f5139c6ff168c2f51aa3e21b701db6dbc01de qtwebengine-everywhere-src-5.10.1.tar.xz diff --git a/buildroot/package/qt5/qt5webengine/qt5webengine.mk b/buildroot/package/qt5/qt5webengine/qt5webengine.mk index 4d423f8329b..e527e6bc360 100644 --- a/buildroot/package/qt5/qt5webengine/qt5webengine.mk +++ b/buildroot/package/qt5/qt5webengine/qt5webengine.mk @@ -6,7 +6,7 @@ QT5WEBENGINE_VERSION = $(QT5_VERSION) QT5WEBENGINE_SITE = $(QT5_SITE) -QT5WEBENGINE_SOURCE = qtwebengine-opensource-src-$(QT5WEBENGINE_VERSION).tar.xz +QT5WEBENGINE_SOURCE = qtwebengine-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5WEBENGINE_VERSION).tar.xz QT5WEBENGINE_DEPENDENCIES = ffmpeg libglib2 libvpx opus webp qt5base \ qt5declarative qt5webchannel host-bison host-flex host-gperf \ host-pkgconf host-python @@ -22,6 +22,10 @@ QT5WEBENGINE_DEPENDENCIES += xlib_libXScrnSaver xlib_libXcomposite \ xlib_libXcursor xlib_libXi xlib_libXrandr xlib_libXtst endif +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +QT5WEBENGINE_DEPENDENCIES += host-libpng host-libnss libnss +endif + QT5WEBENGINE_QMAKEFLAGS += WEBENGINE_CONFIG+=use_system_ffmpeg ifeq ($(BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS),y) @@ -44,6 +48,15 @@ define QT5WEBENGINE_PYTHON2_SYMLINK endef QT5WEBENGINE_PRE_CONFIGURE_HOOKS += QT5WEBENGINE_PYTHON2_SYMLINK +ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) +define QT5WEBENGINE_CREATE_HOST_PKG_CONFIG + 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 +endif + define QT5WEBENGINE_CONFIGURE_CMDS (cd $(@D); $(TARGET_MAKE_ENV) $(QT5WEBENGINE_ENV) $(HOST_DIR)/bin/qmake $(QT5WEBENGINE_QMAKEFLAGS)) endef diff --git a/buildroot/package/qt5/qt5webkit-examples/qt5webkit-examples.mk b/buildroot/package/qt5/qt5webkit-examples/qt5webkit-examples.mk index 4c01d8318a0..94153fd652e 100644 --- a/buildroot/package/qt5/qt5webkit-examples/qt5webkit-examples.mk +++ b/buildroot/package/qt5/qt5webkit-examples/qt5webkit-examples.mk @@ -4,7 +4,7 @@ # ################################################################################ -# no 5.9.2 package available, fall back to 5.9.1 version +# no 5.10 package available, fall back to 5.9.1 version ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) QT5WEBKIT_EXAMPLES_VERSION = 5.9.1 QT5WEBKIT_EXAMPLES_SITE = https://download.qt.io/official_releases/qt/5.9/5.9.1/submodules diff --git a/buildroot/package/qt5/qt5webkit/5.6.3/0005-Detect-32-bits-armv8-a-architecture.patch b/buildroot/package/qt5/qt5webkit/5.6.3/0005-Detect-32-bits-armv8-a-architecture.patch new file mode 100644 index 00000000000..9c2205dd94c --- /dev/null +++ b/buildroot/package/qt5/qt5webkit/5.6.3/0005-Detect-32-bits-armv8-a-architecture.patch @@ -0,0 +1,48 @@ +From 068bf2d2d91382ea0d8ec24a142a30ea429704db Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= +Date: Tue, 15 Aug 2017 18:28:49 -0400 +Subject: [PATCH] Detect 32-bits armv8-a architecture +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +Adds WTF platform support for the 32-bits armv8-a architectures. + +Theses 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. + +Fixes: + + In file included from ./config.h:30:0, + from ... + ./wtf/Platform.h:323:6: error: #error "Not supported ARM architecture" + # error "Not supported ARM architecture" + ^~~~~ + +Upstream-Status: Backport [with adaptations] +Signed-off-by: Gaテォl PORTAY +--- + Source/WTF/wtf/Platform.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h +index 562840cf7..9cf656845 100644 +--- a/Source/WTF/wtf/Platform.h ++++ b/Source/WTF/wtf/Platform.h +@@ -243,6 +243,10 @@ + || defined(__ARM_ARCH_7S__) + #define WTF_ARM_ARCH_VERSION 7 + ++#elif defined(__ARM_ARCH_8__) \ ++ || defined(__ARM_ARCH_8A__) ++#define WTF_ARM_ARCH_VERSION 8 ++ + /* MSVC sets _M_ARM */ + #elif defined(_M_ARM) + #define WTF_ARM_ARCH_VERSION _M_ARM +-- +2.16.1 + diff --git a/buildroot/package/qt5/qt5webkit/5.9.1/0003-Detect-32-bits-armv8-a-architecture.patch b/buildroot/package/qt5/qt5webkit/5.9.1/0003-Detect-32-bits-armv8-a-architecture.patch new file mode 100644 index 00000000000..9c2205dd94c --- /dev/null +++ b/buildroot/package/qt5/qt5webkit/5.9.1/0003-Detect-32-bits-armv8-a-architecture.patch @@ -0,0 +1,48 @@ +From 068bf2d2d91382ea0d8ec24a142a30ea429704db Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?Ga=C3=ABl=20PORTAY?= +Date: Tue, 15 Aug 2017 18:28:49 -0400 +Subject: [PATCH] Detect 32-bits armv8-a architecture +MIME-Version: 1.0 +Content-Type: text/plain; charset=utf-8 +Content-Transfer-Encoding: 8bit + +Adds WTF platform support for the 32-bits armv8-a architectures. + +Theses 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. + +Fixes: + + In file included from ./config.h:30:0, + from ... + ./wtf/Platform.h:323:6: error: #error "Not supported ARM architecture" + # error "Not supported ARM architecture" + ^~~~~ + +Upstream-Status: Backport [with adaptations] +Signed-off-by: Gaテォl PORTAY +--- + Source/WTF/wtf/Platform.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h +index 562840cf7..9cf656845 100644 +--- a/Source/WTF/wtf/Platform.h ++++ b/Source/WTF/wtf/Platform.h +@@ -243,6 +243,10 @@ + || defined(__ARM_ARCH_7S__) + #define WTF_ARM_ARCH_VERSION 7 + ++#elif defined(__ARM_ARCH_8__) \ ++ || defined(__ARM_ARCH_8A__) ++#define WTF_ARM_ARCH_VERSION 8 ++ + /* MSVC sets _M_ARM */ + #elif defined(_M_ARM) + #define WTF_ARM_ARCH_VERSION _M_ARM +-- +2.16.1 + diff --git a/buildroot/package/qt5/qt5webkit/qt5webkit.mk b/buildroot/package/qt5/qt5webkit/qt5webkit.mk index 51866716630..e8d368fb01b 100644 --- a/buildroot/package/qt5/qt5webkit/qt5webkit.mk +++ b/buildroot/package/qt5/qt5webkit/qt5webkit.mk @@ -44,15 +44,8 @@ define QT5WEBKIT_PYTHON2_SYMLINK endef QT5WEBKIT_PRE_CONFIGURE_HOOKS += QT5WEBKIT_PYTHON2_SYMLINK -# The mesa's EGL/eglplatform.h header includes X11 headers unless the flag -# MESA_EGL_NO_X11_HEADERS is defined. Tell to not include X11 headers if -# the libxcb is not selected. -ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL)x$(BR2_PACKAGE_LIBXCB),yx) -QT5WEBKIT_QMAKEFLAGS += QMAKE_CXXFLAGS+=-DMESA_EGL_NO_X11_HEADERS -endif - define QT5WEBKIT_CONFIGURE_CMDS - (cd $(@D); $(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(HOST_DIR)/bin/qmake $(QT5WEBKIT_QMAKEFLAGS)) + (cd $(@D); $(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(HOST_DIR)/bin/qmake) endef define QT5WEBKIT_BUILD_CMDS diff --git a/buildroot/package/qt5/qt5websockets/qt5websockets.hash b/buildroot/package/qt5/qt5websockets/qt5websockets.hash index 368be9b4976..34cd6e6ce1d 100644 --- a/buildroot/package/qt5/qt5websockets/qt5websockets.hash +++ b/buildroot/package/qt5/qt5websockets/qt5websockets.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtwebsockets-opensource-src-5.6.3.tar.xz.mirrorlist sha256 a2439045616c89dfe06333734ff4726075c92e01db6e6b6863bc138e39c028eb qtwebsockets-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtwebsockets-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 72970209f0d4260d11688d3d38d9e953d7fa4309a8a55e2c32726a545333e800 qtwebsockets-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtwebsockets-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 6ecf790955ffe42dce731e10557f4ba625e359e867953d73f7fb453c0bad53ea qtwebsockets-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 diff --git a/buildroot/package/qt5/qt5websockets/qt5websockets.mk b/buildroot/package/qt5/qt5websockets/qt5websockets.mk index 4cb2aed1dbf..c67db198db9 100644 --- a/buildroot/package/qt5/qt5websockets/qt5websockets.mk +++ b/buildroot/package/qt5/qt5websockets/qt5websockets.mk @@ -6,7 +6,7 @@ QT5WEBSOCKETS_VERSION = $(QT5_VERSION) QT5WEBSOCKETS_SITE = $(QT5_SITE) -QT5WEBSOCKETS_SOURCE = qtwebsockets-opensource-src-$(QT5WEBSOCKETS_VERSION).tar.xz +QT5WEBSOCKETS_SOURCE = qtwebsockets-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5WEBSOCKETS_VERSION).tar.xz QT5WEBSOCKETS_DEPENDENCIES = qt5base QT5WEBSOCKETS_INSTALL_STAGING = YES @@ -41,6 +41,7 @@ endef ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y) define QT5WEBSOCKETS_INSTALL_TARGET_QMLS cp -dpfr $(STAGING_DIR)/usr/qml/Qt/WebSockets $(TARGET_DIR)/usr/qml/Qt/ + cp -dpfr $(STAGING_DIR)/usr/qml/QtWebSockets $(TARGET_DIR)/usr/qml/ endef endif diff --git a/buildroot/package/qt5/qt5x11extras/qt5x11extras.hash b/buildroot/package/qt5/qt5x11extras/qt5x11extras.hash index 943577bbd6e..173e9e6b573 100644 --- a/buildroot/package/qt5/qt5x11extras/qt5x11extras.hash +++ b/buildroot/package/qt5/qt5x11extras/qt5x11extras.hash @@ -1,8 +1,8 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtx11extras-opensource-src-5.6.3.tar.xz.mirrorlist sha256 1e7a8e96e0629f2b2b78de684b156b357210cf5df6b42f30789423f2cb07677f qtx11extras-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtx11extras-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 879b18c44550e1be86c29adcca555c92915aab9222c40384beae2f7aa22b22a8 qtx11extras-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtx11extras-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 c38a371fd50b2da976ed809230678284f029cefb02d240253dcbb3d575dc97b4 qtx11extras-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 edfe70e99be2a7c109d860b19204609e582720b211c50caedac729da372a1253 LICENSE.GPLv2 diff --git a/buildroot/package/qt5/qt5x11extras/qt5x11extras.mk b/buildroot/package/qt5/qt5x11extras/qt5x11extras.mk index 0905d5f7388..c439e2d31d0 100644 --- a/buildroot/package/qt5/qt5x11extras/qt5x11extras.mk +++ b/buildroot/package/qt5/qt5x11extras/qt5x11extras.mk @@ -6,7 +6,7 @@ QT5X11EXTRAS_VERSION = $(QT5_VERSION) QT5X11EXTRAS_SITE = $(QT5_SITE) -QT5X11EXTRAS_SOURCE = qtx11extras-opensource-src-$(QT5X11EXTRAS_VERSION).tar.xz +QT5X11EXTRAS_SOURCE = qtx11extras-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5X11EXTRAS_VERSION).tar.xz QT5X11EXTRAS_DEPENDENCIES = qt5base QT5X11EXTRAS_INSTALL_STAGING = YES diff --git a/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash b/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash index 9c68eae1d81..0aa062c13ad 100644 --- a/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash +++ b/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash @@ -1,13 +1,15 @@ # Hash from: https://download.qt.io/official_releases/qt/5.6/5.6.3/submodules/qtxmlpatterns-opensource-src-5.6.3.tar.xz.mirrorlist sha256 a461ff9f0d7310de9b9904ff9cd34919e958bf4071a6fc7096450b8990ab51f6 qtxmlpatterns-opensource-src-5.6.3.tar.xz -# Hash from: https://download.qt.io/official_releases/qt/5.9/5.9.4/submodules/qtxmlpatterns-opensource-src-5.9.4.tar.xz.mirrorlist -sha256 faf51ad39e5c2b856b38989c79d69253ad74d4b8d3278d4aaa79d3c547047f79 qtxmlpatterns-opensource-src-5.9.4.tar.xz +# Hash from: https://download.qt.io/official_releases/qt/5.10/5.10.1/submodules/qtxmlpatterns-everywhere-src-5.10.1.tar.xz.mirrorlist +sha256 3cdef59ce96a796606e5adc5756c63c8607fb29b281fddb38acee3e674d5e9fe qtxmlpatterns-everywhere-src-5.10.1.tar.xz # Hashes for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE.GPL2 +sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE.GPL3 sha256 245248009fd0af1725d183248380e476c1283383909358a13686606352bf2a17 LICENSE.GPLv3 sha256 0dbe024961f6ab5c52689cbd036c977975d0d0f6a67ff97762d96cb819dd5652 LICENSE.GPL3-EXCEPT +sha256 da7eabb7bafdf7d3ae5e9f223aa5bdc1eece45ac569dc21b3b037520b4464768 LICENSE.LGPL3 sha256 5ceb37d1c7c1d92878b82af3c0fd5558087f3d5a08a3a4d43850bad4ad265a52 LICENSE.LGPLv3 sha256 ed8742a95cb9db653a09b050e27ccff5e67ba69c14aa2c3137f2a4e1892f6c0d LICENSE.FDL sha256 1996a36160b2158c2be264d2ddfa6148ebe0f1ececff55aca8d754a1ddcc7bb8 LICENSE.LGPLv21 diff --git a/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk b/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk index 65fd9bd345c..0a8b47ac534 100644 --- a/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk +++ b/buildroot/package/qt5/qt5xmlpatterns/qt5xmlpatterns.mk @@ -6,13 +6,13 @@ QT5XMLPATTERNS_VERSION = $(QT5_VERSION) QT5XMLPATTERNS_SITE = $(QT5_SITE) -QT5XMLPATTERNS_SOURCE = qtxmlpatterns-opensource-src-$(QT5XMLPATTERNS_VERSION).tar.xz +QT5XMLPATTERNS_SOURCE = qtxmlpatterns-$(QT5_SOURCE_TARBALL_PREFIX)-$(QT5XMLPATTERNS_VERSION).tar.xz QT5XMLPATTERNS_DEPENDENCIES = qt5base QT5XMLPATTERNS_INSTALL_STAGING = YES ifeq ($(BR2_PACKAGE_QT5_VERSION_LATEST),y) 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.GPLv3 LICENSE.GPL3-EXCEPT LICENSE.LGPLv3 LICENSE.FDL +QT5XMLPATTERNS_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT LICENSE.LGPL3 LICENSE.FDL else QT5XMLPATTERNS_LICENSE = GPL-3.0 or LGPL-2.1 with exception or LGPL-3.0, GFDL-1.3 (docs) QT5XMLPATTERNS_LICENSE_FILES = LICENSE.GPLv3 LICENSE.LGPLv21 LGPL_EXCEPTION.txt LICENSE.LGPLv3 LICENSE.FDL diff --git a/buildroot/package/qt5cinex/qt5cinex.mk b/buildroot/package/qt5cinex/qt5cinex.mk index d9254f53c5f..89c38ee3f58 100644 --- a/buildroot/package/qt5cinex/qt5cinex.mk +++ b/buildroot/package/qt5cinex/qt5cinex.mk @@ -8,7 +8,7 @@ QT5CINEX_VERSION = 1.0 QT5CINEX_SITE = http://quitcoding.com/download ifeq ($(BR2_PACKAGE_QT5CINEX_HD),y) -QT5CINEX_HD = "rpi_" +QT5CINEX_HD = rpi_ endif QT5CINEX_SOURCE = Qt5_CinematicExperience_$(QT5CINEX_HD)$(QT5CINEX_VERSION).tgz diff --git a/buildroot/package/quotatool/0001-fix-missing-__P-definition-for-musl-compile.patch b/buildroot/package/quotatool/0001-fix-missing-__P-definition-for-musl-compile.patch new file mode 100644 index 00000000000..927e62ba8cf --- /dev/null +++ b/buildroot/package/quotatool/0001-fix-missing-__P-definition-for-musl-compile.patch @@ -0,0 +1,36 @@ +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 窶=窶, 窶,窶, 窶;窶, 窶和sm窶 or 窶論_attribute__窶 before 窶論_P窶 + long quotactl __P((int, const char *, qid_t, caddr_t)); + ^~~ + +Signed-off-by: Peter Seiderer +--- + 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/buildroot/package/quotatool/Config.in b/buildroot/package/quotatool/Config.in new file mode 100644 index 00000000000..4015cef6c8e --- /dev/null +++ b/buildroot/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/buildroot/package/quotatool/quotatool.hash b/buildroot/package/quotatool/quotatool.hash new file mode 100644 index 00000000000..45b477830e0 --- /dev/null +++ b/buildroot/package/quotatool/quotatool.hash @@ -0,0 +1,5 @@ +# Locally computed +sha256 e53adc480d54ae873d160dc0e88d78095f95d9131e528749fd982245513ea090 quotatool-1.6.2.tar.gz + +# Hash for license files: +sha256 94686eeb98a40edc64106c6f8644068d8a08816a510a3cde75e50f1bf470564d COPYING diff --git a/buildroot/package/quotatool/quotatool.mk b/buildroot/package/quotatool/quotatool.mk new file mode 100644 index 00000000000..7b63c01316c --- /dev/null +++ b/buildroot/package/quotatool/quotatool.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# quotatool +# +################################################################################ + +QUOTATOOL_VERSION = 1.6.2 +QUOTATOOL_SITE = http://quotatool.ekenberg.se +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/buildroot/package/rapidjson/rapidjson.hash b/buildroot/package/rapidjson/rapidjson.hash index bde8319cd81..a4b02cffb92 100644 --- a/buildroot/package/rapidjson/rapidjson.hash +++ b/buildroot/package/rapidjson/rapidjson.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 bf7ced29704a1e696fbccf2a2b4ea068e7774fa37f6d7dd4039d0787f8bed98e rapidjson-v1.1.0.tar.gz +sha256 a140e5d46fe734a1c78f1a3c3ef207871dd75648be71fdda8e309b23ab8b1f32 license.txt diff --git a/buildroot/package/rapidxml/rapidxml.mk b/buildroot/package/rapidxml/rapidxml.mk index 2bec8fe1f21..9d034d82059 100644 --- a/buildroot/package/rapidxml/rapidxml.mk +++ b/buildroot/package/rapidxml/rapidxml.mk @@ -15,7 +15,7 @@ RAPIDXML_INSTALL_TARGET = NO RAPIDXML_INSTALL_STAGING = YES define RAPIDXML_EXTRACT_CMDS - $(UNZIP) -d $(@D) $(DL_DIR)/$(RAPIDXML_SOURCE) + $(UNZIP) -d $(@D) $(RAPIDXML_DL_DIR)/$(RAPIDXML_SOURCE) mv $(@D)/rapidxml-$(RAPIDXML_VERSION)/* $(@D)/ rmdir $(@D)/rapidxml-$(RAPIDXML_VERSION) endef diff --git a/buildroot/package/rauc/0001-emmc-add-workaround-for-older-kernels.patch b/buildroot/package/rauc/0001-emmc-add-workaround-for-older-kernels.patch new file mode 100644 index 00000000000..23c9484e617 --- /dev/null +++ b/buildroot/package/rauc/0001-emmc-add-workaround-for-older-kernels.patch @@ -0,0 +1,33 @@ +From 7c67c0ef267d470fcec950d2be49507255f39fc5 Mon Sep 17 00:00:00 2001 +From: "Yann E. MORIN" +Date: Sun, 13 May 2018 14:17:44 +0200 +Subject: [PATCH] emmc: add workaround for older kernels + +Kernels up to (and including 3.3) forgot to include types.h in their +mmc/ioctl.h, and thus __u32 (and others) are not defined, causing +compilation errors: + + http://autobuild.buildroot.org/results/621/621587906bd2bb27c43b6fcbb051d75f20e32e7c/build-end.log + +Fix that by explicitly including types.h before mmc/ioctl.h. + +Signed-off-by: "Yann E. MORIN" +--- + src/emmc.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/emmc.c b/src/emmc.c +index e8b0b05..2ce3373 100644 +--- a/src/emmc.c ++++ b/src/emmc.c +@@ -4,6 +4,7 @@ + #include + #include + #include ++#include /* kernel < 3.4 forgot that in mmc/ioctl.h */ + #include + #include + #include +-- +2.14.1 + diff --git a/buildroot/package/readline/0001-configure.ac-readline.pc.in-fix-Requires.private-val.patch b/buildroot/package/readline/0001-configure.ac-readline.pc.in-fix-Requires.private-val.patch new file mode 100644 index 00000000000..22b479cd91f --- /dev/null +++ b/buildroot/package/readline/0001-configure.ac-readline.pc.in-fix-Requires.private-val.patch @@ -0,0 +1,62 @@ +From 7bbf2046fbcf4416ec226ecb3a2b4c6a5c263298 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 22 Apr 2018 23:06:28 +0200 +Subject: [PATCH] configure.ac, readline.pc.in: fix Requires.private value + +The provided readline.pc.in hardcodes the fact that readline depends +on the tinfo library. However, different termcap implementation are +supported beyond tinfo. This commit improves the configure.ac script +to define a TERMCAP_PKG_CONFIG_LIB variable, which is then used in +readline.pc.in. + +This for example allows the generated readline.pc to properly contain +"Requires.private: ncurses" when ncurses is used as the termcap +implementation. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 8 ++++++++ + readline.pc.in | 2 +- + 2 files changed, 9 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index fd0cec4..9f85f37 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -276,6 +276,13 @@ case "$BUILD_DIR" in + *) ;; + esac + ++case "$TERMCAP_LIB" in ++-ltinfo) TERMCAP_PKG_CONFIG_LIB=tinfo ;; ++-lcurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;; ++-lncurses) TERMCAP_PKG_CONFIG_LIB=ncurses ;; ++-ltermcap) TERMCAP_PKG_CONFIG_LIB=termcap ;; ++esac ++ + AC_SUBST(BUILD_DIR) + + AC_SUBST(CFLAGS) +@@ -292,6 +299,7 @@ AC_SUBST(host_os) + AC_SUBST(LIBVERSION) + + AC_SUBST(TERMCAP_LIB) ++AC_SUBST(TERMCAP_PKG_CONFIG_LIB) + + AC_OUTPUT([Makefile doc/Makefile examples/Makefile shlib/Makefile readline.pc], + [ +diff --git a/readline.pc.in b/readline.pc.in +index fbfca8a..a7f2cf3 100644 +--- a/readline.pc.in ++++ b/readline.pc.in +@@ -7,6 +7,6 @@ Name: Readline + Description: Gnu Readline library for command line editing + URL: http://tiswww.cwru.edu/php/chet/readline/rltop.html + Version: @LIBVERSION@ +-Requires.private: tinfo ++Requires.private: @TERMCAP_PKG_CONFIG_LIB@ + Libs: -L${libdir} -lreadline + Cflags: -I${includedir}/readline +-- +2.14.3 + diff --git a/buildroot/package/readline/readline.mk b/buildroot/package/readline/readline.mk index cc5d4f29201..e00c594697c 100644 --- a/buildroot/package/readline/readline.mk +++ b/buildroot/package/readline/readline.mk @@ -7,18 +7,31 @@ READLINE_VERSION = 7.0 READLINE_SITE = $(BR2_GNU_MIRROR)/readline READLINE_INSTALL_STAGING = YES -READLINE_DEPENDENCIES = ncurses -HOST_READLINE_DEPENDENCIES = host-ncurses +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_LICENSE = GPL-3.0+ READLINE_LICENSE_FILES = COPYING +# readline only uses autoconf, not automake, and therefore the regular +# AUTORECONF = YES doesn't work. +define READLINE_AUTOCONF + cd $(@D); $(HOST_DIR)/bin/autoconf +endef +READLINE_PRE_CONFIGURE_HOOKS += READLINE_AUTOCONF +HOST_READLINE_PRE_CONFIGURE_HOOKS += READLINE_AUTOCONF + define READLINE_PURGE_EXAMPLES rm -rf $(TARGET_DIR)/usr/share/readline endef READLINE_POST_INSTALL_TARGET_HOOKS += READLINE_PURGE_EXAMPLES +define READLINE_INSTALL_PC_FILE + $(INSTALL) -D -m 644 $(@D)/readline.pc $(STAGING_DIR)/usr/lib/pkgconfig/readline.pc +endef +READLINE_POST_INSTALL_STAGING_HOOKS += READLINE_INSTALL_PC_FILE + define READLINE_INSTALL_INPUTRC $(INSTALL) -D -m 644 package/readline/inputrc $(TARGET_DIR)/etc/inputrc endef diff --git a/buildroot/package/reaver/Config.in b/buildroot/package/reaver/Config.in new file mode 100644 index 00000000000..0fd8ab7c6ed --- /dev/null +++ b/buildroot/package/reaver/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_REAVER + bool "reaver" + 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 diff --git a/buildroot/package/reaver/reaver.hash b/buildroot/package/reaver/reaver.hash new file mode 100644 index 00000000000..6d2baccdce9 --- /dev/null +++ b/buildroot/package/reaver/reaver.hash @@ -0,0 +1,3 @@ +# locally computed +sha256 350a89b068f8b461e6459b739d4f5f301db01f115d75f4d698a1f2830149c412 reaver-9bae55bd30b6d46b42da3a09dc23c8b0f9341996.tar.gz +sha256 bb40cfd5e9ca6e8465ea3c236f3f2293e8300af1bfe87e72fabe482ae6cc995a docs/LICENSE diff --git a/buildroot/package/reaver/reaver.mk b/buildroot/package/reaver/reaver.mk new file mode 100644 index 00000000000..d9a621a8478 --- /dev/null +++ b/buildroot/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 = 9bae55bd30b6d46b42da3a09dc23c8b0f9341996 +REAVER_SITE = $(call github,t6x,reaver-wps-fork-t6x,$(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/buildroot/package/rhash/rhash.hash b/buildroot/package/rhash/rhash.hash index 5efc3a67bd0..9a29b988a63 100644 --- a/buildroot/package/rhash/rhash.hash +++ b/buildroot/package/rhash/rhash.hash @@ -1,3 +1,6 @@ -# From https://sourceforge.net/projects/rhash/files/rhash/1.3.4/ -md5 0b51010604659e9e99f6307b053ba13b rhash-1.3.4-src.tar.gz -sha1 411d8c7ba84fa9763bc49fa2fd3a7587712fd52c rhash-1.3.4-src.tar.gz +# From https://sourceforge.net/projects/rhash/files/rhash/1.3.5/ +md5 f586644019c10c83c6b6835de4b99e74 rhash-1.3.5-src.tar.gz +sha1 990c9a0135afe48dee4ce1dbf83578e44735f302 rhash-1.3.5-src.tar.gz +# Locally calculated +sha256 98e0688acae29e68c298ffbcdbb0f838864105f9b2bd8857980664435b1f1f2e rhash-1.3.5-src.tar.gz +sha256 8cf876d3406a2eed6c17ae804c8958bd78d3a0f63c30d6e2e789ab575e9fde40 COPYING diff --git a/buildroot/package/rhash/rhash.mk b/buildroot/package/rhash/rhash.mk index 53f49d8d3c2..28fffe45288 100644 --- a/buildroot/package/rhash/rhash.mk +++ b/buildroot/package/rhash/rhash.mk @@ -4,7 +4,7 @@ # ################################################################################ -RHASH_VERSION = 1.3.4 +RHASH_VERSION = 1.3.5 RHASH_SOURCE = rhash-$(RHASH_VERSION)-src.tar.gz RHASH_SITE = https://sourceforge.net/projects/rhash/files/rhash/$(RHASH_VERSION) RHASH_LICENSE = MIT diff --git a/buildroot/package/riemann-c-client/riemann-c-client.mk b/buildroot/package/riemann-c-client/riemann-c-client.mk index 09f79009edc..b051145f458 100644 --- a/buildroot/package/riemann-c-client/riemann-c-client.mk +++ b/buildroot/package/riemann-c-client/riemann-c-client.mk @@ -16,9 +16,4 @@ RIEMANN_C_CLIENT_DEPENDENCIES = \ $(if $(BR2_PACKAGE_GNUTLS),gnutls) \ $(if $(BR2_PACKAGE_JSON_C),json-c) -ifeq ($(BR2_bfin),y) -# ld symbol versioning not working on bfin -RIEMANN_C_CLIENT_CONF_ENV += ac_cv_prog_ld_version_script=no -endif - $(eval $(autotools-package)) diff --git a/buildroot/package/rpi-bt-firmware/Config.in b/buildroot/package/rpi-bt-firmware/Config.in index dfc1cee06c6..45643d6a52a 100644 --- a/buildroot/package/rpi-bt-firmware/Config.in +++ b/buildroot/package/rpi-bt-firmware/Config.in @@ -3,6 +3,7 @@ config BR2_PACKAGE_RPI_BT_FIRMWARE depends on BR2_arm || BR2_aarch64 help Raspberry Pi 3 and Zero W Broadcom BCM43438 Bluetooth module - firmware. + firmware. Raspberry Pi 3 Model B+ Broadcom BCM4345C0 + Bluetooth module firmware. - https://aur.archlinux.org/packages/pi-bluetooth + https://github.com/LibreELEC/brcmfmac_sdio-firmware-rpi diff --git a/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.hash b/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.hash index f1d06e8ca83..553a7e4298b 100644 --- a/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.hash +++ b/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.hash @@ -1,2 +1,3 @@ # Locally computed -sha256 5d9c9364277414ffd67b4a266cdf88e92f28eb937e5a413750e87b7a94161bef rpi-bt-firmware-a439f892bf549ddfefa9ba7ad1999cc515f233bf.tar.gz +sha256 beade89c5c072158b6cf18cf741d2695980fd6a4533dab3897bebf90c0631a30 rpi-bt-firmware-18d7c931aff0a8a78360b9b9eaeb15d1224fb907.tar.gz +sha256 b16056fc91b82a0e3e8de8f86c2dac98201aa9dc3cbd33e8d38f1b087fcec30d LICENCE.broadcom_bcm43xx diff --git a/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.mk b/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.mk index 255da192621..bbb40854e8e 100644 --- a/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.mk +++ b/buildroot/package/rpi-bt-firmware/rpi-bt-firmware.mk @@ -4,18 +4,17 @@ # ################################################################################ -RPI_BT_FIRMWARE_VERSION = a439f892bf549ddfefa9ba7ad1999cc515f233bf -RPI_BT_FIRMWARE_SITE = https://aur.archlinux.org/pi-bluetooth.git -RPI_BT_FIRMWARE_SITE_METHOD = git +RPI_BT_FIRMWARE_VERSION = 18d7c931aff0a8a78360b9b9eaeb15d1224fb907 +RPI_BT_FIRMWARE_SITE = $(call github,LibreELEC,brcmfmac_sdio-firmware-rpi,$(RPI_BT_FIRMWARE_VERSION)) RPI_BT_FIRMWARE_LICENSE = PROPRIETARY RPI_BT_FIRMWARE_LICENSE_FILES = LICENCE.broadcom_bcm43xx -# The BlueZ hciattach utility looks for firmware in /etc/firmware. Add a -# compatibility symlink. +RPI_BT_FIRMWARE_FILES = brcm/BCM43430A1.hcd BCM4345C0.hcd + define RPI_BT_FIRMWARE_INSTALL_TARGET_CMDS - ln -sf ../lib/firmware $(TARGET_DIR)/etc/firmware - $(INSTALL) -D -m 0644 $(@D)/BCM43430A1.hcd \ - $(TARGET_DIR)/lib/firmware/BCM43430A1.hcd + $(foreach file,$(RPI_BT_FIRMWARE_FILES),\ + $(INSTALL) -D -m 0644 $(@D)/firmware/$(file) $(TARGET_DIR)/lib/firmware/$(notdir $(file)) + ) endef $(eval $(generic-package)) diff --git a/buildroot/package/rpi-firmware/rpi-firmware.mk b/buildroot/package/rpi-firmware/rpi-firmware.mk index 7c95321e5c9..cb2e9d6cd8f 100644 --- a/buildroot/package/rpi-firmware/rpi-firmware.mk +++ b/buildroot/package/rpi-firmware/rpi-firmware.mk @@ -12,10 +12,9 @@ RPI_FIRMWARE_INSTALL_IMAGES = YES ifeq ($(BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS),y) define RPI_FIRMWARE_INSTALL_DTB - $(INSTALL) -D -m 0644 $(@D)/boot/bcm2708-rpi-b.dtb $(BINARIES_DIR)/rpi-firmware/bcm2708-rpi-b.dtb - $(INSTALL) -D -m 0644 $(@D)/boot/bcm2708-rpi-b-plus.dtb $(BINARIES_DIR)/rpi-firmware/bcm2708-rpi-b-plus.dtb - $(INSTALL) -D -m 0644 $(@D)/boot/bcm2709-rpi-2-b.dtb $(BINARIES_DIR)/rpi-firmware/bcm2709-rpi-2-b.dtb - $(INSTALL) -D -m 0644 $(@D)/boot/bcm2710-rpi-3-b.dtb $(BINARIES_DIR)/rpi-firmware/bcm2710-rpi-3-b.dtb + $(foreach dtb,$(wildcard $(@D)/boot/*.dtb), \ + $(INSTALL) -D -m 0644 $(dtb) $(BINARIES_DIR)/rpi-firmware/$(notdir $(dtb)) + ) endef endif diff --git a/buildroot/package/rpi-wifi-firmware/Config.in b/buildroot/package/rpi-wifi-firmware/Config.in index 2c87c758427..7e81b286c0c 100644 --- a/buildroot/package/rpi-wifi-firmware/Config.in +++ b/buildroot/package/rpi-wifi-firmware/Config.in @@ -1,10 +1,13 @@ config BR2_PACKAGE_RPI_WIFI_FIRMWARE bool "rpi-wifi-firmware" depends on BR2_arm || BR2_aarch64 - select BR2_PACKAGE_LINUX_FIRMWARE - select BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX # runtime + depends on !BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX help Raspberry Pi 3 and Zero W Broadcom BCM43430 wifi module - NVRAM data. + NVRAM data. Raspberry Pi 3 Model B+ Broadcom BCM43455 + wifi module NVRAM data. - https://github.com/RPi-Distro/firmware-nonfree/ + https://github.com/LibreELEC/brcmfmac_sdio-firmware-rpi + +comment "rpi-wifi-firmware conflicts with linux-firmware Broadcom BRCM bcm43xx" + depends on BR2_PACKAGE_LINUX_FIRMWARE_BRCM_BCM43XXX diff --git a/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.hash b/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.hash index c20506536f3..bc0d7c8b02c 100644 --- a/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.hash +++ b/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 872fde4f9942d9aba805880d6eaddfe050305626fd58ad955bfe77c04f6b75a5 brcmfmac43430-sdio.txt +sha256 beade89c5c072158b6cf18cf741d2695980fd6a4533dab3897bebf90c0631a30 rpi-wifi-firmware-18d7c931aff0a8a78360b9b9eaeb15d1224fb907.tar.gz +sha256 b16056fc91b82a0e3e8de8f86c2dac98201aa9dc3cbd33e8d38f1b087fcec30d LICENCE.broadcom_bcm43xx diff --git a/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.mk b/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.mk index 6c855a8e149..32dd3e519b5 100644 --- a/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.mk +++ b/buildroot/package/rpi-wifi-firmware/rpi-wifi-firmware.mk @@ -4,20 +4,14 @@ # ################################################################################ -RPI_WIFI_FIRMWARE_VERSION = 54bab3d6a6d43239c71d26464e6e10e5067ffea7 -# brcmfmac43430-sdio.bin comes from linux-firmware -RPI_WIFI_FIRMWARE_SOURCE = brcmfmac43430-sdio.txt -# git repo contains a lot of unrelated files -RPI_WIFI_FIRMWARE_SITE = https://raw.githubusercontent.com/RPi-Distro/firmware-nonfree/$(RPI_WIFI_FIRMWARE_VERSION)/brcm80211/brcm +RPI_WIFI_FIRMWARE_VERSION = 18d7c931aff0a8a78360b9b9eaeb15d1224fb907 +RPI_WIFI_FIRMWARE_SITE = $(call github,LibreELEC,brcmfmac_sdio-firmware-rpi,$(RPI_WIFI_FIRMWARE_VERSION)) RPI_WIFI_FIRMWARE_LICENSE = PROPRIETARY - -define RPI_WIFI_FIRMWARE_EXTRACT_CMDS - cp $(DL_DIR)/$($(PKG)_SOURCE) $(@D)/ -endef +RPI_WIFI_FIRMWARE_LICENSE_FILES = LICENCE.broadcom_bcm43xx define RPI_WIFI_FIRMWARE_INSTALL_TARGET_CMDS - $(INSTALL) -D -m 0644 $(@D)/$(RPI_WIFI_FIRMWARE_SOURCE) \ - $(TARGET_DIR)/lib/firmware/brcm/$(RPI_WIFI_FIRMWARE_SOURCE) + $(INSTALL) -d $(TARGET_DIR)/lib/firmware/brcm + $(INSTALL) -m 0644 $(@D)/firmware/brcm/brcmfmac* $(TARGET_DIR)/lib/firmware/brcm endef $(eval $(generic-package)) diff --git a/buildroot/package/ruby/ruby.mk b/buildroot/package/ruby/ruby.mk index 4bf1a14cee1..365b8cead2c 100644 --- a/buildroot/package/ruby/ruby.mk +++ b/buildroot/package/ruby/ruby.mk @@ -40,13 +40,6 @@ RUBY_CONF_ENV += \ ac_cv_func_isnan=yes endif -ifeq ($(BR2_bfin),y) -RUBY_CONF_ENV += ac_cv_func_dl_iterate_phdr=no -# Blackfin doesn't have FFI closure support, needed by the fiddle -# extension. -RUBY_CONF_OPTS += --with-out-ext=fiddle -endif - ifeq ($(BR2_TOOLCHAIN_HAS_SSP),) RUBY_CONF_ENV += stack_protector=no endif diff --git a/buildroot/package/runc/runc.hash b/buildroot/package/runc/runc.hash index f7627078698..f403b6d9e22 100644 --- a/buildroot/package/runc/runc.hash +++ b/buildroot/package/runc/runc.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 df8e7cd1d332d97b468ee455164f3959246bb5fc639dd8042d0db3bded621ad7 runc-6c55f98695e902427906eed2c799e566e3d3dfb5.tar.gz +sha256 770e180d1cca1f3c1a67512ebf9720caafe97af4fc2fe12fa43a3cf7bfa77522 runc-v1.0.0-rc5.tar.gz diff --git a/buildroot/package/runc/runc.mk b/buildroot/package/runc/runc.mk index 1ab0b70a56e..aa23fce3b0f 100644 --- a/buildroot/package/runc/runc.mk +++ b/buildroot/package/runc/runc.mk @@ -4,51 +4,18 @@ # ################################################################################ -RUNC_VERSION = 6c55f98695e902427906eed2c799e566e3d3dfb5 +RUNC_VERSION = v1.0.0-rc5 RUNC_SITE = $(call github,opencontainers,runc,$(RUNC_VERSION)) RUNC_LICENSE = Apache-2.0 RUNC_LICENSE_FILES = LICENSE -RUNC_DEPENDENCIES = host-go +RUNC_WORKSPACE = Godeps/_workspace -RUNC_GOPATH = $(@D)/gopath -RUNC_MAKE_ENV = $(HOST_GO_TARGET_ENV) \ - CGO_ENABLED=1 \ - GOBIN="$(@D)/bin" \ - GOPATH="$(RUNC_GOPATH)" \ - PATH=$(BR_PATH) - -RUNC_GOTAGS = cgo apparmor -RUNC_GLDFLAGS = \ - -X main.gitCommit=$(RUNC_VERSION) - -ifeq ($(BR2_STATIC_LIBS),y) -RUNC_GLDFLAGS += -extldflags '-static' -RUNC_GOTAGS += static_build -endif +RUNC_TAGS = cgo static_build apparmor ifeq ($(BR2_PACKAGE_LIBSECCOMP),y) -RUNC_GOTAGS += seccomp +RUNC_TAGS += seccomp RUNC_DEPENDENCIES += libseccomp host-pkgconf endif -define RUNC_CONFIGURE_CMDS - mkdir -p $(RUNC_GOPATH)/src/github.com/opencontainers - ln -s $(@D) $(RUNC_GOPATH)/src/github.com/opencontainers/runc -endef - -define RUNC_BUILD_CMDS - cd $(RUNC_GOPATH)/src/github.com/opencontainers/runc; \ - $(RUNC_MAKE_ENV) \ - $(HOST_DIR)/bin/go build -v -i \ - -o $(@D)/bin/runc \ - -tags "$(RUNC_GOTAGS)" \ - -ldflags "$(RUNC_GLDFLAGS)" \ - ./ -endef - -define RUNC_INSTALL_TARGET_CMDS - $(INSTALL) -D -m 0755 $(@D)/bin/runc $(TARGET_DIR)/usr/bin/runc -endef - -$(eval $(generic-package)) +$(eval $(golang-package)) diff --git a/buildroot/package/rust-bin/rust-bin.hash b/buildroot/package/rust-bin/rust-bin.hash index 5b34a6aa0ca..d09654307fc 100644 --- a/buildroot/package/rust-bin/rust-bin.hash +++ b/buildroot/package/rust-bin/rust-bin.hash @@ -1,33 +1,33 @@ -# From https://static.rust-lang.org/dist/rustc-1.23.0-i686-unknown-linux-gnu.tar.xz.sha256 -sha256 243de2826b2d545b8428414a3f7e86ce5e86163ec927a374958052a047b55e69 rustc-1.23.0-i686-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rustc-1.23.0-x86_64-unknown-linux-gnu.tar.xz.sha256 -sha256 d72674a683dcc8a07ad72d6ae08b96a7dfc72cf08433e2ae69c0f8a2b9c79c17 rustc-1.23.0-x86_64-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.23.0-aarch64-unknown-linux-gnu.tar.xz.sha256 -sha256 0d9c976c46a277ef860ce5766387ea8e40f84657e5f9962cba91be62a00ca345 rust-std-1.23.0-aarch64-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.23.0-arm-unknown-linux-gnueabi.tar.xz.sha256 -sha256 3d7ce58f6d2bbf6faf91049893e96611a172b0af02d98190e36a49e8b0f974ee rust-std-1.23.0-arm-unknown-linux-gnueabi.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.23.0-arm-unknown-linux-gnueabihf.tar.xz.sha256 -sha256 0a2a43668c2ddc2516e85e1c097d2672acaf61541d2b70f40daba548b3ccbee1 rust-std-1.23.0-arm-unknown-linux-gnueabihf.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.23.0-armv7-unknown-linux-gnueabihf.tar.xz.sha256 -sha256 b2f7f4e2e31d86302e929d0435b6f40778c22fc9306f0850b0edc4738ff2634e rust-std-1.23.0-armv7-unknown-linux-gnueabihf.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.23.0-i686-unknown-linux-gnu.tar.xz.sha256 -sha256 f9659f844ccd2e25e9f01a49fb7adf0ce26cbbec7a4df7081dd2d0929a86b2d3 rust-std-1.23.0-i686-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.23.0-mips-unknown-linux-gnu.tar.xz.sha256 -sha256 8324d9c1eacba0de31fff29841d0f0567261489ee46a270e30be929095bfe19a rust-std-1.23.0-mips-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.23.0-mips64-unknown-linux-gnuabi64.tar.xz.sha256 -sha256 521f70f3346ff8e28e33350fd5ad9bbba7dfc9038389f3965bcfa2f1d1a498a5 rust-std-1.23.0-mips64-unknown-linux-gnuabi64.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.23.0-mips64el-unknown-linux-gnuabi64.tar.xz.sha256 -sha256 d08f5792bd0d4f5d3d81a4ec1b3a2b36e7c389de2ecf2e777e390461ff015d08 rust-std-1.23.0-mips64el-unknown-linux-gnuabi64.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.23.0-mipsel-unknown-linux-gnu.tar.xz.sha256 -sha256 77291fff357b9e1764a4d7975bdbecdb37aeb0d37d85ccb68f7d785f4da1a056 rust-std-1.23.0-mipsel-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.23.0-powerpc-unknown-linux-gnu.tar.xz.sha256 -sha256 d1b862d32c4921058ff4ea5b7fead3b2954b5f0f036603b1c58a600e602d1f25 rust-std-1.23.0-powerpc-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.23.0-powerpc64-unknown-linux-gnu.tar.xz.sha256 -sha256 e03bf7907914c88d2f19e719f07641b1b1ffbb65cf9daae8b028f4ab4619b4ff rust-std-1.23.0-powerpc64-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.23.0-powerpc64le-unknown-linux-gnu.tar.xz.sha256 -sha256 674f74245341119409e203109c22d432d0ed3312a6ff4d3b03cab251e61cc53a rust-std-1.23.0-powerpc64le-unknown-linux-gnu.tar.xz -# From https://static.rust-lang.org/dist/rust-std-1.23.0-x86_64-unknown-linux-gnu.tar.xz.sha256 -sha256 0d87225dd081c7ea5002fdeb21983d23bc52fa37d23c88d5c97b2c44660f8af9 rust-std-1.23.0-x86_64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rustc-1.25.0-i686-unknown-linux-gnu.tar.xz.sha256 +sha256 2b9b7d1df84a2a591c7f02faf082045eb5520cec70162249f941d8da006e97ec rustc-1.25.0-i686-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rustc-1.25.0-x86_64-unknown-linux-gnu.tar.xz.sha256 +sha256 f61766a970e067614037f2c788e3800d84b1bbc0c00c283ca0c6ecbc38559776 rustc-1.25.0-x86_64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.25.0-aarch64-unknown-linux-gnu.tar.xz.sha256 +sha256 a9257edc85e9159b5953a9d68a3c1fbfe1306e2a5b752284ee4e4410deb96d73 rust-std-1.25.0-aarch64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.25.0-arm-unknown-linux-gnueabi.tar.xz.sha256 +sha256 73ad54b1da0d100dc49e2a1ec425aecb6f38ffda334eb91fc6bb99fc30c301f5 rust-std-1.25.0-arm-unknown-linux-gnueabi.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.25.0-arm-unknown-linux-gnueabihf.tar.xz.sha256 +sha256 73bf215c2a5cc8068676f8d881a7464352e66f00946a0df81ac271fed16ebcfb rust-std-1.25.0-arm-unknown-linux-gnueabihf.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.25.0-armv7-unknown-linux-gnueabihf.tar.xz.sha256 +sha256 ebfb2a21b54d610c5454445380628854fc880c8f4f6add4ffac27db6aa65a1a6 rust-std-1.25.0-armv7-unknown-linux-gnueabihf.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.25.0-i686-unknown-linux-gnu.tar.xz.sha256 +sha256 6a6dba618372029f640d8a76342d957676cd9324084a1246ab6d5a89283e1d50 rust-std-1.25.0-i686-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.25.0-mips-unknown-linux-gnu.tar.xz.sha256 +sha256 85774d422307499b120841c78de7e920f7d1bdb2b8a9aca29607be467c5de9a0 rust-std-1.25.0-mips-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.25.0-mips64-unknown-linux-gnuabi64.tar.xz.sha256 +sha256 51347ff3c2cf1a1c55c22a3fecba6b155841e2e5a86ff5a077a7e96de096ff19 rust-std-1.25.0-mips64-unknown-linux-gnuabi64.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.25.0-mips64el-unknown-linux-gnuabi64.tar.xz.sha256 +sha256 e18a7259e58798bcbd6ad68ade35ea46201b9f370f3d2ead2e3d293cb2938d60 rust-std-1.25.0-mips64el-unknown-linux-gnuabi64.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.25.0-mipsel-unknown-linux-gnu.tar.xz.sha256 +sha256 9e60e356bd755aa3525f3fc4327e5ef64103e1198b9fbba9ad874e49a66877d7 rust-std-1.25.0-mipsel-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.25.0-powerpc-unknown-linux-gnu.tar.xz.sha256 +sha256 6908b1819e6b64ce3a2cbc33cccca10afda686efa60d6d91d4ce19213912f87e rust-std-1.25.0-powerpc-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.25.0-powerpc64-unknown-linux-gnu.tar.xz.sha256 +sha256 1ebe2c241514b41b492772eded30d6c601f41cd68e493cb31ebbdd39ffc5c2e9 rust-std-1.25.0-powerpc64-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.25.0-powerpc64le-unknown-linux-gnu.tar.xz.sha256 +sha256 28a6200b05b6ab870c0700eb371201f0790ca24e9b3b8982db62fd21c1e846e2 rust-std-1.25.0-powerpc64le-unknown-linux-gnu.tar.xz +# From https://static.rust-lang.org/dist/rust-std-1.25.0-x86_64-unknown-linux-gnu.tar.xz.sha256 +sha256 30c724d3fa01eb7dd448ef4a1fe63f6caa59f70c250b7d2ec3ede6be29c2505f rust-std-1.25.0-x86_64-unknown-linux-gnu.tar.xz # Locally generated sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 LICENSE-APACHE sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT diff --git a/buildroot/package/rust-bin/rust-bin.mk b/buildroot/package/rust-bin/rust-bin.mk index cd5844b1159..e10dbcebd00 100644 --- a/buildroot/package/rust-bin/rust-bin.mk +++ b/buildroot/package/rust-bin/rust-bin.mk @@ -4,7 +4,7 @@ # ################################################################################ -RUST_BIN_VERSION = 1.23.0 +RUST_BIN_VERSION = 1.25.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 @@ -22,11 +22,11 @@ HOST_RUST_BIN_LIBSTD_HOST_PREFIX = rust-std-$(RUST_BIN_VERSION)-$(RUSTC_HOST_NAM define HOST_RUST_BIN_LIBSTD_EXTRACT mkdir -p $(@D)/std $(foreach f,$(HOST_RUST_BIN_EXTRA_DOWNLOADS), \ - $(call suitable-extractor,$(f)) $(DL_DIR)/$(f) | \ + $(call suitable-extractor,$(f)) $(HOST_RUST_BIN_DL_DIR)/$(f) | \ $(TAR) -C $(@D)/std $(TAR_OPTIONS) - ) - cd $(@D)/rustc/lib/rustlib; \ - ln -sf ../../../std/$(HOST_RUST_BIN_LIBSTD_HOST_PREFIX)/lib/rustlib/$(RUSTC_HOST_NAME) + cd $(@D)/rustc/lib/rustlib/$(RUSTC_HOST_NAME); \ + ln -sf ../../../../std/$(HOST_RUST_BIN_LIBSTD_HOST_PREFIX)/lib/rustlib/$(RUSTC_HOST_NAME)/lib endef HOST_RUST_BIN_POST_EXTRACT_HOOKS += HOST_RUST_BIN_LIBSTD_EXTRACT diff --git a/buildroot/package/rust/rust.hash b/buildroot/package/rust/rust.hash index d6731b6dc24..495722e355e 100644 --- a/buildroot/package/rust/rust.hash +++ b/buildroot/package/rust/rust.hash @@ -1,5 +1,5 @@ -# From https://static.rust-lang.org/dist/rustc-1.23.0-src.tar.xz.sha256 -sha256 7196032371b50dd5582465b3bfa79ffd783b74f0711420d99b61b26c96fb3d80 rustc-1.23.0-src.tar.xz +# From https://static.rust-lang.org/dist/rustc-1.25.0-src.tar.xz.sha256 +sha256 14fcb82d5959df758aaf422539359300917217fa8420e34bd596e3fb6ed2de87 rustc-1.25.0-src.tar.xz # Locally generated sha256 a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2 LICENSE-APACHE sha256 23f18e03dc49df91622fe2a76176497404e46ced8a715d9d2b67a7446571cca3 LICENSE-MIT diff --git a/buildroot/package/rust/rust.mk b/buildroot/package/rust/rust.mk index ff2634b9960..af5c3664955 100644 --- a/buildroot/package/rust/rust.mk +++ b/buildroot/package/rust/rust.mk @@ -4,7 +4,7 @@ # ################################################################################ -RUST_VERSION = 1.23.0 +RUST_VERSION = 1.25.0 RUST_SOURCE = rustc-$(RUST_VERSION)-src.tar.xz RUST_SITE = https://static.rust-lang.org/dist RUST_LICENSE = Apache-2.0 or MIT diff --git a/buildroot/package/rygel/rygel.hash b/buildroot/package/rygel/rygel.hash index 028af21bb4d..879cbd714bb 100644 --- a/buildroot/package/rygel/rygel.hash +++ b/buildroot/package/rygel/rygel.hash @@ -1,5 +1,5 @@ -# Hash from: http://ftp.gnome.org/pub/gnome/sources/rygel/0.36/rygel-0.36.0.sha256sum: -sha256 31e8ade78b4ea59978d1b59056fa5cd8aef6b9c1457d3dd06de4d2e75a01813f rygel-0.36.0.tar.xz +# Hash from: http://ftp.gnome.org/pub/gnome/sources/rygel/0.36/rygel-0.36.1.sha256sum: +sha256 a67fdd801f6e4121ae44cfffabc0f35fff487cab173b6c6f052449ad7b5fb820 rygel-0.36.1.tar.xz # Locally calculated sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/buildroot/package/rygel/rygel.mk b/buildroot/package/rygel/rygel.mk index cd8897ceb51..d1bc30589c7 100644 --- a/buildroot/package/rygel/rygel.mk +++ b/buildroot/package/rygel/rygel.mk @@ -5,7 +5,7 @@ ################################################################################ RYGEL_VERSION_MAJOR = 0.36 -RYGEL_VERSION = $(RYGEL_VERSION_MAJOR).0 +RYGEL_VERSION = $(RYGEL_VERSION_MAJOR).1 RYGEL_SOURCE = rygel-$(RYGEL_VERSION).tar.xz RYGEL_SITE = http://ftp.gnome.org/pub/gnome/sources/rygel/$(RYGEL_VERSION_MAJOR) RYGEL_LICENSE = LGPL-2.1+, CC-BY-SA-3.0 (logo) diff --git a/buildroot/package/s6-linux-init/s6-linux-init.hash b/buildroot/package/s6-linux-init/s6-linux-init.hash index 03aeaf3abf4..8f3c7fa2978 100644 --- a/buildroot/package/s6-linux-init/s6-linux-init.hash +++ b/buildroot/package/s6-linux-init/s6-linux-init.hash @@ -1,3 +1,3 @@ # Locally generated -sha256 9ee2e8a5abc250bcb2be7d07566592ba5cbe3abce858f60853d3ac45b1ccdd79 s6-linux-init-0.3.1.1.tar.gz -sha256 43cdbc05eceb0781d71a0661bbb6b9335efc4b733fbd02847c0c6667fd440993 COPYING +sha256 d4ac9b8bde3e678353c85dad1a2a25066a40f843c53840c4210839068635ed7e s6-linux-init-0.4.0.0.tar.gz +sha256 1377d3b18a31de11e8bb06f0f46888a23bc16cbc57285035793bf7e7943bbcb3 COPYING diff --git a/buildroot/package/s6-linux-init/s6-linux-init.mk b/buildroot/package/s6-linux-init/s6-linux-init.mk index c5dee02865e..d25504ae5a0 100644 --- a/buildroot/package/s6-linux-init/s6-linux-init.mk +++ b/buildroot/package/s6-linux-init/s6-linux-init.mk @@ -4,7 +4,7 @@ # ################################################################################ -S6_LINUX_INIT_VERSION = 0.3.1.1 +S6_LINUX_INIT_VERSION = 0.4.0.0 S6_LINUX_INIT_SITE = http://skarnet.org/software/s6-linux-init S6_LINUX_INIT_LICENSE = ISC S6_LINUX_INIT_LICENSE_FILES = COPYING diff --git a/buildroot/package/s6-rc/s6-rc.hash b/buildroot/package/s6-rc/s6-rc.hash index 76ab69df186..e8bb7ae36ad 100644 --- a/buildroot/package/s6-rc/s6-rc.hash +++ b/buildroot/package/s6-rc/s6-rc.hash @@ -1,3 +1,3 @@ # Locally generated -sha256 96b8e7f275d42113b9ba7ef1d8856f64183b9421c39702f8332e6f5686496fba s6-rc-0.4.0.0.tar.gz +sha256 4b4b6205e31e85be583a165a994552d0f30ebcdabbdd919f9f469815d7679e5c s6-rc-0.4.0.1.tar.gz sha256 1377d3b18a31de11e8bb06f0f46888a23bc16cbc57285035793bf7e7943bbcb3 COPYING diff --git a/buildroot/package/s6-rc/s6-rc.mk b/buildroot/package/s6-rc/s6-rc.mk index 396adaeaf48..222ba139c60 100644 --- a/buildroot/package/s6-rc/s6-rc.mk +++ b/buildroot/package/s6-rc/s6-rc.mk @@ -4,7 +4,7 @@ # ################################################################################ -S6_RC_VERSION = 0.4.0.0 +S6_RC_VERSION = 0.4.0.1 S6_RC_SITE = http://skarnet.org/software/s6-rc S6_RC_LICENSE = ISC S6_RC_LICENSE_FILES = COPYING diff --git a/buildroot/package/s6/s6.hash b/buildroot/package/s6/s6.hash index 4a20e0f9144..12791a97607 100644 --- a/buildroot/package/s6/s6.hash +++ b/buildroot/package/s6/s6.hash @@ -1,3 +1,3 @@ # Locally generated -sha256 6617cbf82c73273c67c6102a1a5c48449ef65ffbe8d0db6a587b7f0078dc6e13 s6-2.7.0.0.tar.gz +sha256 f37547f2890eb50bcb4cd46ffa38bad5ec9e6fd6bc7b73a8df0bdf0cf11f01a9 s6-2.7.1.1.tar.gz sha256 3eadcf980c40da0f257b8292d805ff41e5e5a908c1942315d9a627732e1aa012 COPYING diff --git a/buildroot/package/s6/s6.mk b/buildroot/package/s6/s6.mk index 5556bfff930..83945b08d55 100644 --- a/buildroot/package/s6/s6.mk +++ b/buildroot/package/s6/s6.mk @@ -4,7 +4,7 @@ # ################################################################################ -S6_VERSION = 2.7.0.0 +S6_VERSION = 2.7.1.1 S6_SITE = http://skarnet.org/software/s6 S6_LICENSE = ISC S6_LICENSE_FILES = COPYING diff --git a/buildroot/package/safeclib/0001-Add-disable-doc-option.patch b/buildroot/package/safeclib/0001-Add-disable-doc-option.patch new file mode 100644 index 00000000000..5d71173f1ef --- /dev/null +++ b/buildroot/package/safeclib/0001-Add-disable-doc-option.patch @@ -0,0 +1,59 @@ +From 0d56b6327f6b652511c3e4c72382f4dc4d194e10 Mon Sep 17 00:00:00 2001 +From: Fabrice Fontaine +Date: Thu, 15 Mar 2018 20:12:28 +0100 +Subject: [PATCH] Add --disable-doc option + +This option allows the user to disable man pages even if pod2man and +doxygen programs are found + +Signed-off-by: Fabrice Fontaine +Upstream-status: Accepted (https://github.com/rurban/safeclib/commit/86404f0e2a7f2a9cad9c916b643594d4d07721d1) +--- + Makefile.am | 2 ++ + configure.ac | 10 ++++++++++ + 2 files changed, 12 insertions(+) + +diff --git a/Makefile.am b/Makefile.am +index 0f65c5c1..ce1424bb 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -104,6 +104,7 @@ LIBTOOL_DISTCLEAN_FILES = \ + build-tools/test-driver + DISTCLEANFILES = .version + ++if ENABLE_DOC + MAN1_SOURCES = doc/man/man1/check_for_unsafe_apis.1 + dist_man_MANS = + if HAVE_POD2MAN +@@ -560,6 +561,7 @@ clean-local: + rm -rf $(builddir)/doc/html + rm -rf $(builddir)/doc/man + endif ++endif + + if ENABLE_GCOV + gcov: check +diff --git a/configure.ac b/configure.ac +index 0e4e5eea..33ed7326 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -339,6 +339,16 @@ else + AC_MSG_RESULT([no (default)]) + fi + ++AC_ARG_ENABLE(doc, ++ AS_HELP_STRING([--disable-doc], ++ [disable documentation @<:@default=no@:>@]), ++ [case "${enableval}" in ++ yes) enable_doc=true ;; ++ no) enable_doc=false ;; ++ *) AC_MSG_ERROR([bad value ${enableval} for --enable-doc]) ;; ++ esac], [enable_doc=true]) ++AM_CONDITIONAL(ENABLE_DOC, test "x$enable_doc" = "xtrue") ++ + dnl for windows dllimport. checking pic_flag DLL_EXPORT would be better, + dnl but this is only enabled for the shared objs, and we need it in the config + dnl for our tests. +-- +2.14.1 + diff --git a/buildroot/package/safeclib/0001-Fix-install-when-HAVE_WCHAR-is-unset.patch b/buildroot/package/safeclib/0001-Fix-install-when-HAVE_WCHAR-is-unset.patch deleted file mode 100644 index c34002d24e3..00000000000 --- a/buildroot/package/safeclib/0001-Fix-install-when-HAVE_WCHAR-is-unset.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 5991f0d4b86c02a3d7739509b96815ccfa734be7 Mon Sep 17 00:00:00 2001 -From: Fabrice Fontaine -Date: Mon, 18 Dec 2017 17:17:54 +0100 -Subject: [PATCH] Fix install when HAVE_WCHAR is unset - -Don't build WCSNORM_xxx man pages if HAVE_WHCAR is not set otherwise -installation will fail as the wcsnorm_mode enum is not defined in -safe_str_lib.h when SAFECLIB_DISABLE_WCHAR is set - -Signed-off-by: Fabrice Fontaine ---- - Makefile.am | 15 +++++++++------ - 1 file changed, 9 insertions(+), 6 deletions(-) - -diff --git a/Makefile.am b/Makefile.am -index 31398d1..b7e65a5 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -142,12 +142,6 @@ dist_man_MANS += \ - doc/man/man3/SAFE_STR_PASSWORD_MIN_LENGTH.3 \ - doc/man/man3/STRTOK_DELIM_MAX_LEN.3 \ - doc/man/man3/TMP_MAX_S.3 \ -- doc/man/man3/WCSNORM_FCC.3 \ -- doc/man/man3/WCSNORM_FCD.3 \ -- doc/man/man3/WCSNORM_NFC.3 \ -- doc/man/man3/WCSNORM_NFD.3 \ -- doc/man/man3/WCSNORM_NFKC.3 \ -- doc/man/man3/WCSNORM_NFKD.3 \ - doc/man/man3/abort_handler_s.3 \ - doc/man/man3/abort_handler_s.c.3 \ - doc/man/man3/asctime_s.3 \ -@@ -461,6 +455,15 @@ dist_man_MANS += \ - doc/man/man3/wprintf_s.c.3 \ - doc/man/man3/wscanf_s.3 \ - doc/man/man3/wscanf_s.c.3 -+if ENABLE_WCHAR -+dist_man_MANS += \ -+ doc/man/man3/WCSNORM_FCC.3 \ -+ doc/man/man3/WCSNORM_FCD.3 \ -+ doc/man/man3/WCSNORM_NFC.3 \ -+ doc/man/man3/WCSNORM_NFD.3 \ -+ doc/man/man3/WCSNORM_NFKC.3 \ -+ doc/man/man3/WCSNORM_NFKD.3 -+endif - CLEANFILES += Doxyfile doc/footer README.md - - # avoid parallel doxygen --- -2.7.4 - diff --git a/buildroot/package/safeclib/safeclib.hash b/buildroot/package/safeclib/safeclib.hash index 95a862eef0b..2a6fe86a539 100644 --- a/buildroot/package/safeclib/safeclib.hash +++ b/buildroot/package/safeclib/safeclib.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 9c09c6e9fc95207c7d45944f8b669f2454056bef2bbaef70c94ba3f81be1cbb2 safeclib-v09102017.tar.gz +sha256 51f66832853322a4fbe677e196ab4c68317261829edb5e56725ed96a07ea50e6 safeclib-v03032018.tar.gz sha256 c33e77efd5781e3d59a2bb648c82d2a615035ef0d24cf58880380e3af906510b COPYING diff --git a/buildroot/package/safeclib/safeclib.mk b/buildroot/package/safeclib/safeclib.mk index b1aa25992cf..e4aaa3ff57b 100644 --- a/buildroot/package/safeclib/safeclib.mk +++ b/buildroot/package/safeclib/safeclib.mk @@ -4,7 +4,7 @@ # ################################################################################ -SAFECLIB_VERSION = v09102017 +SAFECLIB_VERSION = v03032018 SAFECLIB_SITE = $(call github,rurban,safeclib,$(SAFECLIB_VERSION)) SAFECLIB_LICENSE = MIT SAFECLIB_LICENSE_FILES = COPYING diff --git a/buildroot/package/sam-ba/sam-ba.mk b/buildroot/package/sam-ba/sam-ba.mk index 244ede3ef18..0d36b0dc593 100644 --- a/buildroot/package/sam-ba/sam-ba.mk +++ b/buildroot/package/sam-ba/sam-ba.mk @@ -13,7 +13,7 @@ SAM_BA_LICENSE_FILES = doc/license.txt tcl_lib/boards.tcl \ applets/sam4c/libraries/libchip_sam4c/include/sam4c/sam4c32e-1.h define HOST_SAM_BA_EXTRACT_CMDS - $(UNZIP) -d $(BUILD_DIR) $(DL_DIR)/$(SAM_BA_SOURCE) + $(UNZIP) -d $(BUILD_DIR) $(HOST_SAM_BA_DL_DIR)/$(SAM_BA_SOURCE) mv $(BUILD_DIR)/sam-ba_cdc_linux/* $(@D) rmdir $(BUILD_DIR)/sam-ba_cdc_linux/ endef @@ -23,10 +23,17 @@ endef # then create a symbolic link from $(HOST_DIR)/bin to the # application binary, for easier usage. +ifeq ($(HOSTARCH),x86_64) +SAM_BA_BIN_NAME = sam-ba_64 +else +SAM_BA_BIN_NAME = sam-ba +endif + define HOST_SAM_BA_INSTALL_CMDS mkdir -p $(HOST_DIR)/opt/sam-ba/ cp -a $(@D)/* $(HOST_DIR)/opt/sam-ba/ - ln -sf ../../opt/sam-ba/sam-ba $(HOST_DIR)/bin/sam-ba + mkdir -p $(HOST_DIR)/bin/ + ln -sf ../opt/sam-ba/$(SAM_BA_BIN_NAME) $(HOST_DIR)/bin/sam-ba endef $(eval $(host-generic-package)) diff --git a/buildroot/package/samba4/0001-libreplace-disable-libbsd-support.patch b/buildroot/package/samba4/0001-libreplace-disable-libbsd-support.patch index ed6accfca15..4794cb02fda 100644 --- a/buildroot/package/samba4/0001-libreplace-disable-libbsd-support.patch +++ b/buildroot/package/samba4/0001-libreplace-disable-libbsd-support.patch @@ -9,7 +9,7 @@ This causes redefinition conflicts for link(2) when both standard unistd.h and bsd/unistd.h get included. Signed-off-by: Gustavo Zacarias -(rebased for version 4.7.3) +(rebased for versions 4.7.3 & 4.8.0) Signed-off-by: Bernd Kuhls --- lib/replace/wscript | 12 ------------ @@ -19,7 +19,7 @@ diff --git a/lib/replace/wscript b/lib/replace/wscript index 1dfd902..456be9b 100644 --- a/lib/replace/wscript +++ b/lib/replace/wscript -@@ -253,19 +253,6 @@ +@@ -296,21 +296,6 @@ strlcpy_in_bsd = False @@ -32,6 +32,8 @@ index 1dfd902..456be9b 100644 - conf.CHECK_FUNCS_IN('getpeereid', 'bsd', headers='sys/types.h bsd/unistd.h') - if not conf.CHECK_FUNCS_IN('setproctitle', 'setproctitle', headers='setproctitle.h'): - conf.CHECK_FUNCS_IN('setproctitle', 'bsd', headers='sys/types.h bsd/unistd.h') +- if not conf.CHECK_FUNCS('setproctitle_init'): +- conf.CHECK_FUNCS_IN('setproctitle_init', 'bsd', headers='sys/types.h bsd/unistd.h') - - if not conf.CHECK_FUNCS('closefrom'): - conf.CHECK_FUNCS_IN('closefrom', 'bsd', headers='bsd/unistd.h') diff --git a/buildroot/package/samba4/0004-libgpo-fix-build-without-ads.patch b/buildroot/package/samba4/0004-libgpo-fix-build-without-ads.patch new file mode 100644 index 00000000000..5e3af3c322c --- /dev/null +++ b/buildroot/package/samba4/0004-libgpo-fix-build-without-ads.patch @@ -0,0 +1,49 @@ +From a222b7506b53e689708834237f18877231dca589 Mon Sep 17 00:00:00 2001 +From: Volker Lendecke +Date: Sat, 3 Feb 2018 07:07:55 +0100 +Subject: [PATCH] libgpo: Fix the build --without-ads + +Signed-off-by: Volker Lendecke +Reviewed-by: David Disseldorp + +Autobuild-User(master): David Disseldorp +Autobuild-Date(master): Tue Feb 6 15:36:01 CET 2018 on sn-devel-144 + +Downloaded from upstream commit: +https://git.samba.org/samba.git/?p=samba.git;a=commit;h=a222b7506b53e689708834237f18877231dca589 + +Fixes https://bugzilla.samba.org/show_bug.cgi?id=13331 + +Signed-off-by: Bernd Kuhls +--- + libgpo/pygpo.c | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/libgpo/pygpo.c b/libgpo/pygpo.c +index 7a02a0dc2aa..b6b53b76212 100644 +--- a/libgpo/pygpo.c ++++ b/libgpo/pygpo.c +@@ -319,6 +319,7 @@ static PyObject *py_gpo_get_sysvol_gpt_version(PyObject * self, + return result; + } + ++#ifdef HAVE_ADS + static ADS_STATUS find_samaccount(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, + const char *samaccountname, + uint32_t *uac_ret, const char **dn_ret) +@@ -468,11 +469,15 @@ static PyObject *py_ads_get_gpo_list(ADS *self, PyObject *args, PyObject *kwds) + return ret; + } + ++#endif ++ + static PyMethodDef ADS_methods[] = { + { "connect", (PyCFunction)py_ads_connect, METH_NOARGS, + "Connect to the LDAP server" }, ++#ifdef HAVE_ADS + { "get_gpo_list", (PyCFunction)py_ads_get_gpo_list, METH_KEYWORDS, + NULL }, ++#endif + { NULL } + }; + diff --git a/buildroot/package/samba4/samba4-cache.txt b/buildroot/package/samba4/samba4-cache.txt index 4a6471dd7a7..0485f0dbb18 100644 --- a/buildroot/package/samba4/samba4-cache.txt +++ b/buildroot/package/samba4/samba4-cache.txt @@ -38,3 +38,4 @@ 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 diff --git a/buildroot/package/samba4/samba4.hash b/buildroot/package/samba4/samba4.hash index 28765440d13..85d0e18b529 100644 --- a/buildroot/package/samba4/samba4.hash +++ b/buildroot/package/samba4/samba4.hash @@ -1,3 +1,4 @@ -# Locally calculated -sha256 fb12d0c4452f85b67b78bbeabd4c762d8feb8ff83e39d044d285120c2c488247 samba-4.7.4.tar.gz +# Locally calculated after checking pgp signature +# https://download.samba.org/pub/samba/stable/samba-4.8.1.tar.asc +sha256 8ef7367507f16b7a5e2f6aed5bcdbd1143feca79aa2a07c9b21292b17d7f789d samba-4.8.1.tar.gz sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/samba4/samba4.mk b/buildroot/package/samba4/samba4.mk index 6f3207fb641..c77bc04a89f 100644 --- a/buildroot/package/samba4/samba4.mk +++ b/buildroot/package/samba4/samba4.mk @@ -4,7 +4,7 @@ # ################################################################################ -SAMBA4_VERSION = 4.7.4 +SAMBA4_VERSION = 4.8.1 SAMBA4_SITE = https://download.samba.org/pub/samba/stable SAMBA4_SOURCE = samba-$(SAMBA4_VERSION).tar.gz SAMBA4_INSTALL_STAGING = YES diff --git a/buildroot/package/screen/screen.mk b/buildroot/package/screen/screen.mk index 8d67c04b636..37d43366c29 100644 --- a/buildroot/package/screen/screen.mk +++ b/buildroot/package/screen/screen.mk @@ -17,7 +17,14 @@ SCREEN_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) SCREEN=screen install_bin 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/buildroot/package/sdl2/0001-make-cross-compiler-friendly.patch b/buildroot/package/sdl2/0001-make-cross-compiler-friendly.patch deleted file mode 100644 index 10dcf746563..00000000000 --- a/buildroot/package/sdl2/0001-make-cross-compiler-friendly.patch +++ /dev/null @@ -1,167 +0,0 @@ -From 4cbd2fbfcbfe94b5826907f59ee963c69860e522 Mon Sep 17 00:00:00 2001 -From: "Guillermo A. Amaral" -Date: Thu, 18 Jan 2018 09:23:58 -0800 -Subject: [PATCH] Make rpi video cross-compiler friendly. - -* Stops using fixed path to find GLES/EGL libs. -* Tries pkg-config to locate bcm_host. - -Signed-off-by: Guillermo A. Amaral ---- - cmake/sdlchecks.cmake | 15 ++++++++++----- - configure | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- - configure.in | 8 ++++++-- - src/video/SDL_egl.c | 12 ++++++------ - 4 files changed, 68 insertions(+), 15 deletions(-) - -diff --git a/cmake/sdlchecks.cmake b/cmake/sdlchecks.cmake -index e2e89a2..fc715f1 100644 ---- a/cmake/sdlchecks.cmake -+++ b/cmake/sdlchecks.cmake -@@ -1127,15 +1127,19 @@ endmacro() - # - n/a - macro(CheckRPI) - if(VIDEO_RPI) -- set(VIDEO_RPI_INCLUDE_DIRS "/opt/vc/include" "/opt/vc/include/interface/vcos/pthreads" "/opt/vc/include/interface/vmcs_host/linux/" ) -- set(VIDEO_RPI_LIBRARY_DIRS "/opt/vc/lib" ) -- set(VIDEO_RPI_LIBS bcm_host ) -+ pkg_check_modules(VIDEO_RPI bcm_host brcmegl) -+ if (NOT VIDEO_RPI_FOUND) -+ set(VIDEO_RPI_INCLUDE_DIRS "/opt/vc/include" "/opt/vc/include/interface/vcos/pthreads" "/opt/vc/include/interface/vmcs_host/linux/" ) -+ set(VIDEO_RPI_LIBRARY_DIRS "/opt/vc/lib" ) -+ set(VIDEO_RPI_LIBRARIES bcm_host ) -+ set(VIDEO_RPI_LDFLAGS "-Wl,-rpath,/opt/vc/lib") -+ endif() - listtostr(VIDEO_RPI_INCLUDE_DIRS VIDEO_RPI_INCLUDE_FLAGS "-I") - listtostr(VIDEO_RPI_LIBRARY_DIRS VIDEO_RPI_LIBRARY_FLAGS "-L") - - set(ORIG_CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}") - set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} ${VIDEO_RPI_INCLUDE_FLAGS} ${VIDEO_RPI_LIBRARY_FLAGS}") -- set(CMAKE_REQUIRED_LIBRARIES "${VIDEO_RPI_LIBS}") -+ set(CMAKE_REQUIRED_LIBRARIES "${VIDEO_RPI_LIBRARIES}") - check_c_source_compiles(" - #include - int main(int argc, char **argv) {}" HAVE_VIDEO_RPI) -@@ -1147,8 +1151,9 @@ macro(CheckRPI) - set(SDL_VIDEO_DRIVER_RPI 1) - file(GLOB VIDEO_RPI_SOURCES ${SDL2_SOURCE_DIR}/src/video/raspberry/*.c) - set(SOURCE_FILES ${SOURCE_FILES} ${VIDEO_RPI_SOURCES}) -- list(APPEND EXTRA_LIBS ${VIDEO_RPI_LIBS}) -+ list(APPEND EXTRA_LIBS ${VIDEO_RPI_LIBRARIES}) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${VIDEO_RPI_INCLUDE_FLAGS} ${VIDEO_RPI_LIBRARY_FLAGS}") -+ list(APPEND EXTRA_LDFLAGS ${VIDEO_RPI_LDFLAGS}) - endif(SDL_VIDEO AND HAVE_VIDEO_RPI) - endif(VIDEO_RPI) - endmacro(CheckRPI) -diff --git a/configure b/configure -index b622085..d42a22a 100755 ---- a/configure -+++ b/configure -@@ -19485,12 +19485,56 @@ else - fi - - if test x$enable_video = xyes -a x$enable_video_rpi = xyes; then -- if test x$ARCH = xnetbsd; then -+ # Extract the first word of "pkg-config", so it can be a program name with args. -+set dummy pkg-config; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_path_PKG_CONFIG+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ case $PKG_CONFIG in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. -+ ;; -+ *) -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no" -+ ;; -+esac -+fi -+PKG_CONFIG=$ac_cv_path_PKG_CONFIG -+if test -n "$PKG_CONFIG"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -+$as_echo "$PKG_CONFIG" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ if test x$PKG_CONFIG != xno && $PKG_CONFIG --exists bcm_host; then -+ RPI_CFLAGS=`$PKG_CONFIG --cflags bcm_host brcmegl` -+ RPI_LDFLAGS=`$PKG_CONFIG --libs bcm_host brcmegl` -+ elif test x$ARCH = xnetbsd; then - RPI_CFLAGS="-I/usr/pkg/include -I/usr/pkg/include/interface/vcos/pthreads -I/usr/pkg/include/interface/vmcs_host/linux" - RPI_LDFLAGS="-Wl,-R/usr/pkg/lib -L/usr/pkg/lib -lbcm_host" - else - RPI_CFLAGS="-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux" -- RPI_LDFLAGS="-L/opt/vc/lib -lbcm_host" -+ RPI_LDFLAGS="-Wl,-rpath,/opt/vc/lib -L/opt/vc/lib -lbcm_host" - fi - - # Save the original compiler flags and libraries -diff --git a/configure.in b/configure.in -index 5ac2130..450bf62 100644 ---- a/configure.in -+++ b/configure.in -@@ -1563,12 +1563,16 @@ CheckRPI() - AC_HELP_STRING([--enable-video-rpi], [use Raspberry Pi video driver [[default=yes]]]), - , enable_video_rpi=yes) - if test x$enable_video = xyes -a x$enable_video_rpi = xyes; then -- if test x$ARCH = xnetbsd; then -+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no) -+ if test x$PKG_CONFIG != xno && $PKG_CONFIG --exists bcm_host; then -+ RPI_CFLAGS=`$PKG_CONFIG --cflags bcm_host brcmegl` -+ RPI_LDFLAGS=`$PKG_CONFIG --libs bcm_host brcmegl` -+ elif test x$ARCH = xnetbsd; then - RPI_CFLAGS="-I/usr/pkg/include -I/usr/pkg/include/interface/vcos/pthreads -I/usr/pkg/include/interface/vmcs_host/linux" - RPI_LDFLAGS="-Wl,-R/usr/pkg/lib -L/usr/pkg/lib -lbcm_host" - else - RPI_CFLAGS="-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux" -- RPI_LDFLAGS="-L/opt/vc/lib -lbcm_host" -+ RPI_LDFLAGS="-Wl,-rpath,/opt/vc/lib -L/opt/vc/lib -lbcm_host" - fi - - # Save the original compiler flags and libraries -diff --git a/src/video/SDL_egl.c b/src/video/SDL_egl.c -index 9ccc2c3..23a7f2d 100644 ---- a/src/video/SDL_egl.c -+++ b/src/video/SDL_egl.c -@@ -44,12 +44,12 @@ - - #if SDL_VIDEO_DRIVER_RPI - /* Raspbian places the OpenGL ES/EGL binaries in a non standard path */ --#define DEFAULT_EGL "/opt/vc/lib/libbrcmEGL.so" --#define DEFAULT_OGL_ES2 "/opt/vc/lib/libbrcmGLESv2.so" --#define ALT_EGL "/opt/vc/lib/libEGL.so" --#define ALT_OGL_ES2 "/opt/vc/lib/libGLESv2.so" --#define DEFAULT_OGL_ES_PVR "/opt/vc/lib/libGLES_CM.so" --#define DEFAULT_OGL_ES "/opt/vc/lib/libGLESv1_CM.so" -+#define DEFAULT_EGL "libbrcmEGL.so" -+#define DEFAULT_OGL_ES2 "libbrcmGLESv2.so" -+#define ALT_EGL "libEGL.so" -+#define ALT_OGL_ES2 "libGLESv2.so" -+#define DEFAULT_OGL_ES_PVR "libGLES_CM.so" -+#define DEFAULT_OGL_ES "libGLESv1_CM.so" - - #elif SDL_VIDEO_DRIVER_ANDROID || SDL_VIDEO_DRIVER_VIVANTE - /* Android */ --- -2.13.6 - diff --git a/buildroot/package/sdl2/sdl2.hash b/buildroot/package/sdl2/sdl2.hash index 588f8f49ef7..997b4a5d4fc 100644 --- a/buildroot/package/sdl2/sdl2.hash +++ b/buildroot/package/sdl2/sdl2.hash @@ -1,4 +1,4 @@ -# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.0.7.tar.gz.sig -sha256 ee35c74c4313e2eda104b14b1b86f7db84a04eeab9430d56e001cea268bf4d5e SDL2-2.0.7.tar.gz +# Locally calculated after checking http://www.libsdl.org/release/SDL2-2.0.8.tar.gz.sig +sha256 edc77c57308661d576e843344d8638e025a7818bff73f8fbfab09c3c5fd092ec SDL2-2.0.8.tar.gz # Locally calculated -sha256 bbd2edb1789c33de29bb9f8d1dbe2774584a9ce8c4e3162944b7a3a447f5e85d COPYING.txt +sha256 61e627031e1160bf8b9bdbc9cda27656d422ea8eaab199b64b4a4a4168437154 COPYING.txt diff --git a/buildroot/package/sdl2/sdl2.mk b/buildroot/package/sdl2/sdl2.mk index 6508e6b962a..bd71485f189 100644 --- a/buildroot/package/sdl2/sdl2.mk +++ b/buildroot/package/sdl2/sdl2.mk @@ -4,7 +4,7 @@ # ################################################################################ -SDL2_VERSION = 2.0.7 +SDL2_VERSION = 2.0.8 SDL2_SOURCE = SDL2-$(SDL2_VERSION).tar.gz SDL2_SITE = http://www.libsdl.org/release SDL2_LICENSE = Zlib diff --git a/buildroot/package/sdl2_image/sdl2_image.hash b/buildroot/package/sdl2_image/sdl2_image.hash index 26d0a88cb5c..cf3253526c2 100644 --- a/buildroot/package/sdl2_image/sdl2_image.hash +++ b/buildroot/package/sdl2_image/sdl2_image.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 3a3eafbceea5125c04be585373bfd8b3a18f259bd7eae3efc4e6d8e60e0d7f64 SDL2_image-2.0.1.tar.gz +sha256 3510c25da735ffcd8ce3b65073150ff4f7f9493b866e85b83738083b556d2368 SDL2_image-2.0.3.tar.gz +sha256 13240ed78c8726c510b9634976430d3d3a9ea2d1ced3214119766e9e71568a35 COPYING.txt diff --git a/buildroot/package/sdl2_image/sdl2_image.mk b/buildroot/package/sdl2_image/sdl2_image.mk index 71a9634023d..8c1c5f6e1a7 100644 --- a/buildroot/package/sdl2_image/sdl2_image.mk +++ b/buildroot/package/sdl2_image/sdl2_image.mk @@ -4,7 +4,7 @@ # ################################################################################ -SDL2_IMAGE_VERSION = 2.0.1 +SDL2_IMAGE_VERSION = 2.0.3 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 diff --git a/buildroot/package/ser2net/Config.in b/buildroot/package/ser2net/Config.in index 3f0d15b30d6..cb4d69f7417 100644 --- a/buildroot/package/ser2net/Config.in +++ b/buildroot/package/ser2net/Config.in @@ -3,6 +3,6 @@ config BR2_PACKAGE_SER2NET depends on BR2_USE_MMU # fork() help Ser2net provides a way for a user to connect from a network - connection to a serial port.. + connection to a serial port. http://ser2net.sourceforge.net diff --git a/buildroot/package/ser2net/ser2net.hash b/buildroot/package/ser2net/ser2net.hash index 67782357685..c736c726ac4 100644 --- a/buildroot/package/ser2net/ser2net.hash +++ b/buildroot/package/ser2net/ser2net.hash @@ -1,2 +1,6 @@ +# From https://sourceforge.net/projects/ser2net/files/ser2net/ +md5 e10e7c8c97e5bade5e85ce6e89bdf1f4 ser2net-3.5.tar.gz +sha1 0ad0affd37ef544c23f42a3f46d09e969d0d9116 ser2net-3.5.tar.gz # Locally computed: -sha256 d846066e27c3072565990745d030357aa0c278f96b7d1d4f59023347c1db8824 ser2net-3.4.tar.gz +sha256 ba9e1d60a89fd7ed075553b4a2074352902203f7fbd9b65b15048c05f0e3f3be ser2net-3.5.tar.gz +sha256 501f3108e6c03e5a0a5585ebaaa369171aead5319cd0a7a4dc1f66211c1f09f1 COPYING diff --git a/buildroot/package/ser2net/ser2net.mk b/buildroot/package/ser2net/ser2net.mk index 833becc3e0a..5ab5c4d2ae2 100644 --- a/buildroot/package/ser2net/ser2net.mk +++ b/buildroot/package/ser2net/ser2net.mk @@ -4,7 +4,7 @@ # ################################################################################ -SER2NET_VERSION = 3.4 +SER2NET_VERSION = 3.5 SER2NET_SITE = http://downloads.sourceforge.net/project/ser2net/ser2net SER2NET_LICENSE = GPL-2.0+ SER2NET_LICENSE_FILES = COPYING diff --git a/buildroot/package/setools/Config.in b/buildroot/package/setools/Config.in index ae0c45fe3fd..0a7899b5eb9 100644 --- a/buildroot/package/setools/Config.in +++ b/buildroot/package/setools/Config.in @@ -8,6 +8,7 @@ config BR2_PACKAGE_SETOOLS depends on BR2_USE_MMU select BR2_PACKAGE_PYTHON3 if !BR2_PACKAGE_PYTHON select BR2_PACKAGE_PYTHON_ENUM34 if !BR2_PACKAGE_PYTHON3 + select BR2_PACKAGE_PYTHON_NETWORKX # runtime select BR2_PACKAGE_PYTHON_SETUPTOOLS select BR2_PACKAGE_LIBSELINUX help @@ -16,6 +17,7 @@ config BR2_PACKAGE_SETOOLS * 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/TresysTechnology/setools diff --git a/buildroot/package/setools/setools.mk b/buildroot/package/setools/setools.mk index 6748c95c236..1ed7e976d6f 100644 --- a/buildroot/package/setools/setools.mk +++ b/buildroot/package/setools/setools.mk @@ -11,7 +11,7 @@ SETOOLS_INSTALL_STAGING = YES SETOOLS_LICENSE = GPL-2.0+, LGPL-2.1+ SETOOLS_LICENSE_FILES = COPYING COPYING.GPL COPYING.LGPL SETOOLS_SETUP_TYPE = setuptools -HOST_SETOOLS_DEPENDENCIES = host-libselinux host-libsepol +HOST_SETOOLS_DEPENDENCIES = host-libselinux host-libsepol host-python-networkx ifeq ($(BR2_PACKAGE_PYTHON3),y) SETOOLS_PYLIBVER = python$(PYTHON3_VERSION_MAJOR) @@ -36,14 +36,6 @@ define HOST_SETOOLS_FIX_SETUP endef HOST_SETOOLS_POST_PATCH_HOOKS += HOST_SETOOLS_FIX_SETUP -# sedta and seinfoflow depend on python-networkx. This package is not -# available in buildroot. -define SETOOLS_REMOVE_BROKEN_SCRIPTS - $(RM) $(TARGET_DIR)/usr/bin/sedta - $(RM) $(TARGET_DIR)/usr/bin/seinfoflow -endef -SETOOLS_POST_INSTALL_TARGET_HOOKS += SETOOLS_REMOVE_BROKEN_SCRIPTS - # 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. @@ -55,12 +47,8 @@ endef SETOOLS_POST_INSTALL_TARGET_HOOKS += SETOOLS_REMOVE_QT_SCRIPTS endif -# sedta and seinfoflow depend on python-networkx. This package is not -# available in buildroot. pyqt5 is not a host-package, remove apol -# from the host directory as well. +# pyqt5 is not a host-package, remove apol from the host directory. define HOST_SETOOLS_REMOVE_BROKEN_SCRIPTS - $(RM) $(HOST_DIR)/bin/sedta - $(RM) $(HOST_DIR)/bin/seinfoflow $(RM) $(HOST_DIR)/bin/apol endef HOST_SETOOLS_POST_INSTALL_HOOKS += HOST_SETOOLS_REMOVE_BROKEN_SCRIPTS diff --git a/buildroot/package/sg3_utils/Config.in b/buildroot/package/sg3_utils/Config.in index 4b74eda6416..f4db4b9b99f 100644 --- a/buildroot/package/sg3_utils/Config.in +++ b/buildroot/package/sg3_utils/Config.in @@ -1,6 +1,5 @@ config BR2_PACKAGE_SG3_UTILS bool "sg3-utils" - depends on !BR2_bfin # symbol prefixing problems depends on BR2_TOOLCHAIN_HAS_THREADS help Low level utilities for devices that use a SCSI command set. @@ -16,5 +15,4 @@ config BR2_PACKAGE_SG3_UTILS_PROGS endif comment "sg3-utils needs a toolchain w/ threads" - depends on !BR2_bfin depends on !BR2_TOOLCHAIN_HAS_THREADS diff --git a/buildroot/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch b/buildroot/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch index 3ee0cddb758..ad3b19eb7d9 100644 --- a/buildroot/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch +++ b/buildroot/package/skalibs/0002-No-runtime-tests-for-type-sizes.patch @@ -1,6 +1,6 @@ -From df3a3e708653ca1cdb0eda77bbda5cb8de177571 Mon Sep 17 00:00:00 2001 +From f411b502222c8fe442d7b3beb00b530c9e16b7a2 Mon Sep 17 00:00:00 2001 From: "Van Bemten, Lionel (Nokia - BE/Antwerp)" -Date: Tue, 10 Oct 2017 19:51:18 +0200 +Date: Sun, 29 Apr 2018 19:53:40 +0200 Subject: [PATCH] No runtime tests for type sizes Replace build and execution of runtime test programs for determining @@ -11,14 +11,14 @@ This improves support for cross-compilation. Signed-off-by: "Van Bemten, Lionel (Nokia - BE/Antwerp)" Signed-off-by: Eric Le Bihan --- - configure | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++------------- - 1 file changed, 61 insertions(+), 16 deletions(-) + configure | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++------------- + 1 file changed, 60 insertions(+), 15 deletions(-) diff --git a/configure b/configure -index f2a77f3..8348b1f 100755 +index 434eec8..c09e9c8 100755 --- a/configure +++ b/configure -@@ -154,25 +154,70 @@ choose () { +@@ -155,23 +155,69 @@ choose () { fi } @@ -65,12 +65,12 @@ index f2a77f3..8348b1f 100755 +} +EOF + if $CC_AUTO $CPPFLAGS_AUTO $CPPFLAGS $CPPFLAGS_POST $CFLAGS_AUTO $CFLAGS $CFLAGS_POST $LDFLAGS_AUTO $LDFLAGS $LDFLAGS_POST -o trysignof${abbr} trysignof${abbr}.c 2>/dev/null; then -+ echo "#define ${package_macro_name}_HASSIGNED${caps}" >> $sysdeps/sysdeps.h -+ echo "#undef ${package_macro_name}_HASUNSIGNED${caps}" >> $sysdeps/sysdeps.h ++ echo "#define ${package_macro_name}_HAS${caps}" >> $sysdeps/sysdeps.h ++ echo "#undef ${package_macro_name}_HASUN${caps}" >> $sysdeps/sysdeps.h + echo "signed${abbr}: yes" >> $sysdeps/sysdeps + else -+ echo "#undef ${package_macro_name}_HASSIGNED${caps}" >> $sysdeps/sysdeps.h -+ echo "#define ${package_macro_name}_HASUNSIGNED${caps}" >> $sysdeps/sysdeps.h ++ echo "#undef ${package_macro_name}_HAS${caps}" >> $sysdeps/sysdeps.h ++ echo "#define ${package_macro_name}_HASUN${caps}" >> $sysdeps/sysdeps.h + echo "signed${abbr}: no" >> $sysdeps/sysdeps + fi + rm -f trysignof${abbr} trysignof${abbr}.c @@ -90,20 +90,26 @@ index f2a77f3..8348b1f 100755 - ./output-types | grep -F signed | while read key value ; do - caps=$(echo $key | sed s/:\$// | tr a-z A-Z) - if test $value = yes ; then -- echo "#define ${package_macro_name}_HASSIGNED${caps}" -- echo "#undef ${package_macro_name}_HASUNSIGNED${caps}" +- echo "#define ${package_macro_name}_HAS${caps}" +- echo "#undef ${package_macro_name}_HASUN${caps}" - else -- echo "#undef ${package_macro_name}_HASSIGNED${caps}" -- echo "#define ${package_macro_name}_HASUNSIGNED${caps}" +- echo "#undef ${package_macro_name}_HAS${caps}" +- echo "#define ${package_macro_name}_HASUN${caps}" - fi >> $sysdeps/sysdeps.h + for t in size uid gid pid time dev ino; do + findtypesize "${t}_t" "$t" + findtypesign "${t}_t" "$t" done -- rm -f output-types + rm -f output-types echo " ... done" - } +@@ -548,7 +594,6 @@ EOF + choose cl itimer ITIMER 'setitimer()' + choose cl namespaces NAMESPACES 'namespaces' + choose cl nsgetparent NSGETPARENT 'NS_GET_PARENT' +- choose cl explicit_bzero EXPLICIT_BZERO 'explicit_bzero()' + echo '#endif' >> $sysdeps/sysdeps.h + fi -- -2.13.6 +2.14.3 diff --git a/buildroot/package/skalibs/skalibs.hash b/buildroot/package/skalibs/skalibs.hash index a65aaadb3d1..0646dbc0e4c 100644 --- a/buildroot/package/skalibs/skalibs.hash +++ b/buildroot/package/skalibs/skalibs.hash @@ -1,3 +1,3 @@ # Locally generated -sha256 8508ca00d4e2355e9ec0ec7f4808e98b349999d6732d2f123ac53b4df5260c81 skalibs-2.6.3.1.tar.gz +sha256 30ac73f1e8da6387fcfa19cfe1e326a143b4d811aaf532988b280daefa56dcc7 skalibs-2.6.4.0.tar.gz sha256 3eadcf980c40da0f257b8292d805ff41e5e5a908c1942315d9a627732e1aa012 COPYING diff --git a/buildroot/package/skalibs/skalibs.mk b/buildroot/package/skalibs/skalibs.mk index 2ce0c33ff00..7672b0d31ab 100644 --- a/buildroot/package/skalibs/skalibs.mk +++ b/buildroot/package/skalibs/skalibs.mk @@ -4,7 +4,7 @@ # ################################################################################ -SKALIBS_VERSION = 2.6.3.1 +SKALIBS_VERSION = 2.6.4.0 SKALIBS_SITE = http://skarnet.org/software/skalibs SKALIBS_LICENSE = ISC SKALIBS_LICENSE_FILES = COPYING diff --git a/buildroot/package/skeleton-init-common/skeleton-init-common.mk b/buildroot/package/skeleton-init-common/skeleton-init-common.mk index 8228a8103f6..e8a05220526 100644 --- a/buildroot/package/skeleton-init-common/skeleton-init-common.mk +++ b/buildroot/package/skeleton-init-common/skeleton-init-common.mk @@ -79,6 +79,13 @@ 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 diff --git a/buildroot/package/skeleton-init-systemd/skeleton-init-systemd.mk b/buildroot/package/skeleton-init-systemd/skeleton-init-systemd.mk index ff64205cbef..5d6b716f7a6 100644 --- a/buildroot/package/skeleton-init-systemd/skeleton-init-systemd.mk +++ b/buildroot/package/skeleton-init-systemd/skeleton-init-systemd.mk @@ -55,12 +55,6 @@ define SKELETON_INIT_SYSTEMD_PRE_ROOTFS_VAR endef SKELETON_INIT_SYSTEMD_ROOTFS_PRE_CMD_HOOKS += SKELETON_INIT_SYSTEMD_PRE_ROOTFS_VAR -define SKELETON_INIT_SYSTEMD_POST_ROOTFS_VAR - rm -rf $(TARGET_DIR)/var - mv $(TARGET_DIR)/usr/share/factory/var $(TARGET_DIR)/var -endef -SKELETON_INIT_SYSTEMD_ROOTFS_POST_CMD_HOOKS += SKELETON_INIT_SYSTEMD_POST_ROOTFS_VAR - endif define SKELETON_INIT_SYSTEMD_INSTALL_TARGET_CMDS diff --git a/buildroot/package/skeleton/skeleton.mk b/buildroot/package/skeleton/skeleton.mk index d380f416497..efcf420d724 100644 --- a/buildroot/package/skeleton/skeleton.mk +++ b/buildroot/package/skeleton/skeleton.mk @@ -11,4 +11,16 @@ SKELETON_ADD_TOOLCHAIN_DEPENDENCY = NO SKELETON_ADD_SKELETON_DEPENDENCY = NO +# We create a compatibility symlink in case a post-build script still +# uses $(HOST_DIR)/usr +define HOST_SKELETON_INSTALL_CMDS + $(Q)ln -snf . $(HOST_DIR)/usr + $(Q)mkdir -p $(HOST_DIR)/lib + $(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/buildroot/package/sngrep/0001-Fix-building-against-LibreSSL.patch b/buildroot/package/sngrep/0001-Fix-building-against-LibreSSL.patch new file mode 100644 index 00000000000..311f0b3d52d --- /dev/null +++ b/buildroot/package/sngrep/0001-Fix-building-against-LibreSSL.patch @@ -0,0 +1,78 @@ +From 05d110ef57e9647b84c9656e746f72a76ea8c758 Mon Sep 17 00:00:00 2001 +From: Adam Duskett +Date: Tue, 6 Feb 2018 12:47:43 -0500 +Subject: [PATCH] Fix building against LibreSSL + +LibreSSL declares OPENSSL_VERSION_NUMBER == 2.0 but does not include most +changes from OpenSSL >= 1.1. + +To work around this: + +- Check to see if LIBRESSL_VERSION_NUMBER is defined. +- If so, define MODSSL_USE_OPENSSL_PRE_1_1_API. +- Change all checks for OPENSSL_VERSION_NUMBER < 0x10100000L to + '#if MODSSL_USE_OPENSSL_PRE_1_1_API' + +Upstream-Status: Committed +https://github.com/irontec/sngrep/commit/0ee014d497986c40de264f6392b01fdf4e337fd5 + +Signed-off-by: Adam Duskett +--- + src/capture_openssl.c | 6 +++--- + src/capture_openssl.h | 9 +++++++++ + 2 files changed, 12 insertions(+), 3 deletions(-) + +diff --git a/src/capture_openssl.c b/src/capture_openssl.c +index 0a052c3..a4e1de0 100644 +--- a/src/capture_openssl.c ++++ b/src/capture_openssl.c +@@ -94,7 +94,7 @@ P_hash(const char *digest, unsigned char *dest, int dlen, unsigned char *secret, + + // Calculate enough data to fill destination + while (pending > 0) { +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if MODSSL_USE_OPENSSL_PRE_1_1_API + HMAC_CTX hm; + HMAC_Init(&hm, secret, sslen, md); + HMAC_Update(&hm, tmpseed, tmpslen); +@@ -495,7 +495,7 @@ tls_process_record(struct SSLConnection *conn, const uint8_t *payload, + break; + case change_cipher_spec: + // From now on, this connection will be encrypted using MasterSecret +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if MODSSL_USE_OPENSSL_PRE_1_1_API + if (conn->client_cipher_ctx->cipher && conn->server_cipher_ctx->cipher) + conn->encrypted = 1; + #else +@@ -588,7 +588,7 @@ tls_process_record_handshake(struct SSLConnection *conn, const opaque *fragment, + // Decrypt PreMasterKey + clientkeyex = (struct ClientKeyExchange *) body; + +-#if OPENSSL_VERSION_NUMBER < 0x10100000L ++#if MODSSL_USE_OPENSSL_PRE_1_1_API + RSA_private_decrypt(UINT16_INT(clientkeyex->length), + (const unsigned char *) &clientkeyex->exchange_keys, + (unsigned char *) &conn->pre_master_secret, +diff --git a/src/capture_openssl.h b/src/capture_openssl.h +index 31f48ce..b3e88fe 100644 +--- a/src/capture_openssl.h ++++ b/src/capture_openssl.h +@@ -65,6 +65,15 @@ + #define OLD_OPENSSL_VERSION 1 + #endif + ++/* LibreSSL declares OPENSSL_VERSION_NUMBER == 2.0 but does not include most ++ * changes from OpenSSL >= 1.1 (new functions, macros, deprecations, ...) ++ */ ++#if defined(LIBRESSL_VERSION_NUMBER) ++#define MODSSL_USE_OPENSSL_PRE_1_1_API (1) ++#else ++#define MODSSL_USE_OPENSSL_PRE_1_1_API (OPENSSL_VERSION_NUMBER < 0x10100000L) ++#endif ++ + //! Three bytes unsigned integer + typedef struct uint16 { + unsigned char x[2]; +-- +2.14.3 + diff --git a/buildroot/package/sngrep/sngrep.hash b/buildroot/package/sngrep/sngrep.hash index cd2dff55362..16552cf5cdb 100644 --- a/buildroot/package/sngrep/sngrep.hash +++ b/buildroot/package/sngrep/sngrep.hash @@ -1,6 +1,6 @@ -# From https://github.com/irontec/sngrep/releases/download/v1.4.4/sngrep-1.4.4.tar.gz.md5sum -md5 8e2286c2e23f4b29667025e5809dc303 sngrep-1.4.4.tar.gz +# From https://github.com/irontec/sngrep/releases/download/v1.4.5/sngrep-1.4.5.tar.gz.md5sum +md5 11f1cdb8e8f3a3c9ef02ecd12268322e sngrep-1.4.5.tar.gz # Locally computed -sha256 2379b8b3e9498d426a0bc03b90d74170a80f98f167f89c126d53dcc66bc5f60b sngrep-v1.4.4.tar.gz +sha256 16f1566f4507ba560c7461cc7ff1c1653beb14b8baf7846269bbb4880564e57f sngrep-v1.4.5.tar.gz sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 LICENSE diff --git a/buildroot/package/sngrep/sngrep.mk b/buildroot/package/sngrep/sngrep.mk index 7442cef529e..3f1fe989cfb 100644 --- a/buildroot/package/sngrep/sngrep.mk +++ b/buildroot/package/sngrep/sngrep.mk @@ -4,7 +4,7 @@ # ################################################################################ -SNGREP_VERSION = v1.4.4 +SNGREP_VERSION = v1.4.5 SNGREP_SITE = $(call github,irontec,sngrep,$(SNGREP_VERSION)) SNGREP_LICENSE = GPL-3.0+ SNGREP_LICENSE_FILES = LICENSE @@ -22,7 +22,8 @@ SNGREP_DEPENDENCIES += openssl SNGREP_CONF_OPTS += --with-openssl --without-gnutls # gnutls support also requires libgcrypt else ifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGCRYPT),yy) -SNGREP_DEPENDENCIES += gnutls +SNGREP_CONF_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 diff --git a/buildroot/package/snort/0001-configure.in-Avoid-path-poisoning-with-libpcap.patch b/buildroot/package/snort/0001-configure.in-Avoid-path-poisoning-with-libpcap.patch new file mode 100644 index 00000000000..286b6f58838 --- /dev/null +++ b/buildroot/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/buildroot/package/snort/0002-configure.in-Allow-to-override-the-INADDR_NONE-check.patch b/buildroot/package/snort/0002-configure.in-Allow-to-override-the-INADDR_NONE-check.patch new file mode 100644 index 00000000000..65751542406 --- /dev/null +++ b/buildroot/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/buildroot/package/snort/0003-configure.in-convert-AC_RUN_IFELSE-to-AC_CHECK_MEMBE.patch b/buildroot/package/snort/0003-configure.in-convert-AC_RUN_IFELSE-to-AC_CHECK_MEMBE.patch new file mode 100644 index 00000000000..059190ff6d7 --- /dev/null +++ b/buildroot/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/buildroot/package/snort/0004-configure.in-convert-AC_RUN_IFELSE-to-AC_COMPILE_IFE.patch b/buildroot/package/snort/0004-configure.in-convert-AC_RUN_IFELSE-to-AC_COMPILE_IFE.patch new file mode 100644 index 00000000000..9c5e611b03b --- /dev/null +++ b/buildroot/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/buildroot/package/snort/0005-fix-sparc.patch b/buildroot/package/snort/0005-fix-sparc.patch new file mode 100644 index 00000000000..14792d2c59d --- /dev/null +++ b/buildroot/package/snort/0005-fix-sparc.patch @@ -0,0 +1,28 @@ +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 + +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 +@@ -942,8 +942,6 @@ fi + + # 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_RUN_IFELSE( + [AC_LANG_PROGRAM( +@@ -957,8 +955,6 @@ if eval "echo $host_cpu|grep -i sparc >/ + 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/buildroot/package/snort/Config.in b/buildroot/package/snort/Config.in new file mode 100644 index 00000000000..7d2c52c3f32 --- /dev/null +++ b/buildroot/package/snort/Config.in @@ -0,0 +1,26 @@ +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 + 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/buildroot/package/snort/snort.hash b/buildroot/package/snort/snort.hash new file mode 100644 index 00000000000..211e862b7fc --- /dev/null +++ b/buildroot/package/snort/snort.hash @@ -0,0 +1,6 @@ +# Locally computed: +sha256 9f6b3aeac5a109f55504bd370564ac431cb1773507929dc461626898f33f46cd snort-2.9.11.1.tar.gz + +# Hash for license files: +sha256 f98260a6d3e5ef4ede8a2a6b698e5ac91d64c09243f7171e1c5b17b920a835c7 LICENSE +sha256 3f1cbfb20bb2c608e1a474421880d08b8cba6abb00ab7736d22c481d71656a6d COPYING diff --git a/buildroot/package/snort/snort.mk b/buildroot/package/snort/snort.mk new file mode 100644 index 00000000000..568393468bb --- /dev/null +++ b/buildroot/package/snort/snort.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# snort +# +################################################################################ + +SNORT_VERSION = 2.9.11.1 +SNORT_SITE = https://www.snort.org/downloads/snort +SNORT_LICENSE = GPL-2.0 +SNORT_LICENSE_FILES = LICENSE COPYING + +SNORT_DEPENDENCIES = libpcap libdnet daq pcre + +# 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_PACKAGE_LIBTIRPC),y) +SNORT_DEPENDENCIES += libtirpc host-pkgconf +SNORT_CFLAGS += `$(PKG_CONFIG_HOST_BINARY) --cflags libtirpc` +SNORT_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs libtirpc` +endif + +SNORT_CONF_ENV = \ + CFLAGS="$(TARGET_CFLAGS) $(SNORT_CFLAGS)" \ + LIBS="$(SNORT_LIBS)" \ + have_inaddr_none=yes + +$(eval $(autotools-package)) diff --git a/buildroot/package/speex/speex.mk b/buildroot/package/speex/speex.mk index 1b278ea23db..3c188b631e3 100644 --- a/buildroot/package/speex/speex.mk +++ b/buildroot/package/speex/speex.mk @@ -31,8 +31,4 @@ endef SPEEX_POST_CONFIGURE_HOOKS += SPEEX_LIBTOOL_FIXUP -define SPEEX_BUILD_CMDS - $($(PKG)_MAKE_ENV) $(MAKE) $($(PKG)_MAKE_OPTS) -C $(@D)/$($(PKG)_SUBDIR) -endef - $(eval $(autotools-package)) diff --git a/buildroot/package/spidev_test/spidev_test.mk b/buildroot/package/spidev_test/spidev_test.mk index 1d657803b44..bf8170cd2ce 100644 --- a/buildroot/package/spidev_test/spidev_test.mk +++ b/buildroot/package/spidev_test/spidev_test.mk @@ -32,7 +32,7 @@ endef SPIDEV_TEST_POST_PATCH_HOOKS += SPIDEV_ADD_LINUX_IOCTL define SPIDEV_TEST_EXTRACT_CMDS - cp $(DL_DIR)/$(SPIDEV_TEST_SOURCE) $(@D)/spidev_test.c + cp $(SPIDEV_TEST_DL_DIR)/$(SPIDEV_TEST_SOURCE) $(@D)/spidev_test.c endef define SPIDEV_TEST_BUILD_CMDS diff --git a/buildroot/package/sqlite/Config.in b/buildroot/package/sqlite/Config.in index ec7396860c2..517af50e679 100644 --- a/buildroot/package/sqlite/Config.in +++ b/buildroot/package/sqlite/Config.in @@ -16,6 +16,13 @@ config BR2_PACKAGE_SQLITE_STAT3 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 diff --git a/buildroot/package/sqlite/sqlite.hash b/buildroot/package/sqlite/sqlite.hash index be5820e1f80..2aac7dc1d36 100644 --- a/buildroot/package/sqlite/sqlite.hash +++ b/buildroot/package/sqlite/sqlite.hash @@ -1,6 +1,6 @@ # From http://www.sqlite.org/download.html -sha1 f56fe3407d8297fc0a68a058f4c9e6b77e83575c sqlite-autoconf-3210000.tar.gz +sha1 2fb24ec12001926d5209d2da90d252b9825366ac sqlite-autoconf-3220000.tar.gz # Calculated based on the hash above -sha256 d7dd516775005ad87a57f428b6f86afd206cb341722927f104d3f0cf65fbbbe3 sqlite-autoconf-3210000.tar.gz +sha256 2824ab1238b706bc66127320afbdffb096361130e23291f26928a027b885c612 sqlite-autoconf-3220000.tar.gz # Locally calculated sha256 66e056b6e8687f32af30d5187611b98b12a8f46f07aaf62f43585f276e8f0ac9 tea/license.terms diff --git a/buildroot/package/sqlite/sqlite.mk b/buildroot/package/sqlite/sqlite.mk index 5239592f186..5ae17e17f64 100644 --- a/buildroot/package/sqlite/sqlite.mk +++ b/buildroot/package/sqlite/sqlite.mk @@ -4,9 +4,9 @@ # ################################################################################ -SQLITE_VERSION = 3210000 +SQLITE_VERSION = 3220000 SQLITE_SOURCE = sqlite-autoconf-$(SQLITE_VERSION).tar.gz -SQLITE_SITE = http://www.sqlite.org/2017 +SQLITE_SITE = http://www.sqlite.org/2018 SQLITE_LICENSE = Public domain SQLITE_LICENSE_FILES = tea/license.terms SQLITE_INSTALL_STAGING = YES @@ -15,6 +15,10 @@ ifeq ($(BR2_PACKAGE_SQLITE_STAT3),y) SQLITE_CFLAGS += -DSQLITE_ENABLE_STAT3 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 @@ -35,7 +39,10 @@ ifeq ($(BR2_PACKAGE_SQLITE_NO_SYNC),y) SQLITE_CFLAGS += -DSQLITE_NO_SYNC endif -SQLITE_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) $(SQLITE_CFLAGS)" +# fallback to standard -O3 when -Ofast is present to avoid -ffast-math +SQLITE_CFLAGS += $(subst -Ofast,-O3,$(TARGET_CFLAGS)) + +SQLITE_CONF_ENV = CFLAGS="$(SQLITE_CFLAGS)" ifeq ($(BR2_STATIC_LIBS),y) SQLITE_CONF_OPTS += --enable-dynamic-extensions=no diff --git a/buildroot/package/squashfs/0001-musl.patch b/buildroot/package/squashfs/0001-musl.patch deleted file mode 100644 index 891b1717a20..00000000000 --- a/buildroot/package/squashfs/0001-musl.patch +++ /dev/null @@ -1,71 +0,0 @@ -Fix musl build - -Downloaded from -http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-devtools/squashfs-tools/squashfs-tools/fix-compat.patch -and adjusted paths. - -Signed-off-by: Bernd Kuhls - -Define FNM_EXTMATCH if not defined its glibc specific define -include missing sys/stat.h for stat* function declarations - -Upstream-Status: Pending -Signed-off-by: Khem Raj - -Index: squashfs-tools/action.c -=================================================================== ---- a/squashfs-tools.orig/action.c -+++ b/squashfs-tools/action.c -@@ -44,6 +44,10 @@ - #include "action.h" - #include "error.h" - -+#if !defined(FNM_EXTMATCH) -+#define FNM_EXTMATCH 0 -+#endif -+ - /* - * code to parse actions - */ -Index: squashfs-tools/mksquashfs.c -=================================================================== ---- a/squashfs-tools.orig/mksquashfs.c -+++ b/squashfs-tools/mksquashfs.c -@@ -1286,6 +1286,10 @@ void write_dir(squashfs_inode *inode, st - dir_size + 3, directory_block, directory_offset, NULL, NULL, - dir, 0); - -+#if !defined(FNM_EXTMATCH) -+#define FNM_EXTMATCH 0 -+#endif -+ - #ifdef SQUASHFS_TRACE - { - unsigned char *dirp; -Index: squashfs-tools/pseudo.c -=================================================================== ---- a/squashfs-tools.orig/pseudo.c -+++ b/squashfs-tools/pseudo.c -@@ -32,6 +32,7 @@ - #include - #include - #include -+#include - #include - - #include "pseudo.h" -Index: squashfs-tools/unsquashfs.c -=================================================================== ---- a/squashfs-tools.orig/unsquashfs.c -+++ b/squashfs-tools/unsquashfs.c -@@ -38,6 +38,10 @@ - #include - #include - -+#ifndef FNM_EXTMATCH -+#define FNM_EXTMATCH 0 -+#endif -+ - struct cache *fragment_cache, *data_cache; - struct queue *to_reader, *to_inflate, *to_writer, *from_writer; - pthread_t *thread, *inflator_thread; diff --git a/buildroot/package/squashfs/Config.in b/buildroot/package/squashfs/Config.in index 70c0fc98084..c16ebbf27f0 100644 --- a/buildroot/package/squashfs/Config.in +++ b/buildroot/package/squashfs/Config.in @@ -41,6 +41,12 @@ config BR2_PACKAGE_SQUASHFS_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" diff --git a/buildroot/package/squashfs/squashfs.hash b/buildroot/package/squashfs/squashfs.hash index 74fdb443541..4464e62c02b 100644 --- a/buildroot/package/squashfs/squashfs.hash +++ b/buildroot/package/squashfs/squashfs.hash @@ -1,2 +1,5 @@ # Locally computed -sha256 2c49392816615b73bf5d6cdce9776cb66a01f5a1494b1d9af580667e32bab001 squashfs-3de1687d7432ea9b302c2db9521996f506c140a3.tar.gz +sha256 bd0aa3011320b8ebee68aa406060de277bef16daf81bad5b9f70cbea6db1a779 squashfs-e38956b92f738518c29734399629e7cdb33072d3.tar.gz + +# License files +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/buildroot/package/squashfs/squashfs.mk b/buildroot/package/squashfs/squashfs.mk index 9599d892b26..7467342c486 100644 --- a/buildroot/package/squashfs/squashfs.mk +++ b/buildroot/package/squashfs/squashfs.mk @@ -4,7 +4,7 @@ # ################################################################################ -SQUASHFS_VERSION = 3de1687d7432ea9b302c2db9521996f506c140a3 +SQUASHFS_VERSION = e38956b92f738518c29734399629e7cdb33072d3 SQUASHFS_SITE = https://git.kernel.org/pub/scm/fs/squashfs/squashfs-tools.git SQUASHFS_SITE_METHOD = git SQUASHFS_LICENSE = GPL-2.0+ @@ -39,6 +39,13 @@ 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 @@ -46,7 +53,7 @@ else SQUASHFS_MAKE_ARGS += GZIP_SUPPORT=0 endif -HOST_SQUASHFS_DEPENDENCIES = host-zlib host-lz4 host-lzo host-xz +HOST_SQUASHFS_DEPENDENCIES = host-zlib host-lz4 host-lzo host-xz host-zstd HOST_SQUASHFS_MAKE_ARGS = \ XATTR_SUPPORT=1 \ @@ -54,7 +61,8 @@ HOST_SQUASHFS_MAKE_ARGS = \ GZIP_SUPPORT=1 \ LZ4_SUPPORT=1 \ LZO_SUPPORT=1 \ - LZMA_XZ_SUPPORT=1 + LZMA_XZ_SUPPORT=1 \ + ZSTD_SUPPORT=1 define SQUASHFS_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE) \ diff --git a/buildroot/package/squid/S97squid b/buildroot/package/squid/S97squid index 535b1d9622b..05fb93e317c 100755 --- a/buildroot/package/squid/S97squid +++ b/buildroot/package/squid/S97squid @@ -1,6 +1,5 @@ #!/bin/sh -[ -x /usr/sbin/squid ] || exit 0 [ -f /etc/squid.conf ] || exit 0 case "$1" in diff --git a/buildroot/package/squid/squid.mk b/buildroot/package/squid/squid.mk index 8ade55ee37e..2d21ad8858d 100644 --- a/buildroot/package/squid/squid.mk +++ b/buildroot/package/squid/squid.mk @@ -29,7 +29,6 @@ SQUID_CONF_OPTS = \ --enable-removal-policies="lru,heap" \ --with-filedescriptors=1024 \ --disable-ident-lookups \ - --without-mit-krb5 \ --enable-auth-basic="fake getpwnam" \ --enable-auth-digest="file" \ --enable-auth-negotiate="wrapper" \ @@ -50,6 +49,13 @@ else SQUID_CONF_ENV += squid_cv_gnu_atomics=no 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_OPENSSL),y) SQUID_CONF_OPTS += --with-openssl SQUID_DEPENDENCIES += openssl diff --git a/buildroot/package/strace/0001-m68k-fix-build.patch b/buildroot/package/strace/0001-m68k-fix-build.patch new file mode 100644 index 00000000000..9675eaaa3c7 --- /dev/null +++ b/buildroot/package/strace/0001-m68k-fix-build.patch @@ -0,0 +1,97 @@ +From 6ebf6c4f9e5ebca123a5b5f24afe67cf0473cf92 Mon Sep 17 00:00:00 2001 +From: "Dmitry V. Levin" +Date: Wed, 21 Feb 2018 23:03:27 +0000 +Subject: [PATCH] m68k: fix build + +When is included after , the build fails +on m68k with the following diagnostics: + + In file included from /usr/include/linux/ptrace.h:101:0, + from ptrace.h:51, + from sigreturn.c:2: + /usr/include/m68k-linux-gnu/sys/reg.h:26:3: error: expected identifier + before numeric constant + PT_D1 = 0, + ^ + +Apparently, the only architecture where strace needs definitions +provided by is x86_64, other three (m68k, tile, and x86) +are fine with definitions already provided by . + +Fix the issue by getting rid of and defining necessary +macros in linux/x86_64/arch_regs.h file. + +* configure.ac (AC_CHECK_HEADERS): Remove sys/reg.h. +* regs.h: Do not include . +* linux/x86_64/arch_regs.h (R15, R14, R13, R12, RBP, RBX, R11, R10, +R9, R8, RAX, RCX, RDX, RSI, RDI, ORIG_RAX, RIP, CS, EFLAGS, RSP, SS, +FS_BASE, GS_BASE, DS, ES, FS, GS): New macros. +* NEWS: Mention this fix. + +Fixes: v4.21~21 ("Include early") +[baruch: drop the NEWS and configure.ac hunks] +Signed-off-by: Baruch Siach +--- +Upstream status: commit 6ebf6c4f9e5e + + NEWS | 3 +++ + configure.ac | 1 - + linux/x86_64/arch_regs.h | 29 +++++++++++++++++++++++++++++ + regs.h | 5 ----- + 4 files changed, 32 insertions(+), 6 deletions(-) + +diff --git a/linux/x86_64/arch_regs.h b/linux/x86_64/arch_regs.h +index c2ccee671d4f..d502ca4bf202 100644 +--- a/linux/x86_64/arch_regs.h ++++ b/linux/x86_64/arch_regs.h +@@ -1,2 +1,31 @@ + extern uint32_t *const i386_esp_ptr; + extern uint64_t *const x86_64_rsp_ptr; ++ ++/* does not provide these definitions. */ ++#define R15 0 ++#define R14 1 ++#define R13 2 ++#define R12 3 ++#define RBP 4 ++#define RBX 5 ++#define R11 6 ++#define R10 7 ++#define R9 8 ++#define R8 9 ++#define RAX 10 ++#define RCX 11 ++#define RDX 12 ++#define RSI 13 ++#define RDI 14 ++#define ORIG_RAX 15 ++#define RIP 16 ++#define CS 17 ++#define EFLAGS 18 ++#define RSP 19 ++#define SS 20 ++#define FS_BASE 21 ++#define GS_BASE 22 ++#define DS 23 ++#define ES 24 ++#define FS 25 ++#define GS 26 +diff --git a/regs.h b/regs.h +index d89581d7dd3f..7a044cef8fbf 100644 +--- a/regs.h ++++ b/regs.h +@@ -2,11 +2,6 @@ + #define STRACE_REGS_H + + #include +- +-#ifdef HAVE_SYS_REG_H +-# include +-#endif +- + #include "arch_regs.h" + + #endif /* !STRACE_REGS_H */ +-- +2.17.0 + diff --git a/buildroot/package/strace/Config.in b/buildroot/package/strace/Config.in index b84b3fd179e..c7649e57898 100644 --- a/buildroot/package/strace/Config.in +++ b/buildroot/package/strace/Config.in @@ -7,6 +7,9 @@ config BR2_PACKAGE_STRACE 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" diff --git a/buildroot/package/strace/strace.hash b/buildroot/package/strace/strace.hash index 404be397884..21da83058e9 100644 --- a/buildroot/package/strace/strace.hash +++ b/buildroot/package/strace/strace.hash @@ -1,7 +1,4 @@ -# From https://sourceforge.net/projects/strace/files/strace/4.20/ -md5 f2271ab0fac49ebee9cbd7f3469227cb strace-4.20.tar.xz -sha1 9cebc754af3434e4027a07745770892f685c0316 strace-4.20.tar.xz # Locally calculated after checking signature -# https://sourceforge.net/projects/strace/files/strace/4.20/strace-4.20.tar.xz.asc -sha256 5bf3148dd17306a42566f7da17368fdd781afa147db05ea63a4ca2b50f58c523 strace-4.20.tar.xz +# https://strace.io/files/4.21/strace-4.21.tar.xz.asc +sha256 5c7688db44073e94c59a5627744e5699454419824cc8166e8bcfd7ec58375c37 strace-4.21.tar.xz sha256 ea7ff222f36c9df0aa2924a8f7c7d2aec3ea11e752feba4b15ec79b695b6236a COPYING diff --git a/buildroot/package/strace/strace.mk b/buildroot/package/strace/strace.mk index ba57774e5d4..1cb0c88c4f3 100644 --- a/buildroot/package/strace/strace.mk +++ b/buildroot/package/strace/strace.mk @@ -4,11 +4,12 @@ # ################################################################################ -STRACE_VERSION = 4.20 +STRACE_VERSION = 4.21 STRACE_SOURCE = strace-$(STRACE_VERSION).tar.xz -STRACE_SITE = http://downloads.sourceforge.net/project/strace/strace/$(STRACE_VERSION) +STRACE_SITE = https://strace.io/files/$(STRACE_VERSION) STRACE_LICENSE = BSD-3-Clause STRACE_LICENSE_FILES = COPYING +STRACE_CONF_OPTS = --enable-mpers=check # strace bundle some kernel headers to build libmpers, this mixes userspace # headers and kernel headers which break the build with musl. @@ -18,6 +19,13 @@ STRACE_CONF_OPTS += st_cv_m32_mpers=no \ st_cv_mx32_mpers=no endif +ifeq ($(BR2_PACKAGE_LIBUNWIND),y) +STRACE_DEPENDENCIES += libunwind +STRACE_CONF_OPTS += --with-libunwind +else +STRACE_CONF_OPTS += --without-libunwind +endif + define STRACE_REMOVE_STRACE_GRAPH rm -f $(TARGET_DIR)/usr/bin/strace-graph endef diff --git a/buildroot/package/sudo/sudo.hash b/buildroot/package/sudo/sudo.hash index 80448ff7928..3f20ccb15e0 100644 --- a/buildroot/package/sudo/sudo.hash +++ b/buildroot/package/sudo/sudo.hash @@ -1,2 +1,4 @@ # From: http://www.sudo.ws/download.html -sha256 74c5746cd33a814e2431c39faf0d76f7f8a697379bd073862e3b156cf0d76368 sudo-1.8.21p2.tar.gz +sha256 d863d29b6fc87bc784a3223350e2b28a2ff2c4738f0fb8f1c92bb38c3017e679 sudo-1.8.23.tar.gz +# Locally calculated +sha256 b6625a7b58e9469a7adfd1732960579a19fe84b3508030f9a31641283e2250b8 doc/LICENSE diff --git a/buildroot/package/sudo/sudo.mk b/buildroot/package/sudo/sudo.mk index 77a95bd65e8..136b6c6915c 100644 --- a/buildroot/package/sudo/sudo.mk +++ b/buildroot/package/sudo/sudo.mk @@ -4,7 +4,7 @@ # ################################################################################ -SUDO_VERSION = 1.8.21p2 +SUDO_VERSION = 1.8.23 SUDO_SITE = https://www.sudo.ws/sudo/dist SUDO_LICENSE = ISC, BSD-3-Clause SUDO_LICENSE_FILES = doc/LICENSE @@ -45,7 +45,7 @@ SUDO_CONF_OPTS += --with-ldap # it will fail with "undefined reference" errors. ifeq ($(BR2_STATIC_LIBS)$(BR2_PACKAGE_OPENSSL),yy) SUDO_DEPENDENCIES += host-pkgconf -SUDO_CONF_ENV = LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`" +SUDO_CONF_ENV += LIBS="`$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`" endif else SUDO_CONF_OPTS += --without-ldap diff --git a/buildroot/package/sunxi-mali-mainline-driver/Config.in b/buildroot/package/sunxi-mali-mainline-driver/Config.in new file mode 100644 index 00000000000..c939d2a9573 --- /dev/null +++ b/buildroot/package/sunxi-mali-mainline-driver/Config.in @@ -0,0 +1,25 @@ +comment "sunxi-mali-mainline-driver needs a Linux kernel to be built" + depends on BR2_PACKAGE_SUNXI_MALI_MAINLINE + depends on !BR2_LINUX_KERNEL + +config BR2_PACKAGE_SUNXI_MALI_MAINLINE_DRIVER + bool "sunxi-mali-mainline-driver" + default y + depends on BR2_PACKAGE_SUNXI_MALI_MAINLINE # 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 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/free-electrons/mali-blobs + + sunxi-mali-mainline-driver requires a Linux kernel >= 4.4 + with the following options enabled: + + - CONFIG_CMA + - CONFIG_DMA_CMA + + https://github.com/mripard/sunxi-mali/blob/master/README.md diff --git a/buildroot/package/sunxi-mali-mainline-driver/sunxi-mali-mainline-driver.mk b/buildroot/package/sunxi-mali-mainline-driver/sunxi-mali-mainline-driver.mk new file mode 100644 index 00000000000..24817b07c7f --- /dev/null +++ b/buildroot/package/sunxi-mali-mainline-driver/sunxi-mali-mainline-driver.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# sunxi-mali-mainline-driver +# +################################################################################ + +SUNXI_MALI_MAINLINE_DRIVER_VERSION = 52ef1c5e133cc5fd791ca636239dc5e7b19c26d5 +SUNXI_MALI_MAINLINE_DRIVER_SITE = $(call github,mripard,sunxi-mali,$(SUNXI_MALI_MAINLINE_DRIVER_VERSION)) +SUNXI_MALI_MAINLINE_DRIVER_DEPENDENCIES = linux + +SUNXI_MALI_MAINLINE_DRIVER_MAKE_OPTS = \ + KDIR=$(LINUX_DIR) \ + CROSS_COMPILE=$(TARGET_CROSS) \ + INSTALL_MOD_PATH=$(TARGET_DIR) + +define SUNXI_MALI_MAINLINE_DRIVER_USE_APPLY_PATCHES + ln -sf $(SUNXI_MALI_MAINLINE_REV)/series $(@D)/patches + $(SED) 's|quilt push -a|$(TOPDIR)/support/scripts/apply-patches.sh . ../patches|' \ + $(@D)/build.sh +endef + +SUNXI_MALI_MAINLINE_DRIVER_POST_PATCH_HOOKS += SUNXI_MALI_MAINLINE_DRIVER_USE_APPLY_PATCHES + +define SUNXI_MALI_MAINLINE_DRIVER_BUILD_CMDS + cd $(@D) && $(SUNXI_MALI_MAINLINE_DRIVER_MAKE_OPTS) \ + $(SHELL) ./build.sh -r $(SUNXI_MALI_MAINLINE_REV) -j $(PARALLEL_JOBS) -b +endef + +define SUNXI_MALI_MAINLINE_DRIVER_INSTALL_TARGET_CMDS + cd $(@D) && $(SUNXI_MALI_MAINLINE_DRIVER_MAKE_OPTS) \ + $(SHELL) ./build.sh -r $(SUNXI_MALI_MAINLINE_REV) -j $(PARALLEL_JOBS) -i +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/sunxi-mali-mainline/Config.in b/buildroot/package/sunxi-mali-mainline/Config.in new file mode 100644 index 00000000000..759bed86bab --- /dev/null +++ b/buildroot/package/sunxi-mali-mainline/Config.in @@ -0,0 +1,40 @@ +config BR2_PACKAGE_SUNXI_MALI_MAINLINE + bool "sunxi-mali-mainline" + depends on BR2_arm + depends on BR2_ARM_EABIHF + depends on BR2_TOOLCHAIN_USES_GLIBC + select BR2_PACKAGE_HAS_LIBEGL + select BR2_PACKAGE_HAS_LIBGLES + help + Install userspace Allwinner OpenGL libraries. + + https://github.com/free-electrons/mali-blobs + +if BR2_PACKAGE_SUNXI_MALI_MAINLINE + +config BR2_PACKAGE_PROVIDES_LIBEGL + default "sunxi-mali-mainline" + +config BR2_PACKAGE_PROVIDES_LIBGLES + default "sunxi-mali-mainline" + +choice + prompt "Version" + default BR2_PACKAGE_SUNXI_MALI_MAINLINE_R6P2 + help + Select the version of the userspace module. + +config BR2_PACKAGE_SUNXI_MALI_MAINLINE_R6P2 + bool "r6p2" + +endchoice + +config BR2_PACKAGE_SUNXI_MALI_MAINLINE_REVISION + string + default "r6p2" if BR2_PACKAGE_SUNXI_MALI_MAINLINE_R6P2 + +endif + +comment "sunxi-mali needs an EABIhf glibc toolchain" + depends on BR2_arm + depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_ARM_EABIHF diff --git a/buildroot/package/sunxi-mali-mainline/egl.pc b/buildroot/package/sunxi-mali-mainline/egl.pc new file mode 100644 index 00000000000..3854e5ff584 --- /dev/null +++ b/buildroot/package/sunxi-mali-mainline/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/buildroot/package/sunxi-mali-mainline/glesv2.pc b/buildroot/package/sunxi-mali-mainline/glesv2.pc new file mode 100644 index 00000000000..6910b46a70a --- /dev/null +++ b/buildroot/package/sunxi-mali-mainline/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/buildroot/package/sunxi-mali-mainline/sunxi-mali-mainline.mk b/buildroot/package/sunxi-mali-mainline/sunxi-mali-mainline.mk new file mode 100644 index 00000000000..933e2beb0dd --- /dev/null +++ b/buildroot/package/sunxi-mali-mainline/sunxi-mali-mainline.mk @@ -0,0 +1,34 @@ +################################################################################ +# +# sunxi-mali-mainline +# +################################################################################ + +SUNXI_MALI_MAINLINE_VERSION = cb3e8ece9b2c3a70cbeb3204cd6f30eceaa32023 +SUNXI_MALI_MAINLINE_SITE = $(call github,free-electrons,mali-blobs,$(SUNXI_MALI_MAINLINE_VERSION)) +SUNXI_MALI_MAINLINE_INSTALL_STAGING = YES +SUNXI_MALI_MAINLINE_PROVIDES = libegl libgles + +SUNXI_MALI_MAINLINE_REV = $(call qstrip,$(BR2_PACKAGE_SUNXI_MALI_MAINLINE_REVISION)) + +define SUNXI_MALI_MAINLINE_INSTALL_STAGING_CMDS + mkdir -p $(STAGING_DIR)/usr/lib $(STAGING_DIR)/usr/include + + cp -rf $(@D)/$(SUNXI_MALI_MAINLINE_REV)/fbdev/lib/lib_fb_dev/* \ + $(STAGING_DIR)/usr/lib/ + cp -rf $(@D)/$(SUNXI_MALI_MAINLINE_REV)/fbdev/include/* \ + $(STAGING_DIR)/usr/include/ + + $(INSTALL) -D -m 0644 package/sunxi-mali-mainline/egl.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/egl.pc + $(INSTALL) -D -m 0644 package/sunxi-mali-mainline/glesv2.pc \ + $(STAGING_DIR)/usr/lib/pkgconfig/glesv2.pc +endef + +define SUNXI_MALI_MAINLINE_INSTALL_TARGET_CMDS + mkdir -p $(TARGET_DIR)/usr/lib + cp -rf $(@D)/$(SUNXI_MALI_MAINLINE_REV)/fbdev/lib/lib_fb_dev/* \ + $(TARGET_DIR)/usr/lib/ +endef + +$(eval $(generic-package)) diff --git a/buildroot/package/swupdate/0001-compat.h-introduce-compatibility-header.patch b/buildroot/package/swupdate/0001-compat.h-introduce-compatibility-header.patch deleted file mode 100644 index 5e3bfb0f495..00000000000 --- a/buildroot/package/swupdate/0001-compat.h-introduce-compatibility-header.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 9867a9d6a21e6b0b9bcba57c3e2398fe671cea17 Mon Sep 17 00:00:00 2001 -From: Christian Storm -Date: Tue, 16 Jan 2018 10:34:52 +0100 -Subject: [PATCH] compat.h: introduce compatibility header -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Introduce a compat.h housing compatibility definitions -and macros along the lines of commit 7b49b8d having -introduced a compatibility mechanism for Lua. - -First use case (and motivation) is the support for -musl (https://www.musl-libc.org/) which doesn't -bother to provide - char *strndupa(const char *s, size_t n) - -Backported from: 9867a9d6a21e6b0b9bcba57c3e2398fe671cea17 - -Reviewed-by: Stefano Babic -Reported-by: Jテカrg Krause -Signed-off-by: Christian Storm -Signed-off-by: Jテカrg Krause ---- - include/compat.h | 24 ++++++++++++++++++++++++ - include/util.h | 1 + - ipc/network_ipc.c | 1 + - 3 files changed, 26 insertions(+) - create mode 100644 include/compat.h - -diff --git a/include/compat.h b/include/compat.h -new file mode 100644 -index 0000000..29d7af1 ---- /dev/null -+++ b/include/compat.h -@@ -0,0 +1,24 @@ -+/* -+ * Author: Christian Storm -+ * Copyright (C) 2018, Siemens AG -+ * -+ * SPDX-License-Identifier: GPL-2.0-or-later -+ */ -+ -+#pragma once -+ -+#ifndef strndupa -+/* -+ * Define char *strndupa(const char *s, size_t n) -+ * for, e.g., musl (https://www.musl-libc.org/) -+ * which does not bother to implement this function. -+ */ -+#define strndupa(s, n) \ -+ (__extension__({ \ -+ const char *__in = (s); \ -+ size_t __len = strnlen(__in, (n)) + 1; \ -+ char *__out = (char *)alloca(__len); \ -+ __out[__len - 1] = '\0'; \ -+ (char *)memcpy(__out, __in, __len - 1); \ -+ })) -+#endif -diff --git a/include/util.h b/include/util.h -index bec2975..d43cd8c 100644 ---- a/include/util.h -+++ b/include/util.h -@@ -12,6 +12,7 @@ - #include - #include "swupdate.h" - #include "swupdate_status.h" -+#include "compat.h" - - #define NOTIFY_BUF_SIZE 2048 - #define ENOMEM_ASPRINTF -1 -diff --git a/ipc/network_ipc.c b/ipc/network_ipc.c -index 3f197c7..48f6fcc 100644 ---- a/ipc/network_ipc.c -+++ b/ipc/network_ipc.c -@@ -27,6 +27,7 @@ - #include - - #include "network_ipc.h" -+#include "compat.h" - - #ifdef CONFIG_SOCKET_CTRL_PATH - static char* SOCKET_CTRL_PATH = (char*)CONFIG_SOCKET_CTRL_PATH; --- -2.15.1 - diff --git a/buildroot/package/swupdate/0002-Fix-build-if-DOWNLOAD-is-set-but-no-JSON.patch b/buildroot/package/swupdate/0002-Fix-build-if-DOWNLOAD-is-set-but-no-JSON.patch deleted file mode 100644 index 5e079955821..00000000000 --- a/buildroot/package/swupdate/0002-Fix-build-if-DOWNLOAD-is-set-but-no-JSON.patch +++ /dev/null @@ -1,107 +0,0 @@ -From 37a6666a532e9cbc42b56301f27919ae7c00d2eb Mon Sep 17 00:00:00 2001 -From: Stefano Babic -Date: Tue, 23 Jan 2018 16:52:32 +0100 -Subject: [PATCH] Fix build if DOWNLOAD is set, but no JSON -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The downloader does not require JSON, but channel_curl is built -even if not called. Build fails with the error: - -corelib/channel_curl.c:27:10: fatal error: json-c/json.h: No such file or directory - -Add a CONFIG_CHANNEL_CURL that is automatically set by the modules -reuiring it (suricatta and swuforwarder). - -Backported from: 37a6666a532e9cbc42b56301f27919ae7c00d2eb - -Signed-off-by: Stefano Babic -Reported-by: Jテカrg Krause -Acked-by: Jテカrg Krause -Signed-off-by: Jテカrg Krause ---- - Kconfig | 7 +++++++ - corelib/Makefile | 2 +- - handlers/Config.in | 8 +++++--- - suricatta/Config.in | 3 +-- - 4 files changed, 14 insertions(+), 6 deletions(-) - -diff --git a/Kconfig b/Kconfig -index 4469096..e344572 100644 ---- a/Kconfig -+++ b/Kconfig -@@ -294,6 +294,13 @@ config DOWNLOAD - comment "Image downloading support needs libcurl" - depends on !HAVE_LIBCURL - -+config CHANNEL_CURL -+ bool -+ depends on HAVE_LIBCURL -+ depends on HAVE_JSON_C -+ select CURL -+ select JSON -+ - config HASH_VERIFY - bool "Allow to add sha256 hash to each image" - depends on HAVE_LIBSSL -diff --git a/corelib/Makefile b/corelib/Makefile -index 282bffd..4b30f9c 100644 ---- a/corelib/Makefile -+++ b/corelib/Makefile -@@ -17,4 +17,4 @@ lib-$(CONFIG_ENCRYPTED_IMAGES) += swupdate_decrypt.o - lib-$(CONFIG_LIBCONFIG) += swupdate_settings.o \ - parsing_library_libconfig.o - lib-$(CONFIG_JSON) += parsing_library_libjson.o --lib-$(CONFIG_CURL) += channel_curl.o -+lib-$(CONFIG_CHANNEL_CURL) += channel_curl.o -diff --git a/handlers/Config.in b/handlers/Config.in -index 596f069..6226b59 100644 ---- a/handlers/Config.in -+++ b/handlers/Config.in -@@ -54,7 +54,6 @@ config UBIVIDOFFSET - if your NAND driver incorrectly reports that it can handle - sub-page accesses when it should not. - -- - config CFI - bool "cfi" - depends on MTD -@@ -164,8 +163,8 @@ comment "remote handler needs zeromq" - config SWUFORWARDER_HANDLER - bool "SWU forwarder" - depends on HAVE_LIBCURL -- select CURL -- select JSON -+ depends on HAVE_JSON_C -+ select CHANNEL_CURL - default n - help - This allows to build a chain of updater. A -@@ -174,6 +173,9 @@ config SWUFORWARDER_HANDLER - embedded SWU to the other devices using the - Webserver REST API. - -+comment "swuforward handler needs json-c and curl" -+ depends on !HAVE_JSON_C || !HAVE_LIBCURL -+ - comment "SWU forwarder requires libcurl" - depends on !HAVE_LIBCURL - -diff --git a/suricatta/Config.in b/suricatta/Config.in -index 62e448a..2586169 100644 ---- a/suricatta/Config.in -+++ b/suricatta/Config.in -@@ -71,8 +71,7 @@ config SURICATTA_HAWKBIT - bool "hawkBit support" - depends on HAVE_LIBCURL - depends on HAVE_JSON_C -- select JSON -- select CURL -+ select CHANNEL_CURL - help - Support for hawkBit server. - https://projects.eclipse.org/projects/iot.hawkbit --- -2.16.1 - diff --git a/buildroot/package/swupdate/swupdate.config b/buildroot/package/swupdate/swupdate.config index 0f6e9615e52..730ebe500dc 100644 --- a/buildroot/package/swupdate/swupdate.config +++ b/buildroot/package/swupdate/swupdate.config @@ -12,6 +12,7 @@ CONFIG_HAVE_DOT_CONFIG=y # General Configuration # # CONFIG_CURL is not set +# CONFIG_CURL_SSL is not set # CONFIG_SYSTEMD is not set CONFIG_SCRIPTS=y # CONFIG_HW_COMPATIBILITY is not set @@ -49,6 +50,10 @@ CONFIG_EXTRA_LDLIBS="" # CONFIG_WERROR is not set # CONFIG_NOCLEANUP is not set +# +# EFI Boot Guard needs libebgenv and libz +# + # # U-Boot support needs libubootenv, libz # @@ -72,29 +77,13 @@ CONFIG_BOOTLOADER_NONE=y # # CONFIG_SURICATTA is not set CONFIG_WEBSERVER=y - -# -# Webserver Features -# CONFIG_MONGOOSE=y - -# -# Mongoose Feature -# CONFIG_MONGOOSEIPV6=y # # SSL support needs libcrypto, libssl # -# -# Archival Features -# - -# -# gunzip support needs libz -# - # # Parser Features # @@ -124,6 +113,10 @@ CONFIG_RAW=y # remote handler needs zeromq # +# +# swuforward handler needs json-c and curl +# + # # SWU forwarder requires libcurl # diff --git a/buildroot/package/swupdate/swupdate.hash b/buildroot/package/swupdate/swupdate.hash index d1b69c9a039..efc637976a0 100644 --- a/buildroot/package/swupdate/swupdate.hash +++ b/buildroot/package/swupdate/swupdate.hash @@ -1,2 +1,2 @@ # Locally calculated -sha256 1e15d9675cf7e23886dca7ea058498282c35679a555845dbc85ffe688f2cc681 swupdate-2017.11.tar.gz +sha256 19156bb30c3517a0ff9c918a38062df3cfa70f02f8162da4971a2f47d108688e swupdate-2018.03.tar.gz diff --git a/buildroot/package/swupdate/swupdate.mk b/buildroot/package/swupdate/swupdate.mk index aa232e58371..abf46c92564 100644 --- a/buildroot/package/swupdate/swupdate.mk +++ b/buildroot/package/swupdate/swupdate.mk @@ -4,12 +4,12 @@ # ################################################################################ -SWUPDATE_VERSION = 2017.11 +SWUPDATE_VERSION = 2018.03 SWUPDATE_SITE = $(call github,sbabic,swupdate,$(SWUPDATE_VERSION)) -SWUPDATE_LICENSE = GPL-2.0+, MIT, Public Domain +SWUPDATE_LICENSE = GPL-2.0+, LGPL-2.1+, MIT SWUPDATE_LICENSE_FILES = COPYING -# swupdate bundles its own version of mongoose (version 3.8) +# swupdate bundles its own version of mongoose (version 6.11) ifeq ($(BR2_PACKAGE_JSON_C),y) SWUPDATE_DEPENDENCIES += json-c @@ -125,7 +125,7 @@ define SWUPDATE_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0755 $(@D)/swupdate $(TARGET_DIR)/usr/bin/swupdate $(if $(BR2_PACKAGE_SWUPDATE_INSTALL_WEBSITE), \ mkdir -p $(TARGET_DIR)/var/www/swupdate; \ - cp -dpf $(@D)/www/* $(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 diff --git a/buildroot/package/syslog-ng/syslog-ng.conf b/buildroot/package/syslog-ng/syslog-ng.conf index a3384eebc3f..e767255d71d 100644 --- a/buildroot/package/syslog-ng/syslog-ng.conf +++ b/buildroot/package/syslog-ng/syslog-ng.conf @@ -1,4 +1,4 @@ -@version: 3.9 +@version: 3.10 source s_sys { file("/proc/kmsg" program_override("kernel")); diff --git a/buildroot/package/syslog-ng/syslog-ng.mk b/buildroot/package/syslog-ng/syslog-ng.mk index 325fac5842e..2b6f2c09e9d 100644 --- a/buildroot/package/syslog-ng/syslog-ng.mk +++ b/buildroot/package/syslog-ng/syslog-ng.mk @@ -4,6 +4,8 @@ # ################################################################################ +# When updating the version, please check at runtime if the version in +# syslog-ng.conf header needs to be updated SYSLOG_NG_VERSION = 3.10.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) diff --git a/buildroot/package/systemd/0004-core-dont-include-libmount-h-in-a-header-file.patch b/buildroot/package/systemd/0004-core-dont-include-libmount-h-in-a-header-file.patch new file mode 100644 index 00000000000..b91d09722b3 --- /dev/null +++ b/buildroot/package/systemd/0004-core-dont-include-libmount-h-in-a-header-file.patch @@ -0,0 +1,75 @@ +From 227b8a762fea1458547be2cdf0e6e4aac0079730 Mon Sep 17 00:00:00 2001 +From: Michael Olbrich +Date: Mon, 26 Mar 2018 17:34:53 +0200 +Subject: [PATCH] core: don't include libmount.h in a header file (#8580) + +linux/fs.h sys/mount.h, libmount.h and missing.h all include MS_* +definitions. + +To avoid problems, only one of linux/fs.h, sys/mount.h and libmount.h +should be included. And missing.h must be included last. + +Without this, building systemd may fail with: + +In file included from [...]/libmount/libmount.h:31:0, + from ../systemd-238/src/core/manager.h:23, + from ../systemd-238/src/core/emergency-action.h:37, + from ../systemd-238/src/core/unit.h:34, + from ../systemd-238/src/core/dbus-timer.h:25, + from ../systemd-238/src/core/timer.c:26: +[...]/sys/mount.h:57:2: error: expected identifier before numeric constant + +Upstream: https://github.com/systemd/systemd/pull/8580 +Signed-off-by: Stefan Becker +--- + src/core/dbus-execute.c | 1 + + src/core/manager.h | 3 ++- + src/core/mount.c | 2 ++ + 3 files changed, 5 insertions(+), 1 deletion(-) + +diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c +index 7344623ebf6..c342093bca4 100644 +--- a/src/core/dbus-execute.c ++++ b/src/core/dbus-execute.c +@@ -18,6 +18,7 @@ + along with systemd; If not, see . + ***/ + ++#include + #include + #include + +diff --git a/src/core/manager.h b/src/core/manager.h +index 28c5da225b1..e09e0cdf5e9 100644 +--- a/src/core/manager.h ++++ b/src/core/manager.h +@@ -20,7 +20,6 @@ + along with systemd; If not, see . + ***/ + +-#include + #include + #include + +@@ -34,6 +33,8 @@ + #include "list.h" + #include "ratelimit.h" + ++struct libmnt_monitor; ++ + /* Enforce upper limit how many names we allow */ + #define MANAGER_MAX_NAMES 131072 /* 128K */ + +diff --git a/src/core/mount.c b/src/core/mount.c +index 0e755da5c02..0154ebda5d6 100644 +--- a/src/core/mount.c ++++ b/src/core/mount.c +@@ -23,6 +23,8 @@ + #include + #include + ++#include ++ + #include "sd-messages.h" + + #include "alloc-util.h" diff --git a/buildroot/package/systemd/0005-basic-macros-rename-noreturn.patch b/buildroot/package/systemd/0005-basic-macros-rename-noreturn.patch new file mode 100644 index 00000000000..6cd847098ef --- /dev/null +++ b/buildroot/package/systemd/0005-basic-macros-rename-noreturn.patch @@ -0,0 +1,201 @@ +From 848e863acc51ecfb0f3955c498874588201d9130 Mon Sep 17 00:00:00 2001 +From: Franck Bui +Date: Thu, 15 Mar 2018 06:23:46 +0100 +Subject: [PATCH] basic/macros: rename noreturn into _noreturn_ (#8456) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +"noreturn" is reserved and can be used in other header files we include: + + [ 16s] In file included from /usr/include/gcrypt.h:30:0, + [ 16s] from ../src/journal/journal-file.h:26, + [ 16s] from ../src/journal/journal-vacuum.c:31: + [ 16s] /usr/include/gpg-error.h:1544:46: error: expected 窶,窶 or 窶;窶 before 窶)窶 token + [ 16s] void gpgrt_log_bug (const char *fmt, ...) GPGRT_ATTR_NR_PRINTF(1,2); + +Here we include grcrypt.h (which in turns include gpg-error.h) *after* we +"noreturn" was defined in macro.h. + +Upstream: https://github.com/systemd/systemd/pull/8456 +Signed-off-by: Stefan Becker +--- + src/basic/log.c | 4 ++-- + src/basic/log.h | 4 ++-- + src/basic/macro.h | 19 +++++++++---------- + src/basic/process-util.c | 2 +- + src/basic/process-util.h | 2 +- + src/core/main.c | 4 ++-- + src/journal/test-journal-interleaving.c | 2 +- + src/shared/pager.c | 2 +- + src/udev/collect/collect.c | 2 +- + 9 files changed, 20 insertions(+), 21 deletions(-) + +diff --git a/src/basic/log.c b/src/basic/log.c +index 7a7f2cbec13..16a2431c548 100644 +--- a/src/basic/log.c ++++ b/src/basic/log.c +@@ -814,7 +814,7 @@ static void log_assert( + log_dispatch_internal(level, 0, file, line, func, NULL, NULL, NULL, NULL, buffer); + } + +-noreturn void log_assert_failed_realm( ++_noreturn_ void log_assert_failed_realm( + LogRealm realm, + const char *text, + const char *file, +@@ -826,7 +826,7 @@ noreturn void log_assert_failed_realm( + abort(); + } + +-noreturn void log_assert_failed_unreachable_realm( ++_noreturn_ void log_assert_failed_unreachable_realm( + LogRealm realm, + const char *text, + const char *file, +diff --git a/src/basic/log.h b/src/basic/log.h +index efcf0f1bfc1..314be128a23 100644 +--- a/src/basic/log.h ++++ b/src/basic/log.h +@@ -186,7 +186,7 @@ int log_dump_internal( + char *buffer); + + /* Logging for various assertions */ +-noreturn void log_assert_failed_realm( ++_noreturn_ void log_assert_failed_realm( + LogRealm realm, + const char *text, + const char *file, +@@ -195,7 +195,7 @@ noreturn void log_assert_failed_realm( + #define log_assert_failed(text, ...) \ + log_assert_failed_realm(LOG_REALM, (text), __VA_ARGS__) + +-noreturn void log_assert_failed_unreachable_realm( ++_noreturn_ void log_assert_failed_unreachable_realm( + LogRealm realm, + const char *text, + const char *file, +diff --git a/src/basic/macro.h b/src/basic/macro.h +index 95be63a2040..8911edfc4be 100644 +--- a/src/basic/macro.h ++++ b/src/basic/macro.h +@@ -53,6 +53,15 @@ + #else + #define _fallthrough_ + #endif ++/* Define C11 noreturn without and even on older gcc ++ * compiler versions */ ++#ifndef _noreturn_ ++#if __STDC_VERSION__ >= 201112L ++#define _noreturn_ _Noreturn ++#else ++#define _noreturn_ __attribute__((noreturn)) ++#endif ++#endif + + /* Temporarily disable some warnings */ + #define DISABLE_WARNING_DECLARATION_AFTER_STATEMENT \ +@@ -414,16 +423,6 @@ static inline unsigned long ALIGN_POWER2(unsigned long u) { + #endif + #endif + +-/* Define C11 noreturn without and even on older gcc +- * compiler versions */ +-#ifndef noreturn +-#if __STDC_VERSION__ >= 201112L +-#define noreturn _Noreturn +-#else +-#define noreturn __attribute__((noreturn)) +-#endif +-#endif +- + #define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func) \ + static inline void func##p(type *p) { \ + if (*p) \ +diff --git a/src/basic/process-util.c b/src/basic/process-util.c +index aa9846db5dc..e6120af5b68 100644 +--- a/src/basic/process-util.c ++++ b/src/basic/process-util.c +@@ -987,7 +987,7 @@ bool is_main_thread(void) { + return cached > 0; + } + +-noreturn void freeze(void) { ++_noreturn_ void freeze(void) { + + log_close(); + +diff --git a/src/basic/process-util.h b/src/basic/process-util.h +index 93029e36e5f..5170adec7bb 100644 +--- a/src/basic/process-util.h ++++ b/src/basic/process-util.h +@@ -91,7 +91,7 @@ int pid_from_same_root_fs(pid_t pid); + + bool is_main_thread(void); + +-noreturn void freeze(void); ++_noreturn_ void freeze(void); + + bool oom_score_adjust_is_valid(int oa); + +diff --git a/src/core/main.c b/src/core/main.c +index 076846a41c0..4b2d1492373 100644 +--- a/src/core/main.c ++++ b/src/core/main.c +@@ -141,7 +141,7 @@ static uint64_t arg_default_tasks_max = UINT64_MAX; + static sd_id128_t arg_machine_id = {}; + static EmergencyAction arg_cad_burst_action = EMERGENCY_ACTION_REBOOT_FORCE; + +-noreturn static void freeze_or_reboot(void) { ++_noreturn_ static void freeze_or_reboot(void) { + + if (arg_crash_reboot) { + log_notice("Rebooting in 10s..."); +@@ -156,7 +156,7 @@ noreturn static void freeze_or_reboot(void) { + freeze(); + } + +-noreturn static void crash(int sig) { ++_noreturn_ static void crash(int sig) { + struct sigaction sa; + pid_t pid; + +diff --git a/src/journal/test-journal-interleaving.c b/src/journal/test-journal-interleaving.c +index 5a88b2774fa..d87bdbdd32a 100644 +--- a/src/journal/test-journal-interleaving.c ++++ b/src/journal/test-journal-interleaving.c +@@ -37,7 +37,7 @@ + + static bool arg_keep = false; + +-noreturn static void log_assert_errno(const char *text, int error, const char *file, int line, const char *func) { ++_noreturn_ static void log_assert_errno(const char *text, int error, const char *file, int line, const char *func) { + log_internal(LOG_CRIT, error, file, line, func, + "'%s' failed at %s:%u (%s): %m", text, file, line, func); + abort(); +diff --git a/src/shared/pager.c b/src/shared/pager.c +index 75db3c985bd..681af9c40e3 100644 +--- a/src/shared/pager.c ++++ b/src/shared/pager.c +@@ -47,7 +47,7 @@ static int stored_stderr = -1; + static bool stdout_redirected = false; + static bool stderr_redirected = false; + +-noreturn static void pager_fallback(void) { ++_noreturn_ static void pager_fallback(void) { + int r; + + r = copy_bytes(STDIN_FILENO, STDOUT_FILENO, (uint64_t) -1, 0); +diff --git a/src/udev/collect/collect.c b/src/udev/collect/collect.c +index 2821640e93b..c8fa47b3d7d 100644 +--- a/src/udev/collect/collect.c ++++ b/src/udev/collect/collect.c +@@ -58,7 +58,7 @@ static inline struct _mate *node_to_mate(struct udev_list_node *node) + return container_of(node, struct _mate, node); + } + +-noreturn static void sig_alrm(int signo) ++_noreturn_ static void sig_alrm(int signo) + { + exit(4); + } diff --git a/buildroot/package/systemd/Config.in b/buildroot/package/systemd/Config.in index 7b613df02c2..c5a109675c0 100644 --- a/buildroot/package/systemd/Config.in +++ b/buildroot/package/systemd/Config.in @@ -192,6 +192,7 @@ config BR2_PACKAGE_SYSTEMD_MACHINED config BR2_PACKAGE_SYSTEMD_MYHOSTNAME bool "enable myhostname NSS plugin" default y + depends on !BR2_TOOLCHAIN_USES_UCLIBC # needs nss.h help nss-myhostname is a plug-in module for the GNU Name Service Switch (NSS) functionality of the GNU C Library (glibc), @@ -247,6 +248,7 @@ config BR2_PACKAGE_SYSTEMD_RANDOMSEED config BR2_PACKAGE_SYSTEMD_RESOLVED bool "enable resolve daemon" default y + depends on !BR2_TOOLCHAIN_USES_UCLIBC # needs nss.h help systemd-resolved is a system service that provides network name resolution to local applications. It implements a @@ -279,6 +281,7 @@ config BR2_PACKAGE_SYSTEMD_SMACK_SUPPORT config BR2_PACKAGE_SYSTEMD_SYSUSERS bool "enable sysusers support" + depends on !BR2_TOOLCHAIN_USES_UCLIBC # needs gshadow.h help systemd-sysusers creates system users and groups, based on the file format and location specified in sysusers.d(5). diff --git a/buildroot/package/systemd/systemd.mk b/buildroot/package/systemd/systemd.mk index 8c22c08dd19..db7fb436363 100644 --- a/buildroot/package/systemd/systemd.mk +++ b/buildroot/package/systemd/systemd.mk @@ -40,6 +40,8 @@ SYSTEMD_CONF_OPTS += \ -Dldconfig=false \ -Ddefault-dnssec=no \ -Dtests=false \ + -Dsystem-uid-max=999 \ + -Dsystem-gid-max=999 \ -Dtelinit-path=$(TARGET_DIR)/sbin/telinit \ -Dkill-path=/usr/bin/kill \ -Dkmod-path=/usr/bin/kmod \ @@ -48,6 +50,17 @@ SYSTEMD_CONF_OPTS += \ -Dmount-path=/usr/bin/mount \ -Dumount-path=/usr/bin/umount +# disable unsupported features for non-glibc toolchains +ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y) +SYSTEMD_CONF_OPTS += \ + -Didn=true \ + -Dnss-systemd=true +else +SYSTEMD_CONF_OPTS += \ + -Didn=false \ + -Dnss-systemd=false +endif + ifeq ($(BR2_PACKAGE_ACL),y) SYSTEMD_DEPENDENCIES += acl SYSTEMD_CONF_OPTS += -Dacl=true @@ -327,6 +340,7 @@ define SYSTEMD_INSTALL_INIT_HOOK ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/halt ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/poweroff ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/reboot + ln -fs ../bin/systemctl $(TARGET_DIR)/sbin/shutdown ln -fs ../../../lib/systemd/system/multi-user.target \ $(TARGET_DIR)/etc/systemd/system/default.target endef diff --git a/buildroot/package/sysvinit/inittab b/buildroot/package/sysvinit/inittab index fad91eae8b5..7eaef59d9e6 100644 --- a/buildroot/package/sysvinit/inittab +++ b/buildroot/package/sysvinit/inittab @@ -9,7 +9,11 @@ si1::sysinit:/bin/mount -o remount,rw / si2::sysinit:/bin/mkdir -p /dev/pts si3::sysinit:/bin/mkdir -p /dev/shm si4::sysinit:/bin/mount -a -si5::sysinit:/bin/hostname -F /etc/hostname +si5::sysinit:/bin/ln -sf /proc/self/fd /dev/fd 2>/dev/null +si6::sysinit:/bin/ln -sf /proc/self/fd/0 /dev/stdin 2>/dev/null +si7::sysinit:/bin/ln -sf /proc/self/fd/1 /dev/stdout 2>/dev/null +si8::sysinit:/bin/ln -sf /proc/self/fd/2 /dev/stderr 2>/dev/null +si9::sysinit:/bin/hostname -F /etc/hostname rcS:12345:wait:/etc/init.d/rcS # S0:1:respawn:/sbin/getty -L ttyS0 115200 vt100 # GENERIC_SERIAL diff --git a/buildroot/package/tar/tar.mk b/buildroot/package/tar/tar.mk index a8a15d9518d..9942e777377 100644 --- a/buildroot/package/tar/tar.mk +++ b/buildroot/package/tar/tar.mk @@ -40,11 +40,16 @@ HOST_TAR_SOURCE = tar-$(TAR_VERSION).cpio.gz define HOST_TAR_EXTRACT_CMDS mkdir -p $(@D) cd $(@D) && \ - $(call suitable-extractor,$(HOST_TAR_SOURCE)) $(DL_DIR)/$(HOST_TAR_SOURCE) | cpio -i --preserve-modification-time + $(call suitable-extractor,$(HOST_TAR_SOURCE)) $(TAR_DL_DIR)/$(HOST_TAR_SOURCE) | cpio -i --preserve-modification-time mv $(@D)/tar-$(TAR_VERSION)/* $(@D) rmdir $(@D)/tar-$(TAR_VERSION) endef HOST_TAR_CONF_OPTS = --without-selinux +# we are built before ccache +HOST_TAR_CONF_ENV = \ + CC="$(HOSTCC_NOCCACHE)" \ + CXX="$(HOSTCXX_NOCCACHE)" + $(eval $(host-autotools-package)) diff --git a/buildroot/package/tcf-agent/0001-agent-add-install-target-to-the-CMakeLists.patch b/buildroot/package/tcf-agent/0001-agent-add-install-target-to-the-CMakeLists.patch deleted file mode 100644 index fd2d61f3daf..00000000000 --- a/buildroot/package/tcf-agent/0001-agent-add-install-target-to-the-CMakeLists.patch +++ /dev/null @@ -1,48 +0,0 @@ -From 96c43b223c90746cb2f680d6d5e198afc690dd4d Mon Sep 17 00:00:00 2001 -From: Norbert Lange -Date: Mon, 4 Dec 2017 10:56:45 +0100 -Subject: [PATCH] agent: add install target to the CMakeLists - -It is common for CMake packages to make sure that 'make install' -works properly, and that's what most users expect. - -More specifically, build systems such as Buildroot also expect -'make install' to do the right thing for CMake-based packages - -Signed-off-by: Norbert Lange ---- - agent/CMakeLists.txt | 14 ++++++++++++++ - 1 file changed, 14 insertions(+) - -diff --git a/agent/CMakeLists.txt b/agent/CMakeLists.txt -index aef15b96..605862b2 100644 ---- a/agent/CMakeLists.txt -+++ b/agent/CMakeLists.txt -@@ -1,6 +1,8 @@ - # -*- cmake -*- - - cmake_minimum_required(VERSION 2.8) -+project(tcfagent C) -+include(GNUInstallDirs) - - set(CMAKE_COLOR_MAKEFILE OFF) - -@@ -43,3 +45,15 @@ message(STATUS "machine:" ${TCF_MACHINE}) - - add_executable(agent tcf/main/main.c) - target_link_libraries(agent ${TCF_LIB_NAME}) -+ -+# executable and library cant have the same target name, -+# but we can rename the output -+set_target_properties(agent -+ PROPERTIES OUTPUT_NAME tcf-agent) -+ -+# add target to install all outputs -+install(TARGETS agent ${TCF_LIB_NAME} -+ RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR} -+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} -+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} -+) --- -2.15.1 - diff --git a/buildroot/package/tcf-agent/0002-linux-remove-explicit-uses-of-__ptrace_request.patch b/buildroot/package/tcf-agent/0002-linux-remove-explicit-uses-of-__ptrace_request.patch deleted file mode 100644 index 5c820394a3a..00000000000 --- a/buildroot/package/tcf-agent/0002-linux-remove-explicit-uses-of-__ptrace_request.patch +++ /dev/null @@ -1,103 +0,0 @@ -From 3e662598e1d9ad682e470988764c3af5b1a78cb7 Mon Sep 17 00:00:00 2001 -From: Norbert Lange -Date: Fri, 1 Dec 2017 13:15:50 +0100 -Subject: [PATCH] linux: remove explicit uses of __ptrace_request - -This type is not to be used directly, and with musl it wont build - -Signed-off-by: Norbert Lange ---- - agent/machine/arm/tcf/cpudefs-mdep.c | 4 ++-- - agent/machine/arm/tcf/regset-mdep.h | 4 ++-- - agent/system/GNU/Linux/tcf/context-linux.c | 18 +++++++++--------- - 3 files changed, 13 insertions(+), 13 deletions(-) - -diff --git a/agent/machine/arm/tcf/cpudefs-mdep.c b/agent/machine/arm/tcf/cpudefs-mdep.c -index 27ab0129..0bc8b146 100644 ---- a/agent/machine/arm/tcf/cpudefs-mdep.c -+++ b/agent/machine/arm/tcf/cpudefs-mdep.c -@@ -89,10 +89,10 @@ static RegisterDefinition * lr_def = NULL; - static RegisterDefinition * cpsr_def = NULL; - - #if !defined(PTRACE_GETHBPREGS) --#define PTRACE_GETHBPREGS (enum __ptrace_request)29 -+#define PTRACE_GETHBPREGS 29 - #endif - #if !defined(PTRACE_SETHBPREGS) --#define PTRACE_SETHBPREGS (enum __ptrace_request)30 -+#define PTRACE_SETHBPREGS 30 - #endif - - #define ARM_DEBUG_ARCH_V6 1 -diff --git a/agent/machine/arm/tcf/regset-mdep.h b/agent/machine/arm/tcf/regset-mdep.h -index e5516042..893ba64f 100644 ---- a/agent/machine/arm/tcf/regset-mdep.h -+++ b/agent/machine/arm/tcf/regset-mdep.h -@@ -28,11 +28,11 @@ - #endif - - #ifndef PTRACE_GETREGSET --#define PTRACE_GETREGSET (enum __ptrace_request)0x4204 -+#define PTRACE_GETREGSET 0x4204 - #endif - - #ifndef PTRACE_SETREGSET --#define PTRACE_SETREGSET (enum __ptrace_request)0x4205 -+#define PTRACE_SETREGSET 0x4205 - #endif - - struct regset_gp { -diff --git a/agent/system/GNU/Linux/tcf/context-linux.c b/agent/system/GNU/Linux/tcf/context-linux.c -index d4eb5e6b..4c86021e 100644 ---- a/agent/system/GNU/Linux/tcf/context-linux.c -+++ b/agent/system/GNU/Linux/tcf/context-linux.c -@@ -60,10 +60,10 @@ - #endif - - #if !defined(PTRACE_SETOPTIONS) --#define PTRACE_SETOPTIONS (enum __ptrace_request)0x4200 --#define PTRACE_GETEVENTMSG (enum __ptrace_request)0x4201 --#define PTRACE_GETSIGINFO (enum __ptrace_request)0x4202 --#define PTRACE_SETSIGINFO (enum __ptrace_request)0x4203 -+#define PTRACE_SETOPTIONS 0x4200 -+#define PTRACE_GETEVENTMSG 0x4201 -+#define PTRACE_GETSIGINFO 0x4202 -+#define PTRACE_SETSIGINFO 0x4203 - - #define PTRACE_O_TRACESYSGOOD 0x00000001 - #define PTRACE_O_TRACEFORK 0x00000002 -@@ -85,8 +85,8 @@ - - #if defined(__arm__) || defined(__aarch64__) - #if !defined(PTRACE_GETVFPREGS) --#define PTRACE_GETVFPREGS (enum __ptrace_request)27 --#define PTRACE_SETVFPREGS (enum __ptrace_request)28 -+#define PTRACE_GETVFPREGS 27 -+#define PTRACE_SETVFPREGS 28 - #endif - #endif - -@@ -483,7 +483,7 @@ static const char * get_ptrace_cmd_name(int cmd) { - static int do_single_step(Context * ctx) { - uint32_t is_cont = 0; - ContextExtensionLinux * ext = EXT(ctx); -- enum __ptrace_request cmd = PTRACE_SINGLESTEP; -+ int cmd = PTRACE_SINGLESTEP; - - assert(!ext->pending_step); - -@@ -540,9 +540,9 @@ int context_continue(Context * ctx) { - int signal = 0; - ContextExtensionLinux * ext = EXT(ctx); - #if USE_PTRACE_SYSCALL -- enum __ptrace_request cmd = PTRACE_SYSCALL; -+ int cmd = PTRACE_SYSCALL; - #else -- enum __ptrace_request cmd = PTRACE_CONT; -+ int cmd = PTRACE_CONT; - #endif - - assert(is_dispatch_thread()); --- -2.15.1 - diff --git a/buildroot/package/tcf-agent/0003-linux-provide-canonicalize_file_name-for-all-c-libs-.patch b/buildroot/package/tcf-agent/0003-linux-provide-canonicalize_file_name-for-all-c-libs-.patch deleted file mode 100644 index 8532307d90f..00000000000 --- a/buildroot/package/tcf-agent/0003-linux-provide-canonicalize_file_name-for-all-c-libs-.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 1323aa4459004b9817f0cfbf4b59c31480d527cf Mon Sep 17 00:00:00 2001 -From: Norbert Lange -Date: Fri, 1 Dec 2017 13:34:08 +0100 -Subject: [PATCH] linux: provide canonicalize_file_name for all c libs except - glibc - -musl was not covered so far, and this library does not define a -macro for detection. -unless glibc is detected, a canonicalize_file_name implementation -will be provided. - -Signed-off-by: Norbert Lange ---- - agent/tcf/framework/mdep.c | 2 +- - agent/tcf/framework/mdep.h | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/agent/tcf/framework/mdep.c b/agent/tcf/framework/mdep.c -index 8aee811f..d38036be 100644 ---- a/agent/tcf/framework/mdep.c -+++ b/agent/tcf/framework/mdep.c -@@ -1097,7 +1097,7 @@ char * canonicalize_file_name(const char * path) { - return strdup(res); - } - --#elif defined(__UCLIBC__) -+#elif defined(__UCLIBC__) || !defined(__GLIBC_) - - char * canonicalize_file_name(const char * path) { - return realpath(path, NULL); -diff --git a/agent/tcf/framework/mdep.h b/agent/tcf/framework/mdep.h -index f90f03f2..3e331383 100644 ---- a/agent/tcf/framework/mdep.h -+++ b/agent/tcf/framework/mdep.h -@@ -292,7 +292,7 @@ extern int loc_clock_gettime(int, struct timespec *); - - #define O_BINARY 0 - --#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__) || defined(__sun__) -+#if (defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__) || defined(__sun__)) | !defined (__GLIBC__) - # define O_LARGEFILE 0 - extern char ** environ; - extern char * canonicalize_file_name(const char * path); --- -2.15.1 - diff --git a/buildroot/package/tcf-agent/Config.in b/buildroot/package/tcf-agent/Config.in index 9cd283107af..50e58642b0a 100644 --- a/buildroot/package/tcf-agent/Config.in +++ b/buildroot/package/tcf-agent/Config.in @@ -28,9 +28,8 @@ config BR2_PACKAGE_TCF_AGENT_ARCH default "i386" if BR2_i386 && !BR2_ARCH="i686" default "x86_64" if BR2_x86_64 default "powerpc" if BR2_powerpc || BR2_powerpcle -# those architectures fail to build currently -# default "ppc64" if BR2_powerpc64 || BR2_powerpc64le -# default "microblaze" if BR2_microblaze || BR2_microblazeel + default "ppc64" if BR2_powerpc64 || BR2_powerpc64le + default "microblaze" if BR2_microblaze || BR2_microblazeel config BR2_PACKAGE_TCF_AGENT_ARCH_SUPPORTS bool diff --git a/buildroot/package/tcf-agent/tcf-agent.hash b/buildroot/package/tcf-agent/tcf-agent.hash index d46d5206a3d..3ff4d9a546d 100644 --- a/buildroot/package/tcf-agent/tcf-agent.hash +++ b/buildroot/package/tcf-agent/tcf-agent.hash @@ -1,5 +1,5 @@ # Locally computed: -sha256 94e9277a52929791417d59b515235bf28ca29ffb05c9e89ad331ebc3256fb5df org.eclipse.tcf.agent-1.6.0.tar.gz +sha256 2f8c7be8a0bf7c86c72fd5680bc19a9e8f98792d40c94a0fee30ceb6428b8f33 org.eclipse.tcf.agent-1.7.0.tar.gz # Hash for license files: sha256 f82d01b74a513bd3504d08136026a5ac2a7e6ff62ebcde391fa74aa222d11ce0 agent/edl-v10.html diff --git a/buildroot/package/tcf-agent/tcf-agent.mk b/buildroot/package/tcf-agent/tcf-agent.mk index 7b615d31203..5a0a991b1d4 100644 --- a/buildroot/package/tcf-agent/tcf-agent.mk +++ b/buildroot/package/tcf-agent/tcf-agent.mk @@ -4,7 +4,7 @@ # ################################################################################ -TCF_AGENT_VERSION = 1.6.0 +TCF_AGENT_VERSION = 1.7.0 # the tar.xz link was broken the time this file got authored TCF_AGENT_SOURCE = org.eclipse.tcf.agent-$(TCF_AGENT_VERSION).tar.gz TCF_AGENT_SITE = http://git.eclipse.org/c/tcf/org.eclipse.tcf.agent.git/snapshot diff --git a/buildroot/package/tcl/tcl.hash b/buildroot/package/tcl/tcl.hash index b344d26589b..359b5433c2c 100644 --- a/buildroot/package/tcl/tcl.hash +++ b/buildroot/package/tcl/tcl.hash @@ -1,2 +1,3 @@ # Locally calculated sha256 a265409781e4b3edcc4ef822533071b34c3dc6790b893963809b9fe221befe07 tcl8.6.6-src.tar.gz +sha256 c0a69a2bfd757361ec7e6143973b103c90409316b49e9c88db26ad6388e79f16 license.terms diff --git a/buildroot/package/tcl/tcl.mk b/buildroot/package/tcl/tcl.mk index ffef9cf8bda..b9fb7afbc6f 100644 --- a/buildroot/package/tcl/tcl.mk +++ b/buildroot/package/tcl/tcl.mk @@ -8,7 +8,7 @@ TCL_VERSION_MAJOR = 8.6 TCL_VERSION = $(TCL_VERSION_MAJOR).6 TCL_SOURCE = tcl$(TCL_VERSION)-src.tar.gz TCL_SITE = http://downloads.sourceforge.net/project/tcl/Tcl/$(TCL_VERSION) -TCL_LICENSE = tcl license +TCL_LICENSE = TCL TCL_LICENSE_FILES = license.terms TCL_SUBDIR = unix TCL_INSTALL_STAGING = YES diff --git a/buildroot/package/tcllib/tcllib.hash b/buildroot/package/tcllib/tcllib.hash index eb990a2aba8..d08b5a172a6 100644 --- a/buildroot/package/tcllib/tcllib.hash +++ b/buildroot/package/tcllib/tcllib.hash @@ -1,2 +1,3 @@ # Locally computed: sha256 0db9e17d6c0f44d3ca2df2ea5023e35c0f3767e7008c3cb26d201446eb68add1 tcllib-1.13.tar.bz2 +sha256 530ec70eb11a455bd582d86b6d74c2dd7cc367d90b8bbdd59fcb43ae02f95a4b license.terms diff --git a/buildroot/package/tcllib/tcllib.mk b/buildroot/package/tcllib/tcllib.mk index bd98dd641ec..dfa35c8941e 100644 --- a/buildroot/package/tcllib/tcllib.mk +++ b/buildroot/package/tcllib/tcllib.mk @@ -7,7 +7,7 @@ TCLLIB_VERSION = 1.13 TCLLIB_SOURCE = tcllib-$(TCLLIB_VERSION).tar.bz2 TCLLIB_SITE = http://downloads.sourceforge.net/project/tcllib/tcllib/$(TCLLIB_VERSION) -TCLLIB_LICENSE = tcl license +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)" diff --git a/buildroot/package/tesseract-ocr/tesseract-ocr.mk b/buildroot/package/tesseract-ocr/tesseract-ocr.mk index 9e315b239aa..919a4360edd 100644 --- a/buildroot/package/tesseract-ocr/tesseract-ocr.mk +++ b/buildroot/package/tesseract-ocr/tesseract-ocr.mk @@ -62,7 +62,7 @@ TESSERACT_OCR_PRE_CONFIGURE_HOOKS += TESSERACT_OCR_PRECONFIGURE # Language data files installation define TESSERACT_OCR_INSTALL_LANG_DATA $(foreach langfile,$(TESSERACT_OCR_DATA_FILES), \ - $(INSTALL) -D -m 0644 $(DL_DIR)/$(langfile) \ + $(INSTALL) -D -m 0644 $(TESSERACT_OCR_DL_DIR)/$(langfile) \ $(TARGET_DIR)/usr/share/tessdata/$(langfile) ) endef diff --git a/buildroot/package/ti-cgt-pru/ti-cgt-pru.mk b/buildroot/package/ti-cgt-pru/ti-cgt-pru.mk index 0b9a64b3c9b..3665d2cec8e 100644 --- a/buildroot/package/ti-cgt-pru/ti-cgt-pru.mk +++ b/buildroot/package/ti-cgt-pru/ti-cgt-pru.mk @@ -13,8 +13,8 @@ TI_CGT_PRU_LICENSE_FILES = PRU_Code_Generation_Tools_2.2.x_manifest.html \ pru_rts_2_2_0_82167478-F8C9-49b2-82BD-12F8550770F9.spdx define HOST_TI_CGT_PRU_EXTRACT_CMDS - chmod +x $(DL_DIR)/$(TI_CGT_PRU_SOURCE) - $(DL_DIR)/$(TI_CGT_PRU_SOURCE) --prefix $(@D) --mode unattended + 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 diff --git a/buildroot/package/ti-gfx/ti-gfx.mk b/buildroot/package/ti-gfx/ti-gfx.mk index 428878a08b6..9fad5537809 100644 --- a/buildroot/package/ti-gfx/ti-gfx.mk +++ b/buildroot/package/ti-gfx/ti-gfx.mk @@ -94,8 +94,8 @@ TI_GFX_HDR_DIRS = OGLES2/EGL OGLES2/EWS OGLES2/GLES2 OGLES2/KHR \ OGLES/GLES bufferclass_ti/ pvr2d/ wsegl/ define TI_GFX_EXTRACT_CMDS - chmod +x $(DL_DIR)/$(TI_GFX_SOURCE) - printf "Y\nY\n qY\n\n" | $(DL_DIR)/$(TI_GFX_SOURCE) \ + chmod +x $(TI_GFX_DL_DIR)/$(TI_GFX_SOURCE) + printf "Y\nY\n qY\n\n" | $(TI_GFX_DL_DIR)/$(TI_GFX_SOURCE) \ --prefix $(@D) \ --mode console endef diff --git a/buildroot/package/ti-sgx-km/Config.in b/buildroot/package/ti-sgx-km/Config.in index a4c9bb8ca29..db3d3f9ddd4 100644 --- a/buildroot/package/ti-sgx-km/Config.in +++ b/buildroot/package/ti-sgx-km/Config.in @@ -20,26 +20,26 @@ if BR2_PACKAGE_TI_SGX_KM choice prompt "Target" - default BR2_PACKAGE_TI_SGX_AM335X + default BR2_PACKAGE_TI_SGX_KM_AM335X help Select the SOC for which you would like to install drivers. -config BR2_PACKAGE_TI_SGX_AM335X +config BR2_PACKAGE_TI_SGX_KM_AM335X bool "AM335x" help AM335x CPU -config BR2_PACKAGE_TI_SGX_AM437X +config BR2_PACKAGE_TI_SGX_KM_AM437X bool "AM437x" help AM437x CPU -config BR2_PACKAGE_TI_SGX_AM4430 +config BR2_PACKAGE_TI_SGX_KM_AM4430 bool "AM4430" help AM4430 CPU -config BR2_PACKAGE_TI_SGX_AM5430 +config BR2_PACKAGE_TI_SGX_KM_AM5430 bool "AM5430" help AM5430 CPU diff --git a/buildroot/package/ti-sgx-km/ti-sgx-km.mk b/buildroot/package/ti-sgx-km/ti-sgx-km.mk index db74da9b4ad..0e1bc33902e 100644 --- a/buildroot/package/ti-sgx-km/ti-sgx-km.mk +++ b/buildroot/package/ti-sgx-km/ti-sgx-km.mk @@ -17,13 +17,13 @@ TI_SGX_KM_MAKE_OPTS = \ KERNELDIR=$(LINUX_DIR) \ PVR_NULLDRM=1 -ifeq ($(BR2_PACKAGE_TI_SGX_AM335X),y) +ifeq ($(BR2_PACKAGE_TI_SGX_KM_AM335X),y) TI_SGX_KM_PLATFORM_NAME = omap335x -else ifeq ($(BR2_PACKAGE_TI_SGX_AM437X),y) +else ifeq ($(BR2_PACKAGE_TI_SGX_KM_AM437X),y) TI_SGX_KM_PLATFORM_NAME = omap437x -else ifeq ($(BR2_PACKAGE_TI_SGX_AM4430),y) +else ifeq ($(BR2_PACKAGE_TI_SGX_KM_AM4430),y) TI_SGX_KM_PLATFORM_NAME = omap4430 -else ifeq ($(BR2_PACKAGE_TI_SGX_5430),y) +else ifeq ($(BR2_PACKAGE_TI_SGX_KM_5430),y) TI_SGX_KM_PLATFORM_NAME = omap5430 endif diff --git a/buildroot/package/time/time.hash b/buildroot/package/time/time.hash index 7d395bfb6c3..b843534a589 100644 --- a/buildroot/package/time/time.hash +++ b/buildroot/package/time/time.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 8a2f540155961a35ba9b84aec5e77e3ae36c74cecb4484db455960601b7a2e1b time-1.8.tar.gz +sha256 fbacf0c81e62429df3e33bda4cee38756604f18e01d977338e23306a3e3b521e time-1.9.tar.gz sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING diff --git a/buildroot/package/time/time.mk b/buildroot/package/time/time.mk index c238ee6e277..400eca0dc70 100644 --- a/buildroot/package/time/time.mk +++ b/buildroot/package/time/time.mk @@ -4,16 +4,10 @@ # ################################################################################ -TIME_VERSION = 1.8 +TIME_VERSION = 1.9 TIME_SITE = $(BR2_GNU_MIRROR)/time -TIME_CONF_ENV = ac_cv_func_wait3=yes +TIME_CONF_ENV = ac_cv_func_wait3_rusage=yes TIME_LICENSE = GPL-3.0+ TIME_LICENSE_FILES = COPYING -# time uses an old version of automake that does not support -# installing in DESTDIR. -define TIME_INSTALL_TARGET_CMDS - $(INSTALL) -D -m 755 $(@D)/time $(TARGET_DIR)/usr/bin/time -endef - $(eval $(autotools-package)) diff --git a/buildroot/package/tini/tini.hash b/buildroot/package/tini/tini.hash index c4f85c43b04..aeb460619a7 100644 --- a/buildroot/package/tini/tini.hash +++ b/buildroot/package/tini/tini.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 5244691718f6856db74dcf6dbb3576a901e737f41412e7895747f0ccb4ccaff0 tini-v0.17.0.tar.gz +sha256 1097675352d6317b547e73f9dc7c6839fd0bb0d96dafc2e5c95506bb324049a2 tini-v0.18.0.tar.gz sha256 e5f46bca81266bdd511cf08018d66866870531794569c04f9b45f50dd23c28b0 LICENSE diff --git a/buildroot/package/tini/tini.mk b/buildroot/package/tini/tini.mk index 9f9d9867450..0ac8aa96605 100644 --- a/buildroot/package/tini/tini.mk +++ b/buildroot/package/tini/tini.mk @@ -4,7 +4,7 @@ # ################################################################################ -TINI_VERSION = v0.17.0 +TINI_VERSION = v0.18.0 TINI_SITE = $(call github,krallin,tini,$(TINI_VERSION)) TINI_LICENSE = MIT diff --git a/buildroot/package/tinycbor/tinycbor.hash b/buildroot/package/tinycbor/tinycbor.hash index affc7a6e418..db9c5957330 100644 --- a/buildroot/package/tinycbor/tinycbor.hash +++ b/buildroot/package/tinycbor/tinycbor.hash @@ -1,3 +1,3 @@ # Locally computed: -sha256 37a06c618ccddd7edc3747277425fcd38fa71eab37c7aaf0b03818a49950da81 tinycbor-v0.4.2.tar.gz +sha256 f9d2ec366a38382c1b7bb989c45620dca168ad28107b4ef9a306ee93c3dbb832 tinycbor-v0.5.1.tar.gz sha256 3c6ba0b5bfa7830505301ffb336a17b0748e0d61c4d34216e9dc98f10e40395e LICENSE diff --git a/buildroot/package/tinycbor/tinycbor.mk b/buildroot/package/tinycbor/tinycbor.mk index b1848b56aa7..2aec68be77b 100644 --- a/buildroot/package/tinycbor/tinycbor.mk +++ b/buildroot/package/tinycbor/tinycbor.mk @@ -4,7 +4,7 @@ # ################################################################################ -TINYCBOR_VERSION = v0.4.2 +TINYCBOR_VERSION = v0.5.1 TINYCBOR_SITE = $(call github,intel,tinycbor,$(TINYCBOR_VERSION)) TINYCBOR_LICENSE = MIT TINYCBOR_LICENSE_FILES = LICENSE @@ -18,6 +18,14 @@ endif TINYCBOR_MAKE_OPTS = $(TARGET_CONFIGURE_OPTS) V=1 +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 diff --git a/buildroot/package/tinyhttpd/S85tinyhttpd b/buildroot/package/tinyhttpd/S85tinyhttpd index fb512a0375d..f3f1de69bff 100755 --- a/buildroot/package/tinyhttpd/S85tinyhttpd +++ b/buildroot/package/tinyhttpd/S85tinyhttpd @@ -3,7 +3,6 @@ PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin NAME=tinyhttpd -test -x /usr/sbin/$NAME || exit 0 mkdir -p /var/www case "$1" in diff --git a/buildroot/package/tk/Config.in b/buildroot/package/tk/Config.in new file mode 100644 index 00000000000..507b0bf9796 --- /dev/null +++ b/buildroot/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/buildroot/package/tk/tk.hash b/buildroot/package/tk/tk.hash new file mode 100644 index 00000000000..5fc0b6fc665 --- /dev/null +++ b/buildroot/package/tk/tk.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 d62c371a71b4744ed830e3c21d27968c31dba74dd2c45f36b9b071e6d88eb19d tk8.6.6-src.tar.gz +sha256 2cde822b93ca16ae535c954b7dfe658b4ad10df2a193628d1b358f1765e8b198 license.terms diff --git a/buildroot/package/tk/tk.mk b/buildroot/package/tk/tk.mk new file mode 100644 index 00000000000..102d368518c --- /dev/null +++ b/buildroot/package/tk/tk.mk @@ -0,0 +1,31 @@ +################################################################################ +# +# tk +# +################################################################################ + +TK_VERSION_MAJOR = 8.6 +TK_VERSION = $(TK_VERSION_MAJOR).6 +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/buildroot/package/tmux/tmux.mk b/buildroot/package/tmux/tmux.mk index 6e03d01abfc..e380227475a 100644 --- a/buildroot/package/tmux/tmux.mk +++ b/buildroot/package/tmux/tmux.mk @@ -10,4 +10,12 @@ TMUX_LICENSE = ISC TMUX_LICENSE_FILES = README TMUX_DEPENDENCIES = libevent ncurses host-pkgconf +# 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/buildroot/package/tor/0001-openssl-libz.patch b/buildroot/package/tor/0001-openssl-libz.patch index 9d3cf6e124b..62a9a4a0ec0 100644 --- a/buildroot/package/tor/0001-openssl-libz.patch +++ b/buildroot/package/tor/0001-openssl-libz.patch @@ -3,7 +3,7 @@ and remove host paths when looking for openssl. [Vincent: - Adapt the patch to make it apply on the new version.] -[Bernd: rebased for tor-0.2.7.6, 0.2.8.10, 0.2.9.9 & 0.3.1.7] +[Bernd: rebased for tor-0.2.7.6, 0.2.8.10, 0.2.9.9, 0.3.1.7 & 0.3.2.10] Signed-off-by: Bernd Kuhls Signed-off-by: Vicente Olivert Riera @@ -11,91 +11,95 @@ Signed-off-by: Vicente Olivert Riera diff -uNr tor-0.3.1.7.org/configure.ac tor-0.3.1.7/configure.ac --- tor-0.3.1.7.org/configure.ac 2017-09-15 15:34:06.000000000 +0200 +++ tor-0.3.1.7/configure.ac 2017-09-19 19:40:17.090538467 +0200 -@@ -709,11 +709,11 @@ - fi +@@ -735,7 +735,7 @@ ]) --TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto $TOR_LIB_GDI], -+TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto -lz $TOR_LIB_GDI], - [#include ], - [void RAND_add(const void *buf, int num, double entropy);], - [RAND_add((void*)0,0,0);], [], -- [/usr/local/openssl /usr/lib/openssl /usr/local/ssl /usr/lib/ssl /usr/local /usr/athena /opt/openssl]) -+ []) - - dnl XXXX check for OPENSSL_VERSION_NUMBER == SSLeay() - + AC_MSG_NOTICE([Now, we'll look for OpenSSL >= 1.0.1]) +-TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto $TOR_LIB_GDI $TOR_LIB_WS32], ++TOR_SEARCH_LIBRARY(openssl, $tryssldir, [-lssl -lcrypto -lz $TOR_LIB_GDI $TOR_LIB_WS32], + [#include ], + [struct ssl_method_st; const struct ssl_method_st *TLSv1_1_method(void);], + [TLSv1_1_method();], [], diff -uNr tor-0.3.1.7.org/src/or/include.am tor-0.3.1.7/src/or/include.am --- tor-0.3.1.7.org/src/or/include.am 2017-06-19 17:56:51.000000000 +0200 +++ tor-0.3.1.7/src/or/include.am 2017-09-19 19:41:02.015861546 +0200 -@@ -122,7 +122,7 @@ - src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \ +@@ -135,7 +135,7 @@ src/common/libor-event.a src/trunnel/libor-trunnel.a \ src/trace/libor-trace.a \ + $(rust_ldadd) \ +- @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \ ++ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \ + @TOR_LIB_WS32@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \ + @CURVE25519_LIBS@ @TOR_SYSTEMD_LIBS@ \ + @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ +@@ -149,7 +149,7 @@ + src/common/libor-ctime-testing.a \ + src/common/libor-crypto-testing.a $(LIBKECCAK_TINY) $(LIBDONNA) \ + src/common/libor-event-testing.a src/trunnel/libor-trunnel-testing.a \ - @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ \ + @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ @TOR_SYSTEMD_LIBS@ \ - @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ \ - $(rust_ldadd) + @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ + endif diff -uNr tor-0.3.1.7.org/src/test/include.am tor-0.3.1.7/src/test/include.am --- tor-0.3.1.7.org/src/test/include.am 2017-08-29 17:01:19.000000000 +0200 +++ tor-0.3.1.7/src/test/include.am 2017-09-19 19:42:39.103903406 +0200 -@@ -206,8 +206,8 @@ - src/common/libor-event-testing.a \ +@@ -222,8 +222,8 @@ src/trunnel/libor-trunnel-testing.a \ src/trace/libor-trace.a \ + $(rust_ldadd) \ - @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ -- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ +- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \ + @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ -+ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ - @TOR_SYSTEMD_LIBS@ @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ \ - $(rust_ldadd) ++ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \ + @CURVE25519_LIBS@ \ + @TOR_SYSTEMD_LIBS@ @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ -@@ -231,8 +231,8 @@ - src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \ +@@ -248,8 +248,8 @@ src/common/libor-event.a src/trunnel/libor-trunnel.a \ src/trace/libor-trace.a \ + $(rust_ldadd) \ - @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ -- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ +- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \ + @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ -+ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ - @TOR_SYSTEMD_LIBS@ @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ \ - $(rust_ldadd) ++ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \ + @CURVE25519_LIBS@ \ + @TOR_SYSTEMD_LIBS@ @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ -@@ -244,8 +244,8 @@ - src/common/libor-crypto-testing.a $(LIBKECCAK_TINY) $(LIBDONNA) \ +@@ -262,8 +262,8 @@ src/common/libor-event-testing.a \ src/trace/libor-trace.a \ + $(rust_ldadd) \ - @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ -- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ +- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \ + @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ -+ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ - @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ \ - $(rust_ldadd) ++ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \ + @CURVE25519_LIBS@ \ + @TOR_LZMA_LIBS@ @TOR_ZSTD_LIBS@ -@@ -256,8 +256,8 @@ - src/common/libor-ctime-testing.a \ +@@ -275,8 +275,8 @@ src/common/libor-event-testing.a \ src/common/libor-crypto-testing.a $(LIBKECCAK_TINY) $(LIBDONNA) \ + $(rust_ldadd) \ - @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ -- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ +- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \ + @TOR_LIB_MATH@ @TOR_LIBEVENT_LIBS@ \ -+ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ - @TOR_LZMA_LIBS@ \ - $(rust_ldadd) ++ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \ + @CURVE25519_LIBS@ \ + @TOR_LZMA_LIBS@ src_test_test_timers_LDFLAGS = $(src_test_test_LDFLAGS) -@@ -286,8 +286,8 @@ - src/common/libor-ctime.a \ +@@ -307,8 +307,8 @@ src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \ src/trace/libor-trace.a \ + $(rust_ldadd) \ - @TOR_ZLIB_LIBS@ @TOR_LIB_MATH@ \ -- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ +- @TOR_OPENSSL_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \ + @TOR_LIB_MATH@ \ -+ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ - @TOR_LZMA_LIBS@ \ - $(rust_ldadd) ++ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ @TOR_LIB_WS32@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ \ + @CURVE25519_LIBS@ @TOR_LZMA_LIBS@ src_test_test_ntor_cl_AM_CPPFLAGS = \ -@@ -298,8 +298,8 @@ + -I"$(top_srcdir)/src/or" +@@ -318,8 +318,8 @@ src_test_test_hs_ntor_cl_LDADD = src/or/libtor.a src/common/libor.a \ src/common/libor-ctime.a \ src/common/libor-crypto.a $(LIBKECCAK_TINY) $(LIBDONNA) \ @@ -109,15 +113,15 @@ diff -uNr tor-0.3.1.7.org/src/test/include.am tor-0.3.1.7/src/test/include.am diff -uNr tor-0.3.1.7.org/src/tools/include.am tor-0.3.1.7/src/tools/include.am --- tor-0.3.1.7.org/src/tools/include.am 2017-06-19 17:56:51.000000000 +0200 +++ tor-0.3.1.7/src/tools/include.am 2017-09-19 19:43:08.880223260 +0200 -@@ -26,7 +26,7 @@ - src/common/libor-ctime.a \ +@@ -27,7 +27,7 @@ $(LIBKECCAK_TINY) \ $(LIBDONNA) \ + $(rust_ldadd) \ - @TOR_LIB_MATH@ @TOR_ZLIB_LIBS@ @TOR_OPENSSL_LIBS@ \ + @TOR_LIB_MATH@ @TOR_OPENSSL_LIBS@ @TOR_ZLIB_LIBS@ \ - @TOR_LIB_WS32@ @TOR_LIB_GDI@ @CURVE25519_LIBS@ \ - $(rust_ldadd) + @TOR_LIB_WS32@ @TOR_LIB_GDI@ @TOR_LIB_USERENV@ @CURVE25519_LIBS@ + if COVERAGE_ENABLED @@ -40,7 +40,7 @@ src/common/libor-ctime-testing.a \ $(LIBKECCAK_TINY) \ diff --git a/buildroot/package/tor/tor.hash b/buildroot/package/tor/tor.hash index db946eec075..2841d4099a0 100644 --- a/buildroot/package/tor/tor.hash +++ b/buildroot/package/tor/tor.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 c0e1a71e8e079ddd7951f846bcbd79d5e716b602faa5b890c70762fe95cd04e0 tor-0.3.1.10.tar.gz +sha256 60df77c31dcf94fdd686c8ca8c34f3b70243b33a7344ecc0b719d5ca2617cbee tor-0.3.2.10.tar.gz sha256 f9a4f724d8037711dde7d3f1d17094fb7d211545b3a3bbb1b03e769e13ca5608 LICENSE diff --git a/buildroot/package/tor/tor.mk b/buildroot/package/tor/tor.mk index ddf912fe18d..4a1a48357f8 100644 --- a/buildroot/package/tor/tor.mk +++ b/buildroot/package/tor/tor.mk @@ -4,7 +4,7 @@ # ################################################################################ -TOR_VERSION = 0.3.1.10 +TOR_VERSION = 0.3.2.10 TOR_SITE = https://dist.torproject.org TOR_LICENSE = BSD-3-Clause TOR_LICENSE_FILES = LICENSE diff --git a/buildroot/package/tovid/Config.in b/buildroot/package/tovid/Config.in index d8052ea334c..d5b7a28314b 100644 --- a/buildroot/package/tovid/Config.in +++ b/buildroot/package/tovid/Config.in @@ -6,8 +6,9 @@ config BR2_PACKAGE_TOVID depends on BR2_USE_WCHAR depends on BR2_PACKAGE_PYTHON || BR2_PACKAGE_PYTHON3 depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS - depends on BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS - depends on BR2_TOOLCHAIN_HAS_SYNC_4 # mplayer + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 # mpv + depends on BR2_TOOLCHAIN_HAS_ATOMIC || BR2_TOOLCHAIN_HAS_SYNC_8 # mpv + depends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC # mpv # The below dependencies are runtime dependencies only select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # procps_ng select BR2_PACKAGE_DVDAUTHOR @@ -16,7 +17,7 @@ config BR2_PACKAGE_TOVID select BR2_PACKAGE_IMAGEMAGICK select BR2_PACKAGE_JPEG select BR2_PACKAGE_MJPEGTOOLS - select BR2_PACKAGE_MPLAYER + select BR2_PACKAGE_MPV select BR2_PACKAGE_PROCPS_NG # pgrep and pkill select BR2_PACKAGE_SOX help @@ -27,16 +28,20 @@ config BR2_PACKAGE_TOVID http://tovid.wikia.com/wiki/Installing_tovid -comment "tovid needs a toolchain w/ threads, C++, wchar" +comment "tovid needs a toolchain w/ threads, C++, wchar, gcc >= 4.5" depends on BR2_USE_MMU depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS - depends on BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS - depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on BR2_TOOLCHAIN_HAS_ATOMIC || BR2_TOOLCHAIN_HAS_SYNC_8 depends on !BR2_TOOLCHAIN_HAS_THREADS \ + || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 \ || !BR2_INSTALL_LIBSTDCPP \ || !BR2_USE_WCHAR + depends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC comment "tovid depends on python or python3" depends on !BR2_PACKAGE_PYTHON && !BR2_PACKAGE_PYTHON3 depends on BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS - depends on BR2_PACKAGE_MPLAYER_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_ATOMIC || BR2_TOOLCHAIN_HAS_SYNC_8 + depends on !BR2_TOOLCHAIN_HAS_THREADS || \ + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_5 + depends on !BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC diff --git a/buildroot/package/tovid/tovid.hash b/buildroot/package/tovid/tovid.hash index 0bd7668fad5..89d0461a986 100644 --- a/buildroot/package/tovid/tovid.hash +++ b/buildroot/package/tovid/tovid.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 3193d081a7aa8e00f946b7514066f1fb7647f533ab1ebcc36b5ced927b0a1ab5 tovid-0.35.2.tar.gz +sha256 c03a746a3592a656bab0be4045da114a4231eb0f858d6c18503dac64049fbe48 tovid-87c676f4aadb7303d2cd921380b054bafa4b85bb.tar.gz +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/buildroot/package/tovid/tovid.mk b/buildroot/package/tovid/tovid.mk index c904b981f65..4c5c60aa7fc 100644 --- a/buildroot/package/tovid/tovid.mk +++ b/buildroot/package/tovid/tovid.mk @@ -4,8 +4,8 @@ # ################################################################################ -TOVID_VERSION = 0.35.2 -TOVID_SITE = https://github.com/tovid-suite/tovid/releases/download/$(TOVID_VERSION) +TOVID_VERSION = 87c676f4aadb7303d2cd921380b054bafa4b85bb +TOVID_SITE = $(call github,tovid-suite,tovid,$(TOVID_VERSION)) TOVID_LICENSE = GPL-2.0+ TOVID_LICENSE_FILES = COPYING TOVID_SETUP_TYPE = distutils diff --git a/buildroot/package/tpm2-abrmd/Config.in b/buildroot/package/tpm2-abrmd/Config.in new file mode 100644 index 00000000000..0cac754b3c7 --- /dev/null +++ b/buildroot/package/tpm2-abrmd/Config.in @@ -0,0 +1,28 @@ +config BR2_PACKAGE_TPM2_ABRMD + bool "tpm2-abrmd" + depends on BR2_INSTALL_LIBSTDCPP # tpm2-tss + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_TOOLCHAIN_HAS_THREADS # dbus, libglib2 + depends on BR2_USE_MMU # dbus, libglib2 + depends on !BR2_TOOLCHAIN_USES_MUSL # TEMP_FAILURE_RETRY(), etc + select BR2_PACKAGE_DBUS + 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 (libsapi) like + any other TCTI. + + https://github.com/tpm2-software/tpm2-abrmd + +comment "tpm2-abrmd needs a uClibc or glibc toolchain w/ C++, wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/tpm2-abrmd/S80tpm2-abrmd b/buildroot/package/tpm2-abrmd/S80tpm2-abrmd new file mode 100755 index 00000000000..d54c220c043 --- /dev/null +++ b/buildroot/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 -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 --max-transient-objects=20 --fail-on-loaded-trans" + +# 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/buildroot/package/tpm2-abrmd/tpm2-abrmd.hash b/buildroot/package/tpm2-abrmd/tpm2-abrmd.hash new file mode 100644 index 00000000000..6af991d4696 --- /dev/null +++ b/buildroot/package/tpm2-abrmd/tpm2-abrmd.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 e32e19de93b539374a485d9df7fe9415ce147ec03c8d9ba6593e50f7a67a7a51 tpm2-abrmd-1.3.0.tar.gz +sha256 18c1bf4b1ba1fb2c4ffa7398c234d83c0d55475298e470ae1e5e3a8a8bd2e448 LICENSE diff --git a/buildroot/package/tpm2-abrmd/tpm2-abrmd.mk b/buildroot/package/tpm2-abrmd/tpm2-abrmd.mk new file mode 100644 index 00000000000..b918ceaa4b5 --- /dev/null +++ b/buildroot/package/tpm2-abrmd/tpm2-abrmd.mk @@ -0,0 +1,36 @@ +################################################################################ +# +# tpm2-abrmd +# +################################################################################ + +TPM2_ABRMD_VERSION = 1.3.0 +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_INSTALL_STAGING = YES +TPM2_ABRMD_DEPENDENCIES = dbus libglib2 tpm2-tss host-pkgconf + +# configure.ac doesn't contain a link test, so it doesn't detect when +# libssp is missing. +TPM2_ABRMD_CONF_ENV = ax_cv_check_cflags___fstack_protector_all=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no) + +TPM2_ABRMD_CONF_OPTS += \ + --with-systemdsystemunitdir=$(if $(BR2_INIT_SYSTEMD),/usr/lib/systemd/system,no) \ + --with-udevrulesdir=$(if $(BR2_PACKAGE_HAS_UDEV),/usr/lib/udev/rules.d,no) + +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 + +define TPM2_ABRMD_USERS + tss -1 tss -1 * - - - TPM2 Access Broker & Resource Management daemon +endef + +$(eval $(autotools-package)) diff --git a/buildroot/package/tpm2-tools/0001-Fix-build-with-LibreSSL.patch b/buildroot/package/tpm2-tools/0001-Fix-build-with-LibreSSL.patch new file mode 100644 index 00000000000..0fdd2dc4dda --- /dev/null +++ b/buildroot/package/tpm2-tools/0001-Fix-build-with-LibreSSL.patch @@ -0,0 +1,64 @@ +From 7f8d9359dcf9edbb13bb447f70234397afa4fb05 Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Tue, 30 Jan 2018 11:21:14 -0200 +Subject: [PATCH] Fix build with LibreSSL + +OPENSSL_VERSION_NUMBER is used to test the version of OpenSSL but this +test alone breaks the build with LibreSSL due to implicit declarations +of functions 'RSA_set0_key' and 'HMAC_CTX_free'. + +Test if OpenSSL < 1.1.0 or LIBRESSL_VERSION_NUMBER is defined, instead. + +Signed-off-by: Carlos Santos +--- + lib/conversion.c | 2 +- + lib/tpm_kdfa.c | 6 +++--- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/lib/conversion.c b/lib/conversion.c +index 1d0a0b7..df02de4 100644 +--- a/lib/conversion.c ++++ b/lib/conversion.c +@@ -133,7 +133,7 @@ static bool tpm2_convert_pubkey_ssl(TPMT_PUBLIC *public, pubkey_format format, c + goto error; + } + +-#if OPENSSL_VERSION_NUMBER < 0x1010000fL /* OpenSSL 1.1.0 */ ++#if OPENSSL_VERSION_NUMBER < 0x1010000fL || defined(LIBRESSL_VERSION_NUMBER) /* OpenSSL 1.1.0 */ + ssl_rsa_key->e = e; + ssl_rsa_key->n = n; + #else +diff --git a/lib/tpm_kdfa.c b/lib/tpm_kdfa.c +index ee3cf8a..e43bdeb 100644 +--- a/lib/tpm_kdfa.c ++++ b/lib/tpm_kdfa.c +@@ -54,7 +54,7 @@ static const EVP_MD *tpm_algorithm_to_openssl_digest(TPMI_ALG_HASH algorithm) { + static HMAC_CTX *hmac_alloc() + { + HMAC_CTX *ctx; +-#if OPENSSL_VERSION_NUMBER < 0x1010000fL /* OpenSSL 1.1.0 */ ++#if OPENSSL_VERSION_NUMBER < 0x1010000fL || defined(LIBRESSL_VERSION_NUMBER) /* OpenSSL 1.1.0 */ + ctx = malloc(sizeof(*ctx)); + #else + ctx = HMAC_CTX_new(); +@@ -62,7 +62,7 @@ static HMAC_CTX *hmac_alloc() + if (!ctx) + return NULL; + +-#if OPENSSL_VERSION_NUMBER < 0x1010000fL ++#if OPENSSL_VERSION_NUMBER < 0x1010000fL || defined(LIBRESSL_VERSION_NUMBER) + HMAC_CTX_init(ctx); + #endif + +@@ -71,7 +71,7 @@ static HMAC_CTX *hmac_alloc() + + static void hmac_del(HMAC_CTX *ctx) + { +-#if OPENSSL_VERSION_NUMBER < 0x1010000fL ++#if OPENSSL_VERSION_NUMBER < 0x1010000fL || defined(LIBRESSL_VERSION_NUMBER) + HMAC_CTX_cleanup(ctx); + free(ctx); + #else +-- +2.14.3 + diff --git a/buildroot/package/tpm2-tools/0001-tpm2_certify-fix-type-may-be-used-uninitialized-warn.patch b/buildroot/package/tpm2-tools/0001-tpm2_certify-fix-type-may-be-used-uninitialized-warn.patch new file mode 100644 index 00000000000..b472666f46f --- /dev/null +++ b/buildroot/package/tpm2-tools/0001-tpm2_certify-fix-type-may-be-used-uninitialized-warn.patch @@ -0,0 +1,36 @@ +From e15b01a1eb27e31964308892fcaa9c7d4f17f181 Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Sat, 24 Mar 2018 22:46:46 -0300 +Subject: [PATCH] tpm2_certify: fix "'type' may be used uninitialized" warning + +get_key_type does not assign a value to 'type' on error conditions, +which makes the compiler believe that it will be used uninitialized in +the LOG_ERR call, in set_scheme. In practice this will never happen +because set_scheme returns immediately if get_key_type retuns false but +the compiler does not understand that logic and fails because warnings +are treated as errors. + +Adapted for version 3.0.3 from the change submitted upstream: + + https://github.com/tpm2-software/tpm2-tools/pull/954 + +Signed-off-by: Carlos Santos +--- + tools/tpm2_certify.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/tools/tpm2_certify.c b/tools/tpm2_certify.c +index eaac02f..cbc42a9 100644 +--- a/tools/tpm2_certify.c ++++ b/tools/tpm2_certify.c +@@ -107,6 +107,7 @@ static bool get_key_type(TSS2_SYS_CONTEXT *sapi_context, TPMI_DH_OBJECT object_h + &out_public, &name, &qualified_name, &sessions_data_out)); + if (rval != TPM_RC_SUCCESS) { + LOG_ERR("TPM2_ReadPublic failed. Error Code: 0x%x", rval); ++ *type = TPM_ALG_ERROR; + return false; + } + +-- +2.14.3 + diff --git a/buildroot/package/tpm2-tools/Config.in b/buildroot/package/tpm2-tools/Config.in new file mode 100644 index 00000000000..e5feb187868 --- /dev/null +++ b/buildroot/package/tpm2-tools/Config.in @@ -0,0 +1,26 @@ +config BR2_PACKAGE_TPM2_TOOLS + bool "tpm2-tools" + depends on BR2_INSTALL_LIBSTDCPP # tpm2-tss + depends on BR2_USE_MMU # dbus, libglib + depends on BR2_USE_WCHAR # libglib -> gettext + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib + depends on !BR2_TOOLCHAIN_USES_MUSL # tpm2-abrmd + select BR2_PACKAGE_DBUS + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_OPENSSL + select BR2_PACKAGE_TPM2_ABRMD # run-time + 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. + + https://github.com/tpm2-software/tpm2-tools + +comment "tpm2-tools needs a uClibc or glibc toolchain w/ C++, wchar, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_USE_WCHAR \ + || !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/tpm2-tools/tpm2-tools.hash b/buildroot/package/tpm2-tools/tpm2-tools.hash new file mode 100644 index 00000000000..e33b3e5945f --- /dev/null +++ b/buildroot/package/tpm2-tools/tpm2-tools.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 c990c0656165afef0fad61e1852a9a189a4b93b43d2a684b151a5dc0b3c6249d tpm2-tools-3.0.3.tar.gz +sha256 3d6b149c8b042bd5f3db678d587fbe55230d071ca084bd38dcae451679c6dd45 LICENSE diff --git a/buildroot/package/tpm2-tools/tpm2-tools.mk b/buildroot/package/tpm2-tools/tpm2-tools.mk new file mode 100644 index 00000000000..13fdb163bb1 --- /dev/null +++ b/buildroot/package/tpm2-tools/tpm2-tools.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# tpm2-tools +# +################################################################################ + +TPM2_TOOLS_VERSION = 3.0.3 +TPM2_TOOLS_SITE = https://github.com/tpm2-software/tpm2-tools/releases/download/$(TPM2_TOOLS_VERSION) +TPM2_TOOLS_LICENSE = BSD-2-Clause +TPM2_TOOLS_LICENSE_FILES = LICENSE +TPM2_TOOLS_DEPENDENCIES = dbus libcurl libglib2 openssl tpm2-tss host-pkgconf + +# configure.ac doesn't contain a link test, so it doesn't detect when +# libssp is missing. +TPM2_TOOLS_CONF_OPTS = $(if $(BR2_TOOLCHAIN_HAS_SSP),--enable-hardening,--disable-hardening) + +$(eval $(autotools-package)) diff --git a/buildroot/package/tpm2-tss/0001-tcti-tcti_socket.cpp-add-missing-inclusion-of-sys-se.patch b/buildroot/package/tpm2-tss/0001-tcti-tcti_socket.cpp-add-missing-inclusion-of-sys-se.patch new file mode 100644 index 00000000000..e8e0d842f23 --- /dev/null +++ b/buildroot/package/tpm2-tss/0001-tcti-tcti_socket.cpp-add-missing-inclusion-of-sys-se.patch @@ -0,0 +1,33 @@ +From 2fdbf9f56bd6e7b00c695881a81c0df2f5088760 Mon Sep 17 00:00:00 2001 +From: Carlos Santos +Date: Fri, 23 Mar 2018 09:15:44 -0300 +Subject: [PATCH] tcti/tcti_socket.cpp: add missing inclusion of sys/select.h + +Prevents compilation errors due to undeclared "fd_set" type. + +Fixes: + http://autobuild.buildroot.net/results/09e8b3b85d7113d60e8967a2d41a6aea8f8197c0 + http://autobuild.buildroot.net/results/2e4c70f2f1239eb19235ae04a936a6492daf316d + http://autobuild.buildroot.net/results/bbd68f52781da735e983b1260de5b804787374b1 + +Signed-off-by: Carlos Santos +--- + tcti/tcti_socket.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/tcti/tcti_socket.cpp b/tcti/tcti_socket.cpp +index e8982f1..b6e5874 100644 +--- a/tcti/tcti_socket.cpp ++++ b/tcti/tcti_socket.cpp +@@ -28,6 +28,8 @@ + #include + #include // Needed for _wtoi + ++#include // for fd_set ++ + #include "sapi/tpm20.h" + #include "tcti/tcti_socket.h" + #include "sysapi_util.h" +-- +2.14.3 + diff --git a/buildroot/package/tpm2-tss/Config.in b/buildroot/package/tpm2-tss/Config.in new file mode 100644 index 00000000000..7a757bd70a7 --- /dev/null +++ b/buildroot/package/tpm2-tss/Config.in @@ -0,0 +1,35 @@ +config BR2_PACKAGE_TPM2_TSS + bool "tpm2-tss" + depends on BR2_INSTALL_LIBSTDCPP + select BR2_PACKAGE_LIBURIPARSER + 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: + libsapi. + + * 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: + libtcti-device and libtcti-socket. 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 + +comment "tpm2-tss needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/buildroot/package/tpm2-tss/tpm2-tss.hash b/buildroot/package/tpm2-tss/tpm2-tss.hash new file mode 100644 index 00000000000..67c5a858422 --- /dev/null +++ b/buildroot/package/tpm2-tss/tpm2-tss.hash @@ -0,0 +1,3 @@ +# Locally computed: +sha256 cf8784cc536be16e6fba47f77033e093a6aeaed8420877ac9f42f77fb7b09031 tpm2-tss-1.4.0.tar.gz +sha256 18c1bf4b1ba1fb2c4ffa7398c234d83c0d55475298e470ae1e5e3a8a8bd2e448 LICENSE diff --git a/buildroot/package/tpm2-tss/tpm2-tss.mk b/buildroot/package/tpm2-tss/tpm2-tss.mk new file mode 100644 index 00000000000..dcc1e5d74d6 --- /dev/null +++ b/buildroot/package/tpm2-tss/tpm2-tss.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# tpm2-tss +# +################################################################################ + +TPM2_TSS_VERSION = 1.4.0 +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_INSTALL_STAGING = YES +TPM2_TSS_DEPENDENCIES = liburiparser host-pkgconf + +# configure.ac doesn't contain a link test, so it doesn't detect when +# libssp is missing. +TPM2_TSS_CONF_ENV = ax_cv_check_cflags___________Wall__Werror_______fstack_protector_all=$(if $(BR2_TOOLCHAIN_HAS_SSP),yes,no) + +$(eval $(autotools-package)) diff --git a/buildroot/package/transmission/Config.in b/buildroot/package/transmission/Config.in index 2110e52ac64..dac4d1b3303 100644 --- a/buildroot/package/transmission/Config.in +++ b/buildroot/package/transmission/Config.in @@ -32,11 +32,6 @@ config BR2_PACKAGE_TRANSMISSION_DAEMON help Install transmission daemon. -config BR2_PACKAGE_TRANSMISSION_REMOTE - bool "transmission-remote" - help - Install transmission remote management tool. - config BR2_PACKAGE_TRANSMISSION_GTK bool "transmission-gtk" depends on BR2_PACKAGE_LIBGTK3 && BR2_SYSTEM_ENABLE_NLS diff --git a/buildroot/package/transmission/S92transmission b/buildroot/package/transmission/S92transmission index e5976b0cfba..29d7cd58632 100644 --- a/buildroot/package/transmission/S92transmission +++ b/buildroot/package/transmission/S92transmission @@ -51,9 +51,6 @@ DAEMON=$(which $NAME) PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME -# Exit if the package is not installed -[ -x "$DAEMON" ] || exit 0 - # Read configuration variable file if it is present [ -r /etc/default/$NAME ] && . /etc/default/$NAME diff --git a/buildroot/package/transmission/transmission.mk b/buildroot/package/transmission/transmission.mk index 4e78604fdb9..65add0d8c03 100644 --- a/buildroot/package/transmission/transmission.mk +++ b/buildroot/package/transmission/transmission.mk @@ -16,7 +16,7 @@ TRANSMISSION_DEPENDENCIES = \ zlib TRANSMISSION_AUTORECONF = YES TRANSMISSION_CONF_OPTS = \ - --disable-libnotify \ + --without-inotify \ --enable-lightweight TRANSMISSION_LICENSE = GPL-2.0 or GPL-3.0 with OpenSSL exception TRANSMISSION_LICENSE_FILES = COPYING @@ -49,9 +49,9 @@ TRANSMISSION_CONF_OPTS += --enable-daemon ifeq ($(BR2_PACKAGE_SYSTEMD),y) TRANSMISSION_DEPENDENCIES += systemd -TRANSMISSION_CONF_OPTS += --with-systemd-daemon +TRANSMISSION_CONF_OPTS += --with-systemd else -TRANSMISSION_CONF_OPTS += --without-systemd-daemon +TRANSMISSION_CONF_OPTS += --without-systemd endif define TRANSMISSION_USERS @@ -75,12 +75,6 @@ else TRANSMISSION_CONF_OPTS += --disable-daemon endif -ifeq ($(BR2_PACKAGE_TRANSMISSION_REMOTE),y) -TRANSMISSION_CONF_OPTS += --enable-remote -else -TRANSMISSION_CONF_OPTS += --disable-remote -endif - ifeq ($(BR2_PACKAGE_TRANSMISSION_GTK),y) TRANSMISSION_CONF_OPTS += --with-gtk TRANSMISSION_DEPENDENCIES += libgtk3 diff --git a/buildroot/package/tremor/tremor.hash b/buildroot/package/tremor/tremor.hash new file mode 100644 index 00000000000..89661a64cd6 --- /dev/null +++ b/buildroot/package/tremor/tremor.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 ba94cfdf886399c550f76908285bfa9e322f24085de6f1810c2abea565c13a15 tremor-7c30a66346199f3f09017a09567c6c8a3a0eedc8.tar.gz +sha256 d2ab5758336489da61c12cc5bb757da5339c4ae9001f9bb0562b4370249af814 COPYING diff --git a/buildroot/package/tremor/tremor.mk b/buildroot/package/tremor/tremor.mk index 05996e2a8ad..835fe36172e 100644 --- a/buildroot/package/tremor/tremor.mk +++ b/buildroot/package/tremor/tremor.mk @@ -4,9 +4,9 @@ # ################################################################################ -TREMOR_SITE = http://svn.xiph.org/trunk/Tremor -TREMOR_SITE_METHOD = svn -TREMOR_VERSION = 19427 +TREMOR_VERSION = 7c30a66346199f3f09017a09567c6c8a3a0eedc8 +TREMOR_SITE = https://git.xiph.org/tremor.git +TREMOR_SITE_METHOD = git TREMOR_LICENSE = BSD-3-Clause TREMOR_LICENSE_FILES = COPYING diff --git a/buildroot/package/triggerhappy/S10triggerhappy b/buildroot/package/triggerhappy/S10triggerhappy index 3253e910b1b..4853873067f 100755 --- a/buildroot/package/triggerhappy/S10triggerhappy +++ b/buildroot/package/triggerhappy/S10triggerhappy @@ -1,18 +1,14 @@ #!/bin/sh NAME=thd -DAEMON=/usr/sbin/$NAME 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*" -# Sanity checks -test -x $DAEMON || exit 0 - [ -r /etc/default/triggerhappy ] && . /etc/default/triggerhappy start() { printf "Starting $NAME: " - start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS \ + start-stop-daemon --start --quiet --pidfile $PIDFILE --exec /usr/sbin/thd -- $DAEMON_ARGS \ && echo "OK" || echo "FAIL" } diff --git a/buildroot/package/trinity/0002-memfd-fix-build-with-glibc-2.27.patch b/buildroot/package/trinity/0002-memfd-fix-build-with-glibc-2.27.patch new file mode 100644 index 00000000000..9ea3634688c --- /dev/null +++ b/buildroot/package/trinity/0002-memfd-fix-build-with-glibc-2.27.patch @@ -0,0 +1,87 @@ +From c93bb184ce996c4d77eefbae2ab0bf74f396ec45 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 13 Mar 2018 06:53:06 +0200 +Subject: [PATCH] memfd: fix build with glibc 2.27 + +glibc 2.27 added a wrapper for memfd_create(). This causes build +failure: + +fds/memfd.c:19:12: error: static declaration of 'memfd_create' follows non-static declaration + static int memfd_create(__unused__ const char *uname, __unused__ unsigned int flag) + ^~~~~~~~~~~~ + +Don't use the local definition when the libc provides one. + +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/kernelslacker/trinity/pull/23 + + configure | 23 +++++++++++++++++++++++ + fds/memfd.c | 3 +++ + 2 files changed, 26 insertions(+) + +diff --git a/configure b/configure +index dc0a87d8c1ad..c0166af33048 100755 +--- a/configure ++++ b/configure +@@ -288,6 +288,29 @@ else + echo "#define USE_BTRFS 1" >> $CONFIGH + fi + ++############################################################################################# ++# Does glibc provide memfd_create() syscall wrapper ++# ++echo -n "[*] Checking if glibc provides memfd_create.. " ++rm -f "$TMP" || exit 1 ++ ++cat >"$TMP.c" << EOF ++#include ++ ++void main() ++{ ++ memfd_create(); ++} ++EOF ++ ++${CC} ${CFLAGS} "$TMP.c" -o "$TMP" &>"$TMP.log" ++if [ ! -x "$TMP" ]; then ++ echo $RED "[NO]" $COL_RESET ++else ++ echo $GREEN "[YES]" $COL_RESET ++ echo "#define USE_MEMFD_CREATE 1" >> $CONFIGH ++fi ++ + ############################################################################################# + + check_header linux/caif/caif_socket.h USE_CAIF +diff --git a/fds/memfd.c b/fds/memfd.c +index 210678e4571c..aaaac2f78f54 100644 +--- a/fds/memfd.c ++++ b/fds/memfd.c +@@ -5,6 +5,7 @@ + #include + #include + #include ++#include + + #include "fd.h" + #include "memfd.h" +@@ -16,6 +17,7 @@ + #include "trinity.h" + #include "udp.h" + ++#ifndef USE_MEMFD_CREATE + static int memfd_create(__unused__ const char *uname, __unused__ unsigned int flag) + { + #ifdef SYS_memfd_create +@@ -24,6 +26,7 @@ static int memfd_create(__unused__ const char *uname, __unused__ unsigned int fl + return -ENOSYS; + #endif + } ++#endif + + static void memfd_destructor(struct object *obj) + { +-- +2.16.1 + diff --git a/buildroot/package/ts4900-fpga/ts4900-fpga.mk b/buildroot/package/ts4900-fpga/ts4900-fpga.mk index ed951b8c8f1..7bb62a39849 100644 --- a/buildroot/package/ts4900-fpga/ts4900-fpga.mk +++ b/buildroot/package/ts4900-fpga/ts4900-fpga.mk @@ -11,7 +11,7 @@ TS4900_FPGA_SITE = ftp://ftp.embeddedarm.com/ts-socket-macrocontrollers/ts-4900- # https://github.com/embeddedarm/meta-ts/blob/f31860f1204b64f765a5380d3b93a2cf18234f90/recipes-extras/ts4900-fpga/ts4900-fpga.bb#L6 define TS4900_FPGA_EXTRACT_CMDS - cp $(DL_DIR)/$(TS4900_FPGA_SOURCE) $(@D) + cp $(TS4900_FPGA_DL_DIR)/$(TS4900_FPGA_SOURCE) $(@D) endef define TS4900_FPGA_INSTALL_TARGET_CMDS diff --git a/buildroot/package/tslib/tslib.hash b/buildroot/package/tslib/tslib.hash index f0c6ff842f7..76cd79516b3 100644 --- a/buildroot/package/tslib/tslib.hash +++ b/buildroot/package/tslib/tslib.hash @@ -1,5 +1,5 @@ -# https://github.com/kergoth/tslib/releases/download/1.15/tslib-1.15.tar.xz.sha256 -sha256 7ce48807cab655076d71a1ceef3ed0ab8a25df98074981d4a8fd1477ee5f710c tslib-1.15.tar.xz +# https://github.com/kergoth/tslib/releases/download/1.16/tslib-1.16.tar.xz.sha256 +sha256 c9a54651337a701a66b074c603c313225579995a7910e519bbc7b1dcdab9a755 tslib-1.16.tar.xz # Locally computed sha256 9b872a8a070b8ad329c4bd380fb1bf0000f564c75023ec8e1e6803f15364b9e9 COPYING diff --git a/buildroot/package/tslib/tslib.mk b/buildroot/package/tslib/tslib.mk index 3ba94d2568b..0d8b31863ba 100644 --- a/buildroot/package/tslib/tslib.mk +++ b/buildroot/package/tslib/tslib.mk @@ -4,7 +4,7 @@ # ################################################################################ -TSLIB_VERSION = 1.15 +TSLIB_VERSION = 1.16 TSLIB_SITE = https://github.com/kergoth/tslib/releases/download/$(TSLIB_VERSION) TSLIB_SOURCE = tslib-$(TSLIB_VERSION).tar.xz TSLIB_LICENSE = GPL-2.0+ (programs), LGPL-2.1+ (libraries) diff --git a/buildroot/package/tvheadend/Config.in b/buildroot/package/tvheadend/Config.in index de37b614832..5db644400c2 100644 --- a/buildroot/package/tvheadend/Config.in +++ b/buildroot/package/tvheadend/Config.in @@ -37,7 +37,7 @@ config BR2_PACKAGE_TVHEADEND_TRANSCODING select BR2_PACKAGE_FFMPEG_AVRESAMPLE select BR2_PACKAGE_FFMPEG_GPL # needed for x264 support select BR2_PACKAGE_FFMPEG_SWSCALE - select BR2_PACKAGE_LIBVPX if !BR2_bfin # libvpx + select BR2_PACKAGE_LIBVPX select BR2_PACKAGE_X264 help Enable transcoding support. diff --git a/buildroot/package/tvheadend/S99tvheadend b/buildroot/package/tvheadend/S99tvheadend index 65669ce404f..fc125a23058 100644 --- a/buildroot/package/tvheadend/S99tvheadend +++ b/buildroot/package/tvheadend/S99tvheadend @@ -5,11 +5,8 @@ PATH=/usr/sbin:/usr/bin:/sbin:/bin NAME=tvheadend -DAEMON=/usr/bin/$NAME PIDFILE=/var/run/$NAME.pid -[ -f "${DAEMON}" -a -x "${DAEMON}" ] || exit 0 - # Read configuration variable file if it is present [ -r "/etc/default/${NAME}" ] && . "/etc/default/${NAME}" @@ -29,7 +26,7 @@ fi case "$1" in start) printf "Starting TVHeadend daemon: " - if start-stop-daemon -S -q -p ${PIDFILE} -m --exec "${DAEMON}" -- ${ARGS}; then + if start-stop-daemon -S -q -p ${PIDFILE} -m --exec /usr/bin/tvheadend -- ${ARGS}; then printf "OK\n" else printf "failed\n" diff --git a/buildroot/package/uboot-tools/uboot-tools.hash b/buildroot/package/uboot-tools/uboot-tools.hash index 9425df3f17d..788c1696f83 100644 --- a/buildroot/package/uboot-tools/uboot-tools.hash +++ b/buildroot/package/uboot-tools/uboot-tools.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 938f597394b33e82e5af8c98bd5ea1a238f61892aabef36384adbf7ca5b52dda u-boot-2018.01.tar.bz2 +sha256 7e7477534409d5368eb1371ffde6820f0f79780a1a1f676161c48442cb303dfd u-boot-2018.03.tar.bz2 diff --git a/buildroot/package/uboot-tools/uboot-tools.mk b/buildroot/package/uboot-tools/uboot-tools.mk index cc57ce84de8..882576d2d51 100644 --- a/buildroot/package/uboot-tools/uboot-tools.mk +++ b/buildroot/package/uboot-tools/uboot-tools.mk @@ -4,7 +4,7 @@ # ################################################################################ -UBOOT_TOOLS_VERSION = 2018.01 +UBOOT_TOOLS_VERSION = 2018.03 UBOOT_TOOLS_SOURCE = u-boot-$(UBOOT_TOOLS_VERSION).tar.bz2 UBOOT_TOOLS_SITE = ftp://ftp.denx.de/pub/u-boot UBOOT_TOOLS_LICENSE = GPL-2.0+ diff --git a/buildroot/package/uclibc-ng-test/0001-misc-tst-syscall6-fix-build-with-musl-and-older-kenr.patch b/buildroot/package/uclibc-ng-test/0001-misc-tst-syscall6-fix-build-with-musl-and-older-kenr.patch new file mode 100644 index 00000000000..ca433261ba6 --- /dev/null +++ b/buildroot/package/uclibc-ng-test/0001-misc-tst-syscall6-fix-build-with-musl-and-older-kenr.patch @@ -0,0 +1,45 @@ +From 9a09c89fdd0e0cebec48d1bb7bc187bf92ae361c Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 13 Mar 2018 12:58:59 +0200 +Subject: [PATCH] misc/tst-syscall6: fix build with musl and older kenrel + headers + +The RWF_DSYNC and RWF_HIPRI macros were introduced in kernel version 4.6 +with the preadv2/pwritev2 system calls. musl libc provides its own +syscall definitions, even when the kernel headers are older. This leads +to the following build failure: + +tst-syscall6.c: In function 'main': +tst-syscall6.c:32:48: error: 'RWF_DSYNC' undeclared (first use in this function) + nio = syscall(SYS_pwritev2, fd, iov, 2, 0, 0, RWF_DSYNC); + ^~~~~~~~~ +tst-syscall6.c:32:48: note: each undeclared identifier is reported only once for each function it appears in +tst-syscall6.c:42:58: error: 'RWF_HIPRI' undeclared (first use in this function) + nio = syscall(SYS_preadv2, fd, iov, 1, strlen(str0), 0, RWF_HIPRI); + ^~~~~~~~~ + +Make the code depend also on RWF_HIPRI to fix this failure. + +Signed-off-by: Baruch Siach +--- +Upstream status: patch sent to Waldemar Brodkorb + + test/misc/tst-syscall6.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/misc/tst-syscall6.c b/test/misc/tst-syscall6.c +index fa51c275e4a5..9ad2ddac2b8f 100644 +--- a/test/misc/tst-syscall6.c ++++ b/test/misc/tst-syscall6.c +@@ -9,7 +9,7 @@ + + int main() + { +-#if defined SYS_preadv2 && defined SYS_pwritev2 ++#if defined SYS_preadv2 && defined SYS_pwritev2 && defined RWF_HIPRI + char tmp[] = "/tmp/tst-preadv2-XXXXXX"; + int fd; + struct iovec iov[2]; +-- +2.16.1 + diff --git a/buildroot/package/uclibc/0001-Revert-ldconfig-add-glibc-compatibility-fix.patch b/buildroot/package/uclibc/0001-Revert-ldconfig-add-glibc-compatibility-fix.patch new file mode 100644 index 00000000000..7ba3b2866d4 --- /dev/null +++ b/buildroot/package/uclibc/0001-Revert-ldconfig-add-glibc-compatibility-fix.patch @@ -0,0 +1,54 @@ +From 92d250d387e247029900c9074150f45866b29781 Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Sun, 29 Apr 2018 19:34:11 +0200 +Subject: [PATCH] Revert "ldconfig: add glibc compatibility fix" + +This reverts commit 2a3bb4daf5778c5875674cd26a3c75b3d460a042. + +This is breaking ld.so.cache usage. Seen on Gentoo/amd64. + +Reported-by: "Anthony G. Basile" +Signed-off-by: Waldemar Brodkorb +--- + utils/ldconfig.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +diff --git a/utils/ldconfig.c b/utils/ldconfig.c +index 58939d6..e6b7881 100644 +--- a/utils/ldconfig.c ++++ b/utils/ldconfig.c +@@ -184,9 +184,10 @@ static char *readsoname(char *name, FILE *infile, int expected_type, + res = readsoname32(name, infile, expected_type, type); + else { + res = readsoname64(name, infile, expected_type, type); +- +- // For 64-bit glibc compatibility +- *type |= FLAG_X8664_LIB64; ++#if 0 ++ /* relies on multilib support which we dont have ... */ ++ *type |= LIB_ELF64; ++#endif + } + + return res; +@@ -757,7 +758,7 @@ void cache_print(void) + + for (fd = 0; fd < header->nlibs; fd++) { + printf("\t%s ", strs + libent[fd].sooffset); +- switch (libent[fd].flags & ~LIB_ELF64 & FLAG_TYPE_MASK) { ++ switch (libent[fd].flags & ~LIB_ELF64) { + case LIB_DLL: + printf("(libc4)"); + break; +@@ -770,7 +771,7 @@ void cache_print(void) + case LIB_ELF_LIBC5: + case LIB_ELF_LIBC6: + printf("(libc%d%s)", +- (libent[fd].flags & ~LIB_ELF64 & FLAG_TYPE_MASK) + 3, ++ (libent[fd].flags & ~LIB_ELF64) + 3, + libent[fd].flags & LIB_ELF64 ? "/64" : ""); + break; + default: +-- +2.1.4 + diff --git a/buildroot/package/uclibc/0002-librt-declare-clock_nanosleep-independent-of-thread-.patch b/buildroot/package/uclibc/0002-librt-declare-clock_nanosleep-independent-of-thread-.patch new file mode 100644 index 00000000000..bb9ef18b4f7 --- /dev/null +++ b/buildroot/package/uclibc/0002-librt-declare-clock_nanosleep-independent-of-thread-.patch @@ -0,0 +1,34 @@ +From 368a1df04a32c3b95859b0ca588da8548a5f39ca Mon Sep 17 00:00:00 2001 +From: Waldemar Brodkorb +Date: Tue, 1 May 2018 19:35:20 +0200 +Subject: [PATCH] librt: declare clock_nanosleep independent of thread support + +Reported-by: Baruch Siach +Signed-off-by: Waldemar Brodkorb +--- + include/time.h | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/include/time.h b/include/time.h +index 785c8f6..1a14089 100644 +--- a/include/time.h ++++ b/include/time.h +@@ -356,7 +356,6 @@ extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) + # endif /* __UCLIBC_HAS_REALTIME__ */ + + # if defined __USE_XOPEN2K && defined __UCLIBC_HAS_ADVANCED_REALTIME__ +-# ifdef __UCLIBC_HAS_THREADS_NATIVE__ + /* High-resolution sleep with the specified clock. + + This function is a cancellation point and therefore not marked with +@@ -367,7 +366,6 @@ extern int clock_nanosleep (clockid_t __clock_id, int __flags, + + /* Return clock ID for CPU-time clock. */ + extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW; +-# endif /* __UCLIBC_HAS_THREADS_NATIVE__ */ + # endif + + # if defined __UCLIBC_HAS_REALTIME__ +-- +2.1.4 + diff --git a/buildroot/package/uclibc/Config.in b/buildroot/package/uclibc/Config.in index 0e24b25441a..0747cc8d7ce 100644 --- a/buildroot/package/uclibc/Config.in +++ b/buildroot/package/uclibc/Config.in @@ -53,7 +53,7 @@ config BR2_PTHREADS_NATIVE config BR2_PTHREADS bool "linuxthreads" - depends on BR2_bfin || BR2_m68k || BR2_microblaze || BR2_or1k || BR2_arm || BR2_armeb || BR2_xtensa + depends on BR2_m68k || BR2_microblaze || BR2_or1k || BR2_arm || BR2_armeb || BR2_xtensa select BR2_TOOLCHAIN_HAS_THREADS config BR2_PTHREADS_NONE @@ -95,7 +95,6 @@ config BR2_UCLIBC_TARGET_ARCH string default "arc" if BR2_arcle || BR2_arceb default "arm" if BR2_arm || BR2_armeb - default "bfin" if BR2_bfin default "m68k" if BR2_m68k default "microblaze" if BR2_microblaze default "mips" if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el diff --git a/buildroot/package/uclibc/uclibc.hash b/buildroot/package/uclibc/uclibc.hash index 0a1568368fb..81936f3639e 100644 --- a/buildroot/package/uclibc/uclibc.hash +++ b/buildroot/package/uclibc/uclibc.hash @@ -1,2 +1,2 @@ # From https://uclibc-ng.org/ -sha256 a1504ddc34a29cc9bfd1f5a7419c4b63bb510d9e2faed81618d1b596ceb0a5a9 uClibc-ng-1.0.28.tar.xz +sha256 992bd9a2889ea385902b87e3d3d30603741eb16728288fbf537ff2027f770496 uClibc-ng-1.0.30.tar.xz diff --git a/buildroot/package/uclibc/uclibc.mk b/buildroot/package/uclibc/uclibc.mk index c5b0c6b16d3..7de92198732 100644 --- a/buildroot/package/uclibc/uclibc.mk +++ b/buildroot/package/uclibc/uclibc.mk @@ -4,7 +4,7 @@ # ################################################################################ -UCLIBC_VERSION = 1.0.28 +UCLIBC_VERSION = 1.0.30 UCLIBC_SOURCE = uClibc-ng-$(UCLIBC_VERSION).tar.xz UCLIBC_SITE = http://downloads.uclibc-ng.org/releases/$(UCLIBC_VERSION) UCLIBC_LICENSE = LGPL-2.1+ @@ -68,14 +68,6 @@ define UCLIBC_BINFMT_CONFIG $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config) endef endif -ifeq ($(BR2_BINFMT_FLAT_SEP_DATA),y) -define UCLIBC_BINFMT_CONFIG - $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config) - $(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D)/.config) - $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_SHARED_FLAT,$(@D)/.config) - $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config) -endef -endif ifeq ($(BR2_BINFMT_FLAT_SHARED),y) define UCLIBC_BINFMT_CONFIG $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config) @@ -382,7 +374,7 @@ endif UCLIBC_MAKE_FLAGS = \ ARCH="$(UCLIBC_TARGET_ARCH)" \ CROSS_COMPILE="$(TARGET_CROSS)" \ - UCLIBC_EXTRA_CFLAGS="$(UCLIBC_EXTRA_CFLAGS) $(TARGET_ABI)" \ + UCLIBC_EXTRA_CFLAGS="$(TARGET_ABI)" \ HOSTCC="$(HOSTCC)" define UCLIBC_KCONFIG_FIXUP_CMDS diff --git a/buildroot/package/udftools/0001-pktsetup-pktsetup.c-do-not-include-bits-types.h.patch b/buildroot/package/udftools/0001-pktsetup-pktsetup.c-do-not-include-bits-types.h.patch new file mode 100644 index 00000000000..4d842821aa5 --- /dev/null +++ b/buildroot/package/udftools/0001-pktsetup-pktsetup.c-do-not-include-bits-types.h.patch @@ -0,0 +1,32 @@ +From 8da4dde42cc25294819ad078432d85437e4a12ee Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 22 Apr 2018 15:05:46 +0200 +Subject: [PATCH] pktsetup/pktsetup.c: do not include + +This header is not a standard header, and is for example not provided +by the musl C library. + +This change has been tested by building udftools against glibc, uClibc +and musl. + +Signed-off-by: Thomas Petazzoni +Upstream-status: https://github.com/pali/udftools/pull/16 +--- + pktsetup/pktsetup.c | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/pktsetup/pktsetup.c b/pktsetup/pktsetup.c +index 8b3df51..81ed142 100644 +--- a/pktsetup/pktsetup.c ++++ b/pktsetup/pktsetup.c +@@ -27,7 +27,6 @@ + #include + #include + #include +-#include + #include + #include + #include +-- +2.14.3 + diff --git a/buildroot/package/udftools/0002-configure.ac-detect-readline-via-pkg-config-when-pos.patch b/buildroot/package/udftools/0002-configure.ac-detect-readline-via-pkg-config-when-pos.patch new file mode 100644 index 00000000000..f73db99ca2f --- /dev/null +++ b/buildroot/package/udftools/0002-configure.ac-detect-readline-via-pkg-config-when-pos.patch @@ -0,0 +1,60 @@ +From bdacf0101fea1dad2c89996b27cb4b9caee9109c Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 22 Apr 2018 22:28:09 +0200 +Subject: [PATCH] configure.ac: detect readline via pkg-config when possible + +pkg-config automatically handles static linking situations, where for +example readline is linked against ncurses, and therefore -lncurses +needs to be passed in addition to -lreadline. + +This proposal uses pkg-config when available. If pkg-config is not +found, or readline is not found via pkg-config, we fallback to the +existing AC_CHECK_LIB(). This AC_CHECK_LIB() test is modified to set +READLINE_LIBS, like PKG_CHECK_MODULES() does. The Makefile.am +consequently uses READLINE_LIBS instead of hardcoding -lreadline. + +Signed-off-by: Thomas Petazzoni +--- + configure.ac | 14 ++++++++++++-- + wrudf/Makefile.am | 2 +- + 2 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 95fbba3..62b1caa 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -9,8 +9,18 @@ AC_PROG_CC + AC_DISABLE_SHARED + AM_PROG_LIBTOOL + +-dnl Checks for libraries. +-AC_CHECK_LIB(readline, readline, [ ], AC_MSG_ERROR([cannot find -lreadline.])) ++PKG_PROG_PKG_CONFIG ++ ++dnl Checks for libraries, by using pkg-config when available ++if test -n "${PKG_CONFIG}" ; then ++ PKG_CHECK_MODULES([READLINE], [readline], [readline_found=yes], [readline_found=no]) ++fi ++ ++if test "${readline_found}" != "yes" ; then ++ AC_CHECK_LIB(readline, readline, ++ [AC_SUBST([READLINE_LIBS], [-lreadline])], ++ AC_MSG_ERROR([cannot find -lreadline.])) ++fi + + dnl Checks for header files. + AC_HEADER_STDC +diff --git a/wrudf/Makefile.am b/wrudf/Makefile.am +index fe1c269..e3ab85b 100644 +--- a/wrudf/Makefile.am ++++ b/wrudf/Makefile.am +@@ -1,5 +1,5 @@ + bin_PROGRAMS = wrudf +-wrudf_LDADD = $(top_builddir)/libudffs/libudffs.la -lreadline ++wrudf_LDADD = $(top_builddir)/libudffs/libudffs.la $(READLINE_LIBS) + wrudf_SOURCES = wrudf.c wrudf-cmnd.c wrudf-desc.c wrudf-cdrw.c wrudf-cdr.c ide-pc.c wrudf.h ide-pc.h ../include/ecma_167.h ../include/osta_udf.h ../include/bswap.h + + AM_CPPFLAGS = -I$(top_srcdir)/include -D_GNU_SOURCE -DDEBUG +-- +2.14.3 + diff --git a/buildroot/package/udftools/Config.in b/buildroot/package/udftools/Config.in new file mode 100644 index 00000000000..bbccd601863 --- /dev/null +++ b/buildroot/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/buildroot/package/udftools/udftools.hash b/buildroot/package/udftools/udftools.hash new file mode 100644 index 00000000000..837a515726e --- /dev/null +++ b/buildroot/package/udftools/udftools.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 67fe428d452901215cfad8049d250540c97114b1a20dd63277b91c2c4fae8292 udftools-2.0.tar.gz +sha256 dcc100d4161cc0b7177545ab6e47216f84857cda3843847c792a25289852dcaa COPYING diff --git a/buildroot/package/udftools/udftools.mk b/buildroot/package/udftools/udftools.mk new file mode 100644 index 00000000000..e5bf59137e7 --- /dev/null +++ b/buildroot/package/udftools/udftools.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# udftools +# +################################################################################ + +UDFTOOLS_VERSION = 2.0 +UDFTOOLS_SITE = https://github.com/pali/udftools/releases/download/$(UDFTOOLS_VERSION) +UDFTOOLS_LICENSE = GPL-2.0+ +UDFTOOLS_LICENSE_FILES = COPYING +UDFTOOLS_AUTORECONF = YES +UDFTOOLS_DEPENDENCIES = readline host-pkgconf + +$(eval $(autotools-package)) diff --git a/buildroot/package/unixodbc/unixodbc.hash b/buildroot/package/unixodbc/unixodbc.hash index e99169c15d4..9d21a66e8d8 100644 --- a/buildroot/package/unixodbc/unixodbc.hash +++ b/buildroot/package/unixodbc/unixodbc.hash @@ -1,4 +1,6 @@ -# From ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.4.tar.gz.md5 -md5 bd25d261ca1808c947cb687e2034be81 unixODBC-2.3.4.tar.gz +# From ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.6.tar.gz.md5 +md5 a8629fd2953b04b4639d0a9d8a5cf9d1 unixODBC-2.3.6.tar.gz # Locally computed -sha256 2e1509a96bb18d248bf08ead0d74804957304ff7c6f8b2e5965309c632421e39 unixODBC-2.3.4.tar.gz +sha256 88b637f647c052ecc3861a3baa275c3b503b193b6a49ff8c28b2568656d14d69 unixODBC-2.3.6.tar.gz +sha256 a6b9aa1e9bfade121164c06fd975e9b913a8e38bf33d25ff967dfa3ed07d12f8 COPYING +sha256 1e594f4c7fd6d099eca4bd1340b39d871ce0298331d8ebd4b68935548ee45cf4 exe/COPYING diff --git a/buildroot/package/unixodbc/unixodbc.mk b/buildroot/package/unixodbc/unixodbc.mk index d4aa02eea32..423f3952124 100644 --- a/buildroot/package/unixodbc/unixodbc.mk +++ b/buildroot/package/unixodbc/unixodbc.mk @@ -4,7 +4,7 @@ # ################################################################################ -UNIXODBC_VERSION = 2.3.4 +UNIXODBC_VERSION = 2.3.6 UNIXODBC_SOURCE = unixODBC-$(UNIXODBC_VERSION).tar.gz UNIXODBC_SITE = ftp://ftp.unixodbc.org/pub/unixODBC UNIXODBC_INSTALL_STAGING = YES diff --git a/buildroot/package/unscd/unscd.mk b/buildroot/package/unscd/unscd.mk index f0eb5d6ad63..36f2de271b9 100644 --- a/buildroot/package/unscd/unscd.mk +++ b/buildroot/package/unscd/unscd.mk @@ -11,7 +11,7 @@ UNSCD_LICENSE = GPL-2.0 UNSCD_LICENSE_FILES = $(UNSCD_SOURCE) define UNSCD_EXTRACT_CMDS - cp $(DL_DIR)/$($(PKG)_SOURCE) $(@D)/ + cp $(UNSCD_DL_DIR)/$($(PKG)_SOURCE) $(@D)/ endef define UNSCD_BUILD_CMDS diff --git a/buildroot/package/upmpdcli/S99upmpdcli b/buildroot/package/upmpdcli/S99upmpdcli index 71d19a58e5d..c1586eb05d8 100644 --- a/buildroot/package/upmpdcli/S99upmpdcli +++ b/buildroot/package/upmpdcli/S99upmpdcli @@ -1,17 +1,13 @@ #!/bin/sh NAME=upmpdcli -DAEMON=/usr/bin/$NAME CONFFILE=/etc/$NAME.conf PIDFILE=/var/run/$NAME.pid DAEMON_ARGS="-D -c $CONFFILE" -# Sanity checks -test -f $DAEMON || exit 0 - start() { printf "Starting $NAME: " - start-stop-daemon --start --quiet --background --exec $DAEMON \ + start-stop-daemon --start --quiet --background --exec /usr/bin/upmpdcli \ -- $DAEMON_ARGS \ && echo "OK" || echo "FAIL" } diff --git a/buildroot/package/upmpdcli/upmpdcli.hash b/buildroot/package/upmpdcli/upmpdcli.hash index 364fa914e9d..c59655c9fec 100644 --- a/buildroot/package/upmpdcli/upmpdcli.hash +++ b/buildroot/package/upmpdcli/upmpdcli.hash @@ -1,2 +1,5 @@ -# From http://www.lesbonscomptes.com/upmpdcli/downloads/upmpdcli-1.2.15.tar.gz.sha256: -sha256 93d2b9cfd6cb8643c5a23d4115b44622d76c71abe15db9bb8d5b4d83f4d9b49c upmpdcli-1.2.15.tar.gz +# From http://www.lesbonscomptes.com/upmpdcli/downloads/upmpdcli-1.2.16.tar.gz.sha256: +sha256 b0dfd33cd5c1c2e4f770660c12d7303b6d8b3fdca4f63530c6a235ce279a9d98 upmpdcli-1.2.16.tar.gz + +# Hash for license file: +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/buildroot/package/upmpdcli/upmpdcli.mk b/buildroot/package/upmpdcli/upmpdcli.mk index ad41f85c8de..069b1439980 100644 --- a/buildroot/package/upmpdcli/upmpdcli.mk +++ b/buildroot/package/upmpdcli/upmpdcli.mk @@ -4,7 +4,7 @@ # ################################################################################ -UPMPDCLI_VERSION = 1.2.15 +UPMPDCLI_VERSION = 1.2.16 UPMPDCLI_SITE = http://www.lesbonscomptes.com/upmpdcli/downloads UPMPDCLI_LICENSE = GPL-2.0+ UPMPDCLI_LICENSE_FILES = COPYING diff --git a/buildroot/package/urg/urg.mk b/buildroot/package/urg/urg.mk index 966627fe36b..86b7ec2c17e 100644 --- a/buildroot/package/urg/urg.mk +++ b/buildroot/package/urg/urg.mk @@ -25,7 +25,7 @@ endif URG_CONFIG_SCRIPTS = c_urg-config urg-config define URG_EXTRACT_CMDS - $(UNZIP) -d $(BUILD_DIR) $(DL_DIR)/$(URG_SOURCE) + $(UNZIP) -d $(BUILD_DIR) $(URG_DL_DIR)/$(URG_SOURCE) endef $(eval $(autotools-package)) diff --git a/buildroot/package/usb_modeswitch/usb_modeswitch.hash b/buildroot/package/usb_modeswitch/usb_modeswitch.hash index b202e6353af..3cbd370e2cc 100644 --- a/buildroot/package/usb_modeswitch/usb_modeswitch.hash +++ b/buildroot/package/usb_modeswitch/usb_modeswitch.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 31c0be280d49a99ec3dc0be3325bef320d9c04b50714ef0ce1e36a614d687633 usb-modeswitch-2.5.0.tar.bz2 +sha256 abffac09c87eacd78e101545967dc25af7e989745b4276756d45dbf4008a2ea6 usb-modeswitch-2.5.2.tar.bz2 +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/buildroot/package/usb_modeswitch/usb_modeswitch.mk b/buildroot/package/usb_modeswitch/usb_modeswitch.mk index c67d4cd5831..d0c33cc1871 100644 --- a/buildroot/package/usb_modeswitch/usb_modeswitch.mk +++ b/buildroot/package/usb_modeswitch/usb_modeswitch.mk @@ -4,7 +4,7 @@ # ################################################################################ -USB_MODESWITCH_VERSION = 2.5.0 +USB_MODESWITCH_VERSION = 2.5.2 USB_MODESWITCH_SOURCE = usb-modeswitch-$(USB_MODESWITCH_VERSION).tar.bz2 USB_MODESWITCH_SITE = http://www.draisberghof.de/usb_modeswitch USB_MODESWITCH_DEPENDENCIES = libusb @@ -28,6 +28,7 @@ USB_MODESWITCH_POST_PATCH_HOOKS += UPDATE_CONFIG_HOOK define USB_MODESWITCH_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ + $(if $(BR2_INSTALL_LIBSTDCPP),,CXX=false) \ CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE -Wall -I." \ JIM_CONFIGURE_OPTS="--host=$(GNU_TARGET_NAME) --build=$(GNU_HOST_NAME)" \ -C $(@D) $(USB_MODESWITCH_BUILD_TARGETS) diff --git a/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.hash b/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.hash index e19fcac628f..f35fd69a8bf 100644 --- a/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.hash +++ b/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 e2dcfd9d28928d8d8f03381571a23442b3c50d48d343bc40a1a07d01662738d1 usb-modeswitch-data-20170205.tar.bz2 +sha256 ce413ef2a50e648e9c81bc3ea6110e7324a8bf981034fc9ec4467d3562563c2c usb-modeswitch-data-20170806.tar.bz2 +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.mk b/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.mk index 4f634cdaf47..80ecd33d855 100644 --- a/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.mk +++ b/buildroot/package/usb_modeswitch_data/usb_modeswitch_data.mk @@ -4,7 +4,7 @@ # ################################################################################ -USB_MODESWITCH_DATA_VERSION = 20170205 +USB_MODESWITCH_DATA_VERSION = 20170806 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 diff --git a/buildroot/package/util-linux/0001-docs-add-ISC-licence.patch b/buildroot/package/util-linux/0001-docs-add-ISC-licence.patch deleted file mode 100644 index aea7b9719c5..00000000000 --- a/buildroot/package/util-linux/0001-docs-add-ISC-licence.patch +++ /dev/null @@ -1,38 +0,0 @@ -From a9e4662d26b10789b28282d7e77ab189ef34cf5c Mon Sep 17 00:00:00 2001 -From: Carlos Santos -Date: Sun, 14 Jan 2018 16:39:31 -0200 -Subject: [PATCH] docs: add ISC licence - -Save the top 21 lines of sys-utils/rfkill.c as COPYING.ISC. This is -useful for Linux distributions an integration tools like Buildroot, -to collect detailed legal information for each package. - -[kzak@redhat.com: - remove C-comments and rfkill header] - -Signed-off-by: Carlos Santos -Signed-off-by: Karel Zak ---- - Documentation/licenses/COPYING.ISC | 11 +++++++++++ - 1 file changed, 11 insertions(+) - create mode 100644 Documentation/licenses/COPYING.ISC - -diff --git a/Documentation/licenses/COPYING.ISC b/Documentation/licenses/COPYING.ISC -new file mode 100644 -index 000000000..8351a30e3 ---- /dev/null -+++ b/Documentation/licenses/COPYING.ISC -@@ -0,0 +1,11 @@ -+Permission to use, copy, modify, and/or distribute this software for any -+purpose with or without fee is hereby granted, provided that the above -+copyright notice and this permission notice appear in all copies. -+ -+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. --- -2.14.3 - diff --git a/buildroot/package/util-linux/util-linux.hash b/buildroot/package/util-linux/util-linux.hash index 068bb45e6c2..8f93d793c85 100644 --- a/buildroot/package/util-linux/util-linux.hash +++ b/buildroot/package/util-linux/util-linux.hash @@ -1,5 +1,5 @@ -# From https://www.kernel.org/pub/linux/utils/util-linux/v2.31/sha256sums.asc -sha256 1a51b16fa9cd51d26ef9ab52d2f1de12403b810fc8252bf7d478df91b3cddf11 util-linux-2.31.1.tar.xz +# From https://www.kernel.org/pub/linux/utils/util-linux/v2.32/sha256sums.asc +sha256 6c7397abc764e32e8159c2e96042874a190303e77adceb4ac5bd502a272a4734 util-linux-2.32.tar.xz # License files, locally calculated sha256 1e4b65802b0df8115395c697029d03339f983d451a473a08643309c684410d9a README.licensing sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 Documentation/licenses/COPYING.GPLv2 diff --git a/buildroot/package/util-linux/util-linux.mk b/buildroot/package/util-linux/util-linux.mk index 72a6d181786..80a8a08051f 100644 --- a/buildroot/package/util-linux/util-linux.mk +++ b/buildroot/package/util-linux/util-linux.mk @@ -4,9 +4,8 @@ # ################################################################################ -UTIL_LINUX_VERSION_MAJOR = 2.31 -UTIL_LINUX_VERSION_MINOR = 1 -UTIL_LINUX_VERSION = $(UTIL_LINUX_VERSION_MAJOR).$(UTIL_LINUX_VERSION_MINOR) +UTIL_LINUX_VERSION_MAJOR = 2.32 +UTIL_LINUX_VERSION = $(UTIL_LINUX_VERSION_MAJOR) 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) @@ -16,10 +15,6 @@ UTIL_LINUX_LICENSE = GPL-2.0+, BSD-4-Clause, LGPL-2.1+ (libblkid, libfdisk, libm UTIL_LINUX_LICENSE_FILES = README.licensing Documentation/licenses/COPYING.GPLv2 Documentation/licenses/COPYING.UCB Documentation/licenses/COPYING.LGPLv2.1 Documentation/licenses/COPYING.BSD-3 Documentation/licenses/COPYING.ISC UTIL_LINUX_INSTALL_STAGING = YES UTIL_LINUX_DEPENDENCIES = host-pkgconf $(TARGET_NLS_DEPENDENCIES) -# uClibc needs NTP_LEGACY for sys/timex.h -> ntp_gettime() support -# (used in logger.c), and the common default is N. -UTIL_LINUX_CONF_ENV = scanf_cv_type_modifier=no \ - $(if $(BR2_TOOLCHAIN_USES_UCLIBC),ac_cv_header_sys_timex_h=no) UTIL_LINUX_CONF_OPTS += \ --disable-rpath \ --disable-makeinstall-chown diff --git a/buildroot/package/valgrind/0004-Fixes-for-musl-libc.patch b/buildroot/package/valgrind/0004-Fixes-for-musl-libc.patch deleted file mode 100644 index d543728ac5b..00000000000 --- a/buildroot/package/valgrind/0004-Fixes-for-musl-libc.patch +++ /dev/null @@ -1,99 +0,0 @@ -From 50859f3577418cc42f76e1319e699202a615bbe1 Mon Sep 17 00:00:00 2001 -From: Peter Seiderer -Date: Sat, 31 Oct 2015 19:45:04 +0100 -Subject: [PATCH] Fixes for musl libc. - -- add musl libc detection (prevents configure error) -- adjust preload and symbol names (based on the OpenWrt - patch, see [1]) - -[1] https://dev.openwrt.org/browser/trunk/package/devel/valgrind/patches/200-musl_fix.patch?rev=46302 - -Signed-off-by: Peter Seiderer ---- - configure.ac | 16 ++++++++++++++-- - coregrind/vg_preloaded.c | 2 +- - include/pub_tool_redir.h | 9 ++++++++- - 3 files changed, 23 insertions(+), 4 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 8ab7f9b..e865bf5 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -1009,6 +1009,13 @@ if test x$VGCONF_PLATFORM_PRI_CAPS = xX86_SOLARIS \ - GLIBC_VERSION="solaris" - fi - -+# GLIBC_VERSION is empty if a musl libc is used, so use the toolchain tuple -+# in this case. -+if test x$GLIBC_VERSION = x; then -+ if $CC -dumpmachine | grep -q musl; then -+ GLIBC_VERSION=musl -+ fi -+fi - - AC_MSG_CHECKING([the glibc version]) - -@@ -1064,10 +1071,15 @@ case "${GLIBC_VERSION}" in - # DEFAULT_SUPP set in host_os switch-case above. - # No other suppression file is used. - ;; -+ musl) -+ AC_MSG_RESULT(Musl) -+ AC_DEFINE([MUSL_LIBC], 1, [Define to 1 if you're using Musl libc]) -+ # no DEFAULT_SUPP file yet for musl libc. -+ ;; - 2.0|2.1|*) - AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}]) -- AC_MSG_ERROR([Valgrind requires glibc version 2.2 or later,]) -- AC_MSG_ERROR([Darwin libc, Bionic libc or Solaris libc]) -+ AC_MSG_ERROR([Valgrind requires glibc version 2.2 or later, uClibc,]) -+ AC_MSG_ERROR([musl libc, Darwin libc, Bionic libc or Solaris libc]) - ;; - esac - -diff --git a/coregrind/vg_preloaded.c b/coregrind/vg_preloaded.c -index 2ea7a7a..7b51aba 100644 ---- a/coregrind/vg_preloaded.c -+++ b/coregrind/vg_preloaded.c -@@ -56,7 +56,7 @@ - void VG_NOTIFY_ON_LOAD(freeres)( void ); - void VG_NOTIFY_ON_LOAD(freeres)( void ) - { --# if !defined(__UCLIBC__) \ -+# if !defined(__UCLIBC__) && !defined(MUSL_LIBC) \ - && !defined(VGPV_arm_linux_android) \ - && !defined(VGPV_x86_linux_android) \ - && !defined(VGPV_mips32_linux_android) \ -diff --git a/include/pub_tool_redir.h b/include/pub_tool_redir.h -index bac00d7..babcf9a 100644 ---- a/include/pub_tool_redir.h -+++ b/include/pub_tool_redir.h -@@ -242,8 +242,11 @@ - /* --- Soname of the standard C library. --- */ - - #if defined(VGO_linux) || defined(VGO_solaris) -+# if defined(MUSL_LIBC) -+# define VG_Z_LIBC_SONAME libcZdZa // libc.* -+#else - # define VG_Z_LIBC_SONAME libcZdsoZa // libc.so* -- -+#endif - #elif defined(VGO_darwin) && (DARWIN_VERS <= DARWIN_10_6) - # define VG_Z_LIBC_SONAME libSystemZdZaZddylib // libSystem.*.dylib - -@@ -274,7 +277,11 @@ - /* --- Soname of the pthreads library. --- */ - - #if defined(VGO_linux) -+# if defined(MUSL_LIBC) -+# define VG_Z_LIBPTHREAD_SONAME libcZdZa // libc.* -+#else - # define VG_Z_LIBPTHREAD_SONAME libpthreadZdsoZd0 // libpthread.so.0 -+#endif - #elif defined(VGO_darwin) - # define VG_Z_LIBPTHREAD_SONAME libSystemZdZaZddylib // libSystem.*.dylib - #elif defined(VGO_solaris) --- -2.1.4 - diff --git a/buildroot/package/valgrind/Config.in b/buildroot/package/valgrind/Config.in index 75b779d2143..56e4af21fa7 100644 --- a/buildroot/package/valgrind/Config.in +++ b/buildroot/package/valgrind/Config.in @@ -1,5 +1,6 @@ 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 diff --git a/buildroot/package/valgrind/valgrind.hash b/buildroot/package/valgrind/valgrind.hash index 5d7da19a867..ea05dd677c0 100644 --- a/buildroot/package/valgrind/valgrind.hash +++ b/buildroot/package/valgrind/valgrind.hash @@ -1,2 +1,6 @@ # From http://valgrind.org/downloads/current.html -md5 6eb03c0c10ea917013a7622e483d61bb valgrind-3.12.0.tar.bz2 +md5 817dd08f1e8a66336b9ff206400a5369 valgrind-3.13.0.tar.bz2 + +# License files +sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING +sha256 56976e64523fa1e68db4e6f464f5b2cb89d7d08f54b1d012e317b8db286b3faf COPYING.DOCS diff --git a/buildroot/package/valgrind/valgrind.mk b/buildroot/package/valgrind/valgrind.mk index 32aeb97cee4..11dec607dda 100644 --- a/buildroot/package/valgrind/valgrind.mk +++ b/buildroot/package/valgrind/valgrind.mk @@ -4,8 +4,8 @@ # ################################################################################ -VALGRIND_VERSION = 3.12.0 -VALGRIND_SITE = http://valgrind.org/downloads +VALGRIND_VERSION = 3.13.0 +VALGRIND_SITE = ftp://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 @@ -14,9 +14,6 @@ VALGRIND_CONF_OPTS = \ --without-mpicc VALGRIND_INSTALL_STAGING = YES -# patch 0004-Fixes-for-musl-libc.patch touching configure.ac -VALGRIND_AUTORECONF = 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. diff --git a/buildroot/package/vde2/vde2.hash b/buildroot/package/vde2/vde2.hash index a56a1bbbe0b..a9e1ea22630 100644 --- a/buildroot/package/vde2/vde2.hash +++ b/buildroot/package/vde2/vde2.hash @@ -1,2 +1,5 @@ # Locally computed: sha256 cbea9b7e03097f87a6b5e98b07890d2275848f1fe4b9fcda77b8994148bc9542 vde2-2.3.2.tar.bz2 +sha256 fb295d0c24b8ef4b39017ac68e772e8e6e839612ce10da12b9f48d1e8e512e2e COPYING +sha256 5df07007198989c622f5d41de8d703e7bef3d0e79d62e24332ee739a452af62a COPYING.libvdeplug +sha256 d5ac74315b2d2f9c53f5839e311484f4646a9401b68d02d36f3dab386352e74d COPYING.slirpvde diff --git a/buildroot/package/vlc/0001-Disable-building-of-statically-linked-vlc-binary.patch b/buildroot/package/vlc/0001-Disable-building-of-statically-linked-vlc-binary.patch new file mode 100644 index 00000000000..4caa170b02a --- /dev/null +++ b/buildroot/package/vlc/0001-Disable-building-of-statically-linked-vlc-binary.patch @@ -0,0 +1,40 @@ +From 0b701c37d8a409904ea80fb6b74f096d1f28cc84 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 febdc63fe4..dca6354ec9 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -933,7 +933,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 869ac561dc..5e48b70d0a 100644 +--- a/bin/Makefile.am ++++ b/bin/Makefile.am +@@ -1,7 +1,7 @@ + # Building vlc + # + bin_PROGRAMS = vlc +-noinst_PROGRAMS = vlc-static ++noinst_PROGRAMS = + noinst_DATA = + vlclib_PROGRAMS = vlc-cache-gen + EXTRA_PROGRAMS = vlc-wrapper +-- +2.14.3 + diff --git a/buildroot/package/vlc/0001-vlc-static.patch b/buildroot/package/vlc/0001-vlc-static.patch deleted file mode 100644 index f9aa079a4c3..00000000000 --- a/buildroot/package/vlc/0001-vlc-static.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -uNr vlc-2.1.5.org/bin/Makefile.am vlc-2.1.5/bin/Makefile.am ---- vlc-2.1.5.org/bin/Makefile.am 2013-12-03 10:12:34.000000000 +0100 -+++ vlc-2.1.5/bin/Makefile.am 2014-08-03 12:30:06.722154518 +0200 -@@ -1,7 +1,7 @@ - # Building vlc - # - bin_PROGRAMS = vlc --noinst_PROGRAMS = vlc-static -+noinst_PROGRAMS = - noinst_DATA = - vlclib_PROGRAMS = vlc-cache-gen - EXTRA_PROGRAMS = vlc-wrapper -diff -uNr vlc-2.1.5.org/Makefile.am vlc-2.1.5/Makefile.am ---- vlc-2.1.5.org/Makefile.am 2014-02-14 18:40:50.000000000 +0100 -+++ vlc-2.1.5/Makefile.am 2014-08-03 12:29:52.059010766 +0200 -@@ -932,7 +932,7 @@ - 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/buildroot/package/vlc/0002-configure.ac-add-check-for-libgcrypt-config-program.patch b/buildroot/package/vlc/0002-configure.ac-add-check-for-libgcrypt-config-program.patch index e9a73153171..c1cb2fa10e2 100644 --- a/buildroot/package/vlc/0002-configure.ac-add-check-for-libgcrypt-config-program.patch +++ b/buildroot/package/vlc/0002-configure.ac-add-check-for-libgcrypt-config-program.patch @@ -1,4 +1,4 @@ -From 88bf3313850bc7f0e6db21daee2b8d8e607b7bb4 Mon Sep 17 00:00:00 2001 +From c0fb6c7662d7b514f20cbb92ab0b2e535cd3bb49 Mon Sep 17 00:00:00 2001 From: Samuel Martin Date: Sat, 8 Feb 2014 14:33:27 +0100 Subject: [PATCH] configure.ac: add check for libgcrypt-config program @@ -16,10 +16,10 @@ Signed-off-by: "Yann E. MORIN" 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac -index 02fb8aa..5a2267b 100644 +index b49281cd77..b3841ea77b 100644 --- a/configure.ac +++ b/configure.ac -@@ -4020,16 +4020,17 @@ +@@ -4056,16 +4056,17 @@ dnl AC_ARG_ENABLE(libgcrypt, [ --disable-libgcrypt gcrypt support (default enabled)]) AS_IF([test "${enable_libgcrypt}" != "no"], [ @@ -41,3 +41,6 @@ index 02fb8aa..5a2267b 100644 ], [ AC_MSG_ERROR([libgcrypt version 1.1.94 or higher not found. Install libgcrypt or pass --disable-libgcrypt.]) ], [#include ] +-- +2.14.3 + diff --git a/buildroot/package/vlc/0003-automake-add-subdir-objects-option.patch b/buildroot/package/vlc/0003-automake-add-subdir-objects-option.patch index cea6a38fea2..877114a2737 100644 --- a/buildroot/package/vlc/0003-automake-add-subdir-objects-option.patch +++ b/buildroot/package/vlc/0003-automake-add-subdir-objects-option.patch @@ -1,4 +1,7 @@ -automake: add subdir-objects option +From 7663c856db10274d8dfbf7fb4299d3f76e5847a8 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. @@ -7,10 +10,14 @@ 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 -Nrup vlc-2.1.2.orig/configure.ac vlc-2.1.2/configure.ac ---- vlc-2.1.2.orig/configure.ac 2014-02-27 00:22:19.512944952 +0100 -+++ vlc-2.1.2/configure.ac 2014-02-27 00:24:21.360940651 +0100 +diff --git a/configure.ac b/configure.ac +index b3841ea77b..9a37656ddd 100644 +--- a/configure.ac ++++ b/configure.ac @@ -24,7 +24,7 @@ AC_CANONICAL_BUILD AC_CANONICAL_HOST AC_PRESERVE_HELP_ORDER @@ -20,3 +27,6 @@ diff -Nrup vlc-2.1.2.orig/configure.ac vlc-2.1.2/configure.ac AC_CONFIG_HEADERS([config.h]) # Disable with "./configure --disable-silent-rules" or "make V=1" +-- +2.14.3 + diff --git a/buildroot/package/vlc/0004-implicit-function-declaration.patch b/buildroot/package/vlc/0004-Drop-error-implicit-function-declaration-compile-fla.patch similarity index 63% rename from buildroot/package/vlc/0004-implicit-function-declaration.patch rename to buildroot/package/vlc/0004-Drop-error-implicit-function-declaration-compile-fla.patch index 515453d1dba..62666b3daea 100644 --- a/buildroot/package/vlc/0004-implicit-function-declaration.patch +++ b/buildroot/package/vlc/0004-Drop-error-implicit-function-declaration-compile-fla.patch @@ -1,3 +1,8 @@ +From d4806743a059ec6720b5c29e7345390978614fc9 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Tue, 1 May 2018 22:29:29 +0200 +Subject: [PATCH] Drop error-implicit-function-declaration compile flag + Fix compile warning being treated as error: codec/svg.c: In function 'DecodeBlock': @@ -5,11 +10,15 @@ codec/svg.c:240:5: error: implicit declaration of function 'rsvg_handle_render_c cc1: some warnings being treated as errors Signed-off-by: Bernd Kuhls +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) -diff -uNr vlc-2.2.1.org/configure.ac vlc-2.2.1/configure.ac ---- vlc-2.2.1.org/configure.ac 2015-04-13 09:57:54.000000000 +0200 -+++ vlc-2.2.1/configure.ac 2015-04-24 20:54:35.349039010 +0200 -@@ -864,7 +864,7 @@ +diff --git a/configure.ac b/configure.ac +index 9a37656ddd..b14ba46797 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -867,7 +867,7 @@ dnl dnl Compiler warnings dnl @@ -18,3 +27,6 @@ diff -uNr vlc-2.2.1.org/configure.ac vlc-2.2.1/configure.ac RDC_PROG_CC_FLAGS([-pipe]) AC_LANG_PUSH([C++]) RDC_PROG_CXX_WFLAGS([all extra sign-compare undef pointer-arith volatile-register-var]) +-- +2.14.3 + diff --git a/buildroot/package/vlc/0005-libvorbisidec.patch b/buildroot/package/vlc/0005-Don-t-hardcode-the-name-of-the-vorbis-and-ogg-librar.patch similarity index 54% rename from buildroot/package/vlc/0005-libvorbisidec.patch rename to buildroot/package/vlc/0005-Don-t-hardcode-the-name-of-the-vorbis-and-ogg-librar.patch index 155e0694993..bd8231cd036 100644 --- a/buildroot/package/vlc/0005-libvorbisidec.patch +++ b/buildroot/package/vlc/0005-Don-t-hardcode-the-name-of-the-vorbis-and-ogg-librar.patch @@ -1,13 +1,23 @@ -Fixes linking error with tremor due to wrong library name +From 418e5e692a1f975d41eab3bd15895b2ba0a7eee1 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Tue, 1 May 2018 22:30:09 +0200 +Subject: [PATCH] Don't hardcode the name of the vorbis and ogg libraries + +Fixes linking error with tremor due to wrong library name. Downloaded from Gentoo package https://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/media-video/vlc/files/vlc-2.1.0-fix-libtremor-libs.patch?view=markup Signed-off-by: Bernd Kuhls +--- + modules/codec/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) +diff --git a/modules/codec/Makefile.am b/modules/codec/Makefile.am +index bc39a4facc..c5cd2fb7f9 100644 --- a/modules/codec/Makefile.am +++ b/modules/codec/Makefile.am -@@ -215,7 +215,7 @@ +@@ -234,7 +234,7 @@ codec_LTLIBRARIES += $(LTLIBtheora) 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)' @@ -16,3 +26,6 @@ Signed-off-by: Bernd Kuhls EXTRA_LTLIBRARIES += libtremor_plugin.la codec_LTLIBRARIES += $(LTLIBtremor) +-- +2.14.3 + diff --git a/buildroot/package/vlc/0006-Don-t-assume-X11-is-available-when-Qt5-is-used.patch b/buildroot/package/vlc/0006-Don-t-assume-X11-is-available-when-Qt5-is-used.patch new file mode 100644 index 00000000000..0a07dd735dc --- /dev/null +++ b/buildroot/package/vlc/0006-Don-t-assume-X11-is-available-when-Qt5-is-used.patch @@ -0,0 +1,28 @@ +From f87ef7f97e7e35cc1c922d5a3ff2a2275da7c22e Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Tue, 1 May 2018 22:30:39 +0200 +Subject: [PATCH] Don't assume X11 is available when Qt5 is used + +libX11 is an optional dependency for the qt4 module. + +Signed-off-by: Bernd Kuhls +--- + modules/gui/qt4/Makefile.am | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/modules/gui/qt4/Makefile.am b/modules/gui/qt4/Makefile.am +index 1a564cf1ea..4d12501eb7 100644 +--- a/modules/gui/qt4/Makefile.am ++++ b/modules/gui/qt4/Makefile.am +@@ -22,7 +22,7 @@ else + if HAVE_WIN32 + libqt4_plugin_la_LIBADD += -lole32 -lcomctl32 -luuid + else +-libqt4_plugin_la_LIBADD += $(X_LIBS) $(X_PRE_LIB) -lX11 ++libqt4_plugin_la_LIBADD += $(X_LIBS) $(X_PRE_LIB) + endif + endif + if HAVE_DARWIN +-- +2.14.3 + diff --git a/buildroot/package/vlc/0006-qt-x11.patch b/buildroot/package/vlc/0006-qt-x11.patch deleted file mode 100644 index 316a31fd8f7..00000000000 --- a/buildroot/package/vlc/0006-qt-x11.patch +++ /dev/null @@ -1,16 +0,0 @@ -libX11 is an optional dependency for the qt4 module - -Signed-off-by: Bernd Kuhls - -diff -uNr vlc-2.2.1.org/modules/gui/qt4/Makefile.am vlc-2.2.1/modules/gui/qt4/Makefile.am ---- vlc-2.2.1.org/modules/gui/qt4/Makefile.am 2014-11-29 12:34:15.000000000 +0100 -+++ vlc-2.2.1/modules/gui/qt4/Makefile.am 2015-04-27 18:53:36.968611490 +0200 -@@ -22,7 +22,7 @@ - if HAVE_WIN32 - libqt4_plugin_la_LIBADD += -lole32 -lcomctl32 -luuid - else --libqt4_plugin_la_LIBADD += $(X_LIBS) $(X_PRE_LIB) -lX11 -+libqt4_plugin_la_LIBADD += $(X_LIBS) $(X_PRE_LIB) - endif - endif - if HAVE_DARWIN diff --git a/buildroot/package/vlc/0007-strerror.patch b/buildroot/package/vlc/0007-Don-t-assume-strerror_l-is-available.patch similarity index 68% rename from buildroot/package/vlc/0007-strerror.patch rename to buildroot/package/vlc/0007-Don-t-assume-strerror_l-is-available.patch index e9f3141168b..e587b05d275 100644 --- a/buildroot/package/vlc/0007-strerror.patch +++ b/buildroot/package/vlc/0007-Don-t-assume-strerror_l-is-available.patch @@ -1,3 +1,8 @@ +From 02a0cf3635eab8b10a5a47a56aa905d925f669a8 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 @@ -7,11 +12,16 @@ Code for #else condition was taken from http://patches.osdyson.org/patch/series/view/vlc/2.2.0~rc2-1+dyson2/dyson.patch Signed-off-by: Bernd Kuhls +--- + configure.ac | 2 +- + src/posix/error.c | 4 ++++ + 2 files changed, 5 insertions(+), 1 deletion(-) -diff -uNr vlc-2.2.1.org/configure.ac vlc-2.2.1/configure.ac ---- vlc-2.2.1.org/configure.ac 2015-04-13 09:57:54.000000000 +0200 -+++ vlc-2.2.1/configure.ac 2015-05-02 16:13:22.800448380 +0200 -@@ -534,7 +534,7 @@ +diff --git a/configure.ac b/configure.ac +index b14ba46797..15cb4edcfd 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -537,7 +537,7 @@ need_libc=false dnl Check for usual libc functions AC_CHECK_DECLS([nanosleep],,,[#include ]) @@ -20,9 +30,10 @@ diff -uNr vlc-2.2.1.org/configure.ac vlc-2.2.1/configure.ac AC_REPLACE_FUNCS([atof atoll dirfd fdopendir flockfile fsync getdelim getpid gmtime_r lldiv localtime_r nrand48 poll posix_memalign rewind setenv strcasecmp strcasestr strdup strlcpy strndup strnlen strsep strtof strtok_r strtoll swab tdestroy strverscmp]) AC_CHECK_FUNCS(fdatasync,, [AC_DEFINE(fdatasync, fsync, [Alias fdatasync() to fsync() if missing.]) -diff -uNr vlc-2.2.1.org/src/posix/error.c vlc-2.2.1/src/posix/error.c ---- vlc-2.2.1.org/src/posix/error.c 2014-08-14 09:20:04.000000000 +0200 -+++ vlc-2.2.1/src/posix/error.c 2015-05-02 16:25:24.075378369 +0200 +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) @@ -31,7 +42,7 @@ diff -uNr vlc-2.2.1.org/src/posix/error.c vlc-2.2.1/src/posix/error.c int saved_errno = errno; locale_t loc = newlocale(LC_MESSAGES_MASK, lname, (locale_t)0); -@@ -51,6 +52,9 @@ +@@ -51,6 +52,9 @@ static const char *vlc_strerror_l(int errnum, const char *lname) const char *buf = strerror_l(errnum, loc); freelocale(loc); @@ -41,3 +52,6 @@ diff -uNr vlc-2.2.1.org/src/posix/error.c vlc-2.2.1/src/posix/error.c return buf; } +-- +2.14.3 + diff --git a/buildroot/package/vlc/0008-fix-fallback-code-and-add-required-realtime-library.patch b/buildroot/package/vlc/0008-fix-fallback-code-and-add-required-realtime-library-.patch similarity index 87% rename from buildroot/package/vlc/0008-fix-fallback-code-and-add-required-realtime-library.patch rename to buildroot/package/vlc/0008-fix-fallback-code-and-add-required-realtime-library-.patch index 43f197acfc1..d9f4241309d 100644 --- a/buildroot/package/vlc/0008-fix-fallback-code-and-add-required-realtime-library.patch +++ b/buildroot/package/vlc/0008-fix-fallback-code-and-add-required-realtime-library-.patch @@ -1,4 +1,4 @@ -From 381bcb7cb03bb602351a323daf3b69b2d4f45e77 Mon Sep 17 00:00:00 2001 +From b5d4edd81bcb685cbea61b01d54afa1fe200b7d2 Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Fri, 26 Aug 2016 15:11:25 +0200 Subject: [PATCH] fix fallback code and add required realtime library to link @@ -11,7 +11,7 @@ Signed-off-by: Waldemar Brodkorb 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac -index cb1de25..018c11c 100644 +index 15cb4edcfd..16e44a8c61 100644 --- a/configure.ac +++ b/configure.ac @@ -121,6 +121,7 @@ case "${host_os}" in @@ -23,7 +23,7 @@ index cb1de25..018c11c 100644 bsdi*) SYS=bsdi diff --git a/src/posix/thread.c b/src/posix/thread.c -index 07fa71e..8b8595f 100644 +index 07fa71eb3e..8b8595fcb8 100644 --- a/src/posix/thread.c +++ b/src/posix/thread.c @@ -85,7 +85,7 @@ static clockid_t vlc_clock_id; @@ -36,5 +36,5 @@ index 07fa71e..8b8595f 100644 assert (val != 0); vlc_clock_id = (val < 0) ? CLOCK_REALTIME : CLOCK_MONOTONIC; -- -2.1.4 +2.14.3 diff --git a/buildroot/package/vlc/0009-ffmpeg-3.0.patch b/buildroot/package/vlc/0009-Changes-for-ffmpeg-3.0.patch similarity index 77% rename from buildroot/package/vlc/0009-ffmpeg-3.0.patch rename to buildroot/package/vlc/0009-Changes-for-ffmpeg-3.0.patch index 892c625c94d..a765a0a6c4d 100644 --- a/buildroot/package/vlc/0009-ffmpeg-3.0.patch +++ b/buildroot/package/vlc/0009-Changes-for-ffmpeg-3.0.patch @@ -1,13 +1,26 @@ -Changes for ffmpeg 3.0 +From 960c98831ca75b08168530f1c74af07901e01963 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Tue, 1 May 2018 22:32:02 +0200 +Subject: [PATCH] Changes for ffmpeg 3.0 This file is a copy of debian/patches/04_ffmpeg-3.0.diff, to be found in http://www.deb-multimedia.org/pool/main/v/vlc-dmo/vlc-dmo_2.2.4.orig.tar.gz Signed-off-by: Bernd Kuhls +--- + configure.ac | 14 +++++++------- + modules/codec/avcodec/audio.c | 2 +- + modules/codec/avcodec/encoder.c | 20 ++++++++++---------- + modules/codec/avcodec/vaapi.c | 2 +- + modules/codec/avcodec/video.c | 14 +++++++------- + modules/demux/avformat/demux.c | 10 +++++----- + 6 files changed, 31 insertions(+), 31 deletions(-) +diff --git a/configure.ac b/configure.ac +index 16e44a8c61..6886b2b872 100644 --- a/configure.ac +++ b/configure.ac -@@ -2324,7 +2324,7 @@ AC_ARG_ENABLE(avcodec, +@@ -2319,7 +2319,7 @@ AC_ARG_ENABLE(avcodec, AS_IF([test "${enable_avcodec}" != "no"], [ PKG_CHECK_MODULES(AVCODEC,[libavcodec >= 53.34.0 libavutil >= 51.22.0], [ PKG_CHECK_EXISTS([libavutil < 55],, [ @@ -16,7 +29,7 @@ Signed-off-by: Bernd Kuhls ]) VLC_SAVE_FLAGS CPPFLAGS="${CPPFLAGS} ${AVCODEC_CFLAGS}" -@@ -2334,7 +2334,7 @@ AS_IF([test "${enable_avcodec}" != "no"] +@@ -2329,7 +2329,7 @@ AS_IF([test "${enable_avcodec}" != "no"], [ VLC_RESTORE_FLAGS have_avcodec="yes" ],[ @@ -25,7 +38,7 @@ Signed-off-by: Bernd Kuhls ]) ], [ have_avcodec="no" -@@ -2383,7 +2383,7 @@ AS_IF([test "${have_vaapi}" = "yes" -a " +@@ -2378,7 +2378,7 @@ AS_IF([test "${have_vaapi}" = "yes" -a "${have_avcodec}" = "yes"], [ case "${avfork}" in ffmpeg) PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [ @@ -34,7 +47,7 @@ Signed-off-by: Bernd Kuhls ]) ;; esac -@@ -2417,7 +2417,7 @@ AS_IF([test "${enable_dxva2}" != "no"], +@@ -2412,7 +2412,7 @@ AS_IF([test "${enable_dxva2}" != "no"], [ case "${avfork}" in ffmpeg) PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [ @@ -43,7 +56,7 @@ Signed-off-by: Bernd Kuhls ]) ;; esac -@@ -2509,7 +2509,7 @@ AS_IF([test "${enable_avformat}" != "no" +@@ -2504,7 +2504,7 @@ AS_IF([test "${enable_avformat}" != "no"], [ ]) VLC_RESTORE_FLAGS ],[ @@ -52,7 +65,7 @@ Signed-off-by: Bernd Kuhls ]) ]) AM_CONDITIONAL([HAVE_AVFORMAT], [test "${enable_avformat}" != "no"]) -@@ -2538,7 +2538,7 @@ then +@@ -2533,7 +2533,7 @@ then ]) VLC_RESTORE_FLAGS ],[ @@ -61,7 +74,7 @@ Signed-off-by: Bernd Kuhls ]) fi -@@ -3181,7 +3181,7 @@ AS_IF([test "${have_vdpau}" = "yes" -a " +@@ -3176,7 +3176,7 @@ AS_IF([test "${have_vdpau}" = "yes" -a "${have_avcodec}" = "yes"], [ libav) av_vdpau_ver="55.26.0" ;; ffmpeg) av_vdpau_ver="55.42.100" PKG_CHECK_EXISTS([libavcodec >= 57.10.100], [ @@ -70,6 +83,8 @@ Signed-off-by: Bernd Kuhls ]) ;; esac +diff --git a/modules/codec/avcodec/audio.c b/modules/codec/avcodec/audio.c +index 7068499d82..b5347ac896 100644 --- a/modules/codec/avcodec/audio.c +++ b/modules/codec/avcodec/audio.c @@ -39,7 +39,7 @@ @@ -81,57 +96,8 @@ Signed-off-by: Bernd Kuhls #include "avcodec.h" ---- a/modules/codec/avcodec/video.c -+++ b/modules/codec/avcodec/video.c -@@ -108,8 +108,8 @@ static int lavc_GetFrame(struct AVCodecC - static int ffmpeg_GetFrameBuf ( struct AVCodecContext *, AVFrame * ); - static void ffmpeg_ReleaseFrameBuf( struct AVCodecContext *, AVFrame * ); - #endif --static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *, -- const enum PixelFormat * ); -+static enum AVPixelFormat ffmpeg_GetFormat( AVCodecContext *, -+ const enum AVPixelFormat * ); - - static uint32_t ffmpeg_CodecTag( vlc_fourcc_t fcc ) - { -@@ -234,7 +234,7 @@ int InitVideoDec( decoder_t *p_dec, AVCo - p_sys->p_codec = p_codec; - p_sys->i_codec_id = i_codec_id; - p_sys->psz_namecodec = psz_namecodec; -- p_sys->p_ff_pic = avcodec_alloc_frame(); -+ p_sys->p_ff_pic = av_frame_alloc(); - p_sys->b_delayed_open = true; - p_sys->p_va = NULL; - vlc_sem_init( &p_sys->sem_mt, 0 ); -@@ -446,7 +446,7 @@ int InitVideoDec( decoder_t *p_dec, AVCo - if( ffmpeg_OpenCodec( p_dec ) < 0 ) - { - msg_Err( p_dec, "cannot open codec (%s)", p_sys->psz_namecodec ); -- avcodec_free_frame( &p_sys->p_ff_pic ); -+ av_frame_free( &p_sys->p_ff_pic ); - vlc_sem_destroy( &p_sys->sem_mt ); - free( p_sys ); - return VLC_EGENERIC; -@@ -826,7 +826,7 @@ void EndVideoDec( decoder_t *p_dec ) - wait_mt( p_sys ); - - if( p_sys->p_ff_pic ) -- avcodec_free_frame( &p_sys->p_ff_pic ); -+ av_frame_free( &p_sys->p_ff_pic ); - - if( p_sys->p_va ) - vlc_va_Delete( p_sys->p_va ); -@@ -1313,8 +1313,8 @@ static void ffmpeg_ReleaseFrameBuf( stru - } - #endif - --static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *p_context, -- const enum PixelFormat *pi_fmt ) -+static enum AVPixelFormat ffmpeg_GetFormat( AVCodecContext *p_context, -+ const enum AVPixelFormat *pi_fmt ) - { - decoder_t *p_dec = p_context->opaque; - decoder_sys_t *p_sys = p_dec->p_sys; +diff --git a/modules/codec/avcodec/encoder.c b/modules/codec/avcodec/encoder.c +index 457078a06f..2bfc0c05f2 100644 --- a/modules/codec/avcodec/encoder.c +++ b/modules/codec/avcodec/encoder.c @@ -41,7 +41,7 @@ @@ -170,7 +136,7 @@ Signed-off-by: Bernd Kuhls if( !p_sys->frame ) { goto error; -@@ -1048,7 +1048,7 @@ static void vlc_av_packet_Release(block_ +@@ -1048,7 +1048,7 @@ static void vlc_av_packet_Release(block_t *block) { vlc_av_packet_t *b = (void *) block; @@ -179,7 +145,7 @@ Signed-off-by: Bernd Kuhls free(b); } -@@ -1088,7 +1088,7 @@ static block_t *EncodeVideo( encoder_t * +@@ -1088,7 +1088,7 @@ static block_t *EncodeVideo( encoder_t *p_enc, picture_t *p_pict ) AVFrame *frame = NULL; if( likely(p_pict) ) { frame = p_sys->frame; @@ -188,7 +154,7 @@ Signed-off-by: Bernd Kuhls for( i_plane = 0; i_plane < p_pict->i_planes; i_plane++ ) { p_sys->frame->data[i_plane] = p_pict->p[i_plane].p_pixels; -@@ -1188,7 +1188,7 @@ static block_t *EncodeVideo( encoder_t * +@@ -1188,7 +1188,7 @@ static block_t *EncodeVideo( encoder_t *p_enc, picture_t *p_pict ) av_pkt.duration / p_sys->p_context->time_base.den, p_sys->p_context ); if( unlikely(p_block == NULL) ) { @@ -197,7 +163,7 @@ Signed-off-by: Bernd Kuhls return NULL; } -@@ -1329,7 +1329,7 @@ static block_t *handle_delay_buffer( enc +@@ -1329,7 +1329,7 @@ static block_t *handle_delay_buffer( encoder_t *p_enc, encoder_sys_t *p_sys, int //How much we need to copy from new packet const int leftover = leftover_samples * p_sys->p_context->channels * p_sys->i_sample_bytes; @@ -206,7 +172,7 @@ Signed-off-by: Bernd Kuhls p_sys->frame->format = p_sys->p_context->sample_fmt; p_sys->frame->nb_samples = leftover_samples + p_sys->i_samples_delay; -@@ -1451,7 +1451,7 @@ static block_t *EncodeAudio( encoder_t * +@@ -1451,7 +1451,7 @@ static block_t *EncodeAudio( encoder_t *p_enc, block_t *p_aout_buf ) while( ( p_aout_buf->i_nb_samples >= p_sys->i_frame_size ) || ( p_sys->b_variable && p_aout_buf->i_nb_samples ) ) { @@ -215,7 +181,7 @@ Signed-off-by: Bernd Kuhls if( p_sys->b_variable ) p_sys->frame->nb_samples = p_aout_buf->i_nb_samples; else -@@ -1514,7 +1514,7 @@ void CloseEncoder( vlc_object_t *p_this +@@ -1514,7 +1514,7 @@ void CloseEncoder( vlc_object_t *p_this ) encoder_t *p_enc = (encoder_t *)p_this; encoder_sys_t *p_sys = p_enc->p_sys; @@ -224,6 +190,74 @@ Signed-off-by: Bernd Kuhls av_freep( &p_sys->frame ); vlc_avcodec_lock(); +diff --git a/modules/codec/avcodec/vaapi.c b/modules/codec/avcodec/vaapi.c +index 1d8f7fa97b..d9643d061c 100644 +--- a/modules/codec/avcodec/vaapi.c ++++ b/modules/codec/avcodec/vaapi.c +@@ -595,7 +595,7 @@ static int Create( vlc_va_t *p_va, AVCodecContext *ctx, + return err; + + /* Only VLD supported */ +- p_va->pix_fmt = PIX_FMT_VAAPI_VLD; ++ p_va->pix_fmt = AV_PIX_FMT_VAAPI_VLD; + p_va->setup = Setup; + p_va->get = Get; + p_va->release = Release; +diff --git a/modules/codec/avcodec/video.c b/modules/codec/avcodec/video.c +index ce5254423e..fd72d8d8e2 100644 +--- a/modules/codec/avcodec/video.c ++++ b/modules/codec/avcodec/video.c +@@ -108,8 +108,8 @@ static int lavc_GetFrame(struct AVCodecContext *, AVFrame *, int); + static int ffmpeg_GetFrameBuf ( struct AVCodecContext *, AVFrame * ); + static void ffmpeg_ReleaseFrameBuf( struct AVCodecContext *, AVFrame * ); + #endif +-static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *, +- const enum PixelFormat * ); ++static enum AVPixelFormat ffmpeg_GetFormat( AVCodecContext *, ++ const enum AVPixelFormat * ); + + static uint32_t ffmpeg_CodecTag( vlc_fourcc_t fcc ) + { +@@ -236,7 +236,7 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context, + p_sys->p_codec = p_codec; + p_sys->i_codec_id = i_codec_id; + p_sys->psz_namecodec = psz_namecodec; +- p_sys->p_ff_pic = avcodec_alloc_frame(); ++ p_sys->p_ff_pic = av_frame_alloc(); + p_sys->b_delayed_open = true; + p_sys->p_va = NULL; + vlc_sem_init( &p_sys->sem_mt, 0 ); +@@ -448,7 +448,7 @@ int InitVideoDec( decoder_t *p_dec, AVCodecContext *p_context, + if( ffmpeg_OpenCodec( p_dec ) < 0 ) + { + msg_Err( p_dec, "cannot open codec (%s)", p_sys->psz_namecodec ); +- avcodec_free_frame( &p_sys->p_ff_pic ); ++ av_frame_free( &p_sys->p_ff_pic ); + vlc_sem_destroy( &p_sys->sem_mt ); + free( p_sys ); + return VLC_EGENERIC; +@@ -849,7 +849,7 @@ void EndVideoDec( decoder_t *p_dec ) + wait_mt( p_sys ); + + if( p_sys->p_ff_pic ) +- avcodec_free_frame( &p_sys->p_ff_pic ); ++ av_frame_free( &p_sys->p_ff_pic ); + + if( p_sys->p_va ) + vlc_va_Delete( p_sys->p_va ); +@@ -1336,8 +1336,8 @@ static void ffmpeg_ReleaseFrameBuf( struct AVCodecContext *p_context, + } + #endif + +-static enum PixelFormat ffmpeg_GetFormat( AVCodecContext *p_context, +- const enum PixelFormat *pi_fmt ) ++static enum AVPixelFormat ffmpeg_GetFormat( AVCodecContext *p_context, ++ const enum AVPixelFormat *pi_fmt ) + { + decoder_t *p_dec = p_context->opaque; + decoder_sys_t *p_sys = p_dec->p_sys; +diff --git a/modules/demux/avformat/demux.c b/modules/demux/avformat/demux.c +index a99bdfa5b7..4e27d07d36 100644 --- a/modules/demux/avformat/demux.c +++ b/modules/demux/avformat/demux.c @@ -734,14 +734,14 @@ static int Demux( demux_t *p_demux ) @@ -270,14 +304,6 @@ Signed-off-by: Bernd Kuhls return 1; } ---- a/modules/codec/avcodec/vaapi.c -+++ b/modules/codec/avcodec/vaapi.c -@@ -595,7 +595,7 @@ static int Create( vlc_va_t *p_va, AVCod - return err; - - /* Only VLD supported */ -- p_va->pix_fmt = PIX_FMT_VAAPI_VLD; -+ p_va->pix_fmt = AV_PIX_FMT_VAAPI_VLD; - p_va->setup = Setup; - p_va->get = Get; - p_va->release = Release; +-- +2.14.3 + diff --git a/buildroot/package/vlc/0010-static-assert.patch b/buildroot/package/vlc/0010-Fix-build-when-using-C99-and-C-11.patch similarity index 69% rename from buildroot/package/vlc/0010-static-assert.patch rename to buildroot/package/vlc/0010-Fix-build-when-using-C99-and-C-11.patch index 87fd56bda2e..8f12f5325e7 100644 --- a/buildroot/package/vlc/0010-static-assert.patch +++ b/buildroot/package/vlc/0010-Fix-build-when-using-C99-and-C-11.patch @@ -1,7 +1,7 @@ +From 55e3ac26c1238df4c85877c32763a02c00da1345 Mon Sep 17 00:00:00 2001 From: Thomas Guillem -Date: Thu, 30 Apr 2015 13:29:50 +0000 (+0200) -Subject: Fix build when using C99 and C++11 -X-Git-Url: http://git.videolan.org/?p=vlc.git;a=commitdiff_plain;h=51ce6cdaf598754e617900994c1943c6cba6d604 +Date: Thu, 30 Apr 2015 13:29:50 +0200 +Subject: [PATCH] Fix build when using C99 and C++11 Fix build when using C99 and C++11 @@ -9,9 +9,11 @@ Indeed, C99 doesn't have static_assert and C++11 has it. Signed-off-by: Bernd Kuhls --- + include/vlc_fixups.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h -index b949d24..ee168d7 100644 +index 997f600d6a..0d4fcd0c8d 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h @@ -239,7 +239,7 @@ static inline locale_t newlocale(int mask, const char * locale, locale_t base) @@ -23,3 +25,6 @@ index b949d24..ee168d7 100644 # define _Static_assert(x, s) ((void) sizeof (struct { unsigned:-!(x); })) # define static_assert _Static_assert #endif +-- +2.14.3 + diff --git a/buildroot/package/vlc/0011-static-assert.patch b/buildroot/package/vlc/0011-compat-fix-static_assert.patch similarity index 65% rename from buildroot/package/vlc/0011-static-assert.patch rename to buildroot/package/vlc/0011-compat-fix-static_assert.patch index 3ce23e1384f..7ad2414e460 100644 --- a/buildroot/package/vlc/0011-static-assert.patch +++ b/buildroot/package/vlc/0011-compat-fix-static_assert.patch @@ -1,7 +1,10 @@ +From 6b9c7e7595f8e36d3b221bedb623fa5334f62ce0 Mon Sep 17 00:00:00 2001 From: Thomas Guillem -Date: Mon, 14 Dec 2015 09:08:25 +0000 (+0100) -Subject: compat: fix static_assert -X-Git-Url: http://git.videolan.org/?p=vlc.git;a=commitdiff_plain;h=6faf9066670db6e0d241ead6a3926b2d9cc6a041 +Date: Mon, 14 Dec 2015 09:08:25 +0100 +Subject: [PATCH] compat: fix static_assert +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit compat: fix static_assert @@ -10,12 +13,14 @@ It was not possible to use it outside of functions. Signed-off-by: Rテゥmi Denis-Courmont Signed-off-by: Bernd Kuhls --- + include/vlc_fixups.h | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/vlc_fixups.h b/include/vlc_fixups.h -index 213d3f3..bd798d0 100644 +index 0d4fcd0c8d..0990915e5f 100644 --- a/include/vlc_fixups.h +++ b/include/vlc_fixups.h -@@ -273,7 +273,9 @@ static inline locale_t newlocale(int mask, const char * locale, locale_t base) +@@ -240,7 +240,9 @@ static inline locale_t newlocale(int mask, const char * locale, locale_t base) #endif #if !defined (HAVE_STATIC_ASSERT) && !defined(__cpp_static_assert) @@ -26,3 +31,6 @@ index 213d3f3..bd798d0 100644 # define static_assert _Static_assert #endif +-- +2.14.3 + diff --git a/buildroot/package/vlc/0012-Fix-build-with-libupnp-above-1.6.23.patch b/buildroot/package/vlc/0012-Fix-build-with-libupnp-above-1.6.23.patch index 8490cbdaa20..58ae02e35c5 100644 --- a/buildroot/package/vlc/0012-Fix-build-with-libupnp-above-1.6.23.patch +++ b/buildroot/package/vlc/0012-Fix-build-with-libupnp-above-1.6.23.patch @@ -1,4 +1,4 @@ -From 0c8d631f4f9fa24f1bbd56a4dbe9d6f1e2360685 Mon Sep 17 00:00:00 2001 +From 7ce9c408aea03da5787d952747df3be687c92da1 Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Sun, 17 Dec 2017 12:26:33 +0100 Subject: [PATCH] Fix build with libupnp above 1.6.23 @@ -60,5 +60,5 @@ index 23fe4db9ab..c369a04da6 100644 class Container; -- -2.14.1 +2.14.3 diff --git a/buildroot/package/vlc/0013-x264-drop-148-build-support-and-fix-10bit-support.patch b/buildroot/package/vlc/0013-x264-drop-148-build-support-and-fix-10bit-support.patch new file mode 100644 index 00000000000..b9e3272fd42 --- /dev/null +++ b/buildroot/package/vlc/0013-x264-drop-148-build-support-and-fix-10bit-support.patch @@ -0,0 +1,213 @@ +From 5d003fa5df276b62efe82329ef9ce2fd30a34f46 Mon Sep 17 00:00:00 2001 +From: Ilkka Ollakka +Date: Sat, 24 Mar 2018 11:23:33 +0200 +Subject: [PATCH] x264: drop <148 build support and fix 10bit support + +x264: drop <148 build support and fix 10bit support + +Drop old #if as 148 is not that recent anymore. + +fixes #19581 + +Rebased upstream commit +http://git.videolan.org/?p=vlc.git;a=commitdiff;h=a8953ba707cca1f2de372ca24513296bcfcdaaa8 + +Signed-off-by: Bernd Kuhls +--- + modules/codec/x264.c | 65 ++++++++-------------------------------------------- + 1 file changed, 10 insertions(+), 55 deletions(-) + +diff --git a/modules/codec/x264.c b/modules/codec/x264.c +index be5d0006de..96a4b08524 100644 +--- a/modules/codec/x264.c ++++ b/modules/codec/x264.c +@@ -83,13 +83,7 @@ static void x264_log( void *, int i_level, const char *psz, va_list ); + "I-frames, but do not start a new GOP." ) + + #define OPENGOP_TEXT N_("Use recovery points to close GOPs") +-#if X264_BUILD < 115 +-#define OPENGOP_LONGTEXT N_("none: use closed GOPs only\n"\ +- "normal: use standard open GOPs\n" \ +- "bluray: use Blu-ray compatible open GOPs" ) +-#else + #define OPENGOP_LONGTEXT N_("use open GOP, for bluray compatibility use also bluray-compat option") +-#endif + + #define BLURAY_TEXT N_("Enable compatibility hacks for Blu-ray support") + #define BLURAY_LONGTEXT N_("Enable hacks for Blu-ray support, this doesn't enforce every aspect of Blu-ray compatibility\n" \ +@@ -471,16 +465,10 @@ vlc_module_begin () + add_integer( SOUT_CFG_PREFIX "min-keyint", 25, MIN_KEYINT_TEXT, + MIN_KEYINT_LONGTEXT, true ) + +-#if X264_BUILD >= 102 && X264_BUILD <= 114 +- add_string( SOUT_CFG_PREFIX "opengop", "none", OPENGOP_TEXT, +- OPENGOP_LONGTEXT, true ) +- change_string_list( x264_open_gop_names, x264_open_gop_names ) +-#elif X264_BUILD > 114 + add_bool( SOUT_CFG_PREFIX "opengop", false, OPENGOP_TEXT, + OPENGOP_LONGTEXT, true ) + add_bool( SOUT_CFG_PREFIX "bluray-compat", false, BLURAY_TEXT, + BLURAY_LONGTEXT, true ) +-#endif + + add_integer( SOUT_CFG_PREFIX "scenecut", 40, SCENE_TEXT, + SCENE_LONGTEXT, true ) +@@ -500,13 +488,8 @@ vlc_module_begin () + B_BIAS_LONGTEXT, true ) + change_integer_range( -100, 100 ) + +-#if X264_BUILD >= 87 + add_string( SOUT_CFG_PREFIX "bpyramid", "normal", BPYRAMID_TEXT, + BPYRAMID_LONGTEXT, true ) +-#else +- add_string( SOUT_CFG_PREFIX "bpyramid", "none", BPYRAMID_TEXT, +- BPYRAMID_LONGTEXT, true ) +-#endif + change_string_list( bpyramid_list, bpyramid_list ) + + add_bool( SOUT_CFG_PREFIX "cabac", true, CABAC_TEXT, CABAC_LONGTEXT, +@@ -543,22 +526,18 @@ vlc_module_begin () + add_bool( SOUT_CFG_PREFIX "interlaced", false, INTERLACED_TEXT, INTERLACED_LONGTEXT, + true ) + +-#if X264_BUILD >= 111 + add_integer( SOUT_CFG_PREFIX "frame-packing", -1, FRAMEPACKING_TEXT, FRAMEPACKING_LONGTEXT, true ) + change_integer_list( framepacking_list, framepacking_list_text ) + change_integer_range( -1, 5) +-#endif + + add_integer( SOUT_CFG_PREFIX "slices", 0, SLICE_COUNT, SLICE_COUNT_LONGTEXT, true ) + add_integer( SOUT_CFG_PREFIX "slice-max-size", 0, SLICE_MAX_SIZE, SLICE_MAX_SIZE_LONGTEXT, true ) + add_integer( SOUT_CFG_PREFIX "slice-max-mbs", 0, SLICE_MAX_MBS, SLICE_MAX_MBS_LONGTEXT, true ) + +-#if X264_BUILD >= 89 + add_string( SOUT_CFG_PREFIX "hrd", "none", HRD_TEXT, HRD_TEXT, true ) + vlc_config_set (VLC_CONFIG_LIST, + (sizeof(x264_nal_hrd_names) / sizeof (char*)) - 1, + x264_nal_hrd_names, x264_nal_hrd_names); +-#endif + + + /* Ratecontrol */ +@@ -843,20 +822,14 @@ static int Open ( vlc_object_t *p_this ) + fullrange = var_GetBool( p_enc, SOUT_CFG_PREFIX "fullrange" ); + p_enc->fmt_in.i_codec = fullrange ? VLC_CODEC_J420 : VLC_CODEC_I420; + p_sys->i_colorspace = X264_CSP_I420; +-#if X264_BUILD >= 118 + char *psz_profile = var_GetString( p_enc, SOUT_CFG_PREFIX "profile" ); +- if( psz_profile ) +- { +- const int mask = x264_bit_depth > 8 ? X264_CSP_HIGH_DEPTH : 0; +- +- + # ifdef MODULE_NAME_IS_x26410b +- if( mask == 0) +- { +- msg_Err( p_enc, "Only high bith depth encoding supported, bit depth:%d", x264_bit_depth); +- return VLC_EGENERIC; +- } ++ const int mask = X264_CSP_HIGH_DEPTH; ++# else ++ const int mask = 0; + # endif ++ if( psz_profile ) ++ { + + if( !strcmp( psz_profile, "high10" ) ) + { +@@ -879,7 +852,6 @@ static int Open ( vlc_object_t *p_this ) + msg_Err( p_enc, "Only high-profiles and 10-bit are supported"); + return VLC_EGENERIC; + } +- + # endif + } + # ifdef MODULE_NAME_IS_x26410b +@@ -890,7 +862,6 @@ static int Open ( vlc_object_t *p_this ) + } + # endif + free( psz_profile ); +-#endif //X264_BUILD + + p_enc->pf_encode_video = Encode; + p_enc->pf_encode_audio = NULL; +@@ -913,6 +884,10 @@ static int Open ( vlc_object_t *p_this ) + #else + x264_param_default( &p_sys->param ); + x264_param_default_preset( &p_sys->param, psz_preset, psz_tune ); ++# if X264_BUILD > 152 ++ if( mask ) ++ p_sys->param.i_bitdepth = 10; ++# endif + #endif + free( psz_preset ); + free( psz_tune ); +@@ -1045,10 +1020,8 @@ static int Open ( vlc_object_t *p_this ) + if( fabs( var_GetFloat( p_enc, SOUT_CFG_PREFIX "aq-strength" ) - 1.0) > 0.005 ) + p_sys->param.rc.f_aq_strength = var_GetFloat( p_enc, SOUT_CFG_PREFIX "aq-strength" ); + +-#if X264_BUILD >= 111 + if( var_GetInteger( p_enc, SOUT_CFG_PREFIX "frame-packing" ) > -1 ) + p_sys->param.i_frame_packing = var_GetInteger( p_enc, SOUT_CFG_PREFIX "frame-packing" ); +-#endif + + if( var_GetBool( p_enc, SOUT_CFG_PREFIX "verbose" ) ) + p_sys->param.i_log_level = X264_LOG_DEBUG; +@@ -1064,26 +1037,14 @@ static int Open ( vlc_object_t *p_this ) + + i_val = var_GetInteger( p_enc, SOUT_CFG_PREFIX "keyint" ); + if( i_val > 0 && i_val != 250 ) p_sys->param.i_keyint_max = i_val; +-#if X264_BUILD >= 102 + if( i_val == -1 ) p_sys->param.i_keyint_max = X264_KEYINT_MAX_INFINITE; +-#endif + + i_val = var_GetInteger( p_enc, SOUT_CFG_PREFIX "min-keyint" ); + if( i_val > 0 && i_val != 25 ) p_sys->param.i_keyint_min = i_val; + +-#if X264_BUILD >= 102 && X264_BUILD <= 114 +- psz_val = var_GetString( p_enc, SOUT_CFG_PREFIX "opengop" ); +- if( !strcmp( psz_val, "none" ) ) +- p_sys->param.i_open_gop = X264_OPEN_GOP_NONE; +- else if( !strcmp( psz_val, "normal" ) ) +- p_sys->param.i_open_gop = X264_OPEN_GOP_NORMAL; +- else if( !strcmp( psz_val, "bluray" ) ) +- p_sys->param.i_open_gop = X264_OPEN_GOP_BLURAY; +- free( psz_val ); +-#elif X264_BUILD >= 115 + p_sys->param.b_open_gop = var_GetBool( p_enc, SOUT_CFG_PREFIX "opengop" ); + p_sys->param.b_bluray_compat = var_GetBool( p_enc, SOUT_CFG_PREFIX "bluray-compat" ); +-#endif ++ + i_val = var_GetInteger( p_enc, SOUT_CFG_PREFIX "bframes" ); + if( i_val >= 0 && i_val <= 16 && i_val != 3 ) + p_sys->param.i_bframe = i_val; +@@ -1121,14 +1082,12 @@ static int Open ( vlc_object_t *p_this ) + if( i_val >= 1 && i_val != 7 ) + p_sys->param.analyse.i_subpel_refine = i_val; + +-#if X264_BUILD >= 89 + psz_val = var_GetString( p_enc, SOUT_CFG_PREFIX "hrd"); + if( !strcmp( psz_val, "vbr" ) ) + p_sys->param.i_nal_hrd = X264_NAL_HRD_VBR; + else if( !strcmp( psz_val, "cbr" ) ) + p_sys->param.i_nal_hrd = X264_NAL_HRD_CBR; + free( psz_val ); +-#endif + + //TODO: psz_val == NULL ? + psz_val = var_GetString( p_enc, SOUT_CFG_PREFIX "me" ); +@@ -1486,11 +1445,7 @@ static block_t *Encode( encoder_t *p_enc, picture_t *p_pict ) + int i_nal=0, i_out=0, i=0; + + /* init pic */ +-#if X264_BUILD >= 98 + x264_picture_init( &pic ); +-#else +- memset( &pic, 0, sizeof( x264_picture_t ) ); +-#endif + if( likely(p_pict) ) { + pic.i_pts = p_pict->date; + pic.img.i_csp = p_sys->i_colorspace; +-- +2.14.3 + diff --git a/buildroot/package/vte/Config.in b/buildroot/package/vte/Config.in new file mode 100644 index 00000000000..7410624c0a4 --- /dev/null +++ b/buildroot/package/vte/Config.in @@ -0,0 +1,33 @@ +config BR2_PACKAGE_VTE + bool "vte" + 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 + depends on BR2_PACKAGE_HAS_LIBEGL_WAYLAND || \ + BR2_PACKAGE_HAS_LIBGL + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_LIBGTK3 + select BR2_PACKAGE_LIBXML2 + 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 toolchain w/ wchar, threads, C++" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_USE_WCHAR || !BR2_INSTALL_LIBSTDCPP || \ + !BR2_TOOLCHAIN_HAS_THREADS + +comment "vte needs an OpenGL or an OpenGL-EGL/wayland backend" + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_SYNC_4 + depends on !BR2_PACKAGE_HAS_LIBEGL_WAYLAND && \ + !BR2_PACKAGE_HAS_LIBGL diff --git a/buildroot/package/vte/vte.hash b/buildroot/package/vte/vte.hash new file mode 100644 index 00000000000..3fbc5acab02 --- /dev/null +++ b/buildroot/package/vte/vte.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 a3a9fb182740b392a45cd3f46fa61a985f68bb6b1817b52daec22034c46158c3 vte-0.48.3.tar.xz +sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING diff --git a/buildroot/package/vte/vte.mk b/buildroot/package/vte/vte.mk new file mode 100644 index 00000000000..90853cb4a52 --- /dev/null +++ b/buildroot/package/vte/vte.mk @@ -0,0 +1,15 @@ +################################################################################ +# +# vte +# +################################################################################ + +VTE_VERSION = 0.48.3 +VTE_SOURCE = vte-$(VTE_VERSION).tar.xz +VTE_SITE = http://ftp.gnome.org/pub/gnome/sources/vte/0.48 +VTE_DEPENDENCIES = host-pkgconf libgtk3 libxml2 pcre2 +VTE_LICENSE = LGPL-2.1+ +VTE_LICENSE_FILES = COPYING +VTE_CONF_OPTS += --disable-introspection --without-gnutls --disable-vala + +$(eval $(autotools-package)) diff --git a/buildroot/package/waf/waf.mk b/buildroot/package/waf/waf.mk index e7ac891b39e..cb738a38fdc 100644 --- a/buildroot/package/waf/waf.mk +++ b/buildroot/package/waf/waf.mk @@ -9,7 +9,7 @@ WAF_SOURCE = waf-$(WAF_VERSION) WAF_SITE = https://waf.io/ define HOST_WAF_EXTRACT_CMDS - $(INSTALL) -D -m 0755 $(DL_DIR)/waf-$(WAF_VERSION) $(@D)/waf + $(INSTALL) -D -m 0755 $(HOST_WAF_DL_DIR)/waf-$(WAF_VERSION) $(@D)/waf endef define HOST_WAF_INSTALL_CMDS diff --git a/buildroot/package/wavpack/0005-issue-30-issue-31-issue-32-no-multiple-format-chunks.patch b/buildroot/package/wavpack/0005-issue-30-issue-31-issue-32-no-multiple-format-chunks.patch new file mode 100644 index 00000000000..f837a0e9666 --- /dev/null +++ b/buildroot/package/wavpack/0005-issue-30-issue-31-issue-32-no-multiple-format-chunks.patch @@ -0,0 +1,64 @@ +From 26cb47f99d481ad9b93eeff80d26e6b63bbd7e15 Mon Sep 17 00:00:00 2001 +From: David Bryant +Date: Tue, 24 Apr 2018 22:18:07 -0700 +Subject: [PATCH] issue #30 issue #31 issue #32: no multiple format chunks in + WAV or W64 + +Signed-off-by: Peter Korsgaard +--- + cli/riff.c | 7 ++++++- + cli/wave64.c | 6 ++++++ + 2 files changed, 12 insertions(+), 1 deletion(-) + +diff --git a/cli/riff.c b/cli/riff.c +index 7bddf63..5d6452e 100644 +--- a/cli/riff.c ++++ b/cli/riff.c +@@ -53,7 +53,7 @@ extern int debug_logging_mode; + + int ParseRiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, WavpackContext *wpc, WavpackConfig *config) + { +- int is_rf64 = !strncmp (fourcc, "RF64", 4), got_ds64 = 0; ++ int is_rf64 = !strncmp (fourcc, "RF64", 4), got_ds64 = 0, format_chunk = 0; + int64_t total_samples = 0, infilesize; + RiffChunkHeader riff_chunk_header; + ChunkHeader chunk_header; +@@ -140,6 +140,11 @@ int ParseRiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack + else if (!strncmp (chunk_header.ckID, "fmt ", 4)) { // if it's the format chunk, we want to get some info out of there and + int supported = TRUE, format; // make sure it's a .wav file we can handle + ++ if (format_chunk++) { ++ error_line ("%s is not a valid .WAV file!", infilename); ++ return WAVPACK_SOFT_ERROR; ++ } ++ + if (chunk_header.ckSize < 16 || chunk_header.ckSize > sizeof (WaveHeader) || + !DoReadFile (infile, &WaveHeader, chunk_header.ckSize, &bcount) || + bcount != chunk_header.ckSize) { +diff --git a/cli/wave64.c b/cli/wave64.c +index fa928a0..0388dc7 100644 +--- a/cli/wave64.c ++++ b/cli/wave64.c +@@ -53,6 +53,7 @@ int ParseWave64HeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpa + Wave64ChunkHeader chunk_header; + Wave64FileHeader filehdr; + WaveHeader WaveHeader; ++ int format_chunk = 0; + uint32_t bcount; + + infilesize = DoGetFileSize (infile); +@@ -104,6 +105,11 @@ int ParseWave64HeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpa + if (!memcmp (chunk_header.ckID, fmt_guid, sizeof (fmt_guid))) { + int supported = TRUE, format; + ++ if (format_chunk++) { ++ error_line ("%s is not a valid .W64 file!", infilename); ++ return WAVPACK_SOFT_ERROR; ++ } ++ + chunk_header.ckSize = (chunk_header.ckSize + 7) & ~7L; + + if (chunk_header.ckSize < 16 || chunk_header.ckSize > sizeof (WaveHeader) || +-- +2.11.0 + diff --git a/buildroot/package/wavpack/0006-issue-33-sanitize-size-of-unknown-chunks-before-mall.patch b/buildroot/package/wavpack/0006-issue-33-sanitize-size-of-unknown-chunks-before-mall.patch new file mode 100644 index 00000000000..76ebce66d6f --- /dev/null +++ b/buildroot/package/wavpack/0006-issue-33-sanitize-size-of-unknown-chunks-before-mall.patch @@ -0,0 +1,75 @@ +From 6f8bb34c2993a48ab9afbe353e6d0cff7c8d821d Mon Sep 17 00:00:00 2001 +From: David Bryant +Date: Tue, 24 Apr 2018 17:27:01 -0700 +Subject: [PATCH] issue #33, sanitize size of unknown chunks before malloc() + +Signed-off-by: Peter Korsgaard +--- + cli/dsdiff.c | 9 ++++++++- + cli/riff.c | 9 ++++++++- + cli/wave64.c | 9 ++++++++- + 3 files changed, 24 insertions(+), 3 deletions(-) + +diff --git a/cli/dsdiff.c b/cli/dsdiff.c +index c016df9..fa56bbb 100644 +--- a/cli/dsdiff.c ++++ b/cli/dsdiff.c +@@ -279,7 +279,14 @@ int ParseDsdiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpa + else { // just copy unknown chunks to output file + + int bytes_to_copy = (int)(((dff_chunk_header.ckDataSize) + 1) & ~(int64_t)1); +- char *buff = malloc (bytes_to_copy); ++ char *buff; ++ ++ if (bytes_to_copy < 0 || bytes_to_copy > 4194304) { ++ error_line ("%s is not a valid .DFF file!", infilename); ++ return WAVPACK_SOFT_ERROR; ++ } ++ ++ buff = malloc (bytes_to_copy); + + if (debug_logging_mode) + error_line ("extra unknown chunk \"%c%c%c%c\" of %d bytes", +diff --git a/cli/riff.c b/cli/riff.c +index de98c1e..7bddf63 100644 +--- a/cli/riff.c ++++ b/cli/riff.c +@@ -286,7 +286,14 @@ int ParseRiffHeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpack + else { // just copy unknown chunks to output file + + int bytes_to_copy = (chunk_header.ckSize + 1) & ~1L; +- char *buff = malloc (bytes_to_copy); ++ char *buff; ++ ++ if (bytes_to_copy < 0 || bytes_to_copy > 4194304) { ++ error_line ("%s is not a valid .WAV file!", infilename); ++ return WAVPACK_SOFT_ERROR; ++ } ++ ++ buff = malloc (bytes_to_copy); + + if (debug_logging_mode) + error_line ("extra unknown chunk \"%c%c%c%c\" of %d bytes", +diff --git a/cli/wave64.c b/cli/wave64.c +index 591d640..fa928a0 100644 +--- a/cli/wave64.c ++++ b/cli/wave64.c +@@ -241,7 +241,14 @@ int ParseWave64HeaderConfig (FILE *infile, char *infilename, char *fourcc, Wavpa + } + else { // just copy unknown chunks to output file + int bytes_to_copy = (chunk_header.ckSize + 7) & ~7L; +- char *buff = malloc (bytes_to_copy); ++ char *buff; ++ ++ if (bytes_to_copy < 0 || bytes_to_copy > 4194304) { ++ error_line ("%s is not a valid .W64 file!", infilename); ++ return WAVPACK_SOFT_ERROR; ++ } ++ ++ buff = malloc (bytes_to_copy); + + if (debug_logging_mode) + error_line ("extra unknown chunk \"%c%c%c%c\" of %d bytes", +-- +2.11.0 + diff --git a/buildroot/package/wayland-protocols/wayland-protocols.hash b/buildroot/package/wayland-protocols/wayland-protocols.hash index d1d643caa7d..9cbb4fef72e 100644 --- a/buildroot/package/wayland-protocols/wayland-protocols.hash +++ b/buildroot/package/wayland-protocols/wayland-protocols.hash @@ -1,5 +1,5 @@ -# From https://lists.freedesktop.org/archives/wayland-devel/2017-December/036037.html -md5 ac83c4704003323b6bd5a1b91fb1be53 wayland-protocols-1.12.tar.xz -sha1 ac908e91c6c5e7802c0af48f55725ad683017e72 wayland-protocols-1.12.tar.xz -sha256 3b19e8a9e1e19474756a7069db23b90ca9b8ebb438448c6063b4a7fc89b7c8b2 wayland-protocols-1.12.tar.xz +# From https://lists.freedesktop.org/archives/wayland-devel/2018-February/036992.html +md5 29312149dafcd4a0e739ba94995a574d wayland-protocols-1.13.tar.xz +sha1 1b4b3385e168c361b4d350668d92f3a90ceee189 wayland-protocols-1.13.tar.xz +sha256 0758bc8008d5332f431b2a84fea7de64d971ce270ed208206a098ff2ebc68f38 wayland-protocols-1.13.tar.xz sha256 f1a2b233e8a9a71c40f4aa885be08a0842ac85bb8588703c1dd7e6e6502e3124 COPYING diff --git a/buildroot/package/wayland-protocols/wayland-protocols.mk b/buildroot/package/wayland-protocols/wayland-protocols.mk index 0d23e9af32d..bba09799345 100644 --- a/buildroot/package/wayland-protocols/wayland-protocols.mk +++ b/buildroot/package/wayland-protocols/wayland-protocols.mk @@ -4,7 +4,7 @@ # ################################################################################ -WAYLAND_PROTOCOLS_VERSION = 1.12 +WAYLAND_PROTOCOLS_VERSION = 1.13 WAYLAND_PROTOCOLS_SITE = http://wayland.freedesktop.org/releases WAYLAND_PROTOCOLS_SOURCE = wayland-protocols-$(WAYLAND_PROTOCOLS_VERSION).tar.xz WAYLAND_PROTOCOLS_LICENSE = MIT diff --git a/buildroot/package/wayland/0001-Support-architectures-with-non-empty-__USER_LABEL_PR.patch b/buildroot/package/wayland/0001-Support-architectures-with-non-empty-__USER_LABEL_PR.patch deleted file mode 100644 index abefcff2742..00000000000 --- a/buildroot/package/wayland/0001-Support-architectures-with-non-empty-__USER_LABEL_PR.patch +++ /dev/null @@ -1,57 +0,0 @@ -From 0a337328411d5b3f37b169a83b6fee3f1726130f Mon Sep 17 00:00:00 2001 -From: Thomas Petazzoni -Date: Thu, 26 May 2016 15:57:33 +0200 -Subject: [PATCH] Support architectures with non-empty __USER_LABEL_PREFIX__ - -On some architectures (like Blackfin), a C symbol does not directly -match with assembly symbols. The C symbol references are in fact all -prefixed by a so-called "user label prefix". So when a symbol defined -in an assembly file needs to be referenced from C, this symbol should -be prefixed by the "user label prefix". - -This commit updates dtddata.S to take into account -__USER_LABEL_PREFIX__ when it exists. - -Signed-off-by: Thomas Petazzoni ---- - src/dtddata.S | 19 +++++++++++++------ - 1 file changed, 13 insertions(+), 6 deletions(-) - -diff --git a/src/dtddata.S b/src/dtddata.S -index ce51133..ad2a4db 100644 ---- a/src/dtddata.S -+++ b/src/dtddata.S -@@ -30,17 +30,24 @@ - - /* from: http://www.linuxjournal.com/content/embedding-file-executable-aka-hello-world-version-5967#comment-348129 */ - -+#ifdef __USER_LABEL_PREFIX__ -+#define CONCAT1(a, b) CONCAT2(a, b) -+#define CONCAT2(a, b) a ## b -+#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x) -+#else -+#endif -+ - .macro binfile name file - .p2align 2 -- .globl \name\()_begin --\name\()_begin: -+ .globl SYM(\name\()_begin) -+SYM(\name\()_begin): - .incbin "\file" --\name\()_end: -+SYM(\name\()_end): - .byte 0 - .p2align 2 -- .globl \name\()_len --\name\()_len: -- .int (\name\()_end - \name\()_begin) -+ .globl SYM(\name\()_len) -+SYM(\name\()_len): -+ .int (SYM(\name\()_end) - SYM(\name\()_begin)) - .endm - - .section .rodata --- -2.7.4 - diff --git a/buildroot/package/wayland/0002-configure-add-option-to-disable-tests.patch b/buildroot/package/wayland/0001-configure-add-option-to-disable-tests.patch similarity index 60% rename from buildroot/package/wayland/0002-configure-add-option-to-disable-tests.patch rename to buildroot/package/wayland/0001-configure-add-option-to-disable-tests.patch index 8c67d9a3bca..c6e4a49681f 100644 --- a/buildroot/package/wayland/0002-configure-add-option-to-disable-tests.patch +++ b/buildroot/package/wayland/0001-configure-add-option-to-disable-tests.patch @@ -1,6 +1,6 @@ -From 33b025e04bf3fa94b74ea3325b3fd7c3f546bcb1 Mon Sep 17 00:00:00 2001 +From 55ae8e1103f4697bfa01a84301a6560b89de5248 Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN" -Date: Sun, 5 Mar 2017 10:06:02 +0100 +Date: Mon, 16 Apr 2018 19:52:34 +0300 Subject: [PATCH] configure: add option to disable tests When building for a product, tests are not needed. @@ -11,40 +11,45 @@ available. So, add an option to configure to disable building tests altogether. Signed-off-by: "Yann E. MORIN" +Reviewed-by: Eric Engestrom +Tested-by: Eric Engestrom + +Signed-off-by: "Yann E. MORIN" +Signed-off-by: Alexey Brodkin + --- -Patch submitted upstream: -https://lists.freedesktop.org/archives/wayland-devel/2017-March/033359.html +Changes v1 -> v2: + - fix typo in yes-check (Eric) --- - Makefile.am | 3 ++- + Makefile.am | 2 ++ configure.ac | 8 ++++++++ - 2 files changed, 10 insertions(+), 1 deletion(-) + 2 files changed, 10 insertions(+) diff --git a/Makefile.am b/Makefile.am -index d0c8bd3..9c2541d 100644 +index 741db5ebf9d9..4862d42959f0 100644 --- a/Makefile.am +++ b/Makefile.am -@@ -143,7 +143,7 @@ libwayland_cursor_la_CFLAGS = \ - -I$(top_srcdir)/src \ - -DICONDIR=\"$(ICONDIR)\" +@@ -160,6 +160,7 @@ pkgconfig_DATA += egl/wayland-egl.pc + include_HEADERS += egl/wayland-egl-backend.h + pkgconfig_DATA += egl/wayland-egl-backend.pc -- +if ENABLE_TESTS built_test_programs = \ array-test \ client-test \ -@@ -258,6 +258,7 @@ os_wrappers_test_LDADD = libtest-runner.la +@@ -287,6 +288,7 @@ os_wrappers_test_LDADD = libtest-runner.la exec_fd_leak_checker_SOURCES = tests/exec-fd-leak-checker.c exec_fd_leak_checker_LDADD = libtest-runner.la +endif EXTRA_DIST += tests/scanner-test.sh \ - tests/data/example.xml \ + protocol/tests.xml \ diff --git a/configure.ac b/configure.ac -index b583bef..96a5575 100644 +index c74ee97b24a2..5c94b7b76b06 100644 --- a/configure.ac +++ b/configure.ac -@@ -87,10 +87,18 @@ AC_ARG_ENABLE([dtd-validation], +@@ -89,10 +89,18 @@ AC_ARG_ENABLE([dtd-validation], [], [enable_dtd_validation=yes]) @@ -58,11 +63,11 @@ index b583bef..96a5575 100644 AM_CONDITIONAL(ENABLE_LIBRARIES, test "x$enable_libraries" = xyes) -+AM_CONDITIONAL(ENABLE_TESTS, test "x$enable_tests" = "yes") ++AM_CONDITIONAL(ENABLE_TESTS, test "x$enable_tests" = xyes) + AC_ARG_WITH(icondir, [ --with-icondir= Look for cursor icons here], [ ICONDIR=$withval], [ ICONDIR=${datadir}/icons]) -- -2.7.4 +2.14.3 diff --git a/buildroot/package/wayland/wayland.hash b/buildroot/package/wayland/wayland.hash index c46aca2bdaf..4fa83a42471 100644 --- a/buildroot/package/wayland/wayland.hash +++ b/buildroot/package/wayland/wayland.hash @@ -1,5 +1,5 @@ -# From https://lists.freedesktop.org/archives/wayland-devel/2017-August/034748.html -md5 0235f6075c32c3be61cff94fa0b9f108 wayland-1.14.0.tar.xz -sha1 53a443be3bafe73209bbc49ef2cb134ed16e0141 wayland-1.14.0.tar.xz -sha256 ed80cabc0961a759a42092e2c39aabfc1ec9a13c86c98bbe2b812f008da27ab8 wayland-1.14.0.tar.xz -sha512 bd38b2b8963d4d98d42c270e5d7dbff6323789a173b19b67a18258424fd8adee5021b282c9d7f6dad0bd25aa0160e76aecd8ed803d4eb25d911ef0a81cd713a5 wayland-1.14.0.tar.xz +# From https://lists.freedesktop.org/archives/wayland-devel/2018-April/037767.html +md5 b7393c17fdce9a8d383edab656c92fd2 wayland-1.15.0.tar.xz +sha1 374e07b4f3b7fdfa7c4206cdd48224ea00d69d68 wayland-1.15.0.tar.xz +sha256 eb3fbebb8559d56a80ad3753ec3db800f587329067962dbf65e14488b4b7aeb0 wayland-1.15.0.tar.xz +sha512 f908917f1b575d2dc4d9770d3303e2637e8744fcb5c81feb2af2fe82cc51f54e22beaddfbe775fcf9623584169b7a062c75076132abeb888717180bfab53b3a8 wayland-1.15.0.tar.xz diff --git a/buildroot/package/wayland/wayland.mk b/buildroot/package/wayland/wayland.mk index 10710a81112..827924e402e 100644 --- a/buildroot/package/wayland/wayland.mk +++ b/buildroot/package/wayland/wayland.mk @@ -4,7 +4,7 @@ # ################################################################################ -WAYLAND_VERSION = 1.14.0 +WAYLAND_VERSION = 1.15.0 WAYLAND_SITE = http://wayland.freedesktop.org/releases WAYLAND_SOURCE = wayland-$(WAYLAND_VERSION).tar.xz WAYLAND_LICENSE = MIT diff --git a/buildroot/package/weston/0002-shared-struct-timespec-is-in-time.h.patch b/buildroot/package/weston/0002-shared-struct-timespec-is-in-time.h.patch deleted file mode 100644 index 28476d32254..00000000000 --- a/buildroot/package/weston/0002-shared-struct-timespec-is-in-time.h.patch +++ /dev/null @@ -1,44 +0,0 @@ -From 47535b50c4178d62b848b3e9d3524e4f6282c815 Mon Sep 17 00:00:00 2001 -From: "Yann E. MORIN" -Date: Sun, 1 Oct 2017 14:17:21 +0200 -Subject: [PATCH] shared: struct timespec is in time.h -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -On the musl C library, tests/timespec-text.c does not build, with the -following error: - - In file included from tests/timespec-test.c:36:0: - ./shared/timespec-util.h:41:21: warning: 窶struct timespec窶 declared - inside parameter list will not be visible outside of this definition - or declaration - timespec_sub(struct timespec *r, - ^~~~~~~~ - [...] - -Indeed, struct timespec is defined in time.h, so we must include it. - -Signed-off-by: "Yann E. MORIN" ---- -Upstream status: submitted - https://lists.freedesktop.org/archives/wayland-devel/2017-October/035306.html ---- - shared/timespec-util.h | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/shared/timespec-util.h b/shared/timespec-util.h -index 576b3e8f..34a120ae 100644 ---- a/shared/timespec-util.h -+++ b/shared/timespec-util.h -@@ -28,6 +28,7 @@ - - #include - #include -+#include - - #define NSEC_PER_SEC 1000000000 - --- -2.11.0 - diff --git a/buildroot/package/weston/weston.hash b/buildroot/package/weston/weston.hash index 82c97b8cc0c..55d87ac3b15 100644 --- a/buildroot/package/weston/weston.hash +++ b/buildroot/package/weston/weston.hash @@ -1,5 +1,5 @@ -# From https://lists.freedesktop.org/archives/wayland-devel/2017-August/034749.html -md5 9c42a4c51a1b9f35d040fa9d45ada36d weston-3.0.0.tar.xz -sha1 0a75c2ee10f2453a073411157bb6ed029080669f weston-3.0.0.tar.xz -sha256 cde1d55e8dd70c3cbb3d1ec72f60e60000041579caa1d6a262bd9c35e93723a5 weston-3.0.0.tar.xz -sha512 b824c39f2a884f6d50d607613f447090621f684c96f7d905f25f6e500dabd03ecb2b1cd1030babc193c3417223cb220103abb792437e1a5ead7229a76b5c7a58 weston-3.0.0.tar.xz +# From https://lists.freedesktop.org/archives/wayland-devel/2018-April/037768.html +md5 33709aa4d5916f89643fca0fc0064b39 weston-4.0.0.tar.xz +sha1 df1da4a880920c515162e95b18f3709a46690be7 weston-4.0.0.tar.xz +sha256 a0fc0ae7ef83dfbed12abfe9b8096a24a7dd00705e86fa0db1e619ded18b4b58 weston-4.0.0.tar.xz +sha512 0af41016ff4eae85779f95b5c5e44b9683f4ef681a8e52256efeebfa38073082b83e039d0db3c94ac22f22f8d8314c9d6cd16611144b260b353fc5bfdd1ded19 weston-4.0.0.tar.xz diff --git a/buildroot/package/weston/weston.mk b/buildroot/package/weston/weston.mk index 3d17a615771..e9de56b2c62 100644 --- a/buildroot/package/weston/weston.mk +++ b/buildroot/package/weston/weston.mk @@ -4,7 +4,7 @@ # ################################################################################ -WESTON_VERSION = 3.0.0 +WESTON_VERSION = 4.0.0 WESTON_SITE = http://wayland.freedesktop.org/releases WESTON_SOURCE = weston-$(WESTON_VERSION).tar.xz WESTON_LICENSE = MIT diff --git a/buildroot/package/wget/wget.hash b/buildroot/package/wget/wget.hash index 00485579462..eee4a5194ec 100644 --- a/buildroot/package/wget/wget.hash +++ b/buildroot/package/wget/wget.hash @@ -1,4 +1,5 @@ # Locally calculated after checking pgp signature -sha256 d59a745ad2c522970660bb30d38601f9457b151b322e01fa20a5a0da0f55df07 wget-1.19.2.tar.lz +# https://ftp.gnu.org/gnu/wget/wget-1.19.5.tar.lz.sig +sha256 29fbe6f3d5408430c572a63fe32bd43d5860f32691173dfd84edc06869edca75 wget-1.19.5.tar.lz # Locally calculated -sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING +sha256 e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b COPYING diff --git a/buildroot/package/wget/wget.mk b/buildroot/package/wget/wget.mk index 3fee8e1b0c2..72a73cce797 100644 --- a/buildroot/package/wget/wget.mk +++ b/buildroot/package/wget/wget.mk @@ -4,7 +4,7 @@ # ################################################################################ -WGET_VERSION = 1.19.2 +WGET_VERSION = 1.19.5 WGET_SOURCE = wget-$(WGET_VERSION).tar.lz WGET_SITE = $(BR2_GNU_MIRROR)/wget WGET_DEPENDENCIES = host-pkgconf diff --git a/buildroot/package/whetstone/whetstone.mk b/buildroot/package/whetstone/whetstone.mk index d9b45638c5a..3b6ec3419b4 100644 --- a/buildroot/package/whetstone/whetstone.mk +++ b/buildroot/package/whetstone/whetstone.mk @@ -9,7 +9,7 @@ WHETSTONE_SOURCE = whetstone.c WHETSTONE_SITE = http://www.netlib.org/benchmark define WHETSTONE_EXTRACT_CMDS - cp $(DL_DIR)/$($(PKG)_SOURCE) $(@D)/ + cp $(WHETSTONE_DL_DIR)/$($(PKG)_SOURCE) $(@D)/ endef define WHETSTONE_BUILD_CMDS diff --git a/buildroot/package/wilc1000-firmware/wilc1000-firmware.mk b/buildroot/package/wilc1000-firmware/wilc1000-firmware.mk index 5dcf19045bc..6f504d67a01 100644 --- a/buildroot/package/wilc1000-firmware/wilc1000-firmware.mk +++ b/buildroot/package/wilc1000-firmware/wilc1000-firmware.mk @@ -11,7 +11,7 @@ WILC1000_FIRMWARE_SOURCE = v$(WILC1000_FIRMWARE_VERSION)_Firmware.zip WILC1000_FIRMWARE_LICENSE = PROPRIETARY define WILC1000_FIRMWARE_EXTRACT_CMDS - $(UNZIP) -d $(BUILD_DIR) $(DL_DIR)/$(WILC1000_FIRMWARE_SOURCE) + $(UNZIP) -d $(BUILD_DIR) $(WILC1000_FIRMWARE_DL_DIR)/$(WILC1000_FIRMWARE_SOURCE) mv $(BUILD_DIR)/wireless-firmware-$(WILC1000_FIRMWARE_VERSION)_Firmware/* $(@D) rmdir $(BUILD_DIR)/wireless-firmware-$(WILC1000_FIRMWARE_VERSION)_Firmware endef diff --git a/buildroot/package/wine/Config.in b/buildroot/package/wine/Config.in index c6742884463..9de8cf0f6d8 100644 --- a/buildroot/package/wine/Config.in +++ b/buildroot/package/wine/Config.in @@ -1,12 +1,18 @@ -config BR2_PACKAGE_WINE - bool "wine" - depends on BR2_TOOLCHAIN_USES_GLIBC +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 help Wine is a compatibility layer capable of running Windows applications on Linux. Instead of simulating internal @@ -17,7 +23,6 @@ config BR2_PACKAGE_WINE http://www.winehq.org -comment "wine needs a glibc toolchain" - depends on BR2_HOSTARCH = "x86_64" || BR2_HOSTARCH = "x86" - depends on BR2_i386 - depends on !BR2_TOOLCHAIN_USES_GLIBC +comment "wine needs a toolchain w/ dynamic library" + depends on BR2_PACKAGE_WINE_ARCH_SUPPORTS + depends on BR2_STATIC_LIBS diff --git a/buildroot/package/wine/wine.mk b/buildroot/package/wine/wine.mk index 02c4c0f1554..b6b3aae504b 100644 --- a/buildroot/package/wine/wine.mk +++ b/buildroot/package/wine/wine.mk @@ -23,7 +23,6 @@ WINE_CONF_OPTS = \ --without-gphoto \ --without-gsm \ --without-hal \ - --without-krb5 \ --without-opencl \ --without-oss @@ -121,6 +120,13 @@ else WINE_CONF_OPTS += --without-glu 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 diff --git a/buildroot/package/wireguard/wireguard.hash b/buildroot/package/wireguard/wireguard.hash index 4961d4fd14c..6cfc7bb9f0d 100644 --- a/buildroot/package/wireguard/wireguard.hash +++ b/buildroot/package/wireguard/wireguard.hash @@ -1,4 +1,4 @@ -# From https://lists.zx2c4.com/pipermail/wireguard/2018-February/002406.html -sha256 4ac4c4e4ad4dc2cf9dcb831b0cf347567ccea675ca524528cf5a4d9dccb2fe52 WireGuard-0.0.20180218.tar.xz +# From https://lists.zx2c4.com/pipermail/wireguard/2018-April/002697.html +sha256 b58cd2acf9e8d3fe9044c06c0056bd74da1f5673a456f011d36eee3f6fb1da16 WireGuard-0.0.20180420.tar.xz # Locally calculated sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/buildroot/package/wireguard/wireguard.mk b/buildroot/package/wireguard/wireguard.mk index aa86b5782bb..20162e1d0ff 100644 --- a/buildroot/package/wireguard/wireguard.mk +++ b/buildroot/package/wireguard/wireguard.mk @@ -4,7 +4,7 @@ # ################################################################################ -WIREGUARD_VERSION = 0.0.20180218 +WIREGUARD_VERSION = 0.0.20180420 WIREGUARD_SITE = https://git.zx2c4.com/WireGuard/snapshot WIREGUARD_SOURCE = WireGuard-$(WIREGUARD_VERSION).tar.xz WIREGUARD_LICENSE = GPL-2.0 diff --git a/buildroot/package/wireshark/wireshark.hash b/buildroot/package/wireshark/wireshark.hash index 93421c6498c..2b44cc0757d 100644 --- a/buildroot/package/wireshark/wireshark.hash +++ b/buildroot/package/wireshark/wireshark.hash @@ -1,4 +1,4 @@ -# From: https://www.wireshark.org/download/src/all-versions/SIGNATURES-2.2.12.txt -sha256 3274458d1bb1658a5001465ecb07c7cbfc709571ef36bd062897570d4bab3ebc wireshark-2.2.12.tar.bz2 +# From: https://www.wireshark.org/download/src/all-versions/SIGNATURES-2.2.14.txt +sha256 e7a3d4f9bbde20ea5ee09103f9f6dba38e3666dfe1d6a6a1c004602b5fac378b wireshark-2.2.14.tar.bz2 # Locally calculated sha256 7cdbed2b697efaa45576a033f1ac0e73cd045644a91c79bbf41d4a7d81dac7bf COPYING diff --git a/buildroot/package/wireshark/wireshark.mk b/buildroot/package/wireshark/wireshark.mk index 93c6da03986..ad475803b7a 100644 --- a/buildroot/package/wireshark/wireshark.mk +++ b/buildroot/package/wireshark/wireshark.mk @@ -4,7 +4,7 @@ # ################################################################################ -WIRESHARK_VERSION = 2.2.12 +WIRESHARK_VERSION = 2.2.14 WIRESHARK_SOURCE = wireshark-$(WIRESHARK_VERSION).tar.bz2 WIRESHARK_SITE = https://www.wireshark.org/download/src/all-versions WIRESHARK_LICENSE = wireshark license diff --git a/buildroot/package/wmctrl/wmctrl.mk b/buildroot/package/wmctrl/wmctrl.mk index 0d4aeebc1d3..36ad3513ff2 100644 --- a/buildroot/package/wmctrl/wmctrl.mk +++ b/buildroot/package/wmctrl/wmctrl.mk @@ -11,4 +11,8 @@ 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/buildroot/package/woff2/0001-CMake-Handle-multiple-libraries-being-returned-for-B.patch b/buildroot/package/woff2/0001-CMake-Handle-multiple-libraries-being-returned-for-B.patch new file mode 100644 index 00000000000..142eab27183 --- /dev/null +++ b/buildroot/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/buildroot/package/woff2/Config.in b/buildroot/package/woff2/Config.in new file mode 100644 index 00000000000..48672570dd7 --- /dev/null +++ b/buildroot/package/woff2/Config.in @@ -0,0 +1,9 @@ +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 diff --git a/buildroot/package/woff2/woff2.hash b/buildroot/package/woff2/woff2.hash new file mode 100644 index 00000000000..469071e3c2b --- /dev/null +++ b/buildroot/package/woff2/woff2.hash @@ -0,0 +1,5 @@ +# Locally generated: +sha512 c788bba1530aec463e755e901f9342f4b599e3a07f54645fef1dc388ab5d5c30625535e5dd38e9e792e04a640574baa50eeefb6b7338ab403755f4a4e0c3044d v1.0.2.tar.gz + +# Hash for license files: +sha512 8ee924da3fb5d16135adcf6a8fbe9e2e8f3d2d80468617e72ca4fa059a60f8455c9a5f68a8dc381b1297c8bf39c887a912d0f69246d2604ada74d3da9e8e490b LICENSE diff --git a/buildroot/package/woff2/woff2.mk b/buildroot/package/woff2/woff2.mk new file mode 100644 index 00000000000..2f0206c82b7 --- /dev/null +++ b/buildroot/package/woff2/woff2.mk @@ -0,0 +1,30 @@ +################################################################################ +# +# woff2 +# +################################################################################ + +WOFF2_VERSION = 1.0.2 +WOFF2_SOURCE = v$(WOFF2_VERSION).tar.gz +WOFF2_SITE = https://github.com/google/woff2/archive +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 + +# Internal error, aborting at dw2gencfi.c:215 in emit_expr_encoded +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79509 +ifeq ($(BR2_m68k_cf),y) +WOFF2_CONF_OPTS += -DCMAKE_CXX_FLAGS="$(TARGET_CXXFLAGS) -fno-dwarf2-cfi-asm" +endif + +$(eval $(cmake-package)) diff --git a/buildroot/package/wolfssl/0001-Fix-issue-with-the-creation-of-dummy-fips.h-header.patch b/buildroot/package/wolfssl/0001-Fix-issue-with-the-creation-of-dummy-fips.h-header.patch new file mode 100644 index 00000000000..0e9dec751d0 --- /dev/null +++ b/buildroot/package/wolfssl/0001-Fix-issue-with-the-creation-of-dummy-fips.h-header.patch @@ -0,0 +1,33 @@ +From a7fe5e35025227e348eaef5a15fd55f591d77206 Mon Sep 17 00:00:00 2001 +From: John Safranek +Date: Tue, 6 Mar 2018 13:15:35 -0800 +Subject: [PATCH] Fix issue with the creation of dummy fips.h header. + +Signed-off-by: Peter Korsgaard +--- + wolfssl/wolfcrypt/include.am | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/wolfssl/wolfcrypt/include.am b/wolfssl/wolfcrypt/include.am +index c81bdd13..6e84ed9d 100644 +--- a/wolfssl/wolfcrypt/include.am ++++ b/wolfssl/wolfcrypt/include.am +@@ -20,7 +20,6 @@ nobase_include_HEADERS+= \ + wolfssl/wolfcrypt/fe_operations.h \ + wolfssl/wolfcrypt/ge_operations.h \ + wolfssl/wolfcrypt/error-crypt.h \ +- wolfssl/wolfcrypt/fips.h \ + wolfssl/wolfcrypt/fips_test.h \ + wolfssl/wolfcrypt/hash.h \ + wolfssl/wolfcrypt/hc128.h \ +@@ -99,3 +98,7 @@ if BUILD_SELFTEST + nobase_include_HEADERS+= wolfssl/wolfcrypt/selftest.h + endif + ++if BUILD_FIPS_V2 ++nobase_include_HEADERS+= wolfssl/wolfcrypt/fips.h ++endif ++ +-- +2.11.0 + diff --git a/buildroot/package/wolfssl/wolfssl.hash b/buildroot/package/wolfssl/wolfssl.hash index 204f2f09571..76c7db25a84 100644 --- a/buildroot/package/wolfssl/wolfssl.hash +++ b/buildroot/package/wolfssl/wolfssl.hash @@ -1,5 +1,5 @@ # Locally computed: -sha256 3bafeb0cb7eaff80002ba3f7cbb70023757bcc35fc4d82181945b143f1f927c6 v3.13.0-stable.tar.gz +sha256 4ab543c869a65a77dc5d0bc934b9d4852aa3d5834bd2f707a74a936602bd3687 v3.14.0-stable.tar.gz # Hash for license files: sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING diff --git a/buildroot/package/wolfssl/wolfssl.mk b/buildroot/package/wolfssl/wolfssl.mk index 84073f338e7..ec83d7d1dd1 100644 --- a/buildroot/package/wolfssl/wolfssl.mk +++ b/buildroot/package/wolfssl/wolfssl.mk @@ -4,7 +4,7 @@ # ################################################################################ -WOLFSSL_VERSION = 3.13.0 +WOLFSSL_VERSION = 3.14.0 WOLFSSL_SITE = https://github.com/wolfSSL/wolfssl/archive WOLFSSL_SOURCE = v$(WOLFSSL_VERSION)-stable.tar.gz diff --git a/buildroot/package/x11r7/libxcb/libxcb.hash b/buildroot/package/x11r7/libxcb/libxcb.hash index 6df7d01792e..d2b5da6b52b 100644 --- a/buildroot/package/x11r7/libxcb/libxcb.hash +++ b/buildroot/package/x11r7/libxcb/libxcb.hash @@ -1,2 +1,7 @@ -# From https://lists.x.org/archives/xorg-announce/2016-May/002694.html -sha256 4adfb1b7c67e99bc9c2ccb110b2f175686576d2f792c8a71b9c8b19014057b5b libxcb-1.12.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002851.html +md5 c2b6cf928afa16b0047c974e7aaa783f libxcb-1.13.tar.bz2 +sha1 212ad5f1f80def80536d78e3d20354a0370e7fe9 libxcb-1.13.tar.bz2 +sha256 188c8752193c50ff2dbe89db4554c63df2e26a2e47b0fa415a70918b5b851daa libxcb-1.13.tar.bz2 +sha512 d99bbe386a65f60fcc0cc2935e4a365bc0577b5e90433e18778a665a5aee8ebc8e9e8cb0aedac0ac4a276147c0507e759a716874ea4f80792b2fc18eefbc128c libxcb-1.13.tar.bz2 +# Locally computed +sha256 c5ffbfeaa501071ceeb97b7de2c0d703fdaa35de01c0fb6cbac1c28453a3e9fd COPYING diff --git a/buildroot/package/x11r7/libxcb/libxcb.mk b/buildroot/package/x11r7/libxcb/libxcb.mk index 32edbb9e900..7e467aca3ff 100644 --- a/buildroot/package/x11r7/libxcb/libxcb.mk +++ b/buildroot/package/x11r7/libxcb/libxcb.mk @@ -4,7 +4,7 @@ # ################################################################################ -LIBXCB_VERSION = 1.12 +LIBXCB_VERSION = 1.13 LIBXCB_SOURCE = libxcb-$(LIBXCB_VERSION).tar.bz2 LIBXCB_SITE = http://xcb.freedesktop.org/dist LIBXCB_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_appres/xapp_appres.hash b/buildroot/package/x11r7/xapp_appres/xapp_appres.hash index a1cbf0b4b91..8750e2d14c6 100644 --- a/buildroot/package/x11r7/xapp_appres/xapp_appres.hash +++ b/buildroot/package/x11r7/xapp_appres/xapp_appres.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-May/002211.html -sha256 9f614e9427cd9641a4a801ed5055700afa410674c0b7aa186b86078f11b83e8d appres-1.0.4.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002847.html +md5 f544e701043249d2bb3deed48314bc55 appres-1.0.5.tar.bz2 +sha1 5e5dbffd0a125732bb8bb8a202e04555a9604089 appres-1.0.5.tar.bz2 +sha256 ffad893712c81943b919e3cbfe46fc65259cc0d9eb96d5e658670e3fbb265928 appres-1.0.5.tar.bz2 +sha512 70825563cd80f0f433c48ab2fdae888072939c1b22fb22340b70b9444c97916275ed92c9e5bf9a06bb76c32a5371b89ff7c0211a9a47a227c88311078c2c4137 appres-1.0.5.tar.bz2 +# Locally computed +sha256 5969302729a9621fd526a7f9942a51a29b858e0b682ffd28eeda5fc4dfaddf55 COPYING diff --git a/buildroot/package/x11r7/xapp_appres/xapp_appres.mk b/buildroot/package/x11r7/xapp_appres/xapp_appres.mk index b84d7426c62..4159332bd3a 100644 --- a/buildroot/package/x11r7/xapp_appres/xapp_appres.mk +++ b/buildroot/package/x11r7/xapp_appres/xapp_appres.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_APPRES_VERSION = 1.0.4 +XAPP_APPRES_VERSION = 1.0.5 XAPP_APPRES_SOURCE = appres-$(XAPP_APPRES_VERSION).tar.bz2 XAPP_APPRES_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_APPRES_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_editres/xapp_editres.hash b/buildroot/package/x11r7/xapp_editres/xapp_editres.hash index 74fc98d63c8..15367955152 100644 --- a/buildroot/package/x11r7/xapp_editres/xapp_editres.hash +++ b/buildroot/package/x11r7/xapp_editres/xapp_editres.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-January/002120.html -sha256 3b66d1240bde853872bbb341c4b8fb029094d0a5d21347a58831f15b162c4df0 editres-1.0.6.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002846.html +md5 526cf79edc0c5e379aefb21539243f96 editres-1.0.7.tar.bz2 +sha1 389e953ebb5080564a6780cb34b72bafae7f5540 editres-1.0.7.tar.bz2 +sha256 089ad34628e55a779b97e369f55fb12caefc96d684b508d9022eb9e12b775c11 editres-1.0.7.tar.bz2 +sha512 b9c928b556116bf50cf4b6ea779bdc9fedf29f5db3e6a8cc75c122578c92e1cc530a81b226ec24aad183b8ebc2de570f200314b0d9ce7883b6e3306007365b32 editres-1.0.7.tar.bz2 +# Locally computed +sha256 b1049cf96db2c00428b8313541ab333ec4e06f102955f3edd44f88ec43b0acd6 COPYING diff --git a/buildroot/package/x11r7/xapp_editres/xapp_editres.mk b/buildroot/package/x11r7/xapp_editres/xapp_editres.mk index 6cc4805f5f7..1a947d478ed 100644 --- a/buildroot/package/x11r7/xapp_editres/xapp_editres.mk +++ b/buildroot/package/x11r7/xapp_editres/xapp_editres.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_EDITRES_VERSION = 1.0.6 +XAPP_EDITRES_VERSION = 1.0.7 XAPP_EDITRES_SOURCE = editres-$(XAPP_EDITRES_VERSION).tar.bz2 XAPP_EDITRES_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_EDITRES_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.hash b/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.hash index 90c5f70bfae..f1ea73a7af7 100644 --- a/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.hash +++ b/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2015-January/002519.html -sha256 1216af2dee99b318fcf8bf9a259915273bcb37a7f1e7859af4f15d0ebf6f3f0a iceauth-1.0.7.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002850.html +md5 3b9b79fa0f9928161f4bad94273de7ae iceauth-1.0.8.tar.bz2 +sha1 2ce23c40a17d98badeb8ce70d26e81a5ac0e178c iceauth-1.0.8.tar.bz2 +sha256 e6ee213a217265cc76050e4293ea70b98c32dce6505c6421227efbda62ab60c6 iceauth-1.0.8.tar.bz2 +sha512 9d4520adf951b16a3e784349dbb70d5d8176b74b956f8adc63abf55d049745c113b03ccfa60a281fc39b487db3742302dc6287c9985ce83a0157bf4674df2af1 iceauth-1.0.8.tar.bz2 +# Locally computed +sha256 fdd9ba8ccb92af2f31f542e7b7a18c27257e6cdce147d231bc9ba3654ad84976 COPYING diff --git a/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.mk b/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.mk index d30ff6f786c..0e0e0017054 100644 --- a/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.mk +++ b/buildroot/package/x11r7/xapp_iceauth/xapp_iceauth.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_ICEAUTH_VERSION = 1.0.7 +XAPP_ICEAUTH_VERSION = 1.0.8 XAPP_ICEAUTH_SOURCE = iceauth-$(XAPP_ICEAUTH_VERSION).tar.bz2 XAPP_ICEAUTH_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_ICEAUTH_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_ico/xapp_ico.hash b/buildroot/package/x11r7/xapp_ico/xapp_ico.hash index 055e85ea673..693aff65f7d 100644 --- a/buildroot/package/x11r7/xapp_ico/xapp_ico.hash +++ b/buildroot/package/x11r7/xapp_ico/xapp_ico.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-January/002135.html -sha256 2932767098f95ca129a0c7f0fecb0a18c789a79c1747f7423fdfe9f4e0c53590 ico-1.0.4.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002880.html +md5 7895f2d109f4206b6d2db37257e07d12 ico-1.0.5.tar.bz2 +sha1 8759ec954375f3a1b37dc920a12790bfbfb0cad3 ico-1.0.5.tar.bz2 +sha256 d73b62f29eb98d850f16b76d759395180b860b613fbe1686b18eee99a6e3773f ico-1.0.5.tar.bz2 +sha512 93a94a66d4a41b39d4b3657050e58f8269d352dae5d5916c9ecdda1cb14f23b9d159d67c50fdfa654b4b1c2ad11434bed140ace70703c82b05d3fe8686aab8f6 ico-1.0.5.tar.bz2 +# Locally computed +sha256 97ef3a622f2f385cabfc8ab7aff13dc46468c10a5520670b5edfa33f2c3999eb COPYING diff --git a/buildroot/package/x11r7/xapp_ico/xapp_ico.mk b/buildroot/package/x11r7/xapp_ico/xapp_ico.mk index 621d1e489ed..8b0d4f90f3a 100644 --- a/buildroot/package/x11r7/xapp_ico/xapp_ico.mk +++ b/buildroot/package/x11r7/xapp_ico/xapp_ico.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_ICO_VERSION = 1.0.4 +XAPP_ICO_VERSION = 1.0.5 XAPP_ICO_SOURCE = ico-$(XAPP_ICO_VERSION).tar.bz2 XAPP_ICO_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_ICO_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_listres/xapp_listres.hash b/buildroot/package/x11r7/xapp_listres/xapp_listres.hash index ffc9f7eecbd..1e1c11953a9 100644 --- a/buildroot/package/x11r7/xapp_listres/xapp_listres.hash +++ b/buildroot/package/x11r7/xapp_listres/xapp_listres.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2012-February/001838.html -sha256 c3d71e9a01650e3fd470189a749cd0202ef03d9e399350a7a7443d7595ed478e listres-1.0.3.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002848.html +md5 24e05349f2881aaa58cbe160e49223ac listres-1.0.4.tar.bz2 +sha1 903857c7a9ec3d8edc8a88101aef33cd27796649 listres-1.0.4.tar.bz2 +sha256 6a1229f478796e141d6658762f432ebbe1f6083b27550847d52239b3f7ec2b10 listres-1.0.4.tar.bz2 +sha512 925bceab6ff96fcf91f58ba2f858905d6e2eff7074ba29cfc02def7c19fb493545837884f1070dc004422451f749cd459000c01e8c9bb51a7cce7f7ab4067b8a listres-1.0.4.tar.bz2 +# Locally computed +sha256 aefb540c54bc95c68702cd2ae668c559e63cc1a84f55ae5c0e78547e7d75d2d5 COPYING diff --git a/buildroot/package/x11r7/xapp_listres/xapp_listres.mk b/buildroot/package/x11r7/xapp_listres/xapp_listres.mk index 88cdd4f0339..b4ac3e1de82 100644 --- a/buildroot/package/x11r7/xapp_listres/xapp_listres.mk +++ b/buildroot/package/x11r7/xapp_listres/xapp_listres.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_LISTRES_VERSION = 1.0.3 +XAPP_LISTRES_VERSION = 1.0.4 XAPP_LISTRES_SOURCE = listres-$(XAPP_LISTRES_VERSION).tar.bz2 XAPP_LISTRES_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_LISTRES_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.hash b/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.hash index 0cab2b2d1b2..b0776a412b0 100644 --- a/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.hash +++ b/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2015-January/002520.html -sha256 8c6d5228af885477b9aec60ca6f172578e7d2de42234357af62fb00439453f20 mkfontscale-1.1.2.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002855.html +md5 987c438e79f5ddb84a9c5726a1610819 mkfontscale-1.1.3.tar.bz2 +sha1 2fdbd7c6cc5b0678f2c5d10d2350a809d576e9e5 mkfontscale-1.1.3.tar.bz2 +sha256 1e98df69ee5f4542d711e140e1d93e2c3f2775407ccbb7849110d52b91782a6a mkfontscale-1.1.3.tar.bz2 +sha512 509e2f9cd55cf87cc3968c8767bf3f2386016278db8b7be75b7df34bf61f52519dd2778f3b9881ffbe30cc2fe26089c0a5b2c33af46bc7727f46dad83f030a62 mkfontscale-1.1.3.tar.bz2 +# Locally computed +sha256 90f0a1bfee2ed42c63473ded631c0463bf38b3d193733ccfc35394c713a0701d COPYING diff --git a/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.mk b/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.mk index d7abf6c5bbe..12416b4d6b1 100644 --- a/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.mk +++ b/buildroot/package/x11r7/xapp_mkfontscale/xapp_mkfontscale.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_MKFONTSCALE_VERSION = 1.1.2 +XAPP_MKFONTSCALE_VERSION = 1.1.3 XAPP_MKFONTSCALE_SOURCE = mkfontscale-$(XAPP_MKFONTSCALE_VERSION).tar.bz2 XAPP_MKFONTSCALE_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_MKFONTSCALE_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_oclock/xapp_oclock.hash b/buildroot/package/x11r7/xapp_oclock/xapp_oclock.hash index ad54499c5ef..b345b448f9a 100644 --- a/buildroot/package/x11r7/xapp_oclock/xapp_oclock.hash +++ b/buildroot/package/x11r7/xapp_oclock/xapp_oclock.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2012-February/001820.html -sha256 54f5fb85f5828705683f457e559fb18753332db15ae82da561b0ae5a63915091 oclock-1.0.3.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002856.html +md5 973f6d25a6f0990720b98a15c9436b92 oclock-1.0.4.tar.bz2 +sha1 0bc8f3f44290950f60af894e20e0ceb0c5e8e862 oclock-1.0.4.tar.bz2 +sha256 cc20cfc1c0d5128d89e1eecd9ba52e58f111075be163e0aeda5690dbaafbaefe oclock-1.0.4.tar.bz2 +sha512 6e0d36a84572a153226b2929f2253cb7adc3c9e5e3af168aeaf8c487ade2e43517b271a8e9cdb2a2c4a67ca56ed0b99c194ca63a4a822b68bfc72ca6518335e7 oclock-1.0.4.tar.bz2 +# Locally computed +sha256 f6cae4b0c603ef5bd76da2df96b38aa43aa7547e482adb8cb8b83f09af35e4a2 COPYING diff --git a/buildroot/package/x11r7/xapp_oclock/xapp_oclock.mk b/buildroot/package/x11r7/xapp_oclock/xapp_oclock.mk index 17d544ccc47..833d1514047 100644 --- a/buildroot/package/x11r7/xapp_oclock/xapp_oclock.mk +++ b/buildroot/package/x11r7/xapp_oclock/xapp_oclock.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_OCLOCK_VERSION = 1.0.3 +XAPP_OCLOCK_VERSION = 1.0.4 XAPP_OCLOCK_SOURCE = oclock-$(XAPP_OCLOCK_VERSION).tar.bz2 XAPP_OCLOCK_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_OCLOCK_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_twm/xapp_twm.hash b/buildroot/package/x11r7/xapp_twm/xapp_twm.hash index eecc5c4e512..572ecb98202 100644 --- a/buildroot/package/x11r7/xapp_twm/xapp_twm.hash +++ b/buildroot/package/x11r7/xapp_twm/xapp_twm.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2015-April/002565.html -sha256 c575167ac33edf3bd1592f1bedfe0559debb128ed5fb4873c1278e3be166310a twm-1.0.9.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002857.html +md5 e322c08eeb635f924ede5b8eba3db54e twm-1.0.10.tar.bz2 +sha1 f632a47620dfe6d75b003839d269b14fa22b262e twm-1.0.10.tar.bz2 +sha256 6449eadca16ce0f0d900605b0cc020b95f40619261b7beccfb46bcc1836445d7 twm-1.0.10.tar.bz2 +sha512 1280683fce7ebbf5670239cb1f3cee2b40612bd9850d98827e793cf8bf298bdb58e48387cab943ea6befc6f7b34da2567353c22b8eaeb8bcf1b9e303cd7e6a9e twm-1.0.10.tar.bz2 +# Locally computed +sha256 4809ffc9656bc9a704e19ab467d1cedc97c48c9d1f9a4018e6d99d2e61f75945 COPYING diff --git a/buildroot/package/x11r7/xapp_twm/xapp_twm.mk b/buildroot/package/x11r7/xapp_twm/xapp_twm.mk index 1f576e15bdd..0af30f737c9 100644 --- a/buildroot/package/x11r7/xapp_twm/xapp_twm.mk +++ b/buildroot/package/x11r7/xapp_twm/xapp_twm.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_TWM_VERSION = 1.0.9 +XAPP_TWM_VERSION = 1.0.10 XAPP_TWM_SOURCE = twm-$(XAPP_TWM_VERSION).tar.bz2 XAPP_TWM_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_TWM_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_viewres/xapp_viewres.hash b/buildroot/package/x11r7/xapp_viewres/xapp_viewres.hash index c45b1b25f78..539bb431ee0 100644 --- a/buildroot/package/x11r7/xapp_viewres/xapp_viewres.hash +++ b/buildroot/package/x11r7/xapp_viewres/xapp_viewres.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-January/002122.html -sha256 d9c11b44908d91926df8b33428ae04c86c85e4f8380e9b5e68326a651c872e59 viewres-1.0.4.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002849.html +md5 08def461f135832136624855763b20fa viewres-1.0.5.tar.bz2 +sha1 d03832456dde6c2a91086e6563d52fd936425948 viewres-1.0.5.tar.bz2 +sha256 5ed818e84c39bcf26dadc885c9860432b85843caad3621e26d99edea660ae3d7 viewres-1.0.5.tar.bz2 +sha512 fe573e9b5ae679b65eee95733cbea20c86c92089c3a2dadfe977bc9c54d1f58c5e5f4663e51a1cf206543a43592b3a3c266da1769279f08be85c66b0aa5b0f7f viewres-1.0.5.tar.bz2 +# Locally computed +sha256 aefb540c54bc95c68702cd2ae668c559e63cc1a84f55ae5c0e78547e7d75d2d5 COPYING diff --git a/buildroot/package/x11r7/xapp_viewres/xapp_viewres.mk b/buildroot/package/x11r7/xapp_viewres/xapp_viewres.mk index 3e1fd8ddca0..95205b4352d 100644 --- a/buildroot/package/x11r7/xapp_viewres/xapp_viewres.mk +++ b/buildroot/package/x11r7/xapp_viewres/xapp_viewres.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_VIEWRES_VERSION = 1.0.4 +XAPP_VIEWRES_VERSION = 1.0.5 XAPP_VIEWRES_SOURCE = viewres-$(XAPP_VIEWRES_VERSION).tar.bz2 XAPP_VIEWRES_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_VIEWRES_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.hash b/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.hash index 058c53fca26..b2aa760600f 100644 --- a/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.hash +++ b/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-October/002331.html -sha256 17f6cf51a35eaa918abec36b7871d28b712c169312e22a0eaf1ffe8d6468362b xbacklight-1.2.1.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002862.html +md5 d50cf135af04436b9456a5ab7dcf7971 xbacklight-1.2.2.tar.bz2 +sha1 8cc84c4b2e23e99bfa72239847af4b42ae89669e xbacklight-1.2.2.tar.bz2 +sha256 615a1d13e429ed5a0300b2f4508bc199d7cf21b6b9f088a9d8188d3bc957bf5e xbacklight-1.2.2.tar.bz2 +sha512 4dca70ef8e3494b19ea126c46395807cddc007b2b09a133810daeb77ae27fa36ac4eec7813828248fc195abe27f59700cfa58ee65ef3a020a51f73e5107678ec xbacklight-1.2.2.tar.bz2 +# Locally computed +sha256 c9fbf1f272215babef31808c1235de8e4f7641ca5edfc4fc615b6556054b2b04 COPYING diff --git a/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.mk b/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.mk index 88c4bc5dbe8..a2907bb288b 100644 --- a/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.mk +++ b/buildroot/package/x11r7/xapp_xbacklight/xapp_xbacklight.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XBACKLIGHT_VERSION = 1.2.1 +XAPP_XBACKLIGHT_VERSION = 1.2.2 XAPP_XBACKLIGHT_SOURCE = xbacklight-$(XAPP_XBACKLIGHT_VERSION).tar.bz2 XAPP_XBACKLIGHT_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XBACKLIGHT_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.hash b/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.hash index 264ec9a0165..80a4ac48f41 100644 --- a/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.hash +++ b/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2015-April/002570.html -sha256 4cba3766ef89557422062287248adeb933999071bad6f3ef9c0a478a3c680119 xdriinfo-1.0.5.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002858.html +md5 480e63cd365f03eb2515a6527d5f4ca6 xdriinfo-1.0.6.tar.bz2 +sha1 11682ae1f04a311b832651d78bbf4c6ac77f0ed9 xdriinfo-1.0.6.tar.bz2 +sha256 d9ccd2c3e87899417acc9ea1f3e319a4198112babe1dc711273584f607449d51 xdriinfo-1.0.6.tar.bz2 +sha512 7ddd9e19abaef93e4d85004293528ec3814ef84c470d496dbb8dc8313d804bb7520406de8d33d2bc2b3af942bd0a5d5032a109b2726438a966af63ea680a102f xdriinfo-1.0.6.tar.bz2 +# Locally computed +sha256 de2fbb160bbb64c48975d7a3ebe3636a312b73227df1efe37488a8cecb9c1932 COPYING diff --git a/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.mk b/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.mk index ffab5170dc3..00dea8c7ad3 100644 --- a/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.mk +++ b/buildroot/package/x11r7/xapp_xdriinfo/xapp_xdriinfo.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XDRIINFO_VERSION = 1.0.5 +XAPP_XDRIINFO_VERSION = 1.0.6 XAPP_XDRIINFO_SOURCE = xdriinfo-$(XAPP_XDRIINFO_VERSION).tar.bz2 XAPP_XDRIINFO_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XDRIINFO_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.hash b/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.hash index 02eb26b7b9d..bbb6a9b08b0 100644 --- a/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.hash +++ b/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2010-November/001552.html -sha1 efe6116d31a7f69e4fb6038613e52b0960b9b61c xeyes-1.1.1.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002860.html +md5 6f0543ec84283df5743eeafc173bea4a xeyes-1.1.2.tar.bz2 +sha1 458987f8accdbd8abf993ee51030391cf584d2e8 xeyes-1.1.2.tar.bz2 +sha256 57bcec0d2d167af9e5d44d0dbd74c6d7c0f0591cd0608952b23c749fdd910553 xeyes-1.1.2.tar.bz2 +sha512 008d76f03ddabd3d86ad9e52a540504553b94cb7a6743b20cf08897549eb27505667365ab9af21956a1b5ec7297acca8903a326536e6195a30e643cd93297ee0 xeyes-1.1.2.tar.bz2 +# Locally computed +sha256 d8de1de40e16227d1eb4b19e95117ce3f990f71f71df096a2259b0bc9931e042 COPYING diff --git a/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.mk b/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.mk index 07c12002be7..6c7f859d35a 100644 --- a/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.mk +++ b/buildroot/package/x11r7/xapp_xeyes/xapp_xeyes.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XEYES_VERSION = 1.1.1 +XAPP_XEYES_VERSION = 1.1.2 XAPP_XEYES_SOURCE = xeyes-$(XAPP_XEYES_VERSION).tar.bz2 XAPP_XEYES_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XEYES_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.hash b/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.hash index 40f55236f00..a09df5585b2 100644 --- a/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.hash +++ b/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-May/002213.html -sha256 170d8550b96fb47b04db6181b947e6f6b8b97f4df5d691c351a278480cc931bf xfontsel-1.0.5.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002861.html +md5 13150ff98846bf6d9a14bee00697fa47 xfontsel-1.0.6.tar.bz2 +sha1 3fd8d78cc270030b41298170c3e5222065dd1cfd xfontsel-1.0.6.tar.bz2 +sha256 25aa0b7c4262f5e99c07c2b96e00e4eb25b7e53f94fa803942af9d0e8da3001c xfontsel-1.0.6.tar.bz2 +sha512 2f6bc51549a302404cdaf9a5a825add383953fcbb2a0c7076691cefd4dd7e4a3c772c047be74101c8486f75d03ce0bd3e65ede14e91732cf2a932810441c9099 xfontsel-1.0.6.tar.bz2 +# Locally computed +sha256 a27097bcc5cdf4fa5d761dd4e5cea1f41911c51b0a7d9da6e3a48f69d9fd0c09 COPYING diff --git a/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.mk b/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.mk index 781b4d35424..9dea4299b33 100644 --- a/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.mk +++ b/buildroot/package/x11r7/xapp_xfontsel/xapp_xfontsel.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XFONTSEL_VERSION = 1.0.5 +XAPP_XFONTSEL_VERSION = 1.0.6 XAPP_XFONTSEL_SOURCE = xfontsel-$(XAPP_XFONTSEL_VERSION).tar.bz2 XAPP_XFONTSEL_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XFONTSEL_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xinit/xapp_xinit.hash b/buildroot/package/x11r7/xapp_xinit/xapp_xinit.hash index f8bab9114c4..58ee1ecb1de 100644 --- a/buildroot/package/x11r7/xapp_xinit/xapp_xinit.hash +++ b/buildroot/package/x11r7/xapp_xinit/xapp_xinit.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2014-September/002477.html -sha256 75d88d7397a07e01db253163b7c7a00b249b3d30e99489f2734cac9a0c7902b3 xinit-1.3.4.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002863.html +md5 2da154b2f80ca9637b1a17b13af0880c xinit-1.4.0.tar.bz2 +sha1 fcdca692b09a45f546016fff78718d1cf7e7852f xinit-1.4.0.tar.bz2 +sha256 230835eef2f5978a1e1344928168119373f6df1d0a32c09515e545721ee582ef xinit-1.4.0.tar.bz2 +sha512 53a29081130c1e195eb441ee77ccaa044b18b4cca3d2d5da3a6d67aa421dfd9718fa18b6be6232a41e40cf260c8190064c4d8d9ab771177bd5cd12e77a8fa79e xinit-1.4.0.tar.bz2 +# Locally computed +sha256 c47001aa217d4ae7787121d80634db4bdba564e49a0ecab8d48b1bdc4edee1c7 COPYING diff --git a/buildroot/package/x11r7/xapp_xinit/xapp_xinit.mk b/buildroot/package/x11r7/xapp_xinit/xapp_xinit.mk index a796884f6b4..d911a45953b 100644 --- a/buildroot/package/x11r7/xapp_xinit/xapp_xinit.mk +++ b/buildroot/package/x11r7/xapp_xinit/xapp_xinit.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XINIT_VERSION = 1.3.4 +XAPP_XINIT_VERSION = 1.4.0 XAPP_XINIT_SOURCE = xinit-$(XAPP_XINIT_VERSION).tar.bz2 XAPP_XINIT_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XINIT_DEPENDENCIES = xapp_xauth xlib_libX11 diff --git a/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.hash b/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.hash index 4d0b5feed90..56631411d48 100644 --- a/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.hash +++ b/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.hash @@ -1,5 +1,7 @@ -# From https://lists.x.org/archives/xorg-announce/2017-May/002797.html -md5 cc22b232bc78a303371983e1b48794ab xkbcomp-1.4.0.tar.bz2 -sha1 9578a564ff8fcf96581fb52860828fbab8c67b4f xkbcomp-1.4.0.tar.bz2 -sha256 bc69c8748c03c5ad9afdc8dff9db11994dd871b614c65f8940516da6bf61ce6b xkbcomp-1.4.0.tar.bz2 -sha512 c96a63fc2d9a6ac17123297574966c45d0dcfd4ae3d4073ce863c7738d453f4c0a5f7a87c06efdec19f0b270207a7170fe1aa72a73ef1b50f95c7ca262f4882e xkbcomp-1.4.0.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002843.html +md5 07df9790d30f9a369d20a418af784de0 xkbcomp-1.4.1.tar.bz2 +sha1 e7585cdb357b9d20c8f3c8a9d06f7e897934a772 xkbcomp-1.4.1.tar.bz2 +sha256 748dc4cf58ac95684106bd9cf163ac6ab7de9a236faec02a6f4d4006d63a5736 xkbcomp-1.4.1.tar.bz2 +sha512 443397e112f67e2ebc5150ec0dbf0f4a072ea39585d964d2c7cbd0569b7e0ce7d8bed0bc2c2d886343fdb060c941e65b42aac16adf189c66e90849029e278f23 xkbcomp-1.4.1.tar.bz2 +# Locally computed +sha256 f1a78f5796fe2374f2b93e579328a02283e57d2a8316484b31799b12debe7ee3 COPYING diff --git a/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.mk b/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.mk index cc88561892e..369e1f3fe3f 100644 --- a/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.mk +++ b/buildroot/package/x11r7/xapp_xkbcomp/xapp_xkbcomp.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XKBCOMP_VERSION = 1.4.0 +XAPP_XKBCOMP_VERSION = 1.4.1 XAPP_XKBCOMP_SOURCE = xkbcomp-$(XAPP_XKBCOMP_VERSION).tar.bz2 XAPP_XKBCOMP_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XKBCOMP_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xkill/xapp_xkill.hash b/buildroot/package/x11r7/xapp_xkill/xapp_xkill.hash index 22c256d49d5..06029717059 100644 --- a/buildroot/package/x11r7/xapp_xkill/xapp_xkill.hash +++ b/buildroot/package/x11r7/xapp_xkill/xapp_xkill.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-September/002313.html -sha256 88ef2a304f32f24b255e879f03c1dcd3a2be3e71d5562205414f267d919f812e xkill-1.0.4.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002864.html +md5 938177e4472c346cf031c1aefd8934fc xkill-1.0.5.tar.bz2 +sha1 c5ee06b33adb252a41e4f737be6bd47651ff582a xkill-1.0.5.tar.bz2 +sha256 c5f0bb6a95e1ac7c4def8a657496d5d2f21ccd41eb47ef2c9ccb03fb6d6aff6b xkill-1.0.5.tar.bz2 +sha512 4603a1794f114f5cea2c885020c9d073c8421d1e785c99ff6b936ae97139c8dac8020a187b5bbd0fa6d56ed6fab879441b42ba900cc5f2f5a534dafdc86b9249 xkill-1.0.5.tar.bz2 +# Locally computed +sha256 13306c3890e4c8710bc468dee0eba7f9677cd94c7a67d2d81fa932d4f635b21f COPYING diff --git a/buildroot/package/x11r7/xapp_xkill/xapp_xkill.mk b/buildroot/package/x11r7/xapp_xkill/xapp_xkill.mk index 76af1b95cb5..64ddbca6949 100644 --- a/buildroot/package/x11r7/xapp_xkill/xapp_xkill.mk +++ b/buildroot/package/x11r7/xapp_xkill/xapp_xkill.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XKILL_VERSION = 1.0.4 +XAPP_XKILL_VERSION = 1.0.5 XAPP_XKILL_SOURCE = xkill-$(XAPP_XKILL_VERSION).tar.bz2 XAPP_XKILL_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XKILL_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xload/xapp_xload.hash b/buildroot/package/x11r7/xapp_xload/xapp_xload.hash index 418ce556345..99d9cabb0ea 100644 --- a/buildroot/package/x11r7/xapp_xload/xapp_xload.hash +++ b/buildroot/package/x11r7/xapp_xload/xapp_xload.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-August/002285.html -sha256 83f8e6260435f1df2e2e5036bb3325688b79f0b33069ef445eff5058d127e078 xload-1.1.2.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002865.html +md5 29afafdffe97f809d43a41db9dd63f25 xload-1.1.3.tar.bz2 +sha1 fd5053d38551883309863c2a43de2ceffa908a50 xload-1.1.3.tar.bz2 +sha256 f34e4803871d771325cfe52bebd98cc5b6040d3f065184ec73de436f9a375907 xload-1.1.3.tar.bz2 +sha512 8dbc4f0cee7b30d7381be819152b27653d9b0049266e59bde2e2c972a88c4f2bdea766fc407bbdfef15d0aab30fedc756189a1048170a812853133a5094fe7a5 xload-1.1.3.tar.bz2 +# Locally computed +sha256 a09b31d26e4d2781eef1e71f39789f86cad6d81153e72064f45875910fa6258f COPYING diff --git a/buildroot/package/x11r7/xapp_xload/xapp_xload.mk b/buildroot/package/x11r7/xapp_xload/xapp_xload.mk index 364d247a952..b44a51b5fd8 100644 --- a/buildroot/package/x11r7/xapp_xload/xapp_xload.mk +++ b/buildroot/package/x11r7/xapp_xload/xapp_xload.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XLOAD_VERSION = 1.1.2 +XAPP_XLOAD_VERSION = 1.1.3 XAPP_XLOAD_SOURCE = xload-$(XAPP_XLOAD_VERSION).tar.bz2 XAPP_XLOAD_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XLOAD_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.hash b/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.hash index e1cb80b7fa9..a465c3cee36 100644 --- a/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.hash +++ b/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-September/002314.html -sha256 5d9666fcc6c3de210fc70d5a841a404955af709a616fde530fe4e8f7723e3d3d xlsclients-1.1.3.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002866.html +md5 4fa92377e0ddc137cd226a7a87b6b29a xlsclients-1.1.4.tar.bz2 +sha1 175af1c216a1db3de5023ecd6cce186e7693c6e4 xlsclients-1.1.4.tar.bz2 +sha256 773f2af49c7ea2c44fba4213bee64325875c1b3c9bc4bbcd8dac9261751809c1 xlsclients-1.1.4.tar.bz2 +sha512 42fd848d88d3cf31168a37fed63f9f5b60ddc4f36be2956b354e574c93129d75f29e005d6631784380bcef27860b54c64f419ca18ad77f092f4520dec47b10f4 xlsclients-1.1.4.tar.bz2 +# Locally computed +sha256 716d6f1d18cb97cdd4a2ef7b101d944a250ca9de57578a490c038b9aaf950648 COPYING diff --git a/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.mk b/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.mk index 798dce029c7..167748b3389 100644 --- a/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.mk +++ b/buildroot/package/x11r7/xapp_xlsclients/xapp_xlsclients.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XLSCLIENTS_VERSION = 1.1.3 +XAPP_XLSCLIENTS_VERSION = 1.1.4 XAPP_XLSCLIENTS_SOURCE = xlsclients-$(XAPP_XLSCLIENTS_VERSION).tar.bz2 XAPP_XLSCLIENTS_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XLSCLIENTS_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.hash b/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.hash index f3a2603171d..f76369f97ea 100644 --- a/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.hash +++ b/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2015-April/002580.html -sha256 40295bec35077cee93be2e4c26cc00268ed6ace779ae6e97766a866c1e3927fa xlsfonts-1.0.5.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002867.html +md5 5774fd4f518b3f338f2b28f270e04bfc xlsfonts-1.0.6.tar.bz2 +sha1 bf95e46e0897dcb9d197ce20d4fa024b8ace5148 xlsfonts-1.0.6.tar.bz2 +sha256 89b80b3a030006ab6cef717be286c12f2477894b227158b1e6133274f6ebd368 xlsfonts-1.0.6.tar.bz2 +sha512 052a3b1dec23cb20fdfacd4500cb836feb3b888bf568a548ea71deb58a4ba10a1ad5392d658e95272c6d4a1832edf1f19c3de2498b78dca82c43ee52800a30c0 xlsfonts-1.0.6.tar.bz2 +# Locally computed +sha256 dcdf5fa36a652efbe61a21def1301739b0010334ae3f049f1cff433221a8c7a5 COPYING diff --git a/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.mk b/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.mk index 1c42a61a971..0ccd4ea6b08 100644 --- a/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.mk +++ b/buildroot/package/x11r7/xapp_xlsfonts/xapp_xlsfonts.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XLSFONTS_VERSION = 1.0.5 +XAPP_XLSFONTS_VERSION = 1.0.6 XAPP_XLSFONTS_SOURCE = xlsfonts-$(XAPP_XLSFONTS_VERSION).tar.bz2 XAPP_XLSFONTS_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XLSFONTS_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.hash b/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.hash index 5e1f199bd1c..b668edf6a1f 100644 --- a/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.hash +++ b/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-January/002128.html -sha256 bcdf4b461c439bb3ade6e1e41c47d6218b912da8e9396b7ad70856db2f95ab68 xmessage-1.0.4.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002868.html +md5 e50ffae17eeb3943079620cb78f5ce0b xmessage-1.0.5.tar.bz2 +sha1 d3eca72c7173d0d9547c676a16bcec51ca1213a2 xmessage-1.0.5.tar.bz2 +sha256 373dfb81e7a6f06d3d22485a12fcde6e255d58c6dee1bbaeb00c7d0caa9b2029 xmessage-1.0.5.tar.bz2 +sha512 a8423c3986b1576fa67800c315a605a527bb9a8f594ac269a736ae7b91eed0d4d83deb89148197dc3cd3f0e51894146958ce2979f78e97dcdb99c5326e34dabe xmessage-1.0.5.tar.bz2 +# Locally computed +sha256 dfd5427188bd6d6647ad1a9a0644428403c6239f6aa7f9d1a17629d8cc0a4ecd COPYING diff --git a/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.mk b/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.mk index 9c855638e18..bae5da670de 100644 --- a/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.mk +++ b/buildroot/package/x11r7/xapp_xmessage/xapp_xmessage.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XMESSAGE_VERSION = 1.0.4 +XAPP_XMESSAGE_VERSION = 1.0.5 XAPP_XMESSAGE_SOURCE = xmessage-$(XAPP_XMESSAGE_VERSION).tar.bz2 XAPP_XMESSAGE_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XMESSAGE_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xpr/xapp_xpr.hash b/buildroot/package/x11r7/xapp_xpr/xapp_xpr.hash index eaab288ced1..0a1b4f81b98 100644 --- a/buildroot/package/x11r7/xapp_xpr/xapp_xpr.hash +++ b/buildroot/package/x11r7/xapp_xpr/xapp_xpr.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2012-March/001926.html -sha256 fed98df31eb93d3dca4688cb535aabad06be572e70ace3b1685679c18dd86cb5 xpr-1.0.4.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002869.html +md5 eaac255076ea351fd08d76025788d9f9 xpr-1.0.5.tar.bz2 +sha1 0632c7d8632ac9d23f285811aaea805a2956e155 xpr-1.0.5.tar.bz2 +sha256 b936e0f1f8d63f5ad097a0bbdce2e67c34f5d49b7263f32a832ff62d394d1e1f xpr-1.0.5.tar.bz2 +sha512 d5dfb936ec4ad0067d02654dec8e862fe337ff6a2c2f974b2b3a612a829c2e728a0d51e7aba00ed2a94dc96dc50cc69f2c59f522e0635013f5f4f5bb3f4ab967 xpr-1.0.5.tar.bz2 +# Locally computed +sha256 5e8ff9b5d3fc86b5d0bc5957c9ee0aa1a6d0fb9a6b116aae70762b628a0d5069 COPYING diff --git a/buildroot/package/x11r7/xapp_xpr/xapp_xpr.mk b/buildroot/package/x11r7/xapp_xpr/xapp_xpr.mk index b2c4e040c39..b77c5b48446 100644 --- a/buildroot/package/x11r7/xapp_xpr/xapp_xpr.mk +++ b/buildroot/package/x11r7/xapp_xpr/xapp_xpr.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XPR_VERSION = 1.0.4 +XAPP_XPR_VERSION = 1.0.5 XAPP_XPR_SOURCE = xpr-$(XAPP_XPR_VERSION).tar.bz2 XAPP_XPR_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XPR_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xprop/xapp_xprop.hash b/buildroot/package/x11r7/xapp_xprop/xapp_xprop.hash index 4758979c445..a57d375b843 100644 --- a/buildroot/package/x11r7/xapp_xprop/xapp_xprop.hash +++ b/buildroot/package/x11r7/xapp_xprop/xapp_xprop.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-August/002290.html -sha256 9bee88b1025865ad121f72d32576dd3027af1446774aa8300cce3c261d869bc6 xprop-1.2.2.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002870.html +md5 4becb3ddc4674d741487189e4ce3d0b6 xprop-1.2.3.tar.bz2 +sha1 77062c08a23cfca76824b7e8f9860678255d6b1a xprop-1.2.3.tar.bz2 +sha256 d22afb28c86d85fff10a50156a7d0fa930c80ae865d70b26d805fd28a17a521b xprop-1.2.3.tar.bz2 +sha512 ad7987fec11ae19b7adc3b0f683fc393e95155f3b6c753d1d8744aedcfb360452eee5735a4c380152b286905931515f3e1a28676b5531001eb8dd93b7249916a xprop-1.2.3.tar.bz2 +# Locally computed +sha256 f19ff982936cca133b9593a6561c3817512207e0b4c951d0e4eb5956d30d4415 COPYING diff --git a/buildroot/package/x11r7/xapp_xprop/xapp_xprop.mk b/buildroot/package/x11r7/xapp_xprop/xapp_xprop.mk index 40a85773043..d8063d94c8e 100644 --- a/buildroot/package/x11r7/xapp_xprop/xapp_xprop.mk +++ b/buildroot/package/x11r7/xapp_xprop/xapp_xprop.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XPROP_VERSION = 1.2.2 +XAPP_XPROP_VERSION = 1.2.3 XAPP_XPROP_SOURCE = xprop-$(XAPP_XPROP_VERSION).tar.bz2 XAPP_XPROP_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XPROP_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.hash b/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.hash index 4844a09b4af..c729861724f 100644 --- a/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.hash +++ b/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-September/002316.html -sha256 73827b6bbfc9d27ca287d95a1224c306d7053cd7b8156641698d7dc541ca565b xrdb-1.1.0.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002871.html +md5 96f9423eab4d0641c70848d665737d2e xrdb-1.1.1.tar.bz2 +sha1 0d6b1cae357574d565d6e6bc10f6ccf073e1b9dd xrdb-1.1.1.tar.bz2 +sha256 2d23ade7cdbb487996bf77cbb32cbe9bdb34d004748a53de7a4a97660d2217b7 xrdb-1.1.1.tar.bz2 +sha512 20c342004ef911fc4d3ef4ac3ac15d1c30bb946b8156f3a6916c242e470be0cb63261563462fd1e2e07b1a7cc527b8cacf5f913e31b02196629a95043cf8d13f xrdb-1.1.1.tar.bz2 +# Locally computed +sha256 ca1b3e2f9f37c35876b69a9c1c5a7860fae59b7ba87a1d2dc541b722e29b1ecc COPYING diff --git a/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.mk b/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.mk index f32afa45ab3..4b84c64a922 100644 --- a/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.mk +++ b/buildroot/package/x11r7/xapp_xrdb/xapp_xrdb.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XRDB_VERSION = 1.1.0 +XAPP_XRDB_VERSION = 1.1.1 XAPP_XRDB_SOURCE = xrdb-$(XAPP_XRDB_VERSION).tar.bz2 XAPP_XRDB_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XRDB_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.hash b/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.hash index 6d5a53b0090..8eae8ed1bbd 100644 --- a/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.hash +++ b/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-May/002214.html -sha256 3213671b0a8a9d1e8d1d5d9e3fd86842c894dd9acc1be2560eda50bc1fb791d6 xrefresh-1.0.5.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002872.html +md5 c56fa4adbeed1ee5173f464a4c4a61a6 xrefresh-1.0.6.tar.bz2 +sha1 11eb5b3f905631281d2cedd86a0b666bab0d9bdc xrefresh-1.0.6.tar.bz2 +sha256 287dfb9bb7e8d780d07e672e3252150850869cb550958ed5f8401f0835cd6353 xrefresh-1.0.6.tar.bz2 +sha512 361e97fecfc2706d5eeab69df0d4dd4baa55b6783cfddabf51d8561b7c930d71ce6c217e0512c6564208d69b04f89c69ea8c0bfb2e4f6cc25b062b55e4db3674 xrefresh-1.0.6.tar.bz2 +# Locally computed +sha256 4f51c9a91cd277697cbea6604bf4cb240c1ed14cdba82550cb9cac8f1286f663 COPYING diff --git a/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.mk b/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.mk index 8403762c8e3..36a4feaad1d 100644 --- a/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.mk +++ b/buildroot/package/x11r7/xapp_xrefresh/xapp_xrefresh.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XREFRESH_VERSION = 1.0.5 +XAPP_XREFRESH_VERSION = 1.0.6 XAPP_XREFRESH_SOURCE = xrefresh-$(XAPP_XREFRESH_VERSION).tar.bz2 XAPP_XREFRESH_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XREFRESH_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xset/xapp_xset.hash b/buildroot/package/x11r7/xapp_xset/xapp_xset.hash index f9ff3920c67..62f951ba701 100644 --- a/buildroot/package/x11r7/xapp_xset/xapp_xset.hash +++ b/buildroot/package/x11r7/xapp_xset/xapp_xset.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-August/002291.html -sha256 4382f4fb29b88647e13f3b4bc29263134270747fc159cfc5f7e3af23588c8063 xset-1.2.3.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002873.html +md5 70ea7bc7bacf1a124b1692605883f620 xset-1.2.4.tar.bz2 +sha1 41a857f30ff5bb0dfbda1549bb703984344ea228 xset-1.2.4.tar.bz2 +sha256 e4fd95280df52a88e9b0abc1fee11dcf0f34fc24041b9f45a247e52df941c957 xset-1.2.4.tar.bz2 +sha512 f24714c9a82081a09d3054bbad98553de9366992f22eaf3e2bcadbb58fad1d3dad2547fef6fa9898d8a9df064573c29df9d82a5c801fa92248604c95f65dc83d xset-1.2.4.tar.bz2 +# Locally computed +sha256 6bfc619b6d37dd0e6ca575edcb3a05194136e04d1d9989b8e14e6f7850587382 COPYING diff --git a/buildroot/package/x11r7/xapp_xset/xapp_xset.mk b/buildroot/package/x11r7/xapp_xset/xapp_xset.mk index 157cd229a7c..9ead55a20ff 100644 --- a/buildroot/package/x11r7/xapp_xset/xapp_xset.mk +++ b/buildroot/package/x11r7/xapp_xset/xapp_xset.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XSET_VERSION = 1.2.3 +XAPP_XSET_VERSION = 1.2.4 XAPP_XSET_SOURCE = xset-$(XAPP_XSET_VERSION).tar.bz2 XAPP_XSET_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XSET_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.hash b/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.hash index 89a1abe4541..7cbabb5ceff 100644 --- a/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.hash +++ b/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-January/002149.html -sha256 ba215daaa78c415fce11b9e58c365d03bb602eaa5ea916578d76861a468cc3d9 xsetroot-1.1.1.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002874.html +md5 5fe769c8777a6e873ed1305e4ce2c353 xsetroot-1.1.2.tar.bz2 +sha1 42ab81761823b44974feab86477007c49dbace50 xsetroot-1.1.2.tar.bz2 +sha256 10c442ba23591fb5470cea477a0aa5f679371f4f879c8387a1d9d05637ae417c xsetroot-1.1.2.tar.bz2 +sha512 0b9df1b72305e5c24f1e1664578aa4411a5ffcdc5d318458117594e641f01c34700205b0d16c08abf4a8106d36128ccdbe1ea1f1035fce9018d6b52801a8b72b xsetroot-1.1.2.tar.bz2 +# Locally computed +sha256 48e9c9572e0dc1c14b93b753542f780e7751dd7f035816374d8a8be0211a4520 COPYING diff --git a/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.mk b/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.mk index 9000867c842..98ba344cfa8 100644 --- a/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.mk +++ b/buildroot/package/x11r7/xapp_xsetroot/xapp_xsetroot.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XSETROOT_VERSION = 1.1.1 +XAPP_XSETROOT_VERSION = 1.1.2 XAPP_XSETROOT_SOURCE = xsetroot-$(XAPP_XSETROOT_VERSION).tar.bz2 XAPP_XSETROOT_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XSETROOT_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xsm/xapp_xsm.hash b/buildroot/package/x11r7/xapp_xsm/xapp_xsm.hash index aef9e558ba6..eda231fe931 100644 --- a/buildroot/package/x11r7/xapp_xsm/xapp_xsm.hash +++ b/buildroot/package/x11r7/xapp_xsm/xapp_xsm.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-February/002163.html -sha256 ad9dee2847a683841f73518a83014b0accae60e9eff7e96752a0dbc412867b4a xsm-1.0.3.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002875.html +md5 bd32c14f09d58f46084b6a8f20e6e8f1 xsm-1.0.4.tar.bz2 +sha1 dd41234e276fe8b2d0a853879568f73b6d98812a xsm-1.0.4.tar.bz2 +sha256 9934b6893a4e52cf7435368fc8d425c371b5e32d96e420ead30166eb82d64425 xsm-1.0.4.tar.bz2 +sha512 d4e4da7c309a4eae126d2b58a13684f4dbc06b09f76dde9c89c707375df2843614f3d83bc44f9cd02f239200db3397abd86796dca0dbafc69f60482b0af5a176 xsm-1.0.4.tar.bz2 +# Locally computed +sha256 27d8cbdcde7a0bd062ce49cdf8c672201452a64e3e6823f09b1beffe2c4b8eff COPYING diff --git a/buildroot/package/x11r7/xapp_xsm/xapp_xsm.mk b/buildroot/package/x11r7/xapp_xsm/xapp_xsm.mk index d4d240774e2..6d752b4d156 100644 --- a/buildroot/package/x11r7/xapp_xsm/xapp_xsm.mk +++ b/buildroot/package/x11r7/xapp_xsm/xapp_xsm.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XSM_VERSION = 1.0.3 +XAPP_XSM_VERSION = 1.0.4 XAPP_XSM_SOURCE = xsm-$(XAPP_XSM_VERSION).tar.bz2 XAPP_XSM_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XSM_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xwd/xapp_xwd.hash b/buildroot/package/x11r7/xapp_xwd/xapp_xwd.hash index 1d9b4d5cffe..606618bcc64 100644 --- a/buildroot/package/x11r7/xapp_xwd/xapp_xwd.hash +++ b/buildroot/package/x11r7/xapp_xwd/xapp_xwd.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-August/002292.html -sha256 3bb396a2268d78de4b1c3e5237a85f7849d3434e87b3cd1f4d57eef614227d79 xwd-1.0.6.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002876.html +md5 11794a8eba6d295a192a8975287fd947 xwd-1.0.7.tar.bz2 +sha1 65ce0617be29687cf6082c3a0e85d15a0dcccda9 xwd-1.0.7.tar.bz2 +sha256 cd6815b8b9e0b98e284d3d732fb12162159cb9dcee4f45a7d4c0bd8b308a6794 xwd-1.0.7.tar.bz2 +sha512 6fdb0a115ae505169bbc7fcc45580daf26bced2e26e0bf9a877636016038931a8386e8edcbe015f4024be508d0461906adef4834cf22a445e3c282f0b8fad17e xwd-1.0.7.tar.bz2 +# Locally computed +sha256 7cfda56afd92a1ecd2f23bd0064e01b5141053390d854785504adfe2c0fbd946 COPYING diff --git a/buildroot/package/x11r7/xapp_xwd/xapp_xwd.mk b/buildroot/package/x11r7/xapp_xwd/xapp_xwd.mk index 0cda34ee260..4d7ed0f8771 100644 --- a/buildroot/package/x11r7/xapp_xwd/xapp_xwd.mk +++ b/buildroot/package/x11r7/xapp_xwd/xapp_xwd.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XWD_VERSION = 1.0.6 +XAPP_XWD_VERSION = 1.0.7 XAPP_XWD_SOURCE = xwd-$(XAPP_XWD_VERSION).tar.bz2 XAPP_XWD_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XWD_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.hash b/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.hash index 4b891a20841..e3882584c3e 100644 --- a/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.hash +++ b/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-May/002215.html -sha256 218eb0ea95bd8de7903dfaa26423820c523ad1598be0751d2d8b6a2c23b23ff8 xwininfo-1.1.3.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002877.html +md5 9a505b91ae7160bbdec360968d060c83 xwininfo-1.1.4.tar.bz2 +sha1 7364e79d1de7bb612dd98c336c649648c6c081ca xwininfo-1.1.4.tar.bz2 +sha256 839498aa46b496492a5c65cd42cd2e86e0da88149b0672e90cb91648f8cd5b01 xwininfo-1.1.4.tar.bz2 +sha512 d3ab103a0a311e08d1eabc4346750c21eb7d2fbcdc27cab0989a2624b9cd488911614fcf9832603353450114b1231a8f8262cab16e090a0d458d83ec7b6b959b xwininfo-1.1.4.tar.bz2 +# Locally computed +sha256 443d675237c023a47e4886506b72796afbb2633394812027f91d6e8fa433b2af COPYING diff --git a/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.mk b/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.mk index 8ae5961ee41..7da881a9fce 100644 --- a/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.mk +++ b/buildroot/package/x11r7/xapp_xwininfo/xapp_xwininfo.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XWININFO_VERSION = 1.1.3 +XAPP_XWININFO_VERSION = 1.1.4 XAPP_XWININFO_SOURCE = xwininfo-$(XAPP_XWININFO_VERSION).tar.bz2 XAPP_XWININFO_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XWININFO_LICENSE = MIT diff --git a/buildroot/package/x11r7/xapp_xwud/xapp_xwud.hash b/buildroot/package/x11r7/xapp_xwud/xapp_xwud.hash index 44e9c607530..e42057819d9 100644 --- a/buildroot/package/x11r7/xapp_xwud/xapp_xwud.hash +++ b/buildroot/package/x11r7/xapp_xwud/xapp_xwud.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2012-March/001927.html -sha256 d6b3a09ccfe750868e26bd2384900ab5ff0d434f7f40cd272a50eda8aaa1f8bd xwud-1.0.4.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002878.html +md5 79972093bb0766fcd0223b2bd6d11932 xwud-1.0.5.tar.bz2 +sha1 a85d84a1b81f8e667ea6ac126d447590c93eb079 xwud-1.0.5.tar.bz2 +sha256 99997051f8a892313f22edf41dab45864e86e7062ee9012d5dbb6a40fc6b10a9 xwud-1.0.5.tar.bz2 +sha512 27a0ce7481978ae6cd94b0d94374af72185e270d68f2496620e148bb00945427c4827138d9efc48745e6382e3da3390ed0cdff7dbd02dcf9706e8ecccae97184 xwud-1.0.5.tar.bz2 +# Locally computed +sha256 be3db9aa060c462490a8c1ed44a4d059b32bba359f4688b1ecf3f794d363539e COPYING diff --git a/buildroot/package/x11r7/xapp_xwud/xapp_xwud.mk b/buildroot/package/x11r7/xapp_xwud/xapp_xwud.mk index 60afd862875..2c2e1ad497e 100644 --- a/buildroot/package/x11r7/xapp_xwud/xapp_xwud.mk +++ b/buildroot/package/x11r7/xapp_xwud/xapp_xwud.mk @@ -4,7 +4,7 @@ # ################################################################################ -XAPP_XWUD_VERSION = 1.0.4 +XAPP_XWUD_VERSION = 1.0.5 XAPP_XWUD_SOURCE = xwud-$(XAPP_XWUD_VERSION).tar.bz2 XAPP_XWUD_SITE = http://xorg.freedesktop.org/releases/individual/app XAPP_XWUD_LICENSE = MIT diff --git a/buildroot/package/x11r7/xcb-proto/0001-Make-whitespace-use-consistent.patch b/buildroot/package/x11r7/xcb-proto/0001-Make-whitespace-use-consistent.patch deleted file mode 100644 index 67adada5058..00000000000 --- a/buildroot/package/x11r7/xcb-proto/0001-Make-whitespace-use-consistent.patch +++ /dev/null @@ -1,212 +0,0 @@ -From ea7a3ac6c658164690e0febb55f4467cb9e0bcac Mon Sep 17 00:00:00 2001 -From: Thomas Klausner -Date: Thu, 19 May 2016 17:30:04 +0200 -Subject: [PATCH] Make whitespace use consistent. - -At least python-3.5.x complains about this forcefully. - -Signed-off-by: Thomas Klausner -Signed-off-by: Uli Schlachter -Signed-off-by: Arnout Vandecappelle (Essensium/Mind) ---- - xcbgen/align.py | 96 ++++++++++++++++++++++++++++----------------------------- - 1 file changed, 48 insertions(+), 48 deletions(-) - -diff --git a/xcbgen/align.py b/xcbgen/align.py -index 5e31838..d4c12ee 100644 ---- a/xcbgen/align.py -+++ b/xcbgen/align.py -@@ -16,12 +16,12 @@ class Alignment(object): - return self.align == other.align and self.offset == other.offset - - def __str__(self): -- return "(align=%d, offset=%d)" % (self.align, self.offset) -+ return "(align=%d, offset=%d)" % (self.align, self.offset) - - @staticmethod - def for_primitive_type(size): -- # compute the required start_alignment based on the size of the type -- if size % 8 == 0: -+ # compute the required start_alignment based on the size of the type -+ if size % 8 == 0: - # do 8-byte primitives require 8-byte alignment in X11? - return Alignment(8,0) - elif size % 4 == 0: -@@ -33,7 +33,7 @@ class Alignment(object): - - - def align_after_fixed_size(self, size): -- new_offset = (self.offset + size) % self.align -+ new_offset = (self.offset + size) % self.align - return Alignment(self.align, new_offset) - - -@@ -41,7 +41,7 @@ class Alignment(object): - ''' - Assuming the given external_align, checks whether - self is fulfilled for all cases. -- Returns True if yes, False otherwise. -+ Returns True if yes, False otherwise. - ''' - if self.align == 1 and self.offset == 0: - # alignment 1 with offset 0 is always fulfilled -@@ -55,9 +55,9 @@ class Alignment(object): - # the external align guarantees less alignment -> not guaranteed - return False - -- if external_align.align % self.align != 0: -+ if external_align.align % self.align != 0: - # the external align cannot be divided by our align -- # -> not guaranteed -+ # -> not guaranteed - # (this can only happen if there are alignments that are not - # a power of 2, which is highly discouraged. But better be - # safe and check for it) -@@ -72,7 +72,7 @@ class Alignment(object): - - def combine_with(self, other): - # returns the alignment that is guaranteed when -- # both, self or other, can happen -+ # both, self or other, can happen - new_align = gcd(self.align, other.align) - new_offset_candidate1 = self.offset % new_align - new_offset_candidate2 = other.offset % new_align -@@ -83,8 +83,8 @@ class Alignment(object): - new_align = gcd(new_align, offset_diff) - new_offset_candidate1 = self.offset % new_align - new_offset_candidate2 = other.offset % new_align -- assert new_offset_candidate1 == new_offset_candidate2 -- new_offset = new_offset_candidate1 -+ assert new_offset_candidate1 == new_offset_candidate2 -+ new_offset = new_offset_candidate1 - # return the result - return Alignment(new_align, new_offset) - -@@ -92,44 +92,44 @@ class Alignment(object): - class AlignmentLog(object): - - def __init__(self): -- self.ok_list = [] -- self.fail_list = [] -- self.verbosity = 1 -+ self.ok_list = [] -+ self.fail_list = [] -+ self.verbosity = 1 - - def __str__(self): -- result = "" -+ result = "" - -- # output the OK-list -- for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list: -- stacksize = len(callstack) -+ # output the OK-list -+ for (align_before, field_name, type_obj, callstack, align_after) in self.ok_list: -+ stacksize = len(callstack) - indent = ' ' * stacksize -- if self.ok_callstack_is_relevant(callstack): -+ if self.ok_callstack_is_relevant(callstack): - if field_name is None or field_name == "": -- result += (" %sok: %s:\n\t%sbefore: %s, after: %s\n" -- % (indent, str(type_obj), indent, str(align_before), str(align_after))) -- else: -- result += (" %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n" -- % (indent, str(field_name), str(type_obj), -- indent, str(align_before), str(align_after))) -+ result += (" %sok: %s:\n\t%sbefore: %s, after: %s\n" -+ % (indent, str(type_obj), indent, str(align_before), str(align_after))) -+ else: -+ result += (" %sok: field \"%s\" in %s:\n\t%sbefore: %s, after: %s\n" -+ % (indent, str(field_name), str(type_obj), -+ indent, str(align_before), str(align_after))) - if self.verbosity >= 1: -- result += self.callstack_to_str(indent, callstack) -+ result += self.callstack_to_str(indent, callstack) - -- # output the fail-list -- for (align_before, field_name, type_obj, callstack, reason) in self.fail_list: -- stacksize = len(callstack) -+ # output the fail-list -+ for (align_before, field_name, type_obj, callstack, reason) in self.fail_list: -+ stacksize = len(callstack) - indent = ' ' * stacksize -- if field_name is None or field_name == "": -- result += (" %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n" -- % (indent, str(align_before), indent, str(type_obj), indent, reason)) -- else: -- result += (" %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n" -- % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason)) -+ if field_name is None or field_name == "": -+ result += (" %sfail: align %s is incompatible with\n\t%s%s\n\t%sReason: %s\n" -+ % (indent, str(align_before), indent, str(type_obj), indent, reason)) -+ else: -+ result += (" %sfail: align %s is incompatible with\n\t%sfield \"%s\" in %s\n\t%sReason: %s\n" -+ % (indent, str(align_before), indent, str(field_name), str(type_obj), indent, reason)) - - if self.verbosity >= 1: -- result += self.callstack_to_str(indent, callstack) -+ result += self.callstack_to_str(indent, callstack) - - -- return result -+ return result - - - def callstack_to_str(self, indent, callstack): -@@ -137,41 +137,41 @@ class AlignmentLog(object): - for stack_elem in callstack: - result += "\t %s%s\n" % (indent, str(stack_elem)) - result += "\t%s]\n" % indent -- return result -+ return result - - - def ok_callstack_is_relevant(self, ok_callstack): - # determine whether an ok callstack is relevant for logging -- if self.verbosity >= 2: -- return True -+ if self.verbosity >= 2: -+ return True - - # empty callstacks are always relevant -- if len(ok_callstack) == 0: -+ if len(ok_callstack) == 0: - return True - -- # check whether the ok_callstack is a subset or equal to a fail_callstack -+ # check whether the ok_callstack is a subset or equal to a fail_callstack - for (align_before, field_name, type_obj, fail_callstack, reason) in self.fail_list: - if len(ok_callstack) <= len(fail_callstack): - zipped = zip(ok_callstack, fail_callstack[:len(ok_callstack)]) -- is_subset = all([i == j for i, j in zipped]) -- if is_subset: -+ is_subset = all([i == j for i, j in zipped]) -+ if is_subset: - return True - - return False - - - def ok(self, align_before, field_name, type_obj, callstack, align_after): -- self.ok_list.append((align_before, field_name, type_obj, callstack, align_after)) -+ self.ok_list.append((align_before, field_name, type_obj, callstack, align_after)) - - def fail(self, align_before, field_name, type_obj, callstack, reason): -- self.fail_list.append((align_before, field_name, type_obj, callstack, reason)) -+ self.fail_list.append((align_before, field_name, type_obj, callstack, reason)) - - def append(self, other): -- self.ok_list.extend(other.ok_list) -- self.fail_list.extend(other.fail_list) -+ self.ok_list.extend(other.ok_list) -+ self.fail_list.extend(other.fail_list) - - def ok_count(self): -- return len(self.ok_list) -+ return len(self.ok_list) - - - --- -2.8.1 - diff --git a/buildroot/package/x11r7/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch b/buildroot/package/x11r7/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch deleted file mode 100644 index 6fa5d48de2f..00000000000 --- a/buildroot/package/x11r7/xcb-proto/0002-print-is-a-function-and-needs-parentheses.patch +++ /dev/null @@ -1,70 +0,0 @@ -From bea5e1c85bdc0950913790364e18228f20395a3d Mon Sep 17 00:00:00 2001 -From: Thomas Klausner -Date: Thu, 19 May 2016 17:30:05 +0200 -Subject: print() is a function and needs parentheses. - -Fixes build with python-3.x. - -Signed-off-by: Thomas Klausner -Signed-off-by: Uli Schlachter -[yann.morin.1998@free.fr: backport from upstream] -Signed-off-by: "Yann E. MORIN" - -diff --git a/xcbgen/xtypes.py b/xcbgen/xtypes.py -index c3b5758..b83b119 100644 ---- a/xcbgen/xtypes.py -+++ b/xcbgen/xtypes.py -@@ -501,7 +501,7 @@ class ComplexType(Type): - int(required_start_align_element.get('align', "4"), 0), - int(required_start_align_element.get('offset', "0"), 0)) - if verbose_align_log: -- print "Explicit start-align for %s: %s\n" % (self, self.required_start_align) -+ print ("Explicit start-align for %s: %s\n" % (self, self.required_start_align)) - - def resolve(self, module): - if self.resolved: -@@ -592,7 +592,7 @@ class ComplexType(Type): - if verbose_align_log: - print ("calc_required_start_align: %s has start-align %s" - % (str(self), str(self.required_start_align))) -- print "Details:\n" + str(log) -+ print ("Details:\n" + str(log)) - if self.required_start_align.offset != 0: - print (("WARNING: %s\n\thas start-align with non-zero offset: %s" - + "\n\tsuggest to add explicit definition with:" -@@ -619,12 +619,12 @@ class ComplexType(Type): - for offset in range(0,align): - align_candidate = Alignment(align, offset) - if verbose_align_log: -- print "trying %s for %s" % (str(align_candidate), str(self)) -+ print ("trying %s for %s" % (str(align_candidate), str(self))) - my_log = AlignmentLog() - if self.is_possible_start_align(align_candidate, callstack, my_log): - log.append(my_log) - if verbose_align_log: -- print "found start-align %s for %s" % (str(align_candidate), str(self)) -+ print ("found start-align %s for %s" % (str(align_candidate), str(self))) - return align_candidate - else: - my_ok_count = my_log.ok_count() -@@ -641,7 +641,7 @@ class ComplexType(Type): - # none of the candidates applies - # this type has illegal internal aligns for all possible start_aligns - if verbose_align_log: -- print "didn't find start-align for %s" % str(self) -+ print ("didn't find start-align for %s" % str(self)) - log.append(best_log) - return None - -@@ -900,7 +900,7 @@ class SwitchType(ComplexType): - # aux function for unchecked_get_alignment_after - def get_align_for_selected_case_field(self, case_field, start_align, callstack, log): - if verbose_align_log: -- print "get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field)) -+ print ("get_align_for_selected_case_field: %s, case_field = %s" % (str(self), str(case_field))) - total_align = start_align - for field in self.bitcases: - my_callstack = callstack[:] --- -cgit v0.10.2 - diff --git a/buildroot/package/x11r7/xcb-proto/xcb-proto.hash b/buildroot/package/x11r7/xcb-proto/xcb-proto.hash index 3f43485492c..b2ef3ee20b8 100644 --- a/buildroot/package/x11r7/xcb-proto/xcb-proto.hash +++ b/buildroot/package/x11r7/xcb-proto/xcb-proto.hash @@ -1,2 +1,7 @@ -# From https://lists.x.org/archives/xorg-announce/2016-May/002693.html -sha256 5922aba4c664ab7899a29d92ea91a87aa4c1fc7eb5ee550325c3216c480a4906 xcb-proto-1.12.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002852.html +md5 abe9aa4886138150bbc04ae4f29b90e3 xcb-proto-1.13.tar.bz2 +sha1 f7fa35ab59af18cecadbe83fe705281dcfd82ffd xcb-proto-1.13.tar.bz2 +sha256 7b98721e669be80284e9bbfeab02d2d0d54cd11172b72271e47a2fe875e2bde1 xcb-proto-1.13.tar.bz2 +sha512 002aa2aa0ad503977e03419c6f136f1e3aa8c787916830ce6d6be8f81ca99edc1d8fc5f71ce8c592b490cc767bf6567695f0bafe55fe3f743076bcddbaac07f7 xcb-proto-1.13.tar.bz2 +# Locally computed +sha256 c5ffbfeaa501071ceeb97b7de2c0d703fdaa35de01c0fb6cbac1c28453a3e9fd COPYING diff --git a/buildroot/package/x11r7/xcb-proto/xcb-proto.mk b/buildroot/package/x11r7/xcb-proto/xcb-proto.mk index 84555d07f0f..b85dad7f2c7 100644 --- a/buildroot/package/x11r7/xcb-proto/xcb-proto.mk +++ b/buildroot/package/x11r7/xcb-proto/xcb-proto.mk @@ -4,7 +4,7 @@ # ################################################################################ -XCB_PROTO_VERSION = 1.12 +XCB_PROTO_VERSION = 1.13 XCB_PROTO_SOURCE = xcb-proto-$(XCB_PROTO_VERSION).tar.bz2 XCB_PROTO_SITE = http://xcb.freedesktop.org/dist XCB_PROTO_LICENSE = MIT diff --git a/buildroot/package/x11r7/xcb-util/xcb-util.hash b/buildroot/package/x11r7/xcb-util/xcb-util.hash index a9b8be25ab1..c088a62bab0 100644 --- a/buildroot/package/x11r7/xcb-util/xcb-util.hash +++ b/buildroot/package/x11r7/xcb-util/xcb-util.hash @@ -1,2 +1,3 @@ # locally computed -sha256 c611259c0ab20fd76f79f48f4684843c18ea9c967eba78a45e8b3636315c18c4 xcb-util-0.3.9.tar.bz2 +sha256 46e49469cb3b594af1d33176cd7565def2be3fa8be4371d62271fabb5eae50e9 xcb-util-0.4.0.tar.bz2 +sha256 325b64f0b0284e08bbb7a78ae3e55c1edc2a7cd77f603225ae4b8ffc35423e37 COPYING diff --git a/buildroot/package/x11r7/xcb-util/xcb-util.mk b/buildroot/package/x11r7/xcb-util/xcb-util.mk index 7b913e2bb5d..bb73530f944 100644 --- a/buildroot/package/x11r7/xcb-util/xcb-util.mk +++ b/buildroot/package/x11r7/xcb-util/xcb-util.mk @@ -4,13 +4,11 @@ # ################################################################################ -XCB_UTIL_VERSION = 0.3.9 +XCB_UTIL_VERSION = 0.4.0 XCB_UTIL_SOURCE = xcb-util-$(XCB_UTIL_VERSION).tar.bz2 XCB_UTIL_SITE = http://xcb.freedesktop.org/dist - -# unfortunately, no license file XCB_UTIL_LICENSE = MIT - +XCB_UTIL_LICENSE_FILES = COPYING XCB_UTIL_INSTALL_STAGING = YES XCB_UTIL_DEPENDENCIES = libxcb diff --git a/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.hash b/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.hash index 3e5fb32896c..05d37288ad9 100644 --- a/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.hash +++ b/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2010-December/001563.html -sha1 578afff7e4912192b524c25254cf7f54c16e57d8 xbitmaps-1.1.1.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002881.html +md5 cedeef095918aca86da79a2934e03daf xbitmaps-1.1.2.tar.bz2 +sha1 1cb0e485a66280e9a64b48426140b8a0de9cf169 xbitmaps-1.1.2.tar.bz2 +sha256 b9f0c71563125937776c8f1f25174ae9685314cbd130fb4c2efce811981e07ee xbitmaps-1.1.2.tar.bz2 +sha512 eed5e2fce9fc6c532984e6ed1262e440591e311ca6c61a7fe7a5c877df84bfc2d7aff388fb9c894fc098785b8e5352f0bd7c918252247a040cf123874847450d xbitmaps-1.1.2.tar.bz2 +# Locally computed +sha256 e121ec6605558ee021674d33b1ab9306e16b9ea7d30453df42286556247be17a COPYING diff --git a/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.mk b/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.mk index 9767f2c143e..e9545abaec6 100644 --- a/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.mk +++ b/buildroot/package/x11r7/xdata_xbitmaps/xdata_xbitmaps.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDATA_XBITMAPS_VERSION = 1.1.1 +XDATA_XBITMAPS_VERSION = 1.1.2 XDATA_XBITMAPS_SOURCE = xbitmaps-$(XDATA_XBITMAPS_VERSION).tar.bz2 XDATA_XBITMAPS_SITE = http://xorg.freedesktop.org/releases/individual/data XDATA_XBITMAPS_LICENSE = MIT diff --git a/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.hash b/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.hash index e59c8486418..6a8c99599f5 100644 --- a/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.hash +++ b/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2013-July/002271.html -sha256 e3fd2c05b9df0d88a3d1192c02143295744685f4f9a03db116e206698331bb86 xcursor-themes-1.0.4.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002882.html +md5 34a93df23e4aa9ee2832a4af33da3ceb xcursor-themes-1.0.5.tar.bz2 +sha1 6caae6cdb441003a42305f964c32bac21c34626f xcursor-themes-1.0.5.tar.bz2 +sha256 ae8381d39096598f7fe93fbd3ab079d93347a989f29e017f399ffcd20c8e1272 xcursor-themes-1.0.5.tar.bz2 +sha512 f41e1de0d5deafba33106dcad81576d1888fca052a962c202f2221104aa2d8236b066d8d8fc3dcfbdc166db63f84e60980dfc54059b20a26c7415de71ed07a5b xcursor-themes-1.0.5.tar.bz2 +# Locally computed +sha256 e437aed89c3440a9fe7e19968a3f2eeb97041ef6c9616837a3fd42d0874fc0e6 COPYING diff --git a/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.mk b/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.mk index a2987a0ff25..048291008bb 100644 --- a/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.mk +++ b/buildroot/package/x11r7/xdata_xcursor-themes/xdata_xcursor-themes.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDATA_XCURSOR_THEMES_VERSION = 1.0.4 +XDATA_XCURSOR_THEMES_VERSION = 1.0.5 XDATA_XCURSOR_THEMES_SOURCE = xcursor-themes-$(XDATA_XCURSOR_THEMES_VERSION).tar.bz2 XDATA_XCURSOR_THEMES_SITE = http://xorg.freedesktop.org/releases/individual/data XDATA_XCURSOR_THEMES_LICENSE = MIT diff --git a/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash b/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash index 43b8f78f966..1c260d0b432 100644 --- a/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash +++ b/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.hash @@ -1,5 +1,7 @@ -# From https://lists.x.org/archives/xorg-announce/2017-September/002807.html -md5 da47ef62eab1d0e922a8fa929ff81758 xf86-input-libinput-0.26.0.tar.bz2 -sha1 3f55b8a5d4ff51d4f0cfe3fe9ace66227193abd4 xf86-input-libinput-0.26.0.tar.bz2 -sha256 abca558fc2226f295691f1cf3412d4c0edeaa439f677ca25b5c9fab310d2387b xf86-input-libinput-0.26.0.tar.bz2 -sha512 b52a27e916f7e86576500ef2bc3ce640676f5a710543755865a723628c0e01a575989460853bac184ed696961e3f8fca72ecba8ad4625be8cd9e31f9a55f5e97 xf86-input-libinput-0.26.0.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-April/002889.html +md5 bdad198a7a9f2ce2c1f90d5e6760462b xf86-input-libinput-0.27.1.tar.bz2 +sha1 70ba045975b6484f16d11b32fbbb7e7194d2e0fd xf86-input-libinput-0.27.1.tar.bz2 +sha256 d4ad8dc5ad6f962a3f15f61ba9e9f8e37fa0b57eee9f484e2bd721d60ca72ee6 xf86-input-libinput-0.27.1.tar.bz2 +sha512 01379f5d71bf39214c4dff428173512df57fd12e782f3fcde757be923aa0dbf4e010a0395a81bd8e4fb518edc7e05ca1ee64b1e313eb4df5d4990315580609a1 xf86-input-libinput-0.27.1.tar.bz2 +# Locally computed +sha256 b808a8a077995380c6064bec41616f98546b0b2e79bb7f3d0247d290e275b396 COPYING diff --git a/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk b/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk index dab24b12351..1723b3fcf8d 100644 --- a/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk +++ b/buildroot/package/x11r7/xdriver_xf86-input-libinput/xdriver_xf86-input-libinput.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_INPUT_LIBINPUT_VERSION = 0.26.0 +XDRIVER_XF86_INPUT_LIBINPUT_VERSION = 0.27.1 XDRIVER_XF86_INPUT_LIBINPUT_SOURCE = xf86-input-libinput-$(XDRIVER_XF86_INPUT_LIBINPUT_VERSION).tar.bz2 XDRIVER_XF86_INPUT_LIBINPUT_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_INPUT_LIBINPUT_LICENSE = MIT diff --git a/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash b/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash index b5910f3c0fe..d0fae63e619 100644 --- a/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash +++ b/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.hash @@ -1,5 +1,7 @@ -# From https://lists.x.org/archives/xorg-announce/2017-September/002805.html -md5 15a54f0a7870a57e3f611c9114924137 xf86-video-amdgpu-1.4.0.tar.bz2 -sha1 d9971cc6177095219a6687328aef25a72df3dd9d xf86-video-amdgpu-1.4.0.tar.bz2 -sha256 f8cac4bf3dd795b93cc337e5c0c62618026f597890a10d996f09c73eb88ba67c xf86-video-amdgpu-1.4.0.tar.bz2 -sha512 cae6417a45f6b981e007e080486083f1c38eaca58c6e331b04bbf46c86f23394742a722ae0d798d8dcad66879e99d90e57f04ae9ccb198f3ed26ec745878ccc2 xf86-video-amdgpu-1.4.0.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002883.html +md5 d8368d204cb98d4387c8890562db1143 xf86-video-amdgpu-18.0.1.tar.bz2 +sha1 a9c7125eae9870f26afa5167d5683f8d5e1b43c0 xf86-video-amdgpu-18.0.1.tar.bz2 +sha256 7484682ccb403b3ca9e26d1c980572f08cdfa3469e2b2c9a9affc3d51b52691b xf86-video-amdgpu-18.0.1.tar.bz2 +sha512 eb3b76240d4e5084d68b5063b5b19ad5f5bb1f93ea9929301d9e17a48ddc1cb713b76529cb93d133b3547fe78ae8a4455f6b15f6ddf88c29349f82bb1a0db1c4 xf86-video-amdgpu-18.0.1.tar.bz2 +# Locally computed +sha256 58847c8e97190c401afa84b3f0b8b147379c876a184e99af2cb51bfd40ac8936 COPYING diff --git a/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk b/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk index 50e5310e46c..5c1fb3f8440 100644 --- a/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk +++ b/buildroot/package/x11r7/xdriver_xf86-video-amdgpu/xdriver_xf86-video-amdgpu.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_AMDGPU_VERSION = 1.4.0 +XDRIVER_XF86_VIDEO_AMDGPU_VERSION = 18.0.1 XDRIVER_XF86_VIDEO_AMDGPU_SOURCE = xf86-video-amdgpu-$(XDRIVER_XF86_VIDEO_AMDGPU_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_AMDGPU_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_AMDGPU_LICENSE = MIT diff --git a/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash b/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash index 117c5749ff2..d37096e9e46 100644 --- a/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash +++ b/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.hash @@ -1,5 +1,7 @@ -# From https://lists.x.org/archives/xorg-announce/2017-September/002806.html -md5 0ff538f78ae82ccce384dadf7a705863 xf86-video-ati-7.10.0.tar.bz2 -sha1 38e535ecc8445c1b9464ac34db959337929887f7 xf86-video-ati-7.10.0.tar.bz2 -sha256 ee51d642e3105cb5424f02622dc2966b87b42d498bb34104a70fcf6d4a8f4e79 xf86-video-ati-7.10.0.tar.bz2 -sha512 1f2f4af1d299af62644693e6fbc47a5078c9bc5e7887a1ac217121ef2fd29d8c9f50a8d9be9ddb0887d0b49141bb33484f82c1313a472ad6867266b53b4a11ad xf86-video-ati-7.10.0.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002884.html +md5 40e7c0a5a69aba3d84e0958f58705ea7 xf86-video-ati-18.0.1.tar.bz2 +sha1 b5a0b6a2fa839d668a3fb90280fede95f0bc130d xf86-video-ati-18.0.1.tar.bz2 +sha256 72ea3b8127d4550b64f797457f5a7851a541fa4ee2cc3f345b6c1886b81714a0 xf86-video-ati-18.0.1.tar.bz2 +sha512 b468a78503a596bbf71a1b91b231ce1fa32908f619ff2dfe249352d046696a3641f2a9ff065e32545fff77100134b4b237591215e78ef885b6509d6b16112d14 xf86-video-ati-18.0.1.tar.bz2 +# Locally computed +sha256 58847c8e97190c401afa84b3f0b8b147379c876a184e99af2cb51bfd40ac8936 COPYING diff --git a/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk b/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk index f8b8f70cb65..8726695399c 100644 --- a/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk +++ b/buildroot/package/x11r7/xdriver_xf86-video-ati/xdriver_xf86-video-ati.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_ATI_VERSION = 7.10.0 +XDRIVER_XF86_VIDEO_ATI_VERSION = 18.0.1 XDRIVER_XF86_VIDEO_ATI_SOURCE = xf86-video-ati-$(XDRIVER_XF86_VIDEO_ATI_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_ATI_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_ATI_LICENSE = MIT diff --git a/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.hash b/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.hash new file mode 100644 index 00000000000..1852540cb3d --- /dev/null +++ b/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.hash @@ -0,0 +1,3 @@ +# Locally computed +sha256 e3a107fadcdeef35830a12a305b09dfa793a33a54930a0ecd5e84a6156f546eb xdriver_xf86-video-intel-84eaaba2737b2765f3fe843a138002ad0056a52b.tar.gz +sha256 5808e89f4b9a30afc59f335bfa8219ecf2dacb89a81d16b322bc6d92993a48fa COPYING diff --git a/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk b/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk index 6debdd0964a..fa0f650dbea 100644 --- a/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk +++ b/buildroot/package/x11r7/xdriver_xf86-video-intel/xdriver_xf86-video-intel.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_INTEL_VERSION = b57abe20e81f4b8e4dd203b6a9eda7ff441bc8ce +XDRIVER_XF86_VIDEO_INTEL_VERSION = 84eaaba2737b2765f3fe843a138002ad0056a52b XDRIVER_XF86_VIDEO_INTEL_SITE = git://anongit.freedesktop.org/xorg/driver/xf86-video-intel XDRIVER_XF86_VIDEO_INTEL_LICENSE = MIT XDRIVER_XF86_VIDEO_INTEL_LICENSE_FILES = COPYING diff --git a/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.hash b/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.hash index 84c0b08a92d..ee27690093f 100644 --- a/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.hash +++ b/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2015-June/002615.html -sha256 7bddf4d879dd6f67088ecb203a31e12334aab980174bd0909930a21f32e251c1 xf86-video-vesa-2.3.4.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-February/002837.html +md5 8134201beaf6f77150c7809c3cc802e6 xf86-video-vesa-2.4.0.tar.bz2 +sha1 99b69044c34292ba062e365c07dcd024462e794b xf86-video-vesa-2.4.0.tar.bz2 +sha256 bf443c94d7bf6cd4e248f8a3147f4647be04dc4c80250d9405006263bbdee38c xf86-video-vesa-2.4.0.tar.bz2 +sha512 4af5c0a7fd64eba503980198cf510688dff2f33482ceac446455d97255dcc828613387ac57828eb6dce080cb15a8644a2b2e278bf356705fdeaea873ab07c2de xf86-video-vesa-2.4.0.tar.bz2 +# Locally computed +sha256 bda49ba1e860501c20fd444423bc790f6da4f769561b69acc0cbe5abff9409b6 COPYING diff --git a/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.mk b/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.mk index 1184821d9c4..d2a92051973 100644 --- a/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.mk +++ b/buildroot/package/x11r7/xdriver_xf86-video-vesa/xdriver_xf86-video-vesa.mk @@ -4,7 +4,7 @@ # ################################################################################ -XDRIVER_XF86_VIDEO_VESA_VERSION = 2.3.4 +XDRIVER_XF86_VIDEO_VESA_VERSION = 2.4.0 XDRIVER_XF86_VIDEO_VESA_SOURCE = xf86-video-vesa-$(XDRIVER_XF86_VIDEO_VESA_VERSION).tar.bz2 XDRIVER_XF86_VIDEO_VESA_SITE = http://xorg.freedesktop.org/releases/individual/driver XDRIVER_XF86_VIDEO_VESA_LICENSE = MIT diff --git a/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.hash b/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.hash index a0f781d8813..56ea0e5251c 100644 --- a/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.hash +++ b/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.hash @@ -1,4 +1,7 @@ -# From https://lists.x.org/archives/xorg-announce/2017-October/002811.html -md5 eb61fb3fd419e817df572b0c8d94a883 xkeyboard-config-2.22.tar.bz2 -sha1 1e252098685afc3e802c98f3fd70d683654a13ab xkeyboard-config-2.22.tar.bz2 -sha256 deaec9989fbc443358b43864437b7b6d39caff07890a4a8055105ce9fcaa59bd xkeyboard-config-2.22.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-February/002833.html +md5 875cbd09ab8394277fd16070326abbae xkeyboard-config-2.23.1.tar.bz2 +sha1 184c9ce35f4fa44188acbf549f80d36407697ac3 xkeyboard-config-2.23.1.tar.bz2 +sha256 2a4bbc05fea22151b7a7c8ac2655d549aa9b0486bedc7f5a68c72716343b02f3 xkeyboard-config-2.23.1.tar.bz2 +sha512 d651bb89c265e58abe8bba4af6683364a8023cb73af7d00f401f33960e44fa94a7d8a8fdd2483d6703d1c261ca72ae5f2b53f543cfb70b2f571cfe9dcb80c3ba xkeyboard-config-2.23.1.tar.bz2 +# Locally computed +sha256 6ca90f4b67dced4062894d6d77f4cc39343df9e359fc12f5e5d3c89ef2a3ef6d COPYING diff --git a/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.mk b/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.mk index ae88db785fe..9a8838dde10 100644 --- a/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.mk +++ b/buildroot/package/x11r7/xkeyboard-config/xkeyboard-config.mk @@ -4,12 +4,15 @@ # ################################################################################ -XKEYBOARD_CONFIG_VERSION = 2.22 +XKEYBOARD_CONFIG_VERSION = 2.23.1 XKEYBOARD_CONFIG_SOURCE = xkeyboard-config-$(XKEYBOARD_CONFIG_VERSION).tar.bz2 XKEYBOARD_CONFIG_SITE = http://www.x.org/releases/individual/data/xkeyboard-config XKEYBOARD_CONFIG_LICENSE = MIT XKEYBOARD_CONFIG_LICENSE_FILES = COPYING +# xkeyboard-config.pc +XKEYBOARD_CONFIG_INSTALL_STAGING = YES + XKEYBOARD_CONFIG_CONF_OPTS = --disable-runtime-deps XKEYBOARD_CONFIG_DEPENDENCIES = host-gettext host-intltool host-xapp_xkbcomp diff --git a/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.hash b/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.hash index 05eb07111ba..afdffb827f0 100644 --- a/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.hash +++ b/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.hash @@ -1,2 +1,7 @@ -# From http://lists.x.org/archives/xorg-announce/2015-January/002515.html -sha256 d21b2d1fd78c1efbe1f2c16dae1cb23f8fd231dcf891465b8debe636a9054b0c libxshmfence-1.2.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-February/002840.html +md5 42dda8016943dc12aff2c03a036e0937 libxshmfence-1.3.tar.bz2 +sha1 3472218fc0e8ee8183533d22dbcd4bbe90bf3ab8 libxshmfence-1.3.tar.bz2 +sha256 b884300d26a14961a076fbebc762a39831cb75f92bed5ccf9836345b459220c7 libxshmfence-1.3.tar.bz2 +sha512 c446e055f8fac62b9aa266132289a4cfc030282147974c45ce96d1768a98d1afb997470e58e4a68513174c404cbf373bdde2f0cd4b34abdbce1d89dd0b6fe2b7 libxshmfence-1.3.tar.bz2 +# Locally computed +sha256 64a579d1a0b3347301d87c94698a58ea7933d0ae6ca7e8fdd702fde2ea376301 COPYING diff --git a/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.mk b/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.mk index 3a2f32623a2..f51cf0d5cb4 100644 --- a/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.mk +++ b/buildroot/package/x11r7/xlib_libxshmfence/xlib_libxshmfence.mk @@ -4,7 +4,7 @@ # ################################################################################ -XLIB_LIBXSHMFENCE_VERSION = 1.2 +XLIB_LIBXSHMFENCE_VERSION = 1.3 XLIB_LIBXSHMFENCE_SOURCE = libxshmfence-$(XLIB_LIBXSHMFENCE_VERSION).tar.bz2 XLIB_LIBXSHMFENCE_SITE = http://xorg.freedesktop.org/releases/individual/lib XLIB_LIBXSHMFENCE_LICENSE = MIT @@ -12,4 +12,7 @@ XLIB_LIBXSHMFENCE_LICENSE_FILES = COPYING XLIB_LIBXSHMFENCE_INSTALL_STAGING = YES XLIB_LIBXSHMFENCE_DEPENDENCIES = host-pkgconf xproto_xproto +# 0001-configure.ac-call-AC_USE_SYSTEM_EXTENSIONS.patch +XLIB_LIBXSHMFENCE_AUTORECONF = YES + $(eval $(autotools-package)) diff --git a/buildroot/package/x11r7/xserver_xorg-server/S40xorg b/buildroot/package/x11r7/xserver_xorg-server/S40xorg new file mode 100755 index 00000000000..215c0b7acf7 --- /dev/null +++ b/buildroot/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/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk b/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk index 45a2c81f2b8..d605a2c7425 100644 --- a/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk +++ b/buildroot/package/x11r7/xserver_xorg-server/xserver_xorg-server.mk @@ -258,4 +258,9 @@ XSERVER_XORG_SERVER_CONF_OPTS += --with-sha1=libsha1 XSERVER_XORG_SERVER_DEPENDENCIES += libsha1 endif +define XSERVER_XORG_SERVER_INSTALL_INIT_SYSV + $(INSTALL) -D -m 755 package/x11r7/xserver_xorg-server/S40xorg \ + $(TARGET_DIR)/etc/init.d/S40xorg +endef + $(eval $(autotools-package)) diff --git a/buildroot/package/x11vnc/0001-Fix-compiler-detection-when-using-without-crypt-cryp.patch b/buildroot/package/x11vnc/0001-Fix-compiler-detection-when-using-without-crypt-cryp.patch deleted file mode 100644 index 31b5cfed7d1..00000000000 --- a/buildroot/package/x11vnc/0001-Fix-compiler-detection-when-using-without-crypt-cryp.patch +++ /dev/null @@ -1,27 +0,0 @@ -From d6919c0be7f531b20cbfcb9929d697ac3c132c40 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Micha=C5=82=20K=C4=99pie=C5=84?= -Date: Wed, 12 Oct 2016 15:17:51 +0200 -Subject: [PATCH] Fix compiler detection when using - --without-{crypt,crypto,ssl} - -(cherry picked from commit d6919c0be7f531b20cbfcb9929d697ac3c132c40) -Signed-off-by: Romain Naour ---- - configure.ac | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/configure.ac b/configure.ac -index 55724bc..bdfff94 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -5,6 +5,7 @@ m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) - AM_CONFIG_HEADER(config.h) - AC_CONFIG_MACRO_DIR([m4]) - -+AC_PROG_CC - AC_PROG_SED - - # some OS's need both -lssl and -lcrypto on link line: --- -2.9.3 - diff --git a/buildroot/package/x11vnc/x11vnc.hash b/buildroot/package/x11vnc/x11vnc.hash index 3cdbfa1b0f2..86f41044db2 100644 --- a/buildroot/package/x11vnc/x11vnc.hash +++ b/buildroot/package/x11vnc/x11vnc.hash @@ -1,2 +1,2 @@ # Locally computed: -sha256 45f87c5e4382988c73e8c7891ac2bfb45d8f9ce1196ae06651c84636684ea143 x11vnc-0.9.14.tar.gz +sha256 3e43bd875edc3c7f52a0d3676c4ec7de910fcd210240ee20b4522deb2bf84cff x11vnc-0.9.15.tar.gz diff --git a/buildroot/package/x11vnc/x11vnc.mk b/buildroot/package/x11vnc/x11vnc.mk index f1f4da21bc3..0fa87d2d82f 100644 --- a/buildroot/package/x11vnc/x11vnc.mk +++ b/buildroot/package/x11vnc/x11vnc.mk @@ -4,7 +4,7 @@ # ################################################################################ -X11VNC_VERSION = 0.9.14 +X11VNC_VERSION = 0.9.15 X11VNC_SITE = $(call github,LibVNC,x11vnc,$(X11VNC_VERSION)) # sdl support is not used in x11vnc, but host include / library search paths # leak in if host has sdl-config diff --git a/buildroot/package/x264/x264.hash b/buildroot/package/x264/x264.hash index f0e9f1b827f..920f3b74eb9 100644 --- a/buildroot/package/x264/x264.hash +++ b/buildroot/package/x264/x264.hash @@ -1,2 +1,3 @@ # Locally computed -sha256 986863122b0b3ac2c1fa27c6e3932c3490b84287335fa162bca020aa815aa695 x264-ba24899b0bf23345921da022f7a51e0c57dbe73d.tar.gz +sha256 cdae4489e0306938a46429824aa3511e7ec2a43f71fee8b4aa46ceea46d15888 x264-7d0ff22e8c96de126be9d3de4952edd6d1b75a8c.tar.gz +sha256 32b1062f7da84967e7019d01ab805935caa7ab7321a7ced0e30ebe75e5df1670 COPYING diff --git a/buildroot/package/x264/x264.mk b/buildroot/package/x264/x264.mk index e14077a2f43..f2fb10c41c5 100644 --- a/buildroot/package/x264/x264.mk +++ b/buildroot/package/x264/x264.mk @@ -4,7 +4,7 @@ # ################################################################################ -X264_VERSION = ba24899b0bf23345921da022f7a51e0c57dbe73d +X264_VERSION = 7d0ff22e8c96de126be9d3de4952edd6d1b75a8c X264_SITE = git://git.videolan.org/x264.git X264_LICENSE = GPL-2.0+ X264_DEPENDENCIES = host-pkgconf diff --git a/buildroot/package/x265/x265.hash b/buildroot/package/x265/x265.hash index 3e44b036924..e6f22db6464 100644 --- a/buildroot/package/x265/x265.hash +++ b/buildroot/package/x265/x265.hash @@ -1,2 +1,2 @@ # Locally generated -sha256 2e53259b504a7edb9b21b9800163b1ff4c90e60c74e23e7001d423c69c5d3d17 x265_2.5.tar.gz +sha256 d5e75fa62ffe6ed49e691f8eb8ab8c1634ffcc0725dd553c6fdb4d5443b494a2 x265_2.7.tar.gz diff --git a/buildroot/package/x265/x265.mk b/buildroot/package/x265/x265.mk index ae570e6e4c6..243025c08ba 100644 --- a/buildroot/package/x265/x265.mk +++ b/buildroot/package/x265/x265.mk @@ -4,7 +4,7 @@ # ################################################################################ -X265_VERSION = 2.5 +X265_VERSION = 2.7 X265_SOURCE = x265_$(X265_VERSION).tar.gz X265_SITE = https://bitbucket.org/multicoreware/x265/downloads X265_LICENSE = GPL-2.0+ @@ -13,7 +13,7 @@ X265_SUBDIR = source X265_INSTALL_STAGING = YES ifeq ($(BR2_i386)$(BR2_x86_64),y) -X265_DEPENDENCIES += host-yasm +X265_DEPENDENCIES += host-nasm endif # disable altivec, it has build issues diff --git a/buildroot/package/xen/0003-memfd-fix-configure-test.patch b/buildroot/package/xen/0003-memfd-fix-configure-test.patch new file mode 100644 index 00000000000..95cb49bcf7a --- /dev/null +++ b/buildroot/package/xen/0003-memfd-fix-configure-test.patch @@ -0,0 +1,62 @@ +From 75e5b70e6b5dcc4f2219992d7cffa462aa406af0 Mon Sep 17 00:00:00 2001 +From: Paolo Bonzini +Date: Tue, 28 Nov 2017 11:51:27 +0100 +Subject: [PATCH] memfd: fix configure test +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Recent glibc added memfd_create in sys/mman.h. This conflicts with +the definition in util/memfd.c: + + /builddir/build/BUILD/qemu-2.11.0-rc1/util/memfd.c:40:12: error: static declaration of memfd_create follows non-static declaration + +Fix the configure test, and remove the sys/memfd.h inclusion since the +file actually does not exist---it is a typo in the memfd_create(2) man +page. + +Cc: Marc-Andrテゥ Lureau +Signed-off-by: Paolo Bonzini +Signed-off-by: Baruch Siach +[ Changes by AF: + - Port the patch to the qemu-xen tree +] +Signed-off-by: Alistair Francis +--- +Upstream status: commit 75e5b70e6b5 + + configure | 2 +- + util/memfd.c | 4 +--- + 2 files changed, 2 insertions(+), 4 deletions(-) + +diff --git a/configure b/configure +index 9c8aa5a98bd4..99ccc1725ace 100755 +--- a/tools/qemu-xen/configure ++++ b/tools/qemu-xen/configure +@@ -3923,7 +3923,7 @@ fi + # check if memfd is supported + memfd=no + cat > $TMPC << EOF +-#include ++#include + + int main(void) + { +diff --git a/util/memfd.c b/util/memfd.c +index 4571d1aba866..412e94a405fc 100644 +--- a/tools/qemu-xen/util/memfd.c ++++ b/tools/qemu-xen/util/memfd.c +@@ -31,9 +31,7 @@ + + #include "qemu/memfd.h" + +-#ifdef CONFIG_MEMFD +-#include +-#elif defined CONFIG_LINUX ++#if defined CONFIG_LINUX && !defined CONFIG_MEMFD + #include + #include + +-- +2.16.2 + diff --git a/buildroot/package/xen/xen.mk b/buildroot/package/xen/xen.mk index 8ba2b9d5c26..1b741a90f61 100644 --- a/buildroot/package/xen/xen.mk +++ b/buildroot/package/xen/xen.mk @@ -17,7 +17,9 @@ else ifeq ($(ARCH),arm) XEN_ARCH = arm32 endif -XEN_CONF_OPTS = --disable-ocamltools +XEN_CONF_OPTS = \ + --disable-ocamltools \ + --with-initddir=/etc/init.d XEN_CONF_ENV = PYTHON=$(HOST_DIR)/bin/python2 XEN_MAKE_ENV = \ diff --git a/buildroot/package/xenomai/Config.in b/buildroot/package/xenomai/Config.in index e0118c1112f..f3d8ea4baf6 100644 --- a/buildroot/package/xenomai/Config.in +++ b/buildroot/package/xenomai/Config.in @@ -2,7 +2,7 @@ config BR2_PACKAGE_XENOMAI_ARCH_SUPPORTS bool default y depends on BR2_i386 || BR2_x86_64 || (BR2_arm && !BR2_ARM_CPU_ARMV7M) || \ - BR2_bfin || BR2_powerpc + BR2_powerpc comment "xenomai needs an glibc or uClibc toolchain w/ threads" depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_MUSL diff --git a/buildroot/package/xerces/0001-fix-CVE-2017-12627.patch b/buildroot/package/xerces/0001-fix-CVE-2017-12627.patch new file mode 100644 index 00000000000..010be7e3d5a --- /dev/null +++ b/buildroot/package/xerces/0001-fix-CVE-2017-12627.patch @@ -0,0 +1,22 @@ +XMLString: Don't call catString if relativePath is null + +https://xerces.apache.org/xerces-c/secadv/CVE-2017-12627.txt + +Upstream status: svn revision 1819998 + +Signed-off-by: Baruch Siach + +--- trunk/src/xercesc/util/PlatformUtils.cpp 2018/01/03 18:58:30 1819997 ++++ trunk/src/xercesc/util/PlatformUtils.cpp 2018/01/03 18:59:30 1819998 +@@ -920,7 +920,10 @@ + + XMLString::subString(tmpBuf, basePath, 0, (basePtr - basePath + 1), manager); + tmpBuf[basePtr - basePath + 1] = 0; +- XMLString::catString(tmpBuf, relativePath); ++ if (relativePath) ++ { ++ XMLString::catString(tmpBuf, relativePath); ++ } + + removeDotSlash(tmpBuf, manager); + diff --git a/buildroot/package/xfsprogs/0001-mdrestore-do-not-do-dynamic-linking-of-libtool-libra.patch b/buildroot/package/xfsprogs/0001-mdrestore-do-not-do-dynamic-linking-of-libtool-libra.patch index 2bb0b7dbcd9..74636c2ebbd 100644 --- a/buildroot/package/xfsprogs/0001-mdrestore-do-not-do-dynamic-linking-of-libtool-libra.patch +++ b/buildroot/package/xfsprogs/0001-mdrestore-do-not-do-dynamic-linking-of-libtool-libra.patch @@ -1,7 +1,8 @@ -From 770902a0a29fb4ac62358f7eacb3a83d0d9af1c7 Mon Sep 17 00:00:00 2001 +From d5cbb4f43cc9c30100fbf18a3e0d1fb95e1c1b0a Mon Sep 17 00:00:00 2001 From: Vicente Olivert Riera Date: Wed, 25 Nov 2015 10:50:00 +0000 -Subject: [PATCH] mdrestore: do not do dynamic linking of libtool libraries +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 @@ -11,23 +12,39 @@ ld: attempted static link of dynamic object `/usr/lib/libuuid.so' Signed-off-by: Vicente Olivert Riera [Sent upstream: https://www.spinics.net/lists/xfs/msg36149.html] +[baruch: update for v4.15.1; extend to include scrub] +Signed-off-by: Baruch Siach --- mdrestore/Makefile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + scrub/Makefile | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mdrestore/Makefile b/mdrestore/Makefile -index 5171306..1b34a0e 100644 +index 136ae716d691..75ff1bad78e9 100644 --- a/mdrestore/Makefile +++ b/mdrestore/Makefile @@ -10,7 +10,7 @@ CFILES = xfs_mdrestore.c - LLDLIBS = $(LIBXFS) $(LIBRT) $(LIBPTHREAD) $(LIBUUID) - LTDEPENDENCIES = $(LIBXFS) + LLDLIBS = $(LIBXFS) $(LIBFROG) $(LIBRT) $(LIBPTHREAD) $(LIBUUID) + LTDEPENDENCIES = $(LIBXFS) $(LIBFROG) -LLDFLAGS = -static +LLDFLAGS = -static-libtool-libs default: depend $(LTCOMMAND) +diff --git a/scrub/Makefile b/scrub/Makefile +index 063279400262..949f6fd8ba94 100644 +--- a/scrub/Makefile ++++ b/scrub/Makefile +@@ -70,7 +70,7 @@ xfs_scrub.c + + LLDLIBS += $(LIBHANDLE) $(LIBFROG) $(LIBPTHREAD) $(LIBUNISTRING) $(LIBRT) + LTDEPENDENCIES += $(LIBHANDLE) $(LIBFROG) $(LIBUNISTRING) $(LIBRT) +-LLDFLAGS = -static ++LLDFLAGS = -static-libtool-libs + + ifeq ($(HAVE_MALLINFO),yes) + LCFLAGS += -DHAVE_MALLINFO -- -2.7.4 +2.16.2 diff --git a/buildroot/package/xfsprogs/0003-workqueue-add-missing-pthreads-header.patch b/buildroot/package/xfsprogs/0003-workqueue-add-missing-pthreads-header.patch new file mode 100644 index 00000000000..e19261f0339 --- /dev/null +++ b/buildroot/package/xfsprogs/0003-workqueue-add-missing-pthreads-header.patch @@ -0,0 +1,41 @@ +From c05fc32d43b3870b63539c57428e1c52e3e7c3cd Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Fri, 16 Mar 2018 07:14:56 +0200 +Subject: [PATCH] workqueue: add missing pthreads header + +Fix the following build failure with musl libc: + +In file included from read_verify.c:25:0: +../include/workqueue.h:39:2: error: unknown type name 'pthread_t' + pthread_t *threads; + ^~~~~~~~~ +../include/workqueue.h:42:2: error: unknown type name 'pthread_mutex_t' + pthread_mutex_t lock; + ^~~~~~~~~~~~~~~ +../include/workqueue.h:43:2: error: unknown type name 'pthread_cond_t' + pthread_cond_t wakeup; + ^~~~~~~~~~~~~~ + +Signed-off-by: Baruch Siach +--- +Upstream status: https://marc.info/?l=linux-xfs&m=152117771313565&w=2 + + include/workqueue.h | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/include/workqueue.h b/include/workqueue.h +index b4b3541701df..edb2f8ac5991 100644 +--- a/include/workqueue.h ++++ b/include/workqueue.h +@@ -22,6 +22,8 @@ + #ifndef _WORKQUEUE_H_ + #define _WORKQUEUE_H_ + ++#include ++ + struct workqueue; + + typedef void workqueue_func_t(struct workqueue *wq, uint32_t index, void *arg); +-- +2.16.2 + diff --git a/buildroot/package/xfsprogs/0004-xfs_scrub-add-missing-paths-header.patch b/buildroot/package/xfsprogs/0004-xfs_scrub-add-missing-paths-header.patch new file mode 100644 index 00000000000..7695cf35a7f --- /dev/null +++ b/buildroot/package/xfsprogs/0004-xfs_scrub-add-missing-paths-header.patch @@ -0,0 +1,37 @@ +From 27747dcbfbde8a767b1a873716fce1d3aaf17c2f Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Fri, 16 Mar 2018 07:16:19 +0200 +Subject: [PATCH] xfs_scrub: add missing paths header +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Fix the following build failure with musl libc: + +xfs_scrub.c: In function 窶藁ain窶: +xfs_scrub.c:670:11: error: 窶論PATH_MOUNTED窶 undeclared (first use in this function) + mtab = _PATH_MOUNTED; + ^~~~~~~~~~~~~ + +Signed-off-by: Baruch Siach +--- +Upstream status: https://marc.info/?l=linux-xfs&m=152117771313566&w=2 + + scrub/xfs_scrub.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/scrub/xfs_scrub.c b/scrub/xfs_scrub.c +index ab26e6335948..eedbe34ec7b3 100644 +--- a/scrub/xfs_scrub.c ++++ b/scrub/xfs_scrub.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include + #include + #include +-- +2.16.2 + diff --git a/buildroot/package/xfsprogs/0005-xfs_scrub-fix-cross-compile-with-libunistring.patch b/buildroot/package/xfsprogs/0005-xfs_scrub-fix-cross-compile-with-libunistring.patch new file mode 100644 index 00000000000..dfb66c66306 --- /dev/null +++ b/buildroot/package/xfsprogs/0005-xfs_scrub-fix-cross-compile-with-libunistring.patch @@ -0,0 +1,37 @@ +From 45d9ba0f01cceb75f72d157a9e4d9aaeb753a9c4 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 20 Mar 2018 14:13:28 +0200 +Subject: [PATCH] xfs_scrub: fix cross compile with libunistring + +Commit 4bbed4ecc2a (xfs_scrub: warn about normalized Unicode name collisions) +added -lunistring to the list of the xfs_scrub dependencies. When cross +compiling make fails to find the library on the target sysroot: + +make[3]: *** No rule to make target `-lunistring', needed by `xfs_scrub'. Stop. + +Remove -lunistring from make dependencies of xfs_scrub to fix that. + +Cc: Darrick J. Wong +Signed-off-by: Baruch Siach +--- +Upstream status: https://patchwork.kernel.org/patch/10296957/ + + scrub/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/scrub/Makefile b/scrub/Makefile +index 949f6fd8ba94..979603f524ff 100644 +--- a/scrub/Makefile ++++ b/scrub/Makefile +@@ -69,7 +69,7 @@ vfs.c \ + xfs_scrub.c + + LLDLIBS += $(LIBHANDLE) $(LIBFROG) $(LIBPTHREAD) $(LIBUNISTRING) $(LIBRT) +-LTDEPENDENCIES += $(LIBHANDLE) $(LIBFROG) $(LIBUNISTRING) $(LIBRT) ++LTDEPENDENCIES += $(LIBHANDLE) $(LIBFROG) $(LIBRT) + LLDFLAGS = -static-libtool-libs + + ifeq ($(HAVE_MALLINFO),yes) +-- +2.16.2 + diff --git a/buildroot/package/xfsprogs/0006-xfs_scrub-fix-build-with-older-kernel-headers.patch b/buildroot/package/xfsprogs/0006-xfs_scrub-fix-build-with-older-kernel-headers.patch new file mode 100644 index 00000000000..9e1300d0cd9 --- /dev/null +++ b/buildroot/package/xfsprogs/0006-xfs_scrub-fix-build-with-older-kernel-headers.patch @@ -0,0 +1,63 @@ +From 7ea1df02d0f2549b6249c8bee1f6ae02bf1251a9 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Sun, 25 Mar 2018 00:01:23 +0300 +Subject: [PATCH] xfs_scrub: fix build with older kernel headers + +The OVERRIDE_SYSTEM_FSXATTR macro in include/linux.h is meant to +override the linux/fs.h kernel header provided struct fsxattr for +kernels older than v4.7. A few source files include linux/fs.h before +the local linux.h, making this override ineffective. Remove these header +includes from the source files, and rely on the linux.h include alone. + +This fixes the following build failures: + +In file included from ../include/xfs.h:37:0, + from disk.c:40: +../include/xfs/linux.h:185:8: error: redefinition of 'struct fsxattr' + struct fsxattr { + ^~~~~~~ + +In file included from ../include/xfs.h:37:0, + from ../include/project.h:22, + from ../include/input.h:24, + from phase1.c:38: +../include/xfs/linux.h:185:8: error: redefinition of 'struct fsxattr' + struct fsxattr { + ^~~~~~~ + +Cc: Darrick J. Wong +Signed-off-by: Baruch Siach +--- +Upstream status: https://patchwork.kernel.org/patch/10306419/ + + scrub/disk.c | 1 - + scrub/phase1.c | 1 - + 2 files changed, 2 deletions(-) + +diff --git a/scrub/disk.c b/scrub/disk.c +index e12175c8656c..54d7a2a77c45 100644 +--- a/scrub/disk.c ++++ b/scrub/disk.c +@@ -28,7 +28,6 @@ + #include + #include + #include +-#include + #ifdef HAVE_SG_IO + # include + #endif +diff --git a/scrub/phase1.c b/scrub/phase1.c +index 6cd544233c94..d15689e1b544 100644 +--- a/scrub/phase1.c ++++ b/scrub/phase1.c +@@ -32,7 +32,6 @@ + #include + #include + #include +-#include + #include "libfrog.h" + #include "workqueue.h" + #include "input.h" +-- +2.16.2 + diff --git a/buildroot/package/xfsprogs/xfsprogs.hash b/buildroot/package/xfsprogs/xfsprogs.hash index 886a8f10c54..c58dbb07669 100644 --- a/buildroot/package/xfsprogs/xfsprogs.hash +++ b/buildroot/package/xfsprogs/xfsprogs.hash @@ -1,3 +1,3 @@ # From https://www.kernel.org/pub/linux/utils/fs/xfs/xfsprogs/sha256sums.asc -sha256 b1b710b268bc95d6f45eca06e1262c29eb38865a19cd4404e48ba446e043b7ec xfsprogs-4.14.0.tar.xz +sha256 27c36de9346a274143ad06c65b2fdbafd2806f3f37fa2c1235a08ed920d2bf3c xfsprogs-4.15.1.tar.xz sha256 ee304b1b1da08b261f1d1f31d229fc70d2d0c552c7429e9e84c0fac878d94209 doc/COPYING diff --git a/buildroot/package/xfsprogs/xfsprogs.mk b/buildroot/package/xfsprogs/xfsprogs.mk index e6e8493684f..dffcc28ab7c 100644 --- a/buildroot/package/xfsprogs/xfsprogs.mk +++ b/buildroot/package/xfsprogs/xfsprogs.mk @@ -4,7 +4,7 @@ # ################################################################################ -XFSPROGS_VERSION = 4.14.0 +XFSPROGS_VERSION = 4.15.1 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) @@ -20,6 +20,10 @@ XFSPROGS_CONF_OPTS = \ INSTALL_GROUP=root \ --enable-static +ifeq ($(BR2_PACKAGE_LIBUNISTRING),y) +XFSPROGS_DEPENDENCIES += libunistring +endif + XFSPROGS_INSTALL_TARGET_OPTS = DIST_ROOT=$(TARGET_DIR) install $(eval $(autotools-package)) diff --git a/buildroot/package/xterm/xterm.mk b/buildroot/package/xterm/xterm.mk index 645de92e220..201280fd462 100644 --- a/buildroot/package/xterm/xterm.mk +++ b/buildroot/package/xterm/xterm.mk @@ -14,6 +14,9 @@ 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 \ diff --git a/buildroot/package/xutil_util-macros/xutil_util-macros.hash b/buildroot/package/xutil_util-macros/xutil_util-macros.hash index 0f0509a1320..49c057fd21d 100644 --- a/buildroot/package/xutil_util-macros/xutil_util-macros.hash +++ b/buildroot/package/xutil_util-macros/xutil_util-macros.hash @@ -1,2 +1,7 @@ -# From https://lists.x.org/archives/xorg-announce/2017-January/002773.html -sha256 18d459400558f4ea99527bc9786c033965a3db45bf4c6a32eefdc07aa9e306a6 util-macros-1.19.1.tar.bz2 +# From https://lists.x.org/archives/xorg-announce/2018-March/002845.html +md5 58edef899364f78fbde9479ded20211e util-macros-1.19.2.tar.bz2 +sha1 e8b3a6f2bfde22440fca0974da53da18821a4ee6 util-macros-1.19.2.tar.bz2 +sha256 d7e43376ad220411499a79735020f9d145fdc159284867e99467e0d771f3e712 util-macros-1.19.2.tar.bz2 +sha512 3f51504b27f0478c136126f15110cf3cdbba218c4d74a8e974cca1381c6e8364609bd0c444f2fb19aa86a7f4e848dfce4f4da940463b224036f75a60b3d88619 util-macros-1.19.2.tar.bz2 +# Locally computed +sha256 489b630a75e3255485732eae3d50ff4d29d3feb66760bb3acb04f897e4d9e375 COPYING diff --git a/buildroot/package/xutil_util-macros/xutil_util-macros.mk b/buildroot/package/xutil_util-macros/xutil_util-macros.mk index d01b3e0d24f..6f66c766920 100644 --- a/buildroot/package/xutil_util-macros/xutil_util-macros.mk +++ b/buildroot/package/xutil_util-macros/xutil_util-macros.mk @@ -4,7 +4,7 @@ # ################################################################################ -XUTIL_UTIL_MACROS_VERSION = 1.19.1 +XUTIL_UTIL_MACROS_VERSION = 1.19.2 XUTIL_UTIL_MACROS_SOURCE = util-macros-$(XUTIL_UTIL_MACROS_VERSION).tar.bz2 XUTIL_UTIL_MACROS_SITE = http://xorg.freedesktop.org/releases/individual/util XUTIL_UTIL_MACROS_LICENSE = MIT diff --git a/buildroot/package/xz/xz.mk b/buildroot/package/xz/xz.mk index e8116f24ae0..bcdac13ee3e 100644 --- a/buildroot/package/xz/xz.mk +++ b/buildroot/package/xz/xz.mk @@ -18,5 +18,10 @@ else XZ_CONF_OPTS = --disable-threads endif +# we are built before ccache +HOST_XZ_CONF_ENV = \ + CC="$(HOSTCC_NOCCACHE)" \ + CXX="$(HOSTCXX_NOCCACHE)" + $(eval $(autotools-package)) $(eval $(host-autotools-package)) diff --git a/buildroot/package/ympd/ympd.hash b/buildroot/package/ympd/ympd.hash index 7483083b4d0..6d45d63862c 100644 --- a/buildroot/package/ympd/ympd.hash +++ b/buildroot/package/ympd/ympd.hash @@ -1,2 +1,3 @@ # locally computed -sha256 092c26c51166d1d1f025cd06742981783dea7e42bfe4f73f10c4418fc003de94 ympd-v1.2.3.tar.gz +sha256 d9f68920cd93d1cfa971e1d7b9162a2b1724909bc9753c1338cecb3688d234d5 ympd-v1.3.0.tar.gz +sha256 e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4 LICENSE diff --git a/buildroot/package/ympd/ympd.mk b/buildroot/package/ympd/ympd.mk index a50aee074ea..6c0f3224cc2 100644 --- a/buildroot/package/ympd/ympd.mk +++ b/buildroot/package/ympd/ympd.mk @@ -4,18 +4,17 @@ # ################################################################################ -YMPD_VERSION = v1.2.3 +YMPD_VERSION = v1.3.0 YMPD_SITE = $(call github,notandy,ympd,$(YMPD_VERSION)) YMPD_LICENSE = GPL-2.0 YMPD_LICENSE_FILES = LICENSE YMPD_DEPENDENCIES = libmpdclient -define YMPD_MAKE_HOST_TOOL - $(HOSTCC) $(HOST_CFLAGS) $(@D)/htdocs/mkdata.c -o $(@D)/mkdata -endef - -YMPD_PRE_BUILD_HOOKS += YMPD_MAKE_HOST_TOOL - -YMPD_CONF_OPTS += -DMKDATA_EXE=$(@D)/mkdata +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/buildroot/package/zeromq/0001-acinclude.m4-make-kernel-specific-flags-cacheable.patch b/buildroot/package/zeromq/0001-acinclude.m4-make-kernel-specific-flags-cacheable.patch deleted file mode 100644 index ff225d35925..00000000000 --- a/buildroot/package/zeromq/0001-acinclude.m4-make-kernel-specific-flags-cacheable.patch +++ /dev/null @@ -1,199 +0,0 @@ -commit 9daf6dd7c4947ce74ca729de5c3cfe8cbc304702 -Author: Lionel Orry -Date: Fri Feb 6 15:11:07 2015 +0100 - - acinclude.m4: make kernel-specific flags cacheable - - Specifically when cross-compiling, one can be willing to force these - variable values using the environment of a config.cache file. This - commit makes this possible. - - The affected variables are: - - * libzmq_cv_sock_cloexec - * libzmq_cv_so_keepalive - * libzmq_cv_tcp_keepcnt - * libzmq_cv_tcp_keepidle - * libzmq_cv_tcp_keepintvl - * libzmq_cv_tcp_keepalive - - Signed-off-by: Lionel Orry - -diff --git a/acinclude.m4 b/acinclude.m4 -index 4bbd19e..456740d 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -586,8 +586,8 @@ dnl # LIBZMQ_CHECK_SOCK_CLOEXEC([action-if-found], [action-if-not-found]) - dnl # Check if SOCK_CLOEXEC is supported # - dnl ################################################################################ - AC_DEFUN([LIBZMQ_CHECK_SOCK_CLOEXEC], [{ -- AC_MSG_CHECKING(whether SOCK_CLOEXEC is supported) -- AC_TRY_RUN([/* SOCK_CLOEXEC test */ -+ AC_CACHE_CHECK([whether SOCK_CLOEXEC is supported], [libzmq_cv_sock_cloexec], -+ [AC_TRY_RUN([/* SOCK_CLOEXEC test */ - #include - #include - -@@ -596,11 +596,13 @@ int main (int argc, char *argv []) - int s = socket (PF_INET, SOCK_STREAM | SOCK_CLOEXEC, 0); - return (s == -1); - } -- ], -- [AC_MSG_RESULT(yes) ; libzmq_cv_sock_cloexec="yes" ; $1], -- [AC_MSG_RESULT(no) ; libzmq_cv_sock_cloexec="no" ; $2], -- [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_sock_cloexec="no"] -+ ], -+ [libzmq_cv_sock_cloexec="yes"], -+ [libzmq_cv_sock_cloexec="no"], -+ [libzmq_cv_sock_cloexec="not during cross-compile"] -+ )] - ) -+ AS_IF([test "x$libzmq_cv_sock_cloexec" = "xyes"], [$1], [$2]) - }]) - - dnl ################################################################################ -@@ -628,8 +630,8 @@ dnl # LIBZMQ_CHECK_SO_KEEPALIVE([action-if-found], [action-if-not-found]) - dnl # Check if SO_KEEPALIVE is supported # - dnl ################################################################################ - AC_DEFUN([LIBZMQ_CHECK_SO_KEEPALIVE], [{ -- AC_MSG_CHECKING(whether SO_KEEPALIVE is supported) -- AC_TRY_RUN([/* SO_KEEPALIVE test */ -+ AC_CACHE_CHECK([whether SO_KEEPALIVE is supported], [libzmq_cv_so_keepalive], -+ [AC_TRY_RUN([/* SO_KEEPALIVE test */ - #include - #include - -@@ -641,11 +643,13 @@ int main (int argc, char *argv []) - ((rc = setsockopt (s, SOL_SOCKET, SO_KEEPALIVE, (char*) &opt, sizeof (int))) == -1) - ); - } -- ], -- [AC_MSG_RESULT(yes) ; libzmq_cv_so_keepalive="yes" ; $1], -- [AC_MSG_RESULT(no) ; libzmq_cv_so_keepalive="no" ; $2], -- [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_so_keepalive="no"] -+ ], -+ [libzmq_cv_so_keepalive="yes"], -+ [libzmq_cv_so_keepalive="no"], -+ [libzmq_cv_so_keepalive="not during cross-compile"] -+ )] - ) -+ AS_IF([test "x$libzmq_cv_so_keepalive" = "xyes"], [$1], [$2]) - }]) - - dnl ################################################################################ -@@ -653,8 +657,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPCNT([action-if-found], [action-if-not-found]) - dnl # Check if TCP_KEEPCNT is supported # - dnl ################################################################################ - AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPCNT], [{ -- AC_MSG_CHECKING(whether TCP_KEEPCNT is supported) -- AC_TRY_RUN([/* TCP_KEEPCNT test */ -+ AC_CACHE_CHECK([whether TCP_KEEPCNT is supported], [libzmq_cv_tcp_keepcnt], -+ [AC_TRY_RUN([/* TCP_KEEPCNT test */ - #include - #include - #include -@@ -669,11 +673,13 @@ int main (int argc, char *argv []) - ((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPCNT, (char*) &opt, sizeof (int))) == -1) - ); - } -- ], -- [AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepcnt="yes" ; $1], -- [AC_MSG_RESULT(no) ; libzmq_cv_tcp_keepcnt="no" ; $2], -- [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepcnt="no"] -+ ], -+ [libzmq_cv_tcp_keepcnt="yes"], -+ [libzmq_cv_tcp_keepcnt="no"], -+ [libzmq_cv_tcp_keepcnt="not during cross-compile"] -+ )] - ) -+ AS_IF([test "x$libzmq_cv_tcp_keepcnt" = "xyes"], [$1], [$2]) - }]) - - dnl ################################################################################ -@@ -681,8 +687,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPIDLE([action-if-found], [action-if-not-found]) - dnl # Check if TCP_KEEPIDLE is supported # - dnl ################################################################################ - AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPIDLE], [{ -- AC_MSG_CHECKING(whether TCP_KEEPIDLE is supported) -- AC_TRY_RUN([/* TCP_KEEPIDLE test */ -+ AC_CACHE_CHECK([whether TCP_KEEPIDLE is supported], [libzmq_cv_tcp_keepidle], -+ [AC_TRY_RUN([/* TCP_KEEPIDLE test */ - #include - #include - #include -@@ -697,11 +703,13 @@ int main (int argc, char *argv []) - ((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPIDLE, (char*) &opt, sizeof (int))) == -1) - ); - } -- ], -- [AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepidle="yes" ; $1], -- [AC_MSG_RESULT(no) ; libzmq_cv_tcp_keepidle="no" ; $2], -- [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepidle="no"] -+ ], -+ [libzmq_cv_tcp_keepidle="yes"], -+ [libzmq_cv_tcp_keepidle="no"], -+ [libzmq_cv_tcp_keepidle="not during cross-compile"] -+ )] - ) -+ AS_IF([test "x$libzmq_cv_tcp_keepidle" = "xyes"], [$1], [$2]) - }]) - - dnl ################################################################################ -@@ -709,8 +717,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPINTVL([action-if-found], [action-if-not-found]) - dnl # Check if TCP_KEEPINTVL is supported # - dnl ################################################################################ - AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPINTVL], [{ -- AC_MSG_CHECKING(whether TCP_KEEPINTVL is supported) -- AC_TRY_RUN([/* TCP_KEEPINTVL test */ -+ AC_CACHE_CHECK([whether TCP_KEEPINTVL is supported], [libzmq_cv_tcp_keepintvl], -+ [AC_TRY_RUN([/* TCP_KEEPINTVL test */ - #include - #include - #include -@@ -725,11 +733,13 @@ int main (int argc, char *argv []) - ((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPINTVL, (char*) &opt, sizeof (int))) == -1) - ); - } -- ], -- [AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepintvl="yes" ; $1], -- [AC_MSG_RESULT(no) ; libzmq_cv_tcp_keepintvl="no" ; $2], -- [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepintvl="no"] -+ ], -+ [libzmq_cv_tcp_keepintvl="yes"], -+ [libzmq_cv_tcp_keepintvl="no"], -+ [libzmq_cv_tcp_keepintvl="not during cross-compile"] -+ )] - ) -+ AS_IF([test "x$libzmq_cv_tcp_keepintvl" = "xyes"], [$1], [$2]) - }]) - - dnl ################################################################################ -@@ -737,8 +747,8 @@ dnl # LIBZMQ_CHECK_TCP_KEEPALIVE([action-if-found], [action-if-not-found]) - dnl # Check if TCP_KEEPALIVE is supported # - dnl ################################################################################ - AC_DEFUN([LIBZMQ_CHECK_TCP_KEEPALIVE], [{ -- AC_MSG_CHECKING(whether TCP_KEEPALIVE is supported) -- AC_TRY_RUN([/* TCP_KEEPALIVE test */ -+ AC_CACHE_CHECK([whether TCP_KEEPALIVE is supported], [libzmq_cv_tcp_keepalive], -+ [AC_TRY_RUN([/* TCP_KEEPALIVE test */ - #include - #include - #include -@@ -753,11 +763,13 @@ int main (int argc, char *argv []) - ((rc = setsockopt (s, IPPROTO_TCP, TCP_KEEPALIVE, (char*) &opt, sizeof (int))) == -1) - ); - } -- ], -- [AC_MSG_RESULT(yes) ; libzmq_cv_tcp_keepalive="yes" ; $1], -- [AC_MSG_RESULT(no) ; libzmq_cv_tcp_keepalive="no" ; $2], -- [AC_MSG_RESULT(not during cross-compile) ; libzmq_cv_tcp_keepalive="no"] -+ ], -+ [libzmq_cv_tcp_keepalive="yes"], -+ [libzmq_cv_tcp_keepalive="no"], -+ [libzmq_cv_tcp_keepalive="not during cross-compile"] -+ )] - ) -+ AS_IF([test "x$libzmq_cv_tcp_keepalive" = "xyes"], [$1], [$2]) - }]) - - dnl ################################################################################ diff --git a/buildroot/package/zeromq/0001-configure.ac-serach-for-dladdr-only-on-libunwind.patch b/buildroot/package/zeromq/0001-configure.ac-serach-for-dladdr-only-on-libunwind.patch new file mode 100644 index 00000000000..1037a67fe23 --- /dev/null +++ b/buildroot/package/zeromq/0001-configure.ac-serach-for-dladdr-only-on-libunwind.patch @@ -0,0 +1,45 @@ +From 194b3836c87f77aca34581656ff99da49813d8c3 Mon Sep 17 00:00:00 2001 +From: Asaf Kahlon +Date: Fri, 13 Apr 2018 11:56:46 +0300 +Subject: [PATCH] configure.ac: search for dladdr only on libunwind + +The original configure.ac tries to check for dladdr, but it actually needs +it only in case we have libunwind (which has a another section and checks for it +too). +This can fail the build on systems without dynamic linking support. +Therefore, the dladdr check has to be performed only when checking libunwind. + +Signed-off-by: Asaf Kahlon +Upstream-status: https://github.com/zeromq/libzmq/commit/c971445025535b9f989ab0b78f5ddd1c026f1878 +--- + configure.ac | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/configure.ac b/configure.ac +index 216b2bc4..0858a6c1 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -174,11 +174,6 @@ case "${host_os}" in + AC_DEFINE(ZMQ_HAVE_LINUX, 1, [Have Linux OS]) + libzmq_on_linux="yes" + +- # dladdr/dlopen is in libdl on glibc +- AC_SEARCH_LIBS([dladdr], [dl dld], [], [ +- AC_MSG_ERROR([unable to find the dladdr() function]) +- ]) +- + if test "x$libzmq_tipc_support" = "xyes"; then + AC_DEFINE(ZMQ_HAVE_TIPC, 1, [Have TIPC support]) + fi +@@ -783,7 +778,7 @@ if test "x$enable_libunwind" != "xno"; then + AC_DEFINE(HAVE_LIBUNWIND, 1, [The libunwind library is to be used]) + AC_SUBST([LIBUNWIND_CFLAGS]) + AC_SUBST([LIBUNWIND_LIBS]) +- AC_CHECK_LIB([dl], [dladdr]) ++ AC_SEARCH_LIBS([dladdr], [dl dld]) + ], + [ + if test "x$enable_libunwind" = "xyes"; then +-- +2.17.0 + diff --git a/buildroot/package/zeromq/0002-acinclude.m4-check-if-latomic-is-needed.patch b/buildroot/package/zeromq/0002-acinclude.m4-check-if-latomic-is-needed.patch new file mode 100644 index 00000000000..a0c188a5c3f --- /dev/null +++ b/buildroot/package/zeromq/0002-acinclude.m4-check-if-latomic-is-needed.patch @@ -0,0 +1,70 @@ +From 9f4ca582555b208d065f730b5ce3b1901136b275 Mon Sep 17 00:00:00 2001 +From: Asaf Kahlon +Date: Mon, 7 May 2018 23:19:09 +0300 +Subject: [PATCH] acinclude.m4: check if -latomic is needed + +On some cases, -latomic is needed for linking, and since the current +acinclude.m4 checks only compilation we can sometimes miss the need for -latomic +and the linking process will fail. +Therefore, the AC_CHECK_IFELSE was replaced with AC_LINK_IFELSE. If the first +try fails, we try to link again with -latomic and add LIBS="-latomic" in case we +succeeded. + +Signed-off-by: Asaf Kahlon +--- + acinclude.m4 | 32 ++++++++++++++++++++++++++++---- + 1 file changed, 28 insertions(+), 4 deletions(-) + +diff --git a/acinclude.m4 b/acinclude.m4 +index f648ed0f..aa35195f 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -668,7 +668,7 @@ dnl # Check if compiler supoorts __atomic_Xxx intrinsics + dnl ################################################################################ + AC_DEFUN([LIBZMQ_CHECK_ATOMIC_INTRINSICS], [{ + AC_MSG_CHECKING(whether compiler supports __atomic_Xxx intrinsics) +- AC_COMPILE_IFELSE([AC_LANG_SOURCE([ ++ AC_LINK_IFELSE([AC_LANG_SOURCE([ + /* atomic intrinsics test */ + int v = 0; + int main (int, char **) +@@ -677,9 +677,33 @@ int main (int, char **) + return t; + } + ])], +- [AC_MSG_RESULT(yes) ; libzmq_cv_has_atomic_instrisics="yes" ; $1], +- [AC_MSG_RESULT(no) ; libzmq_cv_has_atomic_instrisics="no" ; $2] +- ) ++ [libzmq_cv_has_atomic_instrisics="yes"], ++ [libzmq_cv_has_atomic_instrisics="no"]) ++ ++ if test "x$libzmq_cv_has_atomic_instrisics" = "xno"; then ++ save_LDFLAGS=$LDFLAGS ++ LDFLAGS="$LDFLAGS -latomic" ++ AC_LINK_IFELSE([AC_LANG_SOURCE([ ++ /* atomic intrinsics test */ ++ int v = 0; ++ int main (int, char **) ++ { ++ int t = __atomic_add_fetch (&v, 1, __ATOMIC_ACQ_REL); ++ return t; ++ } ++ ])], ++ [libzmq_cv_has_atomic_instrisics="yes" LIBS="-latomic"], ++ [libzmq_cv_has_atomic_instrisics="no"]) ++ LDFLAGS=$save_LDFLAGS ++ fi ++ ++ if test "x$libzmq_cv_has_atomic_instrisics" = "xyes"; then ++ AC_MSG_RESULT(yes) ++ $1 ++ else ++ AC_MSG_RESULT(no) ++ $2 ++ fi + }]) + + dnl ################################################################################ +-- +2.17.0 + diff --git a/buildroot/package/zeromq/0002-libzmq-Fix-pkg-config-files-for-static-linking.patch b/buildroot/package/zeromq/0002-libzmq-Fix-pkg-config-files-for-static-linking.patch deleted file mode 100644 index 11acec26aea..00000000000 --- a/buildroot/package/zeromq/0002-libzmq-Fix-pkg-config-files-for-static-linking.patch +++ /dev/null @@ -1,29 +0,0 @@ -From e89577d30c278fba0f9e40266ceb6fb2821907d5 Mon Sep 17 00:00:00 2001 -From: Peter Korsgaard -Date: Wed, 13 May 2015 08:01:34 +0200 -Subject: [PATCH] libzmq: Fix pkg-config files for static linking - -Libzmq uses C++ standard library features, so users of it should link -against that as well when statically linking. - -Add it to Libs.private so users using pkg-config automatically gets the -correct linker flags. - -Signed-off-by: Peter Korsgaard ---- - src/libzmq.pc.in | 1 + - 1 file changed, 1 insertions(+) - -diff --git a/src/libzmq.pc.in b/src/libzmq.pc.in -index ba155a3..52a39f7 100644 ---- a/src/libzmq.pc.in -+++ b/src/libzmq.pc.in -@@ -7,4 +7,5 @@ Name: libzmq - Description: 0MQ c++ library - Version: @VERSION@ - Libs: -L${libdir} -lzmq -+Libs.private: -lstdc++ - Cflags: -I${includedir} --- -2.1.4 - diff --git a/buildroot/package/zeromq/Config.in b/buildroot/package/zeromq/Config.in index 69be9f002c5..25e438ae073 100644 --- a/buildroot/package/zeromq/Config.in +++ b/buildroot/package/zeromq/Config.in @@ -1,10 +1,10 @@ -comment "zeromq needs a toolchain w/ C++, threads" - depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) +comment "zeromq needs a toolchain w/ C++, NPTL" + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS_NPTL) config BR2_PACKAGE_ZEROMQ bool "zeromq" depends on BR2_INSTALL_LIBSTDCPP - depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL select BR2_PACKAGE_UTIL_LINUX select BR2_PACKAGE_UTIL_LINUX_LIBUUID help diff --git a/buildroot/package/zeromq/zeromq.hash b/buildroot/package/zeromq/zeromq.hash index 486656e4295..86380c02951 100644 --- a/buildroot/package/zeromq/zeromq.hash +++ b/buildroot/package/zeromq/zeromq.hash @@ -1,4 +1,5 @@ -# From https://github.com/zeromq/zeromq4-1/releases -sha1 b956df8c6f77c174683b51fbee67f99c94945651 zeromq-4.1.6.tar.gz -# Calculated based on the hash above -sha256 02ebf60a43011e770799336365bcbce2eb85569e9b5f52aa0d8cc04672438a0a zeromq-4.1.6.tar.gz +# From https://github.com/zeromq/libzmq/releases +md5 a1c95b34384257e986842f4d006957b8 zeromq-4.2.5.tar.gz +sha1 1132f839d703486c4ee1cf22f056585dfbb329c2 zeromq-4.2.5.tar.gz +# Locally computed +sha256 cc9090ba35713d59bb2f7d7965f877036c49c5558ea0c290b0dcc6f2a17e489f zeromq-4.2.5.tar.gz diff --git a/buildroot/package/zeromq/zeromq.mk b/buildroot/package/zeromq/zeromq.mk index caf56437185..8273cad763a 100644 --- a/buildroot/package/zeromq/zeromq.mk +++ b/buildroot/package/zeromq/zeromq.mk @@ -4,14 +4,14 @@ # ################################################################################ -ZEROMQ_VERSION = 4.1.6 -ZEROMQ_SITE = https://github.com/zeromq/zeromq4-1/releases/download/v$(ZEROMQ_VERSION) +ZEROMQ_VERSION = 4.2.5 +ZEROMQ_SITE = https://github.com/zeromq/libzmq/releases/download/v$(ZEROMQ_VERSION) ZEROMQ_INSTALL_STAGING = YES ZEROMQ_DEPENDENCIES = util-linux ZEROMQ_CONF_OPTS = --without-documentation ZEROMQ_LICENSE = LGPL-3.0+ with exceptions ZEROMQ_LICENSE_FILES = COPYING COPYING.LESSER -# For 0001-acinclude.m4-make-kernel-specific-flags-cacheable.patch +# 0001-configure.ac-serach-for-dladdr-only-on-libunwind.patch touches configure.ac ZEROMQ_AUTORECONF = YES # Assume these flags are always available. It is true, at least for @@ -51,4 +51,11 @@ 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/buildroot/package/zmqpp/Config.in b/buildroot/package/zmqpp/Config.in index 8dad80e4519..b9d4dcfd646 100644 --- a/buildroot/package/zmqpp/Config.in +++ b/buildroot/package/zmqpp/Config.in @@ -3,7 +3,7 @@ config BR2_PACKAGE_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_THREADS_NPTL # zeromq select BR2_PACKAGE_ZEROMQ help C++ binding for zeromq (ZeroMQ, 0MQ, zmq). @@ -13,8 +13,8 @@ config BR2_PACKAGE_ZMQPP 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 || \ +comment "zmqpp needs a toolchain w/ C++, NPTL, gcc >= 4.7" + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS_NPTL || \ !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 if BR2_PACKAGE_ZMQPP diff --git a/buildroot/package/zmqpp/zmqpp.mk b/buildroot/package/zmqpp/zmqpp.mk index f576527463b..e57f7de4ea2 100644 --- a/buildroot/package/zmqpp/zmqpp.mk +++ b/buildroot/package/zmqpp/zmqpp.mk @@ -12,6 +12,15 @@ 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 +ZMQPP_CONFIG = $(if $(BR2_ENABLE_DEBUG),debug,release) + +# 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 +ifeq ($(BR2_or1k):$(BR2_TOOLCHAIN_GCC_AT_LEAST_6),y:) +ZMQPP_CONFIG = +endif ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) ZMQPP_LDFLAGS += -latomic @@ -31,7 +40,7 @@ endif define ZMQPP_BUILD_CMDS $(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \ - LDFLAGS="$(ZMQPP_LDFLAGS)" \ + CONFIG=$(ZMQPP_CONFIG) LDFLAGS="$(ZMQPP_LDFLAGS)" \ $(ZMQPP_MAKE_OPTS) $(if $(BR2_PACKAGE_ZMQPP_CLIENT),client,library) -C $(@D) endef diff --git a/buildroot/package/znc/0001-Add-time.h-includes-where-appropiate.patch b/buildroot/package/znc/0001-Add-time.h-includes-where-appropiate.patch deleted file mode 100644 index c8ba6d450a9..00000000000 --- a/buildroot/package/znc/0001-Add-time.h-includes-where-appropiate.patch +++ /dev/null @@ -1,194 +0,0 @@ -From 9a51195e916f14a36c2a2a809f2393e5ed2424a3 Mon Sep 17 00:00:00 2001 -From: Gustavo Zacarias -Date: Thu, 6 Aug 2015 11:20:54 -0300 -Subject: [PATCH] Add includes where appropiate - -Signed-off-by: Gustavo Zacarias ---- - modules/adminlog.cpp | 1 + - modules/ctcpflood.cpp | 1 + - modules/flooddetach.cpp | 1 + - modules/lastseen.cpp | 1 + - modules/log.cpp | 1 + - modules/simple_away.cpp | 1 + - src/Buffer.cpp | 1 + - src/FileUtils.cpp | 1 + - src/IRCSock.cpp | 1 + - src/User.cpp | 1 + - src/WebModules.cpp | 1 + - src/ZNCDebug.cpp | 1 + - src/main.cpp | 1 + - src/znc.cpp | 1 + - 14 files changed, 14 insertions(+) - -diff --git a/modules/adminlog.cpp b/modules/adminlog.cpp -index d08369e..1636799 100644 ---- a/modules/adminlog.cpp -+++ b/modules/adminlog.cpp -@@ -20,6 +20,7 @@ - #include - - #include -+#include - - class CAdminLogMod : public CModule { - public: -diff --git a/modules/ctcpflood.cpp b/modules/ctcpflood.cpp -index 7697ef8..c105ef7 100644 ---- a/modules/ctcpflood.cpp -+++ b/modules/ctcpflood.cpp -@@ -16,6 +16,7 @@ - - #include - #include -+#include - - class CCtcpFloodMod : public CModule { - public: -diff --git a/modules/flooddetach.cpp b/modules/flooddetach.cpp -index 9c41734..cd88bd2 100644 ---- a/modules/flooddetach.cpp -+++ b/modules/flooddetach.cpp -@@ -16,6 +16,7 @@ - - #include - #include -+#include - - using std::map; - -diff --git a/modules/lastseen.cpp b/modules/lastseen.cpp -index 416a111..414310f 100644 ---- a/modules/lastseen.cpp -+++ b/modules/lastseen.cpp -@@ -16,6 +16,7 @@ - - #include - #include -+#include - - using std::map; - using std::pair; -diff --git a/modules/log.cpp b/modules/log.cpp -index 2f3124a..e238bb1 100644 ---- a/modules/log.cpp -+++ b/modules/log.cpp -@@ -20,6 +20,7 @@ - #include - #include - #include -+#include - #include - - using std::vector; -diff --git a/modules/simple_away.cpp b/modules/simple_away.cpp -index 57d6e7a..2f73b0a 100644 ---- a/modules/simple_away.cpp -+++ b/modules/simple_away.cpp -@@ -16,6 +16,7 @@ - - #include - #include -+#include - - #define SIMPLE_AWAY_DEFAULT_REASON "Auto away at %s" - #define SIMPLE_AWAY_DEFAULT_TIME 60 -diff --git a/src/Buffer.cpp b/src/Buffer.cpp -index 4715f76..dc14642 100644 ---- a/src/Buffer.cpp -+++ b/src/Buffer.cpp -@@ -17,6 +17,7 @@ - #include - #include - #include -+#include - - CBufLine::CBufLine(const CString& sFormat, const CString& sText, const timeval* ts) : m_sFormat(sFormat), m_sText(sText), m_time() { - if (ts == nullptr) -diff --git a/src/FileUtils.cpp b/src/FileUtils.cpp -index d358aa4..92218f3 100644 ---- a/src/FileUtils.cpp -+++ b/src/FileUtils.cpp -@@ -22,6 +22,7 @@ - #include - #include - #include -+#include - - #ifndef HAVE_LSTAT - # define lstat(a, b) stat(a, b) -diff --git a/src/IRCSock.cpp b/src/IRCSock.cpp -index 738b5bf..c97b8fe 100644 ---- a/src/IRCSock.cpp -+++ b/src/IRCSock.cpp -@@ -20,6 +20,7 @@ - #include - #include - #include -+#include - - using std::set; - using std::vector; -diff --git a/src/User.cpp b/src/User.cpp -index f3b5b91..580b52d 100644 ---- a/src/User.cpp -+++ b/src/User.cpp -@@ -22,6 +22,7 @@ - #include - #include - #include -+#include - #include - - using std::vector; -diff --git a/src/WebModules.cpp b/src/WebModules.cpp -index 832a2e1..74e56de 100644 ---- a/src/WebModules.cpp -+++ b/src/WebModules.cpp -@@ -19,6 +19,7 @@ - #include - #include - #include -+#include - #include - #include - -diff --git a/src/ZNCDebug.cpp b/src/ZNCDebug.cpp -index 6e36b57..be2f77f 100644 ---- a/src/ZNCDebug.cpp -+++ b/src/ZNCDebug.cpp -@@ -18,6 +18,7 @@ - #include - #include - #include -+#include - - bool CDebug::stdoutIsTTY = true; - bool CDebug::debug = -diff --git a/src/main.cpp b/src/main.cpp -index 465e1a0..cbe72bf 100644 ---- a/src/main.cpp -+++ b/src/main.cpp -@@ -16,6 +16,7 @@ - - #include - #include -+#include - - #if defined(HAVE_LIBSSL) && defined(HAVE_PTHREAD) - #include -diff --git a/src/znc.cpp b/src/znc.cpp -index 624b92c..4c1ffcd 100644 ---- a/src/znc.cpp -+++ b/src/znc.cpp -@@ -21,6 +21,7 @@ - #include - #include - #include -+#include - #include - #include - --- -2.4.6 - diff --git a/buildroot/package/znc/0002-csocket-timeh.patch b/buildroot/package/znc/0002-csocket-timeh.patch deleted file mode 100644 index cbd435fc82b..00000000000 --- a/buildroot/package/znc/0002-csocket-timeh.patch +++ /dev/null @@ -1,19 +0,0 @@ -Include time.h since time_t is used. - -Status: not upstream, seems to be fixed in newer CSocket versions in a -different way but it hasn't been updated/bundled in znc yet. - -Signed-off-by: Gustavo Zacarias - -diff -Nura znc-1.6.1.orig/src/Csocket.cpp znc-1.6.1.cs/src/Csocket.cpp ---- znc-1.6.1.orig/src/Csocket.cpp 2015-08-06 10:14:45.256246307 -0300 -+++ znc-1.6.1.cs/src/Csocket.cpp 2015-08-06 10:27:25.380446888 -0300 -@@ -54,6 +54,8 @@ - #include - #endif /* HAVE_ICU */ - -+#include -+ - #include - - #define CS_SRANDBUFFER 128 diff --git a/buildroot/package/znc/Config.in b/buildroot/package/znc/Config.in index 154d4b0789c..4fc7bbb95bd 100644 --- a/buildroot/package/znc/Config.in +++ b/buildroot/package/znc/Config.in @@ -3,13 +3,14 @@ config BR2_PACKAGE_ZNC depends on BR2_INSTALL_LIBSTDCPP depends on BR2_USE_MMU # fork() depends on !BR2_STATIC_LIBS - depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + depends on BR2_TOOLCHAIN_HAS_THREADS help Advanced IRC bouncer http://www.znc.in -comment "znc needs a toolchain w/ C++, dynamic library, gcc >= 4.7" +comment "znc needs a toolchain w/ C++, dynamic library, gcc >= 4.8, threads" depends on !BR2_INSTALL_LIBSTDCPP || BR2_STATIC_LIBS || \ - !BR2_TOOLCHAIN_GCC_AT_LEAST_4_7 + !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_HAS_THREADS depends on BR2_USE_MMU diff --git a/buildroot/package/znc/znc.hash b/buildroot/package/znc/znc.hash index b242933e9d8..ee24816d0a7 100644 --- a/buildroot/package/znc/znc.hash +++ b/buildroot/package/znc/znc.hash @@ -1,2 +1,3 @@ # Locally calculated -sha256 2f0225d49c53a01f8d94feea4619a6fe92857792bb3401a4eb1edd65f0342aca znc-1.6.5.tar.gz +sha256 c07e31439ac6b948a577bd61a9d5f61a6d191d387423779b937aa1404051b96f znc-1.7.0.tar.gz +sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE diff --git a/buildroot/package/znc/znc.mk b/buildroot/package/znc/znc.mk index 5783200ef6a..2a04c663773 100644 --- a/buildroot/package/znc/znc.mk +++ b/buildroot/package/znc/znc.mk @@ -4,8 +4,8 @@ # ################################################################################ -ZNC_VERSION = 1.6.5 -ZNC_SITE = http://znc.in/releases +ZNC_VERSION = 1.7.0 +ZNC_SITE = http://znc.in/releases/archive ZNC_LICENSE = Apache-2.0 ZNC_LICENSE_FILES = LICENSE ZNC_DEPENDENCIES = host-pkgconf @@ -32,7 +32,8 @@ else ZNC_CONF_OPTS += --disable-zlib endif -ifeq ($(BR2_PACKAGE_PYTHON3),y) +# python support depends on icu +ifeq ($(BR2_PACKAGE_ICU)$(BR2_PACKAGE_PYTHON3),yy) ZNC_DEPENDENCIES += python3 host-swig ZNC_CONF_OPTS += --enable-python=python3 else diff --git a/buildroot/package/zsh/Config.in b/buildroot/package/zsh/Config.in index 2e9daac6ef2..23194779792 100644 --- a/buildroot/package/zsh/Config.in +++ b/buildroot/package/zsh/Config.in @@ -1,7 +1,6 @@ config BR2_PACKAGE_ZSH bool "zsh" depends on BR2_USE_MMU # fork() - depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS select BR2_PACKAGE_NCURSES help zsh is a shell designed for interactive use, although it is diff --git a/buildroot/package/zsh/zsh.hash b/buildroot/package/zsh/zsh.hash index 0770d8e2475..5931e4d4656 100644 --- a/buildroot/package/zsh/zsh.hash +++ b/buildroot/package/zsh/zsh.hash @@ -1,7 +1,7 @@ # From http://www.zsh.org/pub/MD5SUM -md5 dfe156fd69b0d8d1745ecf6d6e02e047 zsh-5.4.2.tar.gz +md5 5c3b294e63b6cc8da8bcc364c72d954b zsh-5.5.tar.xz # Calculated based on the hash above and after checking signature -# http://www.zsh.org/pub/zsh-5.4.2.tar.gz.asc -sha256 957bcdb2c57f64c02f673693ea5a7518ef24b6557aeb3a4ce222cefa6d74acc9 zsh-5.4.2.tar.gz +# http://www.zsh.org/pub/zsh-5.5.tar.xz.asc +sha256 a8359b81d090425d497c6f3c724a7c21a81c614b03e7662ed347705d86958e53 zsh-5.5.tar.xz # Locally calculated sha256 d06fdf3ef9b1ec69d6b9e170b0a9516fbad3523261ff1668bde3bfea6e0ef5f5 LICENCE diff --git a/buildroot/package/zsh/zsh.mk b/buildroot/package/zsh/zsh.mk index bfd0a1a30ff..e7988389226 100644 --- a/buildroot/package/zsh/zsh.mk +++ b/buildroot/package/zsh/zsh.mk @@ -4,8 +4,9 @@ # ################################################################################ -ZSH_VERSION = 5.4.2 +ZSH_VERSION = 5.5 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 @@ -34,6 +35,14 @@ else ZSH_CONF_OPTS += --disable-pcre endif +# 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) diff --git a/buildroot/package/zstd/0001-Split-library-install-target-into-pc-static-shared-a.patch b/buildroot/package/zstd/0001-Split-library-install-target-into-pc-static-shared-a.patch new file mode 100644 index 00000000000..af9b2bf3f94 --- /dev/null +++ b/buildroot/package/zstd/0001-Split-library-install-target-into-pc-static-shared-a.patch @@ -0,0 +1,51 @@ +From 2623a12bff19049b6ad5bc066e3ef9c6259d415c Mon Sep 17 00:00:00 2001 +From: Peter Seiderer +Date: Mon, 16 Apr 2018 20:44:49 +0200 +Subject: [PATCH] Split library install target into pc, static, shared and + include only target + +Signed-off-by: Peter Seiderer +--- + lib/Makefile | 15 ++++++++++++--- + 1 file changed, 12 insertions(+), 3 deletions(-) + +diff --git a/lib/Makefile b/lib/Makefile +index cdfdc5c..b592aa6 100644 +--- a/lib/Makefile ++++ b/lib/Makefile +@@ -159,20 +159,29 @@ libzstd.pc: libzstd.pc.in + -e 's|@VERSION@|$(VERSION)|' \ + $< >$@ + +-install: libzstd.a libzstd libzstd.pc ++install: install-pc install-static install-shared install-includes ++ @echo zstd static and shared library installed ++ ++install-pc: libzstd.pc + @$(INSTALL) -d -m 755 $(DESTDIR)$(PKGCONFIGDIR)/ $(DESTDIR)$(INCLUDEDIR)/ + @$(INSTALL_DATA) libzstd.pc $(DESTDIR)$(PKGCONFIGDIR)/ +- @echo Installing libraries ++ ++install-static: libzstd.a ++ @echo Installing static library + @$(INSTALL_DATA) libzstd.a $(DESTDIR)$(LIBDIR) ++ ++install-shared: libzstd ++ @echo Installing shared library + @$(INSTALL_PROGRAM) $(LIBZSTD) $(DESTDIR)$(LIBDIR) + @ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT_MAJOR) + @ln -sf $(LIBZSTD) $(DESTDIR)$(LIBDIR)/libzstd.$(SHARED_EXT) ++ ++install-includes: + @echo Installing includes + @$(INSTALL_DATA) zstd.h $(DESTDIR)$(INCLUDEDIR) + @$(INSTALL_DATA) common/zstd_errors.h $(DESTDIR)$(INCLUDEDIR) + @$(INSTALL_DATA) deprecated/zbuff.h $(DESTDIR)$(INCLUDEDIR) # prototypes generate deprecation warnings + @$(INSTALL_DATA) dictBuilder/zdict.h $(DESTDIR)$(INCLUDEDIR) +- @echo zstd static and shared library installed + + uninstall: + @$(RM) $(DESTDIR)$(LIBDIR)/libzstd.a +-- +2.16.3 + diff --git a/buildroot/package/zstd/0002-lib-Makefile-create-include-directory-before-headers.patch b/buildroot/package/zstd/0002-lib-Makefile-create-include-directory-before-headers.patch new file mode 100644 index 00000000000..e95f8c0be48 --- /dev/null +++ b/buildroot/package/zstd/0002-lib-Makefile-create-include-directory-before-headers.patch @@ -0,0 +1,45 @@ +From 9a0643b633c00e86db059e3790bdea7155fb6dc9 Mon Sep 17 00:00:00 2001 +From: Baruch Siach +Date: Tue, 8 May 2018 20:43:28 +0300 +Subject: [PATCH] lib/Makefile: create include directory before headers + installation + +Make sure that $(INCLUDEDIR) exists before copying the headers there. +Otherwise, the contest of header files is copied over +$(DESTDIR)$(INCLUDEDIR), making it a regular file. + +While at it, remove $(DESTDIR)$(INCLUDEDIR) from the list of directories +to create in the install-pc target. The install-pc target does not need +this directory. + +Signed-off-by: Baruch Siach +--- +Upstream status: https://github.com/facebook/zstd/pull/1123 + + lib/Makefile | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/lib/Makefile b/lib/Makefile +index f64f192d4724..d8178c7a58a0 100644 +--- a/lib/Makefile ++++ b/lib/Makefile +@@ -163,7 +163,7 @@ install: install-pc install-static install-shared install-includes + @echo zstd static and shared library installed + + install-pc: libzstd.pc +- @$(INSTALL) -d -m 755 $(DESTDIR)$(PKGCONFIGDIR)/ $(DESTDIR)$(INCLUDEDIR)/ ++ @$(INSTALL) -d -m 755 $(DESTDIR)$(PKGCONFIGDIR)/ + @$(INSTALL_DATA) libzstd.pc $(DESTDIR)$(PKGCONFIGDIR)/ + + install-static: libzstd.a +@@ -178,6 +178,7 @@ install-shared: libzstd + + install-includes: + @echo Installing includes ++ @$(INSTALL) -d -m 755 $(DESTDIR)$(INCLUDEDIR)/ + @$(INSTALL_DATA) zstd.h $(DESTDIR)$(INCLUDEDIR) + @$(INSTALL_DATA) common/zstd_errors.h $(DESTDIR)$(INCLUDEDIR) + @$(INSTALL_DATA) deprecated/zbuff.h $(DESTDIR)$(INCLUDEDIR) # prototypes generate deprecation warnings +-- +2.17.0 + diff --git a/buildroot/package/zstd/zstd.mk b/buildroot/package/zstd/zstd.mk index d5459f99dd5..c74c8f24b63 100644 --- a/buildroot/package/zstd/zstd.mk +++ b/buildroot/package/zstd/zstd.mk @@ -6,7 +6,8 @@ ZSTD_VERSION = v1.3.3 ZSTD_SITE = $(call github,facebook,zstd,$(ZSTD_VERSION)) -ZSTD_LICENSE = BSD-3-Clause, GPL-2.0 +ZSTD_INSTALL_STAGING = YES +ZSTD_LICENSE = BSD-3-Clause or GPL-2.0 ZSTD_LICENSE_FILES = LICENSE COPYING ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) @@ -36,14 +37,47 @@ else ZSTD_OPTS += HAVE_LZ4=0 endif +ifeq ($(BR2_STATIC_LIBS),y) +ZSTD_BUILD_LIBS = libzstd.a +ZSTD_INSTALL_LIBS = install-static +else ifeq ($(BR2_SHARED_LIBS),y) +ZSTD_BUILD_LIBS = libzstd +ZSTD_INSTALL_LIBS = install-shared +else +ZSTD_BUILD_LIBS = libzstd.a libzstd +ZSTD_INSTALL_LIBS = install-static install-shared +endif + 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) zstd 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) PREFIX=/usr -C $(@D)/programs install + $(TARGET_MAKE_ENV) $(TARGET_CONFIGURE_OPTS) $(MAKE) $(ZSTD_OPTS) \ + DESTDIR=$(TARGET_DIR) PREFIX=/usr -C $(@D)/lib $(ZSTD_INSTALL_LIBS) +endef + +# note: no 'HAVE_...' options for host library build only +define HOST_ZSTD_BUILD_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) \ + -C $(@D)/lib +endef + +define HOST_ZSTD_INSTALL_CMDS + $(HOST_MAKE_ENV) $(HOST_CONFIGURE_OPTS) $(MAKE) \ + DESTDIR=$(HOST_DIR) PREFIX=/usr -C $(@D)/lib install endef $(eval $(generic-package)) +$(eval $(host-generic-package)) diff --git a/buildroot/package/zynq-boot-bin/zynq-boot-bin.mk b/buildroot/package/zynq-boot-bin/zynq-boot-bin.mk index 3648c63654f..c56203fb68f 100644 --- a/buildroot/package/zynq-boot-bin/zynq-boot-bin.mk +++ b/buildroot/package/zynq-boot-bin/zynq-boot-bin.mk @@ -12,7 +12,7 @@ ZYNQ_BOOT_BIN_LICENSE = GPL-3.0+ HOST_ZYNQ_BOOT_BIN_DEPENDENCIES = host-python define HOST_ZYNQ_BOOT_BIN_EXTRACT_CMDS - cp $(DL_DIR)/$(ZYNQ_BOOT_BIN_SOURCE) $(@D) + cp $(HOST_ZYNQ_BOOT_BIN_DL_DIR)/$(ZYNQ_BOOT_BIN_SOURCE) $(@D) endef define HOST_ZYNQ_BOOT_BIN_INSTALL_CMDS diff --git a/buildroot/package/zyre/Config.in b/buildroot/package/zyre/Config.in index 21a0884ec62..340e9775c52 100644 --- a/buildroot/package/zyre/Config.in +++ b/buildroot/package/zyre/Config.in @@ -1,7 +1,7 @@ config BR2_PACKAGE_ZYRE bool "zyre" depends on BR2_INSTALL_LIBSTDCPP # zeromq - depends on BR2_TOOLCHAIN_HAS_THREADS # zeromq + depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL # zeromq depends on BR2_USE_MMU # czmq select BR2_PACKAGE_CZMQ select BR2_PACKAGE_ZEROMQ @@ -11,6 +11,6 @@ config BR2_PACKAGE_ZYRE http://zyre.org -comment "zyre needs a toolchain w/ C++, threads" +comment "zyre needs a toolchain w/ C++, NPTL" depends on BR2_USE_MMU - depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) + depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS_NPTL) diff --git a/buildroot/package/zyre/zyre.hash b/buildroot/package/zyre/zyre.hash index 5b38b8039dc..8cc860232a5 100644 --- a/buildroot/package/zyre/zyre.hash +++ b/buildroot/package/zyre/zyre.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 0ce8328a2b9fe46aafc4627fc4ebd4d815f4d9f7d9708088459306c87bf5fb4b zyre-1d949e4bf79b694ea883c325f5813e87ddc2a687.tar.gz +sha256 b978a999947ddb6722d956db2427869b313225e50518c4fbbf960a68109e3e91 zyre-v2.0.0.tar.gz diff --git a/buildroot/package/zyre/zyre.mk b/buildroot/package/zyre/zyre.mk index baaa57f5f65..82a0f517cef 100644 --- a/buildroot/package/zyre/zyre.mk +++ b/buildroot/package/zyre/zyre.mk @@ -4,7 +4,7 @@ # ################################################################################ -ZYRE_VERSION = 1d949e4bf79b694ea883c325f5813e87ddc2a687 +ZYRE_VERSION = v2.0.0 ZYRE_SITE = $(call github,zeromq,zyre,$(ZYRE_VERSION)) ZYRE_LICENSE = MPL-2.0 ZYRE_LICENSE_FILES = LICENSE diff --git a/buildroot/support/config-fragments/autobuild/br-aarch64-glibc.config b/buildroot/support/config-fragments/autobuild/br-aarch64-glibc.config index af1cbf890dc..71b3a263561 100644 --- a/buildroot/support/config-fragments/autobuild/br-aarch64-glibc.config +++ b/buildroot/support/config-fragments/autobuild/br-aarch64-glibc.config @@ -2,7 +2,7 @@ BR2_aarch64=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-aarch64-glibc-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-aarch64-glibc-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y diff --git a/buildroot/support/config-fragments/autobuild/br-arcle-hs38.config b/buildroot/support/config-fragments/autobuild/br-arcle-hs38.config index be4f5353f45..280f8524cb3 100644 --- a/buildroot/support/config-fragments/autobuild/br-arcle-hs38.config +++ b/buildroot/support/config-fragments/autobuild/br-arcle-hs38.config @@ -3,7 +3,7 @@ BR2_archs38=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-arcle-hs38-full-2017.11-rc2-15-g9d544fe.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arcle-hs38-full-2018.02-926-gb393c24.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_7=y BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-basic.config b/buildroot/support/config-fragments/autobuild/br-arm-basic.config index a420284cc5c..e77d5e9eccc 100644 --- a/buildroot/support/config-fragments/autobuild/br-arm-basic.config +++ b/buildroot/support/config-fragments/autobuild/br-arm-basic.config @@ -2,7 +2,7 @@ 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-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-basic-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set diff --git a/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-glibc.config b/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-glibc.config index fea1564ab23..160484dfb4d 100644 --- a/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-glibc.config +++ b/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-glibc.config @@ -4,8 +4,8 @@ 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-glibc-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-cortex-a9-glibc-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_7=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-musl.config b/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-musl.config index 2db2aa0b778..19ee4174f2e 100644 --- a/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-musl.config +++ b/buildroot/support/config-fragments/autobuild/br-arm-cortex-a9-musl.config @@ -4,8 +4,8 @@ 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.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-cortex-a9-musl-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-cortex-m4-full.config b/buildroot/support/config-fragments/autobuild/br-arm-cortex-m4-full.config index f60df91f452..6a299922c62 100644 --- a/buildroot/support/config-fragments/autobuild/br-arm-cortex-m4-full.config +++ b/buildroot/support/config-fragments/autobuild/br-arm-cortex-m4-full.config @@ -3,9 +3,9 @@ BR2_cortex_m4=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-m4-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-cortex-m4-full-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set diff --git a/buildroot/support/config-fragments/autobuild/br-arm-full-nothread.config b/buildroot/support/config-fragments/autobuild/br-arm-full-nothread.config index 33034cf77aa..6433d072de1 100644 --- a/buildroot/support/config-fragments/autobuild/br-arm-full-nothread.config +++ b/buildroot/support/config-fragments/autobuild/br-arm-full-nothread.config @@ -3,9 +3,9 @@ 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-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm11-full-nothread-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-full-static.config b/buildroot/support/config-fragments/autobuild/br-arm-full-static.config index dd0a3931367..443d3fa6f41 100644 --- a/buildroot/support/config-fragments/autobuild/br-arm-full-static.config +++ b/buildroot/support/config-fragments/autobuild/br-arm-full-static.config @@ -3,9 +3,9 @@ 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-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-static-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-full.config b/buildroot/support/config-fragments/autobuild/br-arm-full.config index 659d07ce185..72052a07728 100644 --- a/buildroot/support/config-fragments/autobuild/br-arm-full.config +++ b/buildroot/support/config-fragments/autobuild/br-arm-full.config @@ -2,9 +2,9 @@ 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.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-internal-glibc.config b/buildroot/support/config-fragments/autobuild/br-arm-internal-glibc.config new file mode 100644 index 00000000000..6b2566eedca --- /dev/null +++ b/buildroot/support/config-fragments/autobuild/br-arm-internal-glibc.config @@ -0,0 +1,4 @@ +BR2_arm=y +BR2_cortex_a8=y +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-arm-internal-musl.config b/buildroot/support/config-fragments/autobuild/br-arm-internal-musl.config new file mode 100644 index 00000000000..92788626d69 --- /dev/null +++ b/buildroot/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/buildroot/support/config-fragments/autobuild/br-bfin-full.config b/buildroot/support/config-fragments/autobuild/br-bfin-full.config deleted file mode 100644 index eeefcefbeea..00000000000 --- a/buildroot/support/config-fragments/autobuild/br-bfin-full.config +++ /dev/null @@ -1,12 +0,0 @@ -BR2_bfin=y -BR2_bf512=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/br-bfin-full-2017.11-rc1.tar.bz2" -BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y -BR2_TOOLCHAIN_EXTERNAL_LOCALE=y -# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set -# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set -BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-i386-pentium-mmx-musl.config b/buildroot/support/config-fragments/autobuild/br-i386-pentium-mmx-musl.config index b9041a77248..a6eb584526b 100644 --- a/buildroot/support/config-fragments/autobuild/br-i386-pentium-mmx-musl.config +++ b/buildroot/support/config-fragments/autobuild/br-i386-pentium-mmx-musl.config @@ -2,9 +2,9 @@ BR2_x86_pentium_mmx=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/br-i386-pentium-mmx-musl-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-i386-pentium-mmx-musl-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_12=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y # BR2_TOOLCHAIN_EXTERNAL_HAS_SSP is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-i386-pentium4-full.config b/buildroot/support/config-fragments/autobuild/br-i386-pentium4-full.config index 08eb21b8945..7abd54927d9 100644 --- a/buildroot/support/config-fragments/autobuild/br-i386-pentium4-full.config +++ b/buildroot/support/config-fragments/autobuild/br-i386-pentium4-full.config @@ -2,7 +2,7 @@ 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.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-i386-pentium4-full-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_2=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y diff --git a/buildroot/support/config-fragments/autobuild/br-m68k-5208-full.config b/buildroot/support/config-fragments/autobuild/br-m68k-5208-full.config index bf455e08384..b8ea08e8680 100644 --- a/buildroot/support/config-fragments/autobuild/br-m68k-5208-full.config +++ b/buildroot/support/config-fragments/autobuild/br-m68k-5208-full.config @@ -2,9 +2,9 @@ BR2_m68k=y BR2_m68k_cf5208=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y -BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-m68k-5208-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-m68k-5208-full-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set diff --git a/buildroot/support/config-fragments/autobuild/br-m68k-68040-full.config b/buildroot/support/config-fragments/autobuild/br-m68k-68040-full.config index 0766ffc3e84..ca9753379b7 100644 --- a/buildroot/support/config-fragments/autobuild/br-m68k-68040-full.config +++ b/buildroot/support/config-fragments/autobuild/br-m68k-68040-full.config @@ -1,9 +1,9 @@ BR2_m68k=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y -BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-m68k-68040-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-m68k-68040-full-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set diff --git a/buildroot/support/config-fragments/autobuild/br-microblazeel-full.config b/buildroot/support/config-fragments/autobuild/br-microblazeel-full.config index ea920f0a70d..4bb5f2adff0 100644 --- a/buildroot/support/config-fragments/autobuild/br-microblazeel-full.config +++ b/buildroot/support/config-fragments/autobuild/br-microblazeel-full.config @@ -1,10 +1,9 @@ BR2_microblazeel=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y -BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-microblaze-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-microblaze-full-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set -# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-mips32r6-el-hf-glibc.config b/buildroot/support/config-fragments/autobuild/br-mips32r6-el-hf-glibc.config index 237265bd82f..1ed280f7a70 100644 --- a/buildroot/support/config-fragments/autobuild/br-mips32r6-el-hf-glibc.config +++ b/buildroot/support/config-fragments/autobuild/br-mips32r6-el-hf-glibc.config @@ -4,8 +4,8 @@ BR2_mips_32r6=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-mips32r6-el-hf-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mips32r6-el-hf-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-mips64-n64-full.config b/buildroot/support/config-fragments/autobuild/br-mips64-n64-full.config index f8a67f2c659..e90f5d56fe4 100644 --- a/buildroot/support/config-fragments/autobuild/br-mips64-n64-full.config +++ b/buildroot/support/config-fragments/autobuild/br-mips64-n64-full.config @@ -3,8 +3,8 @@ 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-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mips64-n64-full-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_5=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config b/buildroot/support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config index b0e92360632..bb15d3168c8 100644 --- a/buildroot/support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config +++ b/buildroot/support/config-fragments/autobuild/br-mips64r6-el-hf-glibc.config @@ -5,8 +5,8 @@ BR2_MIPS_NABI64=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-mips64r6-n64-el-hf-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mips64r6-n64-el-hf-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-mipsel-o32-full.config b/buildroot/support/config-fragments/autobuild/br-mipsel-o32-full.config index e608b424a71..b985dbb8a85 100644 --- a/buildroot/support/config-fragments/autobuild/br-mipsel-o32-full.config +++ b/buildroot/support/config-fragments/autobuild/br-mipsel-o32-full.config @@ -2,9 +2,9 @@ BR2_mipsel=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-mipsel-o32-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-mipsel-o32-full-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-nios2-glibc.config b/buildroot/support/config-fragments/autobuild/br-nios2-glibc.config index 62f2665e44a..1e10e34a76e 100644 --- a/buildroot/support/config-fragments/autobuild/br-nios2-glibc.config +++ b/buildroot/support/config-fragments/autobuild/br-nios2-glibc.config @@ -2,8 +2,9 @@ BR2_nios2=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-nios2-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-nios2-full-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y +# BR2_TOOLCHAIN_EXTERNAL_HAS_SSP is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-openrisc-uclibc.config b/buildroot/support/config-fragments/autobuild/br-openrisc-uclibc.config index 3a4f0b62dd2..a346c83e4cc 100644 --- a/buildroot/support/config-fragments/autobuild/br-openrisc-uclibc.config +++ b/buildroot/support/config-fragments/autobuild/br-openrisc-uclibc.config @@ -1,10 +1,9 @@ BR2_or1k=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y -BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-openrisc-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-openrisc-full-2018.02-925-gd4158df.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_5=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set -# BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_NPTL is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config b/buildroot/support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config index 63cffef7e88..71694eee138 100644 --- a/buildroot/support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config +++ b/buildroot/support/config-fragments/autobuild/br-powerpc-603e-basic-cpp.config @@ -3,8 +3,8 @@ 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-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-powerpc-603e-basic-cpp-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-powerpc-e500mc-full.config b/buildroot/support/config-fragments/autobuild/br-powerpc-e500mc-full.config index 83b4c093d3e..5f2a513904b 100644 --- a/buildroot/support/config-fragments/autobuild/br-powerpc-e500mc-full.config +++ b/buildroot/support/config-fragments/autobuild/br-powerpc-e500mc-full.config @@ -3,9 +3,9 @@ BR2_powerpc_e500mc=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-e500mc-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-powerpc-e500mc-full-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-powerpc64-power7-glibc.config b/buildroot/support/config-fragments/autobuild/br-powerpc64-power7-glibc.config index 99ab1695a20..6be80574a03 100644 --- a/buildroot/support/config-fragments/autobuild/br-powerpc64-power7-glibc.config +++ b/buildroot/support/config-fragments/autobuild/br-powerpc64-power7-glibc.config @@ -2,8 +2,8 @@ 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-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-powerpc64-power7-glibc-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-powerpc64le-power8-glibc.config b/buildroot/support/config-fragments/autobuild/br-powerpc64le-power8-glibc.config index 12e3e8fc688..48c47621d97 100644 --- a/buildroot/support/config-fragments/autobuild/br-powerpc64le-power8-glibc.config +++ b/buildroot/support/config-fragments/autobuild/br-powerpc64le-power8-glibc.config @@ -2,8 +2,8 @@ BR2_powerpc64le=y BR2_powerpc_power8=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y -BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-powerpc64le-power8-glibc-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.net/toolchains/tarballs/br-powerpc64le-power8-glibc-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-sh4-full.config b/buildroot/support/config-fragments/autobuild/br-sh4-full.config index 884fbc793b3..87796fb65e5 100644 --- a/buildroot/support/config-fragments/autobuild/br-sh4-full.config +++ b/buildroot/support/config-fragments/autobuild/br-sh4-full.config @@ -2,9 +2,9 @@ BR2_sh=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-sh4-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-sh4-full-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-sparc-uclibc.config b/buildroot/support/config-fragments/autobuild/br-sparc-uclibc.config index 19bce355e53..4b6b8195786 100644 --- a/buildroot/support/config-fragments/autobuild/br-sparc-uclibc.config +++ b/buildroot/support/config-fragments/autobuild/br-sparc-uclibc.config @@ -1,7 +1,7 @@ BR2_sparc=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y -BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-sparc-uclibc-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-sparc-uclibc-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y diff --git a/buildroot/support/config-fragments/autobuild/br-sparc64-glibc.config b/buildroot/support/config-fragments/autobuild/br-sparc64-glibc.config index 093de54b9b7..5dbe6df5bd3 100644 --- a/buildroot/support/config-fragments/autobuild/br-sparc64-glibc.config +++ b/buildroot/support/config-fragments/autobuild/br-sparc64-glibc.config @@ -1,7 +1,7 @@ BR2_sparc64=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y -BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-sparc64-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-sparc64-full-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_1=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_GLIBC=y diff --git a/buildroot/support/config-fragments/autobuild/br-x86-64-core2-full.config b/buildroot/support/config-fragments/autobuild/br-x86-64-core2-full.config index c1ccddbe20f..50edff5f7b5 100644 --- a/buildroot/support/config-fragments/autobuild/br-x86-64-core2-full.config +++ b/buildroot/support/config-fragments/autobuild/br-x86-64-core2-full.config @@ -3,9 +3,9 @@ BR2_x86_core2=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-x86-64-core2-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-x86-64-core2-full-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_4=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-x86-64-musl.config b/buildroot/support/config-fragments/autobuild/br-x86-64-musl.config index 6ee19ab2ed5..6f5b23d3010 100644 --- a/buildroot/support/config-fragments/autobuild/br-x86-64-musl.config +++ b/buildroot/support/config-fragments/autobuild/br-x86-64-musl.config @@ -3,8 +3,8 @@ BR2_x86_atom=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-x86-64-musl-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-x86-64-musl-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-xtensa-full-internal.config b/buildroot/support/config-fragments/autobuild/br-xtensa-full-internal.config index f642a4d76bc..89e81d4c457 100644 --- a/buildroot/support/config-fragments/autobuild/br-xtensa-full-internal.config +++ b/buildroot/support/config-fragments/autobuild/br-xtensa-full-internal.config @@ -1,4 +1,3 @@ BR2_xtensa=y -BR2_JLEVEL=8 BR2_TOOLCHAIN_BUILDROOT_LOCALE=y BR2_TOOLCHAIN_BUILDROOT_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/br-xtensa-full.config b/buildroot/support/config-fragments/autobuild/br-xtensa-full.config index 23e2b8b7ef8..d60a71a1929 100644 --- a/buildroot/support/config-fragments/autobuild/br-xtensa-full.config +++ b/buildroot/support/config-fragments/autobuild/br-xtensa-full.config @@ -1,9 +1,9 @@ BR2_xtensa=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y -BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-xtensa-full-2017.11-rc1.tar.bz2" +BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-xtensa-full-2018.02-891-g046c5e2.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_6=y -BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_13=y +BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_16=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y diff --git a/buildroot/support/config-fragments/autobuild/toolchain-configs.csv b/buildroot/support/config-fragments/autobuild/toolchain-configs.csv index efb78eec4f9..64abfb3fd47 100644 --- a/buildroot/support/config-fragments/autobuild/toolchain-configs.csv +++ b/buildroot/support/config-fragments/autobuild/toolchain-configs.csv @@ -1,18 +1,38 @@ +# 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/br-arm-full.config,x86_64 + +# Test a toolchain with glibc and a very recent gcc version +support/config-fragments/autobuild/br-arm-cortex-a9-glibc.config,x86_64 + +# Test a noMMU toolchain with no dynamic library support +support/config-fragments/autobuild/br-arm-cortex-m4-full.config,x86_64 + +# Test a musl toolchain +support/config-fragments/autobuild/br-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 + +# Test a toolchain with an old gcc version (gcc 4.8) support/config-fragments/autobuild/armv5-ctng-linux-gnueabi.config,x86 + +# Toolchains used by test-pkg only when the '-a' option is passed: support/config-fragments/autobuild/armv7-ctng-linux-gnueabihf.config,x86 support/config-fragments/autobuild/br-aarch64-glibc.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-arcle-hs38.config,x86_64 support/config-fragments/autobuild/br-arm-basic.config,x86_64 -support/config-fragments/autobuild/br-arm-cortex-a9-glibc.config,x86_64 support/config-fragments/autobuild/br-arm-cortex-a9-musl.config,x86_64 -support/config-fragments/autobuild/br-arm-cortex-m4-full.config,x86_64 -support/config-fragments/autobuild/br-arm-full.config,x86_64 support/config-fragments/autobuild/br-arm-full-nothread.config,x86_64 -support/config-fragments/autobuild/br-arm-full-static.config,x86_64 support/config-fragments/autobuild/br-arm-internal-full.config,any -support/config-fragments/autobuild/br-bfin-full.config,x86_64 +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-i386-pentium-mmx-musl.config,x86_64 support/config-fragments/autobuild/br-m68k-5208-full.config,x86_64 @@ -34,7 +54,6 @@ support/config-fragments/autobuild/br-sh4-full.config,x86_64 support/config-fragments/autobuild/br-sparc-uclibc.config,x86_64 support/config-fragments/autobuild/br-sparc64-glibc.config,x86_64 support/config-fragments/autobuild/br-x86-64-core2-full.config,x86_64 -support/config-fragments/autobuild/br-x86-64-musl.config,x86_64 support/config-fragments/autobuild/br-xtensa-full.config,x86_64 support/config-fragments/autobuild/br-xtensa-full-internal.config,any support/config-fragments/autobuild/i686-ctng-linux-gnu.config,x86 diff --git a/buildroot/support/dependencies/check-host-lzip.mk b/buildroot/support/dependencies/check-host-lzip.mk index 00cdd0a2364..cdd784058c8 100644 --- a/buildroot/support/dependencies/check-host-lzip.mk +++ b/buildroot/support/dependencies/check-host-lzip.mk @@ -1,5 +1,5 @@ ifeq (,$(call suitable-host-package,lzip,$(LZCAT))) -DEPENDENCIES_HOST_PREREQ += host-lzip +BR2_LZIP_HOST_DEPENDENCY = host-lzip EXTRACTOR_DEPENDENCY_PRECHECKED_EXTENSIONS += .lz LZCAT = $(HOST_DIR)/bin/lzip -d -c endif diff --git a/buildroot/support/dependencies/check-host-tar.mk b/buildroot/support/dependencies/check-host-tar.mk index ad0b32e2773..07d02fd1b12 100644 --- a/buildroot/support/dependencies/check-host-tar.mk +++ b/buildroot/support/dependencies/check-host-tar.mk @@ -1,6 +1,6 @@ TAR ?= tar ifeq (,$(call suitable-host-package,tar,$(TAR))) -DEPENDENCIES_HOST_PREREQ += host-tar TAR = $(HOST_DIR)/bin/tar +BR2_TAR_HOST_DEPENDENCY = host-tar endif diff --git a/buildroot/support/dependencies/check-host-tar.sh b/buildroot/support/dependencies/check-host-tar.sh index 2143877524e..08573073964 100755 --- a/buildroot/support/dependencies/check-host-tar.sh +++ b/buildroot/support/dependencies/check-host-tar.sh @@ -26,10 +26,11 @@ if [ ! -z "${version_bsd}" ] ; then minor=0 fi -# Minimal version = 1.17 (previous versions do not correctly unpack archives -# containing hard-links if the --strip-components option is used). +# Minimal version = 1.27 (previous versions do not correctly unpack archives +# containing hard-links if the --strip-components option is used or create +# different gnu long link headers for path elements > 100 characters). major_min=1 -minor_min=17 +minor_min=27 # Maximal version = 1.29 (1.30 changed --numeric-owner output for # filenames > 100 characters). This is really a fix for a bug in diff --git a/buildroot/support/dependencies/check-host-xzcat.mk b/buildroot/support/dependencies/check-host-xzcat.mk index 9be75c73111..e5d72f95dde 100644 --- a/buildroot/support/dependencies/check-host-xzcat.mk +++ b/buildroot/support/dependencies/check-host-xzcat.mk @@ -2,7 +2,7 @@ # If it is not present, build our own host-xzcat ifeq (,$(call suitable-host-package,xzcat,$(XZCAT))) -DEPENDENCIES_HOST_PREREQ += host-xz +BR2_XZCAT_HOST_DEPENDENCY = host-xz EXTRACTOR_DEPENDENCY_PRECHECKED_EXTENSIONS += .xz .lzma XZCAT = $(HOST_DIR)/bin/xzcat endif diff --git a/buildroot/support/dependencies/dependencies.mk b/buildroot/support/dependencies/dependencies.mk index 3fc235863c7..563574d6ad9 100644 --- a/buildroot/support/dependencies/dependencies.mk +++ b/buildroot/support/dependencies/dependencies.mk @@ -17,23 +17,13 @@ endef include support/dependencies/check-host-tar.mk -include $(sort $(filter-out %-tar.mk,$(wildcard support/dependencies/check-host-*.mk))) -ifeq ($(BR2_CCACHE),y) -DEPENDENCIES_HOST_PREREQ += host-ccache -endif - -core-dependencies: +dependencies: @MAKE="$(MAKE)" DL_TOOLS="$(sort $(DL_TOOLS_DEPENDENCIES))" \ $(TOPDIR)/support/dependencies/dependencies.sh -$(DEPENDENCIES_HOST_PREREQ): HOSTCC=$(HOSTCC_NOCCACHE) -$(DEPENDENCIES_HOST_PREREQ): HOSTCXX=$(HOSTCXX_NOCCACHE) -$(DEPENDENCIES_HOST_PREREQ): core-dependencies - -dependencies: core-dependencies $(DEPENDENCIES_HOST_PREREQ) - ################################################################################ # # Toplevel Makefile options # ################################################################################ -.PHONY: dependencies core-dependencies +.PHONY: dependencies diff --git a/buildroot/support/dependencies/dependencies.sh b/buildroot/support/dependencies/dependencies.sh index 985b1d863b0..f98678973b3 100755 --- a/buildroot/support/dependencies/dependencies.sh +++ b/buildroot/support/dependencies/dependencies.sh @@ -11,27 +11,30 @@ if test $? != 0 ; then exit 1 fi -# sanity check for CWD in LD_LIBRARY_PATH -# try not to rely on egrep.. -if test -n "$LD_LIBRARY_PATH" ; then - echo TRiGGER_start"$LD_LIBRARY_PATH"TRiGGER_end | grep '::' >/dev/null 2>&1 || - echo TRiGGER_start"$LD_LIBRARY_PATH"TRiGGER_end | grep ':\.:' >/dev/null 2>&1 || - echo TRiGGER_start"$LD_LIBRARY_PATH"TRiGGER_end | grep 'TRiGGER_start:' >/dev/null 2>&1 || - echo TRiGGER_start"$LD_LIBRARY_PATH"TRiGGER_end | grep 'TRiGGER_start\.:' >/dev/null 2>&1 || - echo TRiGGER_start"$LD_LIBRARY_PATH"TRiGGER_end | grep ':TRiGGER_end' >/dev/null 2>&1 || - echo TRiGGER_start"$LD_LIBRARY_PATH"TRiGGER_end | grep ':\.TRiGGER_end' >/dev/null 2>&1 || - echo TRiGGER_start"$LD_LIBRARY_PATH"TRiGGER_end | grep 'TRiGGER_start\.TRiGGER_end' >/dev/null 2>&1 - if test $? = 0; then - echo - echo "You seem to have the current working directory in your" - echo "LD_LIBRARY_PATH environment variable. This doesn't work." - exit 1; - fi -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 -# PATH should not contain a newline, otherwise it fails in spectacular ways -# as soon as PATH is referenced in a package rule -case "${PATH}" in +# 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 + ;; (*" "*) printf "\n" # Break the '\n' sequence, or a \n is printed (which is not what we want). @@ -41,22 +44,6 @@ case "${PATH}" in ;; esac -# sanity check for CWD in PATH. Having the current working directory -# in the PATH makes the toolchain build process break. -# try not to rely on egrep.. -if test -n "$PATH" ; then - echo TRiGGER_start"$PATH"TRiGGER_end | grep ':\.:' >/dev/null 2>&1 || - echo TRiGGER_start"$PATH"TRiGGER_end | grep 'TRiGGER_start\.:' >/dev/null 2>&1 || - echo TRiGGER_start"$PATH"TRiGGER_end | grep ':\.TRiGGER_end' >/dev/null 2>&1 || - echo TRiGGER_start"$PATH"TRiGGER_end | grep 'TRiGGER_start\.TRiGGER_end' >/dev/null 2>&1 - if test $? = 0; then - echo - echo "You seem to have the current working directory in your" - echo "PATH environment variable. This doesn't work." - exit 1; - fi -fi; - if test -n "$PERL_MM_OPT" ; then echo echo "You have PERL_MM_OPT defined because Perl local::lib" diff --git a/buildroot/support/docker/Dockerfile b/buildroot/support/docker/Dockerfile index ce3fdd9cc22..f01ac25f93f 100644 --- a/buildroot/support/docker/Dockerfile +++ b/buildroot/support/docker/Dockerfile @@ -27,10 +27,19 @@ RUN dpkg --add-architecture i386 && \ cvs bzr git mercurial subversion wget \ cpio unzip \ libncurses5-dev \ - python-nose2 python-pexpect qemu-system-arm qemu-system-x86 && \ + python-nose2 python-pexpect qemu-system-arm qemu-system-x86 \ + python-pip && \ apt-get -y autoremove && \ apt-get -y clean +# For check-flake8 +RUN python -m pip install --upgrade pip setuptools wheel && \ + pip install -q \ + flake8==3.5.0 \ + mccabe==0.6.1 \ + pycodestyle==2.3.1 \ + pyflakes==1.6.0 + # 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 diff --git a/buildroot/support/download/bzr b/buildroot/support/download/bzr index 75b7b415c1f..5289a421cd0 100755 --- a/buildroot/support/download/bzr +++ b/buildroot/support/download/bzr @@ -5,28 +5,31 @@ set -e # Download helper for bzr, to be called from the download wrapper script # -# Call it as: -# .../bzr [-q] OUT_FILE REPO_URL REV BASENAME +# 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 verbose= -while getopts :q OPT; do +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in q) verbose=-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)) -output="${1}" -repo="${2}" -rev="${3}" -basename="${4}" - -shift 4 # Get rid of our options +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) @@ -51,5 +54,5 @@ if [ ${bzr_version} -ge ${bzr_min_version} ]; then fi _bzr export ${verbose} --root="'${basename}/'" --format=tgz \ - ${timestamp_opt} - "${@}" "'${repo}'" -r "'${rev}'" \ + ${timestamp_opt} - "${@}" "'${uri}'" -r "'${cset}'" \ >"${output}" diff --git a/buildroot/support/download/cvs b/buildroot/support/download/cvs index 50050ab1c9c..3f77b849e48 100755 --- a/buildroot/support/download/cvs +++ b/buildroot/support/download/cvs @@ -5,28 +5,32 @@ set -e # Download helper for cvs, to be called from the download wrapper script # -# Call it as: -# .../cvs [-q] OUT_FILE CVS_URL REV PKG_NAME BASENAME +# 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 verbose= -while getopts :q OPT; do +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in q) verbose=-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)) -output="${1}" -repo="${2}" -rev="${3}" -rawname="${4}" -basename="${5}" - -shift 5 # Get rid of our options +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) @@ -42,14 +46,14 @@ else select="-r" fi -# The absence of an initial : on ${repo} means access method undefined -if [[ ! "${repo}" =~ ^: ]]; then +# The absence of an initial : on ${uri} means access method undefined +if [[ ! "${uri}" =~ ^: ]]; then # defaults to anonymous pserver - repo=":pserver:anonymous@${repo}" + uri=":pserver:anonymous@${uri}" fi export TZ=UTC -_cvs ${verbose} -z3 -d"'${repo}'" \ +_cvs ${verbose} -z3 -d"'${uri}'" \ co "${@}" -d "'${basename}'" ${select} "'${rev}'" -P "'${rawname}'" tar czf "${output}" "${basename}" diff --git a/buildroot/support/download/dl-wrapper b/buildroot/support/download/dl-wrapper index f944b71db52..8d6365e08d3 100755 --- a/buildroot/support/download/dl-wrapper +++ b/buildroot/support/download/dl-wrapper @@ -19,33 +19,52 @@ # We want to catch any unexpected failure, and exit immediately. set -e +export BR_BACKEND_DL_GETOPTS=":hc:d:o:n:N:H:ru:qf:e" + main() { local OPT OPTARG - local backend output hfile recurse quiet + local backend output hfile recurse quiet rc + local -a uris # Parse our options; anything after '--' is for the backend - while getopts :hb:o:H:rq OPT; do + while getopts ":hc:d:D:o:n:N:H:rf:u:q" OPT; do case "${OPT}" in h) help; exit 0;; - b) backend="${OPTARG}";; + 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) hfile="${OPTARG}";; r) recurse="-r";; + f) filename="${OPTARG}";; + u) uris+=( "${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 "${backend}" ]; then - error "no backend specified, use -b\n" - fi 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. + 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 @@ -64,36 +83,84 @@ main() { warn "Re-downloading '%s'...\n" "${output##*/}" fi - # 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" - - # 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 temporary directory to - # remove all the cruft it may have left behind. Then we just exit in - # error too. - if ! "${OLDPWD}/support/download/${backend}" ${quiet} ${recurse} "${tmpf}" "${@}"; then - rm -rf "${tmpd}" - exit 1 - 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=${uri%+*} + case "${backend}" in + git|svn|cvs|bzr|file|scp|hg) ;; + *) backend="wget" ;; + esac + uri=${uri#*+} + + urlencode=${backend#*|} + # urlencode must be "urlencode" + [ "${urlencode}" != "urlencode" ] && urlencode="" - # cd back to free the temp-dir, so we can remove it later - cd "${OLDPWD}" + # 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" - # Check if the downloaded file is sane, and matches the stored hashes - # for that file - if ! support/download/check-hash ${quiet} "${hfile}" "${tmpf}" "${output##*/}"; then + # 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}" \ + $([ -n "${urlencode}" ] && printf %s '-e') \ + -c "${cset}" \ + -d "${dl_dir}" \ + -n "${raw_base_name}" \ + -N "${base_name}" \ + -f "${filename}" \ + -u "${uri}" \ + -o "${tmpf}" \ + ${quiet} ${recurse} -- "${@}" + then + # cd back to keep path coherence + cd "${OLDPWD}" + rm -rf "${tmpd}" + continue + 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} "${hfile}" "${tmpf}" "${output##*/}"; 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 @@ -141,6 +208,8 @@ main() { rm -f "${tmp_output}" exit 1 fi + + return ${rc} } help() { @@ -159,16 +228,13 @@ DESCRIPTION -h This help text. - -b BACKEND - Wrap the specified BACKEND. Known backends are: - bzr Bazaar - cp Local files - cvs Concurrent Versions System - git Git - hg Mercurial - scp Secure copy - svn Subversion - wget HTTP download + -u URIs + The URI to get the file from, the URI must respect the format given in + the example. + You may give as many '-u URI' as you want, the script will stop at the + frist successful download. + + Example: backend+URI; git+http://example.com or http+http://example.com -o FILE Store the downloaded archive in FILE. diff --git a/buildroot/support/download/cp b/buildroot/support/download/file similarity index 61% rename from buildroot/support/download/cp rename to buildroot/support/download/file index 0ee1f3ba823..e52fcf2c8ca 100755 --- a/buildroot/support/download/cp +++ b/buildroot/support/download/file @@ -5,8 +5,11 @@ set -e # Download helper for cp, to be called from the download wrapper script # -# Call it as: -# .../cp [-q] OUT_FILE SRC_FILE +# 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 @@ -17,18 +20,18 @@ set -e # Make 'cp' verbose by default, so it behaves a bit like the others. verbose=-v -while getopts :q OPT; do +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)) -output="${1}" -source="${2}" - -shift 2 # Get rid of our options +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) @@ -36,4 +39,4 @@ _localfiles() { eval ${LOCALFILES} "${@}" } -_localfiles ${verbose} "${@}""'${source}'" "'${output}'" +_localfiles ${verbose} "'${dir##file://}/${file}'" "'${output}'" diff --git a/buildroot/support/download/git b/buildroot/support/download/git index f590ff64944..11bb52c1e13 100755 --- a/buildroot/support/download/git +++ b/buildroot/support/download/git @@ -1,65 +1,119 @@ #!/usr/bin/env bash # We want to catch any unexpected failure, and exit immediately -set -e +set -E # Download helper for git, to be called from the download wrapper script # -# Call it as: -# .../git [-q] [-r] OUT_FILE REPO_URL CSET BASENAME -# -# -q Be quiet. -# -r Clone and archive sub-modules. +# 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 +# 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} +} + verbose= recurse=0 -while getopts :qr OPT; do +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in q) verbose=-q; exec >/dev/null;; 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)) -output="${1}" -repo="${2}" -cset="${3}" -basename="${4}" +shift $((OPTIND-1)) # Get rid of our options -shift 4 # 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 # Caller needs to single-quote its arguments to prevent them from # being expanded a second time (in case there are spaces in them) _git() { - eval ${GIT} "${@}" + eval GIT_DIR="${git_cache}/.git" ${GIT} "${@}" } -# Try a shallow clone, since it is faster than a full clone - but that only -# works if the version is a ref (tag or branch). Before trying to do a shallow -# clone we check if ${cset} is in the list provided by git ls-remote. If not -# we fall back on a full clone. +# 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. # -# Messages for the type of clone used are provided to ease debugging in case of -# problems -git_done=0 -if [ -n "$(_git ls-remote "'${repo}'" "'${cset}'" 2>&1)" ]; then - printf "Doing shallow clone\n" - if _git clone ${verbose} "${@}" --depth 1 -b "'${cset}'" "'${repo}'" "'${basename}'"; then - git_done=1 - else - printf "Shallow clone failed, falling back to doing a full clone\n" - fi -fi -if [ ${git_done} -eq 0 ]; then - printf "Doing full clone\n" - _git clone ${verbose} "${@}" "'${repo}'" "'${basename}'" +# 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 ! _git remote |grep -q -E '^origin$'; then + _git remote add origin "'${uri}'" fi -pushd "${basename}" >/dev/null +_git remote set-url origin "'${uri}'" + +printf "Fetching all references\n" +_git fetch origin +_git fetch origin -t # 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 @@ -72,9 +126,48 @@ 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. +# +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 -q "'${cset}'" +_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. # %cD is RFC2822, so it's fully qualified, with TZ and all. @@ -85,20 +178,24 @@ if [ ${recurse} -eq 1 ]; then _git submodule update --init --recursive fi -# We do not want the .git dir; we keep other .git files, in case they -# are the only files in their directory. +# Generate the archive, sort with the C locale so that it is reproducible. +# 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. -rm -rf .git - -popd >/dev/null +find . -not -type d \ + -and -not -path "./.git/*" >"${output}.list" +LC_ALL=C sort <"${output}.list" >"${output}.list.sorted" -# Generate the archive, sort with the C locale so that it is reproducible -find "${basename}" -not -type d >"${basename}.list" -LC_ALL=C sort <"${basename}.list" >"${basename}.list.sorted" # Create GNU-format tarballs, since that's the format of the tarballs on # sources.buildroot.org and used in the *.hash files -tar cf - --numeric-owner --owner=0 --group=0 --mtime="${date}" --format=gnu \ - -T "${basename}.list.sorted" >"${output}.tar" +tar cf - --transform="s#^\./#${basename}/#" \ + --numeric-owner --owner=0 --group=0 --mtime="${date}" --format=gnu \ + -T "${output}.list.sorted" >"${output}.tar" gzip -6 -n <"${output}.tar" >"${output}" + +rm -f "${output}.list" +rm -f "${output}.list.sorted" + +popd >/dev/null diff --git a/buildroot/support/download/hg b/buildroot/support/download/hg index 3af01690b30..efb515fca5b 100755 --- a/buildroot/support/download/hg +++ b/buildroot/support/download/hg @@ -5,27 +5,30 @@ set -e # Download helper for hg, to be called from the download wrapper script # -# Call it as: -# .../hg [-q] OUT_FILE REPO_URL CSET BASENAME +# 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 verbose= -while getopts :q OPT; do +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in q) verbose=-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)) -output="${1}" -repo="${2}" -cset="${3}" -basename="${4}" - -shift 4 # Get rid of our options +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) @@ -33,7 +36,7 @@ _hg() { eval ${HG} "${@}" } -_hg clone ${verbose} "${@}" --noupdate "'${repo}'" "'${basename}'" +_hg clone ${verbose} "${@}" --noupdate "'${uri}'" "'${basename}'" _hg archive ${verbose} --repository "'${basename}'" --type tgz \ --prefix "'${basename}'" --rev "'${cset}'" \ diff --git a/buildroot/support/download/scp b/buildroot/support/download/scp index 825fd41c647..8ecf2f4b220 100755 --- a/buildroot/support/download/scp +++ b/buildroot/support/download/scp @@ -5,25 +5,26 @@ set -e # Download helper for scp, to be called from the download wrapper script # -# Call it as: -# .../scp [-q] OUT_FILE SRC_URL +# Options: +# -q Be quiet. +# -o FILE Copy to local file FILE. +# -u FILE Copy from remote file FILE. # # Environment: # SCP : the scp command to call verbose= -while getopts :q OPT; do +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in q) verbose=-q;; + o) output="${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)) -output="${1}" -url="${2}" - -shift 2 # Get rid of our options +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) @@ -31,4 +32,4 @@ _scp() { eval ${SCP} "${@}" } -_scp ${verbose} "${@}" "'${url}'" "'${output}'" +_scp ${verbose} "${@}" "'${uri}'" "'${output}'" diff --git a/buildroot/support/download/svn b/buildroot/support/download/svn index 77abf3d02da..542b25c0a20 100755 --- a/buildroot/support/download/svn +++ b/buildroot/support/download/svn @@ -5,27 +5,30 @@ set -e # Download helper for svn, to be called from the download wrapper script # -# Call it as: -# .../svn [-q] OUT_FILE REPO_URL REV BASNAME +# 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. # # Environment: # SVN : the svn command to call verbose= -while getopts :q OPT; do +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in q) verbose=-q;; + o) output="${OPTARG}";; + u) uri="${OPTARG}";; + c) rev="${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)) -output="${1}" -repo="${2}" -rev="${3}" -basename="${4}" - -shift 4 # Get rid of our options +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) @@ -33,6 +36,6 @@ _svn() { eval ${SVN} "${@}" } -_svn export ${verbose} "${@}" "'${repo}@${rev}'" "'${basename}'" +_svn export ${verbose} "${@}" "'${uri}@${rev}'" "'${basename}'" tar czf "${output}" "${basename}" diff --git a/buildroot/support/download/wget b/buildroot/support/download/wget index 768de904c3a..c69e6071aac 100755 --- a/buildroot/support/download/wget +++ b/buildroot/support/download/wget @@ -5,25 +5,30 @@ set -e # Download helper for wget, to be called from the download wrapper script # -# Call it as: -# .../wget [-q] OUT_FILE URL +# 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 verbose= -while getopts :q OPT; do +while getopts "${BR_BACKEND_DL_GETOPTS}" OPT; do case "${OPT}" in q) verbose=-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)) -output="${1}" -url="${2}" - -shift 2 # Get rid of our options +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) @@ -31,4 +36,8 @@ _wget() { eval ${WGET} "${@}" } -_wget ${verbose} "${@}" -O "'${output}'" "'${url}'" +# Replace every '?' with '%3F' in the filename; only for the PRIMARY and BACKUP +# mirror +[ -n "${encode}" ] && filename=${filename//\?/%3F} + +_wget ${verbose} "${@}" -O "'${output}'" "'${url}/${filename}'" diff --git a/buildroot/support/kconfig/README.buildroot b/buildroot/support/kconfig/README.buildroot index 62e3a11b1e6..3140713b396 100644 --- a/buildroot/support/kconfig/README.buildroot +++ b/buildroot/support/kconfig/README.buildroot @@ -15,6 +15,7 @@ Then verify the toplevel targets work: config defconfig menuconfig + nconfig xconfig gconfig oldconfig diff --git a/buildroot/support/scripts/brpkgutil.py b/buildroot/support/scripts/brpkgutil.py index 4c99ae91103..e70d5253539 100644 --- a/buildroot/support/scripts/brpkgutil.py +++ b/buildroot/support/scripts/brpkgutil.py @@ -1,5 +1,6 @@ # Copyright (C) 2010-2013 Thomas Petazzoni +import logging import sys import subprocess @@ -7,18 +8,18 @@ # Execute the "make -show-version" command to get the version of a given # list of packages, and return the version formatted as a Python dictionary. def get_version(pkgs): - sys.stderr.write("Getting version for %s\n" % pkgs) + logging.info("Getting version for %s" % pkgs) cmd = ["make", "-s", "--no-print-directory"] for pkg in pkgs: cmd.append("%s-show-version" % pkg) p = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True) output = p.communicate()[0] if p.returncode != 0: - sys.stderr.write("Error getting version %s\n" % pkgs) + logging.error("Error getting version %s" % pkgs) sys.exit(1) output = output.split("\n") if len(output) != len(pkgs) + 1: - sys.stderr.write("Error getting version\n") + logging.error("Error getting version") sys.exit(1) version = {} for i in range(0, len(pkgs)): @@ -28,18 +29,18 @@ def get_version(pkgs): def _get_depends(pkgs, rule): - sys.stderr.write("Getting dependencies for %s\n" % pkgs) + logging.info("Getting dependencies for %s" % pkgs) cmd = ["make", "-s", "--no-print-directory"] for pkg in pkgs: cmd.append("%s-%s" % (pkg, rule)) p = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True) output = p.communicate()[0] if p.returncode != 0: - sys.stderr.write("Error getting dependencies %s\n" % pkgs) + logging.error("Error getting dependencies %s\n" % pkgs) sys.exit(1) output = output.split("\n") if len(output) != len(pkgs) + 1: - sys.stderr.write("Error getting dependencies\n") + logging.error("Error getting dependencies") sys.exit(1) deps = {} for i in range(0, len(pkgs)): diff --git a/buildroot/support/scripts/check-bin-arch b/buildroot/support/scripts/check-bin-arch index f6a4569c629..7f97696735c 100755 --- a/buildroot/support/scripts/check-bin-arch +++ b/buildroot/support/scripts/check-bin-arch @@ -1,18 +1,46 @@ #!/usr/bin/env bash -while getopts p:l:r:a: OPT ; do +# 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" +) + +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 " + echo "Usage: $0 -p -l -r -a [-i PATH ...]" exit 1 fi @@ -23,26 +51,11 @@ IFS=" " while read f; do - # Skip firmware files, they could be ELF files for other - # architectures - if [[ "${f}" =~ ^/(usr/)?lib/firmware/.* ]]; then - continue - fi - - # 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. - if [[ "${f}" =~ ^/lib/modules/.* ]]; then - continue - fi - - # Skip files in /usr/share, several packages (qemu, - # pru-software-support) legitimately install ELF binaries that - # are not for the target architecture - if [[ "${f}" =~ ^/usr/share/.* ]]; then - continue - fi + 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. diff --git a/buildroot/support/scripts/check-uniq-files b/buildroot/support/scripts/check-uniq-files index be808cce030..fbc6b5d6e7a 100755 --- a/buildroot/support/scripts/check-uniq-files +++ b/buildroot/support/scripts/check-uniq-files @@ -1,7 +1,6 @@ #!/usr/bin/env python import sys -import csv import argparse from collections import defaultdict @@ -26,16 +25,23 @@ def main(): return False file_to_pkg = defaultdict(list) - with open(args.packages_file_list[0], 'r') as pkg_file_list: - r = csv.reader(pkg_file_list, delimiter=',') - for row in r: - pkg = row[0] - file = row[1] + with open(args.packages_file_list[0], 'rb') as pkg_file_list: + for line in pkg_file_list.readlines(): + pkg, _, file = line.rstrip(b'\n').partition(b',') file_to_pkg[file].append(pkg) for file in file_to_pkg: if len(file_to_pkg[file]) > 1: - sys.stderr.write(warn.format(args.type, file, file_to_pkg[file])) + # If possible, try to decode the binary strings with + # the default user's locale + try: + sys.stderr.write(warn.format(args.type, file.decode(), + [p.decode() for p in file_to_pkg[file]])) + except UnicodeDecodeError: + # ... but fallback to just dumping them raw if they + # contain non-representable chars + sys.stderr.write(warn.format(args.type, file, + file_to_pkg[file])) if __name__ == "__main__": diff --git a/buildroot/support/scripts/fix-rpath b/buildroot/support/scripts/fix-rpath index 15705a3b0da..fa138ca15a2 100755 --- a/buildroot/support/scripts/fix-rpath +++ b/buildroot/support/scripts/fix-rpath @@ -56,6 +56,7 @@ EOF # ELF files should not be in these sub-directories HOST_EXCLUDEPATHS="/share/terminfo" STAGING_EXCLUDEPATHS="/usr/include /usr/share/terminfo" +TARGET_EXCLUDEPATHS="/lib/firmware" main() { local rootdir @@ -106,6 +107,11 @@ main() { 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" ) diff --git a/buildroot/support/scripts/graph-depends b/buildroot/support/scripts/graph-depends index 85c9bf0a4fb..621e6032781 100755 --- a/buildroot/support/scripts/graph-depends +++ b/buildroot/support/scripts/graph-depends @@ -21,6 +21,7 @@ # # Copyright (C) 2010-2013 Thomas Petazzoni +import logging import sys import subprocess import argparse @@ -31,96 +32,6 @@ 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 -mode = 0 - -# Limit drawing the dependency graph to this depth. 0 means 'no limit'. -max_depth = 0 - -# Whether to draw the transitive dependencies -transitive = True - -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("--colours", "-c", metavar="COLOR_LIST", dest="colours", - default="lightblue,grey,gainsboro", - help="Comma-separated list of the three colours 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=True, - help="Draw direct dependencies (the default)") -parser.add_argument("--reverse", dest="direct", action='store_false', - help="Draw reverse dependencies") -args = parser.parse_args() - -check_only = args.check_only - -if args.outfile is None: - outfile = sys.stdout -else: - if check_only: - sys.stderr.write("don't specify outfile and check-only at the same time\n") - sys.exit(1) - outfile = open(args.outfile, "w") - -if args.package is None: - mode = MODE_FULL -else: - mode = MODE_PKG - rootpkg = args.package - -max_depth = args.depth - -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 - -transitive = args.transitive - -if args.direct: - get_depends_func = brpkgutil.get_depends - arrow_dir = "forward" -else: - if mode == MODE_FULL: - sys.stderr.write("--reverse needs a package\n") - sys.exit(1) - get_depends_func = brpkgutil.get_rdepends - arrow_dir = "back" - -# Get the colours: we need exactly three colours, -# so no need not split more than 4 -# We'll let 'dot' validate the colours... -colours = args.colours.split(',', 4) -if len(colours) != 3: - sys.stderr.write("Error: incorrect colour list '%s'\n" % args.colours) - sys.exit(1) -root_colour = colours[0] -target_colour = colours[1] -host_colour = colours[2] allpkgs = [] @@ -129,7 +40,7 @@ allpkgs = [] # Buildroot PACKAGES and return it formatted as a Python list. This # list is used as the starting point for full dependency graphs def get_targets(): - sys.stderr.write("Getting targets\n") + logging.info("Getting targets") cmd = ["make", "-s", "--no-print-directory", "show-targets"] p = subprocess.Popen(cmd, stdout=subprocess.PIPE, universal_newlines=True) output = p.communicate()[0].strip() @@ -145,7 +56,7 @@ def get_targets(): # 'dependencies', which contains tuples of the form (pkg1 -> # pkg2_on_which_pkg1_depends, pkg3 -> pkg4_on_which_pkg3_depends) and # the function finally returns this list. -def get_all_depends(pkgs): +def get_all_depends(pkgs, get_depends_func): dependencies = [] # Filter the packages for which we already have the dependencies @@ -175,7 +86,7 @@ def get_all_depends(pkgs): deps.add(dep) if len(deps) != 0: - newdeps = get_all_depends(deps) + newdeps = get_all_depends(deps, get_depends_func) if newdeps is not None: dependencies += newdeps @@ -193,35 +104,6 @@ TARGET_EXCEPTIONS = [ "target-post-image", ] -# In full mode, start with the result of get_targets() to get the main -# targets and then use get_all_depends() for all targets -if mode == MODE_FULL: - targets = get_targets() - dependencies = [] - allpkgs.append('all') - filtered_targets = [] - for tg in targets: - # Skip uninteresting targets - if tg in TARGET_EXCEPTIONS: - continue - dependencies.append(('all', tg)) - filtered_targets.append(tg) - deps = get_all_depends(filtered_targets) - if deps is not None: - dependencies += deps - rootpkg = 'all' - -# In pkg mode, start directly with get_all_depends() on the requested -# package -elif mode == MODE_PKG: - dependencies = get_all_depends([rootpkg]) - -# Make the dependencies a dictionnary { 'pkg':[dep1, dep2, ...] } -dict_deps = {} -for dep in dependencies: - if dep[0] not in dict_deps: - dict_deps[dep[0]] = [] - dict_deps[dep[0]].append(dep[1]) # 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 @@ -311,10 +193,10 @@ def check_circular_deps(deps): chain.append(pkg) for p in deps[pkg]: if p in chain: - sys.stderr.write("\nRecursion detected for : %s\n" % (p)) + logging.warning("\nRecursion detected for : %s" % (p)) while True: _p = chain.pop() - sys.stderr.write("which is a dependency of: %s\n" % (_p)) + logging.warning("which is a dependency of: %s" % (_p)) if p == _p: sys.exit(1) recurse(p) @@ -328,7 +210,7 @@ def check_circular_deps(deps): # This functions trims down the dependency list of all packages. # It applies in sequence all the dependency-elimination methods. -def remove_extra_deps(deps): +def remove_extra_deps(deps, transitive): for pkg in list(deps.keys()): if not pkg == 'all': deps[pkg] = remove_mandatory_deps(pkg, deps) @@ -338,32 +220,22 @@ def remove_extra_deps(deps): return deps -check_circular_deps(dict_deps) -if check_only: - sys.exit(0) - -dict_deps = remove_extra_deps(dict_deps) -dict_version = brpkgutil.get_version([pkg for pkg in allpkgs - if pkg != "all" and not pkg.startswith("root")]) - - # Print the attributes of a node: label and fill-color -def print_attrs(pkg): +def print_attrs(outfile, pkg, version, depth, colors): name = pkg_node_name(pkg) if pkg == 'all': label = 'ALL' else: label = pkg - if pkg == 'all' or (mode == MODE_PKG and pkg == rootpkg): - color = root_colour + if depth == 0: + color = colors[0] else: if pkg.startswith('host') \ or pkg.startswith('toolchain') \ or pkg.startswith('rootfs'): - color = host_colour + color = colors[2] else: - color = target_colour - version = dict_version.get(pkg) + color = colors[1] if version == "virtual": outfile.write("%s [label = <%s>]\n" % (name, label)) else: @@ -371,12 +243,19 @@ def print_attrs(pkg): outfile.write("%s [color=%s,style=filled]\n" % (name, color)) +done_deps = [] + + # Print the dependency graph of a package -def print_pkg_deps(depth, pkg): +def print_pkg_deps(outfile, dict_deps, dict_version, stop_list, exclude_list, + arrow_dir, draw_graph, depth, max_depth, pkg, colors): if pkg in done_deps: return done_deps.append(pkg) - print_attrs(pkg) + if draw_graph: + print_attrs(outfile, pkg, dict_version.get(pkg), depth, colors) + elif depth != 0: + outfile.write("%s " % pkg) if pkg not in dict_deps: return for p in stop_list: @@ -400,14 +279,152 @@ def print_pkg_deps(depth, pkg): add = False break if add: - outfile.write("%s -> %s [dir=%s]\n" % (pkg_node_name(pkg), pkg_node_name(d), arrow_dir)) - print_pkg_deps(depth + 1, d) + if draw_graph: + outfile.write("%s -> %s [dir=%s]\n" % (pkg_node_name(pkg), pkg_node_name(d), arrow_dir)) + print_pkg_deps(outfile, dict_deps, dict_version, stop_list, exclude_list, + arrow_dir, draw_graph, depth + 1, max_depth, d, colors) + + +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("--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=True, + help="Draw direct dependencies (the default)") + parser.add_argument("--reverse", dest="direct", action='store_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 args.package is None: + mode = MODE_FULL + else: + mode = MODE_PKG + rootpkg = args.package -# Start printing the graph data -outfile.write("digraph G {\n") + 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.direct: + get_depends_func = brpkgutil.get_depends + arrow_dir = "forward" + else: + if mode == MODE_FULL: + logging.error("--reverse needs a package") + sys.exit(1) + get_depends_func = brpkgutil.get_rdepends + arrow_dir = "back" + + 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) + + # In full mode, start with the result of get_targets() to get the main + # targets and then use get_all_depends() for all targets + if mode == MODE_FULL: + targets = get_targets() + dependencies = [] + allpkgs.append('all') + filtered_targets = [] + for tg in targets: + # Skip uninteresting targets + if tg in TARGET_EXCEPTIONS: + continue + dependencies.append(('all', tg)) + filtered_targets.append(tg) + deps = get_all_depends(filtered_targets, get_depends_func) + if deps is not None: + dependencies += deps + rootpkg = 'all' + + # In pkg mode, start directly with get_all_depends() on the requested + # package + elif mode == MODE_PKG: + dependencies = get_all_depends([rootpkg], get_depends_func) + + # Make the dependencies a dictionnary { 'pkg':[dep1, dep2, ...] } + dict_deps = {} + for dep in dependencies: + if dep[0] not in dict_deps: + dict_deps[dep[0]] = [] + dict_deps[dep[0]].append(dep[1]) + + check_circular_deps(dict_deps) + if check_only: + sys.exit(0) + + dict_deps = remove_extra_deps(dict_deps, args.transitive) + dict_version = brpkgutil.get_version([pkg for pkg in allpkgs + if pkg != "all" and not pkg.startswith("root")]) + + # Start printing the graph data + if draw_graph: + outfile.write("digraph G {\n") + + print_pkg_deps(outfile, dict_deps, dict_version, stop_list, exclude_list, + arrow_dir, draw_graph, 0, args.depth, rootpkg, colors) + + if draw_graph: + outfile.write("}\n") + else: + outfile.write("\n") -done_deps = [] -print_pkg_deps(0, rootpkg) -outfile.write("}\n") +if __name__ == "__main__": + sys.exit(main()) diff --git a/buildroot/support/scripts/pkg-stats b/buildroot/support/scripts/pkg-stats index 48a2cc29a16..43f7e8d5433 100755 --- a/buildroot/support/scripts/pkg-stats +++ b/buildroot/support/scripts/pkg-stats @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +#!/usr/bin/env python # Copyright (C) 2009 by Thomas Petazzoni # @@ -16,16 +16,275 @@ # 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 an HTML file that contains a report about all -# Buildroot packages, their usage of the different package -# infrastructure and possible cleanup actions -# -# Run the script from the Buildroot toplevel directory: -# -# ./support/scripts/pkg-stats > /tmp/pkg.html -# - -echo " +import argparse +import datetime +import fnmatch +import os +from collections import defaultdict +import re +import subprocess +import sys + +INFRA_RE = re.compile("\$\(eval \$\(([a-z-]*)-package\)\)") + + +class Package: + all_licenses = list() + all_license_files = list() + all_versions = dict() + + def __init__(self, name, path): + self.name = name + self.path = path + self.infras = None + self.has_license = False + self.has_license_files = False + self.has_hash = False + self.patch_count = 0 + self.warnings = 0 + self.current_version = None + + def pkgvar(self): + return self.name.upper().replace("-", "_") + + def set_infra(self): + """ + Fills in the .infras field + """ + self.infras = list() + with open(self.path, 'r') as f: + lines = f.readlines() + for l in lines: + match = INFRA_RE.match(l) + if not match: + continue + infra = match.group(1) + if infra.startswith("host-"): + self.infras.append(("host", infra[5:])) + else: + self.infras.append(("target", infra)) + + def set_license(self): + """ + Fills in the .has_license and .has_license_files fields + """ + var = self.pkgvar() + if var in self.all_licenses: + self.has_license = True + if var in self.all_license_files: + self.has_license_files = True + + def set_hash_info(self): + """ + Fills in the .has_hash field + """ + hashpath = self.path.replace(".mk", ".hash") + self.has_hash = os.path.exists(hashpath) + + def set_patch_count(self): + """ + Fills in the .patch_count field + """ + self.patch_count = 0 + pkgdir = os.path.dirname(self.path) + for subdir, _, _ in os.walk(pkgdir): + self.patch_count += len(fnmatch.filter(os.listdir(subdir), '*.patch')) + + 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_check_package_warnings(self): + """ + Fills in the .warnings field + """ + cmd = ["./utils/check-package"] + pkgdir = os.path.dirname(self.path) + for root, dirs, files in os.walk(pkgdir): + for f in files: + if f.endswith(".mk") or f.endswith(".hash") or f == "Config.in" or f == "Config.in.host": + 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) + if m: + self.warnings = int(m.group(1)) + return + + 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.has_license, self.has_license_files, self.has_hash, self.patch_count) + + +def get_pkglist(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/common.mk", + "linux/linux-ext-.*.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/matchbox/matchbox.mk", + "package/opengl/opengl.mk", + "package/qt5/qt5.mk", + "package/x11r7/x11r7.mk", + "package/doc-asciidoc.mk", + "package/pkg-.*.mk", + "package/nvidia-tegra23/nvidia-tegra23.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 root, dirs, files in os.walk("."): + rootdir = root.split("/") + if len(rootdir) < 2: + continue + if rootdir[1] 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: + # pkgpath[2:] strips the initial './' + if re.match(exclude, pkgpath[2:]): + skip = True + continue + if skip: + continue + p = Package(pkgname, pkgpath) + packages.append(p) + count += 1 + if npackages and count == npackages: + return packages + return packages + + +def package_init_make_info(): + # Licenses + o = subprocess.check_output(["make", "BR2_HAVE_DOT_CONFIG=y", + "-s", "printvars", "VARS=%_LICENSE"]) + for l in o.splitlines(): + # Get variable name and value + pkgvar, value = l.split("=") + + # If present, strip HOST_ from variable name + if pkgvar.startswith("HOST_"): + pkgvar = pkgvar[5:] + + # Strip _LICENSE + pkgvar = pkgvar[:-8] + + # If value is "unknown", no license details available + if value == "unknown": + continue + Package.all_licenses.append(pkgvar) + + # License files + o = subprocess.check_output(["make", "BR2_HAVE_DOT_CONFIG=y", + "-s", "printvars", "VARS=%_LICENSE_FILES"]) + for l in o.splitlines(): + # Get variable name and value + pkgvar, value = l.split("=") + + # If present, strip HOST_ from variable name + if pkgvar.startswith("HOST_"): + pkgvar = pkgvar[5:] + + if pkgvar.endswith("_MANIFEST_LICENSE_FILES"): + continue + + # Strip _LICENSE_FILES + pkgvar = pkgvar[:-14] + + Package.all_license_files.append(pkgvar) + + # Version + o = subprocess.check_output(["make", "BR2_HAVE_DOT_CONFIG=y", + "-s", "printvars", "VARS=%_VERSION"]) + + # 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 version numbers + # (unlikely), we'll report the target version number. + version_list = o.splitlines() + version_list = [x for x in version_list if x.startswith("HOST_")] + \ + [x for x in version_list if not x.startswith("HOST_")] + for l in version_list: + # Get variable name and value + pkgvar, value = l.split("=") + + # If present, strip HOST_ from variable name + if pkgvar.startswith("HOST_"): + pkgvar = pkgvar[5:] + + if pkgvar.endswith("_DL_VERSION"): + continue + + # Strip _VERSION + pkgvar = pkgvar[:-8] + + Package.all_versions[pkgvar] = value + + +def calculate_stats(packages): + stats = defaultdict(int) + 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.has_license: + stats["license"] += 1 + else: + stats["no-license"] += 1 + if pkg.has_license_files: + stats["license-files"] += 1 + else: + stats["no-license-files"] += 1 + if pkg.has_hash: + stats["hash"] += 1 + else: + stats["no-hash"] += 1 + stats["patches"] += pkg.patch_count + return stats + + +html_header = """ +