From 223379aeec87098e656e069a202455f5cde52c04 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sun, 7 Apr 2024 20:58:19 +0200 Subject: [PATCH 001/247] enable MPTCP support --- buildroot-external/kernel/6.1/global.config | 4 ++++ buildroot-external/kernel/6.6/global.config | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/buildroot-external/kernel/6.1/global.config b/buildroot-external/kernel/6.1/global.config index ca00788..9cb8de4 100644 --- a/buildroot-external/kernel/6.1/global.config +++ b/buildroot-external/kernel/6.1/global.config @@ -194,6 +194,10 @@ CONFIG_IPV6_SIT=m CONFIG_IP_MROUTE=y CONFIG_IPV6_MROUTE=y +# enable mptcp support +CONFIG_MPTCP=y +CONFIG_MPTCP_IPV6=y + # disable network bridge support # CONFIG_BRIDGE is not set diff --git a/buildroot-external/kernel/6.6/global.config b/buildroot-external/kernel/6.6/global.config index 8f6e0e3..1fec45f 100644 --- a/buildroot-external/kernel/6.6/global.config +++ b/buildroot-external/kernel/6.6/global.config @@ -218,6 +218,10 @@ CONFIG_IPV6_ROUTER_PREF=y CONFIG_IP_MROUTE=y CONFIG_IPV6_MROUTE=y +# enable mptcp support +CONFIG_MPTCP=y +CONFIG_MPTCP_IPV6=y + # disable network bridge support # CONFIG_BRIDGE is not set From 404bc113a489914a28f10b034b1f29fc7fb378ea Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sun, 7 Apr 2024 21:01:27 +0200 Subject: [PATCH 002/247] bump upstream kernel to 6.6.25 --- buildroot-external/configs/intelnuc.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 4 ++-- buildroot-external/patches/linux/linux.hash | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/buildroot-external/configs/intelnuc.config b/buildroot-external/configs/intelnuc.config index 653e3d5..c9640b5 100644 --- a/buildroot-external/configs/intelnuc.config +++ b/buildroot-external/configs/intelnuc.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/intelnuc/post- BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/intelnuc/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/intelnuc" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.23" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.25" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/intelnuc/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 6a27e4c..7510510 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -28,7 +28,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.23" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.25" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index 1dc5a49..dcdce7e 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,2 +1,2 @@ -sha256 200fd119cb9ef06bcedcdb52be00ba443163eab154295c5831fed9a12211a8b9 linux-6.6.23.tar.xz -sha256 f2de57e2e0e945bd97ab59b607dea082b1650f02e82c63795797cd36e03c4ccc stable_20240124.tar.gz +sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz +sha256 99d210be87908233a55b0fadc0dccd3b95926c0651b6b82e37350b2029de1f44 linux-6.6.25.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index 1dc5a49..dcdce7e 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,2 +1,2 @@ -sha256 200fd119cb9ef06bcedcdb52be00ba443163eab154295c5831fed9a12211a8b9 linux-6.6.23.tar.xz -sha256 f2de57e2e0e945bd97ab59b607dea082b1650f02e82c63795797cd36e03c4ccc stable_20240124.tar.gz +sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz +sha256 99d210be87908233a55b0fadc0dccd3b95926c0651b6b82e37350b2029de1f44 linux-6.6.25.tar.xz From b73faac6865547c1c1e1820d03d56eb3f38dc5a1 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Mon, 8 Apr 2024 09:06:48 +0200 Subject: [PATCH 003/247] optimize global buildroot config --- buildroot-external/Buildroot.config | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index f9cebed..398d589 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -10,11 +10,13 @@ BR2_TARGET_GENERIC_HOSTNAME="thinroot" BR2_TARGET_GENERIC_ISSUE="Welcome to thinRoot" BR2_TARGET_GENERIC_PASSWD_SHA512=y BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV=y +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y BR2_TOOLCHAIN_BUILDROOT_CXX=y BR2_TARGET_GENERIC_GETTY_PORT="tty2" BR2_ENABLE_LOCALE_WHITELIST="C en_US de_DE" BR2_GENERATE_LOCALE="en_US de_DE" BR2_SYSTEM_ENABLE_NLS=y +BR2_TARGET_TZ_INFO=y BR2_TARGET_LOCALTIME="Europe/Berlin" BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_THINROOT_PATH)/rootfs-overlay" BR2_LINUX_KERNEL=y @@ -40,7 +42,6 @@ BR2_PACKAGE_F2FS_TOOLS=y BR2_PACKAGE_NTFS_3G=y BR2_PACKAGE_DEJAVU=y BR2_PACKAGE_LIBERATION=y -BR2_PACKAGE_MESA3D_DEMOS=y BR2_PACKAGE_FREERDP=y BR2_PACKAGE_MESA3D=y BR2_PACKAGE_MESA3D_LLVM=y @@ -62,6 +63,7 @@ BR2_PACKAGE_XAPP_XPROP=y BR2_PACKAGE_XAPP_XRANDR=y BR2_PACKAGE_XAPP_XSETROOT=y BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV=y +BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD=y BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y BR2_PACKAGE_XFONT_FONT_MISC_CYRILLIC=y BR2_PACKAGE_NODM=y @@ -84,6 +86,8 @@ BR2_PACKAGE_NTP_NTPDATE=y BR2_PACKAGE_WGET=y BR2_PACKAGE_IRQBALANCE=y BR2_PACKAGE_TAR=y +BR2_PACKAGE_UTIL_LINUX_RFKILL=y +BR2_TARGET_ROOTFS_CPIO=y BR2_TARGET_ROOTFS_CPIO_LZ4=y # BR2_TARGET_ROOTFS_TAR is not set BR2_PACKAGE_HOST_DOSFSTOOLS=y From de43aa98dfb7f457b5fd66616db46836b6a4950d Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Mon, 8 Apr 2024 11:32:47 +0200 Subject: [PATCH 004/247] bump qutselect to first 3.0 beta version with Qt6 support. --- buildroot-external/Buildroot.config | 5 +---- buildroot-external/package/qutselect/Config.in | 18 ++++++++++-------- .../package/qutselect/qutselect.mk | 7 ++++--- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index 398d589..cbe64f8 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -1,4 +1,5 @@ # Buildroot config settings +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y BR2_CCACHE=y BR2_DL_DIR="$(TOPDIR)/../download" # BR2_ENABLE_LOCALE_PURGE is not set @@ -51,10 +52,6 @@ BR2_PACKAGE_MESA3D_OPENGL_EGL=y BR2_PACKAGE_MESA3D_OPENGL_ES=y BR2_PACKAGE_PSPLASH=y BR2_PACKAGE_PSPLASH_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/patches/psplash/hzdr" -BR2_PACKAGE_QT5BASE_OPENGL=y -BR2_PACKAGE_QT5BASE_OPENGL_ES2=y -BR2_PACKAGE_QT5BASE_OPENGL_LIB=y -BR2_PACKAGE_QT5BASE_DEFAULT_QPA="xcb" BR2_PACKAGE_XORG7=y BR2_PACKAGE_XSERVER_XORG_SERVER=y BR2_PACKAGE_XLIB_LIBXAW=y diff --git a/buildroot-external/package/qutselect/Config.in b/buildroot-external/package/qutselect/Config.in index 1f42da9..836c0b2 100644 --- a/buildroot-external/package/qutselect/Config.in +++ b/buildroot-external/package/qutselect/Config.in @@ -1,13 +1,15 @@ config BR2_PACKAGE_QUTSELECT bool "qutselect" - select BR2_PACKAGE_QT5 - select BR2_PACKAGE_QT5BASE - select BR2_PACKAGE_QT5BASE_GUI - select BR2_PACKAGE_QT5BASE_XCB - select BR2_PACKAGE_QT5X11EXTRAS - select BR2_PACKAGE_QT5BASE_FONTCONFIG - select BR2_PACKAGE_QT5BASE_PNG + select BR2_PACKAGE_QT6 + select BR2_PACKAGE_QT6BASE + select BR2_PACKAGE_QT6BASE_GUI + select BR2_PACKAGE_QT6BASE_XCB + select BR2_PACKAGE_QT6X11EXTRAS + select BR2_PACKAGE_QT6BASE_FONTCONFIG + select BR2_PACKAGE_QT6BASE_PNG + select BR2_PACKAGE_QT6BASE_WIDGETS + select BR2_PACKAGE_QT6BASE_NETWORK help - A Qt5-based (unix) terminal server selection tool + A Qt-based (unix) terminal server selection tool https://github.com/hzdr/qutselect diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index 2d8ba5a..3b91ab9 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -4,11 +4,12 @@ # ################################################################################ -QUTSELECT_VERSION = 2.4 -QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) +QUTSELECT_VERSION = 3.0 +#QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) +QUTSELECT_SITE = $(call github,hzdr,qutselect,qt6) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE -QUTSELECT_DEPENDENCIES = qt5base +QUTSELECT_DEPENDENCIES = qt6base QUTSELECT_CONF_OPTS = -DCMAKE_INSTALL_PREFIX:PATH=/ define QUTSELECT_INSTALL_TARGET_CMDS From de8369cde97ebd99bf4944f2a4ebbad1f93dc7cc Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Mon, 8 Apr 2024 17:22:18 +0200 Subject: [PATCH 005/247] add bash wrapper and remove our own qutselect connect scripts. --- buildroot-external/rootfs-overlay/bin/bash | 2 + .../bin/scripts/qutselect_connect_rdp.sh | 204 ------------------ .../bin/scripts/qutselect_connect_vnc.sh | 73 ------- 3 files changed, 2 insertions(+), 277 deletions(-) create mode 100755 buildroot-external/rootfs-overlay/bin/bash delete mode 100755 buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_rdp.sh delete mode 100755 buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_vnc.sh diff --git a/buildroot-external/rootfs-overlay/bin/bash b/buildroot-external/rootfs-overlay/bin/bash new file mode 100755 index 0000000..d32c6d8 --- /dev/null +++ b/buildroot-external/rootfs-overlay/bin/bash @@ -0,0 +1,2 @@ +#!/bin/sh +exec /bin/sh "$@" diff --git a/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_rdp.sh b/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_rdp.sh deleted file mode 100755 index f908bcd..0000000 --- a/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_rdp.sh +++ /dev/null @@ -1,204 +0,0 @@ -#!/bin/sh -# shellcheck shell=dash disable=SC2169 -# -# This is a startup script for qutselect which initates a -# RDP session to a windows server either via rdesktop or uttsc -# -# It receives the following inputs: -# -# $1 = PID of qutselect -# $2 = serverType (SRSS, RDP, VNC) -# $3 = 'true' if dtlogin mode was on while qutselect was running -# $4 = the resolution (either 'fullscreen' or 'WxH') -# $5 = the selected color depth (8, 16, 24) -# $6 = the current max. color depth (8, 16, 24) -# $7 = the selected keylayout (e.g. 'de' or 'en') -# $8 = the domain (e.g. 'FZR', used for RDP) -# $9 = the username -# $10 = the servername (hostname) to connect to -# - -XFREERDP=/usr/bin/xfreerdp -TLSSOPASSWORD=/opt/thinlinc/bin/tl-sso-password -TLBESTWINSERVER=/opt/thinlinc/bin/tl-best-winserver - -##################################################### -# check that we have 10 command-line options at hand -if [ $# -lt 10 ]; then - echo "ERROR: missing arguments!" - exit 2 -fi - -# catch all arguments is some local variables -#parentPID="${1}" -#serverType="${2}" -dtlogin="${3}" -resolution="${4}" -#colorDepth="${5}" -#curDepth="${6}" -keyLayout="${7}" -domain="${8}" -username="${9}" -serverName="${10}" - -# if this is a ThinLinc session we can grab the password -# using the tl-sso-password command in case the user wants -# to connect to one of our servers (FZR domain) -if [ -x ${TLSSOPASSWORD} ]; then - if ${TLSSOPASSWORD} -c && [ "${domain}" = "FZR" ]; then - password=$(${TLSSOPASSWORD}) - fi -fi - -# read the password from stdin if not specified yet -if [ -z "${password}" ]; then - read -r password -fi - -# if the serverName contains more than one server we go and -# check via the check_nrpe command which server to prefer -serverList=$(echo "${serverName}" | tr -s ',' ' ') -numServers=$(echo "${serverList}" | wc -w) -if [ "${numServers}" -gt 1 ]; then - # check if we can find a suitable binary - if [ -x ${TLBESTWINSERVER} ]; then - bestServer=$(${TLBESTWINSERVER} "${serverList}") - res=$? - else - # as an alternative we search for the tool in the scripts subdir - # this tool also allows to override the username via -u - if [ -x "scripts/tl-best-winserver" ]; then - bestServer=$(scripts/tl-best-winserver -u "${username}" "${serverList}") - res=$? - else - # we don't have tl-best-winserver so lets simply take the first - # one in the list - bestServer=$(echo "${serverList}" | awk '{ print $1 }') - res=0 - fi - fi - if [ $res -eq 0 ]; then - serverName=${bestServer} - fi -fi - -# variable to prepare the command arguments -cmdArgs="" -RET=2 - -## XFREERDP -# if $cmdArgs is empty and xfreerdp exists use that one -if [ -z "${cmdArgs}" ] && [ -x ${XFREERDP} ]; then - - # resolution - if [ "${resolution}" = "fullscreen" ]; then - cmdArgs="$cmdArgs /f" - - # enable multi monitor support, but only if the two displays - # are not mirrored (offset = 0) - for r in $(xrandr | grep " connected" | cut -d " " -f3); do - x=$(echo "${r}" | cut -d "+" -f2) - - # check the x-offset for being non-zero and if so - # enable multimon support - if [ "${x}" -ne 0 ]; then - cmdArgs="$cmdArgs /multimon" - break - fi - done - - else - cmdArgs="$cmdArgs /size:${resolution}" - fi - - # color depth - #cmdArgs="$cmdArgs /bpp:${colorDepth}" - cmdArgs="$cmdArgs /bpp:32" - - # keyboard - if [ "${keyLayout}" = "de" ]; then - cmdArgs="$cmdArgs /kbd:0x407" # German - else - cmdArgs="$cmdArgs /kbd:0x409" # US - fi - - # add domain - if [ "x${domain}" != "xNULL" ]; then - cmdArgs="$cmdArgs /d:${domain}" - else - cmdArgs="$cmdArgs /d:FZR" - fi - - # add username - if [ "x${username}" != "xNULL" ]; then - cmdArgs="$cmdArgs /u:${username}" - else - if [ "x${domain}" != "xNULL" ]; then - cmdArgs="$cmdArgs /u:${domain}\\" - fi - fi - - # set the window title to the server name we connect to - cmdArgs="$cmdArgs /t:${username}@${serverName}" - - # ignore the certificate in case of encryption - cmdArgs="$cmdArgs /cert-ignore" - - # add the usb path as a local path. if TLSESSIONDATA is set - # we are in a thinlinc session and thus have to forward - # ${HOME}/thindrives/mnt instead - if [ -n "${TLSESSIONDATA}" ]; then - mkdir -p "${TLSESSIONDATA}/drives" - cmdArgs="$cmdArgs /drive:USB,${TLSESSIONDATA}/drives/" - else - if [ -n "${SUN_SUNRAY_TOKEN}" ]; then - cmdArgs="$cmdArgs /drive:USB,/tmp/SUNWut/mnt/${USER}/" - else - cmdArgs="$cmdArgs /drive:USB,/run/usbmount/" - fi - fi - - # enable sound redirection - cmdArgs="$cmdArgs /sound:sys:pulse" - - # enable audio input redirection - cmdArgs="$cmdArgs /microphone:sys:pulse" - - # performance optimization options - cmdArgs="$cmdArgs +auto-reconnect +fonts +window-drag -menu-anims -themes +wallpaper +heartbeat /dynamic-resolution /gdi:hw /rfx /gfx:avc444 +gfx-thin-client /video /network:lan" - - # if we are not in dtlogin mode we go and - # output the rdesktop line that is to be executed - if [ "x${dtlogin}" != "xtrue" ]; then - - # add clipboard synchronization (only required in non-dtlogin mode) - cmdArgs="$cmdArgs /clipboard" - - echo "${XFREERDP} ${cmdArgs} /v:${serverName}" - else - # disable the full-screen toggling and floatbar in case we are in dtlogin mode - cmdArgs="$cmdArgs -toggle-fullscreen" - fi - - # increase logging - cmdArgs="$cmdArgs /log-level:INFO" - - # run xfreerdp finally - if [ "x${password}" != "xNULL" ]; then - cmdArgs="$cmdArgs /from-stdin" - # shellcheck disable=SC2086 - echo "${password}" | ${XFREERDP} ${cmdArgs} /v:"${serverName}" >/var/log/xfreerdp-$$.log 2>&1 & - RET=$? - else - # shellcheck disable=SC2086 - ${XFREERDP} ${cmdArgs} /v:"${serverName}" >var/log/xfreerdp-$$.log 2>&1 & - RET=$? - fi - - if [ ${RET} -ne 0 ]; then - cmdArgs="" - echo "ERROR: couldn't start xfreerdp" - fi -fi - -exit ${RET} diff --git a/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_vnc.sh b/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_vnc.sh deleted file mode 100755 index cfbab78..0000000 --- a/buildroot-external/rootfs-overlay/bin/scripts/qutselect_connect_vnc.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/sh -# -# This is a startup script for qutselect which initates a -# VNC session to a windows server via 'vncviewer' -# -# It receives the following inputs: -# -# $1 = PID of qutselect -# $2 = serverType (SRSS, RDP, VNC) -# $3 = 'true' if dtlogin mode was on while qutselect was running -# $4 = the resolution (either 'fullscreen' or 'WxH') -# $5 = the selected color depth (8, 16, 24) -# $6 = the current max. color depth (8, 16, 24) -# $7 = the selected keylayout (e.g. 'de' or 'en') -# $8 = the domain (e.g. 'FZR', used for RDP) -# $9 = the username -# $10 = the servername (hostname) to connect to - -VNCVIEWER=/lib/tlclient/vncviewer - -##################################################### -# check that we have 10 command-line options at hand -if [ $# -lt 10 ]; then - printf "ERROR: missing arguments!" - exit 2 -fi - -# catch all arguments is some local variables -#parentPID="${1}" -#serverType="${2}" -dtlogin="${3}" -resolution="${4}" -#colorDepth="${5}" -#curDepth="${6}" -#keyLayout="${7}" -#domain="${8}" -#username="${9}" -serverName="${10}" - -# read the password from stdin -read -r password - -# variable to prepare the command arguments -cmdArgs="-shared -menukey=" - -# resolution -if [ "${resolution}" = "fullscreen" ]; then - cmdArgs="$cmdArgs -fullscreen -fullscreensystemkeys" -fi - -# run vncviewer finally -if [ "${password}" != "NULL" ]; then - if [ "${dtlogin}" != "true" ]; then - echo "${VNCVIEWER} ${cmdArgs} ${serverName}" - fi - # shellcheck disable=SC2086 - VNC_PASSWORD="${password}" ${VNCVIEWER} ${cmdArgs} "${serverName}" 2>/dev/null >/dev/null - RET=$? -else - if [ "${dtlogin}" != "true" ]; then - echo "${VNCVIEWER} ${cmdArgs} ${serverName}" - fi - # shellcheck disable=SC2086 - ${VNCVIEWER} ${cmdArgs} "${serverName}" 2>/dev/null >/dev/null - RET=$? -fi - -if [ $RET != 0 ]; then - echo "ERROR: ${VNCVIEWER} returned invalid return code ($RET)" - exit 2 -fi - -exit ${RET} From ee27d2a4970ad978f2061a5f424de8d4c6a05f7b Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 9 Apr 2024 11:37:37 +0200 Subject: [PATCH 006/247] bump to final qutselect 3.0 and add hash --- buildroot-external/package/qutselect/qutselect.hash | 2 ++ buildroot-external/package/qutselect/qutselect.mk | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 buildroot-external/package/qutselect/qutselect.hash diff --git a/buildroot-external/package/qutselect/qutselect.hash b/buildroot-external/package/qutselect/qutselect.hash new file mode 100644 index 0000000..108b1fa --- /dev/null +++ b/buildroot-external/package/qutselect/qutselect.hash @@ -0,0 +1,2 @@ +# Locally computed +sha256 a0e5187ad11475e23ba2690ce9582571bcbcf9627ca2337c31129cbe7213a4f1 qutselect-3.0.tar.gz diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index 3b91ab9..d09c94a 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -5,8 +5,7 @@ ################################################################################ QUTSELECT_VERSION = 3.0 -#QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) -QUTSELECT_SITE = $(call github,hzdr,qutselect,qt6) +QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE QUTSELECT_DEPENDENCIES = qt6base From c231a6e17eadf15f77fba99a8675e1681c7ecc48 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 25 Apr 2024 17:27:25 +0200 Subject: [PATCH 007/247] rename intelnuc to generic-x86_64 since we are not fixed to IntelNUC machines anymore. --- .github/release-template.md | 2 +- .github/workflows/release.yml | 8 ++++---- .github/workflows/snapshot.yml | 4 ++-- README.md | 4 ++-- .../board/{intelnuc => generic-x86_64}/kernel.config | 0 .../{intelnuc => generic-x86_64}/kernel_defconfig | 0 .../board/{intelnuc => generic-x86_64}/post-build.sh | 2 +- .../board/{intelnuc => generic-x86_64}/post-image.sh | 0 .../board/{intelnuc => generic-x86_64}/post-release.sh | 0 .../board/{intelnuc => generic-x86_64}/users_table.txt | 0 .../configs/{intelnuc.config => generic-x86_64.config} | 10 +++++----- scripts/update-kernel-upstream.sh | 2 +- 12 files changed, 16 insertions(+), 16 deletions(-) rename buildroot-external/board/{intelnuc => generic-x86_64}/kernel.config (100%) rename buildroot-external/board/{intelnuc => generic-x86_64}/kernel_defconfig (100%) rename buildroot-external/board/{intelnuc => generic-x86_64}/post-build.sh (85%) rename buildroot-external/board/{intelnuc => generic-x86_64}/post-image.sh (100%) rename buildroot-external/board/{intelnuc => generic-x86_64}/post-release.sh (100%) rename buildroot-external/board/{intelnuc => generic-x86_64}/users_table.txt (100%) rename buildroot-external/configs/{intelnuc.config => generic-x86_64.config} (85%) diff --git a/.github/release-template.md b/.github/release-template.md index 52a0f81..fbd3d51 100644 --- a/.github/release-template.md +++ b/.github/release-template.md @@ -16,4 +16,4 @@ ${CHANGELOG} The following installation archives can be downloaded for different hardware platforms. To verify their integrity a `sha256` checksum is provided as well. - Intel NUC: -:package: [thinRoot-${VERSION}-intelnuc.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-intelnuc.img)
SHA256: XSHAintelnuc.imgX
+:package: [thinRoot-${VERSION}-generic-x86_64.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-generic-x86_64.img)
SHA256: XSHAgeneric-x86_64.imgX
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3211b2d..d09c288 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -108,7 +108,7 @@ jobs: strategy: fail-fast: false matrix: - platform: [intelnuc] + platform: [generic-x86_64] steps: - name: Checkout Code @@ -148,7 +148,7 @@ jobs: # - name: remote debug tmate session # uses: mxschmitt/action-tmate@v1 - # if: matrix.platform == 'intelnuc' + # if: matrix.platform == 'generic-x86_64' # major build step - name: Build @@ -159,14 +159,14 @@ jobs: ####################### # release uploads - - name: Upload release snapshot [intelnuc] + - name: Upload release snapshot [generic-x86_64] uses: shogo82148/actions-upload-release-asset@v1 with: upload_url: ${{ needs.release_draft.outputs.upload_url }} asset_path: release/thinroot-${{ needs.release_draft.outputs.version }}-${{ matrix.platform }}.img asset_content_type: application/octet-stream - - name: Upload build release checksum [intelnuc] + - name: Upload build release checksum [generic-x86_64] uses: shogo82148/actions-upload-release-asset@v1 with: upload_url: ${{ needs.release_draft.outputs.upload_url }} diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index b07660c..d2fd722 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -43,7 +43,7 @@ jobs: strategy: fail-fast: false matrix: - platform: [intelnuc] + platform: [generic-x86_64] steps: - name: Checkout Code @@ -103,7 +103,7 @@ jobs: ######################## # upload build artifacts - - name: Upload build artifact [intelnuc] + - name: Upload build artifact [generic-x86_64] uses: actions/upload-artifact@v4 with: path: release/thinroot-${{ env.VERSION }}-${{ matrix.platform }}.img* diff --git a/README.md b/README.md index 41b1ecb..8690bc3 100644 --- a/README.md +++ b/README.md @@ -49,9 +49,9 @@ Building your own thinRoot image is a very straight forward process using this b ```sh $ git clone https://github.com/jens-maus/thinRoot $ cd thinRoot -$ make PRODUCT=intelnuc release +$ make PRODUCT=generic-x86_64 release [wait up to 1h] -$ cp release/thinroot-YYYYMMDD-intelnuc.img /tftpboot/thinroot/ +$ cp release/thinroot-YYYYMMDD-generic-x86_64.img /tftpboot/thinroot/ ``` ## :scroll: License diff --git a/buildroot-external/board/intelnuc/kernel.config b/buildroot-external/board/generic-x86_64/kernel.config similarity index 100% rename from buildroot-external/board/intelnuc/kernel.config rename to buildroot-external/board/generic-x86_64/kernel.config diff --git a/buildroot-external/board/intelnuc/kernel_defconfig b/buildroot-external/board/generic-x86_64/kernel_defconfig similarity index 100% rename from buildroot-external/board/intelnuc/kernel_defconfig rename to buildroot-external/board/generic-x86_64/kernel_defconfig diff --git a/buildroot-external/board/intelnuc/post-build.sh b/buildroot-external/board/generic-x86_64/post-build.sh similarity index 85% rename from buildroot-external/board/intelnuc/post-build.sh rename to buildroot-external/board/generic-x86_64/post-build.sh index cb11502..618d1c2 100755 --- a/buildroot-external/board/intelnuc/post-build.sh +++ b/buildroot-external/board/generic-x86_64/post-build.sh @@ -3,7 +3,7 @@ # create VERSION file echo "VERSION=${PRODUCT_VERSION}" >"${TARGET_DIR}/VERSION" echo "PRODUCT=${PRODUCT}" >>"${TARGET_DIR}/VERSION" -echo "PLATFORM=intelnuc" >>"${TARGET_DIR}/VERSION" +echo "PLATFORM=generic-x86_64" >>"${TARGET_DIR}/VERSION" # remove /etc/dbus-1/system.d/pulseaudio-system.conf rm -f "${TARGET_DIR}/etc/dbus-1/system.d/pulseaudio-system.conf" diff --git a/buildroot-external/board/intelnuc/post-image.sh b/buildroot-external/board/generic-x86_64/post-image.sh similarity index 100% rename from buildroot-external/board/intelnuc/post-image.sh rename to buildroot-external/board/generic-x86_64/post-image.sh diff --git a/buildroot-external/board/intelnuc/post-release.sh b/buildroot-external/board/generic-x86_64/post-release.sh similarity index 100% rename from buildroot-external/board/intelnuc/post-release.sh rename to buildroot-external/board/generic-x86_64/post-release.sh diff --git a/buildroot-external/board/intelnuc/users_table.txt b/buildroot-external/board/generic-x86_64/users_table.txt similarity index 100% rename from buildroot-external/board/intelnuc/users_table.txt rename to buildroot-external/board/generic-x86_64/users_table.txt diff --git a/buildroot-external/configs/intelnuc.config b/buildroot-external/configs/generic-x86_64.config similarity index 85% rename from buildroot-external/configs/intelnuc.config rename to buildroot-external/configs/generic-x86_64.config index c9640b5..d3b4b53 100644 --- a/buildroot-external/configs/intelnuc.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -2,14 +2,14 @@ BR2_x86_64=y BR2_x86_corei7=y BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_6=y # BR2_TARGET_ENABLE_ROOT_LOGIN is not set -BR2_ROOTFS_USERS_TABLES="${BR2_EXTERNAL_THINROOT_PATH}/board/intelnuc/users_table.txt" -BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/intelnuc/post-build.sh" -BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/intelnuc/post-image.sh" -BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/intelnuc" +BR2_ROOTFS_USERS_TABLES="${BR2_EXTERNAL_THINROOT_PATH}/board/generic-x86_64/users_table.txt" +BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-build.sh" +BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" +BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.25" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" -BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/intelnuc/kernel.config" +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_I915=y BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_IRIS=y diff --git a/scripts/update-kernel-upstream.sh b/scripts/update-kernel-upstream.sh index 9a40d55..14d418c 100755 --- a/scripts/update-kernel-upstream.sh +++ b/scripts/update-kernel-upstream.sh @@ -20,7 +20,7 @@ if [[ -z "${ARCHIVE_HASH}" ]]; then fi # update kconfig file -sed -i "s/BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\".*\"/BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"${ID}\"/g" buildroot-external/configs/{intelnuc,tinkerboard}.config +sed -i "s/BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\".*\"/BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE=\"${ID}\"/g" buildroot-external/configs/{generic-x86_64,tinkerboard}.config # update hash files sed -i "/${PACKAGE_NAME}-.*\.tar\.xz/d" "buildroot-external/patches/${PACKAGE_NAME}/${PACKAGE_NAME}.hash" From a77d81a3a5736c09888123793a4ac37326ebeb87 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 25 Apr 2024 17:28:31 +0200 Subject: [PATCH 008/247] update upstream kernel to 6.6.28 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index d3b4b53..b89f176 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.25" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.28" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 7510510..7872aa3 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -28,7 +28,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.25" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.28" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index dcdce7e..1612553 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,2 +1,2 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 99d210be87908233a55b0fadc0dccd3b95926c0651b6b82e37350b2029de1f44 linux-6.6.25.tar.xz +sha256 818716ed13e7dba6aaeae24e3073993e260812ed128d10272e94b922ee6d3394 linux-6.6.28.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index dcdce7e..1612553 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,2 +1,2 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 99d210be87908233a55b0fadc0dccd3b95926c0651b6b82e37350b2029de1f44 linux-6.6.25.tar.xz +sha256 818716ed13e7dba6aaeae24e3073993e260812ed128d10272e94b922ee6d3394 linux-6.6.28.tar.xz From d35e31f5fef0d6a0a6093ed6a5d08c0902de18a7 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 19 Jul 2024 12:08:47 +0200 Subject: [PATCH 009/247] fix release script execution --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index dc5b1dc..69a6c17 100644 --- a/Makefile +++ b/Makefile @@ -70,7 +70,7 @@ $(addsuffix -release, $(PRODUCTS)): %: release: build @echo "[creating release: $(PRODUCT)]" - $(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(shell echo $(PRODUCT) | cut -d'_' -f2)) + $(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(PRODUCT)) if [ -x $(BOARD_DIR)/post-release.sh ]; then $(BOARD_DIR)/post-release.sh $(BOARD_DIR) ${PRODUCT} ${PRODUCT_VERSION}; fi check-all: $(addsuffix -check, $(PRODUCTS)) @@ -79,7 +79,7 @@ $(addsuffix -check, $(PRODUCTS)): %: check: buildroot-$(BUILDROOT_VERSION) build-$(PRODUCT)/.config @echo "[checking: $(PRODUCT)]" - $(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(shell echo $(PRODUCT) | cut -d'_' -f2)) + $(eval BOARD_DIR := $(BUILDROOT_EXTERNAL)/board/$(PRODUCT)) @echo "[checking status: $(BUILDROOT_EXTERNAL)]" buildroot-$(BUILDROOT_VERSION)/utils/check-package --exclude PackageHeader --br2-external $(BUILDROOT_EXTERNAL)/package/*/* From 68e7713ad364b8f739cdc0cfc568b7e7fb4c6a9b Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 23 Jul 2024 13:46:57 +0200 Subject: [PATCH 010/247] add basic virt-viewer/remote-viewer SPICE connection protocol support. --- buildroot-external/Buildroot.config | 1 + buildroot-external/Config.in | 2 ++ .../package/spice-gtk/Config.in | 14 +++++++++++ .../package/spice-gtk/spice-gtk.mk | 18 +++++++++++++++ .../package/virt-viewer/Config.in | 9 ++++++++ .../package/virt-viewer/virt-viewer.mk | 23 +++++++++++++++++++ 6 files changed, 67 insertions(+) create mode 100644 buildroot-external/package/spice-gtk/Config.in create mode 100644 buildroot-external/package/spice-gtk/spice-gtk.mk create mode 100644 buildroot-external/package/virt-viewer/Config.in create mode 100644 buildroot-external/package/virt-viewer/virt-viewer.mk diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index cbe64f8..0edc8e0 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -44,6 +44,7 @@ BR2_PACKAGE_NTFS_3G=y BR2_PACKAGE_DEJAVU=y BR2_PACKAGE_LIBERATION=y BR2_PACKAGE_FREERDP=y +BR2_PACKAGE_VIRT_VIEWER=y BR2_PACKAGE_MESA3D=y BR2_PACKAGE_MESA3D_LLVM=y BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in index 700c8b5..09dcbb3 100644 --- a/buildroot-external/Config.in +++ b/buildroot-external/Config.in @@ -8,6 +8,8 @@ menu "Additional software" source "$BR2_EXTERNAL_THINROOT_PATH/package/numlockx/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/xprintidle/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/remmina/Config.in" + source "$BR2_EXTERNAL_THINROOT_PATH/package/virt-viewer/Config.in" + source "$BR2_EXTERNAL_THINROOT_PATH/package/spice-gtk/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/rpi-eeprom/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/qt-webengine-kiosk/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/qt-kiosk-browser/Config.in" diff --git a/buildroot-external/package/spice-gtk/Config.in b/buildroot-external/package/spice-gtk/Config.in new file mode 100644 index 0000000..5cc5e35 --- /dev/null +++ b/buildroot-external/package/spice-gtk/Config.in @@ -0,0 +1,14 @@ +config BR2_PACKAGE_SPICE_GTK + bool "spice-gtk" + select BR2_PACKAGE_SPICE_PROTOCOL + select BR2_PACKAGE_HOST_PYTHON_SIX + select BR2_PACKAGE_HOST_PYTHON_PYPARSING + select BR2_PACKAGE_JPEG + select BR2_PACKAGE_LIBJPEG + select BR2_PACKAGE_JSON_GLIB + select BR2_PACKAGE_GSTREAMER1 + select BR2_PACKAGE_GST1_PLUGINS_BASE + help + SPICE Client library using GLib and GTK+ + + https://gitlab.freedesktop.org/spice/spice-gtk diff --git a/buildroot-external/package/spice-gtk/spice-gtk.mk b/buildroot-external/package/spice-gtk/spice-gtk.mk new file mode 100644 index 0000000..a13ba30 --- /dev/null +++ b/buildroot-external/package/spice-gtk/spice-gtk.mk @@ -0,0 +1,18 @@ +################################################################################ +# +# spice-gtk +# +# https://gitlab.freedesktop.org/spice/spice-gtk +# +################################################################################ + +SPICE_GTK_VERSION = 0.41 +SPICE_GTK_SOURCE = spice-gtk-$(SPICE_GTK_VERSION).tar.xz +SPICE_GTK_SITE = https://www.spice-space.org/download/gtk +SPICE_GTK_LICENSE = GPL-2.0 +SPICE_GTK_LICENSE_FILES = COPYING +SPICE_GTK_INSTALL_STAGING = YES + +SPICE_GTK_DEPENDENCIES = spice-protocol host-python-six host-python-pyparsing jpeg json-glib gstreamer1 gst1-plugins-base + +$(eval $(meson-package)) diff --git a/buildroot-external/package/virt-viewer/Config.in b/buildroot-external/package/virt-viewer/Config.in new file mode 100644 index 0000000..df921ad --- /dev/null +++ b/buildroot-external/package/virt-viewer/Config.in @@ -0,0 +1,9 @@ +config BR2_PACKAGE_VIRT_VIEWER + bool "virt-viewer" + select BR2_PACKAGE_CAIRO_PDF + select BR2_PACKAGE_LIBGTK3 + select BR2_PACKAGE_SPICE_GTK + help + The virtual machine console viewer + + https://gitlab.com/virt-viewer/virt-viewer diff --git a/buildroot-external/package/virt-viewer/virt-viewer.mk b/buildroot-external/package/virt-viewer/virt-viewer.mk new file mode 100644 index 0000000..c5477a9 --- /dev/null +++ b/buildroot-external/package/virt-viewer/virt-viewer.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# virt-viewer +# +# https://gitlab.com/virt-viewer/virt-viewer +# +################################################################################ + +#VIRT_VIEWER_VERSION = v11.0 +VIRT_VIEWER_VERSION = 82dbca46b605685ab354bf8cea7f2a2615132b39 +VIRT_VIEWER_SITE = https://gitlab.com/virt-viewer/virt-viewer.git +VIRT_VIEWER_SITE_METHOD = git +#VIRT_VIEWER_DEPENDENCIES = xlib_libXScrnSaver +VIRT_VIEWER_LICENSE = GPL-2.0 +VIRT_VIEWER_LICENSE_FILES = COPYING + +VIRT_VIEWER_DEPENDENCIES = libgtk3 spice-gtk + +define VIRT_VIEWER_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/build/src/remote-viewer $(TARGET_DIR)/bin/ +endef + +$(eval $(meson-package)) From 155abf1a7145b7991225555469828d2d110df8cf Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 23 Jul 2024 13:48:46 +0200 Subject: [PATCH 011/247] add experimtal yoe-kiosk-browser package support --- .../yoe-kiosk-browser/yoe-kiosk-browser.mk | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 buildroot-external/package/yoe-kiosk-browser/yoe-kiosk-browser.mk diff --git a/buildroot-external/package/yoe-kiosk-browser/yoe-kiosk-browser.mk b/buildroot-external/package/yoe-kiosk-browser/yoe-kiosk-browser.mk new file mode 100644 index 0000000..08c00b5 --- /dev/null +++ b/buildroot-external/package/yoe-kiosk-browser/yoe-kiosk-browser.mk @@ -0,0 +1,29 @@ +################################################################################ +# +# yoe-kiosk-browser +# +################################################################################ + +YOE_KIOSK_BROWSER_VERSION = 610be9b29fb348576264ff2e44a584c152f3f390 +YOE_KIOSK_BROWSER_SITE = https://github.com/YoeDistro/yoe-kiosk-browser +YOE_KIOSK_BROWSER_SITE_METHOD = git +YOE_KIOSK_BROWSER_DEPENDENCIES = qt6base +YOE_KIOSK_BROWSER_LICENSE = LGPL-3.0 + +#define QT_WEBENGINE_KIOSK_CONFIGURE_CMDS +# (cd $(@D); $(TARGET_MAKE_ENV) $(QT5_QMAKE) PREFIX=/usr) +#endef +# +#define QT_WEBENGINE_KIOSK_BUILD_CMDS +# $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) +#endef +# +#define QT_WEBENGINE_KIOSK_INSTALL_TARGET_CMDS +# $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)/src -f Makefile.qt-webengine-kiosk \ +# INSTALL_ROOT=$(TARGET_DIR) \ +# install_target +# $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) \ +# INSTALL_ROOT=$(TARGET_DIR) +#endef + +$(eval $(cmake-package)) From eecef5a713abf44f8be77d1ee931b14d247c0b40 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 23 Jul 2024 13:49:57 +0200 Subject: [PATCH 012/247] add experimtal yoe-kiosk-browser package support --- buildroot-external/package/yoe-kiosk-browser/Config.in | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 buildroot-external/package/yoe-kiosk-browser/Config.in diff --git a/buildroot-external/package/yoe-kiosk-browser/Config.in b/buildroot-external/package/yoe-kiosk-browser/Config.in new file mode 100644 index 0000000..f41cf8c --- /dev/null +++ b/buildroot-external/package/yoe-kiosk-browser/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_YOE_KIOSK_BROWSER + bool "yoe-kiosk-browser" + select BR2_PACKAGE_QT6WEBENGINE + select BR2_PACKAGE_QT6MULTIMEDIA + help + Simple Qt Webengine browser From d9415067dad23e05f315bbb188e603f0e5e97ce4 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 23 Jul 2024 13:51:18 +0200 Subject: [PATCH 013/247] update qutselect to 3.1 for initial VDI(PVE) support --- buildroot-external/package/qutselect/Config.in | 3 +++ buildroot-external/package/qutselect/qutselect.hash | 2 +- buildroot-external/package/qutselect/qutselect.mk | 4 ++-- buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh | 2 +- buildroot-external/rootfs-overlay/bin/qutselect-lock.sh | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/buildroot-external/package/qutselect/Config.in b/buildroot-external/package/qutselect/Config.in index 836c0b2..5b0942d 100644 --- a/buildroot-external/package/qutselect/Config.in +++ b/buildroot-external/package/qutselect/Config.in @@ -9,6 +9,9 @@ config BR2_PACKAGE_QUTSELECT select BR2_PACKAGE_QT6BASE_PNG select BR2_PACKAGE_QT6BASE_WIDGETS select BR2_PACKAGE_QT6BASE_NETWORK + select BR2_PACKAGE_JQ + select BR2_PACKAGE_LIBCURL + select BR2_PACKAGE_LIBCURL_CURL help A Qt-based (unix) terminal server selection tool diff --git a/buildroot-external/package/qutselect/qutselect.hash b/buildroot-external/package/qutselect/qutselect.hash index 108b1fa..fcac0bc 100644 --- a/buildroot-external/package/qutselect/qutselect.hash +++ b/buildroot-external/package/qutselect/qutselect.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 a0e5187ad11475e23ba2690ce9582571bcbcf9627ca2337c31129cbe7213a4f1 qutselect-3.0.tar.gz +sha256 1dfee1ffd3685e56b53c38cb55a36639f7904b438a6d0a41571675a28c26f94f qutselect-3.1.tar.gz diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index d09c94a..857a7ee 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -4,11 +4,11 @@ # ################################################################################ -QUTSELECT_VERSION = 3.0 +QUTSELECT_VERSION = 3.1 QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE -QUTSELECT_DEPENDENCIES = qt6base +QUTSELECT_DEPENDENCIES = qt6base jq libcurl QUTSELECT_CONF_OPTS = -DCMAKE_INSTALL_PREFIX:PATH=/ define QUTSELECT_INSTALL_TARGET_CMDS diff --git a/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh b/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh index f83e94e..2122a39 100755 --- a/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh +++ b/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh @@ -2,4 +2,4 @@ # # kill all qutselect related sessions and return to the qutselect GUI # -pkill "tlclient.bin|xfreerdp|rdesktop|vncviewer" +pkill "tlclient.bin|xfreerdp|rdesktop|vncviewer|remote-viewer" diff --git a/buildroot-external/rootfs-overlay/bin/qutselect-lock.sh b/buildroot-external/rootfs-overlay/bin/qutselect-lock.sh index 45fc250..803ec6f 100755 --- a/buildroot-external/rootfs-overlay/bin/qutselect-lock.sh +++ b/buildroot-external/rootfs-overlay/bin/qutselect-lock.sh @@ -12,7 +12,7 @@ if /usr/bin/pgrep "tlclient.bin" >/dev/null 2>&1; then else # otherwise we check for xfreerdp or rdesktop and then use Windows+L to lock # the windows session - if /usr/bin/pgrep "xfreerdp|rdesktop|vncviewer" >/dev/null 2>&1; then + if /usr/bin/pgrep "xfreerdp|rdesktop|vncviewer|remote-viewer" >/dev/null 2>&1; then /bin/su - truser -c "DISPLAY=:0.0 /usr/bin/xdotool keydown Super_L key l keyup Super_L" & else # bring the system into standby mode From e562745781d43a344240d6659c6a65201a0fcb15 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 23 Jul 2024 13:54:34 +0200 Subject: [PATCH 014/247] update upstream kernel to 6.6.41 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index b89f176..a1a949e 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.28" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.41" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 7872aa3..7a2438c 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -28,7 +28,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.28" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.41" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index 1612553..54afd50 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,2 +1,2 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 818716ed13e7dba6aaeae24e3073993e260812ed128d10272e94b922ee6d3394 linux-6.6.28.tar.xz +sha256 9ec99c578158ab85d99b37791a76643d2ea4c3f72ecbef7b5eb6d60f3de032ef linux-6.6.41.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index 1612553..54afd50 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,2 +1,2 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 818716ed13e7dba6aaeae24e3073993e260812ed128d10272e94b922ee6d3394 linux-6.6.28.tar.xz +sha256 9ec99c578158ab85d99b37791a76643d2ea4c3f72ecbef7b5eb6d60f3de032ef linux-6.6.41.tar.xz From cb23ad208e6193601d2b3d5d7a112fb022d3345f Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 23 Jul 2024 13:55:59 +0200 Subject: [PATCH 015/247] update ThinLinc client to 4.17.0-3543 --- buildroot-external/package/thinlinc/thinlinc.hash | 4 ++-- buildroot-external/package/thinlinc/thinlinc.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/buildroot-external/package/thinlinc/thinlinc.hash b/buildroot-external/package/thinlinc/thinlinc.hash index 46de5ae..3d4f440 100644 --- a/buildroot-external/package/thinlinc/thinlinc.hash +++ b/buildroot-external/package/thinlinc/thinlinc.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 ea3a92186cbaf71cc4ab692b3baeadd94b3836242e58705a38fe3683f4f18691 tl-4.16.0-3389-client-linux-dynamic-x86_64.tar.gz -sha256 ec5f602e7d7732dce6b3ba2a48f2908c4a5660652d8fe0f0029556c08a26f624 tl-4.16.0-3389-client-linux-dynamic-armhf.tar.gz +sha256 ee997def118d170483a5632906f933fdb7ccb16aae56c255181f9f79626f4506 tl-4.17.0-3543-client-linux-dynamic-x86_64.tar.gz +sha256 6b31419ddb31ce34d589fbae99eee9e7df3beb6f379cd9b279f516b044329062 tl-4.17.0-3543-client-linux-dynamic-armhf.tar.gz diff --git a/buildroot-external/package/thinlinc/thinlinc.mk b/buildroot-external/package/thinlinc/thinlinc.mk index d9801f2..2e1a64e 100644 --- a/buildroot-external/package/thinlinc/thinlinc.mk +++ b/buildroot-external/package/thinlinc/thinlinc.mk @@ -6,7 +6,7 @@ # ################################################################################ -THINLINC_VERSION = 4.16.0-3389 +THINLINC_VERSION = 4.17.0-3543 THINLINC_SITE = https://www.cendio.com/downloads/clients ifeq ($(call qstrip,$(BR2_ARCH)),x86_64) From a199fbd1d0addc5c4b5f0ffcbc88c2e15a82f45b Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 23 Jul 2024 13:58:53 +0200 Subject: [PATCH 016/247] update buildroot to 2024.05.1 --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 69a6c17..fa12d05 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -BUILDROOT_VERSION=2024.02.1 -BUILDROOT_SHA256=4c9f3a3bc19462a9bf838d7f37996c49c68a63af9f9e6c254ee76e0e02cd8194 +BUILDROOT_VERSION=2024.05.1 +BUILDROOT_SHA256=561a5254b22356b31494b1ea3b7db3101ebe84a77550ef15286195c05cae1e8c BUILDROOT_EXTERNAL=buildroot-external DEFCONFIG_DIR=$(BUILDROOT_EXTERNAL)/configs DATE=$(shell date +%Y%m%d) From 9444fa51ab310fabf7786a8691fdab3d2102aa51 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 25 Jul 2024 12:26:30 +0200 Subject: [PATCH 017/247] update qutselect to 3.2 --- buildroot-external/package/qutselect/qutselect.hash | 2 +- buildroot-external/package/qutselect/qutselect.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/package/qutselect/qutselect.hash b/buildroot-external/package/qutselect/qutselect.hash index fcac0bc..3d9f4af 100644 --- a/buildroot-external/package/qutselect/qutselect.hash +++ b/buildroot-external/package/qutselect/qutselect.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 1dfee1ffd3685e56b53c38cb55a36639f7904b438a6d0a41571675a28c26f94f qutselect-3.1.tar.gz +sha256 41953bed2347c952c57fd34a07d67b0626a58f018d1a4279d1babac09e6cd01c qutselect-3.2.tar.gz diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index 857a7ee..8aa8ec4 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -4,7 +4,7 @@ # ################################################################################ -QUTSELECT_VERSION = 3.1 +QUTSELECT_VERSION = 3.2 QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE From d406b26e3919dc959bcad9302141c5dceb9bd0d2 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 25 Jul 2024 12:27:07 +0200 Subject: [PATCH 018/247] add missing usbredir and lz4 package support for spice-gtk --- buildroot-external/package/spice-gtk/Config.in | 3 +++ buildroot-external/package/spice-gtk/spice-gtk.mk | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/buildroot-external/package/spice-gtk/Config.in b/buildroot-external/package/spice-gtk/Config.in index 5cc5e35..9bce2d2 100644 --- a/buildroot-external/package/spice-gtk/Config.in +++ b/buildroot-external/package/spice-gtk/Config.in @@ -8,6 +8,9 @@ config BR2_PACKAGE_SPICE_GTK select BR2_PACKAGE_JSON_GLIB select BR2_PACKAGE_GSTREAMER1 select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_LIBUSB + select BR2_PACKAGE_USBREDIR + select BR2_PACKAGE_LZ4 help SPICE Client library using GLib and GTK+ diff --git a/buildroot-external/package/spice-gtk/spice-gtk.mk b/buildroot-external/package/spice-gtk/spice-gtk.mk index a13ba30..9112882 100644 --- a/buildroot-external/package/spice-gtk/spice-gtk.mk +++ b/buildroot-external/package/spice-gtk/spice-gtk.mk @@ -13,6 +13,6 @@ SPICE_GTK_LICENSE = GPL-2.0 SPICE_GTK_LICENSE_FILES = COPYING SPICE_GTK_INSTALL_STAGING = YES -SPICE_GTK_DEPENDENCIES = spice-protocol host-python-six host-python-pyparsing jpeg json-glib gstreamer1 gst1-plugins-base +SPICE_GTK_DEPENDENCIES = spice-protocol host-python-six host-python-pyparsing jpeg json-glib gstreamer1 gst1-plugins-base usbredir $(eval $(meson-package)) From 89ad6ead3bd33694122a4a65762cae43363e91c2 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 25 Jul 2024 16:56:54 +0200 Subject: [PATCH 019/247] make sure truser group has access to all USB devices under /dev --- .../rootfs-overlay/lib/udev/rules.d/99-truser-rights.rules | 1 + 1 file changed, 1 insertion(+) create mode 100644 buildroot-external/rootfs-overlay/lib/udev/rules.d/99-truser-rights.rules diff --git a/buildroot-external/rootfs-overlay/lib/udev/rules.d/99-truser-rights.rules b/buildroot-external/rootfs-overlay/lib/udev/rules.d/99-truser-rights.rules new file mode 100644 index 0000000..b1adf3e --- /dev/null +++ b/buildroot-external/rootfs-overlay/lib/udev/rules.d/99-truser-rights.rules @@ -0,0 +1 @@ +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664", GROUP="truser" From dc5e12e0898596cef0f725beaadfa075eee2d16c Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 25 Jul 2024 17:22:15 +0200 Subject: [PATCH 020/247] add own phodav package and enable libopus as additional dependency for spice-gtk to get webdav and audio support going with remote-viewer. --- buildroot-external/Config.in | 1 + buildroot-external/package/phodav/Config.in | 7 ++++++ buildroot-external/package/phodav/phodav.mk | 23 +++++++++++++++++++ .../package/spice-gtk/Config.in | 3 +++ .../package/spice-gtk/spice-gtk.mk | 4 +++- 5 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 buildroot-external/package/phodav/Config.in create mode 100644 buildroot-external/package/phodav/phodav.mk diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in index 09dcbb3..6e41340 100644 --- a/buildroot-external/Config.in +++ b/buildroot-external/Config.in @@ -10,6 +10,7 @@ menu "Additional software" source "$BR2_EXTERNAL_THINROOT_PATH/package/remmina/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/virt-viewer/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/spice-gtk/Config.in" + source "$BR2_EXTERNAL_THINROOT_PATH/package/phodav/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/rpi-eeprom/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/qt-webengine-kiosk/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/qt-kiosk-browser/Config.in" diff --git a/buildroot-external/package/phodav/Config.in b/buildroot-external/package/phodav/Config.in new file mode 100644 index 0000000..feae79f --- /dev/null +++ b/buildroot-external/package/phodav/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_PHODAV + bool "phodav" + select BR2_PACKAGE_LIBSOUP3 + help + minimal WebDAV server implementation using GNOME libsoup (RFC 4918) + + https://gitlab.gnome.org/GNOME/phodav diff --git a/buildroot-external/package/phodav/phodav.mk b/buildroot-external/package/phodav/phodav.mk new file mode 100644 index 0000000..d17deb1 --- /dev/null +++ b/buildroot-external/package/phodav/phodav.mk @@ -0,0 +1,23 @@ +################################################################################ +# +# phodav +# +# https://gitlab.gnome.org/GNOME/phodav +# +################################################################################ + +PHODAV_VERSION = v3.0 +PHODAV_SITE = https://github.com/GNOME/phodav.git +PHODAV_SITE_METHOD = git +PHODAV_LICENSE = LGPL-2.1 +PHODAV_LICENSE_FILES = COPYING +PHODAV_INSTALL_STAGING = YES + +PHODAV_DEPENDENCIES = libsoup3 + +define PHODAV_TARBALL_VERSION + echo $(PHODAV_VERSION) | tr -d v >$(@D)/.tarball-version +endef +PHODAV_POST_PATCH_HOOKS += PHODAV_TARBALL_VERSION + +$(eval $(meson-package)) diff --git a/buildroot-external/package/spice-gtk/Config.in b/buildroot-external/package/spice-gtk/Config.in index 9bce2d2..d26ff7c 100644 --- a/buildroot-external/package/spice-gtk/Config.in +++ b/buildroot-external/package/spice-gtk/Config.in @@ -10,7 +10,10 @@ config BR2_PACKAGE_SPICE_GTK select BR2_PACKAGE_GST1_PLUGINS_BASE select BR2_PACKAGE_LIBUSB select BR2_PACKAGE_USBREDIR + select BR2_PACKAGE_USBUTILS select BR2_PACKAGE_LZ4 + select BR2_PACKAGE_PHODAV + select BR2_PACKAGE_OPUS help SPICE Client library using GLib and GTK+ diff --git a/buildroot-external/package/spice-gtk/spice-gtk.mk b/buildroot-external/package/spice-gtk/spice-gtk.mk index 9112882..6f5a710 100644 --- a/buildroot-external/package/spice-gtk/spice-gtk.mk +++ b/buildroot-external/package/spice-gtk/spice-gtk.mk @@ -13,6 +13,8 @@ SPICE_GTK_LICENSE = GPL-2.0 SPICE_GTK_LICENSE_FILES = COPYING SPICE_GTK_INSTALL_STAGING = YES -SPICE_GTK_DEPENDENCIES = spice-protocol host-python-six host-python-pyparsing jpeg json-glib gstreamer1 gst1-plugins-base usbredir +SPICE_GTK_DEPENDENCIES = spice-protocol host-python-six host-python-pyparsing jpeg json-glib gstreamer1 gst1-plugins-base usbredir usbutils phodav opus + +SPICE_GTK_CONF_OPTS += -Dusb-ids-path=/usr/share/hwdata/usb.ids $(eval $(meson-package)) From 07a41682e6e55545eeef88423e3c042c0e181a4a Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 25 Jul 2024 17:24:47 +0200 Subject: [PATCH 021/247] rework dependency list --- buildroot-external/package/spice-gtk/spice-gtk.mk | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/buildroot-external/package/spice-gtk/spice-gtk.mk b/buildroot-external/package/spice-gtk/spice-gtk.mk index 6f5a710..7d380df 100644 --- a/buildroot-external/package/spice-gtk/spice-gtk.mk +++ b/buildroot-external/package/spice-gtk/spice-gtk.mk @@ -13,7 +13,18 @@ SPICE_GTK_LICENSE = GPL-2.0 SPICE_GTK_LICENSE_FILES = COPYING SPICE_GTK_INSTALL_STAGING = YES -SPICE_GTK_DEPENDENCIES = spice-protocol host-python-six host-python-pyparsing jpeg json-glib gstreamer1 gst1-plugins-base usbredir usbutils phodav opus +SPICE_GTK_DEPENDENCIES = \ + spice-protocol \ + host-python-six \ + host-python-pyparsing \ + jpeg \ + json-glib \ + gstreamer1 \ + gst1-plugins-base \ + usbredir \ + usbutils \ + phodav \ + opus SPICE_GTK_CONF_OPTS += -Dusb-ids-path=/usr/share/hwdata/usb.ids From d8a4259b2acde460589fd1979108231d12cb578c Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 25 Jul 2024 17:29:04 +0200 Subject: [PATCH 022/247] fix linter errors --- buildroot-external/package/phodav/Config.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/buildroot-external/package/phodav/Config.in b/buildroot-external/package/phodav/Config.in index feae79f..ea02baa 100644 --- a/buildroot-external/package/phodav/Config.in +++ b/buildroot-external/package/phodav/Config.in @@ -2,6 +2,7 @@ config BR2_PACKAGE_PHODAV bool "phodav" select BR2_PACKAGE_LIBSOUP3 help - minimal WebDAV server implementation using GNOME libsoup (RFC 4918) + minimal WebDAV server implementation using + GNOME libsoup (RFC 4918) https://gitlab.gnome.org/GNOME/phodav From 052e6e7d8fd05c72513abbb2952c6190843f3e06 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Mon, 29 Jul 2024 17:56:40 +0200 Subject: [PATCH 023/247] add gst1-plugins-good and gst1-plugins-bad as additional dependencies for spice-gtk. --- buildroot-external/package/spice-gtk/Config.in | 5 +++++ buildroot-external/package/spice-gtk/spice-gtk.mk | 2 ++ 2 files changed, 7 insertions(+) diff --git a/buildroot-external/package/spice-gtk/Config.in b/buildroot-external/package/spice-gtk/Config.in index d26ff7c..f9818e9 100644 --- a/buildroot-external/package/spice-gtk/Config.in +++ b/buildroot-external/package/spice-gtk/Config.in @@ -8,6 +8,11 @@ config BR2_PACKAGE_SPICE_GTK select BR2_PACKAGE_JSON_GLIB select BR2_PACKAGE_GSTREAMER1 select BR2_PACKAGE_GST1_PLUGINS_BASE + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OPUS + select BR2_PACKAGE_GST1_PLUGINS_GOOD + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_PULSE + select BR2_PACKAGE_GST1_PLUGINS_BAD + select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPUS select BR2_PACKAGE_LIBUSB select BR2_PACKAGE_USBREDIR select BR2_PACKAGE_USBUTILS diff --git a/buildroot-external/package/spice-gtk/spice-gtk.mk b/buildroot-external/package/spice-gtk/spice-gtk.mk index 7d380df..b6dacc3 100644 --- a/buildroot-external/package/spice-gtk/spice-gtk.mk +++ b/buildroot-external/package/spice-gtk/spice-gtk.mk @@ -20,6 +20,8 @@ SPICE_GTK_DEPENDENCIES = \ jpeg \ json-glib \ gstreamer1 \ + gst1-plugins-good \ + gst1-plugins-bad \ gst1-plugins-base \ usbredir \ usbutils \ From 48c18f89f44b874099673af2ed50c26f3145de20 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Mon, 29 Jul 2024 18:00:16 +0200 Subject: [PATCH 024/247] update spice-gtk to 0.42 --- buildroot-external/package/spice-gtk/spice-gtk.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/package/spice-gtk/spice-gtk.mk b/buildroot-external/package/spice-gtk/spice-gtk.mk index b6dacc3..6315252 100644 --- a/buildroot-external/package/spice-gtk/spice-gtk.mk +++ b/buildroot-external/package/spice-gtk/spice-gtk.mk @@ -6,7 +6,7 @@ # ################################################################################ -SPICE_GTK_VERSION = 0.41 +SPICE_GTK_VERSION = 0.42 SPICE_GTK_SOURCE = spice-gtk-$(SPICE_GTK_VERSION).tar.xz SPICE_GTK_SITE = https://www.spice-space.org/download/gtk SPICE_GTK_LICENSE = GPL-2.0 From 9825f04960b36a6a4ff3274f781a84eac8763f5c Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 31 Jul 2024 09:42:16 +0200 Subject: [PATCH 025/247] enable missing PLUGIN_APP gst1-plugin-base addon --- buildroot-external/package/spice-gtk/Config.in | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/package/spice-gtk/Config.in b/buildroot-external/package/spice-gtk/Config.in index f9818e9..a56402a 100644 --- a/buildroot-external/package/spice-gtk/Config.in +++ b/buildroot-external/package/spice-gtk/Config.in @@ -9,6 +9,7 @@ config BR2_PACKAGE_SPICE_GTK select BR2_PACKAGE_GSTREAMER1 select BR2_PACKAGE_GST1_PLUGINS_BASE select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_OPUS + select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP select BR2_PACKAGE_GST1_PLUGINS_GOOD select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_PULSE select BR2_PACKAGE_GST1_PLUGINS_BAD From 6b62010bf5ff888f63172ff9ca8894686dd0d8eb Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 31 Jul 2024 11:46:59 +0200 Subject: [PATCH 026/247] add missing BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT --- buildroot-external/package/spice-gtk/Config.in | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/package/spice-gtk/Config.in b/buildroot-external/package/spice-gtk/Config.in index a56402a..fff901d 100644 --- a/buildroot-external/package/spice-gtk/Config.in +++ b/buildroot-external/package/spice-gtk/Config.in @@ -12,6 +12,7 @@ config BR2_PACKAGE_SPICE_GTK select BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_APP select BR2_PACKAGE_GST1_PLUGINS_GOOD select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_PULSE + select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT select BR2_PACKAGE_GST1_PLUGINS_BAD select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPUS select BR2_PACKAGE_LIBUSB From 143ddd540fccbf438a697f0d92009f6832944cc3 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 31 Jul 2024 14:59:59 +0200 Subject: [PATCH 027/247] update qutselect to 3.3 --- buildroot-external/package/qutselect/qutselect.hash | 2 +- buildroot-external/package/qutselect/qutselect.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/package/qutselect/qutselect.hash b/buildroot-external/package/qutselect/qutselect.hash index 3d9f4af..ae157d5 100644 --- a/buildroot-external/package/qutselect/qutselect.hash +++ b/buildroot-external/package/qutselect/qutselect.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 41953bed2347c952c57fd34a07d67b0626a58f018d1a4279d1babac09e6cd01c qutselect-3.2.tar.gz +sha256 e7963ee06df8170e0a23673b5293410bb13fbfca8b861a4b6bfc6bb922fe8112 qutselect-3.3.tar.gz diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index 8aa8ec4..69d6503 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -4,7 +4,7 @@ # ################################################################################ -QUTSELECT_VERSION = 3.2 +QUTSELECT_VERSION = 3.3 QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE From 8e98289ec3ecf8e085444b210a40aadc83b97642 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 31 Jul 2024 16:40:07 +0200 Subject: [PATCH 028/247] add missing BR2_PACKAGE_DBUS_GLIB (dbus-glib) --- buildroot-external/package/spice-gtk/Config.in | 1 + buildroot-external/package/spice-gtk/spice-gtk.mk | 1 + 2 files changed, 2 insertions(+) diff --git a/buildroot-external/package/spice-gtk/Config.in b/buildroot-external/package/spice-gtk/Config.in index fff901d..95b7730 100644 --- a/buildroot-external/package/spice-gtk/Config.in +++ b/buildroot-external/package/spice-gtk/Config.in @@ -15,6 +15,7 @@ config BR2_PACKAGE_SPICE_GTK select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT select BR2_PACKAGE_GST1_PLUGINS_BAD select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPUS + select BR2_PACKAGE_DBUS_GLIB select BR2_PACKAGE_LIBUSB select BR2_PACKAGE_USBREDIR select BR2_PACKAGE_USBUTILS diff --git a/buildroot-external/package/spice-gtk/spice-gtk.mk b/buildroot-external/package/spice-gtk/spice-gtk.mk index 6315252..e960f85 100644 --- a/buildroot-external/package/spice-gtk/spice-gtk.mk +++ b/buildroot-external/package/spice-gtk/spice-gtk.mk @@ -23,6 +23,7 @@ SPICE_GTK_DEPENDENCIES = \ gst1-plugins-good \ gst1-plugins-bad \ gst1-plugins-base \ + dbus-glib \ usbredir \ usbutils \ phodav \ From 94c9711ff1e944c036e2f575fa38995000ca0f8a Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 1 Aug 2024 10:30:32 +0200 Subject: [PATCH 029/247] dbus-glib is not required but enable libcap-ng instead for improved functionality. --- buildroot-external/package/spice-gtk/Config.in | 2 +- buildroot-external/package/spice-gtk/spice-gtk.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/package/spice-gtk/Config.in b/buildroot-external/package/spice-gtk/Config.in index 95b7730..58a5b3f 100644 --- a/buildroot-external/package/spice-gtk/Config.in +++ b/buildroot-external/package/spice-gtk/Config.in @@ -15,7 +15,7 @@ config BR2_PACKAGE_SPICE_GTK select BR2_PACKAGE_GST1_PLUGINS_GOOD_PLUGIN_AUTODETECT select BR2_PACKAGE_GST1_PLUGINS_BAD select BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPUS - select BR2_PACKAGE_DBUS_GLIB + select BR2_PACKAGE_LIBCAP_NG select BR2_PACKAGE_LIBUSB select BR2_PACKAGE_USBREDIR select BR2_PACKAGE_USBUTILS diff --git a/buildroot-external/package/spice-gtk/spice-gtk.mk b/buildroot-external/package/spice-gtk/spice-gtk.mk index e960f85..3a8efc5 100644 --- a/buildroot-external/package/spice-gtk/spice-gtk.mk +++ b/buildroot-external/package/spice-gtk/spice-gtk.mk @@ -23,7 +23,7 @@ SPICE_GTK_DEPENDENCIES = \ gst1-plugins-good \ gst1-plugins-bad \ gst1-plugins-base \ - dbus-glib \ + libcap-ng \ usbredir \ usbutils \ phodav \ From d263419ee0c1516cdfd47f1f3e8d3b66ea7aba27 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 1 Aug 2024 10:35:31 +0200 Subject: [PATCH 030/247] update upstream kernel to 6.6.43 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index a1a949e..cf30838 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.41" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.43" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 7a2438c..729b766 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -28,7 +28,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.41" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.43" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index 54afd50..c359cb9 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,2 +1,2 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 9ec99c578158ab85d99b37791a76643d2ea4c3f72ecbef7b5eb6d60f3de032ef linux-6.6.41.tar.xz +sha256 0ad83b1a1a780a1aad948d55aa55ee63c50c626f2d46910b9d2180028d100a5e linux-6.6.43.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index 54afd50..c359cb9 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,2 +1,2 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 9ec99c578158ab85d99b37791a76643d2ea4c3f72ecbef7b5eb6d60f3de032ef linux-6.6.41.tar.xz +sha256 0ad83b1a1a780a1aad948d55aa55ee63c50c626f2d46910b9d2180028d100a5e linux-6.6.43.tar.xz From f143f3573df02ce8ff7d227683842606dc7fe3ea Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Mon, 5 Aug 2024 09:51:12 +0200 Subject: [PATCH 031/247] fix some bugs in the pattern matching and field extraction routines in S42LoadNetFiles which could result in the wrong group file being used. --- .../rootfs-overlay/etc/init.d/S42LoadNetFiles | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles b/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles index 3f7e8a0..acdb966 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles +++ b/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles @@ -70,7 +70,7 @@ load_thinroot_hosts() { # put all additional groups matching the hostname # to the host variable - FOUND_GRP=$(grep -m1 -e ^"${HOSTNAME}" "${TMPDIR}/thinroot.hosts" | cut -d" " -f "2-") + FOUND_GRP=$(grep -m1 -i -e "^${HOSTNAME} " "${TMPDIR}/thinroot.hosts" | awk '{for(i=3;i<=NF;i++) {printf $i " "}}') if [[ -n "${FOUND_GRP}" ]]; then for grp in ${FOUND_GRP}; do # a comment lets us break out here @@ -83,7 +83,7 @@ load_thinroot_hosts() { done fi MAC_ADDR=$(cat "/sys/class/net/$(ip route show default | awk '/default/ {print $5}')/address") - FOUND_GRP=$(grep -m1 -i "${MAC_ADDR}" "${TMPDIR}/thinroot.hosts" | cut -d" " -f "2-") + FOUND_GRP=$(grep -m1 -i " ${MAC_ADDR}" "${TMPDIR}/thinroot.hosts" | awk '{for(i=3;i<=NF;i++) {printf $i " "}}') if [[ -n "${FOUND_GRP}" ]]; then for grp in ${FOUND_GRP}; do # a comment lets us break out here @@ -96,7 +96,7 @@ load_thinroot_hosts() { done if [[ "${HOSTNAME}" == "localhost" ]]; then - NEW_HOSTNAME=$(grep -m1 -i "${MAC_ADDR}" "${TMPDIR}/thinroot.hosts" | cut -f1) + NEW_HOSTNAME=$(grep -m1 -i " ${MAC_ADDR}" "${TMPDIR}/thinroot.hosts" | cut -d" " -f1) if [[ -n "${NEW_HOSTNAME}" && "${NEW_HOSTNAME}" != "-" ]]; then /bin/hostname "${NEW_HOSTNAME}" HOSTNAME=$(/bin/hostname) From 062dcc4cee812755f0efc5d95624a12a04913a48 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Mon, 5 Aug 2024 09:53:41 +0200 Subject: [PATCH 032/247] update upstream kernel to 6.6.44 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index cf30838..6594151 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.43" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.44" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 729b766..7655ab3 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -28,7 +28,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.43" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.44" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index c359cb9..c4bfb40 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,2 +1,2 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 0ad83b1a1a780a1aad948d55aa55ee63c50c626f2d46910b9d2180028d100a5e linux-6.6.43.tar.xz +sha256 93218296934915636fe6ba08e125948424cc270fd8948502c0ab91087a9fccd8 linux-6.6.44.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index c359cb9..c4bfb40 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,2 +1,2 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 0ad83b1a1a780a1aad948d55aa55ee63c50c626f2d46910b9d2180028d100a5e linux-6.6.43.tar.xz +sha256 93218296934915636fe6ba08e125948424cc270fd8948502c0ab91087a9fccd8 linux-6.6.44.tar.xz From 10ae5adf9a783d254823ac7f35cf2aca10927638 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 13 Aug 2024 08:27:55 +0200 Subject: [PATCH 033/247] bump upstream kernel to 6.6.45 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 6594151..4517e4a 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.44" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.45" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 7655ab3..30a2999 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -28,7 +28,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.44" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.45" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index c4bfb40..c6def29 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,2 +1,2 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 93218296934915636fe6ba08e125948424cc270fd8948502c0ab91087a9fccd8 linux-6.6.44.tar.xz +sha256 121bed240767e4a0959c1609e78eeaaf3e0620d9d1a5ed1f6e36bdf609c4f179 linux-6.6.45.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index c4bfb40..c6def29 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,2 +1,2 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 93218296934915636fe6ba08e125948424cc270fd8948502c0ab91087a9fccd8 linux-6.6.44.tar.xz +sha256 121bed240767e4a0959c1609e78eeaaf3e0620d9d1a5ed1f6e36bdf609c4f179 linux-6.6.45.tar.xz From ff5959c559fc4257a3ebb3adff19b2a3b88a1faf Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 13 Aug 2024 08:30:24 +0200 Subject: [PATCH 034/247] add update script for qutselect and bumped to latest 3.4 --- .../package/qutselect/qutselect.hash | 2 +- .../package/qutselect/qutselect.mk | 2 +- scripts/update-qutselect.sh | 24 +++++++++++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) create mode 100755 scripts/update-qutselect.sh diff --git a/buildroot-external/package/qutselect/qutselect.hash b/buildroot-external/package/qutselect/qutselect.hash index ae157d5..1be93f6 100644 --- a/buildroot-external/package/qutselect/qutselect.hash +++ b/buildroot-external/package/qutselect/qutselect.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 e7963ee06df8170e0a23673b5293410bb13fbfca8b861a4b6bfc6bb922fe8112 qutselect-3.3.tar.gz +sha256 4b85aacd5eb493077e4a38f20b1a38ab3b2fe97983532d05ccbbb9d585203931 qutselect-3.4.tar.gz diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index 69d6503..69b5a28 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -4,7 +4,7 @@ # ################################################################################ -QUTSELECT_VERSION = 3.3 +QUTSELECT_VERSION = 3.4 QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE diff --git a/scripts/update-qutselect.sh b/scripts/update-qutselect.sh new file mode 100755 index 0000000..2c29116 --- /dev/null +++ b/scripts/update-qutselect.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -e + +ID=${1} +PACKAGE_NAME="qutselect" +PROJECT_URL="https://github.com/hzdr/qutselect" +ARCHIVE_URL="${PROJECT_URL}/archive/${ID}/${PACKAGE_NAME}-${ID}.tar.gz" + +if [[ -z "${ID}" ]]; then + echo "Need qutselect version (3.4)" + exit 1 +fi + +# download archive for hash update +ARCHIVE_HASH=$(wget --passive-ftp -nd -t 3 -O - "${ARCHIVE_URL}" | sha256sum | awk '{ print $1 }') +if [[ -n "${ARCHIVE_HASH}" ]]; then + # update package info + BR_PACKAGE_NAME=${PACKAGE_NAME^^} + BR_PACKAGE_NAME=${BR_PACKAGE_NAME//-/_} + sed -i "s/${BR_PACKAGE_NAME}_VERSION = .*/${BR_PACKAGE_NAME}_VERSION = ${ID}/g" "buildroot-external/package/${PACKAGE_NAME}/${PACKAGE_NAME}.mk" + # update package hash + sed -i "$ d" "buildroot-external/package/${PACKAGE_NAME}/${PACKAGE_NAME}.hash" + echo "sha256 ${ARCHIVE_HASH} ${PACKAGE_NAME}-${ID}.tar.gz" >>"buildroot-external/package/${PACKAGE_NAME}/${PACKAGE_NAME}.hash" +fi From a3ae9e039e03e4dcc671325b5c32a9e1e05f4a7b Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 18 Sep 2024 13:48:59 +0200 Subject: [PATCH 035/247] fix issue with fallback hostname defaulting to "thinroot" and not using the one from the thinroot.hosts file instead. --- buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles b/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles index acdb966..1653796 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles +++ b/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles @@ -95,7 +95,10 @@ load_thinroot_hosts() { fi done - if [[ "${HOSTNAME}" == "localhost" ]]; then + # if no hostname can be queried (localhost or thinroot fallback), then + # we try to get it from the thinroot.hosts file instead + if [[ "${HOSTNAME}" == "localhost" ]] || + [[ "${HOSTNAME}" == "thinroot" ]]; then NEW_HOSTNAME=$(grep -m1 -i " ${MAC_ADDR}" "${TMPDIR}/thinroot.hosts" | cut -d" " -f1) if [[ -n "${NEW_HOSTNAME}" && "${NEW_HOSTNAME}" != "-" ]]; then /bin/hostname "${NEW_HOSTNAME}" From 6b9ed26e77f63a286ce8e4e56df6acbdedd19d35 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 18 Sep 2024 14:43:57 +0200 Subject: [PATCH 036/247] update qutselect to 3.5 for improved log output for thinlinc+vnc sessions. --- buildroot-external/package/qutselect/qutselect.hash | 2 +- buildroot-external/package/qutselect/qutselect.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/package/qutselect/qutselect.hash b/buildroot-external/package/qutselect/qutselect.hash index 1be93f6..32afb91 100644 --- a/buildroot-external/package/qutselect/qutselect.hash +++ b/buildroot-external/package/qutselect/qutselect.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 4b85aacd5eb493077e4a38f20b1a38ab3b2fe97983532d05ccbbb9d585203931 qutselect-3.4.tar.gz +sha256 ad74a9e6c74cbdac78aa289b4936f046a92fe03999e10a4d8950ab1b461e5213 qutselect-3.5.tar.gz diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index 69b5a28..aeafb33 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -4,7 +4,7 @@ # ################################################################################ -QUTSELECT_VERSION = 3.4 +QUTSELECT_VERSION = 3.5 QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE From 858d062d4e8ef084d0327579bc33249b7c8ab3a6 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 18 Sep 2024 14:46:41 +0200 Subject: [PATCH 037/247] update upstream kernel to 6.6.51 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 4517e4a..76f35de 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.45" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.51" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 30a2999..9630908 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -28,7 +28,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.45" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.51" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index c6def29..b7f23d4 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,2 +1,2 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 121bed240767e4a0959c1609e78eeaaf3e0620d9d1a5ed1f6e36bdf609c4f179 linux-6.6.45.tar.xz +sha256 1c0c9a14650879c4913efdbac428ba31a540c3d987155ddf34d33e11eca008b3 linux-6.6.51.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index c6def29..b7f23d4 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,2 +1,2 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 121bed240767e4a0959c1609e78eeaaf3e0620d9d1a5ed1f6e36bdf609c4f179 linux-6.6.45.tar.xz +sha256 1c0c9a14650879c4913efdbac428ba31a540c3d987155ddf34d33e11eca008b3 linux-6.6.51.tar.xz From d3c8a000b30ac2084b8f4385b8a75760558e719d Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 18 Sep 2024 14:55:10 +0200 Subject: [PATCH 038/247] update buildroot to latest 2024.08 and adapted upstream patches. --- Makefile | 4 +- buildroot-patches/0008-rpi-firmware.patch | 2 +- .../package/rpi-firmware/rpi-firmware.mk.orig | 2 +- ...0012-ffmpeg-rpi-userland-aarch64.patch_off | 11 - .../buildroot/package/ffmpeg/ffmpeg.mk | 578 ------------------ .../buildroot/package/ffmpeg/ffmpeg.mk.orig | 578 ------------------ 6 files changed, 4 insertions(+), 1171 deletions(-) delete mode 100644 buildroot-patches/0012-ffmpeg-rpi-userland-aarch64.patch_off delete mode 100644 buildroot-patches/0012-ffmpeg-rpi-userland-aarch64/buildroot/package/ffmpeg/ffmpeg.mk delete mode 100644 buildroot-patches/0012-ffmpeg-rpi-userland-aarch64/buildroot/package/ffmpeg/ffmpeg.mk.orig diff --git a/Makefile b/Makefile index fa12d05..558e281 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -BUILDROOT_VERSION=2024.05.1 -BUILDROOT_SHA256=561a5254b22356b31494b1ea3b7db3101ebe84a77550ef15286195c05cae1e8c +BUILDROOT_VERSION=2024.08 +BUILDROOT_SHA256=1d8ecca54275f647eb7217480157c7576443b8f9563457daf79e4ce75a46fdcd BUILDROOT_EXTERNAL=buildroot-external DEFCONFIG_DIR=$(BUILDROOT_EXTERNAL)/configs DATE=$(shell date +%Y%m%d) diff --git a/buildroot-patches/0008-rpi-firmware.patch b/buildroot-patches/0008-rpi-firmware.patch index 9a4dab5..3d17b48 100644 --- a/buildroot-patches/0008-rpi-firmware.patch +++ b/buildroot-patches/0008-rpi-firmware.patch @@ -17,7 +17,7 @@ # ################################################################################ --RPI_FIRMWARE_VERSION = 83dafbc92c0e63f76ca2ecdd42462d56489d1c77 +-RPI_FIRMWARE_VERSION = 5476720d52cf579dc1627715262b30ba1242525e +RPI_FIRMWARE_VERSION = $(call qstrip,$(BR2_PACKAGE_RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3-Clause diff --git a/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig b/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig index 11177ae..7ae9ff6 100644 --- a/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig +++ b/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig @@ -4,7 +4,7 @@ # ################################################################################ -RPI_FIRMWARE_VERSION = 83dafbc92c0e63f76ca2ecdd42462d56489d1c77 +RPI_FIRMWARE_VERSION = 5476720d52cf579dc1627715262b30ba1242525e RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3-Clause RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom diff --git a/buildroot-patches/0012-ffmpeg-rpi-userland-aarch64.patch_off b/buildroot-patches/0012-ffmpeg-rpi-userland-aarch64.patch_off deleted file mode 100644 index 7e20da5..0000000 --- a/buildroot-patches/0012-ffmpeg-rpi-userland-aarch64.patch_off +++ /dev/null @@ -1,11 +0,0 @@ ---- buildroot/package/ffmpeg/ffmpeg.mk.orig -+++ buildroot/package/ffmpeg/ffmpeg.mk -@@ -281,7 +281,7 @@ - FFMPEG_CONF_OPTS += --disable-vdpau - endif - --ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) -+ifeq ($(BR2_PACKAGE_RPI_USERLAND)$(BR2_arm),yy) - FFMPEG_CONF_OPTS += --enable-mmal --enable-omx --enable-omx-rpi \ - --extra-cflags=-I$(STAGING_DIR)/usr/include/IL - FFMPEG_DEPENDENCIES += rpi-userland diff --git a/buildroot-patches/0012-ffmpeg-rpi-userland-aarch64/buildroot/package/ffmpeg/ffmpeg.mk b/buildroot-patches/0012-ffmpeg-rpi-userland-aarch64/buildroot/package/ffmpeg/ffmpeg.mk deleted file mode 100644 index 0e33dcf..0000000 --- a/buildroot-patches/0012-ffmpeg-rpi-userland-aarch64/buildroot/package/ffmpeg/ffmpeg.mk +++ /dev/null @@ -1,578 +0,0 @@ -################################################################################ -# -# ffmpeg -# -################################################################################ - -FFMPEG_VERSION = 4.4 -FFMPEG_SOURCE = ffmpeg-$(FFMPEG_VERSION).tar.xz -FFMPEG_SITE = http://ffmpeg.org/releases -FFMPEG_INSTALL_STAGING = YES - -FFMPEG_LICENSE = LGPL-2.1+, libjpeg license -FFMPEG_LICENSE_FILES = LICENSE.md COPYING.LGPLv2.1 -ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y) -FFMPEG_LICENSE += and GPL-2.0+ -FFMPEG_LICENSE_FILES += COPYING.GPLv2 -endif - -FFMPEG_CPE_ID_VENDOR = ffmpeg - -FFMPEG_CONF_OPTS = \ - --prefix=/usr \ - --enable-avfilter \ - --disable-version3 \ - --enable-logging \ - --enable-optimizations \ - --disable-extra-warnings \ - --enable-avdevice \ - --enable-avcodec \ - --enable-avformat \ - --enable-network \ - --disable-gray \ - --enable-swscale-alpha \ - --disable-small \ - --enable-dct \ - --enable-fft \ - --enable-mdct \ - --enable-rdft \ - --disable-crystalhd \ - --disable-dxva2 \ - --enable-runtime-cpudetect \ - --disable-hardcoded-tables \ - --disable-mipsdsp \ - --disable-mipsdspr2 \ - --disable-msa \ - --enable-hwaccels \ - --disable-cuda \ - --disable-cuvid \ - --disable-nvenc \ - --disable-avisynth \ - --disable-frei0r \ - --disable-libopencore-amrnb \ - --disable-libopencore-amrwb \ - --disable-libdc1394 \ - --disable-libgsm \ - --disable-libilbc \ - --disable-libvo-amrwbenc \ - --disable-symver \ - --disable-doc - -FFMPEG_DEPENDENCIES += host-pkgconf - -ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y) -FFMPEG_CONF_OPTS += --enable-gpl -else -FFMPEG_CONF_OPTS += --disable-gpl -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_NONFREE),y) -FFMPEG_CONF_OPTS += --enable-nonfree -else -FFMPEG_CONF_OPTS += --disable-nonfree -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_FFMPEG),y) -FFMPEG_CONF_OPTS += --enable-ffmpeg -else -FFMPEG_CONF_OPTS += --disable-ffmpeg -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_FFPLAY),y) -FFMPEG_DEPENDENCIES += sdl2 -FFMPEG_CONF_OPTS += --enable-ffplay -FFMPEG_CONF_ENV += SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl2-config -else -FFMPEG_CONF_OPTS += --disable-ffplay -endif - -ifeq ($(BR2_PACKAGE_LIBV4L),y) -FFMPEG_DEPENDENCIES += libv4l -FFMPEG_CONF_OPTS += --enable-libv4l2 -else -FFMPEG_CONF_OPTS += --disable-libv4l2 -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_AVRESAMPLE),y) -FFMPEG_CONF_OPTS += --enable-avresample -else -FFMPEG_CONF_OPTS += --disable-avresample -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_FFPROBE),y) -FFMPEG_CONF_OPTS += --enable-ffprobe -else -FFMPEG_CONF_OPTS += --disable-ffprobe -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_XCBGRAB),y) -FFMPEG_CONF_OPTS += \ - --enable-libxcb \ - --enable-libxcb-shape \ - --enable-libxcb-shm \ - --enable-libxcb-xfixes -FFMPEG_DEPENDENCIES += libxcb -else -FFMPEG_CONF_OPTS += --disable-libxcb -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_POSTPROC),y) -FFMPEG_CONF_OPTS += --enable-postproc -else -FFMPEG_CONF_OPTS += --disable-postproc -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y) -FFMPEG_CONF_OPTS += --enable-swscale -else -FFMPEG_CONF_OPTS += --disable-swscale -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),all) -FFMPEG_CONF_OPTS += --disable-encoders \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),--enable-encoder=$(x)) -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),all) -FFMPEG_CONF_OPTS += --disable-decoders \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),--enable-decoder=$(x)) -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),all) -FFMPEG_CONF_OPTS += --disable-muxers \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),--enable-muxer=$(x)) -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),all) -FFMPEG_CONF_OPTS += --disable-demuxers \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),--enable-demuxer=$(x)) -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),all) -FFMPEG_CONF_OPTS += --disable-parsers \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),--enable-parser=$(x)) -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),all) -FFMPEG_CONF_OPTS += --disable-bsfs \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),--enable-bsf=$(x)) -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),all) -FFMPEG_CONF_OPTS += --disable-protocols \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),--enable-protocol=$(x)) -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),all) -FFMPEG_CONF_OPTS += --disable-filters \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),--enable-filter=$(x)) -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_INDEVS),y) -FFMPEG_CONF_OPTS += --enable-indevs -ifeq ($(BR2_PACKAGE_ALSA_LIB),y) -FFMPEG_CONF_OPTS += --enable-alsa -FFMPEG_DEPENDENCIES += alsa-lib -else -FFMPEG_CONF_OPTS += --disable-alsa -endif -else -FFMPEG_CONF_OPTS += --disable-indevs -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_OUTDEVS),y) -FFMPEG_CONF_OPTS += --enable-outdevs -ifeq ($(BR2_PACKAGE_ALSA_LIB),y) -FFMPEG_DEPENDENCIES += alsa-lib -endif -else -FFMPEG_CONF_OPTS += --disable-outdevs -endif - -ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) -FFMPEG_CONF_OPTS += --enable-pthreads -else -FFMPEG_CONF_OPTS += --disable-pthreads -endif - -ifeq ($(BR2_PACKAGE_ZLIB),y) -FFMPEG_CONF_OPTS += --enable-zlib -FFMPEG_DEPENDENCIES += zlib -else -FFMPEG_CONF_OPTS += --disable-zlib -endif - -ifeq ($(BR2_PACKAGE_BZIP2),y) -FFMPEG_CONF_OPTS += --enable-bzlib -FFMPEG_DEPENDENCIES += bzip2 -else -FFMPEG_CONF_OPTS += --disable-bzlib -endif - -ifeq ($(BR2_PACKAGE_FDK_AAC)$(BR2_PACKAGE_FFMPEG_NONFREE),yy) -FFMPEG_CONF_OPTS += --enable-libfdk-aac -FFMPEG_DEPENDENCIES += fdk-aac -else -FFMPEG_CONF_OPTS += --disable-libfdk-aac -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_GPL)$(BR2_PACKAGE_LIBCDIO_PARANOIA),yy) -FFMPEG_CONF_OPTS += --enable-libcdio -FFMPEG_DEPENDENCIES += libcdio-paranoia -else -FFMPEG_CONF_OPTS += --disable-libcdio -endif - -ifeq ($(BR2_PACKAGE_GNUTLS),y) -FFMPEG_CONF_OPTS += --enable-gnutls --disable-openssl -FFMPEG_DEPENDENCIES += gnutls -else -FFMPEG_CONF_OPTS += --disable-gnutls -ifeq ($(BR2_PACKAGE_OPENSSL),y) -# openssl isn't license compatible with GPL -ifeq ($(BR2_PACKAGE_FFMPEG_GPL)x$(BR2_PACKAGE_FFMPEG_NONFREE),yx) -FFMPEG_CONF_OPTS += --disable-openssl -else -FFMPEG_CONF_OPTS += --enable-openssl -FFMPEG_DEPENDENCIES += openssl -endif -else -FFMPEG_CONF_OPTS += --disable-openssl -endif -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_GPL)$(BR2_PACKAGE_LIBEBUR128),yy) -FFMPEG_DEPENDENCIES += libebur128 -endif - -ifeq ($(BR2_PACKAGE_LIBDRM),y) -FFMPEG_CONF_OPTS += --enable-libdrm -FFMPEG_DEPENDENCIES += libdrm -else -FFMPEG_CONF_OPTS += --disable-libdrm -endif - -ifeq ($(BR2_PACKAGE_LIBOPENH264),y) -FFMPEG_CONF_OPTS += --enable-libopenh264 -FFMPEG_DEPENDENCIES += libopenh264 -else -FFMPEG_CONF_OPTS += --disable-libopenh264 -endif - -ifeq ($(BR2_PACKAGE_LIBVORBIS),y) -FFMPEG_DEPENDENCIES += libvorbis -FFMPEG_CONF_OPTS += \ - --enable-libvorbis \ - --enable-muxer=ogg \ - --enable-encoder=libvorbis -endif - -ifeq ($(BR2_PACKAGE_LIBVA),y) -FFMPEG_CONF_OPTS += --enable-vaapi -FFMPEG_DEPENDENCIES += libva -else -FFMPEG_CONF_OPTS += --disable-vaapi -endif - -ifeq ($(BR2_PACKAGE_LIBVDPAU),y) -FFMPEG_CONF_OPTS += --enable-vdpau -FFMPEG_DEPENDENCIES += libvdpau -else -FFMPEG_CONF_OPTS += --disable-vdpau -endif - -ifeq ($(BR2_PACKAGE_RPI_USERLAND)$(BR2_arm),yy) -FFMPEG_CONF_OPTS += --enable-mmal --enable-omx --enable-omx-rpi \ - --extra-cflags=-I$(STAGING_DIR)/usr/include/IL -FFMPEG_DEPENDENCIES += rpi-userland -else -FFMPEG_CONF_OPTS += --disable-mmal --disable-omx --disable-omx-rpi -endif - -# To avoid a circular dependency only use opencv if opencv itself does -# not depend on ffmpeg. -ifeq ($(BR2_PACKAGE_OPENCV3_LIB_IMGPROC)x$(BR2_PACKAGE_OPENCV3_WITH_FFMPEG),yx) -FFMPEG_CONF_OPTS += --enable-libopencv -FFMPEG_DEPENDENCIES += opencv3 -else -FFMPEG_CONF_OPTS += --disable-libopencv -endif - -ifeq ($(BR2_PACKAGE_OPUS),y) -FFMPEG_CONF_OPTS += --enable-libopus -FFMPEG_DEPENDENCIES += opus -else -FFMPEG_CONF_OPTS += --disable-libopus -endif - -ifeq ($(BR2_PACKAGE_LIBVPX),y) -FFMPEG_CONF_OPTS += --enable-libvpx -FFMPEG_DEPENDENCIES += libvpx -else -FFMPEG_CONF_OPTS += --disable-libvpx -endif - -ifeq ($(BR2_PACKAGE_LIBASS),y) -FFMPEG_CONF_OPTS += --enable-libass -FFMPEG_DEPENDENCIES += libass -else -FFMPEG_CONF_OPTS += --disable-libass -endif - -ifeq ($(BR2_PACKAGE_LIBBLURAY),y) -FFMPEG_CONF_OPTS += --enable-libbluray -FFMPEG_DEPENDENCIES += libbluray -else -FFMPEG_CONF_OPTS += --disable-libbluray -endif - -ifeq ($(BR2_PACKAGE_INTEL_MEDIASDK),y) -FFMPEG_CONF_OPTS += --enable-libmfx -FFMPEG_DEPENDENCIES += intel-mediasdk -else -FFMPEG_CONF_OPTS += --disable-libmfx -endif - -ifeq ($(BR2_PACKAGE_RTMPDUMP),y) -FFMPEG_CONF_OPTS += --enable-librtmp -FFMPEG_DEPENDENCIES += rtmpdump -else -FFMPEG_CONF_OPTS += --disable-librtmp -endif - -ifeq ($(BR2_PACKAGE_LAME),y) -FFMPEG_CONF_OPTS += --enable-libmp3lame -FFMPEG_DEPENDENCIES += lame -else -FFMPEG_CONF_OPTS += --disable-libmp3lame -endif - -ifeq ($(BR2_PACKAGE_LIBMODPLUG),y) -FFMPEG_CONF_OPTS += --enable-libmodplug -FFMPEG_DEPENDENCIES += libmodplug -else -FFMPEG_CONF_OPTS += --disable-libmodplug -endif - -ifeq ($(BR2_PACKAGE_SPEEX),y) -FFMPEG_CONF_OPTS += --enable-libspeex -FFMPEG_DEPENDENCIES += speex -else -FFMPEG_CONF_OPTS += --disable-libspeex -endif - -ifeq ($(BR2_PACKAGE_LIBTHEORA),y) -FFMPEG_CONF_OPTS += --enable-libtheora -FFMPEG_DEPENDENCIES += libtheora -else -FFMPEG_CONF_OPTS += --disable-libtheora -endif - -ifeq ($(BR2_PACKAGE_LIBICONV),y) -FFMPEG_CONF_OPTS += --enable-iconv -FFMPEG_DEPENDENCIES += libiconv -else -FFMPEG_CONF_OPTS += --disable-iconv -endif - -# ffmpeg freetype support require fenv.h which is only -# available/working on glibc. -# The microblaze variant doesn't provide the needed exceptions -ifeq ($(BR2_PACKAGE_FREETYPE)$(BR2_TOOLCHAIN_USES_GLIBC)x$(BR2_microblaze),yyx) -FFMPEG_CONF_OPTS += --enable-libfreetype -FFMPEG_DEPENDENCIES += freetype -else -FFMPEG_CONF_OPTS += --disable-libfreetype -endif - -ifeq ($(BR2_PACKAGE_FONTCONFIG),y) -FFMPEG_CONF_OPTS += --enable-fontconfig -FFMPEG_DEPENDENCIES += fontconfig -else -FFMPEG_CONF_OPTS += --disable-fontconfig -endif - -ifeq ($(BR2_PACKAGE_OPENJPEG),y) -FFMPEG_CONF_OPTS += --enable-libopenjpeg -FFMPEG_DEPENDENCIES += openjpeg -else -FFMPEG_CONF_OPTS += --disable-libopenjpeg -endif - -ifeq ($(BR2_PACKAGE_X264)$(BR2_PACKAGE_FFMPEG_GPL),yy) -FFMPEG_CONF_OPTS += --enable-libx264 -FFMPEG_DEPENDENCIES += x264 -else -FFMPEG_CONF_OPTS += --disable-libx264 -endif - -ifeq ($(BR2_PACKAGE_X265)$(BR2_PACKAGE_FFMPEG_GPL),yy) -FFMPEG_CONF_OPTS += --enable-libx265 -FFMPEG_DEPENDENCIES += x265 -else -FFMPEG_CONF_OPTS += --disable-libx265 -endif - -ifeq ($(BR2_PACKAGE_DAV1D),y) -FFMPEG_CONF_OPTS += --enable-libdav1d -FFMPEG_DEPENDENCIES += dav1d -else -FFMPEG_CONF_OPTS += --disable-libdav1d -endif - -ifeq ($(BR2_X86_CPU_HAS_MMX),y) -FFMPEG_CONF_OPTS += --enable-x86asm -FFMPEG_DEPENDENCIES += host-nasm -else -FFMPEG_CONF_OPTS += --disable-x86asm -FFMPEG_CONF_OPTS += --disable-mmx -endif - -ifeq ($(BR2_X86_CPU_HAS_SSE),y) -FFMPEG_CONF_OPTS += --enable-sse -else -FFMPEG_CONF_OPTS += --disable-sse -endif - -ifeq ($(BR2_X86_CPU_HAS_SSE2),y) -FFMPEG_CONF_OPTS += --enable-sse2 -else -FFMPEG_CONF_OPTS += --disable-sse2 -endif - -ifeq ($(BR2_X86_CPU_HAS_SSE3),y) -FFMPEG_CONF_OPTS += --enable-sse3 -else -FFMPEG_CONF_OPTS += --disable-sse3 -endif - -ifeq ($(BR2_X86_CPU_HAS_SSSE3),y) -FFMPEG_CONF_OPTS += --enable-ssse3 -else -FFMPEG_CONF_OPTS += --disable-ssse3 -endif - -ifeq ($(BR2_X86_CPU_HAS_SSE4),y) -FFMPEG_CONF_OPTS += --enable-sse4 -else -FFMPEG_CONF_OPTS += --disable-sse4 -endif - -ifeq ($(BR2_X86_CPU_HAS_SSE42),y) -FFMPEG_CONF_OPTS += --enable-sse42 -else -FFMPEG_CONF_OPTS += --disable-sse42 -endif - -ifeq ($(BR2_X86_CPU_HAS_AVX),y) -FFMPEG_CONF_OPTS += --enable-avx -else -FFMPEG_CONF_OPTS += --disable-avx -endif - -ifeq ($(BR2_X86_CPU_HAS_AVX2),y) -FFMPEG_CONF_OPTS += --enable-avx2 -else -FFMPEG_CONF_OPTS += --disable-avx2 -endif - -# Explicitly disable everything that doesn't match for ARM -# FFMPEG "autodetects" by compiling an extended instruction via AS -# This works on compilers that aren't built for generic by default -ifeq ($(BR2_ARM_CPU_ARMV4),y) -FFMPEG_CONF_OPTS += --disable-armv5te -endif -ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y) -FFMPEG_CONF_OPTS += --enable-armv6 -else -FFMPEG_CONF_OPTS += --disable-armv6 --disable-armv6t2 -endif -ifeq ($(BR2_ARM_CPU_HAS_VFPV2),y) -FFMPEG_CONF_OPTS += --enable-vfp -else -FFMPEG_CONF_OPTS += --disable-vfp -endif -ifeq ($(BR2_ARM_CPU_HAS_NEON),y) -FFMPEG_CONF_OPTS += --enable-neon -else ifeq ($(BR2_aarch64),y) -FFMPEG_CONF_OPTS += --enable-neon -else -FFMPEG_CONF_OPTS += --disable-neon -endif - -ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) -ifeq ($(BR2_MIPS_SOFT_FLOAT),y) -FFMPEG_CONF_OPTS += --disable-mipsfpu -else -FFMPEG_CONF_OPTS += --enable-mipsfpu -endif - -# Fix build failure on "addi opcode not supported" -ifeq ($(BR2_mips_32r6)$(BR2_mips_64r6),y) -FFMPEG_CONF_OPTS += --disable-asm -endif -endif # MIPS - -ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) -FFMPEG_CONF_OPTS += --enable-altivec -else -FFMPEG_CONF_OPTS += --disable-altivec -endif - -# Uses __atomic_fetch_add_4 -ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) -FFMPEG_CONF_OPTS += --extra-libs=-latomic -endif - -ifeq ($(BR2_STATIC_LIBS),) -FFMPEG_CONF_OPTS += --enable-pic -else -FFMPEG_CONF_OPTS += --disable-pic -endif - -# Default to --cpu=generic for MIPS architecture, in order to avoid a -# warning from ffmpeg's configure script. -ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) -FFMPEG_CONF_OPTS += --cpu=generic -else ifneq ($(GCC_TARGET_CPU),) -FFMPEG_CONF_OPTS += --cpu="$(GCC_TARGET_CPU)" -else ifneq ($(GCC_TARGET_ARCH),) -FFMPEG_CONF_OPTS += --cpu="$(GCC_TARGET_ARCH)" -endif - -FFMPEG_CFLAGS = $(TARGET_CFLAGS) - -ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) -FFMPEG_CONF_OPTS += --disable-optimizations -FFMPEG_CFLAGS += -O0 -endif - -FFMPEG_CONF_ENV += CFLAGS="$(FFMPEG_CFLAGS)" -FFMPEG_CONF_OPTS += $(call qstrip,$(BR2_PACKAGE_FFMPEG_EXTRACONF)) - -# Override FFMPEG_CONFIGURE_CMDS: FFmpeg does not support --target and others -define FFMPEG_CONFIGURE_CMDS - (cd $(FFMPEG_SRCDIR) && rm -rf config.cache && \ - $(TARGET_CONFIGURE_OPTS) \ - $(TARGET_CONFIGURE_ARGS) \ - $(FFMPEG_CONF_ENV) \ - ./configure \ - --enable-cross-compile \ - --cross-prefix=$(TARGET_CROSS) \ - --sysroot=$(STAGING_DIR) \ - --host-cc="$(HOSTCC)" \ - --arch=$(BR2_ARCH) \ - --target-os="linux" \ - --disable-stripping \ - --pkg-config="$(PKG_CONFIG_HOST_BINARY)" \ - $(SHARED_STATIC_LIBS_OPTS) \ - $(FFMPEG_CONF_OPTS) \ - ) -endef - -define FFMPEG_REMOVE_EXAMPLE_SRC_FILES - rm -rf $(TARGET_DIR)/usr/share/ffmpeg/examples -endef -FFMPEG_POST_INSTALL_TARGET_HOOKS += FFMPEG_REMOVE_EXAMPLE_SRC_FILES - -$(eval $(autotools-package)) diff --git a/buildroot-patches/0012-ffmpeg-rpi-userland-aarch64/buildroot/package/ffmpeg/ffmpeg.mk.orig b/buildroot-patches/0012-ffmpeg-rpi-userland-aarch64/buildroot/package/ffmpeg/ffmpeg.mk.orig deleted file mode 100644 index 8ff8ea8..0000000 --- a/buildroot-patches/0012-ffmpeg-rpi-userland-aarch64/buildroot/package/ffmpeg/ffmpeg.mk.orig +++ /dev/null @@ -1,578 +0,0 @@ -################################################################################ -# -# ffmpeg -# -################################################################################ - -FFMPEG_VERSION = 4.4 -FFMPEG_SOURCE = ffmpeg-$(FFMPEG_VERSION).tar.xz -FFMPEG_SITE = http://ffmpeg.org/releases -FFMPEG_INSTALL_STAGING = YES - -FFMPEG_LICENSE = LGPL-2.1+, libjpeg license -FFMPEG_LICENSE_FILES = LICENSE.md COPYING.LGPLv2.1 -ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y) -FFMPEG_LICENSE += and GPL-2.0+ -FFMPEG_LICENSE_FILES += COPYING.GPLv2 -endif - -FFMPEG_CPE_ID_VENDOR = ffmpeg - -FFMPEG_CONF_OPTS = \ - --prefix=/usr \ - --enable-avfilter \ - --disable-version3 \ - --enable-logging \ - --enable-optimizations \ - --disable-extra-warnings \ - --enable-avdevice \ - --enable-avcodec \ - --enable-avformat \ - --enable-network \ - --disable-gray \ - --enable-swscale-alpha \ - --disable-small \ - --enable-dct \ - --enable-fft \ - --enable-mdct \ - --enable-rdft \ - --disable-crystalhd \ - --disable-dxva2 \ - --enable-runtime-cpudetect \ - --disable-hardcoded-tables \ - --disable-mipsdsp \ - --disable-mipsdspr2 \ - --disable-msa \ - --enable-hwaccels \ - --disable-cuda \ - --disable-cuvid \ - --disable-nvenc \ - --disable-avisynth \ - --disable-frei0r \ - --disable-libopencore-amrnb \ - --disable-libopencore-amrwb \ - --disable-libdc1394 \ - --disable-libgsm \ - --disable-libilbc \ - --disable-libvo-amrwbenc \ - --disable-symver \ - --disable-doc - -FFMPEG_DEPENDENCIES += host-pkgconf - -ifeq ($(BR2_PACKAGE_FFMPEG_GPL),y) -FFMPEG_CONF_OPTS += --enable-gpl -else -FFMPEG_CONF_OPTS += --disable-gpl -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_NONFREE),y) -FFMPEG_CONF_OPTS += --enable-nonfree -else -FFMPEG_CONF_OPTS += --disable-nonfree -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_FFMPEG),y) -FFMPEG_CONF_OPTS += --enable-ffmpeg -else -FFMPEG_CONF_OPTS += --disable-ffmpeg -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_FFPLAY),y) -FFMPEG_DEPENDENCIES += sdl2 -FFMPEG_CONF_OPTS += --enable-ffplay -FFMPEG_CONF_ENV += SDL_CONFIG=$(STAGING_DIR)/usr/bin/sdl2-config -else -FFMPEG_CONF_OPTS += --disable-ffplay -endif - -ifeq ($(BR2_PACKAGE_LIBV4L),y) -FFMPEG_DEPENDENCIES += libv4l -FFMPEG_CONF_OPTS += --enable-libv4l2 -else -FFMPEG_CONF_OPTS += --disable-libv4l2 -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_AVRESAMPLE),y) -FFMPEG_CONF_OPTS += --enable-avresample -else -FFMPEG_CONF_OPTS += --disable-avresample -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_FFPROBE),y) -FFMPEG_CONF_OPTS += --enable-ffprobe -else -FFMPEG_CONF_OPTS += --disable-ffprobe -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_XCBGRAB),y) -FFMPEG_CONF_OPTS += \ - --enable-libxcb \ - --enable-libxcb-shape \ - --enable-libxcb-shm \ - --enable-libxcb-xfixes -FFMPEG_DEPENDENCIES += libxcb -else -FFMPEG_CONF_OPTS += --disable-libxcb -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_POSTPROC),y) -FFMPEG_CONF_OPTS += --enable-postproc -else -FFMPEG_CONF_OPTS += --disable-postproc -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_SWSCALE),y) -FFMPEG_CONF_OPTS += --enable-swscale -else -FFMPEG_CONF_OPTS += --disable-swscale -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),all) -FFMPEG_CONF_OPTS += --disable-encoders \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_ENCODERS)),--enable-encoder=$(x)) -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),all) -FFMPEG_CONF_OPTS += --disable-decoders \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DECODERS)),--enable-decoder=$(x)) -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),all) -FFMPEG_CONF_OPTS += --disable-muxers \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_MUXERS)),--enable-muxer=$(x)) -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),all) -FFMPEG_CONF_OPTS += --disable-demuxers \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_DEMUXERS)),--enable-demuxer=$(x)) -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),all) -FFMPEG_CONF_OPTS += --disable-parsers \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PARSERS)),--enable-parser=$(x)) -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),all) -FFMPEG_CONF_OPTS += --disable-bsfs \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_BSFS)),--enable-bsf=$(x)) -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),all) -FFMPEG_CONF_OPTS += --disable-protocols \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_PROTOCOLS)),--enable-protocol=$(x)) -endif - -ifneq ($(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),all) -FFMPEG_CONF_OPTS += --disable-filters \ - $(foreach x,$(call qstrip,$(BR2_PACKAGE_FFMPEG_FILTERS)),--enable-filter=$(x)) -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_INDEVS),y) -FFMPEG_CONF_OPTS += --enable-indevs -ifeq ($(BR2_PACKAGE_ALSA_LIB),y) -FFMPEG_CONF_OPTS += --enable-alsa -FFMPEG_DEPENDENCIES += alsa-lib -else -FFMPEG_CONF_OPTS += --disable-alsa -endif -else -FFMPEG_CONF_OPTS += --disable-indevs -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_OUTDEVS),y) -FFMPEG_CONF_OPTS += --enable-outdevs -ifeq ($(BR2_PACKAGE_ALSA_LIB),y) -FFMPEG_DEPENDENCIES += alsa-lib -endif -else -FFMPEG_CONF_OPTS += --disable-outdevs -endif - -ifeq ($(BR2_TOOLCHAIN_HAS_THREADS),y) -FFMPEG_CONF_OPTS += --enable-pthreads -else -FFMPEG_CONF_OPTS += --disable-pthreads -endif - -ifeq ($(BR2_PACKAGE_ZLIB),y) -FFMPEG_CONF_OPTS += --enable-zlib -FFMPEG_DEPENDENCIES += zlib -else -FFMPEG_CONF_OPTS += --disable-zlib -endif - -ifeq ($(BR2_PACKAGE_BZIP2),y) -FFMPEG_CONF_OPTS += --enable-bzlib -FFMPEG_DEPENDENCIES += bzip2 -else -FFMPEG_CONF_OPTS += --disable-bzlib -endif - -ifeq ($(BR2_PACKAGE_FDK_AAC)$(BR2_PACKAGE_FFMPEG_NONFREE),yy) -FFMPEG_CONF_OPTS += --enable-libfdk-aac -FFMPEG_DEPENDENCIES += fdk-aac -else -FFMPEG_CONF_OPTS += --disable-libfdk-aac -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_GPL)$(BR2_PACKAGE_LIBCDIO_PARANOIA),yy) -FFMPEG_CONF_OPTS += --enable-libcdio -FFMPEG_DEPENDENCIES += libcdio-paranoia -else -FFMPEG_CONF_OPTS += --disable-libcdio -endif - -ifeq ($(BR2_PACKAGE_GNUTLS),y) -FFMPEG_CONF_OPTS += --enable-gnutls --disable-openssl -FFMPEG_DEPENDENCIES += gnutls -else -FFMPEG_CONF_OPTS += --disable-gnutls -ifeq ($(BR2_PACKAGE_OPENSSL),y) -# openssl isn't license compatible with GPL -ifeq ($(BR2_PACKAGE_FFMPEG_GPL)x$(BR2_PACKAGE_FFMPEG_NONFREE),yx) -FFMPEG_CONF_OPTS += --disable-openssl -else -FFMPEG_CONF_OPTS += --enable-openssl -FFMPEG_DEPENDENCIES += openssl -endif -else -FFMPEG_CONF_OPTS += --disable-openssl -endif -endif - -ifeq ($(BR2_PACKAGE_FFMPEG_GPL)$(BR2_PACKAGE_LIBEBUR128),yy) -FFMPEG_DEPENDENCIES += libebur128 -endif - -ifeq ($(BR2_PACKAGE_LIBDRM),y) -FFMPEG_CONF_OPTS += --enable-libdrm -FFMPEG_DEPENDENCIES += libdrm -else -FFMPEG_CONF_OPTS += --disable-libdrm -endif - -ifeq ($(BR2_PACKAGE_LIBOPENH264),y) -FFMPEG_CONF_OPTS += --enable-libopenh264 -FFMPEG_DEPENDENCIES += libopenh264 -else -FFMPEG_CONF_OPTS += --disable-libopenh264 -endif - -ifeq ($(BR2_PACKAGE_LIBVORBIS),y) -FFMPEG_DEPENDENCIES += libvorbis -FFMPEG_CONF_OPTS += \ - --enable-libvorbis \ - --enable-muxer=ogg \ - --enable-encoder=libvorbis -endif - -ifeq ($(BR2_PACKAGE_LIBVA),y) -FFMPEG_CONF_OPTS += --enable-vaapi -FFMPEG_DEPENDENCIES += libva -else -FFMPEG_CONF_OPTS += --disable-vaapi -endif - -ifeq ($(BR2_PACKAGE_LIBVDPAU),y) -FFMPEG_CONF_OPTS += --enable-vdpau -FFMPEG_DEPENDENCIES += libvdpau -else -FFMPEG_CONF_OPTS += --disable-vdpau -endif - -ifeq ($(BR2_PACKAGE_RPI_USERLAND),y) -FFMPEG_CONF_OPTS += --enable-mmal --enable-omx --enable-omx-rpi \ - --extra-cflags=-I$(STAGING_DIR)/usr/include/IL -FFMPEG_DEPENDENCIES += rpi-userland -else -FFMPEG_CONF_OPTS += --disable-mmal --disable-omx --disable-omx-rpi -endif - -# To avoid a circular dependency only use opencv if opencv itself does -# not depend on ffmpeg. -ifeq ($(BR2_PACKAGE_OPENCV3_LIB_IMGPROC)x$(BR2_PACKAGE_OPENCV3_WITH_FFMPEG),yx) -FFMPEG_CONF_OPTS += --enable-libopencv -FFMPEG_DEPENDENCIES += opencv3 -else -FFMPEG_CONF_OPTS += --disable-libopencv -endif - -ifeq ($(BR2_PACKAGE_OPUS),y) -FFMPEG_CONF_OPTS += --enable-libopus -FFMPEG_DEPENDENCIES += opus -else -FFMPEG_CONF_OPTS += --disable-libopus -endif - -ifeq ($(BR2_PACKAGE_LIBVPX),y) -FFMPEG_CONF_OPTS += --enable-libvpx -FFMPEG_DEPENDENCIES += libvpx -else -FFMPEG_CONF_OPTS += --disable-libvpx -endif - -ifeq ($(BR2_PACKAGE_LIBASS),y) -FFMPEG_CONF_OPTS += --enable-libass -FFMPEG_DEPENDENCIES += libass -else -FFMPEG_CONF_OPTS += --disable-libass -endif - -ifeq ($(BR2_PACKAGE_LIBBLURAY),y) -FFMPEG_CONF_OPTS += --enable-libbluray -FFMPEG_DEPENDENCIES += libbluray -else -FFMPEG_CONF_OPTS += --disable-libbluray -endif - -ifeq ($(BR2_PACKAGE_INTEL_MEDIASDK),y) -FFMPEG_CONF_OPTS += --enable-libmfx -FFMPEG_DEPENDENCIES += intel-mediasdk -else -FFMPEG_CONF_OPTS += --disable-libmfx -endif - -ifeq ($(BR2_PACKAGE_RTMPDUMP),y) -FFMPEG_CONF_OPTS += --enable-librtmp -FFMPEG_DEPENDENCIES += rtmpdump -else -FFMPEG_CONF_OPTS += --disable-librtmp -endif - -ifeq ($(BR2_PACKAGE_LAME),y) -FFMPEG_CONF_OPTS += --enable-libmp3lame -FFMPEG_DEPENDENCIES += lame -else -FFMPEG_CONF_OPTS += --disable-libmp3lame -endif - -ifeq ($(BR2_PACKAGE_LIBMODPLUG),y) -FFMPEG_CONF_OPTS += --enable-libmodplug -FFMPEG_DEPENDENCIES += libmodplug -else -FFMPEG_CONF_OPTS += --disable-libmodplug -endif - -ifeq ($(BR2_PACKAGE_SPEEX),y) -FFMPEG_CONF_OPTS += --enable-libspeex -FFMPEG_DEPENDENCIES += speex -else -FFMPEG_CONF_OPTS += --disable-libspeex -endif - -ifeq ($(BR2_PACKAGE_LIBTHEORA),y) -FFMPEG_CONF_OPTS += --enable-libtheora -FFMPEG_DEPENDENCIES += libtheora -else -FFMPEG_CONF_OPTS += --disable-libtheora -endif - -ifeq ($(BR2_PACKAGE_LIBICONV),y) -FFMPEG_CONF_OPTS += --enable-iconv -FFMPEG_DEPENDENCIES += libiconv -else -FFMPEG_CONF_OPTS += --disable-iconv -endif - -# ffmpeg freetype support require fenv.h which is only -# available/working on glibc. -# The microblaze variant doesn't provide the needed exceptions -ifeq ($(BR2_PACKAGE_FREETYPE)$(BR2_TOOLCHAIN_USES_GLIBC)x$(BR2_microblaze),yyx) -FFMPEG_CONF_OPTS += --enable-libfreetype -FFMPEG_DEPENDENCIES += freetype -else -FFMPEG_CONF_OPTS += --disable-libfreetype -endif - -ifeq ($(BR2_PACKAGE_FONTCONFIG),y) -FFMPEG_CONF_OPTS += --enable-fontconfig -FFMPEG_DEPENDENCIES += fontconfig -else -FFMPEG_CONF_OPTS += --disable-fontconfig -endif - -ifeq ($(BR2_PACKAGE_OPENJPEG),y) -FFMPEG_CONF_OPTS += --enable-libopenjpeg -FFMPEG_DEPENDENCIES += openjpeg -else -FFMPEG_CONF_OPTS += --disable-libopenjpeg -endif - -ifeq ($(BR2_PACKAGE_X264)$(BR2_PACKAGE_FFMPEG_GPL),yy) -FFMPEG_CONF_OPTS += --enable-libx264 -FFMPEG_DEPENDENCIES += x264 -else -FFMPEG_CONF_OPTS += --disable-libx264 -endif - -ifeq ($(BR2_PACKAGE_X265)$(BR2_PACKAGE_FFMPEG_GPL),yy) -FFMPEG_CONF_OPTS += --enable-libx265 -FFMPEG_DEPENDENCIES += x265 -else -FFMPEG_CONF_OPTS += --disable-libx265 -endif - -ifeq ($(BR2_PACKAGE_DAV1D),y) -FFMPEG_CONF_OPTS += --enable-libdav1d -FFMPEG_DEPENDENCIES += dav1d -else -FFMPEG_CONF_OPTS += --disable-libdav1d -endif - -ifeq ($(BR2_X86_CPU_HAS_MMX),y) -FFMPEG_CONF_OPTS += --enable-x86asm -FFMPEG_DEPENDENCIES += host-nasm -else -FFMPEG_CONF_OPTS += --disable-x86asm -FFMPEG_CONF_OPTS += --disable-mmx -endif - -ifeq ($(BR2_X86_CPU_HAS_SSE),y) -FFMPEG_CONF_OPTS += --enable-sse -else -FFMPEG_CONF_OPTS += --disable-sse -endif - -ifeq ($(BR2_X86_CPU_HAS_SSE2),y) -FFMPEG_CONF_OPTS += --enable-sse2 -else -FFMPEG_CONF_OPTS += --disable-sse2 -endif - -ifeq ($(BR2_X86_CPU_HAS_SSE3),y) -FFMPEG_CONF_OPTS += --enable-sse3 -else -FFMPEG_CONF_OPTS += --disable-sse3 -endif - -ifeq ($(BR2_X86_CPU_HAS_SSSE3),y) -FFMPEG_CONF_OPTS += --enable-ssse3 -else -FFMPEG_CONF_OPTS += --disable-ssse3 -endif - -ifeq ($(BR2_X86_CPU_HAS_SSE4),y) -FFMPEG_CONF_OPTS += --enable-sse4 -else -FFMPEG_CONF_OPTS += --disable-sse4 -endif - -ifeq ($(BR2_X86_CPU_HAS_SSE42),y) -FFMPEG_CONF_OPTS += --enable-sse42 -else -FFMPEG_CONF_OPTS += --disable-sse42 -endif - -ifeq ($(BR2_X86_CPU_HAS_AVX),y) -FFMPEG_CONF_OPTS += --enable-avx -else -FFMPEG_CONF_OPTS += --disable-avx -endif - -ifeq ($(BR2_X86_CPU_HAS_AVX2),y) -FFMPEG_CONF_OPTS += --enable-avx2 -else -FFMPEG_CONF_OPTS += --disable-avx2 -endif - -# Explicitly disable everything that doesn't match for ARM -# FFMPEG "autodetects" by compiling an extended instruction via AS -# This works on compilers that aren't built for generic by default -ifeq ($(BR2_ARM_CPU_ARMV4),y) -FFMPEG_CONF_OPTS += --disable-armv5te -endif -ifeq ($(BR2_ARM_CPU_ARMV6)$(BR2_ARM_CPU_ARMV7A),y) -FFMPEG_CONF_OPTS += --enable-armv6 -else -FFMPEG_CONF_OPTS += --disable-armv6 --disable-armv6t2 -endif -ifeq ($(BR2_ARM_CPU_HAS_VFPV2),y) -FFMPEG_CONF_OPTS += --enable-vfp -else -FFMPEG_CONF_OPTS += --disable-vfp -endif -ifeq ($(BR2_ARM_CPU_HAS_NEON),y) -FFMPEG_CONF_OPTS += --enable-neon -else ifeq ($(BR2_aarch64),y) -FFMPEG_CONF_OPTS += --enable-neon -else -FFMPEG_CONF_OPTS += --disable-neon -endif - -ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) -ifeq ($(BR2_MIPS_SOFT_FLOAT),y) -FFMPEG_CONF_OPTS += --disable-mipsfpu -else -FFMPEG_CONF_OPTS += --enable-mipsfpu -endif - -# Fix build failure on "addi opcode not supported" -ifeq ($(BR2_mips_32r6)$(BR2_mips_64r6),y) -FFMPEG_CONF_OPTS += --disable-asm -endif -endif # MIPS - -ifeq ($(BR2_POWERPC_CPU_HAS_ALTIVEC),y) -FFMPEG_CONF_OPTS += --enable-altivec -else -FFMPEG_CONF_OPTS += --disable-altivec -endif - -# Uses __atomic_fetch_add_4 -ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y) -FFMPEG_CONF_OPTS += --extra-libs=-latomic -endif - -ifeq ($(BR2_STATIC_LIBS),) -FFMPEG_CONF_OPTS += --enable-pic -else -FFMPEG_CONF_OPTS += --disable-pic -endif - -# Default to --cpu=generic for MIPS architecture, in order to avoid a -# warning from ffmpeg's configure script. -ifeq ($(BR2_mips)$(BR2_mipsel)$(BR2_mips64)$(BR2_mips64el),y) -FFMPEG_CONF_OPTS += --cpu=generic -else ifneq ($(GCC_TARGET_CPU),) -FFMPEG_CONF_OPTS += --cpu="$(GCC_TARGET_CPU)" -else ifneq ($(GCC_TARGET_ARCH),) -FFMPEG_CONF_OPTS += --cpu="$(GCC_TARGET_ARCH)" -endif - -FFMPEG_CFLAGS = $(TARGET_CFLAGS) - -ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_85180),y) -FFMPEG_CONF_OPTS += --disable-optimizations -FFMPEG_CFLAGS += -O0 -endif - -FFMPEG_CONF_ENV += CFLAGS="$(FFMPEG_CFLAGS)" -FFMPEG_CONF_OPTS += $(call qstrip,$(BR2_PACKAGE_FFMPEG_EXTRACONF)) - -# Override FFMPEG_CONFIGURE_CMDS: FFmpeg does not support --target and others -define FFMPEG_CONFIGURE_CMDS - (cd $(FFMPEG_SRCDIR) && rm -rf config.cache && \ - $(TARGET_CONFIGURE_OPTS) \ - $(TARGET_CONFIGURE_ARGS) \ - $(FFMPEG_CONF_ENV) \ - ./configure \ - --enable-cross-compile \ - --cross-prefix=$(TARGET_CROSS) \ - --sysroot=$(STAGING_DIR) \ - --host-cc="$(HOSTCC)" \ - --arch=$(BR2_ARCH) \ - --target-os="linux" \ - --disable-stripping \ - --pkg-config="$(PKG_CONFIG_HOST_BINARY)" \ - $(SHARED_STATIC_LIBS_OPTS) \ - $(FFMPEG_CONF_OPTS) \ - ) -endef - -define FFMPEG_REMOVE_EXAMPLE_SRC_FILES - rm -rf $(TARGET_DIR)/usr/share/ffmpeg/examples -endef -FFMPEG_POST_INSTALL_TARGET_HOOKS += FFMPEG_REMOVE_EXAMPLE_SRC_FILES - -$(eval $(autotools-package)) From 0df83f723ff2434429cb1e9e5772df46361628b8 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 19 Sep 2024 08:10:31 +0200 Subject: [PATCH 039/247] replace legacy option BR2_PACKAGE_CAIRO_PDF with BR2_PACKAGE_CAIRO_ZLIB --- buildroot-external/package/remmina/Config.in | 2 +- buildroot-external/package/virt-viewer/Config.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/package/remmina/Config.in b/buildroot-external/package/remmina/Config.in index db7232e..b83a585 100644 --- a/buildroot-external/package/remmina/Config.in +++ b/buildroot-external/package/remmina/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_REMMINA bool "remmina" - select BR2_PACKAGE_CAIRO_PDF + select BR2_PACKAGE_CAIRO_ZLIB # select BR2_PACKAGE_AVAHI select BR2_PACKAGE_LIBGTK3 select BR2_PACKAGE_LIBVNCSERVER diff --git a/buildroot-external/package/virt-viewer/Config.in b/buildroot-external/package/virt-viewer/Config.in index df921ad..9a4e17f 100644 --- a/buildroot-external/package/virt-viewer/Config.in +++ b/buildroot-external/package/virt-viewer/Config.in @@ -1,6 +1,6 @@ config BR2_PACKAGE_VIRT_VIEWER bool "virt-viewer" - select BR2_PACKAGE_CAIRO_PDF + select BR2_PACKAGE_CAIRO_ZLIB select BR2_PACKAGE_LIBGTK3 select BR2_PACKAGE_SPICE_GTK help From 76e2478ebf4cc272dd9a9d77185ef20251f233e7 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 19 Sep 2024 10:07:09 +0200 Subject: [PATCH 040/247] add BR2_PACKAGE_XCB_UTIL_CURSOR to get qt6 compiled again with xcb support --- buildroot-external/package/qutselect/Config.in | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/package/qutselect/Config.in b/buildroot-external/package/qutselect/Config.in index 5b0942d..d504196 100644 --- a/buildroot-external/package/qutselect/Config.in +++ b/buildroot-external/package/qutselect/Config.in @@ -12,6 +12,7 @@ config BR2_PACKAGE_QUTSELECT select BR2_PACKAGE_JQ select BR2_PACKAGE_LIBCURL select BR2_PACKAGE_LIBCURL_CURL + select BR2_PACKAGE_XCB_UTIL_CURSOR help A Qt-based (unix) terminal server selection tool From aac5cb1d5bf08bae7fbca49d8186e349e6f296ae Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sun, 22 Sep 2024 00:30:50 +0200 Subject: [PATCH 041/247] add new buildroot patch adding the missing xcb-util-cursor dependency preventing qt6base from correctly compiling with enabled XCB support. --- .../package/qutselect/Config.in | 1 - .../0009-qt6base-xcb-cursor.patch | 20 + .../buildroot/package/qt6/qt6base/Config.in | 250 ++++++++++ .../package/qt6/qt6base/Config.in.orig | 249 ++++++++++ .../buildroot/package/qt6/qt6base/qt6base.mk | 435 ++++++++++++++++++ .../package/qt6/qt6base/qt6base.mk.orig | 434 +++++++++++++++++ 6 files changed, 1388 insertions(+), 1 deletion(-) create mode 100644 buildroot-patches/0009-qt6base-xcb-cursor.patch create mode 100644 buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/Config.in create mode 100644 buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/Config.in.orig create mode 100644 buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/qt6base.mk create mode 100644 buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/qt6base.mk.orig diff --git a/buildroot-external/package/qutselect/Config.in b/buildroot-external/package/qutselect/Config.in index d504196..5b0942d 100644 --- a/buildroot-external/package/qutselect/Config.in +++ b/buildroot-external/package/qutselect/Config.in @@ -12,7 +12,6 @@ config BR2_PACKAGE_QUTSELECT select BR2_PACKAGE_JQ select BR2_PACKAGE_LIBCURL select BR2_PACKAGE_LIBCURL_CURL - select BR2_PACKAGE_XCB_UTIL_CURSOR help A Qt-based (unix) terminal server selection tool diff --git a/buildroot-patches/0009-qt6base-xcb-cursor.patch b/buildroot-patches/0009-qt6base-xcb-cursor.patch new file mode 100644 index 0000000..8e12d42 --- /dev/null +++ b/buildroot-patches/0009-qt6base-xcb-cursor.patch @@ -0,0 +1,20 @@ +--- buildroot/package/qt6/qt6base/Config.in.orig ++++ buildroot/package/qt6/qt6base/Config.in +@@ -65,6 +65,7 @@ + select BR2_PACKAGE_XCB_UTIL_KEYSYMS + select BR2_PACKAGE_XCB_UTIL_RENDERUTIL + select BR2_PACKAGE_XCB_UTIL_WM ++ select BR2_PACKAGE_XCB_UTIL_CURSOR + select BR2_PACKAGE_LIBXKBCOMMON + + comment "X.org XCB backend available if X.org is enabled" +--- buildroot/package/qt6/qt6base/qt6base.mk.orig ++++ buildroot/package/qt6/qt6base/qt6base.mk +@@ -207,6 +207,7 @@ + xcb-util-image \ + xcb-util-keysyms \ + xcb-util-renderutil \ ++ xcb-util-cursor \ + xlib_libX11 + else + QT6BASE_CONF_OPTS += -DFEATURE_xcb=OFF diff --git a/buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/Config.in b/buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/Config.in new file mode 100644 index 0000000..a9c4c39 --- /dev/null +++ b/buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/Config.in @@ -0,0 +1,250 @@ +config BR2_PACKAGE_QT6BASE + bool "qt6base" + select BR2_PACKAGE_DOUBLE_CONVERSION + select BR2_PACKAGE_LIBB2 + select BR2_PACKAGE_PCRE2 + select BR2_PACKAGE_PCRE2_16 + select BR2_PACKAGE_ZLIB + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6base module, which + contains the base Qt libraries: QtCore, QtNetwork, QtGui, + QtWidgets, etc. + + http://qt.io + +if BR2_PACKAGE_QT6BASE + +config BR2_PACKAGE_QT6BASE_CONCURRENT + bool "concurrent module" + help + This options enables the Qt6Concurrent library. + +config BR2_PACKAGE_QT6BASE_DBUS + bool "DBus module" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + select BR2_PACKAGE_DBUS + help + This option enables the D-Bus module. + +config BR2_PACKAGE_QT6BASE_GUI + bool "gui module" + select BR2_PACKAGE_FREETYPE + # At least one graphic backend must be enabled, so enable + # linuxfb if nothing is enabled. + select BR2_PACKAGE_QT6BASE_LINUXFB if \ + !BR2_PACKAGE_QT6BASE_XCB && \ + !BR2_PACKAGE_QT6BASE_EGLFS + help + This option enables the Qt6Gui library. + +if BR2_PACKAGE_QT6BASE_GUI + +config BR2_PACKAGE_QT6BASE_VULKAN + bool "Vulkan support" + depends on BR2_INSTALL_LIBSTDCPP # vulkan-loader + depends on !BR2_STATIC_LIBS # vulkan-loader + depends on BR2_TOOLCHAIN_HAS_THREADS # vulkan-loader + select BR2_PACKAGE_VULKAN_HEADERS + select BR2_PACKAGE_VULKAN_LOADER + help + This option enables Vulkan support. + +config BR2_PACKAGE_QT6BASE_LINUXFB + bool "linuxfb support" + +config BR2_PACKAGE_QT6BASE_XCB + bool "X.org XCB support" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XCB_UTIL_IMAGE + select BR2_PACKAGE_XCB_UTIL_KEYSYMS + select BR2_PACKAGE_XCB_UTIL_RENDERUTIL + select BR2_PACKAGE_XCB_UTIL_WM + select BR2_PACKAGE_XCB_UTIL_CURSOR + select BR2_PACKAGE_LIBXKBCOMMON + +comment "X.org XCB backend available if X.org is enabled" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_QT6BASE_EGLFS + bool "eglfs support" + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGBM + depends on BR2_PACKAGE_QT6_GL_SUPPORTS + select BR2_PACKAGE_QT6BASE_OPENGL + +config BR2_PACKAGE_QT6BASE_DEFAULT_QPA + string "Default graphical platform" + help + Choose the default platform abstraction to use for graphical + applications (e.g xcb, linuxfb, eglfs, ...). If this is + empty, the default for your architecture will be used + (usually this is eglfs). + + You can get a list of supported platforms by running a Qt + application with the option "-platform help" on your + target. You can choose a different platform at runtime with + the -platform option. + +config BR2_PACKAGE_QT6BASE_OPENGL + bool "OpenGL support" + depends on BR2_PACKAGE_QT6_GL_SUPPORTS + help + This option enables OpenGL support. + +comment "OpenGL support needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT6_GL_SUPPORTS + +if BR2_PACKAGE_QT6BASE_OPENGL + +choice + prompt "OpenGL API" + help + Select OpenGL API. + +config BR2_PACKAGE_QT6BASE_OPENGL_DESKTOP + bool "Desktop OpenGL" + depends on BR2_PACKAGE_HAS_LIBGL + help + Use desktop OpenGL. + +config BR2_PACKAGE_QT6BASE_OPENGL_ES2 + bool "OpenGL ES 2.0+" + depends on BR2_PACKAGE_HAS_LIBGLES + help + Use OpenGL ES 2.0 and later versions. + +endchoice + +endif + +config BR2_PACKAGE_QT6BASE_FONTCONFIG + bool "fontconfig support" + select BR2_PACKAGE_FONTCONFIG + help + This option enables Fontconfig support using the system + fontconfig library. + +config BR2_PACKAGE_QT6BASE_HARFBUZZ + bool "harfbuzz support" + select BR2_PACKAGE_HARFBUZZ if \ + BR2_TOOLCHAIN_HAS_SYNC_4 && \ + BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + help + This option enables HarfBuzz support (either system harfbuzz + if the toolchain supports __sync for 4 bytes, or the qt + provided one which avoids this dependency by using QAtomic). + +config BR2_PACKAGE_QT6BASE_GIF + bool "GIF support" + help + This compiles and installs the plugin for GIF reading support. + +config BR2_PACKAGE_QT6BASE_JPEG + bool "JPEG support" + select BR2_PACKAGE_JPEG + help + This option enables JPEG support using the system libjpeg + library. + +config BR2_PACKAGE_QT6BASE_PNG + bool "PNG support" + select BR2_PACKAGE_LIBPNG + help + This option enables PNG support using the system libpng + library. + +config BR2_PACKAGE_QT6BASE_WIDGETS + bool "widgets module" + help + This option enables the Qt6Widgets library. + +config BR2_PACKAGE_QT6BASE_PRINTSUPPORT + bool "printing support" + # yes, print support needs widgets + depends on BR2_PACKAGE_QT6BASE_WIDGETS + help + This option enables printing support, optionally using CUPS + if available. + +endif + +config BR2_PACKAGE_QT6BASE_NETWORK + bool "network module" + select BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK if BR2_PACKAGE_LIBOPENSSL + help + This options enables the Qt6Network library. + +config BR2_PACKAGE_QT6BASE_SQL + bool "sql module" + help + This options enables the Qt6Sql library. + +if BR2_PACKAGE_QT6BASE_SQL +config BR2_PACKAGE_QT6BASE_MYSQL + bool "MySQL Plugin" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_MARIADB + help + Build MySQL plugin + +comment "MySQL plugin needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_QT6BASE_PSQL + bool "PostgreSQL Plugin" + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + depends on !BR2_OPTIMIZE_FAST + select BR2_PACKAGE_POSTGRESQL + help + Build PostgreSQL plugin + +comment "PostgreSQL plugin needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR + +comment "PostgreSQL plugin can't be built with optimize for fast" + depends on BR2_USE_MMU + depends on BR2_OPTIMIZE_FAST + +config BR2_PACKAGE_QT6BASE_SQLITE + bool "SQLite plugin" + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_SQLITE_ENABLE_COLUMN_METADATA + help + Build SQLite plugin + +endif + +config BR2_PACKAGE_QT6BASE_SYSLOG + bool "syslog support" + help + Logs to the standard UNIX logging mechanism. + +config BR2_PACKAGE_QT6BASE_TEST + bool "test module" + help + This options enables the Qt6Test library. + +config BR2_PACKAGE_QT6BASE_TSLIB + bool "Enable Tslib support" + select BR2_PACKAGE_TSLIB + help + This options enables the Tslib plugin + +config BR2_PACKAGE_QT6BASE_XML + bool "XML module" + help + This options enables the Qt6Xml library. + +endif diff --git a/buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/Config.in.orig b/buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/Config.in.orig new file mode 100644 index 0000000..3b15d40 --- /dev/null +++ b/buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/Config.in.orig @@ -0,0 +1,249 @@ +config BR2_PACKAGE_QT6BASE + bool "qt6base" + select BR2_PACKAGE_DOUBLE_CONVERSION + select BR2_PACKAGE_LIBB2 + select BR2_PACKAGE_PCRE2 + select BR2_PACKAGE_PCRE2_16 + select BR2_PACKAGE_ZLIB + help + Qt is a cross-platform application and UI framework for + developers using C++. + + This package corresponds to the qt6base module, which + contains the base Qt libraries: QtCore, QtNetwork, QtGui, + QtWidgets, etc. + + http://qt.io + +if BR2_PACKAGE_QT6BASE + +config BR2_PACKAGE_QT6BASE_CONCURRENT + bool "concurrent module" + help + This options enables the Qt6Concurrent library. + +config BR2_PACKAGE_QT6BASE_DBUS + bool "DBus module" + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU + select BR2_PACKAGE_DBUS + help + This option enables the D-Bus module. + +config BR2_PACKAGE_QT6BASE_GUI + bool "gui module" + select BR2_PACKAGE_FREETYPE + # At least one graphic backend must be enabled, so enable + # linuxfb if nothing is enabled. + select BR2_PACKAGE_QT6BASE_LINUXFB if \ + !BR2_PACKAGE_QT6BASE_XCB && \ + !BR2_PACKAGE_QT6BASE_EGLFS + help + This option enables the Qt6Gui library. + +if BR2_PACKAGE_QT6BASE_GUI + +config BR2_PACKAGE_QT6BASE_VULKAN + bool "Vulkan support" + depends on BR2_INSTALL_LIBSTDCPP # vulkan-loader + depends on !BR2_STATIC_LIBS # vulkan-loader + depends on BR2_TOOLCHAIN_HAS_THREADS # vulkan-loader + select BR2_PACKAGE_VULKAN_HEADERS + select BR2_PACKAGE_VULKAN_LOADER + help + This option enables Vulkan support. + +config BR2_PACKAGE_QT6BASE_LINUXFB + bool "linuxfb support" + +config BR2_PACKAGE_QT6BASE_XCB + bool "X.org XCB support" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_LIBXCB + select BR2_PACKAGE_XCB_UTIL_IMAGE + select BR2_PACKAGE_XCB_UTIL_KEYSYMS + select BR2_PACKAGE_XCB_UTIL_RENDERUTIL + select BR2_PACKAGE_XCB_UTIL_WM + select BR2_PACKAGE_LIBXKBCOMMON + +comment "X.org XCB backend available if X.org is enabled" + depends on !BR2_PACKAGE_XORG7 + +config BR2_PACKAGE_QT6BASE_EGLFS + bool "eglfs support" + depends on BR2_PACKAGE_HAS_LIBEGL + depends on BR2_PACKAGE_HAS_LIBGBM + depends on BR2_PACKAGE_QT6_GL_SUPPORTS + select BR2_PACKAGE_QT6BASE_OPENGL + +config BR2_PACKAGE_QT6BASE_DEFAULT_QPA + string "Default graphical platform" + help + Choose the default platform abstraction to use for graphical + applications (e.g xcb, linuxfb, eglfs, ...). If this is + empty, the default for your architecture will be used + (usually this is eglfs). + + You can get a list of supported platforms by running a Qt + application with the option "-platform help" on your + target. You can choose a different platform at runtime with + the -platform option. + +config BR2_PACKAGE_QT6BASE_OPENGL + bool "OpenGL support" + depends on BR2_PACKAGE_QT6_GL_SUPPORTS + help + This option enables OpenGL support. + +comment "OpenGL support needs an OpenGL-capable backend" + depends on !BR2_PACKAGE_QT6_GL_SUPPORTS + +if BR2_PACKAGE_QT6BASE_OPENGL + +choice + prompt "OpenGL API" + help + Select OpenGL API. + +config BR2_PACKAGE_QT6BASE_OPENGL_DESKTOP + bool "Desktop OpenGL" + depends on BR2_PACKAGE_HAS_LIBGL + help + Use desktop OpenGL. + +config BR2_PACKAGE_QT6BASE_OPENGL_ES2 + bool "OpenGL ES 2.0+" + depends on BR2_PACKAGE_HAS_LIBGLES + help + Use OpenGL ES 2.0 and later versions. + +endchoice + +endif + +config BR2_PACKAGE_QT6BASE_FONTCONFIG + bool "fontconfig support" + select BR2_PACKAGE_FONTCONFIG + help + This option enables Fontconfig support using the system + fontconfig library. + +config BR2_PACKAGE_QT6BASE_HARFBUZZ + bool "harfbuzz support" + select BR2_PACKAGE_HARFBUZZ if \ + BR2_TOOLCHAIN_HAS_SYNC_4 && \ + BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 + help + This option enables HarfBuzz support (either system harfbuzz + if the toolchain supports __sync for 4 bytes, or the qt + provided one which avoids this dependency by using QAtomic). + +config BR2_PACKAGE_QT6BASE_GIF + bool "GIF support" + help + This compiles and installs the plugin for GIF reading support. + +config BR2_PACKAGE_QT6BASE_JPEG + bool "JPEG support" + select BR2_PACKAGE_JPEG + help + This option enables JPEG support using the system libjpeg + library. + +config BR2_PACKAGE_QT6BASE_PNG + bool "PNG support" + select BR2_PACKAGE_LIBPNG + help + This option enables PNG support using the system libpng + library. + +config BR2_PACKAGE_QT6BASE_WIDGETS + bool "widgets module" + help + This option enables the Qt6Widgets library. + +config BR2_PACKAGE_QT6BASE_PRINTSUPPORT + bool "printing support" + # yes, print support needs widgets + depends on BR2_PACKAGE_QT6BASE_WIDGETS + help + This option enables printing support, optionally using CUPS + if available. + +endif + +config BR2_PACKAGE_QT6BASE_NETWORK + bool "network module" + select BR2_PACKAGE_LIBOPENSSL_ENABLE_PSK if BR2_PACKAGE_LIBOPENSSL + help + This options enables the Qt6Network library. + +config BR2_PACKAGE_QT6BASE_SQL + bool "sql module" + help + This options enables the Qt6Sql library. + +if BR2_PACKAGE_QT6BASE_SQL +config BR2_PACKAGE_QT6BASE_MYSQL + bool "MySQL Plugin" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_USE_MMU + depends on BR2_TOOLCHAIN_HAS_THREADS + select BR2_PACKAGE_MARIADB + help + Build MySQL plugin + +comment "MySQL plugin needs a toolchain w/ C++, threads" + depends on BR2_USE_MMU + depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS + +config BR2_PACKAGE_QT6BASE_PSQL + bool "PostgreSQL Plugin" + depends on BR2_USE_MMU + depends on !BR2_STATIC_LIBS + depends on BR2_USE_WCHAR + depends on !BR2_OPTIMIZE_FAST + select BR2_PACKAGE_POSTGRESQL + help + Build PostgreSQL plugin + +comment "PostgreSQL plugin needs a toolchain w/ wchar, dynamic library" + depends on BR2_USE_MMU + depends on BR2_STATIC_LIBS || !BR2_USE_WCHAR + +comment "PostgreSQL plugin can't be built with optimize for fast" + depends on BR2_USE_MMU + depends on BR2_OPTIMIZE_FAST + +config BR2_PACKAGE_QT6BASE_SQLITE + bool "SQLite plugin" + select BR2_PACKAGE_SQLITE + select BR2_PACKAGE_SQLITE_ENABLE_COLUMN_METADATA + help + Build SQLite plugin + +endif + +config BR2_PACKAGE_QT6BASE_SYSLOG + bool "syslog support" + help + Logs to the standard UNIX logging mechanism. + +config BR2_PACKAGE_QT6BASE_TEST + bool "test module" + help + This options enables the Qt6Test library. + +config BR2_PACKAGE_QT6BASE_TSLIB + bool "Enable Tslib support" + select BR2_PACKAGE_TSLIB + help + This options enables the Tslib plugin + +config BR2_PACKAGE_QT6BASE_XML + bool "XML module" + help + This options enables the Qt6Xml library. + +endif diff --git a/buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/qt6base.mk b/buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/qt6base.mk new file mode 100644 index 0000000..5210a31 --- /dev/null +++ b/buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/qt6base.mk @@ -0,0 +1,435 @@ +################################################################################ +# +# qt6base +# +################################################################################ + +QT6BASE_VERSION = $(QT6_VERSION) +QT6BASE_SITE = $(QT6_SITE) +QT6BASE_SOURCE = qtbase-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6BASE_VERSION).tar.xz +QT6BASE_CPE_ID_VENDOR = qt +QT6BASE_CPE_ID_PRODUCT = qt + +# 0001-fix-CVE-2024-39936.patch +QT6BASE_IGNORE_CVES += CVE-2024-39936 + +QT6BASE_CMAKE_BACKEND = ninja + +QT6BASE_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0 with exception (tools), \ + GFDL-1.3 (docs), \ + Apache-2.0, \ + BSD-3-Clause, \ + BSL-1.0, \ + MIT + +QT6BASE_LICENSE_FILES = \ + LICENSES/Apache-2.0.txt \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/BSL-1.0.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/MIT.txt \ + LICENSES/Qt-GPL-exception-1.0.txt + +QT6BASE_DEPENDENCIES = \ + host-qt6base \ + double-conversion \ + libb2 \ + pcre2 \ + zlib +QT6BASE_INSTALL_STAGING = YES + +QT6BASE_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DINSTALL_ARCHDATADIR=lib/qt6 \ + -DFEATURE_concurrent=OFF \ + -DFEATURE_xml=OFF \ + -DFEATURE_sql=OFF \ + -DFEATURE_testlib=OFF \ + -DFEATURE_network=OFF \ + -DFEATURE_dbus=OFF \ + -DFEATURE_icu=OFF \ + -DFEATURE_glib=OFF \ + -DFEATURE_system_doubleconversion=ON \ + -DFEATURE_system_pcre2=ON \ + -DFEATURE_system_zlib=ON \ + -DFEATURE_system_libb2=ON + +# x86 optimization options. While we have a BR2_X86_CPU_HAS_AVX512, it +# is not clear yet how it maps to all the avx512* options of Qt, so we +# for now keeps them disabled. +QT6BASE_CONF_OPTS += \ + -DFEATURE_sse2=$(if $(BR2_X86_CPU_HAS_SSE2),ON,OFF) \ + -DFEATURE_sse3=$(if $(BR2_X86_CPU_HAS_SSE3),ON,OFF) \ + -DFEATURE_sse4_1=$(if $(BR2_X86_CPU_HAS_SSE4),ON,OFF) \ + -DFEATURE_sse4_2=$(if $(BR2_X86_CPU_HAS_SSE42),ON,OFF) \ + -DFEATURE_ssse3=$(if $(BR2_X86_CPU_HAS_SSSE3),ON,OFF) \ + -DFEATURE_avx=$(if $(BR2_X86_CPU_HAS_AVX),ON,OFF) \ + -DFEATURE_avx2=$(if $(BR2_X86_CPU_HAS_AVX2),ON,OFF) \ + -DFEATURE_avx512bw=OFF \ + -DFEATURE_avx512cd=OFF \ + -DFEATURE_avx512dq=OFF \ + -DFEATURE_avx512er=OFF \ + -DFEATURE_avx512f=OFF \ + -DFEATURE_avx512ifma=OFF \ + -DFEATURE_avx512pf=OFF \ + -DFEATURE_avx512vbmi=OFF \ + -DFEATURE_avx512vbmi2=OFF \ + -DFEATURE_avx512vl=OFF \ + -DFEATURE_vaes=OFF + +HOST_QT6BASE_DEPENDENCIES = \ + host-double-conversion \ + host-libb2 \ + host-pcre2 \ + host-zlib +HOST_QT6BASE_CONF_OPTS = \ + -DFEATURE_concurrent=OFF \ + -DFEATURE_xml=ON \ + -DFEATURE_dbus=OFF \ + -DFEATURE_icu=OFF \ + -DFEATURE_glib=OFF \ + -DFEATURE_system_doubleconversion=ON \ + -DFEATURE_system_libb2=ON \ + -DFEATURE_system_pcre2=ON \ + -DFEATURE_system_zlib=ON + +# We need host-qt6base with Gui support when building host-qt6shadertools, +# otherwise the build is skipped and no qsb host tool is generated. +# qt6shadertools fail to build if qsb is not available. +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_GUI),y) +HOST_QT6BASE_CONF_OPTS += \ + -DFEATURE_gui=ON \ + -DFEATURE_freetype=OFF \ + -DFEATURE_vulkan=OFF \ + -DFEATURE_linuxfb=ON \ + -DFEATURE_xcb=OFF \ + -DFEATURE_opengl=OFF -DINPUT_opengl=no \ + -DFEATURE_harfbuzz=OFF \ + -DFEATURE_png=OFF \ + -DFEATURE_gif=OFF \ + -DFEATURE_jpeg=OFF \ + -DFEATURE_printsupport=OFF \ + -DFEATURE_kms=OFF \ + -DFEATURE_fontconfig=OFF \ + -DFEATURE_widgets=OFF \ + -DFEATURE_libinput=OFF \ + -DFEATURE_tslib=OFF \ + -DFEATURE_eglfs=OFF +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_gui=OFF +endif + +# The Network module is explicitly required by qt6tools. +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_NETWORK),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_network=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_network=OFF +endif + +# We need host qt6base with Sql support for host-qt6tools to generate the +# qhelpgenerator host tool. qt6tools will fail to build if qhelpgenerator is not +# available. +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_SQL),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_sql=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_sql=OFF +endif + +# We need host-qt6base with Testlib support when building host-qt6declarative +# with QuickTest support. QuickTest support is further required for building the +# qmltestrunner host tool. qt6declarative will fail to build if qmltestrunner is +# not available. +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_TEST),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_testlib=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_testlib=OFF +endif + +# Conditional blocks below are ordered by alphabetic ordering of the +# BR2_PACKAGE_* option. + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +QT6BASE_CONF_OPTS += -DFEATURE_libudev=ON +QT6BASE_DEPENDENCIES += udev +else +QT6BASE_CONF_OPTS += -DFEATURE_libudev=OFF +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +QT6BASE_CONF_OPTS += -DFEATURE_icu=ON +QT6BASE_DEPENDENCIES += icu +else +QT6BASE_CONF_OPTS += -DFEATURE_icu=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +QT6BASE_CONF_OPTS += -DFEATURE_glib=ON +QT6BASE_DEPENDENCIES += libglib2 +else +QT6BASE_CONF_OPTS += -DFEATURE_glib=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_GUI),y) +QT6BASE_CONF_OPTS += \ + -DFEATURE_gui=ON \ + -DFEATURE_freetype=ON \ + -DFEATURE_vulkan=OFF +QT6BASE_DEPENDENCIES += freetype + +ifeq ($(BR2_PACKAGE_QT6BASE_VULKAN),y) +QT6BASE_DEPENDENCIES += vulkan-headers vulkan-loader +QT6BASE_CONFIGURE_OPTS += -DFEATURE_vulkan=ON +else +QT6BASE_CONFIGURE_OPTS += -DFEATURE_vulkan=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_LINUXFB),y) +QT6BASE_CONF_OPTS += -DFEATURE_linuxfb=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_linuxfb=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_XCB),y) +QT6BASE_CONF_OPTS += \ + -DFEATURE_xcb=ON \ + -DFEATURE_xcb_xlib=ON \ + -DFEATURE_xkbcommon=ON \ + -DFEATURE_xkbcommon_x11=ON +QT6BASE_DEPENDENCIES += \ + libxcb \ + libxkbcommon \ + xcb-util-wm \ + xcb-util-image \ + xcb-util-keysyms \ + xcb-util-renderutil \ + xcb-util-cursor \ + xlib_libX11 +else +QT6BASE_CONF_OPTS += -DFEATURE_xcb=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_HARFBUZZ),y) +QT6BASE_CONF_OPTS += -DFEATURE_harfbuzz=ON +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),y) +# system harfbuzz in case __sync for 4 bytes is supported +QT6BASE_CONF_OPTS += -DQT_USE_BUNDLED_BundledHarfbuzz=OFF +QT6BASE_DEPENDENCIES += harfbuzz +else #BR2_TOOLCHAIN_HAS_SYNC_4 +# qt harfbuzz otherwise (using QAtomic instead) +QT6BASE_CONF_OPTS += -DQT_USE_BUNDLED_BundledHarfbuzz=ON +QT6BASE_LICENSE += , MIT (harfbuzz) +QT6BASE_LICENSE_FILES += src/3rdparty/harfbuzz-ng/COPYING +endif +else +QT6BASE_CONF_OPTS += -DFEATURE_harfbuzz=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_PNG),y) +QT6BASE_CONF_OPTS += -DFEATURE_png=ON -DFEATURE_system_png=ON +QT6BASE_DEPENDENCIES += libpng +else +QT6BASE_CONF_OPTS += -DFEATURE_png=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_GIF),y) +QT6BASE_CONF_OPTS += -DFEATURE_gif=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_gif=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_JPEG),y) +QT6BASE_CONF_OPTS += -DFEATURE_jpeg=ON +QT6BASE_DEPENDENCIES += jpeg +else +QT6BASE_CONF_OPTS += -DFEATURE_jpeg=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_PRINTSUPPORT),y) +QT6BASE_CONF_OPTS += -DFEATURE_printsupport=ON +ifeq ($(BR2_PACKAGE_CUPS),y) +QT6BASE_CONF_OPTS += -DFEATURE_cups=ON +QT6BASE_DEPENDENCIES += cups +else +QT6BASE_CONF_OPTS += -DFEATURE_cups=OFF +endif +else +QT6BASE_CONF_OPTS += -DFEATURE_printsupport=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBDRM),y) +QT6BASE_CONF_OPTS += -DFEATURE_kms=ON +QT6BASE_DEPENDENCIES += libdrm +else +QT6BASE_CONF_OPTS += -DFEATURE_kms=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_FONTCONFIG),y) +QT6BASE_CONF_OPTS += -DFEATURE_fontconfig=ON +QT6BASE_DEPENDENCIES += fontconfig +else +QT6BASE_CONF_OPTS += -DFEATURE_fontconfig=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_WIDGETS),y) +QT6BASE_CONF_OPTS += -DFEATURE_widgets=ON + +# only enable gtk support if libgtk3 X11 backend is enabled +ifeq ($(BR2_PACKAGE_LIBGTK3)$(BR2_PACKAGE_LIBGTK3_X11),yy) +QT6BASE_CONF_OPTS += -DFEATURE_gtk3=ON +QT6BASE_DEPENDENCIES += libgtk3 +else +QT6BASE_CONF_OPTS += -DFEATURE_gtk3=OFF +endif + +else +QT6BASE_CONF_OPTS += -DFEATURE_widgets=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBINPUT),y) +QT6BASE_CONF_OPTS += -DFEATURE_libinput=ON +QT6BASE_DEPENDENCIES += libinput +else +QT6BASE_CONF_OPTS += -DFEATURE_libinput=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_TSLIB),y) +QT6BASE_CONF_OPTS += -DFEATURE_tslib=ON +QT6BASE_DEPENDENCIES += tslib +else +QT6BASE_CONF_OPTS += -DFEATURE_tslib=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_EGLFS),y) +QT6BASE_CONF_OPTS += -DFEATURE_egl=ON -DFEATURE_eglfs=ON +QT6BASE_DEPENDENCIES += libegl libgbm +else +QT6BASE_CONF_OPTS += -DFEATURE_eglfs=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_OPENGL_DESKTOP),y) +QT6BASE_CONF_OPTS += \ + -DFEATURE_opengl=ON \ + -DFEATURE_opengl_desktop=ON +QT6BASE_DEPENDENCIES += libgl +else ifeq ($(BR2_PACKAGE_QT6BASE_OPENGL_ES2),y) +QT6BASE_CONF_OPTS += \ + -DFEATURE_opengl=ON \ + -DFEATURE_opengles2=ON \ + -DFEATURE_opengl_desktop=OFF +QT6BASE_DEPENDENCIES += libgles +else +QT6BASE_CONF_OPTS += -DFEATURE_opengl=OFF -DINPUT_opengl=no +endif + +else +QT6BASE_CONF_OPTS += -DFEATURE_gui=OFF +endif + +QT6BASE_DEFAULT_QPA = $(call qstrip,$(BR2_PACKAGE_QT6BASE_DEFAULT_QPA)) +QT6BASE_CONF_OPTS += $(if $(QT6BASE_DEFAULT_QPA),-DQT_QPA_DEFAULT_PLATFORM=$(QT6BASE_DEFAULT_QPA)) + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +QT6BASE_CONF_OPTS += -DINPUT_openssl=yes +QT6BASE_DEPENDENCIES += openssl +else +QT6BASE_CONF_OPTS += -DINPUT_openssl=no +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_CONCURRENT),y) +QT6BASE_CONF_OPTS += -DFEATURE_concurrent=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_concurrent=OFF +endif + +# We need host-qt6base with D-Bus support, otherwise: "the tool +# "Qt6::qdbuscpp2xml" was not found in the Qt6DBusTools package." +ifeq ($(BR2_PACKAGE_QT6BASE_DBUS),y) +QT6BASE_CONF_OPTS += -DFEATURE_dbus=ON -DINPUT_dbus=linked +QT6BASE_DEPENDENCIES += dbus +HOST_QT6BASE_CONF_OPTS += -DFEATURE_dbus=ON +HOST_QT6BASE_DEPENDENCIES += host-dbus +else +QT6BASE_CONF_OPTS += -DFEATURE_dbus=OFF +HOST_QT6BASE_CONF_OPTS += -DFEATURE_dbus=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_NETWORK),y) +QT6BASE_CONF_OPTS += -DFEATURE_network=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_network=OFF +endif + +# Qt6 SQL Plugins +ifeq ($(BR2_PACKAGE_QT6BASE_SQL),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql=ON +QT6BASE_CONF_OPTS += -DFEATURE_sql_db2=OFF -DFEATURE_sql_ibase=OFF -DFEATURE_sql_oci=OFF -DFEATURE_sql_odbc=OFF + +ifeq ($(BR2_PACKAGE_QT6BASE_MYSQL),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql_mysql=ON +QT6BASE_DEPENDENCIES += mariadb +else +QT6BASE_CONF_OPTS += -DFEATURE_sql_mysql=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_PSQL),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql_psql=ON +QT6BASE_DEPENDENCIES += postgresql +else +QT6BASE_CONF_OPTS += -DFEATURE_sql_psql=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_SQLITE),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql_sqlite=ON -DFEATURE_system_sqlite=ON +QT6BASE_DEPENDENCIES += sqlite +else +QT6BASE_CONF_OPTS += -DFEATURE_sql_sqlite=OFF +endif + +else +QT6BASE_CONF_OPTS += -DFEATURE_sql=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_SYSLOG),y) +QT6BASE_CONF_OPTS += -DFEATURE_syslog=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_syslog=OFF +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +QT6BASE_CONF_OPTS += -DFEATURE_journald=ON +QT6BASE_DEPENDENCIES += systemd +else +QT6BASE_CONF_OPTS += -DFEATURE_journald=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_TEST),y) +QT6BASE_CONF_OPTS += -DFEATURE_testlib=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_testlib=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_XML),y) +QT6BASE_CONF_OPTS += -DFEATURE_xml=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_xml=OFF +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +QT6BASE_CONF_OPTS += -DFEATURE_zstd=ON +QT6BASE_DEPENDENCIES += zstd +else +QT6BASE_CONF_OPTS += -DFEATURE_zstd=OFF +endif + +define QT6BASE_RM_USR_MKSPECS + $(Q)rm -rf $(TARGET_DIR)/usr/mkspecs +endef +QT6BASE_TARGET_FINALIZE_HOOKS += QT6BASE_RM_USR_MKSPECS + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) diff --git a/buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/qt6base.mk.orig b/buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/qt6base.mk.orig new file mode 100644 index 0000000..4c0392f --- /dev/null +++ b/buildroot-patches/0009-qt6base-xcb-cursor/buildroot/package/qt6/qt6base/qt6base.mk.orig @@ -0,0 +1,434 @@ +################################################################################ +# +# qt6base +# +################################################################################ + +QT6BASE_VERSION = $(QT6_VERSION) +QT6BASE_SITE = $(QT6_SITE) +QT6BASE_SOURCE = qtbase-$(QT6_SOURCE_TARBALL_PREFIX)-$(QT6BASE_VERSION).tar.xz +QT6BASE_CPE_ID_VENDOR = qt +QT6BASE_CPE_ID_PRODUCT = qt + +# 0001-fix-CVE-2024-39936.patch +QT6BASE_IGNORE_CVES += CVE-2024-39936 + +QT6BASE_CMAKE_BACKEND = ninja + +QT6BASE_LICENSE = \ + GPL-2.0+ or LGPL-3.0, \ + GPL-3.0 with exception (tools), \ + GFDL-1.3 (docs), \ + Apache-2.0, \ + BSD-3-Clause, \ + BSL-1.0, \ + MIT + +QT6BASE_LICENSE_FILES = \ + LICENSES/Apache-2.0.txt \ + LICENSES/BSD-3-Clause.txt \ + LICENSES/BSL-1.0.txt \ + LICENSES/GFDL-1.3-no-invariants-only.txt \ + LICENSES/GPL-2.0-only.txt \ + LICENSES/GPL-3.0-only.txt \ + LICENSES/LGPL-3.0-only.txt \ + LICENSES/MIT.txt \ + LICENSES/Qt-GPL-exception-1.0.txt + +QT6BASE_DEPENDENCIES = \ + host-qt6base \ + double-conversion \ + libb2 \ + pcre2 \ + zlib +QT6BASE_INSTALL_STAGING = YES + +QT6BASE_CONF_OPTS = \ + -DQT_HOST_PATH=$(HOST_DIR) \ + -DINSTALL_ARCHDATADIR=lib/qt6 \ + -DFEATURE_concurrent=OFF \ + -DFEATURE_xml=OFF \ + -DFEATURE_sql=OFF \ + -DFEATURE_testlib=OFF \ + -DFEATURE_network=OFF \ + -DFEATURE_dbus=OFF \ + -DFEATURE_icu=OFF \ + -DFEATURE_glib=OFF \ + -DFEATURE_system_doubleconversion=ON \ + -DFEATURE_system_pcre2=ON \ + -DFEATURE_system_zlib=ON \ + -DFEATURE_system_libb2=ON + +# x86 optimization options. While we have a BR2_X86_CPU_HAS_AVX512, it +# is not clear yet how it maps to all the avx512* options of Qt, so we +# for now keeps them disabled. +QT6BASE_CONF_OPTS += \ + -DFEATURE_sse2=$(if $(BR2_X86_CPU_HAS_SSE2),ON,OFF) \ + -DFEATURE_sse3=$(if $(BR2_X86_CPU_HAS_SSE3),ON,OFF) \ + -DFEATURE_sse4_1=$(if $(BR2_X86_CPU_HAS_SSE4),ON,OFF) \ + -DFEATURE_sse4_2=$(if $(BR2_X86_CPU_HAS_SSE42),ON,OFF) \ + -DFEATURE_ssse3=$(if $(BR2_X86_CPU_HAS_SSSE3),ON,OFF) \ + -DFEATURE_avx=$(if $(BR2_X86_CPU_HAS_AVX),ON,OFF) \ + -DFEATURE_avx2=$(if $(BR2_X86_CPU_HAS_AVX2),ON,OFF) \ + -DFEATURE_avx512bw=OFF \ + -DFEATURE_avx512cd=OFF \ + -DFEATURE_avx512dq=OFF \ + -DFEATURE_avx512er=OFF \ + -DFEATURE_avx512f=OFF \ + -DFEATURE_avx512ifma=OFF \ + -DFEATURE_avx512pf=OFF \ + -DFEATURE_avx512vbmi=OFF \ + -DFEATURE_avx512vbmi2=OFF \ + -DFEATURE_avx512vl=OFF \ + -DFEATURE_vaes=OFF + +HOST_QT6BASE_DEPENDENCIES = \ + host-double-conversion \ + host-libb2 \ + host-pcre2 \ + host-zlib +HOST_QT6BASE_CONF_OPTS = \ + -DFEATURE_concurrent=OFF \ + -DFEATURE_xml=ON \ + -DFEATURE_dbus=OFF \ + -DFEATURE_icu=OFF \ + -DFEATURE_glib=OFF \ + -DFEATURE_system_doubleconversion=ON \ + -DFEATURE_system_libb2=ON \ + -DFEATURE_system_pcre2=ON \ + -DFEATURE_system_zlib=ON + +# We need host-qt6base with Gui support when building host-qt6shadertools, +# otherwise the build is skipped and no qsb host tool is generated. +# qt6shadertools fail to build if qsb is not available. +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_GUI),y) +HOST_QT6BASE_CONF_OPTS += \ + -DFEATURE_gui=ON \ + -DFEATURE_freetype=OFF \ + -DFEATURE_vulkan=OFF \ + -DFEATURE_linuxfb=ON \ + -DFEATURE_xcb=OFF \ + -DFEATURE_opengl=OFF -DINPUT_opengl=no \ + -DFEATURE_harfbuzz=OFF \ + -DFEATURE_png=OFF \ + -DFEATURE_gif=OFF \ + -DFEATURE_jpeg=OFF \ + -DFEATURE_printsupport=OFF \ + -DFEATURE_kms=OFF \ + -DFEATURE_fontconfig=OFF \ + -DFEATURE_widgets=OFF \ + -DFEATURE_libinput=OFF \ + -DFEATURE_tslib=OFF \ + -DFEATURE_eglfs=OFF +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_gui=OFF +endif + +# The Network module is explicitly required by qt6tools. +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_NETWORK),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_network=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_network=OFF +endif + +# We need host qt6base with Sql support for host-qt6tools to generate the +# qhelpgenerator host tool. qt6tools will fail to build if qhelpgenerator is not +# available. +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_SQL),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_sql=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_sql=OFF +endif + +# We need host-qt6base with Testlib support when building host-qt6declarative +# with QuickTest support. QuickTest support is further required for building the +# qmltestrunner host tool. qt6declarative will fail to build if qmltestrunner is +# not available. +ifeq ($(BR2_PACKAGE_HOST_QT6BASE_TEST),y) +HOST_QT6BASE_CONF_OPTS += -DFEATURE_testlib=ON +else +HOST_QT6BASE_CONF_OPTS += -DFEATURE_testlib=OFF +endif + +# Conditional blocks below are ordered by alphabetic ordering of the +# BR2_PACKAGE_* option. + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +QT6BASE_CONF_OPTS += -DFEATURE_libudev=ON +QT6BASE_DEPENDENCIES += udev +else +QT6BASE_CONF_OPTS += -DFEATURE_libudev=OFF +endif + +ifeq ($(BR2_PACKAGE_ICU),y) +QT6BASE_CONF_OPTS += -DFEATURE_icu=ON +QT6BASE_DEPENDENCIES += icu +else +QT6BASE_CONF_OPTS += -DFEATURE_icu=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBGLIB2),y) +QT6BASE_CONF_OPTS += -DFEATURE_glib=ON +QT6BASE_DEPENDENCIES += libglib2 +else +QT6BASE_CONF_OPTS += -DFEATURE_glib=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_GUI),y) +QT6BASE_CONF_OPTS += \ + -DFEATURE_gui=ON \ + -DFEATURE_freetype=ON \ + -DFEATURE_vulkan=OFF +QT6BASE_DEPENDENCIES += freetype + +ifeq ($(BR2_PACKAGE_QT6BASE_VULKAN),y) +QT6BASE_DEPENDENCIES += vulkan-headers vulkan-loader +QT6BASE_CONFIGURE_OPTS += -DFEATURE_vulkan=ON +else +QT6BASE_CONFIGURE_OPTS += -DFEATURE_vulkan=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_LINUXFB),y) +QT6BASE_CONF_OPTS += -DFEATURE_linuxfb=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_linuxfb=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_XCB),y) +QT6BASE_CONF_OPTS += \ + -DFEATURE_xcb=ON \ + -DFEATURE_xcb_xlib=ON \ + -DFEATURE_xkbcommon=ON \ + -DFEATURE_xkbcommon_x11=ON +QT6BASE_DEPENDENCIES += \ + libxcb \ + libxkbcommon \ + xcb-util-wm \ + xcb-util-image \ + xcb-util-keysyms \ + xcb-util-renderutil \ + xlib_libX11 +else +QT6BASE_CONF_OPTS += -DFEATURE_xcb=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_HARFBUZZ),y) +QT6BASE_CONF_OPTS += -DFEATURE_harfbuzz=ON +ifeq ($(BR2_TOOLCHAIN_HAS_SYNC_4),y) +# system harfbuzz in case __sync for 4 bytes is supported +QT6BASE_CONF_OPTS += -DQT_USE_BUNDLED_BundledHarfbuzz=OFF +QT6BASE_DEPENDENCIES += harfbuzz +else #BR2_TOOLCHAIN_HAS_SYNC_4 +# qt harfbuzz otherwise (using QAtomic instead) +QT6BASE_CONF_OPTS += -DQT_USE_BUNDLED_BundledHarfbuzz=ON +QT6BASE_LICENSE += , MIT (harfbuzz) +QT6BASE_LICENSE_FILES += src/3rdparty/harfbuzz-ng/COPYING +endif +else +QT6BASE_CONF_OPTS += -DFEATURE_harfbuzz=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_PNG),y) +QT6BASE_CONF_OPTS += -DFEATURE_png=ON -DFEATURE_system_png=ON +QT6BASE_DEPENDENCIES += libpng +else +QT6BASE_CONF_OPTS += -DFEATURE_png=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_GIF),y) +QT6BASE_CONF_OPTS += -DFEATURE_gif=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_gif=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_JPEG),y) +QT6BASE_CONF_OPTS += -DFEATURE_jpeg=ON +QT6BASE_DEPENDENCIES += jpeg +else +QT6BASE_CONF_OPTS += -DFEATURE_jpeg=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_PRINTSUPPORT),y) +QT6BASE_CONF_OPTS += -DFEATURE_printsupport=ON +ifeq ($(BR2_PACKAGE_CUPS),y) +QT6BASE_CONF_OPTS += -DFEATURE_cups=ON +QT6BASE_DEPENDENCIES += cups +else +QT6BASE_CONF_OPTS += -DFEATURE_cups=OFF +endif +else +QT6BASE_CONF_OPTS += -DFEATURE_printsupport=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBDRM),y) +QT6BASE_CONF_OPTS += -DFEATURE_kms=ON +QT6BASE_DEPENDENCIES += libdrm +else +QT6BASE_CONF_OPTS += -DFEATURE_kms=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_FONTCONFIG),y) +QT6BASE_CONF_OPTS += -DFEATURE_fontconfig=ON +QT6BASE_DEPENDENCIES += fontconfig +else +QT6BASE_CONF_OPTS += -DFEATURE_fontconfig=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_WIDGETS),y) +QT6BASE_CONF_OPTS += -DFEATURE_widgets=ON + +# only enable gtk support if libgtk3 X11 backend is enabled +ifeq ($(BR2_PACKAGE_LIBGTK3)$(BR2_PACKAGE_LIBGTK3_X11),yy) +QT6BASE_CONF_OPTS += -DFEATURE_gtk3=ON +QT6BASE_DEPENDENCIES += libgtk3 +else +QT6BASE_CONF_OPTS += -DFEATURE_gtk3=OFF +endif + +else +QT6BASE_CONF_OPTS += -DFEATURE_widgets=OFF +endif + +ifeq ($(BR2_PACKAGE_LIBINPUT),y) +QT6BASE_CONF_OPTS += -DFEATURE_libinput=ON +QT6BASE_DEPENDENCIES += libinput +else +QT6BASE_CONF_OPTS += -DFEATURE_libinput=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_TSLIB),y) +QT6BASE_CONF_OPTS += -DFEATURE_tslib=ON +QT6BASE_DEPENDENCIES += tslib +else +QT6BASE_CONF_OPTS += -DFEATURE_tslib=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_EGLFS),y) +QT6BASE_CONF_OPTS += -DFEATURE_egl=ON -DFEATURE_eglfs=ON +QT6BASE_DEPENDENCIES += libegl libgbm +else +QT6BASE_CONF_OPTS += -DFEATURE_eglfs=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_OPENGL_DESKTOP),y) +QT6BASE_CONF_OPTS += \ + -DFEATURE_opengl=ON \ + -DFEATURE_opengl_desktop=ON +QT6BASE_DEPENDENCIES += libgl +else ifeq ($(BR2_PACKAGE_QT6BASE_OPENGL_ES2),y) +QT6BASE_CONF_OPTS += \ + -DFEATURE_opengl=ON \ + -DFEATURE_opengles2=ON \ + -DFEATURE_opengl_desktop=OFF +QT6BASE_DEPENDENCIES += libgles +else +QT6BASE_CONF_OPTS += -DFEATURE_opengl=OFF -DINPUT_opengl=no +endif + +else +QT6BASE_CONF_OPTS += -DFEATURE_gui=OFF +endif + +QT6BASE_DEFAULT_QPA = $(call qstrip,$(BR2_PACKAGE_QT6BASE_DEFAULT_QPA)) +QT6BASE_CONF_OPTS += $(if $(QT6BASE_DEFAULT_QPA),-DQT_QPA_DEFAULT_PLATFORM=$(QT6BASE_DEFAULT_QPA)) + +ifeq ($(BR2_PACKAGE_OPENSSL),y) +QT6BASE_CONF_OPTS += -DINPUT_openssl=yes +QT6BASE_DEPENDENCIES += openssl +else +QT6BASE_CONF_OPTS += -DINPUT_openssl=no +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_CONCURRENT),y) +QT6BASE_CONF_OPTS += -DFEATURE_concurrent=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_concurrent=OFF +endif + +# We need host-qt6base with D-Bus support, otherwise: "the tool +# "Qt6::qdbuscpp2xml" was not found in the Qt6DBusTools package." +ifeq ($(BR2_PACKAGE_QT6BASE_DBUS),y) +QT6BASE_CONF_OPTS += -DFEATURE_dbus=ON -DINPUT_dbus=linked +QT6BASE_DEPENDENCIES += dbus +HOST_QT6BASE_CONF_OPTS += -DFEATURE_dbus=ON +HOST_QT6BASE_DEPENDENCIES += host-dbus +else +QT6BASE_CONF_OPTS += -DFEATURE_dbus=OFF +HOST_QT6BASE_CONF_OPTS += -DFEATURE_dbus=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_NETWORK),y) +QT6BASE_CONF_OPTS += -DFEATURE_network=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_network=OFF +endif + +# Qt6 SQL Plugins +ifeq ($(BR2_PACKAGE_QT6BASE_SQL),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql=ON +QT6BASE_CONF_OPTS += -DFEATURE_sql_db2=OFF -DFEATURE_sql_ibase=OFF -DFEATURE_sql_oci=OFF -DFEATURE_sql_odbc=OFF + +ifeq ($(BR2_PACKAGE_QT6BASE_MYSQL),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql_mysql=ON +QT6BASE_DEPENDENCIES += mariadb +else +QT6BASE_CONF_OPTS += -DFEATURE_sql_mysql=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_PSQL),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql_psql=ON +QT6BASE_DEPENDENCIES += postgresql +else +QT6BASE_CONF_OPTS += -DFEATURE_sql_psql=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_SQLITE),y) +QT6BASE_CONF_OPTS += -DFEATURE_sql_sqlite=ON -DFEATURE_system_sqlite=ON +QT6BASE_DEPENDENCIES += sqlite +else +QT6BASE_CONF_OPTS += -DFEATURE_sql_sqlite=OFF +endif + +else +QT6BASE_CONF_OPTS += -DFEATURE_sql=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_SYSLOG),y) +QT6BASE_CONF_OPTS += -DFEATURE_syslog=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_syslog=OFF +endif + +ifeq ($(BR2_PACKAGE_SYSTEMD),y) +QT6BASE_CONF_OPTS += -DFEATURE_journald=ON +QT6BASE_DEPENDENCIES += systemd +else +QT6BASE_CONF_OPTS += -DFEATURE_journald=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_TEST),y) +QT6BASE_CONF_OPTS += -DFEATURE_testlib=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_testlib=OFF +endif + +ifeq ($(BR2_PACKAGE_QT6BASE_XML),y) +QT6BASE_CONF_OPTS += -DFEATURE_xml=ON +else +QT6BASE_CONF_OPTS += -DFEATURE_xml=OFF +endif + +ifeq ($(BR2_PACKAGE_ZSTD),y) +QT6BASE_CONF_OPTS += -DFEATURE_zstd=ON +QT6BASE_DEPENDENCIES += zstd +else +QT6BASE_CONF_OPTS += -DFEATURE_zstd=OFF +endif + +define QT6BASE_RM_USR_MKSPECS + $(Q)rm -rf $(TARGET_DIR)/usr/mkspecs +endef +QT6BASE_TARGET_FINALIZE_HOOKS += QT6BASE_RM_USR_MKSPECS + +$(eval $(cmake-package)) +$(eval $(host-cmake-package)) From a5e70c8631f2f571a9a66d3e2794fb15b00c7ef2 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Mon, 23 Sep 2024 12:00:20 +0200 Subject: [PATCH 042/247] update upstream kernel to 6.6.52 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 76f35de..604a955 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.51" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.52" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.6/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 9630908..8d2fe16 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -28,7 +28,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.51" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.6.52" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index b7f23d4..2cee4f4 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,2 +1,2 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 1c0c9a14650879c4913efdbac428ba31a540c3d987155ddf34d33e11eca008b3 linux-6.6.51.tar.xz +sha256 1591ab348399d4aa53121158525056a69c8cf0fe0e90935b0095e9a58e37b4b8 linux-6.6.52.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index b7f23d4..2cee4f4 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,2 +1,2 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 1c0c9a14650879c4913efdbac428ba31a540c3d987155ddf34d33e11eca008b3 linux-6.6.51.tar.xz +sha256 1591ab348399d4aa53121158525056a69c8cf0fe0e90935b0095e9a58e37b4b8 linux-6.6.52.tar.xz From 65a9984ff2db5d7307d3be4e8007aa4e742fc684 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 24 Sep 2024 10:29:18 +0200 Subject: [PATCH 043/247] add CONFIG_MEDIA_SUPPORT and other video kernel options to allow future video device (webcam) use for certain applications. --- buildroot-external/board/generic-x86_64/kernel.config | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/buildroot-external/board/generic-x86_64/kernel.config b/buildroot-external/board/generic-x86_64/kernel.config index 1197d14..a6a767e 100644 --- a/buildroot-external/board/generic-x86_64/kernel.config +++ b/buildroot-external/board/generic-x86_64/kernel.config @@ -186,3 +186,10 @@ CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" CONFIG_RTC_SYSTOHC=y CONFIG_RTC_SYSTOHC_DEVICE="rtc0" + +CONFIG_MEDIA_SUPPORT=m +CONFIG_VIDEO_DEV=m +CONFIG_DVB_CORE=m +# CONFIG_DVB_NET is not set +CONFIG_MEDIA_USB_SUPPORT=y +CONFIG_USB_VIDEO_CLASS=m From 1125fd5f072818e1552e1e1282d480aa3356f484 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 24 Sep 2024 11:25:21 +0200 Subject: [PATCH 044/247] add missing BR2_PACKAGE_LIBKRB5 --- buildroot-external/configs/generic-x86_64.config | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 604a955..603d970 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -31,4 +31,5 @@ BR2_PACKAGE_BLUEZ5_UTILS=y BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED=y +BR2_PACKAGE_LIBKRB5=y BR2_TARGET_ROOTFS_INITRAMFS=y From 665e6e9122678a83d3206250b530a8f1878ae045 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 24 Sep 2024 11:57:06 +0200 Subject: [PATCH 045/247] add BR2_PACKAGE_YAD to allow cmd-line driven graphical elements to popup in certain situations (progress bars, etc.) --- buildroot-external/configs/generic-x86_64.config | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 603d970..696fa3c 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -32,4 +32,5 @@ BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED=y BR2_PACKAGE_LIBKRB5=y +BR2_PACKAGE_YAD=y BR2_TARGET_ROOTFS_INITRAMFS=y From 5ef7da082c28205b593ae06de560ba54cb0cfe51 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 24 Sep 2024 15:06:07 +0200 Subject: [PATCH 046/247] re-add close button to openbox window config so that we can close app windows. --- .../rootfs-overlay/etc/xdg/openbox/rc.xml | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/buildroot-external/rootfs-overlay/etc/xdg/openbox/rc.xml b/buildroot-external/rootfs-overlay/etc/xdg/openbox/rc.xml index beef1fb..a7a5668 100644 --- a/buildroot-external/rootfs-overlay/etc/xdg/openbox/rc.xml +++ b/buildroot-external/rootfs-overlay/etc/xdg/openbox/rc.xml @@ -47,7 +47,7 @@ Clearlooks - LM + CLM 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≪+h4&pt(v>q0HOuA-&d~7P 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 z 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 d;_<%L!24RqrvHfH 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 Ip<6G~AM*=gH~;_u literal 0 HcmV?d00001 diff --git a/tftpboot/libcom32.c32 b/tftpboot/libcom32.c32 new file mode 100755 index 0000000000000000000000000000000000000000..aedab3330c2ac7a23f421ee48017be9c663be1e5 GIT binary patch literal 186500 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 literal 0 HcmV?d00001 diff --git a/tftpboot/libutil.c32 b/tftpboot/libutil.c32 new file mode 100755 index 0000000000000000000000000000000000000000..496fc303e52d1129f1d7a451d49354ea9d633851 GIT binary patch literal 24148 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 literal 0 HcmV?d00001 diff --git a/tftpboot/lpxelinux.0 b/tftpboot/lpxelinux.0 new file mode 100644 index 0000000000000000000000000000000000000000..b9fa7c1bbe63e2c0e455f21f921a7e3e979a0c5d GIT binary patch literal 91550 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 z zZ0kaNuu@r?UtR*!itmvs3o9y=vK9Ht;ym%?PzB#O6-0pe9;B43i5Ipdp?w5AYe?7_)y@F9uJ5A6QTH{aQJHrCU=W>PiLHg z`SKg7FbBSr$xo~brxx*Q(L;x&j?Rk=(^2;hnm<{QY05Ml7yiNuk@)SvBk{+&z z65(EiG?XLY0@fUlFhwUM;d zzymTZ97+2X@Fx)P*Q)r$Tak(Ze4|Lq=t}zo@Sf#T@2#Z6+Kd9I%b$V2hJfa%kEHDb zZq=hJtqEx@f-dYs{hZ|e0C+2c&v!BH%YQ=mEz)}0Wj<{C6Vf58tBl)`*0bDrq(v`4 z8yz`q;S53yjBq8wjR<2A zvJmDVEJj#{uomG7gg+s?hR}rY0m7FEXAojwP;}!=gC|ixHL~tVMVN;ZF#! zAv7U;fbb>48H5;Y1Fl545n(Js7Q!5a#R$s~)*=k_;{W8h=bk&9$&;qdPH~PIId0@= z=crWInA9|v%b7eQKhHTi*CW$!xjhAgwxWQadd^*_j9gOU9f_4xfig00Wl6=#VhKIv z%EHw*#Gd_l+Yz`*f9KK_w~;{xw6bkTAAFmPOvj$<%FHwtmeW||Xyl7Z*akw5B2 z6rX|ZqT~M~!?0{(gi6v7yVIg$IdS+lF2fWt=$U(w&W$+BWu0d&kb(L|{vs;OKmyrG z$MMF%dp6?yBOU7t7vCjs@FIN67GVm~B7dY~Sbz{Im;Q!Kzs!pS%8LB$1zlwX0gR~nzX55$ B_EP`= literal 0 HcmV?d00001 diff --git a/tftpboot/pxeboot.0 b/tftpboot/pxeboot.0 new file mode 120000 index 0000000..60de13b --- /dev/null +++ b/tftpboot/pxeboot.0 @@ -0,0 +1 @@ +pxelinux.0 \ No newline at end of file diff --git a/tftpboot/pxechn.c32 b/tftpboot/pxechn.c32 new file mode 100755 index 0000000000000000000000000000000000000000..fdbda488c14a2b71cb74476f790d3f53a5a85d97 GIT binary patch literal 12644 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 bC{ec;j+&gfC!>xerMN+ygq-^ZIl})BcMmx} literal 0 HcmV?d00001 diff --git a/tftpboot/pxelinux.0 b/tftpboot/pxelinux.0 new file mode 120000 index 0000000..811cef7 --- /dev/null +++ b/tftpboot/pxelinux.0 @@ -0,0 +1 @@ +lpxelinux.0 \ No newline at end of file diff --git a/tftpboot/pxelinux.cfg/01-94-c6-91-10-97-81 b/tftpboot/pxelinux.cfg/01-94-c6-91-10-97-81 new file mode 120000 index 0000000..1795af6 --- /dev/null +++ b/tftpboot/pxelinux.cfg/01-94-c6-91-10-97-81 @@ -0,0 +1 @@ +thinroot \ No newline at end of file diff --git a/tftpboot/pxelinux.cfg/01-d4-5d-df-04-d9-c8 b/tftpboot/pxelinux.cfg/01-d4-5d-df-04-d9-c8 new file mode 120000 index 0000000..5bf52fe --- /dev/null +++ b/tftpboot/pxelinux.cfg/01-d4-5d-df-04-d9-c8 @@ -0,0 +1 @@ +localboot \ No newline at end of file diff --git a/tftpboot/pxelinux.cfg/default b/tftpboot/pxelinux.cfg/default new file mode 120000 index 0000000..1795af6 --- /dev/null +++ b/tftpboot/pxelinux.cfg/default @@ -0,0 +1 @@ +thinroot \ No newline at end of file diff --git a/tftpboot/pxelinux.cfg/localboot b/tftpboot/pxelinux.cfg/localboot new file mode 100644 index 0000000..f21c183 --- /dev/null +++ b/tftpboot/pxelinux.cfg/localboot @@ -0,0 +1,8 @@ +INCLUDE pxelinux.cfg/menu/main.cfg +INCLUDE pxelinux.cfg/menu/localboot.cfg +MENU DEFAULT +INCLUDE pxelinux.cfg/menu/thinroot.cfg +INCLUDE pxelinux.cfg/menu/thinroot-beta.cfg +MENU SEPARATOR +INCLUDE pxelinux.cfg/menu/global-pxe.cfg +INCLUDE pxelinux.cfg/menu/admin.cfg diff --git a/tftpboot/pxelinux.cfg/menu/admin.cfg b/tftpboot/pxelinux.cfg/menu/admin.cfg new file mode 100644 index 0000000..ab5f871 --- /dev/null +++ b/tftpboot/pxelinux.cfg/menu/admin.cfg @@ -0,0 +1,40 @@ +MENU BEGIN + +MENU TITLE Administration +TEXT HELP +Allows to perform Admin tasks (BIOS update, Memory tests, etc.) +ENDTEXT +MENU PASSWD ADMIN + +LABEL memtest +MENU LABEL ^Memtest86+ +KERNEL memtest/mt86plus +TEXT HELP +Allows to perform memory tests +ENDTEXT + +LABEL clonezilla +MENU LABEL ^Clonezilla +KERNEL clonezilla/live/vmlinuz +APPEND initrd=clonezilla/live/initrd.img boot=live config noswap nolocales edd=on nomodeset vga=788 nosplash noprompt fetch=http://192.168.74.30/clonezilla/live/filesystem.squashfs locales=en_US.UTF-8 keyboard-layouts=de +TEXT HELP +Allows to clone/backup an operating system +ENDTEXT + +LABEL sysrescue +MENU LABEL ^SystemRescueCD +KERNEL sysrescue/sysresccd/boot/x86_64/vmlinuz +;INITRD sysrescue/sysresccd/boot/intel_ucode.img,sysrescue/sysresccd/boot/amd_ucode.img,sysrescue/sysresccd/boot/x86_64/sysresccd.img +APPEND initrd=sysrescue/sysresccd/boot/x86_64/sysresccd.img ip=dhcp dodhcp setkmap=de dostartx archisobasedir=sysresccd ip=dhcp archiso_http_srv=http://192.168.74.30/sysrescue/ checksum +TEXT HELP +SystemRescueCD +ENDTEXT + +INCLUDE pxelinux.cfg/menu/ipxe.cfg + +MENU SEPARATOR +LABEL - +MENU LABEL ^Back +MENU EXIT + +MENU END diff --git a/tftpboot/pxelinux.cfg/menu/global-pxe.cfg b/tftpboot/pxelinux.cfg/menu/global-pxe.cfg new file mode 100644 index 0000000..4f00d36 --- /dev/null +++ b/tftpboot/pxelinux.cfg/menu/global-pxe.cfg @@ -0,0 +1,7 @@ +LABEL global-pxe +MENU LABEL ^Switch to global PXE +KERNEL pxechn.c32 +APPEND 192.168.4.59::pxelinux.0 +TEXT HELP +Switch to global PXE environment +ENDTEXT diff --git a/tftpboot/pxelinux.cfg/menu/ipxe.cfg b/tftpboot/pxelinux.cfg/menu/ipxe.cfg new file mode 100644 index 0000000..06913c7 --- /dev/null +++ b/tftpboot/pxelinux.cfg/menu/ipxe.cfg @@ -0,0 +1,9 @@ +LABEL iPXE +MENU LABEL ^Switch to iPXE +KERNEL pxechn.c32 +APPEND /ipxe.pxe +#KERNEL ipxe.lkrn +#APPEND dhcp && chain http://192.168.74.30/ipxe.pxe +TEXT HELP +Switch to iPXE environment +ENDTEXT diff --git a/tftpboot/pxelinux.cfg/menu/localboot.cfg b/tftpboot/pxelinux.cfg/menu/localboot.cfg new file mode 100644 index 0000000..68e91c9 --- /dev/null +++ b/tftpboot/pxelinux.cfg/menu/localboot.cfg @@ -0,0 +1,6 @@ +LABEL localboot +MENU LABEL ^Boot from Local System +LOCALBOOT 0 +TEXT HELP +Boots the local operating system (if any installed) +ENDTEXT diff --git a/tftpboot/pxelinux.cfg/menu/main.cfg b/tftpboot/pxelinux.cfg/menu/main.cfg new file mode 100644 index 0000000..6e2c096 --- /dev/null +++ b/tftpboot/pxelinux.cfg/menu/main.cfg @@ -0,0 +1,9 @@ +DEFAULT menu.c32 +ALLOWOPTIONS 0 +PROMPT 0 +TIMEOUT 20 +TOTALTIMEOUT 1000 + +MENU TITLE Please select your operating system +MENU HIDDEN +MENU AUTOBOOT # diff --git a/tftpboot/pxelinux.cfg/menu/thinroot-beta.cfg b/tftpboot/pxelinux.cfg/menu/thinroot-beta.cfg new file mode 100644 index 0000000..594e7a7 --- /dev/null +++ b/tftpboot/pxelinux.cfg/menu/thinroot-beta.cfg @@ -0,0 +1,23 @@ +LABEL thinroot-debug +MENU LABEL ^thinRoot (stable+debug) +KERNEL http://192.168.74.30/thinroot/thinroot.img +APPEND console=tty1 noswap noinitrd init_on_alloc=1 init_on_free=0 slab_nomerge net.ifnames=0 intel_iommu=igfx_off loglevel=8 debug +TEXT HELP +Our thinRoot Environment (DEBUG) +ENDTEXT + +LABEL thinroot-beta +MENU LABEL ^thinRoot (beta) +KERNEL http://192.168.74.30/thinroot/thinroot-beta.img +APPEND console=tty2 noswap noinitrd consoleblank=120 init_on_alloc=1 init_on_free=0 slab_nomerge net.ifnames=0 intel_iommu=igfx_off quiet loglevel=0 +TEXT HELP +Our thinRoot Environment (BETA) +ENDTEXT + +LABEL thinroot-betadbg +MENU LABEL ^thinRoot (beta+debug) +KERNEL http://192.168.74.30/thinroot/thinroot-beta.img +APPEND console=tty1 noswap noinitrd init_on_alloc=1 init_on_free=0 slab_nomerge net.ifnames=0 intel_iommu=igfx_off loglevel=8 debug +TEXT HELP +Our thinRoot Environment (BETA+DEBUG) +ENDTEXT diff --git a/tftpboot/pxelinux.cfg/menu/thinroot.cfg b/tftpboot/pxelinux.cfg/menu/thinroot.cfg new file mode 100644 index 0000000..b838fe0 --- /dev/null +++ b/tftpboot/pxelinux.cfg/menu/thinroot.cfg @@ -0,0 +1,7 @@ +LABEL thinroot +MENU LABEL ^thinRoot (stable) +KERNEL http://192.168.74.30/thinroot/thinroot.img +APPEND console=tty2 noswap noinitrd consoleblank=120 init_on_alloc=1 init_on_free=0 slab_nomerge net.ifnames=0 intel_iommu=igfx_off quiet loglevel=0 +TEXT HELP +Our thinRoot Environment +ENDTEXT diff --git a/tftpboot/pxelinux.cfg/thinroot b/tftpboot/pxelinux.cfg/thinroot new file mode 100644 index 0000000..1a4b561 --- /dev/null +++ b/tftpboot/pxelinux.cfg/thinroot @@ -0,0 +1,8 @@ +INCLUDE pxelinux.cfg/menu/main.cfg +INCLUDE pxelinux.cfg/menu/thinroot.cfg +MENU DEFAULT +INCLUDE pxelinux.cfg/menu/thinroot-beta.cfg +MENU SEPARATOR +INCLUDE pxelinux.cfg/menu/localboot.cfg +INCLUDE pxelinux.cfg/menu/global-pxe.cfg +INCLUDE pxelinux.cfg/menu/admin.cfg diff --git a/tftpboot/sysrescue/README.md b/tftpboot/sysrescue/README.md new file mode 100644 index 0000000..43ed6fa --- /dev/null +++ b/tftpboot/sysrescue/README.md @@ -0,0 +1,2 @@ +put PXE bootable sysrescuecd environment here. +See https://www.system-rescue.org/manual/PXE_network_booting/ diff --git a/tftpboot/thinroot/README.md b/tftpboot/thinroot/README.md new file mode 100644 index 0000000..811c928 --- /dev/null +++ b/tftpboot/thinroot/README.md @@ -0,0 +1 @@ +This directory contains basic config/env files for a PXE-based thinRoot installation environment. diff --git a/tftpboot/thinroot/conf/qutselect.default.slist b/tftpboot/thinroot/conf/qutselect.default.slist new file mode 100644 index 0000000..21e12a1 --- /dev/null +++ b/tftpboot/thinroot/conf/qutselect.default.slist @@ -0,0 +1,10 @@ +# Serverlist for qutselect +# +# DISPLAYNAME HOSTNAME DOMAIN TYPE OS DESCRIPTION PWPRMPT SCRIPT +# --------------------------------------------------------------------------------------------------------------------------- +Linux ; ubuntu ; ; TLINC ; Linux ; Linux-Terminalserver ; TRUE ; scripts/qutselect_connect_tlinc.sh +Windows ; kronos ; DOMAIN ; RDP ; Windows 2019 ; Public Terminal Server Farm ; TRUE ; scripts/qutselect_connect_rdp.sh +=== +BigBlueButton ; bbb ; ; APP ; bbb.domain.de ; Local Video Conferencing ; FALSE; scripts/qutselect_connect_app.sh +Zoom ; zoom ; ; APP ; Zoom Workplace ; Local Zoom Video Conferencing ; FALSE; scripts/qutselect_connect_app.sh +Google Chrome ; chrome ; ; APP ; Google Chrome ; Local Webbrowser ; FALSE; scripts/qutselect_connect_app.sh diff --git a/tftpboot/thinroot/conf/qutselect.groupA.slist b/tftpboot/thinroot/conf/qutselect.groupA.slist new file mode 100644 index 0000000..5f3d443 --- /dev/null +++ b/tftpboot/thinroot/conf/qutselect.groupA.slist @@ -0,0 +1,8 @@ +# Serverlist for qutselect +# +# DISPLAYNAME HOSTNAME DOMAIN TYPE OS DESCRIPTION PWPRMPT SCRIPT +# --------------------------------------------------------------------------------------------------------------------------- +Linux ; ubuntu ; ; TLINC ; Linux ; Linux-Terminalserver ; TRUE ; scripts/qutselect_connect_tlinc.sh +Windows ; kronos ; DOMAIN ; RDP ; Windows 2019 ; Public Terminal Server Farm ; TRUE ; scripts/qutselect_connect_rdp.sh +=== +System1 ; vncsys ; ; VNC ; VNC-Server ; Server with VNC running ; TRUE ; scripts/qutselect_connect_vnc.sh diff --git a/tftpboot/thinroot/conf/qutselect.motd b/tftpboot/thinroot/conf/qutselect.motd new file mode 100644 index 0000000..fdaf25b --- /dev/null +++ b/tftpboot/thinroot/conf/qutselect.motd @@ -0,0 +1,11 @@ + + + + + + + + + + +
Global Keyboard Shortcuts:thinRoot 20250207
PAUSELock Screen© 2019-2025 Jens Maus, hzdr.de
SHIFT+PAUSE/STOPDisconnect Session
CTRL+PAUSEReboot System
ALT+F10Eject/Umount all USB drives
ALT+KEYPAD-PLUSVolume Up
ALT+KEYPAD-MINUSVolume Down
ALT+KEYPAD-XMute/Unmute
SCROLL-LOCKSwitch Keyboard Layout (de/en)
diff --git a/tftpboot/thinroot/conf/qutselect.slist b/tftpboot/thinroot/conf/qutselect.slist new file mode 120000 index 0000000..444cc0d92 --- /dev/null +++ b/tftpboot/thinroot/conf/qutselect.slist @@ -0,0 +1 @@ +qutselect.default.slist \ No newline at end of file diff --git a/tftpboot/thinroot/conf/thinroot.conf-HOSTNAME b/tftpboot/thinroot/conf/thinroot.conf-HOSTNAME new file mode 100644 index 0000000..9a82952 --- /dev/null +++ b/tftpboot/thinroot/conf/thinroot.conf-HOSTNAME @@ -0,0 +1 @@ +SESSION_0_XSTARTUP="eval VNC_PASSWORD='mypassword' /lib/tlclient/vncviewer -shared -menukey= -fullscreen -fullscreensystemkeys 192.168.4.4" diff --git a/tftpboot/thinroot/conf/thinroot.conf-c03fd56a426c b/tftpboot/thinroot/conf/thinroot.conf-c03fd56a426c new file mode 100644 index 0000000..00175f4 --- /dev/null +++ b/tftpboot/thinroot/conf/thinroot.conf-c03fd56a426c @@ -0,0 +1 @@ +XKBLAYOUT="us,de,cz,fr" diff --git a/tftpboot/thinroot/conf/thinroot.conf.group-A b/tftpboot/thinroot/conf/thinroot.conf.group-A new file mode 100644 index 0000000..dc3b363 --- /dev/null +++ b/tftpboot/thinroot/conf/thinroot.conf.group-A @@ -0,0 +1,2 @@ +SESSION_0_QUTSELECT_SLIST=qutselect.groupA.slist +NET_TIME_SERVER=ntp.example.com diff --git a/tftpboot/thinroot/conf/thinroot.conf.group-B b/tftpboot/thinroot/conf/thinroot.conf.group-B new file mode 100644 index 0000000..bba9238 --- /dev/null +++ b/tftpboot/thinroot/conf/thinroot.conf.group-B @@ -0,0 +1,3 @@ +SESSION_0_QUTSELECT_SLIST=qutselect.groupB.slist +XKBLAYOUT="us,de" +SESSION_0_XSTARTUP="eval echo mypassword\! | /bin/scripts/qutselect_connect_pve.sh 0 PVE true 0 0 0 0 pve.example.com:443 user@pve vm13 && while pgrep remote-viewer >/dev/null; do sleep 1; done" diff --git a/tftpboot/thinroot/conf/thinroot.conf.group-noblank b/tftpboot/thinroot/conf/thinroot.conf.group-noblank new file mode 100644 index 0000000..2d56649 --- /dev/null +++ b/tftpboot/thinroot/conf/thinroot.conf.group-noblank @@ -0,0 +1 @@ +SCREEN_BLANK_TIME=0 diff --git a/tftpboot/thinroot/conf/thinroot.conf.group-noidle b/tftpboot/thinroot/conf/thinroot.conf.group-noidle new file mode 100644 index 0000000..697929e --- /dev/null +++ b/tftpboot/thinroot/conf/thinroot.conf.group-noidle @@ -0,0 +1,2 @@ +SHUTDOWN_IDLE_TIME=0 +SHUTDOWN_IDLE_MAX_UPTIME=0 diff --git a/tftpboot/thinroot/conf/thinroot.conf.network b/tftpboot/thinroot/conf/thinroot.conf.network new file mode 100644 index 0000000..f61ccdc --- /dev/null +++ b/tftpboot/thinroot/conf/thinroot.conf.network @@ -0,0 +1,36 @@ +AUDIO_LEVEL=50 +MIC_LEVEL=100 +XRANDR_OPTIONS="dualscreen" +XKBLAYOUT="de,us" +XKBOPTIONS="grp:sclk_toggle,grp_led:scroll" +SESSION_0_THINLINC_CONFIG_SOUND_ENABLED=1 +SESSION_0_THINLINC_CONFIG_REMOVE_CONFIGURATION=0 +SESSION_0_THINLINC_CONFIG_SOUND_SYSTEM=AUTO +SESSION_0_THINLINC_CONFIG_NFS_SERVER_ENABLED=1 +SESSION_0_THINLINC_CONFIG_NFS_EXPORTS=/run/usbmount,rw +SESSION_0_THINLINC_CONFIG_LOWERCASE_LOGIN_NAME=1 +SESSION_0_THINLINC_CONFIG_JPEG_COMPRESSION=0 +SESSION_0_THINLINC_CONFIG_HOST_ALIASES= +SESSION_0_THINLINC_CONFIG_OPTIONS_POPUP_KEY= +SESSION_0_THINLINC_CONFIG_ALLOW_HOSTKEY_UPDATE=0 +SESSION_0_THINLINC_CONFIG_UPDATE_ENABLED=0 +SESSION_0_THINLINC_CONFIG_FULL_SCREEN_MODE=1 +SESSION_0_THINLINC_CONFIG_FULL_SCREEN_MONITOR_MODE=all +SESSION_0_QUTSELECT_CMD="qutselect -dtlogin -nouser -keep" +SESSION_0_QUTSELECT_SLIST=qutselect.slist +SESSION_0_QUTSELECT_MOTD=qutselect.motd +SESSION_0_FIREFOX_HOMEPAGE=http://www.google.de/ +DONT_VT_SWITCH_STATE=TRUE +DONT_ZAP_STATE=TRUE +MOUSE_RESOLUTION=800 +SCREEN_BLANK_TIME=15 +SCREEN_STANDBY_TIME=30 +SCREEN_SUSPEND_TIME=60 +SCREEN_OFF_TIME=120 +SHUTDOWN_IDLE_INTERVAL=5 +SHUTDOWN_IDLE_TIME=86400 +SHUTDOWN_IDLE_HOUR=3 +SHUTDOWN_IDLE_MAX_UPTIME=432000 +SHUTDOWN_IDLE_MAX_UPTIME_WDAY="Sat|Sun|Mon" +X_NUMLOCK=on +PKG_PREFIX=pkg diff --git a/tftpboot/thinroot/conf/thinroot.hosts b/tftpboot/thinroot/conf/thinroot.hosts new file mode 100644 index 0000000..359fe6d --- /dev/null +++ b/tftpboot/thinroot/conf/thinroot.hosts @@ -0,0 +1,10 @@ +# You can have any amount of spaces/tabs between names +# HOST MAC GROUPS COMMENTS +# +# Group A +pc1 - groupA noblank # PC1 groupA and no screen blanking +pc2 - groupA noidle # PC2 groupA and no idle shutdown +pc3 ec:a8:6b:ff:6d:e3 groupA # PC3 with dedicated MAC +# Group B +pc4 - groupB noblank noidle # PC4 groupB, no blank and no idle +pc5 - groupB # PC5 groupB diff --git a/tftpboot/thinroot/overlay.pkg b/tftpboot/thinroot/overlay.pkg new file mode 100644 index 0000000000000000000000000000000000000000..bd89a863ee99b2cc4557e2eeb44119b9a7e64ec4 GIT binary patch literal 576 zcmV-G0>AzJH+ooF000E$*0e?f03iVu0001VFXf})C;tKeT>uvgyc~T2mB2AREo-V< zd#B54-2(7L++t*<& z6&~&-p6-zkB1lt{VTo@FVPX54_UZ_*WaEN1-6B5K&m!BJ$2Q&E=DrWk%d?HTUbTyA z*pOTVY9!^l6Uh;Iwe5x+>ShLycfgp2FVHXf5;Vea;1UQFgg+P9ts+)AkT|Y}Vx8pM z;#Q+BZP!Jndm2@j;QCMWwiM^!Iwc1i5#N7Kr>)%lBR!%rj^(M>;GXk7q*d zh%(zQgli1svwZ+(bS46Roi_f65-S+c!y_w7vX>qp-w?MTm+#B0x!~6|V4oYq=yO)? zzU1+p^e%!wu>ID9?aJ<;(Q761SI5uAb6tz+;05! zP-5m1UT}x|co>45uybT=A4CzpGyp>#LUsjL1m)9Y^48Z?mh~SeE_3=wX96jo<)dE^ z$rmR~!nT<3kTN2p>NhaH-V)RnMzupwsCWc)GJKq*(%M*Ecyti~&lPuN^G&P!)@GvW z8`>DWjp9(ZiX`hb@(5Oa`wy^cwcm1gING^vXUMp$N#MYZa9#P3KwN}z)5S-5#W$!k z@1chv(S9isqKK&9yqfS;8>ds2WQ1V-<4_#h0001TG~=vm>~Sst0h Date: Fri, 7 Mar 2025 09:24:57 +0100 Subject: [PATCH 155/247] Bump ncipollo/release-action from 1.15.0 to 1.16.0 (#29) Bumps [ncipollo/release-action](https://github.com/ncipollo/release-action) from 1.15.0 to 1.16.0. - [Release notes](https://github.com/ncipollo/release-action/releases) - [Commits](https://github.com/ncipollo/release-action/compare/v1.15.0...v1.16.0) --- updated-dependencies: - dependency-name: ncipollo/release-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d54aed3..08da348 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -78,7 +78,7 @@ jobs: - name: Create release draft id: release_drafter - uses: ncipollo/release-action@v1.15.0 + uses: ncipollo/release-action@v1.16.0 with: tag: ${{ steps.env.outputs.tag }} name: 'thinRoot ${{ steps.env.outputs.version }}' @@ -247,7 +247,7 @@ jobs: done - name: Update release draft - uses: ncipollo/release-action@v1.15.0 + uses: ncipollo/release-action@v1.16.0 with: tag: ${{ needs.release_draft.outputs.tag }} bodyFile: release-template.md/release-template.md From b55934e71b15c0fe109a5bc2db6109b1bf3b3204 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 7 Mar 2025 09:26:03 +0100 Subject: [PATCH 156/247] update buildroot to 2024.11.2 --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index b03d7bd..ebcde31 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -BUILDROOT_VERSION=2024.11.1 -BUILDROOT_SHA256=24713886622df4f13c4bcfa68986a07d5803a3a3611f1eb173efcfef5e8eee0f +BUILDROOT_VERSION=2024.11.2 +BUILDROOT_SHA256=a035cf4e003e8cbaff2cf65d14ac135b33578a6ccb53aefef341ff1266d45f65 BUILDROOT_EXTERNAL=buildroot-external DEFCONFIG_DIR=$(BUILDROOT_EXTERNAL)/configs DATE=$(shell date +%Y%m%d) From 79e9ba7fb3b9d58ddf4ba6689aa27e9a3fcec9e9 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 7 Mar 2025 09:26:44 +0100 Subject: [PATCH 157/247] update upstream kernel to 6.12.17 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 3069b7b..67c211a 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.12" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 0539fc3..9b65397 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -9,7 +9,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.12" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index 2aff204..54efd97 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 e98942d17ef7063b3f2d6d7692bf24899e2e021cf832d19b55308ec8e8e08eff linux-6.12.12.tar.xz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz +sha256 5c205cd34f80974e4973e321cb008f5f6895a8aa8c2577f06a9448cd77de63b3 linux-6.12.17.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index 2aff204..54efd97 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz -sha256 e98942d17ef7063b3f2d6d7692bf24899e2e021cf832d19b55308ec8e8e08eff linux-6.12.12.tar.xz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz +sha256 5c205cd34f80974e4973e321cb008f5f6895a8aa8c2577f06a9448cd77de63b3 linux-6.12.17.tar.xz From d6c47e783adbee5aed56d312f6f72d5cde8760b3 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 7 Mar 2025 09:27:16 +0100 Subject: [PATCH 158/247] update qutselect to 3.12 --- buildroot-external/package/qutselect/qutselect.hash | 2 +- buildroot-external/package/qutselect/qutselect.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/package/qutselect/qutselect.hash b/buildroot-external/package/qutselect/qutselect.hash index 69bde90..4afc712 100644 --- a/buildroot-external/package/qutselect/qutselect.hash +++ b/buildroot-external/package/qutselect/qutselect.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 18788502849367044cce3c4313ff83c16d3c6b8ed82a87a9f55dde3706dfd614 qutselect-3.11.tar.gz +sha256 657252be1bc519b01f54a163bef378c6ef3d48cdf76a68bb49e4d1e86f82fcc4 qutselect-3.12.tar.gz diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index 47b1c72..dd407b1 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -4,7 +4,7 @@ # ################################################################################ -QUTSELECT_VERSION = 3.11 +QUTSELECT_VERSION = 3.12 QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE From a709c8435c6463fb3b665d23c699e4f1a3544d2f Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 7 Mar 2025 09:29:41 +0100 Subject: [PATCH 159/247] update rpi-eeprom to pieeprom-2025-03-03.bin (rpi5) and pieeprom-2025-02-11.bin (rpi4) --- buildroot-external/package/rpi-eeprom/rpi-eeprom.hash | 2 +- buildroot-external/package/rpi-eeprom/rpi-eeprom.mk | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash b/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash index df5a5e4..44ca532 100644 --- a/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash +++ b/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash @@ -1,3 +1,3 @@ # Locally computed sha256 8070f30d450f10fa9253e7a254cd3877fa4b973eb437b94d8c03e2fabc64c916 LICENSE -sha256 09e6043d72c3dc388376f7bb5e2bc9c29d529e68c48b9018c0c3a36262002db5 rpi-eeprom-0190dbc122fe0adeed591375fb4e80fbfe6aae15.tar.gz +sha256 c833aeeaa7fcae516c2971b5084b479a62b8c1e348a380cf76e3b8d1dfe82a78 rpi-eeprom-3a16bd016f533877079c3bfad188539abd31fb8a.tar.gz diff --git a/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk b/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk index 6fe25ef..bcdeba8 100644 --- a/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk +++ b/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk @@ -4,7 +4,7 @@ # ################################################################################ -RPI_EEPROM_VERSION = 0190dbc122fe0adeed591375fb4e80fbfe6aae15 +RPI_EEPROM_VERSION = 3a16bd016f533877079c3bfad188539abd31fb8a RPI_EEPROM_SITE = $(call github,raspberrypi,rpi-eeprom,$(RPI_EEPROM_VERSION)) RPI_EEPROM_LICENSE = BSD-3-Clause RPI_EEPROM_LICENSE_FILES = LICENSE @@ -12,10 +12,10 @@ RPI_EEPROM_INSTALL_IMAGES = YES ifeq ($(BR2_PACKAGE_RPI_EEPROM_RPI4),y) # Raspberry Pi 4 - RPI_EEPROM_FIRMWARE_PATH = firmware-2711/stable/pieeprom-2024-12-07.bin + RPI_EEPROM_FIRMWARE_PATH = firmware-2712/stable/pieeprom-2025-02-11.bin else ifeq ($(BR2_PACKAGE_RPI_EEPROM_RPI5),y) # Raspberry Pi 5 - RPI_EEPROM_FIRMWARE_PATH = firmware-2712/stable/pieeprom-2025-01-27.bin + RPI_EEPROM_FIRMWARE_PATH = firmware-2712/stable/pieeprom-2025-03-03.bin endif define RPI_EEPROM_BUILD_CMDS From 553d75c02092e9be23785729a026af0f32d7893a Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 12 Mar 2025 09:06:10 +0100 Subject: [PATCH 160/247] update upstream kernel to 6.12.18 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 67c211a..51f77ce 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 9b65397..0f21d31 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -9,7 +9,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.17" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index 54efd97..b26f6ac 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 5c205cd34f80974e4973e321cb008f5f6895a8aa8c2577f06a9448cd77de63b3 linux-6.12.17.tar.xz +sha256 beb902a5f69d9e57710112203db38111dad6d30556ea8ce389284c8077fe944d linux-6.12.18.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index 54efd97..b26f6ac 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 5c205cd34f80974e4973e321cb008f5f6895a8aa8c2577f06a9448cd77de63b3 linux-6.12.17.tar.xz +sha256 beb902a5f69d9e57710112203db38111dad6d30556ea8ce389284c8077fe944d linux-6.12.18.tar.xz From 51dfc4a46afce1cf50a816643762e7dc72a8f83d Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 12 Mar 2025 13:16:11 +0100 Subject: [PATCH 161/247] fix case-sensitivity of filenames in release template file. --- .github/release-template.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/release-template.md b/.github/release-template.md index 7964832..8770207 100644 --- a/.github/release-template.md +++ b/.github/release-template.md @@ -16,24 +16,24 @@ ${CHANGELOG} The following installation archives can be downloaded for different hardware platforms. To verify their integrity a `sha256` checksum is provided as well. - Generic-x86_64: -:package: [thinRoot-${VERSION}-generic-x86_64.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-generic-x86_64.img)
SHA256: XSHAgeneric-x86_64.imgX
+:package: [thinroot-${VERSION}-generic-x86_64.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-generic-x86_64.img)
SHA256: XSHAgeneric-x86_64.imgX
- RaspberryPi5 Model B, RaspberryPi Compute Module 5, RaspberryPi 500: -:package: [thinRoot-${VERSION}-rpi5.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-rpi5.img)
SHA256: XSHArpi5.imgX
-:package: [thinRoot-${VERSION}-rpi5-kernel.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-rpi5-kernel.img)
SHA256: XSHArpi5-kernel.imgX
-:package: [thinRoot-${VERSION}-rpi5-sdcard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-rpi5-sdcard.img)
SHA256: XSHArpi5-sdcard.imgX
+:package: [thinroot-${VERSION}-rpi5.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi5.img)
SHA256: XSHArpi5.imgX
+:package: [thinroot-${VERSION}-rpi5-kernel.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi5-kernel.img)
SHA256: XSHArpi5-kernel.imgX
+:package: [thinroot-${VERSION}-rpi5-sdcard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi5-sdcard.img)
SHA256: XSHArpi5-sdcard.imgX
- RaspberryPi4 Model B, RaspberryPi Compute Module 4, RaspberryPi 400: -:package: [thinRoot-${VERSION}-rpi4.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-rpi4.img)
SHA256: XSHArpi4.imgX
-:package: [thinRoot-${VERSION}-rpi4-kernel.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-rpi4-kernel.img)
SHA256: XSHArpi4-kernel.imgX
-:package: [thinRoot-${VERSION}-rpi4-sdcard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-rpi4-sdcard.img)
SHA256: XSHArpi4-sdcard.imgX
+:package: [thinroot-${VERSION}-rpi4.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi4.img)
SHA256: XSHArpi4.imgX
+:package: [thinroot-${VERSION}-rpi4-kernel.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi4-kernel.img)
SHA256: XSHArpi4-kernel.imgX
+:package: [thinroot-${VERSION}-rpi4-sdcard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi4-sdcard.img)
SHA256: XSHArpi4-sdcard.imgX
- RaspberryPi3 Model B+, RaspberryPi3 Model B, RaspberryPi3 Model A+, RaspberryPi Compute Module 3, RaspberryPi Compute Module 3 lite, RaspberryPi Zero 2 W: -:package: [thinRoot-${VERSION}-rpi3.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-rpi3.img)
SHA256: XSHArpi3.imgX
-:package: [thinRoot-${VERSION}-rpi3-kernel.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-rpi3-kernel.img)
SHA256: XSHArpi3-kernel.imgX
-:package: [thinRoot-${VERSION}-rpi3-sdcard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-rpi3-sdcard.img)
SHA256: XSHArpi3-sdcard.imgX
+:package: [thinroot-${VERSION}-rpi3.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi3.img)
SHA256: XSHArpi3.imgX
+:package: [thinroot-${VERSION}-rpi3-kernel.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi3-kernel.img)
SHA256: XSHArpi3-kernel.imgX
+:package: [thinroot-${VERSION}-rpi3-sdcard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-rpi3-sdcard.img)
SHA256: XSHArpi3-sdcard.imgX
- TinkerBoard S, TinkerBoard: -:package: [thinRoot-${VERSION}-tinkerboard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-tinkerboard.img)
SHA256: XSHAtinkerboard.imgX
-:package: [thinRoot-${VERSION}-tinkerboard-kernel.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-tinkerboard-kernel.img)
SHA256: XSHAtinkerboard-kernel.imgX
-:package: [thinRoot-${VERSION}-tinkerboard-sdcard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinRoot-${VERSION}-tinkerboard-sdcard.img)
SHA256: XSHAtinkerboard-sdcard.imgX
+:package: [thinroot-${VERSION}-tinkerboard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-tinkerboard.img)
SHA256: XSHAtinkerboard.imgX
+:package: [thinroot-${VERSION}-tinkerboard-kernel.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-tinkerboard-kernel.img)
SHA256: XSHAtinkerboard-kernel.imgX
+:package: [thinroot-${VERSION}-tinkerboard-sdcard.img](https://github.com/jens-maus/thinRoot/releases/download/${VERSION}/thinroot-${VERSION}-tinkerboard-sdcard.img)
SHA256: XSHAtinkerboard-sdcard.imgX
From 86df083362432abbe2de14e79d11fe1b66b7b29c Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 20 Mar 2025 13:43:31 +0100 Subject: [PATCH 162/247] change I915 DRM to kernel module and add CONFIG_DRM_AMDGPU to support also AMD-based GPUs. --- buildroot-external/board/generic-x86_64/kernel.config | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/buildroot-external/board/generic-x86_64/kernel.config b/buildroot-external/board/generic-x86_64/kernel.config index 01b5b7a..06b44bf 100644 --- a/buildroot-external/board/generic-x86_64/kernel.config +++ b/buildroot-external/board/generic-x86_64/kernel.config @@ -22,10 +22,13 @@ CONFIG_FB_EFI=y # disable simple framebuffer support # CONFIG_FB_SIMPLE is not set -CONFIG_DRM_I915=y +CONFIG_DRM_I915=m CONFIG_DRM_I915_CAPTURE_ERROR=y CONFIG_DRM_I915_COMPRESS_ERROR=y CONFIG_DRM_I915_USERPTR=y +CONFIG_DRM_AMDGPU=m +CONFIG_DRM_AMDGPU_SI=y +CONFIG_DRM_AMDGPU_CIK=y CONFIG_MMC=y CONFIG_MMC_BLOCK=y From b8c3c42020e257ebad49f14d040db0a67fc6e26b Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 21 Mar 2025 11:24:10 +0100 Subject: [PATCH 163/247] compile I915 and AMDGPU into kernel to allow drm display as early as possible. --- buildroot-external/board/generic-x86_64/kernel.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/board/generic-x86_64/kernel.config b/buildroot-external/board/generic-x86_64/kernel.config index 06b44bf..9f015e4 100644 --- a/buildroot-external/board/generic-x86_64/kernel.config +++ b/buildroot-external/board/generic-x86_64/kernel.config @@ -22,11 +22,11 @@ CONFIG_FB_EFI=y # disable simple framebuffer support # CONFIG_FB_SIMPLE is not set -CONFIG_DRM_I915=m +CONFIG_DRM_I915=y CONFIG_DRM_I915_CAPTURE_ERROR=y CONFIG_DRM_I915_COMPRESS_ERROR=y CONFIG_DRM_I915_USERPTR=y -CONFIG_DRM_AMDGPU=m +CONFIG_DRM_AMDGPU=y CONFIG_DRM_AMDGPU_SI=y CONFIG_DRM_AMDGPU_CIK=y From b07d3872c7e854e7f7849faba6abae15c7691c25 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 21 Mar 2025 11:26:50 +0100 Subject: [PATCH 164/247] quit psplash gracefully using psplash-write QUIT command rather than killing the process. --- buildroot-external/rootfs-overlay/etc/init.d/rcK | 4 ++-- buildroot-external/rootfs-overlay/etc/init.d/rcS | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/rootfs-overlay/etc/init.d/rcK b/buildroot-external/rootfs-overlay/etc/init.d/rcK index 0a52eec..3975f6f 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/rcK +++ b/buildroot-external/rootfs-overlay/etc/init.d/rcK @@ -46,5 +46,5 @@ fi /usr/bin/psplash-write "MSG Rebooting..." /usr/bin/psplash-write "PROGRESS 0" -# kill psplash -pkill /usr/bin/psplash +# quit psplash +/usr/bin/psplash-write "QUIT" diff --git a/buildroot-external/rootfs-overlay/etc/init.d/rcS b/buildroot-external/rootfs-overlay/etc/init.d/rcS index 01c6db4..cbf64d6 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/rcS +++ b/buildroot-external/rootfs-overlay/etc/init.d/rcS @@ -60,5 +60,5 @@ fi echo "Finished Boot: thinRoot ${VERSION} (${PRODUCT})" -# kill psplash after 2 seconds -(sleep 2; pkill /usr/bin/psplash 2>/dev/null) & +# quit psplash after 5 seconds +(sleep 5; /usr/bin/psplash-write "QUIT") & From f0077ea5de57cc77f78693aafa47ea2e8903cc02 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 21 Mar 2025 11:40:27 +0100 Subject: [PATCH 165/247] modify buildroot upstream psplash patch to fix issues with recent psplash issues and adapted our environment to use BR2_PACKAGE_PSPLASH_IMAGE config option instead directly pointing to the desired logo png image being used. --- Makefile | 4 +- buildroot-external/Buildroot.config | 2 +- .../patches/psplash/create-patches.sh | 16 - .../patches/psplash/hzdr/0001-logo.patch | 2013 ----------------- .../psplash/{hzdr/logo.png => logo-hzdr.png} | Bin .../{thinroot/logo.png => logo-thinroot.png} | Bin .../patches/psplash/thinroot/0001-logo.patch | 1308 ----------- buildroot-patches/0007-psplash.patch | 48 +- .../buildroot/package/psplash/Config.in | 40 - .../buildroot/package/psplash/Config.in.orig | 31 - .../buildroot/package/psplash/psplash.mk | 56 +- .../buildroot/package/psplash/psplash.mk.orig | 48 +- 12 files changed, 90 insertions(+), 3476 deletions(-) delete mode 100755 buildroot-external/patches/psplash/create-patches.sh delete mode 100644 buildroot-external/patches/psplash/hzdr/0001-logo.patch rename buildroot-external/patches/psplash/{hzdr/logo.png => logo-hzdr.png} (100%) rename buildroot-external/patches/psplash/{thinroot/logo.png => logo-thinroot.png} (100%) delete mode 100644 buildroot-external/patches/psplash/thinroot/0001-logo.patch delete mode 100644 buildroot-patches/0007-psplash/buildroot/package/psplash/Config.in delete mode 100644 buildroot-patches/0007-psplash/buildroot/package/psplash/Config.in.orig diff --git a/Makefile b/Makefile index ebcde31..ab68110 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -BUILDROOT_VERSION=2024.11.2 -BUILDROOT_SHA256=a035cf4e003e8cbaff2cf65d14ac135b33578a6ccb53aefef341ff1266d45f65 +BUILDROOT_VERSION=2025.02 +BUILDROOT_SHA256=16bb97f1e7f93492c57fe895276880ea32e555a4fcefb385ddc27f4a08e250ec BUILDROOT_EXTERNAL=buildroot-external DEFCONFIG_DIR=$(BUILDROOT_EXTERNAL)/configs DATE=$(shell date +%Y%m%d) diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index dbfd23c..cca284f 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -58,7 +58,7 @@ BR2_PACKAGE_MESA3D_OPENGL_GLX=y BR2_PACKAGE_MESA3D_OPENGL_EGL=y BR2_PACKAGE_MESA3D_OPENGL_ES=y BR2_PACKAGE_PSPLASH=y -BR2_PACKAGE_PSPLASH_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/patches/psplash/hzdr" +BR2_PACKAGE_PSPLASH_IMAGE="$(BR2_EXTERNAL_THINROOT_PATH)/patches/psplash/logo-hzdr.png" BR2_PACKAGE_XORG7=y BR2_PACKAGE_XSERVER_XORG_SERVER=y BR2_PACKAGE_XLIB_LIBXAW=y diff --git a/buildroot-external/patches/psplash/create-patches.sh b/buildroot-external/patches/psplash/create-patches.sh deleted file mode 100755 index a36e278..0000000 --- a/buildroot-external/patches/psplash/create-patches.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/sh -# -# Tiny wrapper script walking through our subdirectories containing -# "logo.png" files and generating the corresponding patch files in -# the same subdirectory. -# -# This tool requires "gdk-pixbuf-csource" from libgtk -# - -logofiles=$(find . -maxdepth 2 -type f -name logo.png -print) -for file in ${logofiles}; do - dir=$(dirname "${file}") - gdk-pixbuf-csource --macros --name=POKY_IMG "${dir}/logo.png" | sed 's/guint8/uint8/g' >/tmp/psplash-poky-img.h - diff -N -u --label=psplash/psplash-poky-img.h.orig --label=psplash/psplash-poky-img.h psplash-poky-img.h.orig /tmp/psplash-poky-img.h >"${dir}/0001-logo.patch" - rm -f /tmp/psplash-poky-img.h -done diff --git a/buildroot-external/patches/psplash/hzdr/0001-logo.patch b/buildroot-external/patches/psplash/hzdr/0001-logo.patch deleted file mode 100644 index d6e29ad..0000000 --- a/buildroot-external/patches/psplash/hzdr/0001-logo.patch +++ /dev/null @@ -1,2013 +0,0 @@ ---- psplash/psplash-poky-img.h.orig -+++ psplash/psplash-poky-img.h -@@ -0,0 +1,2010 @@ -+/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ -+ -+#define POKY_IMG_ROWSTRIDE (2336) -+#define POKY_IMG_WIDTH (584) -+#define POKY_IMG_HEIGHT (112) -+#define POKY_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */ -+#define POKY_IMG_RLE_PIXEL_DATA ((uint8*) \ -+ "\10\0\0\0\0\2\1\0\0\4\0\0\0\1\1\0\0\0\3\3\0\0\6\0\0\0\2\0\0\1\0\14\3\230" \ -+ "\4\0\5\0\10\1\1\0\0\0\7\14\3\0\0\13\3\1\0\2\0\0\5\1\0\1\1\13\3\10\0\13" \ -+ "\3\7\0\6\0\300\0\0\0\0\10\0\3\0\0\0\0\5\0\10\0\6\0\1\0\0\0\0\3\5\0\4" \ -+ "\0\0\0\15\0\0\6\0\1\0\0\230\1\0\0\0\10\10\3\0\0\3\2\0\0\6\0\0\0\15\0" \ -+ "\0\6\11\0\0\0\0\1\0\0\0\1\7\0\3\0\14\3\210\0\0\0\0\3\0\0\4\0\0\0\2\0" \ -+ "\1\1\1\0\205\0\1\0\0\1\2\1\0\0\202\3\2\0\0\202\2\1\0\0\3\1\0\0\0\2\1" \ -+ "\0\0\3\2\0\0\360\1\0\0\0\10\13\0\0\3\12\0\11\0\7\0\7\0\4\1\10\0\0\1\20" \ -+ "\11\0\2\5\0\2\3\0\0\7\0\5\0\210\0\0\0\0\10\0\3\4\0\1\10\0\0\3\0\4\0\7" \ -+ "\0\0\0\12\4\0\0\4\0\0\0\2\0\3\0\3\0\7\0\320\1\0\0\0\210\2\1\0\0\202\0" \ -+ "\0\2\0\1\0\0\0\0\203\1\0\0\0\202\3\0\0\0\204\1\0\2\0\202\1\0\4\0\202" \ -+ "\0\0\4\0\2\5\1\2\0\3\0\2\0\202\1\0\2\0\202\0\0\4\0\5\0\1\6\0\0\0\5\0" \ -+ "\0\0\2\0\2\2\4\0\1\3\2\0\202\0\1\0\0\3\0\0\0\0\1\0\0\0\3\0\0\0\230\0" \ -+ "\0\0\0\10\5\0\0\0\0\0\14\3\1\2\4\0\10\4\0\0\3\0\0\0\0\1\5\0\0\4\0\0\6" \ -+ "\0\0\0\340\1\0\0\0\1\0\4\0\0\202\0\3\0\0\2\0\2\0\0\0\1\0\0\202\0\2\1" \ -+ "\0\6\0\1\3\0\0\1\7\0\0\2\6\0\0\3\6\0\0\2\5\0\0\1\2\0\202\0\0\4\0\11\0" \ -+ "\0\5\0\1\0\4\0\3\1\4\0\2\2\2\0\0\0\0\0\0\1\0\0\1\0\0\0\3\0\0\0\5\0\0" \ -+ "\0\210\0\0\0\0\10\0\3\0\0\0\1\0\0\3\0\0\0\5\3\6\0\0\4\22\14\0\1\4\0\1" \ -+ "\0\0\0\1\0\22\14\230\0\1\0\0\10\3\0\0\0\1\5\10\0\6\0\4\0\7\0\0\0\0\5" \ -+ "\0\0\0\7\0\0\3\2\0\0\0\5\0\0\300\0\0\0\0\10\0\1\0\0\0\0\5\0\6\0\2\0\1" \ -+ "\0\0\0\0\6\6\0\6\5\3\0\10\0\0\0\0\2\13\3\230\0\0\4\0\10\0\2\0\0\0\4\0" \ -+ "\0\0\2\2\0\4\2\5\0\0\3\2\0\0\6\0\0\0\4\0\0\3\0\0\0\210\0\0\0\0\2\0\0" \ -+ "\4\0\0\0\2\0\202\0\0\0\0\203\0\1\0\0\1\0\1\3\0\370\0\0\4\0\10\0\5\0\0" \ -+ "\1\1\0\0\3\0\0\0\1\1\0\0\0\1\2\0\0\2\0\0\0\1\0\0\5\0\6\0\210\0\0\0\0" \ -+ "\10\0\1\5\0\0\3\0\0\0\0\14\3\0\0\7\0\1\11\0\0\0\5\0\0\0\4\0\0\0\3\0\0" \ -+ "\330\0\0\4\0\202\0\0\2\0\203\0\0\0\0\203\1\0\0\0\204\0\2\0\0\1\0\1\0" \ -+ "\0\203\0\2\0\0\202\0\1\7\0\16\0\4\10\0\1\5\6\0\2\4\1\0\1\2\0\0\1\0\0" \ -+ "\0\1\1\0\0\0\5\0\0\0\2\0\0\0\1\0\0\0\1\4\0\0\0\2\0\3\3\1\0\3\3\0\0\1" \ -+ "\1\0\0\230\0\0\0\0\10\7\0\0\0\0\0\13\3\0\1\2\0\3\1\0\0\1\0\2\0\0\2\10" \ -+ "\0\0\6\4\0\4\0\0\0\340\0\0\4\0\202\1\1\1\0\202\0\0\0\0\202\1\0\0\0\202" \ -+ "\2\0\1\0\20\7\0\0\0\6\0\0\0\4\0\0\0\3\0\0\0\1\0\0\0\0\0\0\0\0\1\0\0\0" \ -+ "\1\3\0\0\1\5\0\0\1\4\0\0\1\2\0\0\0\2\0\3\5\4\0\1\1\1\0\1\0\0\0\5\1\0" \ -+ "\0\210\0\0\0\0\10\5\0\0\0\3\0\2\0\5\1\2\0\1\6\14\3\0\3\16\6\0\2\0\0\14" \ -+ "\0\0\3\16\0\0\6\230\0\0\4\0\202\0\3\0\0\6\14\0\0\3\34\5\0\32\1\1\0\0" \ -+ "\0\2\5\0\0\0\7\0\0\2\0\0\300\0\0\0\0\10\6\5\1\0\4\3\11\0\7\1\3\0\1\0" \ -+ "\0\0\0\6\4\0\0\0\0\0\1\0\4\0\0\11#&\230\0\0\2\0\10\0\3\0\0\0\6\7\0\0" \ -+ "\2\7\0\0\0\7\0\0\2\5\0\0\6\6\0\5\7\0\0\21\0\0\14\210\0\0\0\0\202\0\0" \ -+ "\2\0\202\0\0\0\0\202\0\1\0\0\3\0\2\1\0\3\4\6\0\0\0\2\0\203\0\1\3\0\203" \ -+ "\0\0\2\0\1\0\1\3\0\360\0\0\2\0\10\0\13\13\3\0\13\21\14\0\4\0\0\0\3\0" \ -+ "\0\5\6\1\0\2\4\0\0\1\2\0\0\3\0\7\0\210\0\0\0\0\10\23\0\0\17\10\0\0\0" \ -+ "\7\2\26\22\0\0\22\14\0\3\2\0\0\2\5\0\0\4\4\0\0\4\3\0\330\0\0\2\0\203" \ -+ "\0\1\4\0\202\0\1\2\0\1\0\0\2\0\202\0\1\0\0\202\0\0\11\0\7\0\0\7\0\0\0" \ -+ "\5\0\2\0\5\0\4\0\3\0\3\0\0\0\4\0\0\0\0\2\0\0\202\1\3\0\0\202\0\1\0\0" \ -+ "\202\0\0\0\0\5\4\2\3\0\0\2\0\0\0\1\0\0\1\3\0\0\0\2\0\0\202\0\0\0\0\202" \ -+ "\0\0\2\0\230\0\0\0\0\10\10\0\0\0\5\4\14\3\0\1\6\0\3\0\0\0\4\0\10\0\0" \ -+ "\1\15\6\0\2\6\0\3\0\7\0\340\0\0\2\0\202\3\0\7\0\3\3\0\5\0\3\0\4\0\4\0" \ -+ "\4\0\202\4\0\2\0\1\4\0\0\0\203\1\0\0\0\1\2\1\0\0\202\5\1\0\0\12\4\0\0" \ -+ "\0\3\0\0\0\0\2\0\0\0\3\2\0\0\4\5\0\2\3\7\0\1\2\6\0\0\0\2\0\0\0\0\0\2" \ -+ "\2\0\0\210\0\0\0\0\10\0\2\0\0\0\2\2\0\0\0\0\0\1\0\0\0\15\0\0\6n,\22\223" \ -+ "\314S&\377\336R.\377\230\341R\26\377\10\336X\31\377\322V\32\377\323P" \ -+ "\34\377\307R&\377f+\15\207\20\3\0\11\0\0\4\0\0\6\1\0\300\0\0\0\0\10\1" \ -+ "\0\0\0\0\0\5\0\4\0\0\0\1\0\0\0\0\6\2\0\0\1\0\0\0\3\17\11\32""7a\201\230" \ -+ "\35V\235\326\10\40Q\213\274\37V\226\315\37V\231\320#V\230\320!X\233\323" \ -+ "\33S\216\301\21""4\\x\0\7\30\25\210\0\0\0\0\2\0\0\2\0\1\1\1\0\202\0\0" \ -+ "\0\0\6\0\2\0\0\0\1\0\0\1\2\4\0\6\7\13\3\32S\232\323\33T\233\323\202\34" \ -+ "U\234\326\203\33T\233\323\1\34U\234\326\360\35V\235\326\10\"Y\222\307" \ -+ ")M\201\260\11\31""08\0\1\0\0\3\0\2\0\1\0\0\0\0\1\0\0\0\0\11\0\210\0\0" \ -+ "\0\0\10\0\0\14\3\0\16\34\32\37E\204\263\36R\235\326\34V\225\312\40T\237" \ -+ "\331\40P\230\320!P\226\315\320\35V\235\326\210\33T\233\323\20$M\215\277" \ -+ "#L\214\277\40I\211\274\36E\206\266\33C\201\260\30@~\252\26>|\247\25;" \ -+ "z\244\33""4Sl\30/Nd\23(EX\16\"=L\12\32""3>\4\23*/\0\11\37\40\0\4\30\25" \ -+ "\203\0\2\0\0\3\0\1\0\0\0\0\0\0\3\0\0\0\202\4\0\0\0\1\3\0\4\0\203\3\0" \ -+ "\0\0\4\4\0\1\0\3\0\7\0\1\0\14\3\0\0\20\11\230\0\0\0\0\10\11/Sl\36R\216" \ -+ "\301\33W\223\307\35T\212\274\40S\225\312\31T\232\323\30T\222\307\40R" \ -+ "\227\315\340\35V\235\326\30\37T\230\320\40U\231\320\40U\227\315!T\225" \ -+ "\312\36Q\220\304\31M\207\271\25G\202\260\22E~\252\13+Qj\4!CU\0\21""0" \ -+ "8\0\4\33\32\0\1\16\6\0\0\5\0\3\0\0\0\6\0\0\0\2\2\0\0\4\4\0\0\2\1\0\0" \ -+ "\1\0\0\0\1\0\2\0\2\2\4\0\2\3\5\0\0\2\1\0\210\0\0\0\0\10\0\2\0\0\0\10" \ -+ "\11\0\1\5\4\0\0\2\0\0\7\0\0\0\1775\6\255\356`\26\377\371Y\17\377\230" \ -+ "\361_\24\377\10\363Z\24\377\356[\25\377\371Z\31\377\360_*\377{*\14\247" \ -+ "\22\0\0\14\6\0\7\0\3\1\4\0\300\0\0\0\0\10\3\1\4\0\0\0\4\0\4\0\0\0\2\1" \ -+ "\0\0\0\3\0\0\0\1\0\0\0\2\22\14\"G|\377\230\32]\254\377\10!\\\252\377" \ -+ "\37]\262\377\34Z\261\377\36Z\260\377\36`\267\377\40^\261\377\26;p\225" \ -+ "\0\1\23\17\210\0\0\0\0\2\0\0\2\0\1\1\1\0\202\0\0\0\0\6\0\2\1\0\0\0\2" \ -+ "\0\1\2\6\0\11\12\17\11\32]\254\377\33^\255\377\202\35`\257\377\203\34" \ -+ "_\256\377\1\35`\257\377\360\32]\254\377\10\33]\275\377(U\246\377\3\26" \ -+ ">L\0\0\7\0\5\0\6\0\6\2\3\0\1\2\0\0\0\0\10\0\211\0\0\0\0\7\0\15\25\22" \ -+ "&S\226\377\"`\267\377\33^\257\377\37\\\271\377#Z\267\377&]\272\377\320" \ -+ "\32]\254\377\210\34_\256\377\202\32_\255\377\2\33`\256\377\34_\256\377" \ -+ "\202\34_\255\377\202\35_\255\377\22\36_\263\377\34]\261\377\36[\254\377" \ -+ "\40Z\253\377\"Z\247\377\"W\243\377\40T\237\377\37Q\232\323\35D}\252\24" \ -+ "9n\223\10'Sl\0\27""9F\0\14#&\0\5\20\11\0\1\5\0\1\0\0\0\2\1\0\0\3\0\0" \ -+ "\0\202\4\0\0\0\4\4\0\2\0\1\0\4\0\0\0\4\0\0\3\6\0\230\0\0\0\0\10\1*Xr" \ -+ "!Z\247\377\34c\265\377!`\257\377#\\\266\377\34]\267\377\32^\257\377\"" \ -+ "`\267\377\340\32]\254\377\30\27Z\261\377\31\\\263\377\32^\263\377\35" \ -+ "_\263\377\35`\261\377\34_\256\377\33]\253\377\32\\\250\377$b\267\377" \ -+ "$^\260\377$U\241\377\"J\210\377\32""9g\212\17$CU\0\16\35\35\0\3\13\3" \ -+ "\1\0\0\0\3\0\0\0\4\0\0\0\6\1\0\0\3\0\0\0\0\0\0\0\0\1\2\0\0\1\4\0\210" \ -+ "\0\0\0\0\10\6\0\0\0\2\0\6\0\7\0\4\0\6\0\4\0\13\0\0\3\201/\11\260\361" \ -+ "^\31\377\365[\21\377\230\364Z\32\377\10\366[\31\377\365a\31\377\375[" \ -+ "\23\377\356\\\40\377r)\6\230\10\0\0\0\0\3\14\3\0\1\0\0\301\0\0\0\0\7" \ -+ "\0\1\2\0\6\2\0\0\3\0\0\0\0\0\2\0\4\3\0\0\0\3\20\11\33C~\377\230\40[\265" \ -+ "\377\10\35_\255\377\36`\266\377\40^\263\377\40]\256\377\33_\264\377\36" \ -+ "_\261\377\26\3\0\0\0\2\1\0\0\0\1\11" \ -+ "\0\220\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264" \ -+ "\377\34^\252\377\"\\\256\377\34]\255\377\360\37^\256\377\30!Z\251\377" \ -+ "#^\254\377!\\\252\377\37]\252\377\"_\257\377\37^\256\377\33Y\256\377" \ -+ "\35Z\263\377*\\\241\377\12*Qj\0\4\13\3\4\0\0\0\3\0\0\0\0\0\4\0\0\1\5" \ -+ "\0\0\0\0\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0\0z-\17\244\364[\37\377" \ -+ "\363\\\23\377\230\363[\30\377\10\362]\33\377\361]\27\377\364[\25\377" \ -+ "\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301\0\0\0\0\7\1\1\3\0\0" \ -+ "\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10" \ -+ "\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377" \ -+ "\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0\2\0\2\0\5\0\1\0\2\0\1" \ -+ "\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36]\254\377\37^\256\377" \ -+ "\202\36]\255\377\3\37^\256\377\37]\260\377\36\\\257\377\360\37^\256\377" \ -+ "\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0\0\1\0\0\5\0\1\0\0\0\5\0\0" \ -+ "\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254" \ -+ "\377\35^\256\377\37^\253\377\36\\\261\377\360\37^\256\377\20\35\\\254" \ -+ "\377\37]\260\377\40^\261\377\40_\257\377!`\260\377#`\260\377\"_\257\377" \ -+ "\"\\\255\377$b\265\377\24[\255\377\23[\260\377)b\263\377\35@v\236\0\16" \ -+ "#&\0\1\3\0\2\1\0\0\220\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\" \ -+ "\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\360\37^\256" \ -+ "\377\13\34Z\255\377\"_\257\377\"`\253\377\40[\251\377![\255\377\37[\261" \ -+ "\377\33\\\256\377\35_\255\377\35c\271\377\36L\212\377\10\30""2;\202\1" \ -+ "\0\0\0\13\0\1\4\0\0\3\6\0\0\0\0\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1" \ -+ "\0\0z-\17\244\364[\37\377\363\\\23\377\230\363[\30\377\10\362]\33\377" \ -+ "\361]\27\377\364[\25\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0" \ -+ "\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203" \ -+ "\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377" \ -+ "\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0" \ -+ "\0\2\0\2\0\5\0\1\0\2\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377" \ -+ "\36]\254\377\37^\256\377\202\36]\255\377\3\37^\256\377\37]\260\377\36" \ -+ "\\\257\377\360\37^\256\377\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0" \ -+ "\0\1\0\0\5\0\1\0\0\0\5\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R" \ -+ "\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\360\37^\256\377\20\36X\251\377\36\\\257\377\33]\261\377\31]\262\377" \ -+ "\30\\\257\377\33]\261\377\34]\261\377\35[\260\377\27[\244\377\37a\267" \ -+ "\377\33\\\266\377\36\\\257\377,^\243\377\25""2^{\0\0\13\3\14\1\0\3\220" \ -+ "\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34" \ -+ "^\252\377\"\\\256\377\34]\255\377\360\37^\256\377\30\33^\271\377\33^" \ -+ "\255\377\35]\245\377\37]\252\377\37[\263\377\37\\\267\377\35^\256\377" \ -+ "\33`\245\377\12]\273\3770e\263\377\32-Wr\2\3\10\0\1\2\0\0\0\2\0\0\0\0" \ -+ "\5\0\0\0\0\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0\0z-\17\244\364[\37" \ -+ "\377\363\\\23\377\230\363[\30\377\10\362]\33\377\361]\27\377\364[\25" \ -+ "\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301\0\0\0\0\7\1\1\3" \ -+ "\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377" \ -+ "\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263" \ -+ "\377\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0\2\0\2\0\5\0\1\0\2" \ -+ "\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36]\254\377\37^\256" \ -+ "\377\202\36]\255\377\3\37^\256\377\37]\260\377\36\\\257\377\360\37^\256" \ -+ "\377\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0\0\1\0\0\5\0\1\0\0\0\5" \ -+ "\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"" \ -+ "[\254\377\35^\256\377\37^\253\377\36\\\261\377\370\37^\256\377\12\35" \ -+ "\\\254\377\40Z\256\377#`\261\377\27[\254\377\35e\271\377\37W\242\377" \ -+ "\2\34=L\0\3\0\0\0\1\5\0\0\0\2\0\202\0\1\0\0\4\1\0\0\0\2\1\0\0\0\0\2\0" \ -+ "\0\0\5\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35" \ -+ "]\264\377\34^\252\377\"\\\256\377\34]\255\377\370\37^\256\377\20$\\\263" \ -+ "\377\26^\252\377\32]\244\342\0\26""1;\1\2\0\0\10\0\0\0\5\0\15\6\0\0\13" \ -+ "\3\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0\0z-\17\244\364[\37\377\363\\" \ -+ "\23\377\230\363[\30\377\10\362]\33\377\361]\27\377\364[\25\377\360]\32" \ -+ "\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4" \ -+ "\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255" \ -+ "\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9" \ -+ "r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0\2\0\2\0\5\0\1\0\2\0\1\0\0\0" \ -+ "\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36]\254\377\37^\256\377\202\36" \ -+ "]\255\377\3\37^\256\377\37]\260\377\36\\\257\377\360\37^\256\377\10\34" \ -+ "]\257\377!\\\252\377\7\30""2;\0\2\0\0\0\1\0\0\5\0\1\0\0\0\5\0\0\2\0\0" \ -+ "\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35" \ -+ "^\256\377\37^\253\377\36\\\261\377\370\37^\256\377\11\36_\257\377\36" \ -+ "[\256\377\40]\256\377\31\\\253\377\27]\262\377%^\255\377\32;h\212\0\6" \ -+ "\11\0\0\0\2\0\206\0\0\0\0\1\0\0\4\0\210\0\0\0\0\10\16'Og\40[\251\377" \ -+ "\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255" \ -+ "\377\370\37^\256\377\20\40X\255\377\31`\260\377\36a\247\377\20""3]{\0" \ -+ "\2\3\0\6\0\0\0\3\0\4\0\0\0\7\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0" \ -+ "\0z-\17\244\364[\37\377\363\\\23\377\230\363[\30\377\10\362]\33\377\361" \ -+ "]\27\377\364[\25\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301" \ -+ "\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263" \ -+ "\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34" \ -+ "_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0" \ -+ "\2\0\2\0\5\0\1\0\2\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36" \ -+ "]\254\377\37^\256\377\202\36]\255\377\3\37^\256\377\37]\260\377\36\\" \ -+ "\257\377\360\37^\256\377\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0\0" \ -+ "\1\0\0\5\0\1\0\0\0\5\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370" \ -+ "\37^\256\377\20\35`\257\377\37[\261\377\37Y\253\377\37^\255\377\31[\257" \ -+ "\377$`\266\377*V\223\307\0\36;I\1\0\2\0\1\0\0\0\2\1\0\0\0\0\0\0\0\0\2" \ -+ "\0\0\1\0\0\1\0\0\0\4\0\3\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377" \ -+ "\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\370\37" \ -+ "^\256\377\20\37W\252\377\34`\263\377\36a\250\377)O\216\301\0\12\30\25" \ -+ "\1\0\4\0\1\0\0\0\1\1\1\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0\0z-\17" \ -+ "\244\364[\37\377\363\\\23\377\230\363[\30\377\10\362]\33\377\361]\27" \ -+ "\377\364[\25\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301\0\0" \ -+ "\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230" \ -+ "\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255" \ -+ "\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0\2\0\2" \ -+ "\0\5\0\1\0\2\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36]\254" \ -+ "\377\37^\256\377\202\36]\255\377\3\37^\256\377\37]\260\377\36\\\257\377" \ -+ "\360\37^\256\377\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0\0\1\0\0\5" \ -+ "\0\1\0\0\0\5\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33" \ -+ "^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370\37^\256" \ -+ "\377\20\33^\254\377\40^\263\377\35W\253\377\"`\255\377\36_\261\377\36" \ -+ "[\264\377&[\251\377\24B}\252\2\1\11\0\1\0\0\0\5\2\0\0\0\0\2\0\0\1\6\0" \ -+ "\0\2\0\0\1\0\0\0\5\0\1\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377" \ -+ "\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\370\37" \ -+ "^\256\377\20![\255\377\34_\260\377\31\\\252\377-[\246\377\12\36AR\0\1" \ -+ "\12\0\2\2\0\0\1\2\0\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0\0z-\17\244" \ -+ "\364[\37\377\363\\\23\377\230\363[\30\377\10\362]\33\377\361]\27\377" \ -+ "\364[\25\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301\0\0\0\0" \ -+ "\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37" \ -+ "^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377" \ -+ "\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0\2\0\2\0\5" \ -+ "\0\1\0\2\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36]\254\377" \ -+ "\37^\256\377\202\36]\255\377\3\37^\256\377\37]\260\377\36\\\257\377\360" \ -+ "\37^\256\377\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0\0\1\0\0\5\0\1" \ -+ "\0\0\0\5\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254" \ -+ "\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370\37^\256\377" \ -+ "\20\33_\252\377\37]\262\377\40Y\260\377!_\254\377!`\260\377\33[\265\377" \ -+ "\36Z\262\377!Z\247\345\7\17$&\0\1\2\0\4\1\0\0\1\0\2\0\0\2\11\0\0\2\0" \ -+ "\0\0\1\0\0\6\0\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\" \ -+ "\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\370\37^\256" \ -+ "\377\20\37\\\257\377\32]\253\377\32\\\262\377$Y\251\377\34""8w\241\0" \ -+ "\4\16\6\1\3\0\0\0\1\0\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0\0z-\17" \ -+ "\244\364[\37\377\363\\\23\377\230\363[\30\377\10\362]\33\377\361]\27" \ -+ "\377\364[\25\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301\0\0" \ -+ "\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230" \ -+ "\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255" \ -+ "\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0\2\0\2" \ -+ "\0\5\0\1\0\2\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36]\254" \ -+ "\377\37^\256\377\202\36]\255\377\3\37^\256\377\37]\260\377\36\\\257\377" \ -+ "\360\37^\256\377\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0\0\1\0\0\5" \ -+ "\0\1\0\0\0\5\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33" \ -+ "^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370\37^\256" \ -+ "\377\20\40`\250\377\35Y\257\377!\\\266\377\35\\\253\377\33]\251\377\37" \ -+ "_\266\377\36[\266\377\40^\261\377\21*Rj\0\6\17\11\1\0\0\0\4\0\2\0\3\2" \ -+ "\10\0\0\2\0\0\1\2\0\0\4\0\4\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256" \ -+ "\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\370" \ -+ "\37^\256\377\20\33Y\254\377\34^\250\377\36b\267\377\33Y\256\377(O\236" \ -+ "\377\0\13\31\27\0\2\0\0\0\0\0\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0\2\0\2\1\0" \ -+ "\0z-\17\244\364[\37\377\363\\\23\377\230\363[\30\377\10\362]\33\377\361" \ -+ "]\27\377\364[\25\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0\3\0\0\0\301" \ -+ "\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263" \ -+ "\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34" \ -+ "_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\13\0\2\0\0\0\0" \ -+ "\2\0\2\0\5\0\1\0\2\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33Z\251\377\36" \ -+ "]\254\377\37^\256\377\202\36]\255\377\3\37^\256\377\37]\260\377\36\\" \ -+ "\257\377\360\37^\256\377\10\34]\257\377!\\\252\377\7\30""2;\0\2\0\0\0" \ -+ "\1\0\0\5\0\1\0\0\0\5\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370" \ -+ "\37^\256\377\20#_\245\377\35Y\261\377\40]\272\377\33\\\254\377\33]\247" \ -+ "\377!`\260\377\36\\\261\377\36[\254\377\40I\201\377\0\16\37\40\0\1\0" \ -+ "\0\7\0\0\0\6\1\7\0\0\3\0\0\1\4\0\0\1\0\5\0\210\0\0\0\0\10\16'Og\40[\251" \ -+ "\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34" \ -+ "]\255\377\370\37^\256\377\20\33Y\256\377!a\253\377\34a\257\377\31\\\267" \ -+ "\377+Z\254\377\3\31""08\0\2\0\0\0\0\11\0\3\0\0\0\0\3\3\0\3\0\0\0\0\0" \ -+ "\2\0\2\1\0\0z-\17\244\364[\37\377\363\\\23\377\230\363[\30\377\10\362" \ -+ "]\33\377\361]\27\377\364[\25\377\360]\32\377r(\15\230\0\0\2\0\0\1\0\0" \ -+ "\3\0\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1" \ -+ "\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377" \ -+ "![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\13" \ -+ "\0\2\0\0\0\0\2\0\2\0\5\0\1\0\2\0\1\0\0\0\0\0\0\0\0\1\4\0\7\13\26\22\33" \ -+ "Z\251\350\36]\254\377\37^\256\377\202\36]\255\377\3\37^\256\377\37]\260" \ -+ "\377\36\\\257\377\360\37^\256\377\10\34]\257\377!\\\252\377\7\30""2;" \ -+ "\0\2\0\0\0\1\0\0\5\0\1\0\0\0\5\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14" \ -+ "\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261" \ -+ "\377\370\37^\256\377\20\"]\241\377\40\\\264\377\34[\272\377\34_\260\377" \ -+ "\36b\251\377\34[\250\377\32W\250\377#]\256\377*]\237\377\0\24+2\0\1\0" \ -+ "\0\10\0\0\0\7\1\5\0\0\2\0\0\0\6\0\0\0\0\11\0\210\0\0\0\0\10\16'Og\40" \ -+ "[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377" \ -+ "\34]\255\377\370\37^\256\377\20\34]\257\377\"a\256\377\26\\\242\377\30" \ -+ "^\300\377(]\255\377\17&FX\0\5\0\0\1\0\21\14\15\0\2\6\3\0\5\0\0\6\15\6" \ -+ "\0\2\2\0\25\0\0\22\2012\13\260\351a%\377\377U\14\377\230\361]\27\377" \ -+ "\10\362\\\35\377\370Z\23\377\371\\\25\377\337d)\377s1\16\233\16\0\0\6" \ -+ "\0\1\4\0\0\1\11\0\300\0\0\0\0\10\3\0\0\0\0\1\4\0\0\1\5\0\1\0\0\0\10\1" \ -+ "\0\0\1\1\1\0\0\5\26\22#Ll\220\230\36\\\257\377\10\"]\271\377\"Z\261\377" \ -+ "\"\\\260\377\31]\262\377\26a\262\377%d\247\377\33>f\207\0\1\23\17\212" \ -+ "\0\0\0\0\202\1\1\1\0\202\0\0\0\0\3\3\3\3\0\11\11\11\0\32^\257\360\307" \ -+ "\32^\257\377\3\37Y\255\377\40Z\256\377![\257\377\203\"[\262\377\2!Z\261" \ -+ "\377!Z\263\377\250\36\\\257\377\10\36a\260\377&Y\232\377\1\36H[\0\0\23" \ -+ "\17\6\1\5\0\4\0\0\0\4\4\2\0\0\2\2\0\210\0\0\0\0\10\3\0\0\0\0\12!#(R\214" \ -+ "\377\40]\255\377\31]\260\377\32]\254\377\32[\253\377\35^\260\377\270" \ -+ "\36\\\257\377\210#]\256\377\210\"\\\255\377\1\37]\252\377\204\37\\\254" \ -+ "\377\203\37\\\255\377\202#Y\257\377\3\"Z\257\377\"[\262\377\40\\\262" \ -+ "\377\202\36\\\261\377\12\34]\261\377%X\247\377!Z\253\377\34]\261\377" \ -+ "\34`\265\377\32`\266\377\33]\261\377\37\\\255\377#Z\252\377\34]\261\377" \ -+ "\202\33\\\260\377\5\34^\264\377\33_\264\377\32^\263\377\33\\\256\377" \ -+ "\37^\255\377\230\37^\256\377\10\32[\255\377\24""3l\220\0\3\0\0\0\1\0" \ -+ "\0\2\4\1\0\1\0\5\0\4\1\0\0\2\0\6\0\210\0\0\0\0\7\0+\\x(Y\233\377)`\263" \ -+ "\377\33X\263\377\34^\265\377\36_\263\377!_\262\377\321!Z\261\377\20!" \ -+ "Z\247\377\"]\251\377$_\253\377!_\252\377\37^\253\377\34^\254\377\34_" \ -+ "\260\377\35_\263\377\26`\271\377\23_\263\377\20]\253\377\31^\251\377" \ -+ "\"`\253\377\40[\251\377\33Z\252\377\36b\265\377\230\37^\256\377\20\30" \ -+ "[\262\377\"b\254\377\37^\253\377\35_\255\377\37Z\264\377\24@}\252\0\4" \ -+ "\7\0\11\0\0\0\2\2\0\0\0\2\0\0\0\4\5\0\0\2\5\0\16\0\0\6Z'\22u\245K(\342" \ -+ "\275J\33\377\230\275J\24\377\10\277H&\377\303D\33\377\277B\24\377\250" \ -+ "E\36\350[!\13x\23\0\0\17\7\0\0\0\4\0\0\0\300\0\0\0\0\10\4\0\0\0\0\0\2" \ -+ "\0\0\1\5\0\0\0\2\0\4\0\0\0\3\2\0\0\0\5\20\11\21""1J^\230\33I\207\271" \ -+ "\10\31G\205\266\33E\177\255\37I\203\263\31K\210\271\23J\212\274\30G}" \ -+ "\252\22*La\0\1\22\14\212\0\0\0\0\202\1\1\1\0\202\0\0\0\0\2\2\2\2\0\6" \ -+ "\6\6\0\310\31""9l\220\10\16r\230\23Au\236\26Dx\241\30Fz\244" \ -+ "\32G~\252\33H\177\255\34I\200\255\250\33I\207\271\4\36I|\247#Cl\220\7" \ -+ "\27""1;\0\0\11\0\202\4\0\0\0\2\2\2\0\0\0\2\5\0\210\0\0\0\0\10\0\1\0\0" \ -+ "\0\12\34\32\36@p\225\33I\207\377\33K\211\274\36K\202\260\36I~\252\35" \ -+ "G\201\260\270\33I\207\271\210\27M\225\312\210\30N\226\315\1\27P\227\315" \ -+ "\202\30Q\230\320\5\31Q\233\323\32R\234\326\33S\235\326\33S\236\331\34" \ -+ "T\237\377\202\36]\244\377\26\34\\\244\377\32\\\250\377\33]\253\377\33" \ -+ "^\257\377\33_\262\377\34`\263\377\37a\267\377\37c\266\377\35a\262\377" \ -+ "\31^\254\377\31\\\252\377\36]\254\377$]\254\377&[\253\377\37Y\252\377" \ -+ "%_\260\377\"_\257\377\34Y\252\377\35\\\254\377\36_\261\377\34]\257\377" \ -+ "\33\\\256\377\230\37^\256\377\10\35^\260\377\33=z\244\0\5\7\0\0\2\0\0" \ -+ "\1\3\0\0\1\0\5\0\3\0\0\0\1\0\5\0\210\0\0\0\0\10\1#>L\36Ai\215\31Bv\236" \ -+ "\21\77z\244\23D|\247\23Bv\236\26Dx\241\30Ay\244\320\26Dx\241\202\32C" \ -+ "\205\266\16\31B\204\263\26B\203\263\26C\206\266\31H\214\277\40P\230\320" \ -+ "%U\237\377*]\236\377(`\253\377#a\270\377\33]\264\377\32\\\260\377\40" \ -+ "b\260\377\"a\260\377\33Y\254\377\230\37^\256\377\20\33]\264\377\40`\250" \ -+ "\377\36]\252\377\34]\255\377\40^\265\377\34H\207\271\0\6\15\6\10\0\0" \ -+ "\0\4\0\0\0\3\3\0\0\2\6\7\0\0\3\7\0\0\0\4\0\7\0\0\0\17\0\0\11\22\0\0\14" \ -+ "\230\0\0\4\0\10\7\0\0\0\13\0\0\3\20\0\0\11\21\7\0\14\1\3\0\0\0\3\7\0" \ -+ "\0\5\6\0\0\4\0\0\300\0\0\0\0\4\10\1\0\0\0\1\3\0\0\3\11\0\0\4\7\0\202" \ -+ "\3\0\0\0\2\0\1\5\0\0\12\27\25\230\0\3\2\0\10\0\7\10\0\0\3\2\0\0\1\0\0" \ -+ "\0\3\5\0\0\3\14\3\0\5\16\6\6\2\1\0\16\0\0\6\210\0\0\0\0\204\1\1\1\0\203" \ -+ "\0\0\0\0\1\2\2\2\0\310\0\0\4\0\202\0\3\0\0\1\0\4\1\0\203\0\5\4\0\2\0" \ -+ "\4\3\0\0\2\4\0\250\0\3\2\0\10\0\2\23\17\0\5\22\14\0\0\7\0\3\0\0\0\5\0" \ -+ "\0\0\4\0\0\0\1\1\1\0\0\1\4\0\210\0\0\0\0\10\11\0\0\0\1\0\0\0\2\7\32\27" \ -+ "\0\0\27\25\0\0\22\14\0\0\11\0\0\0\12\0\0\0\14\3\270\0\3\2\0\210\0\4\7" \ -+ "\0\210\0\3\6\0\6\0\3\3\0\0\2\5\0\0\3\6\0\0\4\7\0\0\5\10\0\1\6\12\0\202" \ -+ "\2\7\13\3\30\0\14\32\27\0\16\34\32\0\21$&\1\27.5\7\37;I\17&FX\26.Rj\32" \ -+ "2Xr\20I~\252\33R\213\377#Z\233\377&\\\246\377&_\256\377%b\262\377\36" \ -+ "`\256\377\24Y\244\377!Z\251\377\"]\253\377#^\254\377\40[\251\377\37Z" \ -+ "\250\377\40]\255\377\37`\262\377\31]\262\377\230\37^\256\377\10\36a\260" \ -+ "\377%K\214\277\0\15\32\27\0\2\0\0\0\1\0\0\2\0\5\0\1\1\0\0\1\0\4\0\210" \ -+ "\0\0\0\0\10\0\2\0\0\2\5\0\0\0\3\2\0\0\3\4\0\0\7\5\0\0\4\0\0\0\3\3\0\0" \ -+ "\1\6\0\320\0\4\3\0\202\0\1\5\0\16\0\2\4\0\0\3\4\0\0\3\5\0\0\5\11\0\0" \ -+ "\12\22\14\1\16\27\25\17%La\32""8l\377'O\227\377(^\264\377\36`\267\377" \ -+ "\27[\260\377\32[\253\377!_\254\377\230\37^\256\377\14\34^\265\377\36" \ -+ "^\246\377\36]\254\377\31\\\253\377!_\266\377&S\226\377\0\16\32\27\6\0" \ -+ "\0\0\0\4\0\0\0\3\0\0\0\1\0\0\0\0\5\0\202\0\1\7\0\2\0\2\5\0\0\3\4\0\230" \ -+ "\4\0\0\0\10\0\0\11\0\0\1\4\0\0\3\0\0\0\3\2\0\0\2\5\0\0\4\10\0\0\1\0\0" \ -+ "\0\2\0\0\300\0\0\0\0\10\6\0\0\0\0\0\0\0\0\1\7\0\0\2\6\0\1\0\0\0\5\0\0" \ -+ "\0\3\2\0\0\0\1\4\0\230\1\0\2\0\10\0\2\3\0\2\1\0\0\6\0\0\0\3\0\0\0\0\0" \ -+ "\7\0\0\0\11\0\3\0\5\0\13\0\1\3\210\0\0\0\0\1\1\1\1\0\207\0\0\0\0\310" \ -+ "\3\0\0\0\203\1\0\4\0\203\1\0\5\0\202\1\0\7\0\250\1\0\2\0\202\1\0\0\0" \ -+ "\2\3\2\0\0\2\1\0\0\202\1\0\0\0\202\0\0\2\0\210\0\0\0\0\10\0\1\0\0\0\0" \ -+ "\2\0\0\0\11\0\0\0\7\0\2\1\0\0\3\0\0\0\7\2\0\0\4\0\0\0\270\1\0\2\0\224" \ -+ "\0\0\0\0\204\0\0\2\0\2\7\3\0\0\6\2\0\0\202\3\0\0\0\202\1\0\0\0\16\1\0" \ -+ "\2\0\0\0\4\0\0\4\14\3\0\12\30\25\1\25""08\16&Rj\32Az\244!X\233\377\32" \ -+ "b\256\377\22c\262\377\"a\260\377\27X\252\377\32]\256\377\"a\261\377\202" \ -+ "\40[\251\377\2!`\260\377\32^\263\377\230\37^\256\377\10\35`\256\377+" \ -+ "W\240\377\3\30""5@\0\2\0\0\0\0\0\0\3\1\6\0\1\0\0\0\0\0\2\0\210\0\0\0" \ -+ "\0\2\7\0\12\0\5\0\11\0\203\1\0\5\0\3\3\0\4\0\7\0\10\0\7\0\11\0\320\1" \ -+ "\0\5\0\20\4\0\0\0\5\1\0\0\4\3\0\0\4\4\0\0\2\3\0\0\1\2\0\0\1\1\1\0\0\1" \ -+ "\3\0\0\0\20\11\0\6\33\32\7\34;I\30=q\230$X\241\377!_\264\377\31[\257" \ -+ "\377\34]\255\377\230\37^\256\377\12\35]\264\377\35]\245\377\37^\256\377" \ -+ "\30[\254\377\36_\263\377*Y\237\377\1\26)/\3\0\0\0\0\2\3\0\0\1\2\0\202" \ -+ "\0\1\3\0\4\0\0\2\0\0\1\5\0\0\2\5\0\0\1\4\0\230\1\3\0\0\10\2\0\1\0\0\2" \ -+ "\0\0\0\3\0\0\0\3\2\0\0\0\5\0\3\2\10\0\1\0\0\0\3\3\0\0\300\0\0\0\0\2\4" \ -+ "\0\0\0\1\1\1\0\202\0\1\5\0\4\3\3\3\0\3\0\0\0\6\1\0\0\3\0\0\0\230\1\0" \ -+ "\2\0\6\0\2\0\0\1\0\0\0\6\2\0\0\7\3\0\0\6\5\0\0\1\3\0\0\202\0\1\0\0\215" \ -+ "\0\0\0\0\1\1\1\1\0\202\0\0\0\0\310\0\1\0\0\202\1\0\0\0\202\2\1\0\0\204" \ -+ "\3\2\0\0\250\1\0\2\0\1\4\5\0\0\202\0\1\0\0\202\0\1\2\0\3\0\0\2\0\1\1" \ -+ "\3\0\5\3\4\0\210\0\0\0\0\10\0\2\0\0\1\2\4\0\0\0\4\0\2\0\1\0\7\10\2\0" \ -+ "\0\1\0\0\0\2\0\0\0\1\0\0\270\1\0\2\0\220\0\0\0\0\203\2\0\1\0\1\1\0\0" \ -+ "\0\204\1\0\2\0\1\1\0\0\0\204\0\0\0\0\23\1\1\0\0\2\2\0\0\1\3\0\0\7\0\0" \ -+ "\0\10\0\0\0\7\0\0\0\0\1\0\0\0\4\17\11\0\30:F\20=v\236&\\\244\377\40b" \ -+ "\260\377\31`\262\377\26`\267\377\30`\265\377\36]\255\377\40[\251\377" \ -+ "\37\\\255\377\34^\264\377\230\37^\256\377\10\32_\252\377)\\\253\377\13" \ -+ "&Qj\0\4\0\0\1\0\0\0\2\2\4\0\0\0\0\0\1\1\1\0\210\0\0\0\0\6\3\0\7\0\0\0" \ -+ "\2\0\0\1\0\0\1\2\0\0\1\0\0\0\3\0\0\0\202\6\0\0\0\322\2\1\0\0\205\1\0" \ -+ "\0\0\11\0\0\0\0\7\2\0\0\1\0\0\0\0\2\0\0\0\14\26\22\15.Qj%U\223\307'd" \ -+ "\267\377\25\\\270\377\230\37^\256\377\3\34]\261\377\37]\246\377!]\263" \ -+ "\377\202\32\\\260\377\6)Z\246\377\6\36""8C\0\0\0\0\5\0\10\0\3\0\5\0\3" \ -+ "\0\2\0\202\1\0\0\0\3\3\2\0\0\6\5\1\0\3\0\0\0\230\1\0\4\0\10\3\0\0\0\2" \ -+ "\1\0\0\1\1\0\0\1\0\2\0\3\0\5\0\6\0\7\0\7\0\7\0\7\0\5\0\300\0\0\0\0\10" \ -+ "\3\2\0\0\5\5\5\0\0\1\3\0\0\0\2\0\4\4\4\0\1\0\0\0\3\0\0\0\5\1\0\0\230" \ -+ "\3\0\0\0\10\3\0\13\3\5\0\11\0\6\0\4\0\6\0\2\0\3\0\2\0\1\0\4\0\1\0\5\0" \ -+ "\0\0\4\0\215\0\0\0\0\202\1\1\1\0\1\0\0\0\0\310\0\2\0\0\260\3\0\0\0\10" \ -+ "\0\1\0\0\0\2\2\0\0\3\6\0\0\5\10\0\0\4\7\0\2\3\7\0\2\0\3\0\3\0\0\0\210" \ -+ "\0\0\0\0\5\0\3\0\0\7\3\0\0\6\0\0\0\4\0\0\0\1\1\0\0\202\0\2\0\0\1\2\2" \ -+ "\2\0\270\3\0\0\0\210\0\1\0\0\210\0\2\0\0\207\0\1\0\0\4\0\0\2\0\1\0\5" \ -+ "\0\1\0\4\0\1\0\2\0\205\1\0\0\0\20\3\1\6\0\3\0\0\0\6\0\0\0\10\0\0\0\6" \ -+ "\0\0\0\0\0\4\0\1\10\32\27\13\25""08\32J\212\274#a\252\377\31c\270\377" \ -+ "\20Z\261\377\33^\257\377#^\254\377\34Y\251\377\34]\261\377\230\37^\256" \ -+ "\377\10\31_\247\377%]\264\377\27""7r\230\0\4\2\0\1\0\0\0\2\2\2\0\0\0" \ -+ "\2\0\1\1\0\0\210\0\0\0\0\2\1\0\7\0\1\0\2\0\203\3\0\0\0\3\4\0\2\0\5\0" \ -+ "\1\0\4\0\0\0\320\3\0\0\0\202\3\0\5\0\204\3\0\2\0\12\3\0\4\0\4\0\6\0\7" \ -+ "\5\0\0\1\1\0\0\2\4\0\0\0\2\0\0\0\3\4\0\22-J^&X\237\377\34`\305\377\230" \ -+ "\37^\256\377\16\34Z\257\377!`\247\377\40\\\264\377\32^\263\377\30\\\255" \ -+ "\377&Y\250\377\14&G[\0\1\0\0\0\0\5\0\0\1\4\0\0\1\2\0\0\0\0\0\1\0\0\0" \ -+ "\6\0\0\0\202\10\0\0\0\230\0\1\0\0\10\1\1\0\0\4\1\0\0\4\0\0\0\1\1\0\0" \ -+ "\0\3\0\0\0\4\0\0\0\5\0\0\0\4\0\0\300\0\0\0\0\10\0\0\2\0\0\0\0\0\3\3\3" \ -+ "\0\1\0\0\0\3\3\3\0\0\0\0\0\1\1\1\0\3\3\3\0\230\0\3\0\0\1\0\1\4\0\202" \ -+ "\0\1\5\0\2\0\2\5\0\0\2\4\0\202\0\3\5\0\1\0\3\4\0\211\0\0\0\0\202\1\1" \ -+ "\1\0\202\0\0\0\0\202\1\1\1\0\1\0\0\0\0\310\0\0\4\0\205\0\3\0\0\1\0\3" \ -+ "\2\0\202\0\4\3\0\250\0\3\0\0\2\0\2\3\0\1\2\4\0\202\0\0\2\0\202\0\0\0" \ -+ "\0\202\1\0\0\0\210\0\0\0\0\10\0\3\5\0\0\1\4\0\0\0\4\0\0\2\5\0\0\4\6\0" \ -+ "\0\4\7\0\0\3\12\0\0\2\13\3\270\0\3\0\0\220\1\0\4\0\202\3\0\2\0\202\3" \ -+ "\0\4\0\1\4\0\5\0\203\4\0\6\0\202\0\1\4\0\202\0\2\5\0\1\0\3\6\0\203\0" \ -+ "\2\5\0\4\0\3\5\0\0\1\2\0\0\0\2\0\6\0\2\0\203\6\0\0\0\11\5\0\0\0\12\34" \ -+ "@O\36Cx\377\36\\\245\377\26]\257\377\33\\\256\377#^\254\377![\254\377" \ -+ "\33\\\260\377\230\37^\256\377\10\30a\246\377\37\\\267\377\"G\215\277" \ -+ "\0\6\6\0\3\0\0\0\1\1\1\0\0\0\5\0\1\2\0\0\210\0\0\0\0\10\0\2\5\0\0\3\0" \ -+ "\0\0\4\0\0\0\2\0\0\0\1\5\0\0\2\10\0\0\4\3\0\0\6\0\0\320\0\3\0\0\6\0\3" \ -+ "\2\0\0\3\0\0\0\4\0\0\0\6\0\0\0\5\0\0\0\4\0\0\202\0\2\0\0\10\3\0\0\0\0" \ -+ "\1\0\0\0\2\3\0\3\3\0\0\4\0\0\0\2\12\25\22\20""5i\215\36\\\257\377\230" \ -+ "\37^\256\377\20\35[\256\377$`\250\377\34W\261\377\34`\265\377\27^\256" \ -+ "\377%Y\254\377\23/Vo\0\2\0\0\2\1\0\0\3\2\0\0\0\0\0\0\0\0\2\0\1\2\4\0" \ -+ "\0\1\4\0\0\2\4\0\0\6\7\0\230\1\1\0\0\10\0\3\13\3\0\4\15\6\3\0\5\0\4\0" \ -+ "\2\0\1\0\0\0\0\1\0\0\4\4\6\0\3\0\4\0\300\0\0\0\0\10\0\2\6\0\0\0\2\0\10" \ -+ "\7\5\0\3\0\0\0\1\0\0\0\0\1\3\0\0\1\4\0\0\1\5\0\230\3\0\4\0\5\7\1\0\0" \ -+ "\4\0\0\0\3\2\0\0\4\3\0\0\3\0\0\0\203\4\0\0\0\211\0\0\0\0\202\2\2\2\0" \ -+ "\203\0\0\0\0\2\1\1\1\0\0\0\0\0\310\0\0\2\0\203\4\0\1\0\1\4\0\3\0\203" \ -+ "\3\0\2\0\251\3\0\4\0\10\1\0\0\0\7\3\2\0\3\0\0\0\5\0\0\0\3\0\0\0\1\0\0" \ -+ "\0\4\4\4\0\1\1\3\0\210\0\0\0\0\10\0\1\0\0\3\0\0\0\7\0\0\0\6\1\0\0\0\1" \ -+ "\0\0\1\1\0\0\6\0\0\0\13\0\0\3\270\3\0\4\0\210\0\1\0\0\210\0\2\0\0\203" \ -+ "\0\1\0\0\205\0\0\0\0\202\0\2\0\0\202\0\1\0\0\202\2\1\0\0\2\2\0\1\0\2" \ -+ "\0\3\0\202\0\0\2\0\202\0\0\4\0\14\0\1\5\0\1\2\6\0\0\2\5\0\0\2\2\0\4\0" \ -+ "\13\3\12\34@O\40P\220\304$f\264\377\34[\252\377!Z\251\377&`\261\377\33" \ -+ "\\\260\377\230\37^\256\377\10\31b\247\377\33Z\271\377*Q\234\326\0\10" \ -+ "\10\0\3\0\0\0\1\1\0\0\0\0\5\0\1\2\0\0\210\0\0\0\0\10\5\0\4\0\3\0\0\0" \ -+ "\4\0\0\0\4\0\2\0\3\0\11\0\1\0\11\0\0\0\2\0\0\3\0\0\320\4\0\3\0\2\1\0" \ -+ "\4\0\3\0\2\0\203\3\0\0\0\1\5\0\0\0\202\5\0\1\0\10\4\0\5\0\0\3\14\3\0" \ -+ "\3\11\0\1\0\2\0\13\0\0\3\3\0\11\0\0\30=L!Y\224\377\230\37^\256\377\10" \ -+ "\36[\256\377%a\251\377\31T\260\377\35a\266\377\30_\255\377$[\256\377" \ -+ "\30""5]{\0\4\3\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\223\0\0\0\0\10\0" \ -+ "\0\13\3\2\7\0\0\22)I^*^\261\377\27_\261\377\32_\254\377\37]\262\377\35" \ -+ "\\\253\377\230\37^\256\377\7\40]\270\377\32^\257\377\"[\240\334\0\26" \ -+ ",2\1\0\4\0\4\0\0\0\2\0\5\0\351\0\0\0\0\10\0\4\0\0\1\0\5\0\0\0\4\0\0\2" \ -+ "\1\0\4\0\3\0\4\1\0\0\0\5\13\3\31Er\230\230\37^\256\377\10\34]\255\377" \ -+ "\34^\254\377\37\\\257\377\"\\\256\377\33^\254\377\34\\\263\377\32:s\233" \ -+ "\0\1\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\223\0\0\0\0\10\1\0\7\0\0" \ -+ "\2\0\0\1\25-5\33L\221\377\35a\262\377\34_\260\377\36\\\261\377\34[\252" \ -+ "\377\230\37^\256\377\7\36[\266\377\32^\257\377#\\\243\377\2\34""5@\1" \ -+ "\0\5\0\5\1\0\0\0\0\4\0\351\0\0\0\0\10\0\3\0\0\2\1\7\0\0\0\4\0\0\1\2\0" \ -+ "\3\0\0\0\7\0\0\0\0\4\7\0\16""4[x\230\37^\256\377\10\34]\255\377\34^\254" \ -+ "\377\37\\\257\377\"\\\256\377\33^\254\377\35]\264\377\32:s\233\0\1\0" \ -+ "\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0\223\0\0\0\0\10\2\0\3\0\1\0\0\0" \ -+ "\0\3\14\3\13""3d\204%_\261\377\34\\\264\377\37\\\257\377\40[\251\377" \ -+ "\230\37^\256\377\7\35[\262\377\27^\256\377$^\247\377\12$EX\1\2\6\0\4" \ -+ "\1\0\0\0\0\4\0\351\0\0\0\0\10\0\2\0\0\2\1\7\0\0\0\5\0\0\2\2\0\3\0\0\0" \ -+ "\13\1\0\3\0\2\2\0\13%H[\230\37^\256\377\10\34]\255\377\34^\254\377\37" \ -+ "\\\257\377\"\\\256\377\34_\255\377\35]\264\377\33;t\233\0\1\0\0\377\0" \ -+ "\0\0\0\377\0\0\0\0\377\0\0\0\0\223\0\0\0\0\10\4\0\0\0\3\0\0\0\0\3\0\0" \ -+ "\2!=L(Y\246\377\33X\265\377\36\\\257\377#\\\253\377\230\37^\256\377\7" \ -+ "\35[\260\377\30_\257\377#^\252\377\23.Yu\0\2\3\0\2\2\0\0\0\0\5\0\351" \ -+ "\0\0\0\0\10\0\1\0\0\1\0\5\0\0\0\5\0\0\1\4\0\3\0\0\0\12\0\0\0\0\1\0\0" \ -+ "\23)Nd\230\37^\256\377\10\35^\256\377\34^\254\377\37\\\257\377\"\\\256" \ -+ "\377\34_\255\377\36^\265\377\33;t\233\0\2\0\0\377\0\0\0\0\377\0\0\0\0" \ -+ "\377\0\0\0\0\223\0\0\0\0\10\1\0\0\0\6\2\1\0\0\2\0\0\0\21\34\32%P\224" \ -+ "\312\35Z\267\377\35^\262\377$\\\251\377\230\37^\256\377\10\37\\\255\377" \ -+ "\30_\257\377!^\256\377\32""8l\220\0\3\2\0\1\2\0\0\0\0\5\0\2\1\0\0\350" \ -+ "\0\0\0\0\10\1\2\0\0\1\0\5\0\1\2\6\0\0\2\2\0\2\0\3\0\7\0\0\0\0\1\11\0" \ -+ "\37;j\215\230\37^\256\377\10\35^\256\377\34^\254\377\37\\\257\377#]\257" \ -+ "\377\34_\255\377\36^\265\377\33;t\233\0\1\0\0\377\0\0\0\0\377\0\0\0\0" \ -+ "\377\0\0\0\0\224\0\0\0\0\7\5\0\4\0\3\0\0\0\0\3\5\0\35Ey\244\37_\267\377" \ -+ "\33_\264\377!Z\247\377\230\37^\256\377\10\40^\253\377\30_\255\377\37" \ -+ "]\260\377\"@~\252\0\3\2\0\0\2\0\0\0\0\5\0\3\2\0\0\350\0\0\0\0\10\0\2" \ -+ "\0\0\1\0\5\0\2\2\4\0\0\1\0\0\0\0\4\0\1\0\2\0\0\20%)!M\216\301\230\37" \ -+ "^\256\377\10\35^\256\377\34^\254\377\37\\\257\377\"\\\256\377\34_\255" \ -+ "\377\35]\264\377\32:s\233\0\1\0\0\377\0\0\0\0\377\0\0\0\0\377\0\0\0\0" \ -+ "\223\0\0\0\0\10\0\1\0\0\1\0\4\0\6\0\0\0\0\2\2\0\26""9a\201\36a\262\377" \ -+ "\25\\\264\377\"]\251\377\230\37^\256\377\10!_\252\377\26_\254\377\33" \ -+ "\\\260\377&G\214\277\0\4\0\0\0\3\0\0\0\0\5\0\2\1\0\0\350\0\0\0\0\10\0" \ -+ "\1\0\0\1\0\5\0\1\0\0\0\0\1\0\0\0\0\4\0\0\7\21\14\17""1Vo\34Z\257\377" \ -+ "\230\37^\256\377\10\36_\257\377\35_\255\377\40]\260\377\"\\\256\377\33" \ -+ "^\254\377\34\\\263\377\31""9r\230\0\1\0\0\377\0\0\0\0\377\0\0\0\0\377" \ -+ "\0\0\0\0\223\0\0\0\0\10\0\3\4\0\1\0\7\0\12\1\4\0\0\0\2\0\16""2Rj\32]" \ -+ "\253\377\20Z\263\377%a\252\377\230\37^\256\377\10\40^\247\377\25^\253" \ -+ "\377\33[\262\377*J\223\307\0\5\0\0\0\4\0\0\0\0\5\0\1\0\0\0\350\0\0\0" \ -+ "\0\10\0\1\2\0\6\1\10\0\3\0\0\0\2\3\0\0\0\0\5\0\7\23!#$P}\377\27c\303" \ -+ "\377\230\37^\256\377\20\36_\257\377\35_\255\377\40]\260\377\"\\\256\377" \ -+ "\33^\254\377\33[\262\377\30""8q\230\0\1\0\0\4\0\0\0\0\4\2\0\0\1\11\0" \ -+ "\0\0\4\0\2\2\0\0\0\1\4\0\0\0\11\0\6\0\0\0\377\1\0\0\0\11\1\0\0\0\0\2" \ -+ "\0\0\0\4\0\0\0\2\4\0\0\0\2\0\0\3\2\0\0\6\1\0\0\3\2\0\3\0\5\0\270\0\0" \ -+ "\0\0\14\0\2\0\0\0\3\4\0\0\0\2\0\1\0\0\0\6\3\0\0\5\2\0\0\3\0\0\0\2\0\10" \ -+ "\0\0\5\0\0\0\1\0\0\0\0\2\0\1\0\0\0\202\3\0\0\0\2\1\0\0\0\1\1\1\0\241" \ -+ "\1\0\0\0\17\1\1\0\0\0\1\3\0\0\0\5\0\0\1\5\0\0\1\4\0\0\1\2\0\0\3\0\0\7" \ -+ "\0\7\0\6\0\2\0\3\0\0\0\3\3\3\0\2\1\7\0\0\0\7\0\1\0\2\0\2\1\0\0\240\0" \ -+ "\0\0\0\5\0\2\5\0\0\6\0\0\0\0\7\0\0\1\0\0\0\7\0\0\202\0\3\0\0\1\0\1\0" \ -+ "\0\230\1\0\0\0\5\6\0\0\0\3\0\0\0\1\0\5\0\0\0\4\0\1\0\2\0\202\3\0\0\0" \ -+ "\1\4\0\2\0\300\0\0\0\0\10\10\0\0\0\0\1\4\0\0\4\3\0\0\2\5\0\21\35""5@" \ -+ "\33^\254\377\36]\254\377\40]\255\377\230\37^\256\377\10\36]\252\377\33" \ -+ "\\\256\377\36\\\257\377\40V\234\326\2\5\24\17\1\0\0\0\0\0\0\0\0\2\5\0" \ -+ "\210\0\0\0\0\3\1\0\2\0\0\0\11\0\0\0\5\0\202\3\0\0\0\3\0\1\5\0\0\3\6\0" \ -+ "\6\0\0\0\320\1\0\0\0\2\1\1\0\0\0\0\0\0\203\0\1\0\0\203\0\2\0\0\10\3\0" \ -+ "\2\0\7\1\1\0\4\0\0\0\0\1\4\0\12\34""2;!K{\247#c\255\377\23`\274\377\230" \ -+ "\37^\256\377\20\40]\256\377\37]\262\377\34Y\251\377\"`\251\377\35^\256" \ -+ "\377\"[\250\377\6\"I^\5\2\0\0\5\0\4\0\0\4\2\0\0\1\7\0\4\0\1\0\5\1\0\0" \ -+ "\0\1\2\0\0\0\11\0\7\0\0\0\377\1\0\0\0\11\1\0\0\0\6\0\0\0\1\0\0\0\6\2" \ -+ "\3\0\12\0\3\0\4\0\0\0\0\1\0\0\3\0\2\0\21\0\3\14\270\0\0\0\0\3\0\1\0\0" \ -+ "\1\2\4\0\2\3\7\0\203\0\1\0\0\6\1\2\4\0\1\1\13\3\3\0\0\0\5\0\6\0\7\1\15" \ -+ "\6\3\0\11\0\244\1\0\0\0\202\0\1\0\0\4\0\0\0\0\0\0\2\0\2\2\2\0\3\3\3\0" \ -+ "\202\1\0\0\0\2\3\5\4\0\0\3\0\0\202\0\2\0\0\4\0\1\0\0\2\0\3\0\3\1\2\0" \ -+ "\3\2\0\0\240\0\0\0\0\10\6\0\2\0\6\0\0\0\4\0\13\3\4\0\5\0\7\3\0\0\6\0" \ -+ "\0\0\12\0\1\0\10\0\1\0\230\1\0\0\0\2\3\0\0\0\1\0\0\0\205\0\0\0\0\1\0" \ -+ "\0\2\0\300\0\0\0\0\10\6\0\0\0\0\1\4\0\0\4\3\0\0\1\2\0\16\32""08\33]\253" \ -+ "\377\37^\255\377\40]\255\377\230\37^\256\377\5\36]\252\377\33\\\256\377" \ -+ "\37]\260\377\37X\235\377\2\10\26\22\202\0\0\0\0\1\0\2\3\0\210\0\0\0\0" \ -+ "\3\6\1\0\0\0\2\7\0\0\1\4\0\202\3\0\0\0\3\0\1\4\0\0\1\2\0\6\0\0\0\320" \ -+ "\1\0\0\0\204\6\0\4\0\204\4\0\4\0\10\0\2\0\0\0\2\5\0\0\11!#\12)Wr\40L" \ -+ "\213\274']\247\377\37^\255\377\27Z\251\377\230\37^\256\377\20\40]\260" \ -+ "\377\37\\\255\377\36]\254\377\35`\257\377\32]\256\377'\\\242\377\0\25" \ -+ "5@\3\0\0\0\3\0\2\0\0\2\0\0\0\1\4\0\7\0\0\0\4\0\0\0\0\1\7\0\0\2\25\22" \ -+ "\0\0\5\0\377\0\0\2\0\1\0\0\2\0\202\0\2\0\0\6\0\2\3\0\2\0\1\0\0\0\4\0" \ -+ "\0\3\5\0\1\0\0\0\17\0\0\11\270\0\0\0\0\20\3\2\0\0\0\0\2\0\0\0\5\0\1\5" \ -+ "\10\0\0\1\0\0\0\2\0\0\1\2\4\0\0\0\7\0\12\3\0\0\4\0\0\0\0\0\4\0\0\1\11" \ -+ "\0\0\3\7\0\0\4\4\0\0\3\4\0\0\5\10\0\240\0\0\2\0\4\0\3\6\0\0\1\4\0\0\0" \ -+ "\2\0\1\0\2\0\202\3\0\2\0\11\1\0\0\0\3\1\2\0\0\4\16\6\0\4\5\0\0\5\0\0" \ -+ "\1\3\0\0\2\1\0\0\4\0\1\0\1\0\0\0\241\0\0\0\0\10\10\0\0\0\4\0\0\0\5\2" \ -+ "\23\17\0\0\14\3\0\3\0\0\0\0\4\0\1\0\4\0\3\0\4\0\230\0\0\2\0\2\0\3\12" \ -+ "\0\0\1\4\0\202\0\1\0\0\2\1\3\0\0\0\3\2\0\202\0\2\1\0\300\0\0\0\0\10\6" \ -+ "\0\0\0\0\1\4\0\0\3\3\0\0\0\2\0\12\25)/\32\\\250\377\37^\255\377\36]\254" \ -+ "\377\230\37^\256\377\5\36^\250\377\33\\\256\377\35^\262\377\40Y\240\377" \ -+ "\5\14\34\32\202\0\0\0\0\1\0\0\2\0\210\0\0\0\0\10\7\0\0\0\2\3\7\0\0\1" \ -+ "\7\0\3\1\2\0\5\1\0\0\0\1\5\0\0\0\5\0\5\0\0\0\320\0\0\2\0\2\0\2\0\0\0" \ -+ "\1\0\0\202\0\2\0\0\2\0\1\0\0\0\2\0\0\202\0\2\2\0\10\0\21\36\35\7&EX\32" \ -+ "D~\252$]\256\377!b\276\377\31\\\265\377\32[\253\377#b\251\377\230\37" \ -+ "^\256\377\20\37]\262\377\40[\251\377\37^\255\377\30^\264\377\31[\257" \ -+ "\377$S\213\377\0\11\35\35\1\0\0\0\4\0\3\0\0\5\1\0\1\2\4\0\6\0\0\0\3\4" \ -+ "\0\0\3\25)/\17(Qj\15&EX\377\13(H[\10\13(H[\13*G[\5(H[\6'H[\12%CU\6'F" \ -+ "X\4+H[\4\33+2\271\0\0\0\0\4\5\1\0\0\1\0\2\0\0\0\5\0\2\2\4\0\202\0\1\0" \ -+ "\0\12\3\2\0\0\4\0\3\0\0\4\0\0\0\10\6\0\7\32)/\15(CU\12,H[\5&EX\6$FX\14" \ -+ "&Ka\240\13(H[\3\15+Md\7%G[\12$G[\202\17'Ka\7\13#G[\11#FX\13(J^\22)Rj" \ -+ "\10\31""5@\0\10\22\14\0\0\2\0\202\3\0\2\0\2\2\0\3\0\0\2\1\0\241\0\0\0" \ -+ "\0\7\0\6\4\0\13!FX\6&Md\7+CU\7(I^\13)Ka\10(Nd\230\13(H[\6\16(Ka\6\30" \ -+ ",2\0\4\6\0\0\1\0\0\0\0\0\0\0\0\2\0\202\0\1\0\0\300\0\0\0\0\10\6\0\0\0" \ -+ "\0\2\5\0\0\3\1\0\0\0\0\0\6\16!#\33Z\247\377\40_\256\377\35\\\254\377" \ -+ "\230\37^\256\377\10\37]\250\377\34]\257\377\36_\263\377\40\\\244\377" \ -+ "\11\21$&\0\0\2\0\0\0\0\0\0\1\0\0\210\0\0\0\0\10\7\20!#\15&DU\5%Ka\16" \ -+ "'FX\21&EX\11%J^\12'I^\22'DU\320\13(H[\20\11*I^\7*H[\4'G[\3%H[\6(Md\17" \ -+ "2Zu\33>f\207$Gq\230&S\227\315)[\244\377&_\256\377\36\\\261\377\27[\260" \ -+ "\377\32^\261\377\34_\256\377\32\\\250\377\230\37^\256\377\20\37]\262" \ -+ "\377!]\246\377\32\\\252\377\30_\273\377\36]\254\377\25""8`~\0\4\15\6" \ -+ "\1\0\0\0\3\0\2\0\0\2\0\0\0\1\0\0\3\0\0\0\0\7\11\0\20""2Wr)Z\237\377'" \ -+ "]\235\377\377\36^\250\377\11\36^\250\377\"X\256\377!Y\260\377%Y\255\377" \ -+ "'X\245\377$]\252\377$`\251\377\25;l\220\0\5\27\25\270\0\0\0\0\20\1\0" \ -+ "\0\0\3\1\4\0\3\0\4\0\3\0\0\0\5\0\0\0\5\2\0\0\3\0\0\0\3\0\5\0\0\20.5\22" \ -+ "3`~*S\223\307(Z\243\377!Y\246\377%]\252\377)^\256\377)Y\255\377\240\36" \ -+ "^\250\377\14\33[\245\377\35\\\251\377\36]\254\377\34[\253\377\35\\\254" \ -+ "\377\40_\256\377!_\252\377\37]\246\377*Aj\215\21\">L\0\5\17\11\0\0\2" \ -+ "\0\202\4\0\3\0\2\1\0\2\0\0\1\0\0\240\0\0\0\0\10\0\0\15\6\0\17#&#J\217" \ -+ "\301!X\250\377#`\243\377\"]\253\377![\254\377\36]\255\377\230\36^\250" \ -+ "\377\10&U\231\377\24""5`~\0\10\25\22\0\0\0\0\1\0\0\0\1\0\4\0\3\0\0\0" \ -+ "\6\0\0\0\300\0\0\0\0\10\4\0\0\0\0\2\5\0\0\3\0\0\1\0\0\0\2\11\33\32\31" \ -+ "Y\243\377\40_\256\377\33\\\254\377\230\37^\256\377\6\37]\246\377\34]" \ -+ "\257\377\35_\265\377\37]\250\377\13\26*/\0\1\4\0\212\0\0\0\0\10\12""0" \ -+ "a\201\37X\233\377\31\\\253\377\37]\252\377\40X\243\377\36\\\251\377\35" \ -+ "\\\251\377\"]\243\377\320\36^\250\377\20\37X\245\377!Z\247\377#\\\253" \ -+ "\377$]\256\377![\257\377\40Y\260\377!Z\263\377\"[\264\377\34X\270\377" \ -+ "\37Z\266\377\40]\260\377!_\254\377!_\252\377!`\255\377\37`\260\377\36" \ -+ "`\264\377\230\37^\256\377\20\36\\\257\377!_\252\377\30Y\251\377\40b\271" \ -+ "\377'X\232\377\0\27/8\0\3\4\0\1\1\3\0\3\1\4\0\1\6\0\0\3\3\1\0\3\0\0\0" \ -+ "\0\3\11\0\10""1_~\37]\262\377\26\\\262\377\377\35^\262\377\11\35^\262" \ -+ "\377\34[\272\377\35\\\275\377#^\272\377\"Z\255\377\34\\\263\377\37`\262" \ -+ "\377\22:k\220\0\2\11\0\270\0\0\0\0\20\0\1\0\0\1\0\2\0\4\0\0\0\6\0\0\0" \ -+ "\4\1\0\0\0\0\2\0\0\2\21\14\7\25""08\31K\220\304%Z\250\377'b\274\377\34" \ -+ "]\271\377\25X\261\377\26\\\261\377\32^\263\377\30Z\261\377\240\35^\262" \ -+ "\377\20\35Z\255\377!a\270\377\36a\272\377\30[\264\377\34^\262\377(a\256" \ -+ "\377!T\225\377\17=x\241\0\17\31\27\0\4\5\0\0\4\0\0\0\2\0\0\7\6\1\0\7" \ -+ "\3\4\0\2\0\1\0\2\2\2\0\240\0\0\0\0\10\7\0\0\0\0\12\27\25&Q\226\377\37" \ -+ "]\262\377\34a\254\377\33]\261\377\33]\263\377\30^\266\377\230\35^\262" \ -+ "\377\10#_\267\377\20""7n\223\0\3\23\17\1\0\0\0\4\0\0\0\6\0\12\0\6\0\4" \ -+ "\0\11\0\0\0\300\0\0\0\0\10\3\0\0\0\0\1\4\0\0\2\0\0\3\0\0\0\0\6\26\22" \ -+ "\30V\237\377\37^\255\377\34]\257\377\230\37^\256\377\6\"^\247\377\34" \ -+ "]\257\377\33^\265\377\36]\252\377\16\32""08\0\1\4\0\212\0\0\0\0\10\3" \ -+ "'Yu$]\244\377\33a\271\377\36^\266\377\40Y\260\377\40^\265\377\33]\263" \ -+ "\377\37^\256\377\320\35^\262\377\202!`\257\377\13\36_\257\377\34]\255" \ -+ "\377\32[\255\377\31[\257\377\32\\\260\377\34^\262\377#b\262\377\37^\256" \ -+ "\377\33Z\252\377\33Y\254\377\36[\256\377\203\37\\\257\377\230\37^\256" \ -+ "\377\20\36]\254\377\37`\262\377\32[\257\377'\\\250\377\"Bq\230\0\2\16" \ -+ "\6\1\1\0\0\0\0\0\0\0\0\5\0\0\2\0\0\4\3\0\0\10\0\0\0\0\3\6\0\14""1^{#" \ -+ "\\\265\377\30[\266\377\377#[\250\377\11#[\250\377\35_\253\377\33\\\254" \ -+ "\377\"]\251\377\37\\\237\377\27Z\250\377\36]\254\377\31L\0\1\17\11\0\1" \ -+ "\0\0\0\2\0\0\1\3\0\0\2\4\0\0\0\1\0\0\1\0\2\0\202\1\0\0\0\240\0\0\0\0" \ -+ "\10\16\2\0\6\0\14\14\3(V\224\377\33\\\256\377\32_\244\377\40^\251\377" \ -+ "\40^\247\377!a\253\377\230#[\250\377\10\37Z\266\377\20""5i\215\0\2\11" \ -+ "\0\10\2\0\0\6\0\0\0\1\0\10\0\0\0\4\0\1\0\0\0\300\0\0\0\0\10\3\0\2\0\0" \ -+ "\1\4\0\0\2\0\0\6\1\0\0\0\3\22\14\31U\236\377\36]\254\377\33^\257\377" \ -+ "\230\37^\256\377\10\"^\246\377\34]\257\377\32]\264\377\34^\254\377\16" \ -+ "\35""4>\0\1\5\0\0\0\0\0\1\0\0\0\210\0\0\0\0\10\14$H[,]\230\377\34]\255" \ -+ "\377#]\257\377%X\247\377%\\\254\377\40[\251\377#]\246\377\320#[\250\377" \ -+ "\3\35Z\253\377\35\\\254\377\36]\255\377\202\37^\256\377\203\35^\256\377" \ -+ "\10\33[\242\377\40`\252\377!`\260\377\37]\262\377\36\\\263\377\37]\262" \ -+ "\377\36\\\257\377\33Z\251\377\230\37^\256\377\20\37]\246\377\33^\267" \ -+ "\377\35]\265\377\"K\211\377\14\34""6@\0\0\4\0\1\0\0\0\0\1\0\0\0\3\14" \ -+ "\3\0\2\0\0\4\1\0\0\14\0\0\3\2\1\0\0\17+Sl'Z\255\377\40\\\264\377\377" \ -+ "\33_\262\377\11\33_\262\377\34a\254\377\31\\\255\377\40_\256\377\"`\253" \ -+ "\377\32]\266\377\33Z\271\377\27""7p\225\1\0\2\0\270\0\0\0\0\20\0\2\0" \ -+ "\0\0\0\0\0\4\0\0\0\1\0\2\0\3\17\33\32\30:]{\"\\\234\377\30`\265\377\33" \ -+ "^\254\377\36_\263\377\"^\266\377#[\262\377\"Y\251\377!Z\247\377\"[\254" \ -+ "\377#\\\263\377\240\33_\262\377\20\37^\256\377\32\\\260\377\31a\266\377" \ -+ "\33`\256\377\14D\201\260\0\31L\0\11\26\22\0\0\5\0\2\0" \ -+ "\3\0\2\0\1\0\0\2\0\0\250\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^" \ -+ "\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256" \ -+ "\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0" \ -+ "\0\0\0\2\0\300\0\0\0\0\10\0\0\2\0\0\2\0\0\3\0\2\0\1\0\0\0\3\1\6\0\33" \ -+ "N\220\304\27`\257\377![\255\377\230\37^\256\377\10\32^\261\377#[\250" \ -+ "\377\36_\263\377\36^\250\377\10%EX\0\0\2\0\2\1\0\0\1\0\0\0\210\0\0\0" \ -+ "\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252" \ -+ "\377\"\\\256\377\34]\255\377\360\37^\256\377\30\35\\\251\377!`\257\377" \ -+ "\37]\260\377\33Y\256\377\35[\262\377\"`\265\377\"_\257\377\32X\243\377" \ -+ ",e\264\377\31F\177\377\0\32""5@\0\2\5\0\4\0\0\0\5\0\0\0\1\0\0\0\0\1\2" \ -+ "\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262" \ -+ "\377\377\37^\256\377\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377" \ -+ "![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\260\0\0\0\0\2" \ -+ "\0\0\14\3\1\2\4\0\202\4\0\0\0\14\1\0\4\0\1\2\6\0\0\1\0\0\0\3\0\0\0\32" \ -+ "/8\27\26Ax\241\"Y\251\377\"_\270\377\35X\264\377\37]\262" \ -+ "\377\40_\256\377\34^\254\377\36\\\257\377!^\261\377$]\254\377#[\245\377" \ -+ "\240\37^\256\377\13!`\243\377\33\\\256\377\37\\\271\377\"U\244\377\23" \ -+ "5b\201\0\16\30\25\0\1\0\0\5\2\0\0\0\3\6\0\0\1\4\0\0\1\2\0\202\0\1\0\0" \ -+ "\3\1\3\0\0\0\0\0\0\0\0\4\0\250\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377" \ -+ "\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^" \ -+ "\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1" \ -+ "\0\0\0\0\0\2\0\300\0\0\0\0\10\0\0\2\0\0\2\0\0\3\0\2\0\1\0\0\0\3\1\6\0" \ -+ "\33N\220\304\27`\257\377![\255\377\230\37^\256\377\10\33_\262\377$\\" \ -+ "\251\377\34]\261\377\36^\250\377\15*J^\0\0\2\0\1\0\0\0\2\0\1\0\210\0" \ -+ "\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^" \ -+ "\252\377\"\\\256\377\34]\255\377\360\37^\256\377\30\32a\263\377\23Z\254" \ -+ "\377\27[\254\377\40\\\245\377\30E~\252\4\34>L\0\2\10\0\4\0\0\0\4\0\3" \ -+ "\0\4\0\0\0\3\0\0\0\1\0\0\0\1\0\5\0\0\0\13\3\0\0\7\0\1\2\6\0\0\1\0\0\4" \ -+ "\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\377\37" \ -+ "^\256\377\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377![\255\377" \ -+ "\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\260\0\0\0\0\20\3\3\13\3" \ -+ "\0\1\4\0\0\10\20\11\11*Md\32I\215\277$]\266\377#a\270\377\32Y\246\377" \ -+ "\"a\261\377\35^\256\377\32[\253\377\32[\255\377\35[\256\377\37^\256\377" \ -+ "!_\254\377#_\250\377\240\37^\256\377\11\33Y\242\377)b\251\377#P\213\274" \ -+ "\10\"EX\0\2\13\3\0\1\0\0\2\1\0\0\0\0\2\0\0\0\4\0\202\0\1\0\0\5\0\5\1" \ -+ "\0\2\3\5\0\1\0\5\0\1\0\2\0\3\0\0\0\250\0\0\0\0\10\1\1\0\0\0\7\14\3\37" \ -+ "R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0" \ -+ "\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\0\0\2\0\0\2\0\0\3\0\2\0\1\0\0\0" \ -+ "\3\1\6\0\33N\220\304\27`\257\377![\255\377\230\37^\256\377\10\33_\262" \ -+ "\377$\\\251\377\34]\261\377\36^\250\377\16+Ka\0\1\3\0\1\0\0\0\2\0\1\0" \ -+ "\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377" \ -+ "\34^\252\377\"\\\256\377\34]\255\377\360\37^\256\377\30\"]\253\377(]" \ -+ "\237\377!Jx\241\12#AR\0\4\22\14\0\0\5\0\4\0\0\0\11\1\0\0\0\0\5\0\1\0" \ -+ "\0\0\2\1\0\0\4\0\0\0\3\0\2\0\1\0\5\0\0\0\4\0\1\3\2\0\0\1\0\0\4\0\0\0" \ -+ "\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\377\37^\256" \ -+ "\377\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377![\255\377\34" \ -+ "_\255\377\34\\\263\377\31""9r\230\0\2\0\0\260\0\0\0\0\12\6\0\0\0\0\13" \ -+ "\33\32\20""3k\220$X\253\377\"`\265\377\35\\\253\377\37]\252\377\37\\" \ -+ "\254\377\32^\251\377\33^\255\377\202\35_\263\377\4\33^\254\377\32^\251" \ -+ "\377\33\\\254\377\34]\261\377\240\37^\256\377\14\35^\272\377\20A{\247" \ -+ "\0\27%)\0\2\0\0\4\0\0\0\5\0\4\0\0\0\7\0\0\1\10\0\6\1\0\0\5\1\0\0\1\2" \ -+ "\0\0\0\1\0\0\202\0\0\2\0\2\3\0\2\0\6\0\2\0\250\0\0\0\0\10\1\1\0\0\0\7" \ -+ "\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\" \ -+ "\261\377\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0" \ -+ "\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\0\0\2\0\0\2\0\0\3\0\2\0" \ -+ "\1\0\0\0\3\1\6\0\33N\220\304\27`\257\377![\255\377\230\37^\256\377\10" \ -+ "\33_\262\377$\\\251\377\34]\261\377\36^\250\377\17,La\0\1\3\0\1\0\0\0" \ -+ "\2\0\1\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35" \ -+ "]\264\377\34^\252\377\"\\\256\377\34]\255\377\357\37^\256\377\31\37^" \ -+ "\256\360\27={\247\1\35DU\0\3\14\3\4\0\0\0\15\0\0\6\6\0\0\0\0\0\2\0\0" \ -+ "\4\0\0\0\3\11\0\0\1\0\0\2\2\0\0\4\1\0\0\3\0\0\0\2\0\1\0\1\3\0\0\0\2\0" \ -+ "\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262" \ -+ "\377\377\37^\256\377\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377" \ -+ "![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\240\0\0\0\0\5" \ -+ "\3\0\0\0\4\0\0\0\2\0\3\0\1\0\4\0\1\0\5\0\202\0\0\4\0\15\1\2\4\0\0\3\2" \ -+ "\0\0\0\4\0\4\0\2\0\4\0\0\0\0\3\2\0\0\2\2\0\3\0\0\0\12\0\0\0\0\34J^\24" \ -+ "G~\252$]\242\377\35[\256\377\202\33\\\266\377\2\34Z\257\377#`\261\377" \ -+ "\230\37^\256\377\24\40_\246\377\33Z\252\377\35]\267\377\36_\271\377\31" \ -+ "[\257\377\32Y\251\377\40\\\262\377%\\\271\377\40]\260\377\31^\254\377" \ -+ "\30a\256\377\36a\260\377#\\\253\377#X\244\377\34Z\247\377\34`\265\377" \ -+ "\37$8\377\0\6\24\17\0\1\7\0\0\3\2\0\202\0\1\0\0\2\4\2\3\0\1\0\2\0\260" \ -+ "\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256" \ -+ "\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204" \ -+ "\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\4\0" \ -+ "\2\0\0\2\0\0\2\2\2\0\6\0\0\0\0\1\2\0\24P\217\301\40Y\260\377\40\\\262" \ -+ "\377\230\37^\256\377\6\31`\262\377\"[\250\377\35^\262\377\37]\250\377" \ -+ "\20*Ka\1\1\3\0\212\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255" \ -+ "\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\340\37^\256\377" \ -+ "\21\31Z\254\377\36_\261\377\"a\261\377\37^\256\377\35\\\254\377\37^\256" \ -+ "\377!^\256\377\37\\\254\377$]\252\377\35\\\254\377\33^\265\377\35_\266" \ -+ "\377\35U\240\334\34Ax\241\21$DU\5\12\35\35\2\0\1\0\202\3\0\0\0\4\4\0" \ -+ "\0\0\3\0\0\0\1\0\0\0\1\1\1\0\211\0\0\0\0\10\0\1\0\0\4\0\0\0\0\0\4\0\1" \ -+ "\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\377\37^\256\377\11\37" \ -+ "^\256\377\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\240\0\0\0\0\30\6\5\3\0\4\2\3\0\0\0\0\0" \ -+ "\0\0\2\0\1\1\3\0\0\0\2\0\0\0\0\0\2\2\2\0\5\3\4\0\0\1\0\0\0\0\2\0\1\0" \ -+ "\0\0\7\0\0\0\1\1\0\0\0\5\22\14\13$Md\"T\221\304*_\243\377#^\252\377\31" \ -+ "Z\254\377\36`\266\377!b\266\377\35\\\254\377\37Z\250\377\230\37^\256" \ -+ "\377\30!a\253\377\36]\255\377\34\\\263\377\36_\263\377\37a\255\377\40" \ -+ "b\254\377!`\255\377\35[\256\377\30]\253\377\37`\262\377!^\256\377\32" \ -+ "\\\252\377\30\\\257\377&`\264\377\"N\213\274\1\40\77O\0\4\22\14\0\0\13" \ -+ "\3\0\1\4\0\0\5\1\0\0\1\0\0\0\0\0\0\3\1\2\0\1\0\4\0\260\0\0\0\0\10\1\1" \ -+ "\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253" \ -+ "\377\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0" \ -+ "\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\4\0\2\0\0\3\0" \ -+ "\0\2\2\2\0\6\0\0\0\0\1\2\0\25Q\220\304\40Y\260\377\40\\\262\377\230\37" \ -+ "^\256\377\6\31`\262\377\"[\250\377\35^\262\377\37]\250\377\17)J^\1\1" \ -+ "\3\0\212\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264" \ -+ "\377\34^\252\377\"\\\256\377\34]\255\377\340\37^\256\377\17\34]\257\377" \ -+ "\35^\260\377\36]\255\377\35\\\254\377\40_\257\377!`\260\377\33X\250\377" \ -+ "\22O\237\377\"I\212\377\26""9o\377\14(Md\3\30+2\0\11\17\11\0\3\2\0\0" \ -+ "\2\0\0\202\0\1\2\0\1\1\2\4\0\202\0\0\2\0\4\0\0\0\0\2\2\2\0\2\0\1\0\1" \ -+ "\0\0\0\210\0\0\0\0\10\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1W" \ -+ "r\33]\251\377\40\\\262\377\377\37^\256\377\11\37^\256\377\34]\255\377" \ -+ "\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230" \ -+ "\0\2\0\0\240\0\0\0\0\1\0\1\3\0\202\0\1\0\0\2\2\2\2\0\2\2\0\0\202\1\0" \ -+ "\0\0\21\2\1\0\0\3\0\0\0\4\2\3\0\3\3\3\0\3\0\0\0\1\0\0\0\1\16\36\35\30" \ -+ "=q\230\36W\246\377'^\256\377#]\256\377\33Z\252\377\30[\254\377\35`\257" \ -+ "\377\36`\256\377\37]\252\377!\\\250\377\230\37^\256\377\30\35^\256\377" \ -+ "\37`\262\377\37]\260\377\35\\\251\377\35]\244\377\34_\243\377\33_\246" \ -+ "\377\31^\251\377\37a\265\377\33Z\247\377\37]\252\377\37]\260\377\37Y" \ -+ "\253\377\22\77z\244\0\20&)\1\0\0\0\0\1\7\0\0\1\4\0\0\3\2\0\0\2\0\0\0" \ -+ "\1\0\0\0\0\0\0\1\0\2\0\1\0\4\0\260\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230" \ -+ "\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0" \ -+ "\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\4\0\2\0\0\3\0\0\1\3\2\0\4\0\0\0\0\2" \ -+ "\5\0\27R\224\312\40Y\260\377\37]\260\377\230\37^\256\377\6\31`\262\377" \ -+ "\"[\250\377\35^\262\377\37]\250\377\15'H[\1\1\3\0\212\0\0\0\0\10\16'" \ -+ "Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256" \ -+ "\377\34]\255\377\340\37^\256\377\2\36_\261\377\35^\260\377\202\35\\\254" \ -+ "\377\16\40_\257\377!`\260\377\32W\247\377\20M\235\377\10%C\377\0\23+" \ -+ "\377\0\5\17\11\6\1\0\0\10\0\0\0\7\0\0\0\1\1\0\0\0\3\0\0\0\1\2\0\0\3\3" \ -+ "\0\202\0\3\6\0\4\0\4\7\0\0\0\2\0\1\0\0\0\5\1\0\0\210\0\0\0\0\10\0\1\0" \ -+ "\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\377" \ -+ "\37^\256\377\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377![\255" \ -+ "\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\240\0\0\0\0\5\0\1\4" \ -+ "\0\0\1\2\0\1\3\2\0\2\4\1\0\0\1\0\0\203\1\0\0\0\20\1\2\0\0\5\0\0\0\6\0" \ -+ "\0\0\0\1\7\0\5#=L\33N\207\271\40Z\253\377%c\270\377\33Y\260\377\31Z\256" \ -+ "\377\34_\260\377\36c\261\377\35`\256\377\34^\254\377\37\\\254\377#]\257" \ -+ "\377\230\37^\256\377\30\32]\256\377\36_\261\377\37^\255\377\37]\252\377" \ -+ "\40^\251\377\35_\251\377\33`\255\377\32a\261\377\36V\253\377\36`\256" \ -+ "\377\37a\253\377\37T\230\320\13'Wr\0\0\22\14\3\0\0\0\4\0\0\0\0\2\1\0" \ -+ "\0\4\0\0\0\1\0\0\0\2\0\0\0\1\0\0\2\2\0\0\2\2\4\0\2\0\5\0\260\0\0\0\0" \ -+ "\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37" \ -+ "^\253\377\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204\0\0" \ -+ "\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\3\0\0\0" \ -+ "\0\3\0\0\0\1\3\0\4\0\0\0\0\5\11\0\30U\226\315\37[\261\377\36\\\257\377" \ -+ "\230\37^\256\377\6\31`\262\377#\\\251\377\35^\262\377\40^\251\377\12" \ -+ "$EX\1\1\3\0\212\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377" \ -+ "\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\340\37^\256\377\3\34" \ -+ "]\257\377\36_\261\377\40_\257\377\202\36]\255\377\16\37^\256\377\37\\" \ -+ "\254\377\34Y\251\377$^\257\377!U\236\377\37I\203\263\25""2Zu\6\25*/\0" \ -+ "\1\6\0\6\0\0\0\14\0\0\3\5\6\1\0\0\0\0\0\0\1\0\0\202\0\1\2\0\3\0\1\3\0" \ -+ "\2\2\2\0\2\1\0\0\210\0\0\0\0\10\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2" \ -+ "\0\16""1Wr\33]\251\377\40\\\262\377\377\37^\256\377\11\37^\256\377\34" \ -+ "]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377" \ -+ "\31""9r\230\0\2\0\0\240\0\0\0\0\3\0\2\5\0\0\3\4\0\0\2\0\0\202\0\1\0\0" \ -+ "\23\1\2\0\0\3\3\1\0\2\2\2\0\4\1\0\0\0\1\0\0\0\2\24\17\15-`~\40Y\240\334" \ -+ "\35b\257\377\32_\255\377\33W\257\377\36`\266\377\34_\260\377\34_\256" \ -+ "\377\34_\255\377\34^\254\377\37]\260\377!]\265\377\40Y\263\377\230\37" \ -+ "^\256\377\15\35`\261\377\34]\255\377\34[\252\377\37\\\254\377\"_\262" \ -+ "\377\37]\264\377\32Z\262\377\30Z\261\377(b\266\377\40X\245\377\34K\201" \ -+ "\260\5\37""6@\0\1\4\0\202\10\0\0\0\1\4\4\0\0\204\0\1\0\0\4\4\4\2\0\3" \ -+ "\3\3\0\0\0\2\0\0\0\4\0\260\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33" \ -+ "^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256" \ -+ "\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0" \ -+ "\0\0\0\2\0\300\0\0\0\0\10\3\0\0\0\0\3\0\0\0\0\4\0\4\0\4\0\3\10\16\6\33" \ -+ "X\233\323\37[\261\377\36]\255\377\230\37^\256\377\6\31`\262\377#\\\251" \ -+ "\377\34]\261\377!_\252\377\10\"CU\2\2\4\0\212\0\0\0\0\10\16'Og\40[\251" \ -+ "\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34" \ -+ "]\255\377\340\37^\256\377\20\33\\\256\377\36_\261\377!`\260\377\37^\256" \ -+ "\377\35\\\254\377\36]\255\377\"_\257\377#`\260\377\26^\263\377\23\\\270" \ -+ "\377\26_\276\377\35_\275\377\37W\244\342\33@t\233\11\35""6@\0\2\11\0" \ -+ "\202\1\0\0\0\202\2\1\0\0\202\1\0\0\0\2\4\4\4\0\0\1\0\0\210\0\0\0\0\10" \ -+ "\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262" \ -+ "\377\377\37^\256\377\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377" \ -+ "![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\240\0\0\0\0\30" \ -+ "\0\0\4\0\0\0\2\0\0\0\0\0\0\1\0\0\0\2\0\0\1\3\2\0\0\1\4\0\0\0\7\0\0\1" \ -+ "\0\0\0\23+2\23A}\252\35Z\255\377\35^\262\377\36]\254\377\31[\251\377" \ -+ "\35a\266\377\33^\255\377\34]\255\377\34^\254\377\32\\\252\377\33Z\252" \ -+ "\377\37]\262\377\40^\265\377\37Z\264\377\230\37^\256\377\21\37]\260\377" \ -+ "\33\\\254\377\34^\254\377\34]\257\377\33X\261\377\37X\262\377%[\263\377" \ -+ "(\\\257\377\37W\244\377\23""7i\215\0\11\27\25\3\0\0\0\6\2\0\0\1\0\0\0" \ -+ "\3\0\0\0\4\0\0\0\2\3\0\0\202\0\0\0\0\2\2\2\0\0\2\2\2\0\202\0\0\0\0\1" \ -+ "\0\0\2\0\260\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254" \ -+ "\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32_\255" \ -+ "\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\300" \ -+ "\0\0\0\0\10\3\0\0\0\0\4\0\0\0\1\4\0\3\0\5\0\5\11\24\17\35Y\237\377\37" \ -+ "[\261\377\34]\255\377\230\37^\256\377\7\30_\261\377#\\\251\377\34]\261" \ -+ "\377!_\252\377\5\37@O\2\2\4\0\1\1\0\0\211\0\0\0\0\10\16'Og\40[\251\377" \ -+ "\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255" \ -+ "\377\340\37^\256\377\2\33\\\256\377\34]\257\377\203\36]\255\377\1\37" \ -+ "^\256\377\202\40]\255\377\20'[\246\377!]\246\377\34`\253\377\26c\253" \ -+ "\377\27c\256\377\36b\255\377\31T\240\334\15A\215\277\6\23&)\0\0\20\11" \ -+ "\0\0\7\0\10\4\5\0\4\0\0\0\3\0\0\0\0\0\0\0\0\1\2\0\210\0\0\0\0\10\0\1" \ -+ "\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377" \ -+ "\377\37^\256\377\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377!" \ -+ "[\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\240\0\0\0\0\25" \ -+ "\3\0\4\0\6\2\3\0\1\0\0\0\0\1\0\0\0\5\1\0\0\1\4\0\0\1\13\3\1\7\25\22\6" \ -+ "%DU!M\212\274%_\263\377\32^\261\377\34^\252\377\36[\253\377\34]\257\377" \ -+ "\32_\255\377\35\\\253\377!`\260\377#`\261\377!^\261\377\40]\260\377\202" \ -+ "\35[\256\377\1\36_\257\377\230\37^\256\377\17\36[\254\377\35\\\253\377" \ -+ "\37b\260\377\35a\262\377\32Z\261\377&]\257\377-\\\242\377%M\212\274\6" \ -+ "\37H[\0\4\21\14\1\1\0\0\7\0\0\0\1\0\0\0\0\2\3\0\1\3\2\0\202\3\1\2\0\7" \ -+ "\1\0\0\0\1\0\2\0\1\1\3\0\0\0\2\0\0\0\0\0\2\2\2\0\4\4\2\0\260\0\0\0\0" \ -+ "\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37" \ -+ "^\253\377\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204\0\0" \ -+ "\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\1\0\0\0" \ -+ "\0\4\0\0\0\0\5\0\4\0\10\0\5\13\27\25\35\\\241\377\40\\\262\377\34^\254" \ -+ "\377\230\37^\256\377\7\30_\261\377$]\252\377\34]\261\377\"`\253\377\3" \ -+ "\35>L\2\2\4\0\1\1\0\0\211\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37" \ -+ "\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\340\37^\256" \ -+ "\377\202\34]\257\377\2\35\\\254\377\36]\255\377\202\37^\256\377\16\37" \ -+ "\\\254\377\35Z\252\377\37\\\255\377!^\257\377!`\257\377\36]\254\377\32" \ -+ "Y\246\377\35]\247\377\"b\252\377\"`\251\377%P\205\377\13*Vo\0\7!#\0\0" \ -+ "\11\0\202\5\0\0\0\2\0\0\0\0\0\4\4\0\210\0\0\0\0\10\0\1\0\0\4\0\0\0\0" \ -+ "\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\377\37^\256\377" \ -+ "\11\37^\256\377\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255" \ -+ "\377\34\\\263\377\31""9r\230\0\2\0\0\240\0\0\0\0\30\4\0\2\0\7\1\3\0\1" \ -+ "\0\0\0\0\1\0\0\0\4\3\0\0\1\7\0\4\14\31\27\"*=\377\32\\\260\377!\\\250" \ -+ "\377'[\246\377#Z\252\377\36_\257\377\33c\257\377\33^\254\377\35Z\253" \ -+ "\377!^\257\377![\257\377\35V\255\377\37X\257\377$]\264\377\37\\\255\377" \ -+ "\31[\245\377\35`\247\377\230\37^\256\377\21'_\262\377\34[\252\377\32" \ -+ "_\254\377\32a\257\377\34_\256\377']\245\377\27@v\236\0\22""8C\10\0\0" \ -+ "\0\1\0\0\0\0\3\5\0\0\4\4\0\2\0\1\0\4\0\4\0\0\0\5\0\0\3\4\0\1\0\2\0\203" \ -+ "\1\0\4\0\3\0\0\4\0\1\1\3\0\1\1\0\0\261\0\0\0\0\10\1\1\0\0\0\7\14\3\37" \ -+ "R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0" \ -+ "\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\1\0\0\0\0\4\0\0\0\0\5\0\4\0\10" \ -+ "\0\6\14\30\25\36]\242\377\37]\262\377\34^\254\377\230\37^\256\377\7\30" \ -+ "_\261\377$]\252\377\33\\\260\377\"`\253\377\2\34=L\2\2\4\0\1\1\0\0\211" \ -+ "\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34" \ -+ "^\252\377\"\\\256\377\34]\255\377\340\37^\256\377\202\35^\260\377\202" \ -+ "\37^\256\377\202\36]\255\377\22\37\\\254\377\40]\255\377\34`\261\377" \ -+ "\33\\\256\377\40]\260\377%]\262\377$Z\260\377\"Z\261\377!Z\263\377\35" \ -+ "X\262\377\36a\262\377)\\\236\377\30""5_~\1\10\33\32\3\0\0\0\5\0\0\0\0" \ -+ "\1\0\0\0\3\1\0\210\0\0\0\0\10\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0" \ -+ "\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\37]\262\377\40]" \ -+ "\260\377\35Z\253\377\33Z\252\377\35`\261\377\33c\265\377\25`\263\377" \ -+ "\27b\265\377\300\36]\254\377\10\40^\261\377!^\256\377\36Y\247\377\37" \ -+ "]\252\377\"a\260\377\31\\\253\377\36a\262\377\33\\\256\377\230\37^\256" \ -+ "\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\230\0\0\0\0\20\4\0\5\0\3\0\4\0\0\0\0\0" \ -+ "\0\1\0\0\0\2\0\0\1\2\0\0\4\0\0\0\5\0\1\0\0\2\13\3\0\0\5\0\6\2\0\0\5\1" \ -+ "\0\0\0\1\0\0\1\27.5\22B\200\255\35^\274\377\240\37^\256\377\20\34]\261" \ -+ "\377\36_\263\377\35`\261\377\32_\255\377\33`\255\377\34a\256\377\34_" \ -+ "\256\377\34]\257\377\35[\262\377\33_\262\377\26_\256\377\36a\257\377" \ -+ "$V\233\377\20+Vo\0\3\14\3\12\0\0\0\300\0\0\0\0\10\1\1\0\0\0\7\14\3\37" \ -+ "R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0" \ -+ "\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\4\0\0\0\0\1\12\0\6\0\0\0\6\2\0" \ -+ "\0\0\34""9F$]\252\377\35[\262\377\33^\257\377\230\37^\256\377\10#\\\255" \ -+ "\377\40_\254\377\31\\\265\377\34]\257\377\14\34+2\0\1\4\0\1\0\5\0\1\0" \ -+ "\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264" \ -+ "\377\34^\252\377\"\\\256\377\34]\255\377\360\37^\256\377\30\34b\252\377" \ -+ "\31[\271\377\"]\273\377\26C|\247\0\21\35\35\0\3\0\0\11\4\1\0\6\0\7\0" \ -+ "\1\1\1\0\0\1\0\0\0\0\2\0\3\3\3\0\4\2\3\0\1\0\2\0\0\1\6\0\0\0\7\0\0\1" \ -+ "\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377" \ -+ "\230\37^\256\377\3\36[\256\377!^\257\377#^\254\377\202\"[\250\377\3\40" \ -+ "\\\245\377\36Z\243\377\40\\\245\377\300![\257\377\10$\\\263\377&^\263" \ -+ "\377$Z\260\377%[\263\377#[\262\377\36W\256\377$]\264\377#\\\263\377\230" \ -+ "\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255" \ -+ "\377\34\\\263\377\31""9r\230\0\2\0\0\230\0\0\0\0\5\3\0\2\0\1\0\2\0\1" \ -+ "\1\3\0\2\4\3\0\0\4\0\0\202\0\1\0\0\11\0\0\5\0\0\0\0\0\1\0\0\0\0\1\0\0" \ -+ "\0\5\17\11\11#H[$P\215\277*b\255\377\30U\245\377\240\37^\256\377\20!" \ -+ "Z\251\377\"\\\256\377\37]\260\377\33^\257\377\31\\\252\377\31]\250\377" \ -+ "\37^\256\377\"^\264\377\22^\252\377\37b\263\377&]\257\377\34D\202\260" \ -+ "\5\37@O\0\6\17\11\0\1\2\0\5\0\4\0\300\0\0\0\0\10\1\1\0\0\0\7\14\3\37" \ -+ "R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0" \ -+ "\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\3\0\0\0\0\2\13\3\4\0\0\0\4\1\0" \ -+ "\0\1\"CU#\\\251\377\37[\263\377\34_\256\377\230\37^\256\377\10#\\\255" \ -+ "\377\40_\254\377\31\\\265\377\36]\255\377\14\31)/\0\1\4\0\1\0\5\0\1\0" \ -+ "\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264" \ -+ "\377\34^\252\377\"\\\256\377\34]\255\377\360\37^\256\377\10\35]\247\377" \ -+ "\36`\256\377!_\264\377%Z\250\377\34@r\230\0\22!#\0\1\0\0\14\3\6\3\202" \ -+ "\1\0\0\0\3\0\0\2\0\0\0\0\0\1\1\1\0\202\0\0\0\0\202\0\1\0\0\7\4\0\0\0" \ -+ "\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256" \ -+ "\377\10\35Z\252\377\40]\256\377\40_\257\377\40]\255\377#^\254\377#\\" \ -+ "\251\377#^\252\377$_\255\377\300\35^\256\377\10\23_\252\377\25b\252\377" \ -+ "\27`\255\377\32a\263\377\31]\260\377\31^\251\377\30b\253\377\24`\254" \ -+ "\377\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377" \ -+ "\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\230\0\0\0\0\20\0\0\2\0\1" \ -+ "\1\1\0\0\2\0\0\0\1\0\0\0\0\2\0\0\1\4\0\0\2\3\0\1\5\6\0\4\2\0\0\0\1\0" \ -+ "\0\0\16\36\35\25""7g\212#W\243\377\40]\266\377\32[\257\377\37]\250\377" \ -+ "\240\37^\256\377\20\"[\252\377![\254\377\40Z\254\377\36[\253\377!_\254" \ -+ "\377#b\261\377\40^\263\377\32W\260\377\34e\261\377\40Y\234\377\25""5" \ -+ "f\207\5\17*/\1\0\5\0\3\0\0\0\0\1\0\0\0\5\10\0\300\0\0\0\0\10\1\1\0\0" \ -+ "\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377" \ -+ "\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0" \ -+ "\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\300\0\0\0\0\10\3\0\0\0\0\2\11\0" \ -+ "\6\1\0\0\0\1\0\0\10.Sl!Z\251\377\40\\\262\377\35`\257\377\230\37^\256" \ -+ "\377\10![\254\377\36`\254\377\33]\264\377\36]\255\377\12\30%)\0\1\2\0" \ -+ "\1\0\5\0\1\0\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255" \ -+ "\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\360\37^\256\377" \ -+ "\30\40Z\243\377!`\247\377\33\\\254\377\40_\274\377)_\267\377\27L\26E{\247(`\253\377\25Z\267\377\37`\264\377#^\254\377" \ -+ "\35W\250\377\34Z\261\377!a\271\377\"a\260\377\37[\243\377\240\37^\256" \ -+ "\377\17!\\\250\377\31X\250\377\40^\261\377'a\253\377\33J\202\260\10%" \ -+ "EX\0\10\24\17\1\0\0\0\12\1\2\0\3\0\0\0\1\1\0\0\0\1\0\0\0\2\2\0\0\3\4" \ -+ "\0\4\5\7\0\301\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"" \ -+ "[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32" \ -+ "_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0" \ -+ "\300\0\0\0\0\10\2\1\0\0\0\0\4\0\1\0\6\0\6\36""6@!\\\236\377\35Z\263\377" \ -+ "\"Z\255\377\32_\254\377\230\37^\256\377\10\36\\\257\377\35_\253\377\34" \ -+ "Z\255\377\37U\237\331\0\4\12\0\1\0\0\0\1\0\5\0\0\1\3\0\210\0\0\0\0\10" \ -+ "\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"" \ -+ "\\\256\377\34]\255\377\360\37^\256\377\30\40Y\262\377\37^\255\377\31" \ -+ "[\245\377\31[\251\377\40_\256\377\37_\251\377\32\\\252\377\35_\266\377" \ -+ "\31Bn\223\0\20+2\0\0\5\0\7\0\0\0\3\0\0\0\0\2\5\0\0\1\2\0\2\1\0\0\0\1" \ -+ "\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377" \ -+ "\230\37^\256\377\10![\257\377\32]\264\377\33a\266\377%\\\235\377\21." \ -+ "Pg\0\0\11\0\1\0\0\0\2\1\0\0\300\0\2\0\0\10\12\0\14\3\2\1\0\0\0\2\0\0" \ -+ "\2\1\6\0\4\0\0\0\0\1\0\0\0\3\27\25\"A\201\260\230\37^\256\377\10\34]" \ -+ "\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31" \ -+ "9r\230\0\2\0\0\230\0\0\0\0\20\3\0\11\0\4\0\0\0\1\1\0\0\0\6\5\0\20*EX" \ -+ "(Y\224\377\"i\273\377\11^\271\377\37_\246\377\33\\\254\377\33\\\270\377" \ -+ "\40]\270\377\"\\\260\377\40Y\250\377\37\\\254\377\35_\265\377\240\37" \ -+ "^\256\377\12\34a\254\377!`\260\377(X\252\377\32>z\244\0\26""2;\0\3\4" \ -+ "\0\3\0\0\0\12\1\0\0\0\0\13\3\0\2\6\0\202\0\1\0\0\4\0\2\0\0\0\1\0\0\0" \ -+ "\0\2\0\0\0\4\0\300\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377" \ -+ "\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32" \ -+ "_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0" \ -+ "\300\0\0\0\0\10\1\0\0\0\1\0\2\0\5\4\12\0\16)DU#b\247\377\33[\263\377" \ -+ "\"Y\253\377\34a\256\377\230\37^\256\377\10\36\\\257\377\34^\252\377\34" \ -+ "Y\254\377\35S\235\326\0\1\7\0\1\0\0\0\1\0\5\0\1\2\4\0\210\0\0\0\0\10" \ -+ "\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"" \ -+ "\\\256\377\34]\255\377\360\37^\256\377\16)^\252\377\34Y\251\377\32_\255" \ -+ "\377\35b\255\377\33Z\247\377\35Z\255\377\37`\264\377\33`\256\3771d\245" \ -+ "\377\4\37J^\2\1\21\14\12\0\0\0\4\0\0\0\0\3\2\0\202\0\2\0\0\10\0\1\0\0" \ -+ "\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230" \ -+ "\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj" \ -+ "\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7" \ -+ "\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255" \ -+ "\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0" \ -+ "\0\221\0\0\0\0\17\0\1\0\0\1\3\0\0\0\3\6\0\0\0\5\0\0\1\0\0\2\1\0\0\4\0" \ -+ "\0\0\13\0\0\3\0\0\5\0\0\26""5@\21B}\252\37]\252\352\33\\\260\377\36X" \ -+ "\252\377%\\\254\377\240\37^\256\377\20\40`\252\377\33_\260\377\27_\264" \ -+ "\377\32]\264\377\40^\263\377#]\257\377\37\\\255\377\32[\257\377\35^\262" \ -+ "\377&Y\222\377\23""1I^\0\7\16\6\3\0\5\0\10\1\11\0\0\0\0\0\0\4\0\0\310" \ -+ "\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256" \ -+ "\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204" \ -+ "\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\270\0\0\0\0\20\0\2" \ -+ "\5\0\0\0\4\0\0\0\2\0\4\2\3\0\4\3\1\0\1\0\0\0\0\0\0\0\0\0\2\0\6\0\0\0" \ -+ "\1\1\0\0\0\6\21\14\36L\210\271\36Y\263\377\40^\261\377\33]\251\377\33" \ -+ "`\256\377\230\37^\256\377\10\37]\252\377\31`\262\377\37Z\266\377%C\203" \ -+ "\263\0\3\2\0\0\3\6\0\0\2\0\0\0\0\4\0\210\0\0\0\0\10\16'Og\40[\251\377" \ -+ "\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255" \ -+ "\377\230\37^\256\377\10\26_\273\377\31R\225\377\12\40""5\377\22!BR\22" \ -+ "&\77O\20$\77O\4(>L\14&=L\260\16\"CU\20\23!;I\16\40DU\25""0e\207#H\216" \ -+ "\301'W\251\377!Z\261\377\32\\\262\377\30_\261\377#]\261\377#]\257\377" \ -+ "\35W\250\377$a\261\377\34]\255\377\34_\260\377\33^\257\377\34]\257\377" \ -+ "\230\37^\256\377\20\31]\260\377\"V\241\377\0\15\32\27\3\0\2\0\7\0\0\0" \ -+ "\0\4\0\0\0\6\2\0\1\0\2\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1" \ -+ "Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377" \ -+ "\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1" \ -+ "\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256" \ -+ "\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\220\0\0\0\0\20\0\2\4\0\1\2\7\0\2\0\1\0" \ -+ "\3\0\0\0\2\1\0\0\2\1\11\0\0\0\0\0\1\2\0\0\0\4\25\22\14#BR\40H{\247$]" \ -+ "\242\377\37`\262\377\34^\262\377\37\\\255\377\"[\252\377\240\37^\256" \ -+ "\377\20\32Z\264\377\37^\256\377!`\247\377\37]\246\377\36]\255\377\34" \ -+ "Z\261\377\35[\260\377\40_\256\377!H\201\377\7%I^\0\4\16\6\0\0\2\0\6\0" \ -+ "\2\0\5\0\6\0\0\0\2\0\0\5\0\0\310\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230" \ -+ "\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0" \ -+ "\0\1\0\0\0\0\0\2\0\270\0\0\0\0\202\1\1\3\0\203\0\0\2\0\13\0\1\2\0\0\2" \ -+ "\3\0\0\4\5\0\12\3\0\0\0\2\0\0\0\34""6@'X\233\377\34X\260\377\40_\257" \ -+ "\377\34^\252\377\34_\260\377\230\37^\256\377\10\37]\252\377\31`\262\377" \ -+ "\36Y\263\377\40>z\244\0\3\2\0\0\1\3\0\0\2\0\0\0\1\5\0\210\0\0\0\0\10" \ -+ "\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"" \ -+ "\\\256\377\34]\255\377\230\37^\256\377\4!Z\253\377\32Ez\244\0\5\13\3" \ -+ "\0\0\20\11\202\0\0\11\0\2\0\5\11\0\0\1\7\0\260\0\1\4\0\20\0\2\7\0\0\5" \ -+ "\12\0\0\3\11\0\0\6\24\17\0\37\34G|\247\36[\254\377\30" \ -+ "^\263\377\33^\257\377\40]\255\377\40^\253\377\40]\255\377\40_\257\377" \ -+ "!_\262\377\"`\263\377!_\262\377\34]\255\377\31[\251\377\240\37^\256\377" \ -+ "\16%^\257\377!O\212\274\12(BR\0\3\5\0\3\0\0\0\14\5\0\3\5\3\4\0\0\0\5" \ -+ "\0\0\0\4\0\3\2\7\0\0\0\4\0\0\0\2\0\1\1\1\0\4\4\4\0\202\2\2\0\0\310\0" \ -+ "\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256" \ -+ "\377\37^\253\377\36\\\261\377\230\37^\256\377\10\32_\255\377\27""8c\204" \ -+ "\0\0\11\0\4\0\0\0\0\0\2\0\0\1\0\0\1\0\0\0\0\0\2\0\270\0\0\0\0\20\0\6" \ -+ "\10\0\0\1\0\0\3\0\0\0\5\0\0\0\0\0\13\3\0\4\36\35\3$Og\35H}\377%`\254" \ -+ "\377#]\257\377\34Z\255\377\36a\257\377\34^\254\377\36[\256\377\40^\261" \ -+ "\377\31^\251\377\230\37^\256\377\10\37]\262\377\33`\255\377\"X\236\377" \ -+ "\0\21\35\35\3\0\4\0\5\0\0\0\1\2\0\0\0\0\11\0\210\0\0\0\0\10\16'Og\40" \ -+ "[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377" \ -+ "\34]\255\377\230\37^\256\377\10\"Z\257\377\33Dx\241\0\6\2\0\4\0\3\0\5" \ -+ "\2\0\0\4\0\0\0\0\2\0\0\4\0\0\0\260\4\0\5\0\2\0\0\0\0\2\4\1\0\202\0\2" \ -+ "\0\0\14\0\1\0\0\2\2\0\0\1\0\0\0\3\0\0\0\1\0\4\0\14!@O%X\227\377\34`\263" \ -+ "\377\31[\262\377\37\\\257\377\"_\257\377\35\\\253\377\230\37^\256\377" \ -+ "\20\36[\253\377\40]\256\377\40^\265\377$^\262\377\7.Og\0\4\0\0\4\0\0" \ -+ "\0\0\0\2\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377" \ -+ "\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377" \ -+ "#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2" \ -+ "\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34" \ -+ "]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377" \ -+ "\31""9r\230\0\2\0\0\220\0\0\0\0\20\3\0\0\0\27*Ka#Q\236\331\40`\272\377" \ -+ "\34`\263\377\35_\253\377\35_\251\377\32^\251\377\34_\255\377\32]\256" \ -+ "\377\30\\\257\377\32^\263\377\33]\263\377\34]\257\377\37^\255\377\"`" \ -+ "\253\377\237\37^\256\377\21\37^\256\360\33A\177\255\0\23""2;\0\3\2\0" \ -+ "\10\4\0\0\6\1\0\0\0\0\5\0\0\2\5\0\0\6\5\0\3\0\2\0\4\0\2\0\5\0\1\0\5\0" \ -+ "\0\0\4\0\0\0\1\0\0\0\0\0\0\0\0\0\2\0\310\0\0\0\0\10\1\1\0\0\0\7\14\3" \ -+ "\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261" \ -+ "\377\230\37^\256\377\10\32_\255\377\27""8c\204\0\0\11\0\4\0\0\0\0\0\2" \ -+ "\0\0\1\0\0\1\0\0\0\0\0\2\0\270\0\0\0\0\20\0\3\4\0\0\1\0\0\3\0\0\0\3\1" \ -+ "\6\0\17\27,2\35L\2\34""5@\250\6" \ -+ "\36:F\210\5#=L\20\5%Ka\7)Og\14-Xr\21""3a\201\25""9k\220\34Av\236#H\177" \ -+ "\255%L\205\377.W\225\377)X\234\377&[\247\377\"\\\260\377\37]\264\377" \ -+ "\36\\\263\377\36[\254\377\37Y\252\377\240\37^\256\377\10\24`\256\377" \ -+ "\"\\\260\377\32""9o\225\0\1\5\0\5\1\0\0\0\1\0\0\0\2\0\0\3\0\0\0\210\0" \ -+ "\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^" \ -+ "\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|" \ -+ "\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\0" \ -+ "\1\4\0\0\1\0\0\3\16$&#L\216\377\33]\261\377\31`\256\377\36]\252\377#" \ -+ "\\\255\377\230\37^\256\377\7\36Z\260\377\33]\261\377\37]\252\377!^\256" \ -+ "\377\36W\246\377\0\31*/\3\0\0\0\202\0\1\0\0\7\4\0\0\0\0\0\4\0\1\0\0\0" \ -+ "\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255" \ -+ "\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0" \ -+ "\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203" \ -+ "\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377" \ -+ "\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\20\1\0\0\0\2" \ -+ "\2\4\0\1\1\0\0\0\2\7\0\0\0\0\0\3\16\40\40\26Q\215\277&f\255\377\40_\254" \ -+ "\377!`\255\377\37^\253\377\35\\\253\377\37^\256\377!_\262\377\40^\261" \ -+ "\377\37]\260\377\240\37^\256\377\10!\\\270\377\40]\266\377\36\\\257\377" \ -+ "\37[\244\377\30J\207\377\3%S\377\0\20""1\377\14\26/8\310\3\32,2\10\2" \ -+ "\25""3>\6\23""6@\1\31""5@\6\31""7C\1\0\0\0\3\0\2\0\0\2\0\0\1\0\2\0\210" \ -+ "\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256" \ -+ "\377\37^\253\377\36\\\261\377\230\37^\256\377\10\36b\307\377&[\267\377" \ -+ "&Q\240\377-V\245\377)\\\257\377!Z\261\377%_\263\377'\\\254\377\250\35" \ -+ "^\256\377\210![\255\377\202\36[\254\377\16\35[\256\377\35[\260\377\33" \ -+ "[\262\377\33]\264\377\34]\267\377\34_\270\377\40[\265\377\35]\265\377" \ -+ "\32]\266\377\27]\265\377\30^\264\377\34^\262\377!`\260\377%_\260\377" \ -+ "\240\37^\256\377\10\24]\254\377)^\254\377\15&Og\0\0\5\0\3\0\0\0\0\2\0" \ -+ "\0\0\0\2\0\3\0\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\" \ -+ "\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256" \ -+ "\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0" \ -+ "\1\0\2\0\270\0\0\0\0\202\0\1\0\0\6\0\7\15\6\15""2_~$^\260\377\34`\265" \ -+ "\377\35\\\251\377#^\254\377\230\37^\256\377\20\37\\\257\377\31[\257\377" \ -+ "\40^\253\377\37^\256\377\37\\\254\377\13)CU\2\0\3\0\0\0\0\0\0\1\0\0\4" \ -+ "\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37" \ -+ "^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2" \ -+ "\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1" \ -+ "\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377" \ -+ "\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210" \ -+ "\0\0\0\0\10\0\0\5\0\3\2\7\0\1\0\0\0\0\1\5\0\3\1\2\0\5\25,2\32\\\246\377" \ -+ "\23_\265\377\203\35\\\253\377\3\36]\255\377\40_\257\377\40^\261\377\202" \ -+ "\37]\260\377\240\37^\256\377\10\33[\245\377\34^\250\377\34`\251\377\35" \ -+ "a\252\377\36\\\245\377\35S\235\377$R\235\3775\\\247\377\310\36]\252\377" \ -+ "\10![\244\377'X\244\377%\\\237\377$M\213\274\5\21\37\40\0\0\7\0\0\2\2" \ -+ "\0\1\0\2\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"" \ -+ "[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256\377\10\30" \ -+ "\\\261\377\40]\256\377\40Y\246\377\40^\253\377\30_\261\377\21]\261\377" \ -+ "\27_\261\377\30]\252\377\250\37^\253\377\210\35_\253\377\203\35^\262" \ -+ "\377\202\34^\262\377\202\32^\261\377\11\33_\262\377\33_\260\377\34a\257" \ -+ "\377\33c\257\377\32d\255\377\33c\255\377\34_\255\377\36]\255\377\35Z" \ -+ "\253\377\240\37^\256\377\10\30\\\255\377-\\\242\377\1\25.5\0\0\5\0\3" \ -+ "\0\0\0\1\4\0\0\0\0\5\0\1\0\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256" \ -+ "\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230" \ -+ "\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0" \ -+ "\0\3\0\0\1\0\2\0\270\0\0\0\0\10\0\2\0\0\1\0\0\0\0\4\0\0\0\34""6@*[\250" \ -+ "\377\36]\272\377\32[\253\377$_\253\377\230\37^\256\377\20\37]\260\377" \ -+ "\31Z\256\377$^\257\377\36\\\257\377\35_\255\377\26""6\\x\1\0\5\0\0\0" \ -+ "\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\" \ -+ "\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257" \ -+ "\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0" \ -+ "\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377" \ -+ "\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230" \ -+ "\0\2\0\0\210\0\0\0\0\16\0\0\11\0\0\0\4\0\3\0\0\0\3\5\4\0\5\0\0\0\0\11" \ -+ "\35\35\36Z\242\377\32a\271\377\36]\255\377\35\\\254\377\37^\256\377\40" \ -+ "_\257\377\37^\256\377\35\\\254\377\202\35[\256\377\240\37^\256\377\10" \ -+ "\40_\254\377\34^\252\377\34`\253\377\33`\255\377\32a\261\377\40d\271" \ -+ "\377\40a\273\377\31X\265\377\310\"Z\255\377\10\27^\266\377\33\\\270\377" \ -+ "\33a\267\377\"V\242\377\0\14\34\32\0\0\4\0\0\1\2\0\1\0\2\0\210\0\0\0" \ -+ "\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377" \ -+ "\37^\253\377\36\\\261\377\230\37^\256\377\10\34[\252\377!_\254\377\40" \ -+ "^\251\377\34^\254\377\32^\257\377\30_\257\377\37a\255\377!`\247\377\250" \ -+ "\"Y\263\377\210!Z\263\377\1\"]\253\377\203\"]\251\377\14\"^\247\377!" \ -+ "]\246\377\37^\245\377\36]\244\377\35Z\252\377\34[\250\377\32]\244\377" \ -+ "\32]\243\377\31]\244\377\33]\251\377\33\\\254\377\33\\\256\377\240\37" \ -+ "^\256\377\10\34_\260\377(Q\211\274\0\10\26\22\1\0\4\0\1\0\0\0\0\2\0\0" \ -+ "\0\0\5\0\2\1\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255" \ -+ "\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377" \ -+ "\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0" \ -+ "\2\0\270\0\0\0\0\10\0\1\0\0\1\0\0\0\0\2\0\0\0\15\30\25(Q\223\377\36[" \ -+ "\270\377\30Z\256\377#a\252\377\231\37^\256\377\17\32[\255\377%_\260\377" \ -+ "\33\\\256\377\31^\254\377\31=m\223\0\0\5\0\1\0\0\0\0\1\0\0\4\0\0\0\0" \ -+ "\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377" \ -+ "\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0" \ -+ "\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0" \ -+ "\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260" \ -+ "\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0" \ -+ "\0\10\0\0\7\0\1\0\5\0\4\1\0\0\1\3\0\0\7\0\0\0\3\12\32\27&]\240\377\40" \ -+ "^\261\377\202\37]\260\377\2!_\262\377\40^\261\377\202\35\\\254\377\2" \ -+ "\37^\256\377\40_\257\377\240\37^\256\377\2!`\257\377\35\\\253\377\202" \ -+ "\37^\253\377\4\31X\245\377\35Z\252\377\"_\260\377\36[\256\377\310\33" \ -+ "]\261\377\10\"]\251\377!Z\253\377\36\\\261\377)W\242\377\2\15\23\17\10" \ -+ "\3\0\0\2\2\2\0\3\1\6\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33" \ -+ "^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\230\37^\256" \ -+ "\377\10\40[\265\377#\\\266\377\"[\265\377\37Z\264\377\36Y\263\377!Z\263" \ -+ "\377#[\260\377%Y\254\377\250\34_\260\377\210\37\\\257\377\204\40]\260" \ -+ "\377\202!^\257\377\5!^\256\377\40]\255\377%\\\267\377$[\265\377\"[\262" \ -+ "\377\202\37\\\255\377\1\36]\255\377\202\35^\260\377\240\37^\256\377\10" \ -+ "\35^\262\377\32=g\212\0\1\6\0\4\0\2\0\0\0\2\0\0\2\0\0\0\0\4\0\1\1\0\0" \ -+ "\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377" \ -+ "\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32" \ -+ "H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\271\0\0\0\0\7" \ -+ "\2\1\0\0\1\1\0\0\0\5\13\3\37@u\236!Z\264\377\27Z\263\377!a\251\377\230" \ -+ "\37^\256\377\20\37^\255\377\36\\\257\377%^\257\377\33]\261\377\23_\253" \ -+ "\377\32B}\252\0\0\7\0\3\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0" \ -+ "\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]" \ -+ "\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0" \ -+ "\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230" \ -+ "\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255" \ -+ "\377\34\\\263\377\31""9r\230\0\2\0\0\210\0\0\0\0\10\0\0\4\0\2\2\4\0\3" \ -+ "\4\0\0\0\3\0\0\3\2\0\0\11\22#&&]\240\377\33X\253\377\202\36\\\257\377" \ -+ "\6\40^\261\377\37]\260\377\35[\256\377\37^\256\377\"a\261\377\40_\257" \ -+ "\377\240\37^\256\377\10\33]\253\377\33Z\251\377\35Z\252\377\"\\\255\377" \ -+ "$]\254\377#\\\253\377\"]\253\377\40^\253\377\310\36]\252\377\10\"]\243" \ -+ "\377![\245\377\31Z\256\377'U\240\377\0\12\13\3\11\2\0\0\0\0\0\0\1\0\4" \ -+ "\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377" \ -+ "\35^\256\377\37^\253\377\36\\\261\377\230\37^\256\377\5\36[\253\377\36" \ -+ "]\254\377\37^\255\377\37]\252\377!\\\252\377\202\"]\251\377\1#^\252\377" \ -+ "\250![\255\377\210\35^\256\377\2\33]\263\377\34\\\263\377\202\33[\262" \ -+ "\377\6\34]\261\377\35^\262\377\36\\\261\377\35[\260\377\36\\\263\377" \ -+ "\37[\263\377\203\40\\\264\377\3\36\\\261\377\35[\256\377\32[\253\377" \ -+ "\240\37^\256\377\10\35[\262\377\7&BR\2\0\1\0\6\0\0\0\1\1\3\0\0\0\4\0" \ -+ "\0\0\0\0\1\1\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255" \ -+ "\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377" \ -+ "\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0" \ -+ "\2\0\270\0\0\0\0\10\1\0\4\0\2\0\1\0\3\0\0\0\0\1\6\0\22""0Vo#[\260\377" \ -+ "\30]\272\377\37_\246\377\230\37^\256\377\20\36]\252\377\37]\260\377#" \ -+ "Z\255\377\34^\262\377\23a\254\377\34G\213\274\0\2\13\3\3\0\0\0\0\1\0" \ -+ "\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230" \ -+ "\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj" \ -+ "\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7" \ -+ "\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255" \ -+ "\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0" \ -+ "\0\210\0\0\0\0\10\5\0\4\0\0\0\0\0\0\2\0\0\0\5\2\0\0\4\0\0\0\15!#\35Y" \ -+ "\237\377\37_\266\377\202\35[\260\377\202\37]\260\377\1\35[\256\377\202" \ -+ "\40_\257\377\1\33Z\252\377\240\37^\256\377\10\32\\\262\377\37_\266\377" \ -+ "\37]\264\377\36Z\262\377!_\264\377\35^\260\377\30]\252\377\31c\254\377" \ -+ "\310\37^\256\377\10\27`\255\377\31a\263\377\23`\274\377\"[\254\377\0" \ -+ "\12\15\6\5\1\0\0\0\0\0\0\1\0\6\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R" \ -+ "\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\230\37^\256\377\10\35^\256\377\35^\260\377\36_\261\377\35^\256\377\36" \ -+ "]\254\377\35^\256\377\33]\261\377\32`\265\377\250\34_\255\377\210\36" \ -+ "]\254\377\2\37a\255\377\36`\254\377\202\34^\252\377\1\40_\254\377\202" \ -+ "\40_\256\377\5\37^\255\377\30a\245\377\32`\250\377\33^\254\377\34]\257" \ -+ "\377\202\36\\\257\377\2\36]\255\377\36]\254\377\240\37^\256\377\10\32" \ -+ "W\260\377\0\26+2\6\0\0\0\7\0\0\0\1\2\4\0\0\0\5\0\0\0\0\0\1\1\1\0\210" \ -+ "\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34" \ -+ "^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H" \ -+ "|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10" \ -+ "\1\0\5\0\1\0\2\0\4\0\2\0\0\0\7\0\12%CU$]\256\377\31]\276\377\34_\245" \ -+ "\377\230\37^\256\377\20\36]\252\377\40]\260\377\40W\252\377\34`\263\377" \ -+ "\25d\257\377\37K\222\307\0\4\17\11\3\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1" \ -+ "\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34" \ -+ "]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0" \ -+ "\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0" \ -+ "\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377!" \ -+ "[\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0" \ -+ "\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370" \ -+ "\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377\2\13" \ -+ "\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370" \ -+ "\37^\256\377\20\34_\255\377\33^\255\377\35_\251\377!`\257\377\36Z\262" \ -+ "\377\35[\250\377\40c\252\377\30[\264\377%Cg\377\0\10\31\27\0\2\0\0\1" \ -+ "\2\0\0\0\1\0\0\0\3\10\0\0\0\4\0\5\0\0\0\210\0\0\0\0\10\16'Og\40[\251" \ -+ "\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34" \ -+ "]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0" \ -+ "\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\1\0\0\0\0\2\4\0\0\2\0\0\1" \ -+ "\0\0\0\15\22&)\37]\252\377\37^\256\377\34]\255\377\230\37^\256\377\20" \ -+ "\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36P\227\315" \ -+ "\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]" \ -+ "\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\" \ -+ "\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3" \ -+ "\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377" \ -+ "\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263" \ -+ "\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0" \ -+ "\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377\34" \ -+ "^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0" \ -+ "\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35" \ -+ "^\256\377\37^\253\377\36\\\261\377\370\37^\256\377\20\40b\260\377\32" \ -+ "[\253\377\35^\256\377\37]\260\377\36\\\261\377!`\260\377\36`\254\377" \ -+ "\36_\261\377\21)EX\0\3\16\6\0\2\0\0\3\2\0\0\0\0\2\0\2\3\10\0\0\0\2\0" \ -+ "\3\0\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35" \ -+ "]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z" \ -+ "\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270" \ -+ "\0\0\0\0\10\1\0\0\0\0\1\4\0\0\1\0\0\3\0\0\0\13\20$&\36\\\251\377\37^" \ -+ "\256\377\34]\255\377\230\37^\256\377\20\36]\255\377\36]\254\377\35]\264" \ -+ "\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0" \ -+ "\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256" \ -+ "\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0" \ -+ "\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0" \ -+ "\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40" \ -+ "]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0" \ -+ "\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255" \ -+ "\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377" \ -+ "\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37" \ -+ "R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\370\37^\256\377\20\40_\257\377\36]\255\377\34]\261\377\34\\\263\377" \ -+ "\32]\256\377\36_\261\377\40]\255\377\34W\233\323\0\15\32\27\0\2\5\0\0" \ -+ "\1\0\0\4\0\0\0\1\0\4\0\1\1\11\0\1\2\4\0\0\1\0\0\210\0\0\0\0\10\16'Og" \ -+ "\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256" \ -+ "\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0" \ -+ "\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\1\0\0\0\0\1\4\0\0" \ -+ "\1\0\0\3\0\0\0\10\15!#\33Y\244\377\36]\254\377\34]\255\377\230\37^\256" \ -+ "\377\20\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36" \ -+ "P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16" \ -+ "1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377" \ -+ "\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1" \ -+ "\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256" \ -+ "\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4" \ -+ "\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377" \ -+ "\34^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0" \ -+ "\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377" \ -+ "\35^\256\377\37^\253\377\36\\\261\377\370\37^\256\377\20\34[\253\377" \ -+ "#b\262\377\35Z\263\377\35_\266\377\30]\253\377\34Z\255\377'Z\251\377" \ -+ "\14:n\223\0\1\4\0\0\2\0\0\1\0\0\0\3\0\0\0\1\0\5\0\0\0\7\0\1\3\2\0\0\2" \ -+ "\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264" \ -+ "\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377" \ -+ "\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0" \ -+ "\10\1\0\0\0\0\2\2\0\0\3\0\0\3\0\0\0\6\13\36\35\31W\242\377\37\\\254\377" \ -+ "\34]\255\377\230\37^\256\377\20\36]\255\377\36]\254\377\35]\264\377#" \ -+ "[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0" \ -+ "\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377" \ -+ "\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0" \ -+ "\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0" \ -+ "\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260" \ -+ "\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0" \ -+ "\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377" \ -+ "\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377\2" \ -+ "\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37" \ -+ "R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377" \ -+ "\370\37^\256\377\12\35[\256\377\"_\260\377\35Z\263\377\34^\265\377\31" \ -+ "^\253\377%`\254\377'P\220\377\0\27""9F\3\0\0\0\3\2\0\0\202\1\0\0\0\4" \ -+ "\3\0\5\0\1\0\5\0\0\2\1\0\0\3\0\0\210\0\0\0\0\10\16'Og\40[\251\377\31" \ -+ "`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377" \ -+ "\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0" \ -+ "\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\3\0\0\0\0\2\2\0\0\2\0\0\3\0\0\0\6" \ -+ "\11\34\32\31T\240\377\37\\\254\377\36]\254\377\230\37^\256\377\20\36" \ -+ "]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36P\227\315\0" \ -+ "\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251" \ -+ "\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256" \ -+ "\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0" \ -+ "\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10" \ -+ "\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377" \ -+ "\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17" \ -+ "\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377\34^\254" \ -+ "\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0" \ -+ "\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256" \ -+ "\377\37^\253\377\36\\\261\377\370\37^\256\377\20\"`\265\377\34Y\252\377" \ -+ "\40\\\262\377\32\\\262\377\35`\256\377+`\242\377\32""7a\201\0\1\20\11" \ -+ "\4\0\0\0\1\0\0\0\0\1\0\0\2\2\2\0\3\1\4\0\3\0\2\0\1\1\1\0\0\3\0\0\210" \ -+ "\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34" \ -+ "^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H" \ -+ "|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10" \ -+ "\4\0\0\0\0\1\2\0\0\1\0\0\4\0\0\0\5\10\33\32\31U\236\377\37]\252\377\36" \ -+ "]\254\377\230\37^\256\377\20\36]\255\377\36]\254\377\35]\264\377#[\256" \ -+ "\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0" \ -+ "\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10" \ -+ "\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0" \ -+ "\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1" \ -+ "\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377" \ -+ "![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7" \ -+ "\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370" \ -+ "\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377\2\13" \ -+ "\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\370" \ -+ "\37^\256\377\20\40a\265\377\33X\251\377!_\254\377\32]\254\377\36`\256" \ -+ "\377\32L\201\260\3\24(,\7\0\0\0\4\0\0\0\0\0\0\0\0\2\0\0\0\2\1\0\2\1\0" \ -+ "\0\4\0\1\0\1\0\0\0\0\1\2\0\210\0\0\0\0\10\16'Og\40[\251\377\31`\256\377" \ -+ "\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37" \ -+ "^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3" \ -+ "\0\0\1\0\2\0\270\0\0\0\0\1\4\0\0\0\202\0\1\0\0\5\4\0\0\0\6\11\32\27\32" \ -+ "V\237\377\"]\253\377\36]\254\377\230\37^\256\377\20\36]\255\377\36]\254" \ -+ "\377\35]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0" \ -+ "\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377" \ -+ "\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12" \ -+ ",Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0" \ -+ "\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255" \ -+ "\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0" \ -+ "\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377" \ -+ "\34]\255\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37" \ -+ "W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0" \ -+ "\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36" \ -+ "\\\261\377\370\37^\256\377\20\33]\261\377\36]\255\377\37]\246\377\36" \ -+ "`\256\377\35\\\254\377\2.[x\0\3\7\0\22\0\0\14\5\0\6\0\0\0\4\0\0\5\4\0" \ -+ "\0\3\0\0\1\0\0\0\5\0\0\0\1\0\2\0\0\0\5\0\210\0\0\0\0\10\16'Og\40[\251" \ -+ "\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34" \ -+ "]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0" \ -+ "\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\1\4\0\0\0\202\0\1\0\0\5\4\0" \ -+ "\0\0\7\10\32\27\33W\240\377#^\254\377\36]\254\377\230\37^\256\377\20" \ -+ "\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36P\227\315" \ -+ "\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]" \ -+ "\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\" \ -+ "\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3" \ -+ "\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377" \ -+ "\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263" \ -+ "\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0" \ -+ "\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377\34" \ -+ "^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0" \ -+ "\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35" \ -+ "^\256\377\37^\253\377\36\\\261\377\360\37^\256\377\4\40`\270\377\35]" \ -+ "\264\377\33[\262\377\34]\261\377\202\37]\260\377\202\37]\262\377\10+" \ -+ "_\252\377\31Z\256\377\34c\277\377\"\\\255\377\21""2]{\0\10\15\6\0\1\0" \ -+ "\0\6\4\11\0\220\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377" \ -+ "\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36" \ -+ "Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270" \ -+ "\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33W\240\377\37" \ -+ "\\\254\377\34]\257\377\230\37^\256\377\20\36]\255\377\36]\254\377\35" \ -+ "]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4" \ -+ "\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37" \ -+ "^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2" \ -+ "\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1" \ -+ "\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377" \ -+ "\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211" \ -+ "\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]" \ -+ "\255\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242" \ -+ "\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14" \ -+ "\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261" \ -+ "\377\360\37^\256\377\17\37Y\252\377\40]\255\377\40_\256\377\37^\255\377" \ -+ "\32[\253\377\33Z\252\377\34[\253\377\36]\255\377\27X\254\377\33]\264" \ -+ "\377$_\255\377\26An\223\0\20!#\0\0\4\0\6\2\3\0\221\0\0\0\0\10\16'Og\40" \ -+ "[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377" \ -+ "\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0" \ -+ "\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0" \ -+ "\0\4\1\0\0\4\7\30\25\33W\240\377\37\\\254\377\34]\257\377\230\37^\256" \ -+ "\377\20\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36" \ -+ "P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16" \ -+ "1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377" \ -+ "\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1" \ -+ "\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256" \ -+ "\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4" \ -+ "\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377" \ -+ "\34^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0" \ -+ "\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377" \ -+ "\35^\256\377\37^\253\377\36\\\261\377\360\37^\256\377\17\37^\243\377" \ -+ "\40^\247\377!\\\250\377\36X\251\377\37\\\255\377#b\262\377\37`\260\377" \ -+ "\30[\252\377\34c\277\377#^\254\377\30>k\220\1\23\37\40\0\1\0\0\4\0\0" \ -+ "\0\4\0\1\0\221\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377" \ -+ "\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36" \ -+ "Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270" \ -+ "\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33W\240\377\37" \ -+ "\\\254\377\34]\257\377\230\37^\256\377\20\36]\255\377\36]\254\377\35" \ -+ "]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4" \ -+ "\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37" \ -+ "^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2" \ -+ "\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1" \ -+ "\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377" \ -+ "\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211" \ -+ "\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]" \ -+ "\255\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242" \ -+ "\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14" \ -+ "\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261" \ -+ "\377\360\37^\256\377\20\33_\262\377\34]\255\377!^\256\377(a\260\377%" \ -+ "_\260\377\34Z\255\377\32\\\262\377\34b\272\377$^\257\377\24\77l\220\0" \ -+ "\22\36\35\1\0\0\0\7\0\0\0\6\1\0\0\1\0\0\0\1\1\1\0\220\0\0\0\0\10\16'" \ -+ "Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256" \ -+ "\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0" \ -+ "\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0" \ -+ "\2\0\0\4\1\0\0\4\7\30\25\33W\240\377\37\\\254\377\34]\257\377\230\37" \ -+ "^\256\377\20\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377" \ -+ "\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0" \ -+ "\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]" \ -+ "\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0" \ -+ "\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230" \ -+ "\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255" \ -+ "\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0" \ -+ "\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37" \ -+ "]\262\377\34^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0" \ -+ "\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377" \ -+ "\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\360\37^\256\377\20\34" \ -+ "\\\275\377\35^\272\377\32^\263\377\27Z\251\377\32\\\250\377\"_\257\377" \ -+ "%\\\257\377\"V\254\355\16/Zu\0\14\35\35\0\1\0\0\13\3\0\3\5\0\5\0\0\0" \ -+ "\4\0\0\2\0\0\0\1\0\0\220\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37" \ -+ "\\\255\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256" \ -+ "\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0" \ -+ "\1\0\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33" \ -+ "W\240\377\37\\\254\377\34]\257\377\230\37^\256\377\20\36]\255\377\36" \ -+ "]\254\377\35]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0" \ -+ "\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262" \ -+ "\377\230\37^\256\377\10\34]\255\377\36]\255\377\33\\\256\377#]\257\377" \ -+ "\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0" \ -+ "\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256\377\10\34]\255\377\35" \ -+ "_\255\377\40]\260\377![\255\377\34_\255\377\34\\\263\377\31""9r\230\0" \ -+ "\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251" \ -+ "\377\34]\255\377\370\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377" \ -+ "\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0" \ -+ "\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377" \ -+ "\36\\\261\377\360\37^\256\377\20\"[\254\377!_\264\377\32_\272\377\27" \ -+ "^\272\377\40a\265\377)Z\237\377\37@u\236\14#La\0\5\12\0\0\0\4\0\4\0\0" \ -+ "\0\10\3\0\0\0\0\4\0\0\0\14\3\0\3\10\0\1\1\0\0\220\0\0\0\0\10\16'Og\40" \ -+ "[\251\377\31`\256\377\37\\\255\377\35]\264\377\34^\252\377\"\\\256\377" \ -+ "\34]\255\377\230\37^\256\377\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0" \ -+ "\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0" \ -+ "\0\4\1\0\0\4\7\30\25\33W\240\377\37\\\254\377\34]\257\377\230\37^\256" \ -+ "\377\20\36]\255\377\36]\254\377\35]\264\377#[\256\377\32^\247\377\36" \ -+ "P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0\1\0\0\0\0\0\2\0\16" \ -+ "1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10\34]\255\377\36]\255\377" \ -+ "\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0\0\1\0\0\301\0\0\0\0\7\1" \ -+ "\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1\0\30D\203\263\230\37^\256" \ -+ "\377\10\34]\255\377\35_\255\377\40]\260\377![\255\377\34_\255\377\34" \ -+ "\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7\0\0\2\0\1\0\0\0\0\2\0\0\4" \ -+ "\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370\37^\256\377\10\37]\262\377" \ -+ "\34^\254\377\35^\262\377\37W\242\377\2\13\22\14\0\0\0\0\0\0\4\0\0\2\0" \ -+ "\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241\377\33^\254\377\"[\254\377" \ -+ "\35^\256\377\37^\253\377\36\\\261\377\360\37^\256\377\20\40[\237\377" \ -+ "\37[\243\377$_\255\377(]\251\377\36J\207\271\13'Nd\0\12\27\25\0\2\0\0" \ -+ "\0\1\0\0\7\3\4\0\4\0\1\0\1\0\0\0\0\1\0\0\0\2\7\0\0\0\5\0\2\0\1\0\220" \ -+ "\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255\377\35]\264\377\34" \ -+ "^\252\377\"\\\256\377\34]\255\377\230\37^\256\377\10\36Z\260\377\32H" \ -+ "|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0\2\0\270\0\0\0\0\10" \ -+ "\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33W\240\377\37\\\254\377\34" \ -+ "]\257\377\230\37^\256\377\20\36]\255\377\36]\254\377\35]\264\377#[\256" \ -+ "\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0\1\0\0\4\0\0\0\0\0\4\0" \ -+ "\1\0\0\0\0\0\2\0\16""1Wr\33]\251\377\40\\\262\377\230\37^\256\377\10" \ -+ "\34]\255\377\36]\255\377\33\\\256\377#]\257\377\12,Qj\0\2\0\0\6\0\4\0" \ -+ "\0\1\0\0\301\0\0\0\0\7\1\1\3\0\0\1\2\0\4\0\0\0\0\0\7\0\1\1\0\0\0\2\1" \ -+ "\0\30D\203\263\230\37^\256\377\10\34]\255\377\35_\255\377\40]\260\377" \ -+ "![\255\377\34_\255\377\34\\\263\377\31""9r\230\0\2\0\0\211\0\0\0\0\7" \ -+ "\0\0\2\0\1\0\0\0\0\2\0\0\4\0\6\0\2\17\30\25\"Y\251\377\34]\255\377\370" \ -+ "\37^\256\377\10\37]\262\377\34^\254\377\35^\262\377\37W\242\377\2\13" \ -+ "\22\14\0\0\0\0\0\0\4\0\0\2\0\0\210\0\0\0\0\10\1\1\0\0\0\7\14\3\37R\241" \ -+ "\377\33^\254\377\"[\254\377\35^\256\377\37^\253\377\36\\\261\377\360" \ -+ "\37^\256\377\20\36_\263\377![\244\342\26Ey\244\0\"@O\0\11\26\22\0\3\4" \ -+ "\0\1\2\0\0\4\0\0\0\1\0\4\0\1\1\1\0\0\0\0\0\1\1\1\0\2\3\0\0\1\1\0\0\1" \ -+ "\0\0\0\4\0\17\11\220\0\0\0\0\10\16'Og\40[\251\377\31`\256\377\37\\\255" \ -+ "\377\35]\264\377\34^\252\377\"\\\256\377\34]\255\377\230\37^\256\377" \ -+ "\10\36Z\260\377\32H|\247\0\3\2\0\1\0\5\0\1\0\0\0\3\0\0\0\0\3\0\0\1\0" \ -+ "\2\0\270\0\0\0\0\10\4\0\1\0\0\1\4\0\0\2\0\0\4\1\0\0\4\7\30\25\33W\240" \ -+ "\377\37\\\254\377\34]\257\377\230\37^\256\377\20\36]\255\377\36]\254" \ -+ "\377\35]\264\377#[\256\377\32^\247\377\36P\227\315\0\5\7\0\1\0\0\0\0" \ -+ "\0\13\3\1\0\2\0\15\4\0\6\7\0\0\0\0\1\11\0\21""2Sl&`\237\377\23^\261\377" \ -+ "\230\35_\253\377\6#]\257\377\32\\\263\377\32]\264\377$Y\235\377\23*T" \ -+ "l\0\0\20\11\202\4\0\5\0\300\0\0\0\0\10\3\0\11\0\0\4\0\0\0\3\0\0\2\0\5" \ -+ "\0\10\0\0\0\4\5\0\0\0\5\27\25\36F\203\263\230\35_\253\377\10\37^\255" \ -+ "\377\35X\264\377\37\\\265\377\30_\255\377\26^\262\377#Y\257\377\36""6" \ -+ "d\204\1\4\0\0\210\0\0\0\0\202\0\0\2\0\6\0\1\0\0\5\3\0\0\0\1\0\0\0\21" \ -+ "&)$a\232\377\10d\273\377\370\35_\253\377\10\40]\256\377\32]\256\377\37" \ -+ "]\264\377-U\232\377\0\11\35\35\5\1\2\0\7\0\5\0\1\0\5\0\210\0\0\0\0\10" \ -+ "\16\0\0\6\0\3\31\27!S\220\377\26`\267\377\22]\272\377\34b\270\377\35" \ -+ "a\262\377\30a\260\377\330\35_\253\377\1\35[\256\377\203\36\\\257\377" \ -+ "\202\37]\260\377\202\40^\261\377\202\40^\251\377\202\40^\253\377\202" \ -+ "\37\\\254\377\202\36[\254\377\20\27_\263\377\31_\264\377\35`\261\377" \ -+ "!^\256\377%^\253\377&Z\245\377\37O\227\315\25D\214\277\35\"6@\13\21\37" \ -+ "\40\0\2\10\0\0\1\0\0\1\3\0\0\2\3\0\0\1\0\0\0\1\0\2\0\230\0\0\0\0\10\1" \ -+ "(Sl']\233\377\33_\262\377\24[\265\377\37]\264\377%^\257\377\34[\253\377" \ -+ "\30`\264\377\230\35_\253\377\10\24`\264\377\27F|\247\0\2\22\14\6\0\0" \ -+ "\0\7\1\0\0\0\1\0\0\0\1\2\0\1\2\6\0\270\0\0\0\0\10\10\0\13\3\0\2\10\0" \ -+ "\0\3\0\0\7\0\0\0\2\10\30\25(U\226\377\27_\263\377\32c\257\377\230\35" \ -+ "_\253\377\20\27`\254\377\33`\255\377\34c\265\377\23_\267\377\25`\263" \ -+ "\377\35P\211\274\0\2\25\22\17\0\0\11\0\0\7\0\0\0\2\0\4\0\0\0\0\0\2\0" \ -+ "\0\2\25\22\14""1^{!]\246\377\25^\272\377\230\36]\255\377\10\35[\256\377" \ -+ "\32`\265\377\35d\264\377&\\\230\377\20.J^\0\1\5\0\3\0\0\0\3\1\0\0\300" \ -+ "\0\0\0\0\10\1\0\7\0\0\2\0\0\0\3\0\0\1\0\5\0\7\0\0\0\1\1\0\0\0\4\22\14" \ -+ "$Fv\377\230\36]\255\377\10\36]\252\377\"[\264\377#\\\263\377\32\\\250" \ -+ "\377\31]\260\377%[\263\377\31""7m\223\0\4\7\0\210\0\0\0\0\10\1\0\0\0" \ -+ "\0\1\3\0\0\0\2\0\1\0\0\0\0\0\5\0\0\16-5(U\230\377\27^\272\377\370\36" \ -+ "]\255\377\10\30\\\255\377\27`\257\377\34`\261\377%X\221\377\0\16\31\27" \ -+ "\0\3\0\0\0\2\0\0\0\4\0\0\210\0\0\0\0\10\10\0\0\0\0\14\35\35)T\211\377" \ -+ "$_\255\377\36[\256\377\"Y\253\377#Z\254\377\"\\\256\377\330\36]\255\377" \ -+ "\203!^\257\377\2\40]\256\377\37\\\255\377\203\36[\254\377\30\24Z\262" \ -+ "\377\25[\263\377\31\\\263\377\33]\263\377\35^\262\377\40]\260\377\40" \ -+ "]\256\377![\254\377'Z\255\377\"R\236\377\33D\206\266\24""6f\207\16(I" \ -+ "^\7\32+2\0\12\20\11\0\3\2\0\0\3\21\14\0\0\13\3\0\1\4\0\0\3\0\0\1\3\0" \ -+ "\0\1\1\0\0\1\0\0\0\2\0\5\0\230\0\0\0\0\10\5+Xr)]\231\377\40c\262\377" \ -+ "\34_\266\377!^\257\377#[\246\377\34Z\245\377\32_\255\377\230\36]\255" \ -+ "\377\10\37]\264\377\35A\177\377\0\0\33\32\4\0\2\0\6\1\0\0\1\2\4\0\0\4" \ -+ "\7\0\2\2\4\0\270\0\0\0\0\10\6\0\0\0\0\3\2\0\0\4\0\0\0\2\0\0\0\16%)'Y" \ -+ "\240\377\26_\273\377\24\\\260\377\230\36]\255\377\11![\257\377\"Y\253" \ -+ "\377\"Y\254\377\36Z\260\377#^\254\377&Q\206\377\0\12\33\32\11\0\0\0\2" \ -+ "\3\5\0\202\0\0\0\0\5\0\0\5\0\0\6\30\25\25.Vo.T\222\377.\\\247\345\230" \ -+ "!]\265\371\10'W\254\355#[\260\363\"\\\255\355\"R\220\304\16,Nd\0\11\22" \ -+ "\14\0\10\4\0\0\6\0\0\300\0\0\0\0\10\0\0\4\0\0\2\0\0\0\4\0\0\5\2\13\3" \ -+ "\7\0\2\0\10\3\0\0\0\12\16\6$=\\x\230!]\265\371\10\34]\235\326\"]\251" \ -+ "\350(`\252\352#c\243\337\37b\250\350\"[\252\352\21:r\230\0\14!#\210\0" \ -+ "\0\0\0\10\5\1\0\0\0\1\3\0\0\2\5\0\0\0\2\0\5\2\11\0\20\26,25P\177\255" \ -+ "2]\241\334\370!]\265\371\10*W\262\366(\\\262\366'W\254\355)L\214\277" \ -+ "\0\21)/\0\5\11\0\0\1\2\0\0\3\2\0\210\0\0\0\0\10\0\2\22\14\0\22""4>\33" \ -+ "L\207\271\"[\250\350(]\255\355(Y\250\350'Z\253\352\"Z\255\355\330!]\265" \ -+ "\371\26!]\245\342\40\\\244\342\37[\243\337\36Z\242\337\35Y\241\334\34" \ -+ "X\240\334\33W\237\331\32V\236\331!M\212\274\40J\206\266\35F~\252\30=" \ -+ "q\230\23""5c\204\13*Vo\7#Ka\2\36EX\4\12\26\22\0\7\21\14\0\3\13\3\0\1" \ -+ "\7\0\0\1\5\0\0\1\4\0\202\0\1\2\0\10\0\1\7\0\0\1\4\0\0\3\2\0\1\3\0\0\0" \ -+ "\1\0\0\0\0\0\0\1\0\2\0\1\0\4\0\230\0\0\0\0\10\6.k\220\35Q\232\323\32" \ -+ "X\257\360\33[\265\371\40Y\260\363#Z\252\352\"]\253\352\35`\261\363\230" \ -+ "!]\265\371\10/Y\225\312(Aj\215\0\5\30\25\3\0\2\0\1\0\0\0\0\1\4\0\0\0" \ -+ "\2\0\3\0\0\0\270\0\0\0\0\10\12\2\0\0\0\4\3\0\0\4\0\0\0\0\2\0\0\11*/'" \ -+ "I\221\304'V\256\3600[\252\352\230!]\265\371\20\"\\\246\345&Z\245\342" \ -+ "'Y\242\337']\247\345!\\\240\377\31K\200\255\0\22.5\0\3\13\3\0\0\0\0\0" \ -+ "\1\0\0\4\3\0\0\4\0\0\0\1\0\2\0\2\2\16\6\0\1\26\22\0\0\31\27\230\0\3\0" \ -+ "\0\10\0\1\0\0\0\3\7\0\0\7\17\11\0\12\22\14\0\1\4\0\4\0\0\0\5\0\0\0\1" \ -+ "\0\2\0\300\0\0\0\0\10\1\1\1\0\0\5\0\0\0\4\3\0\1\0\11\0\7\0\4\0\6\0\0" \ -+ "\0\0\1\0\0\0\11\31\27\230\0\3\0\0\10\0\12\1\0\0\1\4\0\0\0\2\0\0\2\0\0" \ -+ "\0\3\0\0\0\3\13\3\6\2\0\0\12\0\0\0\210\0\0\0\0\10\3\0\0\0\0\0\0\0\0\4" \ -+ "\5\0\0\1\0\0\1\1\0\0\0\1\0\0\0\5\15\6\0\4\27\25\370\0\3\0\0\10\0\3\5" \ -+ "\0\0\6\12\0\0\7\20\11\0\16\25\22\0\2\0\0\1\0\0\0\0\0\0\0\0\1\4\0\210" \ -+ "\0\0\0\0\10\12\1\0\0\1\1\0\0\0\10\13\3\0\2\13\3\0\1\7\0\0\1\2\0\0\5\7" \ -+ "\0\0\6\12\0\330\0\3\0\0\202\0\4\4\0\202\0\3\3\0\204\0\2\2\0\6\0\1\14" \ -+ "\3\0\2\13\3\0\1\7\0\0\2\5\0\0\2\1\0\1\2\0\0\202\1\1\0\0\2\4\5\0\0\1\2" \ -+ "\0\0\203\0\1\0\0\202\0\0\0\0\11\1\1\1\0\0\3\2\0\0\5\1\0\1\3\0\0\0\2\0" \ -+ "\0\0\1\0\0\1\1\0\0\2\2\4\0\2\0\5\0\230\0\0\0\0\10\7\0\0\0\5\6\1\0\0\4" \ -+ "\11\0\0\3\12\0\0\2\5\0\0\1\0\0\0\2\0\0\0\4\0\0\230\0\3\0\0\10\0\6\22" \ -+ "\14\0\11\14\3\0\2\0\0\1\3\0\0\3\6\0\0\1\5\4\0\2\2\2\0\4\0\0\0\270\0\0" \ -+ "\0\0\10\7\0\5\0\0\0\5\0\0\4\0\0\6\4\0\0\1\0\0\0\0\12\26\22\0\3\16\6\0" \ -+ "\4\2\0\230\0\3\0\0\20\0\5\16\6\0\3\11\0\0\0\7\0\0\0\13\3\0\2\16\6\0\7" \ -+ "\17\11\1\0\0\0\11\0\0\0\0\0\0\0\1\1\0\0\1\0\0\0\3\0\0\0\4\1\0\0\6\2\0" \ -+ "\0\10\1\0\0\7\0\0\0\230\4\0\0\0\3\6\2\0\0\0\1\0\0\0\2\0\0\202\0\1\0\0" \ -+ "\3\0\0\0\0\2\4\3\0\0\1\4\0\301\0\0\0\0\7\0\1\0\0\0\1\3\0\1\0\11\0\5\0" \ -+ "\5\0\14\7\3\3\0\1\0\0\0\1\5\0\230\4\0\0\0\10\0\0\2\0\4\0\11\0\7\0\10" \ -+ "\0\11\0\5\0\3\0\5\0\1\0\14\3\4\0\11\0\11\0\0\0\210\0\0\0\0\10\5\1\0\0" \ -+ "\0\0\0\0\0\2\3\0\0\2\0\0\1\2\0\0\2\2\0\0\0\1\0\0\0\2\0\0\370\4\0\0\0" \ -+ "\10\7\0\0\0\4\0\0\0\1\0\0\0\6\2\1\0\6\0\0\0\14\3\6\3\4\0\3\0\1\0\6\0" \ -+ "\210\0\0\0\0\10\4\0\0\0\1\0\2\0\0\0\5\0\1\0\4\0\10\2\4\0\7\0\0\0\5\1" \ -+ "\0\0\0\0\2\0\330\4\0\0\0\207\4\0\7\0\2\5\0\10\0\4\0\0\0\202\2\1\0\0\202" \ -+ "\1\2\0\0\202\0\3\0\0\11\0\4\0\0\0\1\11\0\0\0\11\0\0\0\5\0\0\1\3\0\0\0" \ -+ "\0\0\1\0\0\0\3\0\0\0\4\2\0\0\204\0\1\0\0\4\0\0\0\0\3\3\3\0\1\1\3\0\0" \ -+ "\0\4\0\230\0\0\0\0\2\14\0\0\3\10\0\4\0\202\1\0\5\0\4\4\0\2\0\6\0\0\0" \ -+ "\7\1\1\0\1\0\0\0\230\4\0\0\0\10\0\4\0\0\2\10\0\0\0\2\0\0\1\2\0\0\0\2" \ -+ "\0\0\0\1\0\0\2\1\0\0\6\0\0\0\270\0\0\0\0\10\4\0\4\0\0\0\7\0\0\2\5\0\6" \ -+ "\2\0\0\3\0\0\0\0\0\5\0\1\0\0\0\12\0\0\0\230\4\0\0\0\13\0\1\0\0\4\1\0" \ -+ "\0\6\0\0\0\7\2\0\0\1\0\0\0\0\1\0\0\1\0\0\0\3\0\0\0\1\2\4\0\0\1\3\0\0" \ -+ "\1\0\0\203\0\2\0\0\202\0\3\0\0\230\0\0\4\0\10\3\0\0\0\4\1\0\0\1\0\0\0" \ -+ "\3\0\0\0\6\0\0\0\10\0\1\0\10\0\3\0\6\0\4\0\300\0\0\0\0\10\1\1\1\0\0\0" \ -+ "\0\0\0\1\0\0\0\0\5\0\2\0\5\0\1\0\0\0\0\1\0\0\1\1\1\0\230\0\0\4\0\3\0" \ -+ "\3\0\0\0\2\1\0\2\3\5\0\203\0\2\0\0\2\0\1\2\0\0\1\0\0\210\0\0\0\0\3\3" \ -+ "\0\0\0\0\0\0\0\0\1\5\0\202\0\0\5\0\3\1\0\5\0\3\0\5\0\6\1\10\0\370\0\0" \ -+ "\4\0\10\1\2\0\0\1\3\0\0\0\2\0\0\0\1\0\0\1\0\4\0\4\0\5\0\3\0\0\0\3\0\4" \ -+ "\0\210\0\0\0\0\203\0\1\0\0\5\3\0\0\0\6\1\0\0\4\0\0\0\3\0\0\0\1\0\4\0" \ -+ "\330\0\0\4\0\210\0\1\0\0\6\4\0\0\0\3\0\0\0\1\0\2\0\0\0\2\0\0\0\4\0\0" \ -+ "\1\4\0\202\0\2\5\0\2\7\0\0\0\6\0\0\0\202\4\0\0\0\7\1\0\0\0\0\0\2\0\0" \ -+ "\0\4\0\0\3\6\0\0\1\0\0\1\1\0\0\2\2\0\0\204\0\0\0\0\1\0\0\2\0\230\0\0" \ -+ "\0\0\4\0\2\0\0\0\1\0\0\0\3\2\0\0\2\0\0\202\0\1\0\0\2\1\3\0\0\0\3\0\0" \ -+ "\230\0\0\4\0\3\2\0\6\0\3\1\6\0\0\0\4\0\202\0\0\5\0\3\0\0\4\0\3\1\2\0" \ -+ "\4\0\0\0\270\0\0\0\0\1\1\0\0\0\204\0\2\0\0\3\0\6\0\0\0\5\0\0\0\3\0\0" \ -+ "\230\0\0\4\0\10\1\0\7\0\3\0\5\0\4\0\2\0\5\0\1\0\3\0\0\0\0\0\0\0\0\2\1" \ -+ "\0\0\1\0\0\202\0\2\5\0\6\0\0\2\0\0\1\3\0\1\2\4\0\0\1\2\0\0\2\4\0\0\3" \ -+ "\5\0\230\0\2\0\0\4\0\2\11\0\0\3\10\0\0\2\5\0\0\2\0\0\202\0\3\0\0\2\0" \ -+ "\2\0\0\0\4\0\0\300\0\0\0\0\5\3\1\4\0\1\0\0\0\0\0\0\0\0\1\2\0\0\2\3\0" \ -+ "\202\0\1\0\0\1\3\3\5\0\231\0\2\0\0\7\0\4\7\0\0\0\11\0\0\2\5\0\0\4\0\0" \ -+ "\0\5\0\0\0\1\0\0\0\1\2\0\210\0\0\0\0\202\1\0\0\0\6\0\0\2\0\2\1\7\0\0" \ -+ "\0\10\0\0\0\7\0\1\0\6\0\2\0\5\0\370\0\2\0\0\202\0\0\14\3\6\0\1\0\0\0" \ -+ "\2\0\0\0\1\6\0\0\0\2\0\2\4\0\0\3\5\0\0\210\0\0\0\0\10\0\0\7\0\0\0\5\0" \ -+ "\0\0\4\0\1\0\4\0\0\0\5\0\0\0\7\0\0\0\13\3\2\0\15\6\330\0\2\0\0\210\0" \ -+ "\1\0\0\202\4\0\0\0\202\3\0\0\0\6\1\0\2\0\2\0\3\0\2\0\5\0\1\0\5\0\4\0" \ -+ "\2\0\3\0\2\0\203\3\0\0\0\1\1\0\0\0\202\2\1\0\0\3\1\0\0\0\2\0\1\0\2\0" \ -+ "\3\0\202\0\0\2\0\3\0\0\0\0\3\3\3\0\5\5\3\0\230\0\0\0\0\202\0\4\0\0\4" \ -+ "\0\6\0\0\0\3\0\0\0\5\0\0\0\2\0\0\202\0\3\0\0\230\0\2\0\0\10\5\0\6\0\1" \ -+ "\0\5\0\1\0\10\0\1\0\6\0\1\0\5\0\3\1\4\0\2\1\0\0\1\0\0\0\270\0\0\0\0\10" \ -+ "\1\4\0\0\0\3\0\0\0\2\3\0\0\0\4\0\2\2\12\0\0\1\15\6\0\3\22\14\0\0\16\6" \ -+ "\230\0\2\0\0\14\2\0\13\3\0\0\7\0\0\0\5\0\0\0\2\0\1\0\2\0\1\1\3\0\0\0" \ -+ "\2\0\0\1\4\0\0\2\5\0\0\0\2\0\3\0\0\0\6\0\0\0\202\7\0\0\0\2\6\0\0\0\4" \ -+ "\0\2\0\231\3\0\0\0\7\5\0\0\0\6\0\0\0\4\0\0\0\2\0\3\0\0\1\6\0\0\0\7\0" \ -+ "\0\1\10\0\300\0\0\0\0\10\3\0\4\0\2\0\1\0\0\0\0\0\0\2\0\0\0\6\3\0\0\3" \ -+ "\3\0\0\2\5\0\0\0\4\0\230\3\0\0\0\10\7\0\0\0\4\0\4\0\0\0\13\3\1\1\11\0" \ -+ "\5\5\3\0\3\0\0\0\4\0\0\0\7\1\3\0\210\0\0\0\0\4\3\3\3\0\4\3\1\0\1\0\0" \ -+ "\0\0\1\0\0\202\0\2\0\0\2\0\4\0\0\0\3\0\0\370\3\0\0\0\4\4\0\1\0\4\0\2" \ -+ "\0\5\2\0\0\1\1\0\0\202\0\0\14\3\202\0\1\2\0\210\0\0\0\0\10\0\0\2\0\0" \ -+ "\0\0\0\2\3\0\0\1\2\0\0\0\2\0\0\0\6\0\0\0\2\0\0\0\3\0\0\334\3\0\0\0\204" \ -+ "\4\0\0\0\202\0\2\0\0\1\0\1\0\0\202\0\2\1\0\1\0\0\0\0\202\1\0\0\0\3\0" \ -+ "\1\0\0\0\2\1\0\1\3\2\0\202\0\0\2\0\202\0\0\4\0\2\0\0\5\0\2\0\3\0\202" \ -+ "\1\0\4\0\3\2\0\5\0\1\0\5\0\0\0\2\0\232\0\0\0\0\10\1\4\13\3\0\0\5\0\3" \ -+ "\0\2\0\4\0\2\0\7\0\7\0\3\0\7\0\5\0\12\0\4\0\13\3\230\3\0\0\0\3\6\4\0" \ -+ "\0\1\1\0\0\2\3\0\0\202\1\0\0\0\2\4\0\0\0\3\2\0\0\271\0\0\0\0\10\0\4\3" \ -+ "\0\0\0\2\0\2\0\3\0\4\0\0\0\13\1\0\3\7\0\0\0\11\0\0\0\12\0\0\0\230\3\0" \ -+ "\0\0\202\0\2\0\0\6\1\6\0\0\0\2\0\0\0\1\0\0\3\4\0\0\0\0\0\0\0\0\4\0") -+ -+ diff --git a/buildroot-external/patches/psplash/hzdr/logo.png b/buildroot-external/patches/psplash/logo-hzdr.png similarity index 100% rename from buildroot-external/patches/psplash/hzdr/logo.png rename to buildroot-external/patches/psplash/logo-hzdr.png diff --git a/buildroot-external/patches/psplash/thinroot/logo.png b/buildroot-external/patches/psplash/logo-thinroot.png similarity index 100% rename from buildroot-external/patches/psplash/thinroot/logo.png rename to buildroot-external/patches/psplash/logo-thinroot.png diff --git a/buildroot-external/patches/psplash/thinroot/0001-logo.patch b/buildroot-external/patches/psplash/thinroot/0001-logo.patch deleted file mode 100644 index bdde4b6..0000000 --- a/buildroot-external/patches/psplash/thinroot/0001-logo.patch +++ /dev/null @@ -1,1308 +0,0 @@ ---- psplash/psplash-poky-img.h.orig -+++ psplash/psplash-poky-img.h -@@ -0,0 +1,1305 @@ -+/* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ -+ -+#define POKY_IMG_ROWSTRIDE (1356) -+#define POKY_IMG_WIDTH (339) -+#define POKY_IMG_HEIGHT (104) -+#define POKY_IMG_BYTES_PER_PIXEL (4) /* 3:RGB, 4:RGBA */ -+#define POKY_IMG_RLE_PIXEL_DATA ((uint8*) \ -+ "\377\377\377\377\0\225\377\377\377\0\207\323\312\302\0""2\323\312\303" \ -+ "\0\322\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307\252}\0\322\276" \ -+ "\241\0\323\267\206\0\323\265\201\0\325\271\206\0\327\272\202\0\333\272" \ -+ "x\0\320\264\201\0\305\253\202\0\312\242X\0\327\272\177\0\335\271i\0\341" \ -+ "\302\177\2\350\304q\33\353\317\2208\360\310jD\366\315lB\373\324b\36\371" \ -+ "\325s\0\365\317o\11\372\342t:\357\311VO\356\300M\207\371\305/\234\373" \ -+ "\316<\231\370\326d{\370\327rL\371\326k\37\370\325\206\0\372\327r\0\372" \ -+ "\330z\0\373\327l\0\372\331o\0\373\332d\0\371\335\222\0\371\335\215\0" \ -+ "\372\331}\0\367\331\226\0\371\330\207\0\365\330\235\0\370\327\214\0\373" \ -+ "\325|\0\366\330\226\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377" \ -+ "\377\377\377\0\377\377\377\377\0\213\377\377\377\0\207\323\312\302\0" \ -+ "2\323\312\303\0\322\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307" \ -+ "\252}\0\322\276\241\0\323\267\206\0\323\265\201\0\325\271\206\0\327\272" \ -+ "\202\0\333\272x\0\320\264\201\0\305\253\202\0\312\242X\0\327\274\206" \ -+ "\26\336\270bf\346\274P\252\362\3019\323\372\305'\360\375\314!\370\375" \ -+ "\320#\370\375\3242\326\373\325J\234\372\317M\263\376\332&\363\372\320" \ -+ "6\375\372\3055\377\376\312\40\377\376\314\5\377\377\315\0\377\377\322" \ -+ "\20\375\374\3304\331\373\326Y\237\372\327pQ\372\330\177\10\373\327m\0" \ -+ "\372\331o\0\373\332d\0\371\335\222\0\371\335\215\0\372\331}\0\367\331" \ -+ "\226\0\371\330\207\0\365\330\235\0\370\327\214\0\373\325|\0\366\330\226" \ -+ "\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377\377\377\377\0\377" \ -+ "\377\377\377\0\213\377\377\377\0\207\323\312\302\0""2\323\312\303\0\322" \ -+ "\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307\252}\0\322\276\241" \ -+ "\0\323\267\206\0\323\265\201\0\325\271\206\0\327\272\202\0\333\272x\0" \ -+ "\320\264\202\0\303\251\202\5\311\241Yb\317\234-\327\332\237\17\377\351" \ -+ "\253\1\377\372\276\0\377\377\313\0\377\376\320\0\377\376\325\0\377\376" \ -+ "\331\0\377\376\333\4\377\376\333\23\377\376\330'\377\377\327-\377\377" \ -+ "\331'\377\376\330.\377\375\327-\377\376\326\30\377\376\324\0\377\377" \ -+ "\325\0\377\376\334\7\377\376\335&\371\375\331M\304\372\327lM\372\331" \ -+ "r\2\373\332d\0\371\335\222\0\371\335\215\0\372\331}\0\367\331\226\0\371" \ -+ "\330\207\0\365\330\235\0\370\327\214\0\373\325|\0\366\330\226\0\365\336" \ -+ "\257\0\363\337\273\0\221\363\337\272\0\377\377\377\377\0\377\377\377" \ -+ "\377\0\213\377\377\377\0\207\323\312\302\0""2\323\312\303\0\322\310\275" \ -+ "\0\277\252\215\0\272\234k\0\275\235j\0\307\252}\0\322\276\241\0\323\267" \ -+ "\206\0\323\265\201\0\325\271\206\0\327\272\202\0\333\272x\0\320\266\207" \ -+ "\37\311\246g\256\333\253B\377\352\264)\377\361\270\23\377\356\262\2\377" \ -+ "\356\257\0\377\372\300\1\377\376\321\0\377\376\326\1\377\376\334\0\377" \ -+ "\376\337\0\377\376\341\2\377\376\341\11\377\376\336\32\377\375\335\36" \ -+ "\377\376\337\16\377\376\337\24\377\376\336\35\377\376\336\32\377\376" \ -+ "\334\6\377\376\332\0\377\376\337\0\377\376\341\16\377\375\335*\374\374" \ -+ "\332S\246\373\332i%\371\335\225\0\371\335\215\0\372\331}\0\367\331\226" \ -+ "\0\371\330\207\0\365\330\235\0\370\327\214\0\373\325|\0\366\330\226\0" \ -+ "\365\336\257\0\363\337\273\0\221\363\337\272\0\377\377\377\377\0\377" \ -+ "\377\377\377\0\213\377\377\377\0\207\323\312\302\0""2\323\312\303\0\322" \ -+ "\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307\252}\0\322\276\241" \ -+ "\0\323\267\206\0\323\265\201\0\325\271\210\0\327\272\205\1\332\271{P" \ -+ "\336\264V\325\354\2703\377\370\300\40\377\376\306\22\377\377\314\14\377" \ -+ "\376\317\5\377\372\305\1\377\366\266\0\377\374\304\1\377\376\327\1\377" \ -+ "\375\333\0\377\376\336\1\377\376\342\5\377\376\343\4\377\375\344\6\377" \ -+ "\376\342\25\377\375\337\30\377\375\342\11\377\376\342\10\377\376\342" \ -+ "\17\377\376\342\16\377\375\340\5\377\376\332\0\377\376\342\3\377\376" \ -+ "\344\21\377\376\341\36\377\375\335>\334\373\334\177S\371\335\223\0\372" \ -+ "\331}\0\367\331\226\0\371\330\207\0\365\330\235\0\370\327\214\0\373\325" \ -+ "|\0\366\330\226\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377\377" \ -+ "\377\377\0\377\377\377\377\0\213\377\377\377\0\207\323\312\302\0""2\323" \ -+ "\312\303\0\322\310\275\0\277\252\215\0\272\234k\0\275\235j\0\307\252" \ -+ "}\0\322\276\241\0\323\267\206\0\323\266\206\0\324\267\2065\332\260X\257" \ -+ "\346\262/\372\364\271\25\377\374\301\13\377\376\306\3\377\376\312\0\377" \ -+ "\376\315\0\377\376\322\0\377\377\327\4\377\375\317\2\377\374\275\0\377" \ -+ "\376\312\0\377\376\334\0\377\376\336\1\377\376\342\4\377\376\344\7\377" \ -+ "\376\346\12\377\376\350\13\377\376\347\20\377\376\343\24\377\376\344" \ -+ "\15\377\375\345\10\377\376\345\15\377\376\345\14\377\376\336\2\377\376" \ -+ "\331\1\377\376\346\12\377\376\346\20\377\376\343\26\377\377\337*\371" \ -+ "\373\334m\205\372\331\205\16\366\331\231\0\371\330\207\0\365\330\235" \ -+ "\0\370\327\214\0\373\325|\0\366\330\226\0\365\336\257\0\363\337\273\0" \ -+ "\221\363\337\272\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377" \ -+ "\0\207\323\312\302\0\34\323\312\303\0\322\310\275\0\277\252\215\0\272" \ -+ "\234k\0\275\235j\0\307\252}\0\322\277\243\0\323\271\217\22\322\254f\213" \ -+ "\334\2515\363\352\261\22\377\366\273\5\377\375\300\0\377\377\306\0\377" \ -+ "\377\312\1\377\376\316\0\377\376\321\0\377\376\324\2\377\376\330\2\377" \ -+ "\375\335\1\377\376\323\0\377\376\302\1\377\376\321\0\377\376\337\1\377" \ -+ "\375\341\3\377\375\344\10\377\376\347\15\377\376\350\20\377\202\376\351" \ -+ "\21\377\24\376\350\21\377\376\347\16\377\376\350\14\377\377\352\14\377" \ -+ "\376\343\6\377\376\325\1\377\376\346\12\377\376\352\21\377\376\347\23" \ -+ "\377\376\345\23\377\376\340\36\377\374\332^\306\370\327\217G\370\330" \ -+ "\212\0\365\330\235\0\370\327\214\0\373\325|\0\366\330\226\0\365\336\257" \ -+ "\0\363\337\273\0\221\363\337\272\0\377\377\377\377\0\377\377\377\377" \ -+ "\0\213\377\377\377\0\207\323\312\302\0""2\323\312\303\0\322\310\275\0" \ -+ "\277\252\215\0\272\234k\0\275\235j\0\307\254\202\0\317\267\2235\321\250" \ -+ "S\302\335\245\31\377\353\261\6\377\364\271\0\377\373\277\0\377\376\304" \ -+ "\0\377\376\311\1\377\376\314\0\377\376\320\1\377\376\323\1\377\376\326" \ -+ "\1\377\376\331\1\377\376\334\1\377\376\341\1\377\376\321\1\377\376\306" \ -+ "\0\377\376\332\3\377\375\341\3\377\375\343\7\377\376\346\15\377\376\351" \ -+ "\22\377\376\352\24\377\376\353\27\377\375\354\32\377\375\353\31\377\376" \ -+ "\352\22\377\376\352\21\377\376\344\14\377\376\341\14\377\376\352\16\377" \ -+ "\375\353\23\377\376\353\26\377\376\350\21\377\376\346\20\377\376\341" \ -+ "\35\377\376\330M\362\372\327\177\204\364\330\240\4\370\327\215\0\373" \ -+ "\325|\0\366\330\226\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377" \ -+ "\377\377\377\0\377\377\377\377\0\213\377\377\377\0\207\323\312\302\0" \ -+ "\36\323\312\303\0\322\310\275\0\277\252\215\0\272\234k\0\275\237n\0\305" \ -+ "\246u]\315\2358\352\334\243\12\377\352\260\0\377\364\270\0\377\371\276" \ -+ "\0\377\375\302\1\377\376\306\2\377\376\313\1\377\376\316\0\377\376\321" \ -+ "\0\377\376\324\0\377\376\330\0\377\375\332\0\377\376\333\0\377\376\337" \ -+ "\2\377\376\341\2\377\376\314\0\377\376\316\1\377\376\340\5\377\376\342" \ -+ "\3\377\376\345\16\377\375\351\22\377\375\352\23\377\375\353\27\377\203" \ -+ "\375\354\30\377\21\376\353\25\377\376\354\20\377\376\354\16\377\376\353" \ -+ "\20\377\375\355\25\377\375\354\30\377\376\353\24\377\376\350\17\377\376" \ -+ "\347\15\377\376\341\40\377\376\331D\377\373\326q\252\370\327\214\33\373" \ -+ "\325}\0\366\330\226\0\365\336\257\0\363\337\273\0\221\363\337\272\0\377" \ -+ "\377\377\377\0\377\377\377\377\0\213\377\377\377\0\207\323\312\302\0" \ -+ "2\323\312\303\0\322\310\275\0\277\252\215\0\272\235o\0\276\233bg\311" \ -+ "\227+\365\331\237\4\377\346\253\0\377\357\264\0\377\367\273\0\377\374" \ -+ "\300\0\377\376\305\0\377\376\311\2\377\376\314\0\377\375\317\0\377\376" \ -+ "\322\0\377\376\326\0\377\376\330\1\377\376\332\0\377\376\334\1\377\376" \ -+ "\335\1\377\376\342\3\377\375\334\2\377\376\311\0\377\376\327\4\377\376" \ -+ "\344\31\377\376\3472\377\376\356:\377\376\3565\377\375\3571\377\375\357" \ -+ "-\377\376\357*\377\375\356%\377\376\356\40\377\375\355\31\377\375\355" \ -+ "\27\377\376\356\32\377\376\356\33\377\375\356\32\377\375\354\30\377\376" \ -+ "\353\24\377\376\351\21\377\376\346\16\377\375\337$\377\376\331>\377\374" \ -+ "\326c\307\372\325|#\365\330\230\0\365\336\257\0\363\337\273\0\221\363" \ -+ "\337\272\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\207" \ -+ "\323\312\302\0\35\323\312\303\0\322\310\275\0\300\254\222\0\272\230c" \ -+ "m\302\220#\371\325\232\0\377\342\246\0\377\353\257\1\377\362\266\1\377" \ -+ "\371\275\1\377\375\301\0\377\377\305\1\377\376\311\0\377\376\314\0\377" \ -+ "\376\317\0\377\376\322\1\377\376\326\1\377\376\330\0\377\375\332\0\377" \ -+ "\376\335\0\377\376\336\1\377\376\341\4\377\376\344\15\377\375\322\1\377" \ -+ "\376\314\0\377\376\3452\377\376\355S\377\376\362\\\377\376\365b\377\202" \ -+ "\376\366d\377\6\376\370c\377\376\370`\377\376\367X\377\376\363I\377\376" \ -+ "\3605\377\376\356$\377\202\376\356\36\377\13\375\355\34\377\376\354\30" \ -+ "\377\376\354\26\377\376\351\20\377\376\344\21\377\375\336)\377\375\330" \ -+ ";\377\375\325Z\314\366\330\225(\365\336\262\0\363\337\273\0\221\363\337" \ -+ "\272\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\210\323" \ -+ "\312\302\0""3\324\313\303\0\273\242~e\272\211\"\377\316\223\0\377\333" \ -+ "\240\0\377\346\251\1\377\355\261\1\377\362\266\1\377\371\275\1\377\375" \ -+ "\301\0\377\376\305\1\377\376\311\0\377\376\314\1\377\375\316\0\377\376" \ -+ "\322\1\377\376\325\1\377\376\330\1\377\375\333\1\377\376\334\1\377\376" \ -+ "\335\0\377\376\340\20\377\376\350;\377\375\344.\377\376\311\0\377\376" \ -+ "\332\26\377\375\360X\377\376\361^\377\376\366h\377\376\370m\377\376\371" \ -+ "o\377\376\372q\377\376\373r\377\376\373q\377\376\373p\377\376\371i\377" \ -+ "\375\366Y\377\376\362=\377\376\356'\377\376\355\36\377\375\354\33\377" \ -+ "\376\354\31\377\376\352\25\377\376\350\20\377\375\342\24\377\375\333" \ -+ "*\377\376\3279\377\376\324[\322\366\335\250*\362\340\301\0\363\337\273" \ -+ "\0\363\337\272\0\217\363\337\273\0\377\377\377\377\0\377\377\377\377" \ -+ "\0\213\377\377\377\0\206\324\313\303\0""5\323\313\303\0\326\316\311\0" \ -+ "\307\270\245E\261\203-\357\304\211\0\377\324\227\0\377\336\241\1\377" \ -+ "\350\252\0\377\356\262\0\377\363\267\0\377\371\274\0\377\375\300\0\377" \ -+ "\376\305\0\377\375\310\0\377\377\313\1\377\376\315\0\377\376\321\0\377" \ -+ "\376\324\1\377\376\327\0\377\375\331\0\377\375\333\0\377\376\335\10\377" \ -+ "\376\3423\377\376\350N\377\376\360Y\377\376\326\25\377\376\313\1\377" \ -+ "\375\354I\377\376\363g\377\376\366h\377\376\371o\377\376\373t\377\376" \ -+ "\373u\377\376\373v\377\376\373w\377\376\373u\377\376\372s\377\376\372" \ -+ "q\377\376\372j\377\376\365T\377\377\3603\377\376\354\36\377\375\354\32" \ -+ "\377\375\353\30\377\376\351\25\377\376\345\16\377\376\336\22\377\376" \ -+ "\332)\377\377\3267\377\374\325i\311\365\332\242\33\363\336\262\0\363" \ -+ "\337\266\0\217\363\337\265\0\377\377\377\377\0\377\377\377\377\0\213" \ -+ "\377\377\377\0\206\306\267\252\0""5\307\271\255\0\304\267\252\32\254" \ -+ "\207I\320\264|\0\377\312\216\0\377\326\230\1\377\340\242\1\377\351\253" \ -+ "\0\377\356\261\1\377\363\266\0\377\370\274\1\377\375\300\0\377\376\304" \ -+ "\1\377\376\310\0\377\376\313\1\377\376\315\0\377\376\317\0\377\376\323" \ -+ "\1\377\376\326\0\377\375\331\0\377\376\332\0\377\375\337\"\377\376\345" \ -+ "G\377\376\347K\377\376\361b\377\375\350E\377\376\306\0\377\376\337*\377" \ -+ "\376\364j\377\375\364h\377\376\370p\377\376\372w\377\376\373x\377\376" \ -+ "\373z\377\376\373{\377\376\373z\377\376\373x\377\376\372u\377\376\372" \ -+ "s\377\376\372n\377\376\367b\377\376\361E\377\375\354%\377\375\353\30" \ -+ "\377\376\351\25\377\376\347\21\377\376\341\12\377\376\334\24\377\376" \ -+ "\330'\377\377\3247\377\373\322k\246\363\336\261\4\363\337\264\0\217\363" \ -+ "\336\256\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\205" \ -+ "\306\270\253\0\"\307\270\254\0\307\272\260\0\260\226s\213\245q\11\377" \ -+ "\275\203\0\377\314\220\0\377\327\231\0\377\340\242\1\377\350\252\1\377" \ -+ "\356\260\0\377\363\265\0\377\367\273\0\377\374\277\0\377\376\303\0\377" \ -+ "\376\307\0\377\376\312\1\377\376\314\0\377\375\316\0\377\377\322\1\377" \ -+ "\376\324\1\377\376\327\0\377\375\332\10\377\375\3409\377\376\346L\377" \ -+ "\376\347O\377\375\354Y\377\376\363d\377\376\317\20\377\376\320\22\377" \ -+ "\376\361b\377\376\364j\377\376\367n\377\376\371w\377\376\372}\377\203" \ -+ "\376\373~\377\22\376\373|\377\376\373y\377\376\372w\377\376\372r\377" \ -+ "\376\371k\377\375\367b\377\376\363P\377\375\354&\377\375\351\24\377\376" \ -+ "\350\22\377\376\345\15\377\376\337\15\377\376\331\32\377\376\327*\377" \ -+ "\377\321\77\377\366\331\222l\363\337\266\0\363\344\303\0\216\363\344" \ -+ "\302\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\205\314" \ -+ "\300\266\0""7\315\302\272\0\306\271\2556\234s*\362\254t\0\377\300\205" \ -+ "\0\377\316\217\0\377\327\231\0\377\337\241\2\377\346\250\1\377\354\256" \ -+ "\0\377\361\263\1\377\365\271\0\377\372\276\1\377\375\301\0\377\376\305" \ -+ "\0\377\376\310\0\377\376\313\1\377\376\314\0\377\376\320\0\377\377\322" \ -+ "\0\377\376\325\0\377\376\331\26\377\376\340A\377\376\344K\377\376\347" \ -+ "Q\377\375\351V\377\376\362h\377\376\3379\377\376\304\2\377\376\351P\377" \ -+ "\376\365l\377\375\365l\377\376\370u\377\376\371}\377\376\372~\377\375" \ -+ "\374}\377\375\374~\377\376\374~\377\376\373}\377\376\373z\377\376\373" \ -+ "w\377\377\372q\377\376\370g\377\376\366a\377\376\360H\377\376\351\32" \ -+ "\377\376\347\21\377\376\344\16\377\375\341\6\377\376\332\17\377\376\326" \ -+ "\33\377\376\323,\377\374\320S\347\363\336\264!\363\356\345\0\216\363" \ -+ "\354\340\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\204" \ -+ "\303\267\255\0$\302\267\255\0\305\273\264\0\250\220o\242\227f\4\377\260" \ -+ "w\0\377\277\205\1\377\314\216\1\377\325\226\0\377\335\237\1\377\345\246" \ -+ "\1\377\352\255\0\377\357\261\1\377\364\266\0\377\370\273\0\377\374\277" \ -+ "\0\377\376\302\0\377\376\306\1\377\376\311\0\377\377\314\1\377\375\316" \ -+ "\0\377\376\320\0\377\376\323\0\377\375\330&\377\376\337D\377\375\344" \ -+ "L\377\376\346S\377\376\350U\377\376\356c\377\376\354[\377\376\304\1\377" \ -+ "\375\3323\377\376\364l\377\376\363k\377\376\366s\377\376\370{\377\376" \ -+ "\371}\377\203\376\373}\377\21\375\374~\377\376\373~\377\376\373|\377" \ -+ "\376\373w\377\376\371o\377\376\367e\377\376\363\\\377\376\352-\377\376" \ -+ "\345\20\377\376\344\21\377\376\341\10\377\376\334\11\377\376\327\22\377" \ -+ "\376\324\23\377\377\3170\377\370\326\207\240\362\353\337\1\216\362\351" \ -+ "\330\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\204\303" \ -+ "\272\261\0%\304\273\263\0\275\262\250,\222o2\356\232f\0\377\260w\0\377" \ -+ "\276\202\1\377\312\213\0\377\324\224\0\377\333\233\1\377\342\243\1\377" \ -+ "\350\252\1\377\355\257\0\377\361\263\0\377\365\270\0\377\372\274\0\377" \ -+ "\376\300\0\377\376\303\0\377\376\307\0\377\376\312\0\377\376\315\1\377" \ -+ "\375\317\0\377\376\321\2\377\376\330.\377\376\336D\377\375\343J\377\377" \ -+ "\346R\377\376\346U\377\376\352[\377\376\360g\377\376\316\35\377\376\314" \ -+ "\27\377\376\357e\377\376\361g\377\376\365p\377\376\370x\377\376\371|" \ -+ "\377\376\371}\377\204\376\372}\377\20\376\371|\377\376\371y\377\376\370" \ -+ "r\377\375\366i\377\375\364b\377\376\354\77\377\376\344\22\377\376\344" \ -+ "\21\377\376\342\12\377\376\335\3\377\376\330\16\377\376\323\12\377\376" \ -+ "\321\33\377\374\317P\357\361\335\2636\355\343\314\0\215\356\342\307\0" \ -+ "\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\204\306\277\270" \ -+ "\0$\311\303\276\0\252\232\205|\210]\20\377\233f\0\377\256t\1\377\272" \ -+ "\177\0\377\307\210\1\377\321\221\1\377\330\230\0\377\336\237\1\377\345" \ -+ "\247\0\377\352\254\0\377\356\260\0\377\362\264\1\377\366\271\0\377\373" \ -+ "\276\0\377\376\301\0\377\376\304\0\377\376\310\0\377\376\312\0\377\376" \ -+ "\314\0\377\376\317\4\377\376\3262\377\376\334C\377\376\341H\377\375\343" \ -+ "O\377\375\345T\377\376\346V\377\376\356g\377\376\3318\377\375\300\1\377" \ -+ "\376\347V\377\376\357g\377\376\363l\377\376\365u\377\377\367{\377\203" \ -+ "\376\370|\377\22\376\371|\377\376\370|\377\376\371{\377\376\371x\377" \ -+ "\376\370q\377\376\366j\377\376\363c\377\376\357Q\377\376\344\31\377\375" \ -+ "\342\15\377\376\341\10\377\376\337\2\377\375\331\10\377\376\323\15\377" \ -+ "\376\320\11\377\376\314-\377\364\324\212\221\356\337\301\0\215\357\336" \ -+ "\271\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\204\300" \ -+ "\267\255\0$\306\276\270\10\232\204c\277\202T\0\377\232e\0\377\251r\1" \ -+ "\377\267{\0\377\301\205\1\377\314\213\1\377\325\224\0\377\334\232\1\377" \ -+ "\341\242\2\377\346\247\0\377\353\255\1\377\357\261\0\377\364\265\0\377" \ -+ "\370\272\0\377\374\276\0\377\376\300\0\377\376\304\0\377\377\310\0\377" \ -+ "\376\312\0\377\376\315\4\377\376\324/\377\375\332C\377\376\336I\377\375" \ -+ "\342P\377\375\344T\377\376\345T\377\376\351a\377\376\343P\377\374\275" \ -+ "\4\377\376\334@\377\376\356h\377\375\357g\377\376\364q\377\376\366x\377" \ -+ "\202\376\370{\377\24\376\371|\377\376\370{\377\376\371{\377\376\371y" \ -+ "\377\376\367u\377\376\367q\377\376\365j\377\376\363b\377\376\360[\377" \ -+ "\376\346(\377\375\341\11\377\376\341\10\377\376\337\3\377\376\332\3\377" \ -+ "\376\323\16\377\376\317\4\377\377\315\26\377\371\315_\334\356\335\267" \ -+ "\37\355\340\302\0\214\355\337\277\0\377\377\377\377\0\377\377\377\377" \ -+ "\0\213\377\377\377\0\203\271\256\245\0;\272\260\247\0\267\254\243*\213" \ -+ "oD\340\200R\0\377\226d\0\377\244n\0\377\262w\1\377\274\200\1\377\306" \ -+ "\210\0\377\320\217\1\377\327\225\1\377\335\235\1\377\342\242\2\377\347" \ -+ "\250\1\377\354\256\1\377\360\261\1\377\365\265\1\377\370\272\0\377\373" \ -+ "\275\0\377\376\300\0\377\376\304\1\377\376\307\0\377\376\313\2\377\376" \ -+ "\321*\377\376\326\77\377\376\333G\377\376\337N\377\376\341Q\377\375\342" \ -+ "R\377\376\345X\377\376\347[\377\373\300\21\377\375\316'\377\375\354f" \ -+ "\377\375\354c\377\376\361m\377\376\363s\377\375\365v\377\376\366y\377" \ -+ "\376\366z\377\376\367w\377\376\366v\377\376\366u\377\376\365r\377\376" \ -+ "\364m\377\376\362g\377\376\361c\377\376\360_\377\375\3478\377\376\337" \ -+ "\10\377\376\337\7\377\376\337\4\377\376\333\0\377\376\323\12\377\376" \ -+ "\317\7\377\377\315\12\377\374\311A\377\357\327\244V\354\334\267\0\214" \ -+ "\355\333\263\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0" \ -+ "\203\303\272\265\0<\306\276\272\0\263\247\236M\200_.\371~Q\0\377\221" \ -+ "`\0\377\237j\0\377\254s\1\377\267{\0\377\300\203\0\377\312\213\0\377" \ -+ "\322\221\0\377\330\227\0\377\335\235\2\377\343\244\2\377\350\251\0\377" \ -+ "\354\255\0\377\361\261\0\377\365\266\1\377\370\272\0\377\374\275\1\377" \ -+ "\376\301\0\377\376\304\0\377\376\307\2\377\375\315\"\377\376\323;\377" \ -+ "\376\330D\377\376\332I\377\376\336N\377\376\340P\377\376\341R\377\377" \ -+ "\347]\377\373\307\37\377\373\301\20\377\376\347^\377\375\351b\377\376" \ -+ "\356h\377\376\361n\377\376\363p\377\376\363r\377\375\363s\377\375\364" \ -+ "s\377\376\364q\377\376\364p\377\375\364o\377\376\363h\377\376\361e\377" \ -+ "\376\360c\377\376\356_\377\376\347D\377\376\336\11\377\376\336\3\377" \ -+ "\376\335\2\377\376\332\0\377\376\323\6\377\375\316\10\377\375\314\6\377" \ -+ "\375\310-\377\362\317\204\233\353\334\275\0\353\334\274\0\213\353\334" \ -+ "\273\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\203\312" \ -+ "\303\277\0'\317\311\307\0\260\244\230sxV\37\377}P\0\377\215\\\0\377\232" \ -+ "f\0\377\246o\0\377\262v\1\377\272~\0\377\303\206\0\377\315\213\0\377" \ -+ "\324\221\1\377\331\230\0\377\337\236\2\377\343\244\0\377\350\251\1\377" \ -+ "\354\255\0\377\361\261\1\377\365\265\0\377\367\271\0\377\373\275\1\377" \ -+ "\376\300\0\377\376\303\1\377\376\312\35\377\376\3174\377\376\324>\377" \ -+ "\375\327D\377\376\332J\377\376\335N\377\376\336O\377\376\344[\377\374" \ -+ "\3172\377\370\267\6\377\376\341R\377\376\350a\377\376\351c\377\376\356" \ -+ "k\377\376\360m\377\376\361m\377\203\376\362n\377\22\376\362l\377\375" \ -+ "\361i\377\376\356e\377\376\356c\377\376\356a\377\375\353\\\377\376\346" \ -+ "J\377\376\336\16\377\376\334\1\377\376\333\1\377\375\331\1\377\376\323" \ -+ "\3\377\376\316\11\377\375\313\1\377\376\307\35\377\364\313k\326\353\334" \ -+ "\302\14\353\335\304\0\213\353\335\303\0\377\377\377\377\0\377\377\377" \ -+ "\377\0\213\377\377\377\0\203\274\263\253\0%\301\271\263\0\245\226\205" \ -+ "\217uR\31\377|O\0\377\212Z\0\377\226b\0\377\240j\0\377\254r\1\377\265" \ -+ "x\0\377\275\200\1\377\306\207\1\377\317\214\0\377\325\222\0\377\332\230" \ -+ "\1\377\336\236\1\377\343\244\1\377\350\251\0\377\354\256\1\377\360\261" \ -+ "\1\377\364\264\1\377\367\270\0\377\372\274\1\377\374\300\0\377\375\306" \ -+ "\25\377\376\314.\377\376\3208\377\376\322>\377\376\326C\377\376\330J" \ -+ "\377\376\332L\377\376\340V\377\374\325B\377\365\262\7\377\376\331D\377" \ -+ "\376\346a\377\376\347a\377\376\353f\377\202\376\354g\377\25\376\355i" \ -+ "\377\376\357i\377\376\357h\377\376\356g\377\376\356d\377\376\354b\377" \ -+ "\376\354a\377\375\353_\377\376\351Z\377\376\345L\377\376\335\23\377\376" \ -+ "\332\1\377\376\331\2\377\376\330\1\377\376\323\0\377\376\315\12\377\376" \ -+ "\311\0\377\376\306\23\377\365\307U\366\354\331\2650\354\331\267\0\213" \ -+ "\354\331\266\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0" \ -+ "\203\255\237\225\0(\260\244\234\6\233\210t\251uQ\30\377{N\0\377\210X" \ -+ "\0\377\222_\1\377\234f\0\377\246n\0\377\260u\1\377\271{\0\377\277\201" \ -+ "\1\377\310\210\0\377\317\215\1\377\325\223\1\377\332\230\0\377\337\236" \ -+ "\1\377\343\243\1\377\350\251\1\377\353\254\0\377\357\261\1\377\363\263" \ -+ "\0\377\367\267\0\377\371\274\0\377\375\300\11\377\376\307%\377\376\314" \ -+ "6\377\376\317<\377\376\322C\377\376\326L\377\375\327M\377\375\332R\377" \ -+ "\375\330N\377\362\261\5\377\374\3163\377\377\344g\377\376\346g\377\375" \ -+ "\351m\377\376\353m\377\375\351g\377\375\352e\377\202\375\353c\377\22" \ -+ "\375\352c\377\376\352b\377\375\353`\377\375\352_\377\375\351\\\377\376" \ -+ "\350X\377\376\344K\377\376\333\20\377\375\331\2\377\376\330\5\377\376" \ -+ "\325\2\377\376\321\0\377\376\314\10\377\376\310\2\377\376\305\14\377" \ -+ "\366\303G\377\355\330\253Y\354\332\263\0\213\354\332\261\0\377\377\377" \ -+ "\377\0\377\377\377\377\0\213\377\377\377\0\203\257\242\226\0<\263\247" \ -+ "\235\13\231\206q\267sQ\31\377yO\0\377\204U\0\377\217\\\1\377\231c\0\377" \ -+ "\241j\0\377\253q\1\377\264v\1\377\274|\0\377\301\202\1\377\311\210\0" \ -+ "\377\317\215\0\377\325\223\1\377\331\227\0\377\335\234\2\377\342\242" \ -+ "\1\377\346\247\1\377\353\253\0\377\356\257\0\377\362\263\1\377\366\266" \ -+ "\0\377\371\273\1\377\375\277\11\377\376\302\23\377\377\307\35\377\375" \ -+ "\312)\377\376\3161\377\376\3173\377\376\3227\377\377\324\77\377\361\260" \ -+ "\4\377\370\300\27\377\377\334N\377\376\337]\377\376\350o\377\376\355" \ -+ "w\377\376\353p\377\375\352k\377\376\351i\377\375\351c\377\377\350`\377" \ -+ "\376\350_\377\375\350^\377\376\347[\377\376\347X\377\376\345S\377\376" \ -+ "\341G\377\376\331\17\377\376\326\0\377\376\325\2\377\376\324\2\377\376" \ -+ "\317\1\377\376\313\4\377\376\307\5\377\376\304\10\377\367\302=\377\353" \ -+ "\321\232\200\351\334\300\0\213\351\333\275\0\377\377\377\377\0\377\377" \ -+ "\377\377\0\213\377\377\377\0\203\253\235\217\0<\256\243\225\26\226\202" \ -+ "j\323vR\35\377zP\4\377\201R\0\377\213Z\1\377\225a\1\377\235f\0\377\246" \ -+ "m\1\377\256r\0\377\266w\1\377\275}\0\377\303\204\0\377\313\211\1\377" \ -+ "\321\216\0\377\325\223\0\377\331\230\0\377\336\235\1\377\342\242\2\377" \ -+ "\347\246\0\377\352\253\0\377\356\257\0\377\361\262\1\377\365\265\1\377" \ -+ "\370\271\0\377\372\274\0\377\375\277\0\377\376\300\1\377\376\303\2\377" \ -+ "\375\304\3\377\376\306\4\377\377\312\11\377\361\260\2\377\364\264\3\377" \ -+ "\377\316\15\377\376\320\37\377\375\332@\377\376\343a\377\376\347n\377" \ -+ "\376\350m\377\376\351l\377\376\351j\377\376\350f\377\376\347a\377\375" \ -+ "\345\\\377\376\344V\377\376\344T\377\376\342O\377\376\337C\377\376\327" \ -+ "\16\377\377\324\0\377\376\322\2\377\376\322\3\377\376\317\0\377\376\313" \ -+ "\3\377\376\305\7\377\375\302\6\377\366\3006\377\352\314\212\240\351\332" \ -+ "\273\0\213\351\331\270\0\377\377\377\377\0\377\377\377\377\0\213\377" \ -+ "\377\377\0\202\304\274\267\0\36\306\276\271\0\300\270\261\26\215x]\323" \ -+ "wU!\377{S\13\377\177Q\0\377\210W\1\377\222]\1\377\232d\1\377\243j\0\377" \ -+ "\253n\0\377\261s\1\377\271y\0\377\276\177\0\377\305\205\1\377\314\211" \ -+ "\1\377\321\217\0\377\326\223\0\377\332\230\1\377\335\234\1\377\342\241" \ -+ "\2\377\346\246\0\377\352\252\1\377\355\256\0\377\361\261\1\377\365\264" \ -+ "\0\377\366\267\0\377\371\273\0\377\374\275\0\377\376\277\0\377\202\376" \ -+ "\301\0\377\35\377\305\0\377\360\261\1\377\356\254\0\377\377\310\0\377" \ -+ "\376\310\0\377\376\313\0\377\375\320\20\377\376\326+\377\376\334F\377" \ -+ "\376\341X\377\376\344d\377\376\346h\377\376\347e\377\376\345^\377\376" \ -+ "\344X\377\376\342Q\377\376\340M\377\376\333A\377\376\323\14\377\377\322" \ -+ "\0\377\376\320\1\377\376\317\5\377\376\316\1\377\376\312\1\377\375\304" \ -+ "\7\377\374\300\6\377\366\2771\377\353\314\206\274\356\346\333\3\213\356" \ -+ "\345\325\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\202" \ -+ "\303\274\266\0""3\304\276\270\0\277\267\260$\214wY\350wU\40\377~V\20" \ -+ "\377\177S\1\377\205T\0\377\217[\0\377\226a\1\377\237f\0\377\250k\1\377" \ -+ "\256p\0\377\264v\0\377\273{\1\377\301\200\0\377\310\206\0\377\315\212" \ -+ "\1\377\321\220\1\377\326\224\0\377\331\230\0\377\335\234\1\377\341\242" \ -+ "\2\377\345\244\0\377\352\252\1\377\354\256\1\377\360\260\0\377\362\263" \ -+ "\1\377\365\266\0\377\367\271\0\377\372\274\0\377\374\276\0\377\376\277" \ -+ "\0\377\377\301\1\377\362\262\0\377\351\246\0\377\376\304\0\377\377\307" \ -+ "\0\377\377\311\0\377\376\313\0\377\377\314\0\377\375\315\3\377\375\320" \ -+ "\22\377\376\325&\377\375\334E\377\376\341Z\377\377\343_\377\377\343\\" \ -+ "\377\375\341U\377\376\336L\377\376\330;\377\376\320\10\377\202\375\317" \ -+ "\0\377\10\375\316\3\377\377\315\1\377\376\311\1\377\375\302\7\377\372" \ -+ "\276\5\377\365\277/\377\352\306x\321\346\324\270\13\213\346\323\264\0" \ -+ "\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0\202\272\260\246" \ -+ "\0)\274\262\251\0\267\257\251&\211sV\365yW#\377}W\23\377\200S\4\377\203" \ -+ "R\0\377\214Z\0\377\223^\1\377\232c\0\377\243h\0\377\253m\1\377\257r\1" \ -+ "\377\267x\0\377\275|\0\377\303\202\1\377\312\207\0\377\316\213\0\377" \ -+ "\323\220\1\377\327\224\1\377\332\230\1\377\335\234\1\377\341\240\1\377" \ -+ "\345\244\0\377\350\251\0\377\353\254\0\377\357\260\0\377\362\261\1\377" \ -+ "\365\264\1\377\367\270\0\377\370\272\0\377\373\274\0\377\375\277\0\377" \ -+ "\362\263\0\377\344\240\0\377\374\275\0\377\377\304\0\377\376\306\0\377" \ -+ "\377\310\1\377\376\312\1\377\376\312\0\377\202\376\313\0\377\22\376\315" \ -+ "\5\377\376\321\32\377\376\330:\377\375\335O\377\376\337U\377\376\333" \ -+ "N\377\376\3265\377\375\316\4\377\375\315\0\377\377\314\0\377\377\313" \ -+ "\1\377\376\311\1\377\377\307\1\377\374\302\7\377\372\275\7\377\365\276" \ -+ "/\377\353\304q\337\346\321\253\40\213\346\320\250\0\377\377\377\377\0" \ -+ "\377\377\377\377\0\213\377\377\377\0\77\260\223^\0\260\223]\0\265\233" \ -+ "o\14\247\223x\226\206oS\376{X%\377~W\23\377\177S\4\377\202S\0\377\212" \ -+ "Y\0\377\221\\\1\377\230a\0\377\240e\0\377\247k\0\377\254o\1\377\262t" \ -+ "\1\377\271z\0\377\277~\0\377\305\203\0\377\313\207\0\377\320\214\0\377" \ -+ "\323\221\0\377\327\224\0\377\331\227\0\377\335\234\1\377\341\241\2\377" \ -+ "\345\244\0\377\350\250\1\377\354\254\0\377\355\257\0\377\361\261\1\377" \ -+ "\364\262\1\377\365\266\0\377\367\271\0\377\372\273\1\377\362\263\1\377" \ -+ "\340\233\1\377\370\270\0\377\377\301\0\377\375\302\1\377\376\305\1\377" \ -+ "\376\307\0\377\376\310\0\377\376\311\1\377\376\312\0\377\376\313\0\377" \ -+ "\376\312\0\377\376\314\0\377\376\317\24\377\376\3231\377\375\326D\377" \ -+ "\376\322.\377\375\314\2\377\377\313\0\377\377\313\1\377\376\311\1\377" \ -+ "\376\307\0\377\376\305\0\377\375\301\4\377\371\274\11\377\364\274-\377" \ -+ "\352\302g\346\345\315\235*\213\345\314\232\0\377\377\377\377\0\377\377" \ -+ "\377\377\0\213\377\377\377\0/\261\224_\0\262\226b\0\255\2039\206\217" \ -+ "c\34\377\204mP\377{X&\377}U\23\377~R\3\377\203T\0\377\211V\1\377\217" \ -+ "[\0\377\226_\0\377\236c\0\377\244h\1\377\252m\0\377\257q\1\377\265v\1" \ -+ "\377\274{\1\377\301\200\0\377\307\205\1\377\314\211\0\377\317\215\0\377" \ -+ "\324\221\0\377\327\224\1\377\332\230\0\377\336\235\0\377\341\240\2\377" \ -+ "\345\244\0\377\351\247\0\377\353\253\1\377\356\256\0\377\361\260\1\377" \ -+ "\363\262\1\377\365\263\1\377\370\267\0\377\362\262\0\377\335\231\0\377" \ -+ "\363\262\0\377\375\277\1\377\376\277\0\377\376\301\0\377\375\303\0\377" \ -+ "\376\305\0\377\377\306\1\377\376\307\1\377\376\310\1\377\377\311\0\377" \ -+ "\202\376\312\0\377\16\376\313\1\377\376\315\26\377\376\316\32\377\376" \ -+ "\312\0\377\376\311\1\377\376\311\0\377\377\307\0\377\377\306\1\377\375" \ -+ "\303\0\377\373\300\3\377\367\274\14\377\363\273+\377\352\300d\356\347" \ -+ "\322\252:\213\347\321\244\0\377\377\377\377\0\377\377\377\377\0\213\377" \ -+ "\377\377\0-\234u8\0\234v<\17\234a\10\323\211]\32\377\177eG\377{V'\377" \ -+ "}T\24\377~Q\2\377\203S\0\377\210V\1\377\217Z\0\377\225_\0\377\234c\0" \ -+ "\377\242g\1\377\247j\1\377\254n\0\377\261r\1\377\270x\1\377\276}\0\377" \ -+ "\304\201\0\377\311\206\1\377\316\212\0\377\321\216\0\377\325\222\1\377" \ -+ "\330\225\1\377\333\231\0\377\337\234\1\377\343\240\2\377\346\244\0\377" \ -+ "\351\247\0\377\354\253\1\377\355\255\0\377\357\257\0\377\363\261\1\377" \ -+ "\366\263\1\377\362\260\1\377\334\227\0\377\355\254\0\377\372\274\0\377" \ -+ "\374\275\0\377\376\276\0\377\376\300\0\377\376\301\1\377\375\302\0\377" \ -+ "\376\305\0\377\202\376\306\1\377\22\376\307\0\377\377\310\0\377\375\310" \ -+ "\0\377\376\310\0\377\376\310\1\377\376\307\0\377\377\306\1\377\377\306" \ -+ "\0\377\376\306\1\377\376\305\0\377\376\302\0\377\374\277\2\377\366\274" \ -+ "\17\377\363\273,\377\351\276\\\375\347\316\235f\357\324\234\0\360\334" \ -+ "\260\0\211\360\334\262\0\377\377\377\377\0\377\377\377\377\0\213\377" \ -+ "\377\377\0""2\214_\34\0\214a\37\20\225d\27\317\262\200\36\377\261s\26" \ -+ "\377\217P\23\377\204Q\15\377}M\2\377\177N\0\377\210V\0\377\215Y\0\377" \ -+ "\223^\1\377\233b\0\377\241f\0\377\245i\0\377\253n\1\377\257r\1\377\265" \ -+ "u\1\377\273z\0\377\300~\0\377\307\203\0\377\313\206\0\377\316\212\0\377" \ -+ "\321\216\1\377\326\221\1\377\330\225\1\377\333\231\1\377\337\235\1\377" \ -+ "\343\240\1\377\345\243\0\377\351\246\1\377\353\252\0\377\355\254\0\377" \ -+ "\357\256\0\377\361\261\1\377\361\260\1\377\332\225\0\377\351\246\0\377" \ -+ "\370\271\0\377\372\273\0\377\374\275\1\377\375\276\0\377\376\277\0\377" \ -+ "\375\300\0\377\376\301\0\377\375\302\0\377\376\304\0\377\376\305\1\377" \ -+ "\377\306\1\377\377\306\0\377\202\377\307\0\377\14\376\306\0\377\377\306" \ -+ "\1\377\376\305\1\377\376\304\1\377\375\303\0\377\376\301\0\377\374\276" \ -+ "\1\377\365\274\23\377\362\273.\377\352\275W\377\354\310\177\342\361\324" \ -+ "\225I\212\361\336\263\0\377\377\377\377\0\377\377\377\377\0\213\377\377" \ -+ "\377\0\"\261\220a\0\244\202Q\17\221n3\322\251y\31\377\327\214\0\377\265" \ -+ "\\\0\377\220>\0\377\205C\0\377\201I\0\377\210U\1\377\216Y\0\377\224]" \ -+ "\1\377\232a\0\377\240e\0\377\245g\0\377\252l\1\377\256p\0\377\262s\1" \ -+ "\377\271x\1\377\276|\0\377\304\201\0\377\310\204\1\377\314\210\1\377" \ -+ "\317\212\0\377\323\217\1\377\327\223\1\377\332\227\0\377\334\231\0\377" \ -+ "\340\235\1\377\343\240\1\377\346\243\1\377\351\246\0\377\353\251\1\377" \ -+ "\355\254\1\377\202\357\256\0\377\14\331\224\0\377\345\241\1\377\366\265" \ -+ "\1\377\367\270\0\377\372\273\0\377\373\274\0\377\374\275\0\377\376\276" \ -+ "\0\377\376\277\0\377\376\300\0\377\376\301\0\377\376\302\0\377\202\376" \ -+ "\303\0\377\4\375\305\0\377\376\305\0\377\376\304\1\377\376\304\0\377" \ -+ "\202\375\302\0\377\12\376\301\1\377\375\300\0\377\372\276\2\377\364\273" \ -+ "\30\377\360\2722\377\354\273L\377\372\307/\377\371\316_\350\361\335\261" \ -+ "\"\361\336\265\0\210\361\336\263\0\377\377\377\377\0\377\377\377\377" \ -+ "\0\213\377\377\377\0-\306\254\212\7\253\206Q\222\210lE\373yX+\377\215" \ -+ "b\30\377\262w\11\377\265b\1\377\276o\10\377\273w\7\377\225Z\0\377\213" \ -+ "T\0\377\221Z\0\377\232a\0\377\237d\1\377\243g\0\377\250j\1\377\254n\1" \ -+ "\377\261r\1\377\267x\1\377\274|\1\377\302\200\0\377\307\204\0\377\313" \ -+ "\207\1\377\316\212\0\377\321\216\1\377\326\221\1\377\331\224\1\377\333" \ -+ "\227\1\377\335\232\0\377\340\236\1\377\343\241\1\377\345\243\0\377\350" \ -+ "\246\0\377\353\251\2\377\354\253\1\377\356\255\1\377\330\223\1\377\340" \ -+ "\235\0\377\365\263\1\377\366\264\1\377\367\267\0\377\371\272\0\377\373" \ -+ "\273\1\377\374\275\1\377\375\276\0\377\203\376\277\0\377\2\376\301\0" \ -+ "\377\375\301\0\377\202\375\302\0\377\17\376\301\0\377\376\302\0\377\375" \ -+ "\301\0\377\376\300\1\377\376\300\0\377\375\301\0\377\372\276\0\377\364" \ -+ "\272\30\377\357\2728\377\362\271.\377\376\306\5\377\376\316\"\377\363" \ -+ "\336\252I\362\340\272\0\361\340\270\0\207\361\340\267\0\377\377\377\377" \ -+ "\0\377\377\377\377\0\213\377\377\377\0""0\275\230]\205\241{>\377\213" \ -+ "tX\377\177]/\377{T\30\377{S\23\377\251q\3\377\352\245\6\377\346\245\5" \ -+ "\377\305\204\0\377\261t\0\377\242f\0\377\232c\1\377\236d\0\377\242f\1" \ -+ "\377\246h\0\377\254m\0\377\262q\1\377\264s\0\377\270v\0\377\275{\1\377" \ -+ "\303\200\1\377\311\205\1\377\315\211\1\377\320\214\0\377\324\221\1\377" \ -+ "\327\223\0\377\331\226\1\377\334\230\0\377\336\233\1\377\341\237\2\377" \ -+ "\343\240\1\377\346\242\0\377\350\246\0\377\353\247\0\377\355\252\0\377" \ -+ "\330\222\0\377\334\230\0\377\361\261\0\377\365\262\1\377\367\263\0\377" \ -+ "\367\266\0\377\370\270\0\377\372\272\1\377\373\274\1\377\374\274\1\377" \ -+ "\375\275\0\377\376\276\1\377\202\376\277\1\377\21\377\277\0\377\376\277" \ -+ "\1\377\376\300\0\377\376\277\1\377\377\277\0\377\376\277\0\377\376\300" \ -+ "\1\377\375\277\0\377\371\275\0\377\363\271\30\377\355\2719\377\362\267" \ -+ "\"\377\375\266\0\377\375\273\2\377\356\333\251Q\357\335\264\0\362\335" \ -+ "\250\0\207\362\336\256\0\377\377\377\377\0\377\377\377\377\0\213\377" \ -+ "\377\377\0""0\262\2040\350\234q-\377\210e4\377\177^2\377\177X\31\377" \ -+ "|S\15\377\226^\1\377\306\205\0\377\331\231\0\377\340\237\1\377\347\247" \ -+ "\2\377\332\232\3\377\243g\0\377\234a\0\377\242e\1\377\237b\0\377\303" \ -+ "\205\1\377\343\243\1\377\333\232\0\377\325\225\1\377\317\216\0\377\315" \ -+ "\213\0\377\314\211\0\377\315\211\0\377\317\211\0\377\322\214\0\377\325" \ -+ "\217\0\377\331\224\1\377\332\226\0\377\333\231\0\377\337\235\0\377\342" \ -+ "\236\2\377\344\240\2\377\346\242\1\377\350\245\0\377\353\247\0\377\330" \ -+ "\221\0\377\331\223\1\377\357\256\0\377\361\261\0\377\364\262\0\377\366" \ -+ "\262\1\377\367\265\0\377\367\267\0\377\370\270\0\377\371\271\0\377\373" \ -+ "\272\0\377\374\274\0\377\202\374\275\0\377\203\375\276\0\377\17\375\277" \ -+ "\1\377\375\276\0\377\375\276\1\377\374\277\0\377\373\275\0\377\370\273" \ -+ "\0\377\363\271\33\377\355\267:\377\360\267+\377\376\266\0\377\374\264" \ -+ "\4\377\361\311f{\366\322p\0\365\336\247\0\364\337\253\0\206\364\337\251" \ -+ "\0\377\377\377\377\0\377\377\377\377\0\213\377\377\377\0""2\261\201(" \ -+ "\333\251p\13\377\210Z\22\377}\\1\377\201[\"\377\201U\20\377\231b\1\377" \ -+ "\222]\1\377\243l\0\377\304\210\0\377\351\253\5\377\350\243\7\377\253" \ -+ "i\0\377\234a\0\377\240c\1\377\246j\1\377\350\254\0\377\374\277\0\377" \ -+ "\373\277\0\377\374\301\1\377\373\277\0\377\373\276\0\377\370\273\0\377" \ -+ "\364\267\0\377\362\264\1\377\361\263\6\377\352\255\24\377\332\225\0\377" \ -+ "\331\223\1\377\333\226\1\377\334\231\0\377\337\234\1\377\342\235\1\377" \ -+ "\343\240\1\377\346\242\0\377\350\245\0\377\327\220\1\377\325\216\1\377" \ -+ "\356\253\0\377\360\256\0\377\362\260\1\377\364\261\0\377\366\261\0\377" \ -+ "\367\263\0\377\370\265\0\377\370\267\0\377\370\270\0\377\371\272\0\377" \ -+ "\372\273\0\377\373\273\0\377\202\374\274\0\377\21\374\275\0\377\374\275" \ -+ "\1\377\374\274\0\377\372\274\0\377\373\275\0\377\371\274\0\377\367\273" \ -+ "\1\377\363\270\33\377\356\2673\377\360\2724\377\376\276\4\377\373\272" \ -+ "\5\377\363\275A\365\372\314Mv\364\335\243\2\363\341\271\0\364\340\260" \ -+ "\0\205\364\340\256\0\377\377\377\377\0\377\377\377\377\0\213\377\377" \ -+ "\377\0""4\262\225_n\264w\0\377\251m\0\377\206W\27\377\177V%\377\202W" \ -+ "\25\377\227`\2\377\213Z\10\377\202Q\3\377\220Y\0\377\315\211\0\377\340" \ -+ "\227\0\377\265q\0\377\245e\1\377\241b\0\377\253o\0\377\330\233\0\377" \ -+ "\347\252\1\377\361\264\0\377\371\275\1\377\375\302\1\377\377\305\0\377" \ -+ "\377\307\0\377\377\312\0\377\377\313\0\377\377\330,\377\376\325A\377" \ -+ "\344\233\0\377\330\220\0\377\332\224\0\377\333\226\1\377\335\231\0\377" \ -+ "\337\232\0\377\342\234\2\377\343\237\1\377\346\242\1\377\326\216\1\377" \ -+ "\322\212\0\377\353\250\1\377\356\254\0\377\357\255\0\377\361\257\1\377" \ -+ "\362\261\1\377\364\261\0\377\367\262\1\377\367\264\0\377\370\264\1\377" \ -+ "\370\266\0\377\370\267\0\377\370\272\0\377\371\271\1\377\372\272\1\377" \ -+ "\202\372\272\0\377\20\371\272\1\377\370\271\0\377\370\272\0\377\366\271" \ -+ "\0\377\365\270\2\377\363\267\23\377\364\271\20\377\366\274\36\377\373" \ -+ "\303\40\377\375\277\4\377\363\300R\377\371\306K\376\371\320S\201\370" \ -+ "\326i\0\367\332\205\0\366\333\221\0\204\366\332\217\0\377\377\377\377" \ -+ "\0\377\377\377\377\0\213\377\377\377\0""2\270\253\233\4\253\206A\217" \ -+ "\302\201\1\377\277z\0\377\236c\13\377\210T\22\377\230\\\3\377\221Y\11" \ -+ "\377\207T\6\377\214W\0\377\304\177\0\377\336\226\1\377\303\200\1\377" \ -+ "\272x\0\377\262q\0\377\236d\0\377\240e\0\377\256o\0\377\271z\1\377\305" \ -+ "\206\1\377\322\222\0\377\336\240\1\377\351\252\0\377\361\264\0\377\367" \ -+ "\274\1\377\376\3249\377\375\310\36\377\345\230\0\377\331\215\0\377\332" \ -+ "\221\0\377\333\224\1\377\335\227\0\377\336\231\0\377\340\232\0\377\342" \ -+ "\234\1\377\345\237\1\377\325\214\1\377\320\206\2\377\350\245\0\377\355" \ -+ "\251\0\377\355\254\1\377\356\254\0\377\360\255\0\377\360\257\1\377\363" \ -+ "\260\1\377\365\261\1\377\367\261\0\377\367\262\0\377\370\264\0\377\370" \ -+ "\265\0\377\203\367\267\0\377\202\370\267\0\377\17\367\267\1\377\367\267" \ -+ "\0\377\367\270\0\377\366\270\0\377\367\272\10\377\374\276\1\377\375\300" \ -+ "\1\377\375\304\26\377\376\306&\377\374\305:\377\374\311S\377\374\307" \ -+ "7\377\375\312\33n\371\326d\0\367\326w\0\204\367\325t\0\365\377\377\377" \ -+ "\0\331\0\0\0\0\2\251\207\0""0\251\207\0`\203\251\207\0\200\2\251\207" \ -+ "\0`\251\207\0""0\264\0\0\0\0G\270\250\224\0\260\236\211\2\256\212Od\301" \ -+ "\210\22\337\325\220\0\377\310\204\0\377\302~\0\377\264s\2\377\234^\1" \ -+ "\377\226X\1\377\304~\1\377\333\226\1\377\320\215\1\377\313\210\1\377" \ -+ "\277|\0\377\240f\0\377\235d\1\377\243f\0\377\246h\1\377\250j\0\377\254" \ -+ "l\1\377\262q\0\377\272w\0\377\303}\1\377\312\204\0\377\351\242\3\377" \ -+ "\374\265\0\377\346\233\1\377\332\217\0\377\332\221\0\377\334\223\1\377" \ -+ "\335\226\1\377\336\230\0\377\340\231\0\377\342\233\0\377\343\234\0\377" \ -+ "\325\213\0\377\316\203\1\377\346\241\0\377\352\246\0\377\354\250\1\377" \ -+ "\356\252\0\377\357\252\0\377\357\253\0\377\361\255\0\377\362\257\1\377" \ -+ "\363\260\1\377\364\260\0\377\367\260\0\377\367\262\0\377\370\263\0\377" \ -+ "\370\264\0\377\370\265\0\377\370\266\0\377\371\267\0\377\371\270\1\377" \ -+ "\373\273\0\377\374\276\0\377\375\300\0\377\375\301\6\377\375\304\5\377" \ -+ "\376\307\0\377\377\307\0\377\376\312\31\377\376\314*\377\376\3124\377" \ -+ "\375\307E\377\375\310*\372\372\324VR\367\330\200\0\367\326w\0\203\367" \ -+ "\326x\0\377\0\0\0\0\234\0\0\0\0\1\251\207\0\20\204\251\207\0@\203\251" \ -+ "\207\0\200\4\251\207\0\257\251\207\0\277\251\207\0\317\251\207\0@\245" \ -+ "\0\0\0\0\2\251\207\0\200\251\207\0\357\207\251\207\0\377\2\251\207\0" \ -+ "\357\251\207\0\200\262\0\0\0\0=\270\250\223\0\260\234\202\0\257\226|" \ -+ "\0\246\203I(\257\201)\223\316\222\10\356\343\240\0\377\344\240\0\377" \ -+ "\334\227\0\377\320\213\1\377\331\226\1\377\335\235\1\377\332\230\1\377" \ -+ "\327\224\0\377\311\205\0\377\242d\0\377\237b\1\377\245e\0\377\247g\0" \ -+ "\377\252k\1\377\255n\1\377\262p\0\377\266t\1\377\274w\0\377\301z\1\377" \ -+ "\341\230\0\377\374\266\0\377\355\247\0\377\345\235\0\377\343\235\0\377" \ -+ "\343\237\0\377\344\237\0\377\345\240\0\377\346\241\0\377\350\243\0\377" \ -+ "\352\244\0\377\333\222\0\377\317\202\1\377\346\237\0\377\352\244\0\377" \ -+ "\353\246\1\377\354\250\1\377\356\251\0\377\357\253\0\377\362\254\0\377" \ -+ "\362\256\0\377\364\260\0\377\366\261\0\377\367\262\0\377\371\265\0\377" \ -+ "\372\266\0\377\372\271\0\377\374\273\0\377\375\276\0\377\376\301\0\377" \ -+ "\376\303\0\377\376\306\2\377\376\307\2\377\376\311\0\377\376\312\2\377" \ -+ "\375\311\13\377\202\376\315\0\377\10\376\315\12\377\376\315\34\377\376" \ -+ "\314$\377\376\3121\377\376\3107\377\375\314\"\341\370\325d)\367\327}" \ -+ "\0\203\367\326x\0\377\0\0\0\0\227\0\0\0\0\1\251\207\0\277\217\251\207" \ -+ "\0\377\1\251\207\0@\244\0\0\0\0\1\251\207\0\237\213\251\207\0\377\1\251" \ -+ "\207\0\237\261\0\0\0\0\20\270\250\223\0\260\234\202\0\257\225v\0\250" \ -+ "\204L\0\240|B\0\251~8*\270\2112\203\313\223\26\327\340\240\3\375\361" \ -+ "\255\0\377\364\260\0\377\355\255\0\377\347\246\1\377\343\241\1\377\330" \ -+ "\226\0\377\263n\0\377\202\250`\0\377'\250b\0\377\250e\1\377\255i\1\377" \ -+ "\261l\0\377\266o\1\377\273u\1\377\302z\0\377\342\227\0\377\375\271\0" \ -+ "\377\367\264\4\377\362\256\2\377\362\256\3\377\361\257\2\377\362\257" \ -+ "\2\377\362\257\1\377\362\257\0\377\364\260\0\377\366\263\0\377\352\244" \ -+ "\0\377\326\212\0\377\354\247\0\377\362\256\0\377\363\256\0\377\364\260" \ -+ "\0\377\366\260\0\377\370\263\0\377\371\265\0\377\372\267\0\377\373\271" \ -+ "\0\377\375\275\4\377\375\300\10\377\376\304\22\377\376\311!\377\376\315" \ -+ "/\377\376\3205\377\376\315\"\377\376\313\4\377\376\314\0\377\376\315" \ -+ "\1\377\202\376\317\0\377\15\376\320\0\377\375\315\13\377\376\317\10\377" \ -+ "\376\320\0\377\376\316\3\377\376\316\15\377\376\315\30\377\376\313!\377" \ -+ "\377\312/\377\377\311(\377\375\316\35\267\371\331m\14\367\332\206\0\202" \ -+ "\367\332\203\0\377\0\0\0\0\212\0\0\0\0\2\251\207\0""0\251\207\0\40\213" \ -+ "\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251\207\0@\243\0\0\0\0\1" \ -+ "\251\207\0`\215\251\207\0\377\1\251\207\0`\260\0\0\0\0""8\270\250\223" \ -+ "\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0\252\177;\0\263\213I\0" \ -+ "\266\227n\21\256\203\77Z\273\214-\241\321\230\24\327\350\246\0\377\367" \ -+ "\263\0\377\366\265\0\377\357\256\1\377\351\246\0\377\337\232\1\377\326" \ -+ "\217\0\377\314\204\1\377\304|\0\377\277v\0\377\273r\1\377\274o\2\377" \ -+ "\274p\1\377\303v\1\377\342\225\0\377\375\277\26\377\376\305&\377\374" \ -+ "\303&\377\374\304/\377\375\3040\377\374\3061\377\375\3061\377\374\306" \ -+ "/\377\375\307-\377\376\3133\377\372\303*\377\345\234\5\377\363\263\10" \ -+ "\377\375\303\26\377\375\305\32\377\376\310\40\377\376\312#\377\376\314" \ -+ "*\377\376\3171\377\376\3228\377\376\325B\377\376\330M\377\376\332V\377" \ -+ "\376\334[\377\376\336^\377\376\337[\377\376\337Z\377\375\336Y\377\376" \ -+ "\3318\377\376\322\3\377\202\376\323\1\377\20\376\324\0\377\376\325\0" \ -+ "\377\376\323\2\377\376\317\21\377\376\320\4\377\376\320\0\377\375\316" \ -+ "\1\377\376\315\7\377\376\314\25\377\376\313\36\377\376\311(\377\376\311" \ -+ "\33\377\374\324A\205\367\334\214\0\367\333\205\0\367\333\204\0\354\0" \ -+ "\0\0\0\2\251\207\0\20\251\207\0@\231\0\0\0\0\4\251\207\0\40\251\207\0" \ -+ "\237\251\207\0\377\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207" \ -+ "\0\377\1\251\207\0@\243\0\0\0\0\1\251\207\0\317\215\251\207\0\377\1\251" \ -+ "\207\0\317\260\0\0\0\0J\270\250\223\0\260\234\202\0\257\225v\0\250\204" \ -+ "K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\215]\0\252\215j\0\253" \ -+ "\204J\37\275\225UV\314\227'\252\345\245\4\375\373\272\0\377\377\300\0" \ -+ "\377\374\275\0\377\374\274\0\377\373\274\0\377\367\270\0\377\364\263" \ -+ "\0\377\360\255\0\377\353\246\0\377\345\236\0\377\343\232\0\377\361\256" \ -+ "\12\377\376\312\"\377\376\314/\377\376\317A\377\376\321I\377\377\322" \ -+ "O\377\376\325S\377\376\326W\377\376\327Y\377\376\331Z\377\376\333a\377" \ -+ "\377\336g\377\364\267\37\377\370\275$\377\377\337d\377\376\340g\377\376" \ -+ "\343m\377\376\344q\377\376\345r\377\376\346u\377\375\350v\377\376\347" \ -+ "s\377\376\350s\377\375\350u\377\375\350p\377\375\350m\377\376\347h\377" \ -+ "\376\344Z\377\376\340B\377\376\333$\377\376\326\3\377\376\327\0\377\376" \ -+ "\330\0\377\376\327\0\377\376\325\1\377\376\324\0\377\376\321\6\377\376" \ -+ "\316\20\377\376\317\4\377\376\316\0\377\375\315\0\377\376\314\5\377\375" \ -+ "\313\21\377\376\313\32\377\376\311\"\377\376\312\17\366\372\324OF\366" \ -+ "\333\206\0\366\335\226\0\352\0\0\0\0\4\251\207\0\20\251\207\0\200\251" \ -+ "\207\0\357\251\207\0\200\227\0\0\0\0\2\251\207\0\40\251\207\0\237\203" \ -+ "\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0" \ -+ "\377\1\251\207\0@\243\0\0\0\0\217\251\207\0\377\260\0\0\0\0\22\270\250" \ -+ "\223\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0\252\177:\0\264\213" \ -+ "G\0\267\227g\0\261\214Y\0\254\215a\0\257\211P\0\272\234y\0\272\215B\2" \ -+ "\255\211\26\315\273\213\22\377\345\252\13\377\376\301\0\377\377\304\0" \ -+ "\377\202\377\301\0\377#\377\303\0\377\377\305\0\377\377\310\0\377\377" \ -+ "\312\0\377\377\312\1\377\377\313\3\377\376\313\2\377\376\314\16\377\376" \ -+ "\320%\377\375\3233\377\376\326@\377\376\331I\377\376\332Q\377\376\334" \ -+ "X\377\375\336\\\377\375\341b\377\376\347m\377\375\327K\377\374\300\30" \ -+ "\377\376\344h\377\376\350p\377\376\350n\377\376\350o\377\375\351q\377" \ -+ "\376\351r\377\375\351l\377\376\350f\377\376\347`\377\375\345X\377\376" \ -+ "\344H\377\376\3377\377\375\335!\377\375\332\16\377\376\327\1\377\376" \ -+ "\327\0\377\202\376\330\0\377\21\376\326\1\377\376\325\1\377\376\323\1" \ -+ "\377\377\323\1\377\376\322\0\377\376\317\10\377\375\315\20\377\375\317" \ -+ "\1\377\375\314\0\377\377\313\0\377\376\313\3\377\375\312\17\377\375\312" \ -+ "\27\377\375\311\23\377\375\313\20\323\366\332\200\32\364\337\242\0\350" \ -+ "\0\0\0\0\3\251\207\0\20\251\207\0\200\251\207\0\357\202\251\207\0\377" \ -+ "\1\251\207\0\200\225\0\0\0\0\2\251\207\0@\251\207\0\237\205\251\207\0" \ -+ "\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251" \ -+ "\207\0@\243\0\0\0\0\217\251\207\0\377\260\0\0\0\0\33\270\250\223\0\260" \ -+ "\234\202\0\257\225v\0\250\204K\0\243}=\0\252\177:\0\264\213G\0\267\227" \ -+ "g\0\261\214Y\0\254\215a\0\257\211N\0\273\233s\0\275\217\77\0\251\207" \ -+ "\0\277\251\207\0\377\254\206\16\377\300\216\17\377\354\263\3\377\377" \ -+ "\307\0\377\377\305\0\377\375\301\0\377\375\303\0\377\376\306\1\377\377" \ -+ "\307\1\377\376\310\1\377\376\312\0\377\376\313\0\377\202\377\314\0\377" \ -+ "\30\375\315\0\377\375\317\6\377\376\320\14\377\376\321\23\377\376\323" \ -+ "\32\377\376\325#\377\376\330.\377\376\3328\377\376\336H\377\376\313\36" \ -+ "\377\376\3256\377\376\343X\377\376\337@\377\376\334,\377\376\333(\377" \ -+ "\375\333#\377\376\332\34\377\376\331\25\377\376\330\14\377\376\327\3" \ -+ "\377\376\326\0\377\375\325\3\377\376\327\3\377\375\327\1\377\202\376" \ -+ "\326\0\377\1\376\327\0\377\202\376\325\1\377\2\376\325\0\377\377\324" \ -+ "\0\377\202\376\322\1\377\14\376\320\0\377\376\315\11\377\376\314\16\377" \ -+ "\376\315\1\377\377\314\1\377\376\314\0\377\376\311\2\377\375\312\13\377" \ -+ "\375\310\23\377\376\307\3\377\373\3209\225\365\336\233\5\346\0\0\0\0" \ -+ "\3\251\207\0\40\251\207\0\217\251\207\0\357\204\251\207\0\377\1\251\207" \ -+ "\0\200\222\0\0\0\0\3\251\207\0\20\251\207\0`\251\207\0\317\207\251\207" \ -+ "\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251" \ -+ "\207\0@\243\0\0\0\0\1\251\207\0\357\215\251\207\0\377\1\251\207\0\357" \ -+ "\260\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0\243" \ -+ "}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211N" \ -+ "\0\273\233s\0\275\217\77\0\251\207\0\277\202\251\207\0\377\15\251\207" \ -+ "\1\377\257\213\27\377\312\230\17\377\370\277\2\377\377\312\0\377\377" \ -+ "\306\0\377\376\305\1\377\376\306\1\377\377\310\0\377\375\310\0\377\376" \ -+ "\312\1\377\376\313\0\377\377\313\0\377\202\376\314\0\377\202\375\315" \ -+ "\0\377)\375\316\0\377\376\317\0\377\376\320\1\377\376\322\16\377\375" \ -+ "\326(\377\375\3257\377\376\310\24\377\376\332C\377\376\331.\377\376\322" \ -+ "\0\377\376\323\0\377\375\323\0\377\376\323\0\377\376\325\0\377\376\325" \ -+ "\3\377\376\325\7\377\375\326\14\377\375\325\17\377\375\326\16\377\376" \ -+ "\325\11\377\376\325\4\377\376\325\2\377\376\325\1\377\376\324\1\377\376" \ -+ "\324\0\377\377\323\0\377\376\322\1\377\376\321\1\377\376\321\0\377\375" \ -+ "\317\0\377\376\316\0\377\376\314\11\377\375\314\5\377\377\314\0\377\376" \ -+ "\313\0\377\376\312\0\377\376\310\1\377\376\310\4\377\377\307\7\377\376" \ -+ "\310\4\370\366\320XV\344\0\0\0\0\2\251\207\0P\251\207\0\257\207\251\207" \ -+ "\0\377\1\251\207\0\200\220\0\0\0\0\2\251\207\0P\251\207\0\237\212\251" \ -+ "\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377" \ -+ "\1\251\207\0@\243\0\0\0\0\1\251\207\0\237\215\251\207\0\377\1\251\207" \ -+ "\0\237\260\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204" \ -+ "K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257" \ -+ "\211N\0\273\233s\0\275\217\77\0\251\207\0\277\204\251\207\0\377/\251" \ -+ "\207\1\377\266\215\26\377\337\250\14\377\376\307\0\377\377\313\1\377" \ -+ "\376\305\1\377\377\307\0\377\376\310\0\377\375\311\1\377\376\312\1\377" \ -+ "\376\312\0\377\376\313\1\377\377\314\3\377\376\314\1\377\375\315\1\377" \ -+ "\375\316\5\377\376\317\17\377\376\321\37\377\376\324,\377\376\323+\377" \ -+ "\376\327<\377\376\314$\377\375\316'\377\376\333I\377\376\324\31\377\376" \ -+ "\322\3\377\376\323\5\377\376\322\2\377\376\324\7\377\376\325\20\377\375" \ -+ "\325\22\377\375\325\23\377\376\324\23\377\376\324\20\377\376\324\16\377" \ -+ "\376\324\11\377\375\324\4\377\376\323\1\377\376\324\0\377\377\323\0\377" \ -+ "\376\323\1\377\376\322\1\377\376\320\1\377\376\320\0\377\375\317\0\377" \ -+ "\376\315\0\377\375\316\0\377\202\376\314\0\377\7\377\313\0\377\376\313" \ -+ "\2\377\376\311\1\377\376\312\0\377\377\310\0\377\376\305\3\377\360\307" \ -+ "Io\341\0\0\0\0\3\251\207\0""0\251\207\0\217\251\207\0\357\211\251\207" \ -+ "\0\377\1\251\207\0\200\214\0\0\0\0\4\251\207\0\20\251\207\0P\251\207" \ -+ "\0\237\251\207\0\357\214\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251" \ -+ "\207\0\277\217\251\207\0\377\1\251\207\0@\243\0\0\0\0\2\251\207\0\40" \ -+ "\251\207\0\357\213\251\207\0\377\2\251\207\0\357\251\207\0\40\260\0\0" \ -+ "\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0\252" \ -+ "\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211N\0\273\233" \ -+ "s\0\275\217\77\0\251\207\0\277\206\251\207\0\377\7\254\210\16\377\302" \ -+ "\224\30\377\365\276\0\377\377\314\0\377\377\307\1\377\376\306\1\377\376" \ -+ "\307\0\377\202\375\310\0\377\37\376\311\1\377\376\312\1\377\377\314\0" \ -+ "\377\377\314\1\377\376\314\2\377\375\316\13\377\376\317\27\377\375\321" \ -+ "!\377\376\321!\377\376\322!\377\376\3239\377\376\310\31\377\375\326\77" \ -+ "\377\375\330A\377\376\322\35\377\376\322\20\377\376\321\7\377\376\321" \ -+ "\5\377\375\323\23\377\376\324\25\377\376\324\24\377\377\322\26\377\375" \ -+ "\323\27\377\376\323\25\377\376\323\17\377\376\322\7\377\376\321\1\377" \ -+ "\376\322\1\377\376\321\1\377\375\321\0\377\376\321\0\377\202\375\317" \ -+ "\0\377\14\375\316\1\377\375\316\0\377\376\315\0\377\377\314\1\377\377" \ -+ "\315\0\377\377\314\0\377\377\314\2\377\377\311\0\377\374\306\4\377\363" \ -+ "\276\35\316\354\300Hj\352\321\221\15\336\0\0\0\0\3\251\207\0@\251\207" \ -+ "\0\217\251\207\0\337\214\251\207\0\377\1\251\207\0\200\214\0\0\0\0\1" \ -+ "\251\207\0\277\217\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0" \ -+ "\277\217\251\207\0\377\1\251\207\0@\244\0\0\0\0\2\251\207\0""0\251\207" \ -+ "\0\357\211\251\207\0\377\2\251\207\0\357\251\207\0""0\261\0\0\0\0\16" \ -+ "\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0\252\177:\0" \ -+ "\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211N\0\273\233s\0\275" \ -+ "\217\77\0\251\207\0\277\207\251\207\0\377\3\251\207\1\377\262\211\21" \ -+ "\377\337\251\11\377\202\377\312\0\377\6\376\305\1\377\377\307\0\377\376" \ -+ "\307\0\377\376\310\0\377\375\310\1\377\376\311\1\377\202\376\313\0\377" \ -+ "\25\377\313\0\377\376\313\0\377\376\314\2\377\375\315\2\377\375\315\1" \ -+ "\377\375\321\"\377\376\315/\377\375\311\36\377\375\331H\377\376\330F" \ -+ "\377\376\327@\377\376\327<\377\376\3266\377\376\324&\377\376\321\13\377" \ -+ "\376\317\10\377\375\321\33\377\375\324,\377\376\323)\377\376\321\31\377" \ -+ "\376\317\5\377\202\376\320\0\377\5\376\317\0\377\375\317\0\377\376\315" \ -+ "\0\377\375\316\0\377\376\316\0\377\202\377\317\0\377\12\377\315\0\377" \ -+ "\377\314\0\377\374\311\3\377\370\303\14\361\362\276\34\320\353\274;\223" \ -+ "\346\276aK\352\2718\21\344\300m\0\352\322\224\0\335\0\0\0\0\1\251\207" \ -+ "\0\200\217\251\207\0\377\1\251\207\0\200\214\0\0\0\0\1\251\207\0\277" \ -+ "\217\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207" \ -+ "\0\377\1\251\207\0@\245\0\0\0\0\4\251\207\0\20\251\207\0p\251\207\0\257" \ -+ "\251\207\0\337\203\251\207\0\377\4\251\207\0\337\251\207\0\257\251\207" \ -+ "\0p\251\207\0\20\262\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v" \ -+ "\0\250\204K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254" \ -+ "\215a\0\257\211N\0\273\233s\0\275\217\77\0\251\207\0\277\211\251\207" \ -+ "\0\377\15\252\207\14\377\305\224\22\377\370\302\0\377\377\314\0\377\377" \ -+ "\307\0\377\377\306\0\377\376\307\0\377\376\310\1\377\375\310\0\377\375" \ -+ "\311\1\377\376\311\1\377\377\312\0\377\376\313\0\377\202\377\313\0\377" \ -+ "\23\376\314\0\377\376\315\0\377\376\316\33\377\375\307\33\377\375\326" \ -+ "C\377\376\331J\377\376\332O\377\376\333R\377\376\334U\377\376\334P\377" \ -+ "\376\3308\377\376\324%\377\376\324+\377\376\3257\377\376\3255\377\376" \ -+ "\322(\377\376\321\26\377\376\320\17\377\377\317\5\377\202\377\320\0\377" \ -+ "\17\377\320\3\377\377\320\7\377\376\312\1\377\372\305\4\377\364\300\22" \ -+ "\350\356\274&\311\346\2664\242\342\263:h\335\260W4\341\266Y\10\350\272" \ -+ "A\0\342\276r\0\353\2724\0\345\300g\0\352\322\223\0\335\0\0\0\0\1\251" \ -+ "\207\0\200\217\251\207\0\377\1\251\207\0\200\214\0\0\0\0\1\251\207\0" \ -+ "\277\217\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251" \ -+ "\207\0\377\1\251\207\0@\342\0\0\0\0\16\270\250\223\0\260\234\202\0\257" \ -+ "\225v\0\250\204K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y" \ -+ "\0\254\215a\0\257\211N\0\273\233s\0\275\217\77\0\251\207\0\277\212\251" \ -+ "\207\0\377\6\251\207\3\377\266\214\26\377\352\262\3\377\377\313\0\377" \ -+ "\377\311\1\377\377\306\1\377\202\377\307\0\377*\376\307\0\377\375\307" \ -+ "\1\377\375\311\1\377\376\311\1\377\376\311\0\377\376\312\0\377\376\313" \ -+ "\1\377\376\313\0\377\377\312\0\377\376\315&\377\376\325B\377\376\332" \ -+ "T\377\376\335\\\377\376\336`\377\375\341b\377\377\341d\377\377\342g\377" \ -+ "\377\341c\377\377\336Y\377\377\335P\377\377\334F\377\377\332=\377\377" \ -+ "\3275\377\377\323.\377\375\316$\377\370\307\40\377\357\277)\377\340\263" \ -+ "+\377\333\2563\313\340\265N\201\333\264aU\335\261S0\330\261c\24\324\257" \ -+ "v\0\337\264N\0\336\261Q\0\342\267W\0\351\272\77\0\343\276o\0\353\272" \ -+ "4\0\345\300g\0\352\322\223\0\335\0\0\0\0\1\251\207\0\200\217\251\207" \ -+ "\0\377\1\251\207\0\200\214\0\0\0\0\1\251\207\0\277\217\251\207\0\377" \ -+ "\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251\207" \ -+ "\0@\342\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0" \ -+ "\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211" \ -+ "N\0\273\233s\0\275\217\77\0\251\207\0\277\214\251\207\0\377\6\257\213" \ -+ "\31\377\327\242\17\377\374\307\0\377\377\314\0\377\377\313\1\377\377" \ -+ "\310\0\377\202\377\307\0\377\1\376\311\0\377\202\377\312\0\377\7\377" \ -+ "\313\3\377\377\315\1\377\377\316\11\377\377\321\36\377\377\323%\377\377" \ -+ "\333N\377\377\337\\\377\202\377\337Y\377\34\377\334V\377\375\331N\377" \ -+ "\374\330P\377\372\324L\377\365\314G\377\355\302>\377\346\273:\377\334" \ -+ "\263:\377\321\2504\377\307\234#\377\274\225\40\377\265\221\34\377\257" \ -+ "\213\15\377\253\211\5\377\252\210\1\260\324\257p\0\323\265\206\0\336" \ -+ "\265]\0\333\262Y\0\326\260o\0\337\264L\0\336\261Q\0\342\267W\0\351\272" \ -+ "\77\0\343\276o\0\353\2724\0\345\300g\0\352\322\223\0\335\0\0\0\0\1\251" \ -+ "\207\0\200\217\251\207\0\377\1\251\207\0\200\214\0\0\0\0\1\251\207\0" \ -+ "\277\217\251\207\0\377\1\251\207\0@\213\0\0\0\0\1\251\207\0\277\217\251" \ -+ "\207\0\377\1\251\207\0@\342\0\0\0\0\16\270\250\223\0\260\234\202\0\257" \ -+ "\225v\0\250\204K\0\243}=\0\252\177:\0\264\213G\0\267\227g\0\261\214Y" \ -+ "\0\254\215a\0\257\211N\0\273\233s\0\275\217\77\0\251\207\0\277\215\251" \ -+ "\207\0\377\33\254\211\11\377\277\222\30\377\336\250\16\377\363\275\7" \ -+ "\377\374\305\6\377\377\311\10\377\377\312\7\377\377\310\5\377\375\310" \ -+ "\10\377\376\312\22\377\373\307\23\377\372\313!\377\370\310+\377\363\302" \ -+ "+\377\361\3022\367\357\301B\361\352\275B\341\335\2606\377\324\246-\377" \ -+ "\316\2441\377\310\2423\377\277\225\37\377\273\225\37\377\270\223\33\377" \ -+ "\261\214\17\377\256\213\14\377\252\211\5\377\206\251\207\0\377\16\251" \ -+ "\207\0\357\326\260j\0\325\265\200\0\336\265[\0\333\262Y\0\326\260o\0" \ -+ "\337\264L\0\336\261Q\0\342\267W\0\351\272\77\0\343\276o\0\353\2724\0" \ -+ "\345\300g\0\352\322\223\0\335\0\0\0\0\1\251\207\0\200\217\251\207\0\377" \ -+ "\1\251\207\0\200\214\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251" \ -+ "\207\0@\213\0\0\0\0\1\251\207\0\277\217\251\207\0\377\1\251\207\0@\342" \ -+ "\0\0\0\0\16\270\250\223\0\260\234\202\0\257\225v\0\250\204K\0\243}=\0" \ -+ "\252\177:\0\264\213G\0\267\227g\0\261\214Y\0\254\215a\0\257\211N\0\273" \ -+ "\233s\0\275\217\77\0\251\207\0\277\217\251\207\0\377\21\254\207\11\377" \ -+ "\263\213#\332\312\232<\234\322\2371\267\330\2464\266\333\254B\270\330" \ -+ "\253H\247\316\2339\207\323\250S\212\313\227 Date: Fri, 21 Mar 2025 12:12:09 +0100 Subject: [PATCH 166/247] update qutselect to 3.13 --- buildroot-external/package/qutselect/qutselect.hash | 2 +- buildroot-external/package/qutselect/qutselect.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/package/qutselect/qutselect.hash b/buildroot-external/package/qutselect/qutselect.hash index 4afc712..8f04786 100644 --- a/buildroot-external/package/qutselect/qutselect.hash +++ b/buildroot-external/package/qutselect/qutselect.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 657252be1bc519b01f54a163bef378c6ef3d48cdf76a68bb49e4d1e86f82fcc4 qutselect-3.12.tar.gz +sha256 f1b76ea0fa840d6bf504f8420384a8304afda142433be2b0f6a4be550284f445 qutselect-3.13.tar.gz diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index dd407b1..28fa5c7 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -4,7 +4,7 @@ # ################################################################################ -QUTSELECT_VERSION = 3.12 +QUTSELECT_VERSION = 3.13 QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE From 6231db3c9eccaa3d988d926e67493a0cd189f976 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 21 Mar 2025 12:12:51 +0100 Subject: [PATCH 167/247] update upstream kernel to 6.12.19 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 51f77ce..0171882 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.19" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 0f21d31..33477db 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -9,7 +9,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.18" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.19" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index b26f6ac..7015f7d 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 beb902a5f69d9e57710112203db38111dad6d30556ea8ce389284c8077fe944d linux-6.12.18.tar.xz +sha256 d73bf057bec04434b169d1b61641936f7d0c97ceb923a281f32e35dd4dcc6531 linux-6.12.19.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index b26f6ac..7015f7d 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 beb902a5f69d9e57710112203db38111dad6d30556ea8ce389284c8077fe944d linux-6.12.18.tar.xz +sha256 d73bf057bec04434b169d1b61641936f7d0c97ceb923a281f32e35dd4dcc6531 linux-6.12.19.tar.xz From ce96c1881ef25f011160e2162d9d274e5464279c Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 21 Mar 2025 12:15:15 +0100 Subject: [PATCH 168/247] update rpi-eeprom to latest versions --- buildroot-external/package/rpi-eeprom/rpi-eeprom.hash | 2 +- buildroot-external/package/rpi-eeprom/rpi-eeprom.mk | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash b/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash index 44ca532..1137ec5 100644 --- a/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash +++ b/buildroot-external/package/rpi-eeprom/rpi-eeprom.hash @@ -1,3 +1,3 @@ # Locally computed sha256 8070f30d450f10fa9253e7a254cd3877fa4b973eb437b94d8c03e2fabc64c916 LICENSE -sha256 c833aeeaa7fcae516c2971b5084b479a62b8c1e348a380cf76e3b8d1dfe82a78 rpi-eeprom-3a16bd016f533877079c3bfad188539abd31fb8a.tar.gz +sha256 74dc46174620ee56ab83b42c2662a679efad80c66ecd38428d21b11a0bbe080e rpi-eeprom-6c2e2d6833df14134463ea8968151f031950a21e.tar.gz diff --git a/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk b/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk index bcdeba8..c383ddd 100644 --- a/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk +++ b/buildroot-external/package/rpi-eeprom/rpi-eeprom.mk @@ -4,7 +4,7 @@ # ################################################################################ -RPI_EEPROM_VERSION = 3a16bd016f533877079c3bfad188539abd31fb8a +RPI_EEPROM_VERSION = 6c2e2d6833df14134463ea8968151f031950a21e RPI_EEPROM_SITE = $(call github,raspberrypi,rpi-eeprom,$(RPI_EEPROM_VERSION)) RPI_EEPROM_LICENSE = BSD-3-Clause RPI_EEPROM_LICENSE_FILES = LICENSE @@ -12,10 +12,10 @@ RPI_EEPROM_INSTALL_IMAGES = YES ifeq ($(BR2_PACKAGE_RPI_EEPROM_RPI4),y) # Raspberry Pi 4 - RPI_EEPROM_FIRMWARE_PATH = firmware-2712/stable/pieeprom-2025-02-11.bin + RPI_EEPROM_FIRMWARE_PATH = firmware-2711/stable/pieeprom-2025-02-11.bin else ifeq ($(BR2_PACKAGE_RPI_EEPROM_RPI5),y) # Raspberry Pi 5 - RPI_EEPROM_FIRMWARE_PATH = firmware-2712/stable/pieeprom-2025-03-03.bin + RPI_EEPROM_FIRMWARE_PATH = firmware-2712/stable/pieeprom-2025-03-19.bin endif define RPI_EEPROM_BUILD_CMDS From 968b56e5ade91346bcd908a8e0300b79b1b4650b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Mar 2025 12:21:31 +0100 Subject: [PATCH 169/247] Bump metcalfc/changelog-generator from 4.3.1 to 4.5.0 (#31) Bumps [metcalfc/changelog-generator](https://github.com/metcalfc/changelog-generator) from 4.3.1 to 4.5.0. - [Release notes](https://github.com/metcalfc/changelog-generator/releases) - [Changelog](https://github.com/metcalfc/changelog-generator/blob/main/release-notes.png) - [Commits](https://github.com/metcalfc/changelog-generator/compare/v4.3.1...v4.5.0) --- updated-dependencies: - dependency-name: metcalfc/changelog-generator dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 08da348..f284de4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -60,7 +60,7 @@ jobs: - name: Generate changelog id: changelog - uses: metcalfc/changelog-generator@v4.3.1 + uses: metcalfc/changelog-generator@v4.5.0 with: myToken: ${{ secrets.GITHUB_TOKEN }} From eeab02acc57185433e466fe7aaf2f4dacbc9ff0c Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 21 Mar 2025 13:12:32 +0100 Subject: [PATCH 170/247] Update README.md fix logo link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5e4abf0..0d0ada9 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ - + [![Current Release](https://img.shields.io/github/release/jens-maus/thinRoot.svg)](https://github.com/jens-maus/thinRoot/releases/latest) [![Downloads](https://img.shields.io/github/downloads/jens-maus/thinRoot/latest/total.svg)](https://github.com/jens-maus/thinRoot/releases/latest) From 55cd4e85fa45b703b265170e841e9b65e6ed6cdf Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sat, 22 Mar 2025 10:43:17 +0100 Subject: [PATCH 171/247] fix BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_12 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 0171882..3bc2d31 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -1,6 +1,6 @@ BR2_x86_64=y BR2_x86_corei7=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_11=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_12=y # BR2_TARGET_ENABLE_ROOT_LOGIN is not set BR2_ROOTFS_USERS_TABLES="${BR2_EXTERNAL_THINROOT_PATH}/board/generic-x86_64/users_table.txt" BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-build.sh" diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 33477db..2787a48 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -1,6 +1,6 @@ BR2_arm=y BR2_cortex_a17=y -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_11=y +BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_6_12=y BR2_ARM_FPU_NEON_VFPV4=y # BR2_COMPILER_PARANOID_UNSAFE_PATH is not set BR2_ROOTFS_USERS_TABLES="${BR2_EXTERNAL_THINROOT_PATH}/board/tinkerboard/users_table.txt" From 3d64729469e29e23408c4b046415ba2d28e31b88 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sat, 22 Mar 2025 18:23:34 +0100 Subject: [PATCH 172/247] remove 0020-wayland-protocols-pc-fix buildroot upstream patch because not required anymore with buildroot 2025.02 --- .../0020-wayland-protocols-pc-fix.patch | 13 ------------- .../0001-wayland-protocols-pc-fix.patch | 10 ---------- .../0001-wayland-protocols-pc-fix.patch.orig | 0 3 files changed, 23 deletions(-) delete mode 100644 buildroot-patches/0020-wayland-protocols-pc-fix.patch delete mode 100644 buildroot-patches/0020-wayland-protocols-pc-fix/buildroot/package/wayland-protocols/0001-wayland-protocols-pc-fix.patch delete mode 100644 buildroot-patches/0020-wayland-protocols-pc-fix/buildroot/package/wayland-protocols/0001-wayland-protocols-pc-fix.patch.orig diff --git a/buildroot-patches/0020-wayland-protocols-pc-fix.patch b/buildroot-patches/0020-wayland-protocols-pc-fix.patch deleted file mode 100644 index f7da0c3..0000000 --- a/buildroot-patches/0020-wayland-protocols-pc-fix.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- buildroot/package/wayland-protocols/0001-wayland-protocols-pc-fix.patch.orig -+++ buildroot/package/wayland-protocols/0001-wayland-protocols-pc-fix.patch -@@ -0,0 +1,10 @@ -+--- a/wayland-protocols.pc.in 2024-04-26 09:33:20.000000000 +0200 -++++ b/wayland-protocols.pc.in 2025-01-21 20:36:46.724700320 +0100 -+@@ -1,6 +1,6 @@ -+ prefix=@prefix@ -+ datarootdir=@datarootdir@ -+-pkgdatadir=${pc_sysrootdir}${datarootdir}/@PACKAGE@ -++pkgdatadir=${datarootdir}/@PACKAGE@ -+ -+ Name: Wayland Protocols -+ Description: Wayland protocol files diff --git a/buildroot-patches/0020-wayland-protocols-pc-fix/buildroot/package/wayland-protocols/0001-wayland-protocols-pc-fix.patch b/buildroot-patches/0020-wayland-protocols-pc-fix/buildroot/package/wayland-protocols/0001-wayland-protocols-pc-fix.patch deleted file mode 100644 index 3936c21..0000000 --- a/buildroot-patches/0020-wayland-protocols-pc-fix/buildroot/package/wayland-protocols/0001-wayland-protocols-pc-fix.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- a/wayland-protocols.pc.in 2024-04-26 09:33:20.000000000 +0200 -+++ b/wayland-protocols.pc.in 2025-01-21 20:36:46.724700320 +0100 -@@ -1,6 +1,6 @@ - prefix=@prefix@ - datarootdir=@datarootdir@ --pkgdatadir=${pc_sysrootdir}${datarootdir}/@PACKAGE@ -+pkgdatadir=${datarootdir}/@PACKAGE@ - - Name: Wayland Protocols - Description: Wayland protocol files diff --git a/buildroot-patches/0020-wayland-protocols-pc-fix/buildroot/package/wayland-protocols/0001-wayland-protocols-pc-fix.patch.orig b/buildroot-patches/0020-wayland-protocols-pc-fix/buildroot/package/wayland-protocols/0001-wayland-protocols-pc-fix.patch.orig deleted file mode 100644 index e69de29..0000000 From 332d7a0904912998e366991ecbd73804ffaefa18 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sat, 22 Mar 2025 18:42:17 +0100 Subject: [PATCH 173/247] update webkitgtk minibrowser zoom level patch to be comaptible with webkitgtk-2.46.4. --- .../0021-webkitgtk-minibrowser.patch | 22 +++++++++---------- .../0000-minibrowser-zoom-level.patch | 22 +++++++++---------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/buildroot-patches/0021-webkitgtk-minibrowser.patch b/buildroot-patches/0021-webkitgtk-minibrowser.patch index bd9fb2e..44e801a 100644 --- a/buildroot-patches/0021-webkitgtk-minibrowser.patch +++ b/buildroot-patches/0021-webkitgtk-minibrowser.patch @@ -1,17 +1,17 @@ --- buildroot/package/webkitgtk/0000-minibrowser-zoom-level.patch.orig +++ buildroot/package/webkitgtk/0000-minibrowser-zoom-level.patch @@ -0,0 +1,29 @@ -+--- a/Tools/MiniBrowser/gtk/main.c 2024-03-16 07:45:51.328670000 +0100 -++++ b/Tools/MiniBrowser/gtk/main.c 2025-01-23 09:53:26.729347760 +0100 -+@@ -76,6 +76,7 @@ -+ static gboolean exitAfterLoad; -+ static gboolean webProcessCrashed; -+ static gboolean printVersion; ++--- a/Tools/MiniBrowser/gtk/main.c 2024-08-19 08:28:40.315243700 +0200 +++++ b/Tools/MiniBrowser/gtk/main.c 2025-03-22 18:35:45.248938849 +0100 ++@@ -70,6 +70,7 @@ ++ static const char *cookiesFile; ++ static const char *cookiesPolicy; ++ static const char *proxy; ++static gdouble zoomLevel = 0.0; -+ -+ #if !GTK_CHECK_VERSION(3, 98, 0) -+ static gboolean enableSandbox; -+@@ -118,6 +119,10 @@ ++ static gboolean darkMode; ++ static char* timeZone; ++ static gboolean enableITP; ++@@ -120,6 +121,10 @@ + if (editorMode) + webkit_web_view_set_editable(webView, TRUE); + @@ -22,7 +22,7 @@ + browser_window_append_view(window, webView); + return webView; + } -+@@ -164,6 +169,7 @@ ++@@ -166,6 +171,7 @@ + { "session-file", 's', 0, G_OPTION_ARG_FILENAME, &sessionFile, "Session file", "FILE" }, + { "geometry", 'g', 0, G_OPTION_ARG_STRING, &geometry, "Unused. Kept for backwards-compatibility only", "GEOMETRY" }, + { "full-screen", 'f', 0, G_OPTION_ARG_NONE, &fullScreen, "Set the window to full-screen mode", NULL }, diff --git a/buildroot-patches/0021-webkitgtk-minibrowser/buildroot/package/webkitgtk/0000-minibrowser-zoom-level.patch b/buildroot-patches/0021-webkitgtk-minibrowser/buildroot/package/webkitgtk/0000-minibrowser-zoom-level.patch index dcb8a52..c63da8c 100644 --- a/buildroot-patches/0021-webkitgtk-minibrowser/buildroot/package/webkitgtk/0000-minibrowser-zoom-level.patch +++ b/buildroot-patches/0021-webkitgtk-minibrowser/buildroot/package/webkitgtk/0000-minibrowser-zoom-level.patch @@ -1,14 +1,14 @@ ---- a/Tools/MiniBrowser/gtk/main.c 2024-03-16 07:45:51.328670000 +0100 -+++ b/Tools/MiniBrowser/gtk/main.c 2025-01-23 09:53:26.729347760 +0100 -@@ -76,6 +76,7 @@ - static gboolean exitAfterLoad; - static gboolean webProcessCrashed; - static gboolean printVersion; +--- a/Tools/MiniBrowser/gtk/main.c 2024-08-19 08:28:40.315243700 +0200 ++++ b/Tools/MiniBrowser/gtk/main.c 2025-03-22 18:35:45.248938849 +0100 +@@ -70,6 +70,7 @@ + static const char *cookiesFile; + static const char *cookiesPolicy; + static const char *proxy; +static gdouble zoomLevel = 0.0; - - #if !GTK_CHECK_VERSION(3, 98, 0) - static gboolean enableSandbox; -@@ -118,6 +119,10 @@ + static gboolean darkMode; + static char* timeZone; + static gboolean enableITP; +@@ -120,6 +121,10 @@ if (editorMode) webkit_web_view_set_editable(webView, TRUE); @@ -19,7 +19,7 @@ browser_window_append_view(window, webView); return webView; } -@@ -164,6 +169,7 @@ +@@ -166,6 +171,7 @@ { "session-file", 's', 0, G_OPTION_ARG_FILENAME, &sessionFile, "Session file", "FILE" }, { "geometry", 'g', 0, G_OPTION_ARG_STRING, &geometry, "Unused. Kept for backwards-compatibility only", "GEOMETRY" }, { "full-screen", 'f', 0, G_OPTION_ARG_NONE, &fullScreen, "Set the window to full-screen mode", NULL }, From 502598e866406020b370cd7c456f4a39aef8ce7f Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sat, 22 Mar 2025 23:40:26 +0100 Subject: [PATCH 174/247] add webkitgtk fixes buildroot upstream patch --- buildroot-patches/0022-webkitgtk-fixes.patch | 19 +++++++++++++++++++ .../0000-mediasourceprivategstreamer.patch | 16 ++++++++++++++++ ...000-mediasourceprivategstreamer.patch.orig | 0 3 files changed, 35 insertions(+) create mode 100644 buildroot-patches/0022-webkitgtk-fixes.patch create mode 100644 buildroot-patches/0022-webkitgtk-fixes/buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch create mode 100644 buildroot-patches/0022-webkitgtk-fixes/buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch.orig diff --git a/buildroot-patches/0022-webkitgtk-fixes.patch b/buildroot-patches/0022-webkitgtk-fixes.patch new file mode 100644 index 0000000..20b7291 --- /dev/null +++ b/buildroot-patches/0022-webkitgtk-fixes.patch @@ -0,0 +1,19 @@ +--- buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch.orig ++++ buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch +@@ -0,0 +1,16 @@ ++--- a/Source/WebCore/platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.h 2024-11-26 10:32:28.891127800 +0100 +++++ b/Source/WebCore/platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.h 2025-03-22 23:38:07.716515423 +0100 ++@@ -94,12 +94,12 @@ ++ Ref m_logger; ++ const void* m_logIdentifier; ++ uint64_t m_nextSourceBufferID { 0 }; +++#endif ++ ++ // Stores known track IDs, so we can work around ID collisions between multiple source buffers. ++ // The registry is placed here to enforce ID uniqueness specifically by player, not by process, ++ // since its not an issue if multiple players use the same ID, and we want to preserve IDs as much as possible. ++ HashSet, WTF::UnsignedWithZeroKeyHashTraits> m_trackIdRegistry; ++-#endif ++ }; ++ ++ } // namespace WebCore diff --git a/buildroot-patches/0022-webkitgtk-fixes/buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch b/buildroot-patches/0022-webkitgtk-fixes/buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch new file mode 100644 index 0000000..5efa462 --- /dev/null +++ b/buildroot-patches/0022-webkitgtk-fixes/buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch @@ -0,0 +1,16 @@ +--- a/Source/WebCore/platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.h 2024-11-26 10:32:28.891127800 +0100 ++++ b/Source/WebCore/platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.h 2025-03-22 23:38:07.716515423 +0100 +@@ -94,12 +94,12 @@ + Ref m_logger; + const void* m_logIdentifier; + uint64_t m_nextSourceBufferID { 0 }; ++#endif + + // Stores known track IDs, so we can work around ID collisions between multiple source buffers. + // The registry is placed here to enforce ID uniqueness specifically by player, not by process, + // since its not an issue if multiple players use the same ID, and we want to preserve IDs as much as possible. + HashSet, WTF::UnsignedWithZeroKeyHashTraits> m_trackIdRegistry; +-#endif + }; + + } // namespace WebCore diff --git a/buildroot-patches/0022-webkitgtk-fixes/buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch.orig b/buildroot-patches/0022-webkitgtk-fixes/buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch.orig new file mode 100644 index 0000000..e69de29 From 00c051bd0f51077d28a4d8aeed28a8eb5077271e Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Mon, 24 Mar 2025 10:13:17 +0100 Subject: [PATCH 175/247] add buildroot upstream patch to bump dhcpcd to 10.2.2 which integrates a fix for glibc 2.41 compatibility which otherwise blocks some syscall and terminates unexpectly. (cf. https://linux.debian.bugs.dist.narkive.com/8DksCnp7/bug-1096157-dhcpcd-need-seccomp-update-for-glibc-2-41) --- .../0003-dhcpcd-glibc241-fix.patch | 20 +++++ .../buildroot/package/dhcpcd/dhcpcd.hash | 4 + .../buildroot/package/dhcpcd/dhcpcd.hash.orig | 4 + .../buildroot/package/dhcpcd/dhcpcd.mk | 78 +++++++++++++++++++ .../buildroot/package/dhcpcd/dhcpcd.mk.orig | 78 +++++++++++++++++++ 5 files changed, 184 insertions(+) create mode 100644 buildroot-patches/0003-dhcpcd-glibc241-fix.patch create mode 100644 buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash create mode 100644 buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash.orig create mode 100644 buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk create mode 100644 buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk.orig diff --git a/buildroot-patches/0003-dhcpcd-glibc241-fix.patch b/buildroot-patches/0003-dhcpcd-glibc241-fix.patch new file mode 100644 index 0000000..08a5df7 --- /dev/null +++ b/buildroot-patches/0003-dhcpcd-glibc241-fix.patch @@ -0,0 +1,20 @@ +--- buildroot/package/dhcpcd/dhcpcd.hash.orig ++++ buildroot/package/dhcpcd/dhcpcd.hash +@@ -1,4 +1,4 @@ +-# sha256 from https://github.com/NetworkConfiguration/dhcpcd/releases/tag/v10.1.0 +-sha256 abc307c63853da3199baa5c1e15fd5ede9d68d068b2a59ca14c5a6768e9cc3b7 dhcpcd-10.1.0.tar.xz ++# sha256 from https://github.com/NetworkConfiguration/dhcpcd/releases/tag/v10.2.2 ++sha256 5f257b02f874b3b8cb031e5be79c99cf9cbd4f65eae2a50c9b1beddafb3f51bc dhcpcd-10.2.2.tar.xz + # Locally calculated + sha256 224b37cd1ef1365bd2ac9eaec9f32fee94e85dd40f95461ebcb21e758357ac1f LICENSE +--- buildroot/package/dhcpcd/dhcpcd.mk.orig ++++ buildroot/package/dhcpcd/dhcpcd.mk +@@ -4,7 +4,7 @@ + # + ################################################################################ + +-DHCPCD_VERSION = 10.1.0 ++DHCPCD_VERSION = 10.2.2 + DHCPCD_SOURCE = dhcpcd-$(DHCPCD_VERSION).tar.xz + DHCPCD_SITE = https://github.com/NetworkConfiguration/dhcpcd/releases/download/v$(DHCPCD_VERSION) + DHCPCD_DEPENDENCIES = host-pkgconf diff --git a/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash b/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash new file mode 100644 index 0000000..3220435 --- /dev/null +++ b/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash @@ -0,0 +1,4 @@ +# sha256 from https://github.com/NetworkConfiguration/dhcpcd/releases/tag/v10.2.2 +sha256 5f257b02f874b3b8cb031e5be79c99cf9cbd4f65eae2a50c9b1beddafb3f51bc dhcpcd-10.2.2.tar.xz +# Locally calculated +sha256 224b37cd1ef1365bd2ac9eaec9f32fee94e85dd40f95461ebcb21e758357ac1f LICENSE diff --git a/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash.orig b/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash.orig new file mode 100644 index 0000000..34f6419 --- /dev/null +++ b/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash.orig @@ -0,0 +1,4 @@ +# sha256 from https://github.com/NetworkConfiguration/dhcpcd/releases/tag/v10.1.0 +sha256 abc307c63853da3199baa5c1e15fd5ede9d68d068b2a59ca14c5a6768e9cc3b7 dhcpcd-10.1.0.tar.xz +# Locally calculated +sha256 224b37cd1ef1365bd2ac9eaec9f32fee94e85dd40f95461ebcb21e758357ac1f LICENSE diff --git a/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk b/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk new file mode 100644 index 0000000..69f4ae6 --- /dev/null +++ b/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk @@ -0,0 +1,78 @@ +################################################################################ +# +# dhcpcd +# +################################################################################ + +DHCPCD_VERSION = 10.2.2 +DHCPCD_SOURCE = dhcpcd-$(DHCPCD_VERSION).tar.xz +DHCPCD_SITE = https://github.com/NetworkConfiguration/dhcpcd/releases/download/v$(DHCPCD_VERSION) +DHCPCD_DEPENDENCIES = host-pkgconf +DHCPCD_LICENSE = BSD-2-Clause +DHCPCD_LICENSE_FILES = LICENSE +DHCPCD_CPE_ID_VALID = YES + +DHCPCD_CONFIG_OPTS = \ + --libexecdir=/lib/dhcpcd \ + --os=linux \ + --privsepuser=dhcpcd + +DHCPCD_MAKE_OPTS = \ + BINMODE=755 + +ifeq ($(BR2_PACKAGE_DHCPCD_ENABLE_PRIVSEP),y) +DHCPCD_CONFIG_OPTS += --enable-privsep +else +DHCPCD_CONFIG_OPTS += --disable-privsep +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +DHCPCD_CONFIG_OPTS += --with-udev +DHCPCD_DEPENDENCIES += udev +else +DHCPCD_CONFIG_OPTS += --without-udev +endif + +ifeq ($(BR2_STATIC_LIBS),y) +DHCPCD_CONFIG_OPTS += --enable-static +endif + +ifeq ($(BR2_USE_MMU),) +DHCPCD_CONFIG_OPTS += --disable-fork +endif + +define DHCPCD_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(DHCPCD_CONFIG_OPTS)) +endef + +define DHCPCD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(DHCPCD_MAKE_OPTS) all +endef + +define DHCPCD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(DHCPCD_MAKE_OPTS) install DESTDIR=$(TARGET_DIR) +endef + +# When network-manager is enabled together with dhcpcd, it will use +# dhcpcd as a DHCP client, and will be in charge of running, so we +# don't want the init script or service file to be installed. +ifeq ($(BR2_PACKAGE_NETWORK_MANAGER),) +define DHCPCD_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/dhcpcd/S41dhcpcd \ + $(TARGET_DIR)/etc/init.d/S41dhcpcd +endef + +define DHCPCD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/dhcpcd/dhcpcd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/dhcpcd.service +endef +endif + +define DHCPCD_USERS + dhcpcd -1 dhcpcd -1 * - - - dhcpcd user +endef + +# NOTE: Even though this package has a configure script, it is not generated +# using the autotools, so we have to use the generic package infrastructure. + +$(eval $(generic-package)) diff --git a/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk.orig b/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk.orig new file mode 100644 index 0000000..3a4b0e1 --- /dev/null +++ b/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk.orig @@ -0,0 +1,78 @@ +################################################################################ +# +# dhcpcd +# +################################################################################ + +DHCPCD_VERSION = 10.1.0 +DHCPCD_SOURCE = dhcpcd-$(DHCPCD_VERSION).tar.xz +DHCPCD_SITE = https://github.com/NetworkConfiguration/dhcpcd/releases/download/v$(DHCPCD_VERSION) +DHCPCD_DEPENDENCIES = host-pkgconf +DHCPCD_LICENSE = BSD-2-Clause +DHCPCD_LICENSE_FILES = LICENSE +DHCPCD_CPE_ID_VALID = YES + +DHCPCD_CONFIG_OPTS = \ + --libexecdir=/lib/dhcpcd \ + --os=linux \ + --privsepuser=dhcpcd + +DHCPCD_MAKE_OPTS = \ + BINMODE=755 + +ifeq ($(BR2_PACKAGE_DHCPCD_ENABLE_PRIVSEP),y) +DHCPCD_CONFIG_OPTS += --enable-privsep +else +DHCPCD_CONFIG_OPTS += --disable-privsep +endif + +ifeq ($(BR2_PACKAGE_HAS_UDEV),y) +DHCPCD_CONFIG_OPTS += --with-udev +DHCPCD_DEPENDENCIES += udev +else +DHCPCD_CONFIG_OPTS += --without-udev +endif + +ifeq ($(BR2_STATIC_LIBS),y) +DHCPCD_CONFIG_OPTS += --enable-static +endif + +ifeq ($(BR2_USE_MMU),) +DHCPCD_CONFIG_OPTS += --disable-fork +endif + +define DHCPCD_CONFIGURE_CMDS + (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(DHCPCD_CONFIG_OPTS)) +endef + +define DHCPCD_BUILD_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(DHCPCD_MAKE_OPTS) all +endef + +define DHCPCD_INSTALL_TARGET_CMDS + $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(DHCPCD_MAKE_OPTS) install DESTDIR=$(TARGET_DIR) +endef + +# When network-manager is enabled together with dhcpcd, it will use +# dhcpcd as a DHCP client, and will be in charge of running, so we +# don't want the init script or service file to be installed. +ifeq ($(BR2_PACKAGE_NETWORK_MANAGER),) +define DHCPCD_INSTALL_INIT_SYSV + $(INSTALL) -m 755 -D package/dhcpcd/S41dhcpcd \ + $(TARGET_DIR)/etc/init.d/S41dhcpcd +endef + +define DHCPCD_INSTALL_INIT_SYSTEMD + $(INSTALL) -D -m 0644 package/dhcpcd/dhcpcd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/dhcpcd.service +endef +endif + +define DHCPCD_USERS + dhcpcd -1 dhcpcd -1 * - - - dhcpcd user +endef + +# NOTE: Even though this package has a configure script, it is not generated +# using the autotools, so we have to use the generic package infrastructure. + +$(eval $(generic-package)) From 4b63fcd130b11ba1316db0c9f889fa7da109b914 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Mon, 24 Mar 2025 10:32:17 +0100 Subject: [PATCH 176/247] bump upstream kernel to 6.12.20 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 3bc2d31..bc2c19c 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.19" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.20" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 2787a48..d08cf88 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -9,7 +9,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.19" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.20" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index 7015f7d..14cb271 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 d73bf057bec04434b169d1b61641936f7d0c97ceb923a281f32e35dd4dcc6531 linux-6.12.19.tar.xz +sha256 230e89b07b0ab82e74f07ecc1bee3105dca81d0ef4a97f900929c407249b6ac7 linux-6.12.20.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index 7015f7d..14cb271 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 d73bf057bec04434b169d1b61641936f7d0c97ceb923a281f32e35dd4dcc6531 linux-6.12.19.tar.xz +sha256 230e89b07b0ab82e74f07ecc1bee3105dca81d0ef4a97f900929c407249b6ac7 linux-6.12.20.tar.xz From 83f48f0f6773323bd551981ccd476b7a4967522e Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 27 Mar 2025 09:53:22 +0100 Subject: [PATCH 177/247] add BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS package to add missing gsettings-desktop schemas for newer applications (google-chrome) to be able to use these schemas (e.g. not crash). --- buildroot-external/Buildroot.config | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index cca284f..2463d46 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -57,6 +57,7 @@ BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y BR2_PACKAGE_MESA3D_OPENGL_GLX=y BR2_PACKAGE_MESA3D_OPENGL_EGL=y BR2_PACKAGE_MESA3D_OPENGL_ES=y +BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS=y BR2_PACKAGE_PSPLASH=y BR2_PACKAGE_PSPLASH_IMAGE="$(BR2_EXTERNAL_THINROOT_PATH)/patches/psplash/logo-hzdr.png" BR2_PACKAGE_XORG7=y From ac33404bbcba0d4c9aa9730341e4f76e79599486 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Jun 2025 21:07:42 +0200 Subject: [PATCH 178/247] Bump metcalfc/changelog-generator from 4.5.0 to 4.6.2 (#33) Bumps [metcalfc/changelog-generator](https://github.com/metcalfc/changelog-generator) from 4.5.0 to 4.6.2. - [Release notes](https://github.com/metcalfc/changelog-generator/releases) - [Changelog](https://github.com/metcalfc/changelog-generator/blob/main/release-notes.png) - [Commits](https://github.com/metcalfc/changelog-generator/compare/v4.5.0...v4.6.2) --- updated-dependencies: - dependency-name: metcalfc/changelog-generator dependency-version: 4.6.2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f284de4..0ebf2c8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -60,7 +60,7 @@ jobs: - name: Generate changelog id: changelog - uses: metcalfc/changelog-generator@v4.5.0 + uses: metcalfc/changelog-generator@v4.6.2 with: myToken: ${{ secrets.GITHUB_TOKEN }} From 67adaf31c4cc379ae395b2b75c83d54afc8ab214 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 Aug 2025 17:37:20 +0200 Subject: [PATCH 179/247] Bump ncipollo/release-action from 1.16.0 to 1.18.0 (#34) Bumps [ncipollo/release-action](https://github.com/ncipollo/release-action) from 1.16.0 to 1.18.0. - [Release notes](https://github.com/ncipollo/release-action/releases) - [Commits](https://github.com/ncipollo/release-action/compare/v1.16.0...v1.18.0) --- updated-dependencies: - dependency-name: ncipollo/release-action dependency-version: 1.18.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0ebf2c8..7826ecc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -78,7 +78,7 @@ jobs: - name: Create release draft id: release_drafter - uses: ncipollo/release-action@v1.16.0 + uses: ncipollo/release-action@v1.18.0 with: tag: ${{ steps.env.outputs.tag }} name: 'thinRoot ${{ steps.env.outputs.version }}' @@ -247,7 +247,7 @@ jobs: done - name: Update release draft - uses: ncipollo/release-action@v1.16.0 + uses: ncipollo/release-action@v1.18.0 with: tag: ${{ needs.release_draft.outputs.tag }} bodyFile: release-template.md/release-template.md From dcb42d97df30811ad121d7a55f3bfa9b9c30c924 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 8 Aug 2025 17:39:33 +0200 Subject: [PATCH 180/247] comment out unused functions. --- .../rootfs-overlay/etc/X11/Xsession | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/buildroot-external/rootfs-overlay/etc/X11/Xsession b/buildroot-external/rootfs-overlay/etc/X11/Xsession index 3146ba5..2e551e3 100755 --- a/buildroot-external/rootfs-overlay/etc/X11/Xsession +++ b/buildroot-external/rootfs-overlay/etc/X11/Xsession @@ -21,15 +21,15 @@ message () { fi } -message_nonl () { - # pretty-print messages of arbitrary length (no trailing newline); use - # xmessage if it is available and $DISPLAY is set - MESSAGE="$PROGNAME: $*" - echo -n "$MESSAGE" | fold -s -w "${COLUMNS:-80}" >&2; - if [ -n "$DISPLAY" ] && command -v xmessage > /dev/null 2>&1; then - echo -n "$MESSAGE" | fold -s -w "${COLUMNS:-80}" | xmessage -center -file - - fi -} +#message_nonl () { +# # pretty-print messages of arbitrary length (no trailing newline); use +# # xmessage if it is available and $DISPLAY is set +# MESSAGE="$PROGNAME: $*" +# echo -n "$MESSAGE" | fold -s -w "${COLUMNS:-80}" >&2; +# if [ -n "$DISPLAY" ] && command -v xmessage > /dev/null 2>&1; then +# echo -n "$MESSAGE" | fold -s -w "${COLUMNS:-80}" | xmessage -center -file - +# fi +#} errormsg () { # exit script with error @@ -37,16 +37,16 @@ errormsg () { exit 1 } -internal_errormsg () { - # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message - # One big call to message() for the sake of xmessage; if we had two then - # the user would have dismissed the error we want reported before seeing the - # request to report it. - errormsg "$*" \ - "Please report the installed version of the \"x11-common\"" \ - "package and the complete text of this error message to" \ - "." -} +#internal_errormsg () { +# # exit script with error; essentially a "THIS SHOULD NEVER HAPPEN" message +# # One big call to message() for the sake of xmessage; if we had two then +# # the user would have dismissed the error we want reported before seeing the +# # request to report it. +# errormsg "$*" \ +# "Please report the installed version of the \"x11-common\"" \ +# "package and the complete text of this error message to" \ +# "." +#} # initialize variables for use by all session scripts From 15b16f04a658bbf29d45b34dfbef8679deec2db5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 8 Aug 2025 17:41:37 +0200 Subject: [PATCH 181/247] Bump actions/download-artifact from 4 to 5 (#35) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4 to 5. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7826ecc..1aa6c30 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -233,7 +233,7 @@ jobs: # download all artifact files - name: Download all workflow artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v5 - name: Patch release draft shell: bash From 2aa99fe3dfbeb156b05ae780b86fcba7216d1469 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 8 Aug 2025 17:43:08 +0200 Subject: [PATCH 182/247] update ThinLinc client to latest 4.19.0-4005 --- buildroot-external/package/thinlinc/thinlinc.hash | 4 ++-- buildroot-external/package/thinlinc/thinlinc.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/buildroot-external/package/thinlinc/thinlinc.hash b/buildroot-external/package/thinlinc/thinlinc.hash index bfdf202..e9a6eda 100644 --- a/buildroot-external/package/thinlinc/thinlinc.hash +++ b/buildroot-external/package/thinlinc/thinlinc.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 7d37b31a19f45044844113eb1d855935ca65578f306f95ffc6aa6521f2d12c00 tl-4.18.0-3768-client-linux-dynamic-x86_64.tar.gz -sha256 cd35be934574a197cc01399e7c3a2a9e5451e42215b0aab7ea9f29771927a643 tl-4.18.0-3768-client-linux-dynamic-armhf.tar.gz +sha256 b21961bb49be4cf830de7751ef441d27a67403225d23fc661c9bfe65b155a241 tl-4.19.0-4005-client-linux-dynamic-x86_64.tar.gz +sha256 263968914a61b87a0b7454d82659f14c59396a870d124c1c5cd304e1ca27a3f7 tl-4.19.0-4005-client-linux-dynamic-armhf.tar.gz diff --git a/buildroot-external/package/thinlinc/thinlinc.mk b/buildroot-external/package/thinlinc/thinlinc.mk index 9bc180c..3d86854 100644 --- a/buildroot-external/package/thinlinc/thinlinc.mk +++ b/buildroot-external/package/thinlinc/thinlinc.mk @@ -6,7 +6,7 @@ # ################################################################################ -THINLINC_VERSION = 4.18.0-3768 +THINLINC_VERSION = 4.19.0-4005 THINLINC_SITE = https://www.cendio.com/downloads/clients ifeq ($(call qstrip,$(BR2_ARCH)),x86_64) From 42317a74c4610b4b693d47967ef225b307cf96d6 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 8 Aug 2025 17:46:01 +0200 Subject: [PATCH 183/247] update upstream kernel to 6.12.41 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index bc2c19c..6f89e24 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.20" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.41" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index d08cf88..2018569 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -9,7 +9,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.20" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.41" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index 14cb271..f55282c 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 230e89b07b0ab82e74f07ecc1bee3105dca81d0ef4a97f900929c407249b6ac7 linux-6.12.20.tar.xz +sha256 6b19a3ae99423de2416964d67251d745910277af258b4c4c63e88fd87dbf0e27 linux-6.12.41.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index 14cb271..f55282c 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 230e89b07b0ab82e74f07ecc1bee3105dca81d0ef4a97f900929c407249b6ac7 linux-6.12.20.tar.xz +sha256 6b19a3ae99423de2416964d67251d745910277af258b4c4c63e88fd87dbf0e27 linux-6.12.41.tar.xz From dec514c2eb5211c4833729996e39d8055d132368 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 8 Aug 2025 18:07:03 +0200 Subject: [PATCH 184/247] bump buildroot to 2025.05 and adapted upstream buildroot patches accordingly. --- Makefile | 4 ++-- buildroot-patches/0008-rpi-firmware.patch | 6 +++--- .../buildroot/package/rpi-firmware/rpi-firmware.mk | 1 + .../buildroot/package/rpi-firmware/rpi-firmware.mk.orig | 3 ++- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index ab68110..e91fe78 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -BUILDROOT_VERSION=2025.02 -BUILDROOT_SHA256=16bb97f1e7f93492c57fe895276880ea32e555a4fcefb385ddc27f4a08e250ec +BUILDROOT_VERSION=2025.05 +BUILDROOT_SHA256=4a01cc53302c6f7c833d85fe44aac57f8d3b7f422b723a7542757241050756d4 BUILDROOT_EXTERNAL=buildroot-external DEFCONFIG_DIR=$(BUILDROOT_EXTERNAL)/configs DATE=$(shell date +%Y%m%d) diff --git a/buildroot-patches/0008-rpi-firmware.patch b/buildroot-patches/0008-rpi-firmware.patch index 3d17b48..dbd0499 100644 --- a/buildroot-patches/0008-rpi-firmware.patch +++ b/buildroot-patches/0008-rpi-firmware.patch @@ -13,11 +13,11 @@ help --- buildroot/package/rpi-firmware/rpi-firmware.mk.orig +++ buildroot/package/rpi-firmware/rpi-firmware.mk -@@ -4,7 +4,7 @@ - # +@@ -5,7 +5,7 @@ ################################################################################ --RPI_FIRMWARE_VERSION = 5476720d52cf579dc1627715262b30ba1242525e + # Please keep in sync with configs/raspberrypi*_deconfig +-RPI_FIRMWARE_VERSION = 1.20250326 +RPI_FIRMWARE_VERSION = $(call qstrip,$(BR2_PACKAGE_RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3-Clause diff --git a/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk b/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk index efaeb44..521cf3d 100644 --- a/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk +++ b/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk @@ -4,6 +4,7 @@ # ################################################################################ +# Please keep in sync with configs/raspberrypi*_deconfig RPI_FIRMWARE_VERSION = $(call qstrip,$(BR2_PACKAGE_RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3-Clause diff --git a/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig b/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig index 7ae9ff6..2577d16 100644 --- a/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig +++ b/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig @@ -4,7 +4,8 @@ # ################################################################################ -RPI_FIRMWARE_VERSION = 5476720d52cf579dc1627715262b30ba1242525e +# Please keep in sync with configs/raspberrypi*_deconfig +RPI_FIRMWARE_VERSION = 1.20250326 RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3-Clause RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom From 51ec15eac4fcc637b68d3f167ae37f364dc332da Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sat, 9 Aug 2025 12:41:15 +0200 Subject: [PATCH 185/247] remove 0022-webkitgtk-fixes buildroot upstream patch because in newer webkitgtk the previous issues seem to be corrected already. --- buildroot-patches/0022-webkitgtk-fixes.patch | 19 ------------------- .../0000-mediasourceprivategstreamer.patch | 16 ---------------- ...000-mediasourceprivategstreamer.patch.orig | 0 3 files changed, 35 deletions(-) delete mode 100644 buildroot-patches/0022-webkitgtk-fixes.patch delete mode 100644 buildroot-patches/0022-webkitgtk-fixes/buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch delete mode 100644 buildroot-patches/0022-webkitgtk-fixes/buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch.orig diff --git a/buildroot-patches/0022-webkitgtk-fixes.patch b/buildroot-patches/0022-webkitgtk-fixes.patch deleted file mode 100644 index 20b7291..0000000 --- a/buildroot-patches/0022-webkitgtk-fixes.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch.orig -+++ buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch -@@ -0,0 +1,16 @@ -+--- a/Source/WebCore/platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.h 2024-11-26 10:32:28.891127800 +0100 -++++ b/Source/WebCore/platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.h 2025-03-22 23:38:07.716515423 +0100 -+@@ -94,12 +94,12 @@ -+ Ref m_logger; -+ const void* m_logIdentifier; -+ uint64_t m_nextSourceBufferID { 0 }; -++#endif -+ -+ // Stores known track IDs, so we can work around ID collisions between multiple source buffers. -+ // The registry is placed here to enforce ID uniqueness specifically by player, not by process, -+ // since its not an issue if multiple players use the same ID, and we want to preserve IDs as much as possible. -+ HashSet, WTF::UnsignedWithZeroKeyHashTraits> m_trackIdRegistry; -+-#endif -+ }; -+ -+ } // namespace WebCore diff --git a/buildroot-patches/0022-webkitgtk-fixes/buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch b/buildroot-patches/0022-webkitgtk-fixes/buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch deleted file mode 100644 index 5efa462..0000000 --- a/buildroot-patches/0022-webkitgtk-fixes/buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch +++ /dev/null @@ -1,16 +0,0 @@ ---- a/Source/WebCore/platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.h 2024-11-26 10:32:28.891127800 +0100 -+++ b/Source/WebCore/platform/graphics/gstreamer/mse/MediaSourcePrivateGStreamer.h 2025-03-22 23:38:07.716515423 +0100 -@@ -94,12 +94,12 @@ - Ref m_logger; - const void* m_logIdentifier; - uint64_t m_nextSourceBufferID { 0 }; -+#endif - - // Stores known track IDs, so we can work around ID collisions between multiple source buffers. - // The registry is placed here to enforce ID uniqueness specifically by player, not by process, - // since its not an issue if multiple players use the same ID, and we want to preserve IDs as much as possible. - HashSet, WTF::UnsignedWithZeroKeyHashTraits> m_trackIdRegistry; --#endif - }; - - } // namespace WebCore diff --git a/buildroot-patches/0022-webkitgtk-fixes/buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch.orig b/buildroot-patches/0022-webkitgtk-fixes/buildroot/package/webkitgtk/0000-mediasourceprivategstreamer.patch.orig deleted file mode 100644 index e69de29..0000000 From 70c31cdc4127c093ca04f694ec6cf333cd005168 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 13 Aug 2025 09:16:18 +0200 Subject: [PATCH 186/247] fix install targets for our own meson build packages. --- buildroot-external/package/virt-viewer/virt-viewer.mk | 2 +- buildroot-external/package/xprintidle/xprintidle.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/package/virt-viewer/virt-viewer.mk b/buildroot-external/package/virt-viewer/virt-viewer.mk index c5477a9..8beeb4c 100644 --- a/buildroot-external/package/virt-viewer/virt-viewer.mk +++ b/buildroot-external/package/virt-viewer/virt-viewer.mk @@ -17,7 +17,7 @@ VIRT_VIEWER_LICENSE_FILES = COPYING VIRT_VIEWER_DEPENDENCIES = libgtk3 spice-gtk define VIRT_VIEWER_INSTALL_TARGET_CMDS - $(INSTALL) -D -m 0755 $(@D)/build/src/remote-viewer $(TARGET_DIR)/bin/ + $(INSTALL) -D -m 0755 $(@D)/buildroot-build/src/remote-viewer $(TARGET_DIR)/bin/ endef $(eval $(meson-package)) diff --git a/buildroot-external/package/xprintidle/xprintidle.mk b/buildroot-external/package/xprintidle/xprintidle.mk index fc38630..2f52337 100644 --- a/buildroot-external/package/xprintidle/xprintidle.mk +++ b/buildroot-external/package/xprintidle/xprintidle.mk @@ -13,7 +13,7 @@ XPRINTIDLE_LICENSE = GPL-2.0 XPRINTIDLE_LICENSE_FILES = COPYING define XPRINTIDLE_INSTALL_TARGET_CMDS - $(INSTALL) -D -m 0755 $(@D)/build/xprintidle $(TARGET_DIR)/bin/ + $(INSTALL) -D -m 0755 $(@D)/buildroot-build/xprintidle $(TARGET_DIR)/bin/ endef $(eval $(meson-package)) From 5d3018894eb4b9b47589ea0cb91a8c9c3e9bddc1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 13 Aug 2025 09:17:56 +0200 Subject: [PATCH 187/247] Bump actions/checkout from 4 to 5 (#36) Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 6 +++--- .github/workflows/snapshot.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1e12e86..bc4d8a2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,7 +36,7 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Check shell scripts uses: ludeeus/action-shellcheck@2.0.0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1aa6c30..cd19814 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -33,7 +33,7 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 @@ -112,7 +112,7 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Install Dependencies run: | @@ -229,7 +229,7 @@ jobs: needs: [release_draft, build] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 # download all artifact files - name: Download all workflow artifacts diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index 659f4dc..b9e5941 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -22,7 +22,7 @@ jobs: name: Check for Changes runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - id: commit-check run: echo "has-commits=$(git --no-pager log --pretty='format:%an' --since='24 hours ago' | grep -v github-actions | wc -l)" >> $GITHUB_OUTPUT outputs: @@ -47,7 +47,7 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Install Dependencies run: | From 623629d2665a7262477eeb80ebff9fc5949112a7 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 13 Aug 2025 09:21:46 +0200 Subject: [PATCH 188/247] update buildroot to latest 2025.05.1 --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e91fe78..0f83060 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -BUILDROOT_VERSION=2025.05 -BUILDROOT_SHA256=4a01cc53302c6f7c833d85fe44aac57f8d3b7f422b723a7542757241050756d4 +BUILDROOT_VERSION=2025.05.1 +BUILDROOT_SHA256=639719adff2ea41206a97c392eb02fe4bf096c83587f24ce29679730fe1a1052 BUILDROOT_EXTERNAL=buildroot-external DEFCONFIG_DIR=$(BUILDROOT_EXTERNAL)/configs DATE=$(shell date +%Y%m%d) From d1dbf8c4a5089975336d06d76afd78b32eda10a6 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 13 Aug 2025 20:32:51 +0200 Subject: [PATCH 189/247] add new buildroot upstream patch to downgrade python-glslang to 11.13.0 for a clean compile. --- .../0022-python-glslang-downgrade.patch | 18 ++++++++++++++++++ .../package/python-glslang/python-glslang.hash | 3 +++ .../python-glslang/python-glslang.hash.orig | 3 +++ .../package/python-glslang/python-glslang.mk | 17 +++++++++++++++++ .../python-glslang/python-glslang.mk.orig | 17 +++++++++++++++++ 5 files changed, 58 insertions(+) create mode 100644 buildroot-patches/0022-python-glslang-downgrade.patch create mode 100644 buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash create mode 100644 buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash.orig create mode 100644 buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk create mode 100644 buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk.orig diff --git a/buildroot-patches/0022-python-glslang-downgrade.patch b/buildroot-patches/0022-python-glslang-downgrade.patch new file mode 100644 index 0000000..5bc7647 --- /dev/null +++ b/buildroot-patches/0022-python-glslang-downgrade.patch @@ -0,0 +1,18 @@ +--- buildroot/package/python-glslang/python-glslang.hash.orig ++++ buildroot/package/python-glslang/python-glslang.hash +@@ -1,3 +1,3 @@ + # Locally calculated +-sha256 c6c21fe1873c37e639a6a9ac72d857ab63a5be6893a589f34e09a6c757174201 python-glslang-15.3.0.tar.gz ++sha256 592c98aeb03b3e81597ddaf83633c4e63068d14b18a766fd11033bad73127162 python-glslang-11.13.0.tar.gz + sha256 adb783e734e906d1f46db5df29991dbde84bdb0ceab502ac2febb44fe3c2b5f4 LICENSE.txt +--- buildroot/package/python-glslang/python-glslang.mk.orig ++++ buildroot/package/python-glslang/python-glslang.mk +@@ -4,7 +4,7 @@ + # + ################################################################################ + +-PYTHON_GLSLANG_VERSION = 15.3.0 ++PYTHON_GLSLANG_VERSION = 11.13.0 + PYTHON_GLSLANG_SITE = $(call github,KhronosGroup,glslang,$(PYTHON_GLSLANG_VERSION)) + PYTHON_GLSLANG_LICENSE = BSD-3-Clause + PYTHON_GLSLANG_LICENSE_FILES = LICENSE.txt diff --git a/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash b/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash new file mode 100644 index 0000000..df91279 --- /dev/null +++ b/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 592c98aeb03b3e81597ddaf83633c4e63068d14b18a766fd11033bad73127162 python-glslang-11.13.0.tar.gz +sha256 adb783e734e906d1f46db5df29991dbde84bdb0ceab502ac2febb44fe3c2b5f4 LICENSE.txt diff --git a/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash.orig b/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash.orig new file mode 100644 index 0000000..04ec531 --- /dev/null +++ b/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash.orig @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c6c21fe1873c37e639a6a9ac72d857ab63a5be6893a589f34e09a6c757174201 python-glslang-15.3.0.tar.gz +sha256 adb783e734e906d1f46db5df29991dbde84bdb0ceab502ac2febb44fe3c2b5f4 LICENSE.txt diff --git a/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk b/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk new file mode 100644 index 0000000..df475b3 --- /dev/null +++ b/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk @@ -0,0 +1,17 @@ +################################################################################ +# +# python-glslang +# +################################################################################ + +PYTHON_GLSLANG_VERSION = 11.13.0 +PYTHON_GLSLANG_SITE = $(call github,KhronosGroup,glslang,$(PYTHON_GLSLANG_VERSION)) +PYTHON_GLSLANG_LICENSE = BSD-3-Clause +PYTHON_GLSLANG_LICENSE_FILES = LICENSE.txt +HOST_PYTHON_GLSLANG_DEPENDENCIES = host-python3 host-spirv-tools + +HOST_PYTHON_GLSLANG_CONF_OPTS += \ + -DALLOW_EXTERNAL_SPIRV_TOOLS=ON \ + -DGLSLANG_TESTS=OFF + +$(eval $(host-cmake-package)) diff --git a/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk.orig b/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk.orig new file mode 100644 index 0000000..cda95eb --- /dev/null +++ b/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk.orig @@ -0,0 +1,17 @@ +################################################################################ +# +# python-glslang +# +################################################################################ + +PYTHON_GLSLANG_VERSION = 15.3.0 +PYTHON_GLSLANG_SITE = $(call github,KhronosGroup,glslang,$(PYTHON_GLSLANG_VERSION)) +PYTHON_GLSLANG_LICENSE = BSD-3-Clause +PYTHON_GLSLANG_LICENSE_FILES = LICENSE.txt +HOST_PYTHON_GLSLANG_DEPENDENCIES = host-python3 host-spirv-tools + +HOST_PYTHON_GLSLANG_CONF_OPTS += \ + -DALLOW_EXTERNAL_SPIRV_TOOLS=ON \ + -DGLSLANG_TESTS=OFF + +$(eval $(host-cmake-package)) From 24042a426aafd4fc29543f984519423c73a2630c Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 4 Sep 2025 12:34:32 +0200 Subject: [PATCH 190/247] add hotkeyd patch to support main while loop restart in case a keyboard is removed/replugged. Also fixes segfaults in case the dev dirs won't exist and default_device() might crash accordingly. --- .../hotkeyd/0001-support-restart.patch | 123 ++++++++++++++++++ .../etc/init.d => package/hotkeyd}/S60hotkeyd | 0 buildroot-external/package/hotkeyd/hotkeyd.mk | 8 +- 3 files changed, 130 insertions(+), 1 deletion(-) create mode 100644 buildroot-external/package/hotkeyd/0001-support-restart.patch rename buildroot-external/{rootfs-overlay/etc/init.d => package/hotkeyd}/S60hotkeyd (100%) mode change 100755 => 100644 diff --git a/buildroot-external/package/hotkeyd/0001-support-restart.patch b/buildroot-external/package/hotkeyd/0001-support-restart.patch new file mode 100644 index 0000000..89fbfb2 --- /dev/null +++ b/buildroot-external/package/hotkeyd/0001-support-restart.patch @@ -0,0 +1,123 @@ +src/hotkeyd.c: support restart after while end +src/input_dev.h: fix segfault if directories do not exist + +Upstream: Not applicable + +Signed-off-by: Jens Maus + +--- a/src/hotkeyd.c ++++ b/src/hotkeyd.c +@@ -276,14 +276,14 @@ int main(int argc, char *argv[]) + signal(SIGTERM, on_close); + signal(SIGCHLD, SIG_IGN); + +- if(!input) { ++ while(!input) { + input = default_device(); +- + if(!input) { + log_err("Failed to determine default device!\n"); +- return -1; ++ sleep(3); + } else { + free_input = 1; ++ break; + } + } + +@@ -301,12 +301,16 @@ int main(int argc, char *argv[]) + + if(free_input) { + free(input); ++ input = NULL; ++ free_input = 0; + } + + if(test_flag) { + log_msg("Press ctrl+c to close:\n"); + } + ++ loop: ++ + while(read(input_stream, &ev, sizeof(struct input_event)) > 0) + { + if(ev.type != EV_KEY) continue; +@@ -357,7 +361,42 @@ int main(int argc, char *argv[]) + + } + +- on_close(0); ++ // restart ++ if(input_stream) { ++ close(input_stream); ++ } ++ ++ while(!input) { ++ input = default_device(); ++ if(!input) { ++ log_err("Failed to determine default device!\n"); ++ sleep(3); ++ } else { ++ free_input = 1; ++ break; ++ } ++ } ++ ++ input_stream = open(input, O_RDONLY); ++ ++ if(input_stream == -1) { ++ log_err("Failed to open %s\n", input); ++ if(free_input) { ++ free(input); ++ } ++ return 1; ++ } else { ++ log_msg("Successfully opened %s\n", input); ++ } ++ ++ if(free_input) { ++ free(input); ++ input = NULL; ++ free_input = 0; ++ } ++ ++ // go to while loop start again ++ goto loop; + + return 0; + } +diff --git a/src/input_dev.h b/src/input_dev.h +index 50ca29a..0181b6e 100644 +--- a/src/input_dev.h ++++ b/src/input_dev.h +@@ -28,6 +28,7 @@ char *default_device() + char *tret = NULL; + + d = opendir("/dev/input/by-id"); ++ if(d) { + while( (ent = readdir(d)) ) + { + if(is_keyboard(ent->d_name)) { +@@ -43,12 +44,14 @@ char *default_device() + } + } + closedir(d); ++ } + + if(tret) { + return tret; + } + + d = opendir("/dev/input/by-path"); ++ if(d) { + while( (ent = readdir(d)) ) + { + if(is_keyboard(ent->d_name)) { +@@ -64,6 +67,7 @@ char *default_device() + } + } + closedir(d); ++ } + + if(tret) { + return tret; diff --git a/buildroot-external/rootfs-overlay/etc/init.d/S60hotkeyd b/buildroot-external/package/hotkeyd/S60hotkeyd old mode 100755 new mode 100644 similarity index 100% rename from buildroot-external/rootfs-overlay/etc/init.d/S60hotkeyd rename to buildroot-external/package/hotkeyd/S60hotkeyd diff --git a/buildroot-external/package/hotkeyd/hotkeyd.mk b/buildroot-external/package/hotkeyd/hotkeyd.mk index 770895f..da85cdf 100644 --- a/buildroot-external/package/hotkeyd/hotkeyd.mk +++ b/buildroot-external/package/hotkeyd/hotkeyd.mk @@ -6,7 +6,7 @@ # ################################################################################ -HOTKEYD_VERSION = 0.4.5 +HOTKEYD_VERSION = 0.4.6 HOTKEYD_TAG = e94e4ab50346e01ff1dcbf0f9d95bfe94a348b01 HOTKEYD_SITE = $(call github,jens-maus,hotkeyd,$(HOTKEYD_TAG)) HOTKEYD_LICENSE = GPL-3.0 @@ -20,4 +20,10 @@ define HOTKEYD_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0755 $(@D)/hotkeyd $(TARGET_DIR)/bin/ endef +define HOTKEYD_INSTALL_INIT_SYSV + $(INSTALL) -D -m 0755 $(HOTKEYD_PKGDIR)/S60hotkeyd \ + $(TARGET_DIR)/etc/init.d/S60hotkeyd +endef + + $(eval $(generic-package)) From a229b11b9eb72b2ec007604ac72f8dc931e4fed2 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 4 Sep 2025 12:43:50 +0200 Subject: [PATCH 191/247] linter fixes --- buildroot-external/package/hotkeyd/S60hotkeyd | 44 ++++++++++--------- buildroot-external/package/hotkeyd/hotkeyd.mk | 1 - 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/buildroot-external/package/hotkeyd/S60hotkeyd b/buildroot-external/package/hotkeyd/S60hotkeyd index 66f4dca..35f4098 100644 --- a/buildroot-external/package/hotkeyd/S60hotkeyd +++ b/buildroot-external/package/hotkeyd/S60hotkeyd @@ -4,37 +4,39 @@ # start/stop hotkey daemon # +DAEMON="hotkeyd" + start() { - echo -n "Starting hotkeyd: " - start-stop-daemon -S -q -b -m -p /var/run/hotkeyd.pid --exec /bin/hotkeyd -- -q - echo "OK" + echo -n "Starting ${DAEMON}: " + start-stop-daemon -S -q -b -m -p /var/run/hotkeyd.pid --exec /bin/hotkeyd -- -q + echo "OK" } stop () { - echo -n "Stopping hotkeyd: " - start-stop-daemon -K -q -p /var/run/hotkeyd.pid - echo "OK" + echo -n "Stopping ${DAEMON}: " + start-stop-daemon -K -q -p /var/run/hotkeyd.pid + echo "OK" } restart() { - stop - sleep 1 - start + stop + sleep 1 + start } case "$1" in - start) - start - ;; - stop) - stop - ;; - restart|reload) - restart - ;; - *) - echo "Usage: $0 {start|stop|restart}" - exit 1 + start) + start + ;; + stop) + stop + ;; + restart|reload) + restart + ;; + *) + echo "Usage: $0 {start|stop|restart}" + exit 1 esac exit $? diff --git a/buildroot-external/package/hotkeyd/hotkeyd.mk b/buildroot-external/package/hotkeyd/hotkeyd.mk index da85cdf..222073e 100644 --- a/buildroot-external/package/hotkeyd/hotkeyd.mk +++ b/buildroot-external/package/hotkeyd/hotkeyd.mk @@ -25,5 +25,4 @@ define HOTKEYD_INSTALL_INIT_SYSV $(TARGET_DIR)/etc/init.d/S60hotkeyd endef - $(eval $(generic-package)) From 3c9a165070665e1789295c651407eb1d10b2eb48 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 4 Sep 2025 16:20:02 +0200 Subject: [PATCH 192/247] remove hotkeyd patch again as it has been integrated upstream --- .../hotkeyd/0001-support-restart.patch | 123 ------------------ buildroot-external/package/hotkeyd/hotkeyd.mk | 4 +- 2 files changed, 2 insertions(+), 125 deletions(-) delete mode 100644 buildroot-external/package/hotkeyd/0001-support-restart.patch diff --git a/buildroot-external/package/hotkeyd/0001-support-restart.patch b/buildroot-external/package/hotkeyd/0001-support-restart.patch deleted file mode 100644 index 89fbfb2..0000000 --- a/buildroot-external/package/hotkeyd/0001-support-restart.patch +++ /dev/null @@ -1,123 +0,0 @@ -src/hotkeyd.c: support restart after while end -src/input_dev.h: fix segfault if directories do not exist - -Upstream: Not applicable - -Signed-off-by: Jens Maus - ---- a/src/hotkeyd.c -+++ b/src/hotkeyd.c -@@ -276,14 +276,14 @@ int main(int argc, char *argv[]) - signal(SIGTERM, on_close); - signal(SIGCHLD, SIG_IGN); - -- if(!input) { -+ while(!input) { - input = default_device(); -- - if(!input) { - log_err("Failed to determine default device!\n"); -- return -1; -+ sleep(3); - } else { - free_input = 1; -+ break; - } - } - -@@ -301,12 +301,16 @@ int main(int argc, char *argv[]) - - if(free_input) { - free(input); -+ input = NULL; -+ free_input = 0; - } - - if(test_flag) { - log_msg("Press ctrl+c to close:\n"); - } - -+ loop: -+ - while(read(input_stream, &ev, sizeof(struct input_event)) > 0) - { - if(ev.type != EV_KEY) continue; -@@ -357,7 +361,42 @@ int main(int argc, char *argv[]) - - } - -- on_close(0); -+ // restart -+ if(input_stream) { -+ close(input_stream); -+ } -+ -+ while(!input) { -+ input = default_device(); -+ if(!input) { -+ log_err("Failed to determine default device!\n"); -+ sleep(3); -+ } else { -+ free_input = 1; -+ break; -+ } -+ } -+ -+ input_stream = open(input, O_RDONLY); -+ -+ if(input_stream == -1) { -+ log_err("Failed to open %s\n", input); -+ if(free_input) { -+ free(input); -+ } -+ return 1; -+ } else { -+ log_msg("Successfully opened %s\n", input); -+ } -+ -+ if(free_input) { -+ free(input); -+ input = NULL; -+ free_input = 0; -+ } -+ -+ // go to while loop start again -+ goto loop; - - return 0; - } -diff --git a/src/input_dev.h b/src/input_dev.h -index 50ca29a..0181b6e 100644 ---- a/src/input_dev.h -+++ b/src/input_dev.h -@@ -28,6 +28,7 @@ char *default_device() - char *tret = NULL; - - d = opendir("/dev/input/by-id"); -+ if(d) { - while( (ent = readdir(d)) ) - { - if(is_keyboard(ent->d_name)) { -@@ -43,12 +44,14 @@ char *default_device() - } - } - closedir(d); -+ } - - if(tret) { - return tret; - } - - d = opendir("/dev/input/by-path"); -+ if(d) { - while( (ent = readdir(d)) ) - { - if(is_keyboard(ent->d_name)) { -@@ -64,6 +67,7 @@ char *default_device() - } - } - closedir(d); -+ } - - if(tret) { - return tret; diff --git a/buildroot-external/package/hotkeyd/hotkeyd.mk b/buildroot-external/package/hotkeyd/hotkeyd.mk index 222073e..ff5f1e9 100644 --- a/buildroot-external/package/hotkeyd/hotkeyd.mk +++ b/buildroot-external/package/hotkeyd/hotkeyd.mk @@ -2,12 +2,12 @@ # # hotkeyd # -# https://github.com/vflyson/hotkeyd +# https://github.com/jens-maus/hotkeyd # ################################################################################ HOTKEYD_VERSION = 0.4.6 -HOTKEYD_TAG = e94e4ab50346e01ff1dcbf0f9d95bfe94a348b01 +HOTKEYD_TAG = b35ba8173d9a95f0e8cc3be2d168124fc641fee6 HOTKEYD_SITE = $(call github,jens-maus,hotkeyd,$(HOTKEYD_TAG)) HOTKEYD_LICENSE = GPL-3.0 HOTKEYD_LICENSE_FILES = LICENSE From 3bb57cd355f78b7f91f32833199bfbe7faa3d93e Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 4 Sep 2025 18:41:12 +0200 Subject: [PATCH 193/247] bump upstream kernel to 6.12.45 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 6f89e24..c4579b2 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.41" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.45" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 2018569..883060e 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -9,7 +9,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.41" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.45" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index f55282c..6c2b918 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 6b19a3ae99423de2416964d67251d745910277af258b4c4c63e88fd87dbf0e27 linux-6.12.41.tar.xz +sha256 8f95a8549cfbdfb89c1181a1f55a971f04dfcd629508a2ed70b777ab92f9db3e linux-6.12.45.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index f55282c..6c2b918 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 6b19a3ae99423de2416964d67251d745910277af258b4c4c63e88fd87dbf0e27 linux-6.12.41.tar.xz +sha256 8f95a8549cfbdfb89c1181a1f55a971f04dfcd629508a2ed70b777ab92f9db3e linux-6.12.45.tar.xz From f6a6613983e31f085c3c0234be3436e1728f7693 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 4 Sep 2025 18:43:33 +0200 Subject: [PATCH 194/247] add kernel regression fix patch for local broadcast routes --- ...regression-in-local-broadcast-routes.patch | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 buildroot-external/patches/linux/0002-net-ipv4-fix-regression-in-local-broadcast-routes.patch diff --git a/buildroot-external/patches/linux/0002-net-ipv4-fix-regression-in-local-broadcast-routes.patch b/buildroot-external/patches/linux/0002-net-ipv4-fix-regression-in-local-broadcast-routes.patch new file mode 100644 index 0000000..f1c9bf6 --- /dev/null +++ b/buildroot-external/patches/linux/0002-net-ipv4-fix-regression-in-local-broadcast-routes.patch @@ -0,0 +1,51 @@ +From f356e2a2604bfc26be8bc51bf83f6a023f06316f Mon Sep 17 00:00:00 2001 +From: Oscar Maes +Date: Wed, 27 Aug 2025 08:23:21 +0200 +Subject: [PATCH] net: ipv4: fix regression in local-broadcast routes + +[ Upstream commit 5189446ba995556eaa3755a6e875bc06675b88bd ] + +Commit 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes") +introduced a regression where local-broadcast packets would have their +gateway set in __mkroute_output, which was caused by fi = NULL being +removed. + +Fix this by resetting the fib_info for local-broadcast packets. This +preserves the intended changes for directed-broadcast packets. + +Cc: stable@vger.kernel.org +Fixes: 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes") +Reported-by: Brett A C Sheffield +Closes: https://lore.kernel.org/regressions/20250822165231.4353-4-bacs@librecast.net +Signed-off-by: Oscar Maes +Reviewed-by: David Ahern +Link: https://patch.msgid.link/20250827062322.4807-1-oscmaes92@gmail.com +Signed-off-by: Paolo Abeni +--- + net/ipv4/route.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) + +diff --git a/net/ipv4/route.c b/net/ipv4/route.c +index 9a5c9497b3931..261ddb6542a40 100644 +--- a/net/ipv4/route.c ++++ b/net/ipv4/route.c +@@ -2532,12 +2532,16 @@ static struct rtable *__mkroute_output(const struct fib_result *res, + !netif_is_l3_master(dev_out)) + return ERR_PTR(-EINVAL); + +- if (ipv4_is_lbcast(fl4->daddr)) ++ if (ipv4_is_lbcast(fl4->daddr)) { + type = RTN_BROADCAST; +- else if (ipv4_is_multicast(fl4->daddr)) ++ ++ /* reset fi to prevent gateway resolution */ ++ fi = NULL; ++ } else if (ipv4_is_multicast(fl4->daddr)) { + type = RTN_MULTICAST; +- else if (ipv4_is_zeronet(fl4->daddr)) ++ } else if (ipv4_is_zeronet(fl4->daddr)) { + return ERR_PTR(-EINVAL); ++ } + + if (dev_out->flags & IFF_LOOPBACK) + flags |= RTCF_LOCAL; From 571b9919fc4b6242df8ed105e0a81f704871c73c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 4 Sep 2025 22:55:38 +0200 Subject: [PATCH 195/247] Bump ncipollo/release-action from 1.18.0 to 1.20.0 (#38) Bumps [ncipollo/release-action](https://github.com/ncipollo/release-action) from 1.18.0 to 1.20.0. - [Release notes](https://github.com/ncipollo/release-action/releases) - [Commits](https://github.com/ncipollo/release-action/compare/v1.18.0...v1.20.0) --- updated-dependencies: - dependency-name: ncipollo/release-action dependency-version: 1.20.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index cd19814..7292ef6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -78,7 +78,7 @@ jobs: - name: Create release draft id: release_drafter - uses: ncipollo/release-action@v1.18.0 + uses: ncipollo/release-action@v1.20.0 with: tag: ${{ steps.env.outputs.tag }} name: 'thinRoot ${{ steps.env.outputs.version }}' @@ -247,7 +247,7 @@ jobs: done - name: Update release draft - uses: ncipollo/release-action@v1.18.0 + uses: ncipollo/release-action@v1.20.0 with: tag: ${{ needs.release_draft.outputs.tag }} bodyFile: release-template.md/release-template.md From 28a2b6d527d8e90f53c978388292e19aaacd4938 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 5 Sep 2025 07:56:44 +0200 Subject: [PATCH 196/247] remove 0002-net-ipv4-fix-regression-in-local-broadcast-routes.patch because changes are integated upstream in kernel 6.12.45. --- ...regression-in-local-broadcast-routes.patch | 51 ------------------- 1 file changed, 51 deletions(-) delete mode 100644 buildroot-external/patches/linux/0002-net-ipv4-fix-regression-in-local-broadcast-routes.patch diff --git a/buildroot-external/patches/linux/0002-net-ipv4-fix-regression-in-local-broadcast-routes.patch b/buildroot-external/patches/linux/0002-net-ipv4-fix-regression-in-local-broadcast-routes.patch deleted file mode 100644 index f1c9bf6..0000000 --- a/buildroot-external/patches/linux/0002-net-ipv4-fix-regression-in-local-broadcast-routes.patch +++ /dev/null @@ -1,51 +0,0 @@ -From f356e2a2604bfc26be8bc51bf83f6a023f06316f Mon Sep 17 00:00:00 2001 -From: Oscar Maes -Date: Wed, 27 Aug 2025 08:23:21 +0200 -Subject: [PATCH] net: ipv4: fix regression in local-broadcast routes - -[ Upstream commit 5189446ba995556eaa3755a6e875bc06675b88bd ] - -Commit 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes") -introduced a regression where local-broadcast packets would have their -gateway set in __mkroute_output, which was caused by fi = NULL being -removed. - -Fix this by resetting the fib_info for local-broadcast packets. This -preserves the intended changes for directed-broadcast packets. - -Cc: stable@vger.kernel.org -Fixes: 9e30ecf23b1b ("net: ipv4: fix incorrect MTU in broadcast routes") -Reported-by: Brett A C Sheffield -Closes: https://lore.kernel.org/regressions/20250822165231.4353-4-bacs@librecast.net -Signed-off-by: Oscar Maes -Reviewed-by: David Ahern -Link: https://patch.msgid.link/20250827062322.4807-1-oscmaes92@gmail.com -Signed-off-by: Paolo Abeni ---- - net/ipv4/route.c | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - -diff --git a/net/ipv4/route.c b/net/ipv4/route.c -index 9a5c9497b3931..261ddb6542a40 100644 ---- a/net/ipv4/route.c -+++ b/net/ipv4/route.c -@@ -2532,12 +2532,16 @@ static struct rtable *__mkroute_output(const struct fib_result *res, - !netif_is_l3_master(dev_out)) - return ERR_PTR(-EINVAL); - -- if (ipv4_is_lbcast(fl4->daddr)) -+ if (ipv4_is_lbcast(fl4->daddr)) { - type = RTN_BROADCAST; -- else if (ipv4_is_multicast(fl4->daddr)) -+ -+ /* reset fi to prevent gateway resolution */ -+ fi = NULL; -+ } else if (ipv4_is_multicast(fl4->daddr)) { - type = RTN_MULTICAST; -- else if (ipv4_is_zeronet(fl4->daddr)) -+ } else if (ipv4_is_zeronet(fl4->daddr)) { - return ERR_PTR(-EINVAL); -+ } - - if (dev_out->flags & IFF_LOOPBACK) - flags |= RTCF_LOCAL; From a407ab6ea31abe8756ab0ebb47b5058f8db0111b Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 18 Sep 2025 09:42:19 +0200 Subject: [PATCH 197/247] disable pa-update-default-sink.sh to see if it is really required anymore. --- buildroot-external/rootfs-overlay/bin/wm-startup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/rootfs-overlay/bin/wm-startup.sh b/buildroot-external/rootfs-overlay/bin/wm-startup.sh index cd21b3e..84ba24d 100755 --- a/buildroot-external/rootfs-overlay/bin/wm-startup.sh +++ b/buildroot-external/rootfs-overlay/bin/wm-startup.sh @@ -82,7 +82,7 @@ if [ "${SESSION_0_HIDECURSOR}" = "true" ]; then fi # update the default pulseaudio sink -/bin/pa-update-default-sink.sh +#/bin/pa-update-default-sink.sh # if SESSION_0_STARTUP is not set we start qutselect-startup.sh as the # default topmost application From 83a86091345297e072abbc3896bcc7551f355b12 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 18 Sep 2025 14:21:10 +0200 Subject: [PATCH 198/247] bump buildroot to 2025.05.2 --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 0f83060..33e80e2 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -BUILDROOT_VERSION=2025.05.1 -BUILDROOT_SHA256=639719adff2ea41206a97c392eb02fe4bf096c83587f24ce29679730fe1a1052 +BUILDROOT_VERSION=2025.05.2 +BUILDROOT_SHA256=d5e7203b1c885256283ec2db8be0cfe2e4ec3445decdce5e971629b9d3531d59 BUILDROOT_EXTERNAL=buildroot-external DEFCONFIG_DIR=$(BUILDROOT_EXTERNAL)/configs DATE=$(shell date +%Y%m%d) From 44963cafc68ed7b5870b3f5f6dde7583a6ac6e03 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 18 Sep 2025 16:01:48 +0200 Subject: [PATCH 199/247] bump upstream kernel to 6.12.47 and adapt buildroot patches to recent 2025.05.2 bump --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- buildroot-patches/0008-rpi-firmware.patch | 2 +- .../buildroot/package/rpi-firmware/rpi-firmware.mk.orig | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index c4579b2..02706f2 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.45" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.47" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 883060e..c0e48a4 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -9,7 +9,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.45" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.47" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index 6c2b918..9f68549 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 8f95a8549cfbdfb89c1181a1f55a971f04dfcd629508a2ed70b777ab92f9db3e linux-6.12.45.tar.xz +sha256 e82fe40871743048226987bd349ef107168b15aab90140e872ca4ed470922e25 linux-6.12.47.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index 6c2b918..9f68549 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 8f95a8549cfbdfb89c1181a1f55a971f04dfcd629508a2ed70b777ab92f9db3e linux-6.12.45.tar.xz +sha256 e82fe40871743048226987bd349ef107168b15aab90140e872ca4ed470922e25 linux-6.12.47.tar.xz diff --git a/buildroot-patches/0008-rpi-firmware.patch b/buildroot-patches/0008-rpi-firmware.patch index dbd0499..df40ade 100644 --- a/buildroot-patches/0008-rpi-firmware.patch +++ b/buildroot-patches/0008-rpi-firmware.patch @@ -17,7 +17,7 @@ ################################################################################ # Please keep in sync with configs/raspberrypi*_deconfig --RPI_FIRMWARE_VERSION = 1.20250326 +-RPI_FIRMWARE_VERSION = 95be71b8c0f63f03dc06dd0e4c2e5535e6fb4a93 +RPI_FIRMWARE_VERSION = $(call qstrip,$(BR2_PACKAGE_RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3-Clause diff --git a/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig b/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig index 2577d16..d0b6abc 100644 --- a/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig +++ b/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig @@ -5,7 +5,7 @@ ################################################################################ # Please keep in sync with configs/raspberrypi*_deconfig -RPI_FIRMWARE_VERSION = 1.20250326 +RPI_FIRMWARE_VERSION = 95be71b8c0f63f03dc06dd0e4c2e5535e6fb4a93 RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3-Clause RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom From b7cdcb5326e4f96ff54c0250227fad6f3b46d050 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 18 Sep 2025 22:09:21 +0200 Subject: [PATCH 200/247] bump buildroot to latest 2025.08 and remove dhcpcd patch not required anymore. --- Makefile | 6 +- .../0003-dhcpcd-glibc241-fix.patch | 20 ----- .../buildroot/package/dhcpcd/dhcpcd.hash | 4 - .../buildroot/package/dhcpcd/dhcpcd.hash.orig | 4 - .../buildroot/package/dhcpcd/dhcpcd.mk | 78 ------------------- .../buildroot/package/dhcpcd/dhcpcd.mk.orig | 78 ------------------- 6 files changed, 3 insertions(+), 187 deletions(-) delete mode 100644 buildroot-patches/0003-dhcpcd-glibc241-fix.patch delete mode 100644 buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash delete mode 100644 buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash.orig delete mode 100644 buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk delete mode 100644 buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk.orig diff --git a/Makefile b/Makefile index 33e80e2..600f4f2 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -BUILDROOT_VERSION=2025.05.2 -BUILDROOT_SHA256=d5e7203b1c885256283ec2db8be0cfe2e4ec3445decdce5e971629b9d3531d59 +BUILDROOT_VERSION=2025.08 +BUILDROOT_SHA256=b8310af16ddd28de15cf24384464be844f858abead9111d41100f82fe4362274 BUILDROOT_EXTERNAL=buildroot-external DEFCONFIG_DIR=$(BUILDROOT_EXTERNAL)/configs DATE=$(shell date +%Y%m%d) @@ -29,7 +29,7 @@ buildroot-$(BUILDROOT_VERSION).tar.gz: $(BR2_DL_DIR) buildroot-$(BUILDROOT_VERSION): | buildroot-$(BUILDROOT_VERSION).tar.gz @echo "[patching buildroot-$(BUILDROOT_VERSION)]" - if [ ! -d $@ ]; then tar xf buildroot-$(BUILDROOT_VERSION).tar.gz; for p in $(sort $(wildcard buildroot-patches/*.patch)); do echo "\nApplying $${p}"; patch -d buildroot-$(BUILDROOT_VERSION) --remove-empty-files -p1 < $${p} || exit 127; [ ! -x $${p%.*}.sh ] || $${p%.*}.sh buildroot-$(BUILDROOT_VERSION); done; fi + if [ ! -d $@ ]; then tar xf buildroot-$(BUILDROOT_VERSION).tar.gz; for p in $(sort $(wildcard buildroot-patches/*.patch)); do echo "\nApplying $${p}"; patch -d buildroot-$(BUILDROOT_VERSION) --remove-empty-files --no-backup-if-mismatch -p1 < $${p} || exit 127; [ ! -x $${p%.*}.sh ] || $${p%.*}.sh buildroot-$(BUILDROOT_VERSION); done; fi build-$(PRODUCT): | buildroot-$(BUILDROOT_VERSION) mkdir $(shell pwd)/build-$(PRODUCT) diff --git a/buildroot-patches/0003-dhcpcd-glibc241-fix.patch b/buildroot-patches/0003-dhcpcd-glibc241-fix.patch deleted file mode 100644 index 08a5df7..0000000 --- a/buildroot-patches/0003-dhcpcd-glibc241-fix.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- buildroot/package/dhcpcd/dhcpcd.hash.orig -+++ buildroot/package/dhcpcd/dhcpcd.hash -@@ -1,4 +1,4 @@ --# sha256 from https://github.com/NetworkConfiguration/dhcpcd/releases/tag/v10.1.0 --sha256 abc307c63853da3199baa5c1e15fd5ede9d68d068b2a59ca14c5a6768e9cc3b7 dhcpcd-10.1.0.tar.xz -+# sha256 from https://github.com/NetworkConfiguration/dhcpcd/releases/tag/v10.2.2 -+sha256 5f257b02f874b3b8cb031e5be79c99cf9cbd4f65eae2a50c9b1beddafb3f51bc dhcpcd-10.2.2.tar.xz - # Locally calculated - sha256 224b37cd1ef1365bd2ac9eaec9f32fee94e85dd40f95461ebcb21e758357ac1f LICENSE ---- buildroot/package/dhcpcd/dhcpcd.mk.orig -+++ buildroot/package/dhcpcd/dhcpcd.mk -@@ -4,7 +4,7 @@ - # - ################################################################################ - --DHCPCD_VERSION = 10.1.0 -+DHCPCD_VERSION = 10.2.2 - DHCPCD_SOURCE = dhcpcd-$(DHCPCD_VERSION).tar.xz - DHCPCD_SITE = https://github.com/NetworkConfiguration/dhcpcd/releases/download/v$(DHCPCD_VERSION) - DHCPCD_DEPENDENCIES = host-pkgconf diff --git a/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash b/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash deleted file mode 100644 index 3220435..0000000 --- a/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash +++ /dev/null @@ -1,4 +0,0 @@ -# sha256 from https://github.com/NetworkConfiguration/dhcpcd/releases/tag/v10.2.2 -sha256 5f257b02f874b3b8cb031e5be79c99cf9cbd4f65eae2a50c9b1beddafb3f51bc dhcpcd-10.2.2.tar.xz -# Locally calculated -sha256 224b37cd1ef1365bd2ac9eaec9f32fee94e85dd40f95461ebcb21e758357ac1f LICENSE diff --git a/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash.orig b/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash.orig deleted file mode 100644 index 34f6419..0000000 --- a/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.hash.orig +++ /dev/null @@ -1,4 +0,0 @@ -# sha256 from https://github.com/NetworkConfiguration/dhcpcd/releases/tag/v10.1.0 -sha256 abc307c63853da3199baa5c1e15fd5ede9d68d068b2a59ca14c5a6768e9cc3b7 dhcpcd-10.1.0.tar.xz -# Locally calculated -sha256 224b37cd1ef1365bd2ac9eaec9f32fee94e85dd40f95461ebcb21e758357ac1f LICENSE diff --git a/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk b/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk deleted file mode 100644 index 69f4ae6..0000000 --- a/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk +++ /dev/null @@ -1,78 +0,0 @@ -################################################################################ -# -# dhcpcd -# -################################################################################ - -DHCPCD_VERSION = 10.2.2 -DHCPCD_SOURCE = dhcpcd-$(DHCPCD_VERSION).tar.xz -DHCPCD_SITE = https://github.com/NetworkConfiguration/dhcpcd/releases/download/v$(DHCPCD_VERSION) -DHCPCD_DEPENDENCIES = host-pkgconf -DHCPCD_LICENSE = BSD-2-Clause -DHCPCD_LICENSE_FILES = LICENSE -DHCPCD_CPE_ID_VALID = YES - -DHCPCD_CONFIG_OPTS = \ - --libexecdir=/lib/dhcpcd \ - --os=linux \ - --privsepuser=dhcpcd - -DHCPCD_MAKE_OPTS = \ - BINMODE=755 - -ifeq ($(BR2_PACKAGE_DHCPCD_ENABLE_PRIVSEP),y) -DHCPCD_CONFIG_OPTS += --enable-privsep -else -DHCPCD_CONFIG_OPTS += --disable-privsep -endif - -ifeq ($(BR2_PACKAGE_HAS_UDEV),y) -DHCPCD_CONFIG_OPTS += --with-udev -DHCPCD_DEPENDENCIES += udev -else -DHCPCD_CONFIG_OPTS += --without-udev -endif - -ifeq ($(BR2_STATIC_LIBS),y) -DHCPCD_CONFIG_OPTS += --enable-static -endif - -ifeq ($(BR2_USE_MMU),) -DHCPCD_CONFIG_OPTS += --disable-fork -endif - -define DHCPCD_CONFIGURE_CMDS - (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(DHCPCD_CONFIG_OPTS)) -endef - -define DHCPCD_BUILD_CMDS - $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(DHCPCD_MAKE_OPTS) all -endef - -define DHCPCD_INSTALL_TARGET_CMDS - $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(DHCPCD_MAKE_OPTS) install DESTDIR=$(TARGET_DIR) -endef - -# When network-manager is enabled together with dhcpcd, it will use -# dhcpcd as a DHCP client, and will be in charge of running, so we -# don't want the init script or service file to be installed. -ifeq ($(BR2_PACKAGE_NETWORK_MANAGER),) -define DHCPCD_INSTALL_INIT_SYSV - $(INSTALL) -m 755 -D package/dhcpcd/S41dhcpcd \ - $(TARGET_DIR)/etc/init.d/S41dhcpcd -endef - -define DHCPCD_INSTALL_INIT_SYSTEMD - $(INSTALL) -D -m 0644 package/dhcpcd/dhcpcd.service \ - $(TARGET_DIR)/usr/lib/systemd/system/dhcpcd.service -endef -endif - -define DHCPCD_USERS - dhcpcd -1 dhcpcd -1 * - - - dhcpcd user -endef - -# NOTE: Even though this package has a configure script, it is not generated -# using the autotools, so we have to use the generic package infrastructure. - -$(eval $(generic-package)) diff --git a/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk.orig b/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk.orig deleted file mode 100644 index 3a4b0e1..0000000 --- a/buildroot-patches/0003-dhcpcd-glibc241-fix/buildroot/package/dhcpcd/dhcpcd.mk.orig +++ /dev/null @@ -1,78 +0,0 @@ -################################################################################ -# -# dhcpcd -# -################################################################################ - -DHCPCD_VERSION = 10.1.0 -DHCPCD_SOURCE = dhcpcd-$(DHCPCD_VERSION).tar.xz -DHCPCD_SITE = https://github.com/NetworkConfiguration/dhcpcd/releases/download/v$(DHCPCD_VERSION) -DHCPCD_DEPENDENCIES = host-pkgconf -DHCPCD_LICENSE = BSD-2-Clause -DHCPCD_LICENSE_FILES = LICENSE -DHCPCD_CPE_ID_VALID = YES - -DHCPCD_CONFIG_OPTS = \ - --libexecdir=/lib/dhcpcd \ - --os=linux \ - --privsepuser=dhcpcd - -DHCPCD_MAKE_OPTS = \ - BINMODE=755 - -ifeq ($(BR2_PACKAGE_DHCPCD_ENABLE_PRIVSEP),y) -DHCPCD_CONFIG_OPTS += --enable-privsep -else -DHCPCD_CONFIG_OPTS += --disable-privsep -endif - -ifeq ($(BR2_PACKAGE_HAS_UDEV),y) -DHCPCD_CONFIG_OPTS += --with-udev -DHCPCD_DEPENDENCIES += udev -else -DHCPCD_CONFIG_OPTS += --without-udev -endif - -ifeq ($(BR2_STATIC_LIBS),y) -DHCPCD_CONFIG_OPTS += --enable-static -endif - -ifeq ($(BR2_USE_MMU),) -DHCPCD_CONFIG_OPTS += --disable-fork -endif - -define DHCPCD_CONFIGURE_CMDS - (cd $(@D); $(TARGET_CONFIGURE_OPTS) ./configure $(DHCPCD_CONFIG_OPTS)) -endef - -define DHCPCD_BUILD_CMDS - $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(DHCPCD_MAKE_OPTS) all -endef - -define DHCPCD_INSTALL_TARGET_CMDS - $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) $(DHCPCD_MAKE_OPTS) install DESTDIR=$(TARGET_DIR) -endef - -# When network-manager is enabled together with dhcpcd, it will use -# dhcpcd as a DHCP client, and will be in charge of running, so we -# don't want the init script or service file to be installed. -ifeq ($(BR2_PACKAGE_NETWORK_MANAGER),) -define DHCPCD_INSTALL_INIT_SYSV - $(INSTALL) -m 755 -D package/dhcpcd/S41dhcpcd \ - $(TARGET_DIR)/etc/init.d/S41dhcpcd -endef - -define DHCPCD_INSTALL_INIT_SYSTEMD - $(INSTALL) -D -m 0644 package/dhcpcd/dhcpcd.service \ - $(TARGET_DIR)/usr/lib/systemd/system/dhcpcd.service -endef -endif - -define DHCPCD_USERS - dhcpcd -1 dhcpcd -1 * - - - dhcpcd user -endef - -# NOTE: Even though this package has a configure script, it is not generated -# using the autotools, so we have to use the generic package infrastructure. - -$(eval $(generic-package)) From d158bcebbf639930e2dd0dce3fa246a3fadf59fd Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sat, 20 Sep 2025 20:32:22 +0200 Subject: [PATCH 201/247] add 0001-gcc14-fix.patch as buildroot upstream patch to fix YAD compilation with GCC14. Also added YAD as a dependency in qutselect package. --- .../configs/generic-x86_64.config | 1 - .../package/qutselect/Config.in | 1 + .../package/qutselect/qutselect.mk | 2 +- buildroot-patches/0023-yad-gcc14-fix.patch | 23 +++++++++++++++++++ .../package/yad/0001-gcc14-fix.patch | 20 ++++++++++++++++ .../package/yad/0001-gcc14-fix.patch.orig | 0 6 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 buildroot-patches/0023-yad-gcc14-fix.patch create mode 100644 buildroot-patches/0023-yad-gcc14-fix/buildroot/package/yad/0001-gcc14-fix.patch create mode 100644 buildroot-patches/0023-yad-gcc14-fix/buildroot/package/yad/0001-gcc14-fix.patch.orig diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 02706f2..25e178e 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -32,7 +32,6 @@ BR2_PACKAGE_BLUEZ5_UTILS_OBEX=y BR2_PACKAGE_BLUEZ5_UTILS_CLIENT=y BR2_PACKAGE_BLUEZ5_UTILS_DEPRECATED=y BR2_PACKAGE_LIBKRB5=y -BR2_PACKAGE_YAD=y BR2_PACKAGE_LIBNSS=y BR2_PACKAGE_CUPS=y BR2_PACKAGE_LIBV4L_UTILS=y diff --git a/buildroot-external/package/qutselect/Config.in b/buildroot-external/package/qutselect/Config.in index 5b0942d..30f7273 100644 --- a/buildroot-external/package/qutselect/Config.in +++ b/buildroot-external/package/qutselect/Config.in @@ -12,6 +12,7 @@ config BR2_PACKAGE_QUTSELECT select BR2_PACKAGE_JQ select BR2_PACKAGE_LIBCURL select BR2_PACKAGE_LIBCURL_CURL + select BR2_PACKAGE_YAD help A Qt-based (unix) terminal server selection tool diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index 28fa5c7..870394f 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -8,7 +8,7 @@ QUTSELECT_VERSION = 3.13 QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE -QUTSELECT_DEPENDENCIES = qt6base jq libcurl +QUTSELECT_DEPENDENCIES = qt6base jq libcurl yad QUTSELECT_CONF_OPTS = -DCMAKE_INSTALL_PREFIX:PATH=/ define QUTSELECT_INSTALL_TARGET_CMDS diff --git a/buildroot-patches/0023-yad-gcc14-fix.patch b/buildroot-patches/0023-yad-gcc14-fix.patch new file mode 100644 index 0000000..88f50be --- /dev/null +++ b/buildroot-patches/0023-yad-gcc14-fix.patch @@ -0,0 +1,23 @@ +--- buildroot/package/yad/0001-gcc14-fix.patch.orig ++++ buildroot/package/yad/0001-gcc14-fix.patch +@@ -0,0 +1,20 @@ ++--- yad-0.40.0/src/main.c.orig 2025-09-20 12:23:10.917236849 +0200 +++++ yad-0.40.0/src/main.c 2025-09-20 12:21:54.343190497 +0200 ++@@ -670,7 +670,7 @@ ++ ++ #if GTK_CHECK_VERSION(3,0,0) ++ if (css) ++- gtk_style_context_add_provider (gtk_widget_get_style_context (dlg), css, GTK_STYLE_PROVIDER_PRIORITY_USER); +++ gtk_style_context_add_provider (gtk_widget_get_style_context (dlg), GTK_STYLE_PROVIDER(css), GTK_STYLE_PROVIDER_PRIORITY_USER); ++ #endif ++ ++ return dlg; ++@@ -700,7 +700,7 @@ ++ ++ #if GTK_CHECK_VERSION(3,0,0) ++ if (css) ++- gtk_style_context_add_provider (gtk_widget_get_style_context (win), css, GTK_STYLE_PROVIDER_PRIORITY_USER); +++ gtk_style_context_add_provider (gtk_widget_get_style_context (win), GTK_STYLE_PROVIDER(css), GTK_STYLE_PROVIDER_PRIORITY_USER); ++ #endif ++ ++ gtk_widget_show_all (win); diff --git a/buildroot-patches/0023-yad-gcc14-fix/buildroot/package/yad/0001-gcc14-fix.patch b/buildroot-patches/0023-yad-gcc14-fix/buildroot/package/yad/0001-gcc14-fix.patch new file mode 100644 index 0000000..f5353dc --- /dev/null +++ b/buildroot-patches/0023-yad-gcc14-fix/buildroot/package/yad/0001-gcc14-fix.patch @@ -0,0 +1,20 @@ +--- yad-0.40.0/src/main.c.orig 2025-09-20 12:23:10.917236849 +0200 ++++ yad-0.40.0/src/main.c 2025-09-20 12:21:54.343190497 +0200 +@@ -670,7 +670,7 @@ + + #if GTK_CHECK_VERSION(3,0,0) + if (css) +- gtk_style_context_add_provider (gtk_widget_get_style_context (dlg), css, GTK_STYLE_PROVIDER_PRIORITY_USER); ++ gtk_style_context_add_provider (gtk_widget_get_style_context (dlg), GTK_STYLE_PROVIDER(css), GTK_STYLE_PROVIDER_PRIORITY_USER); + #endif + + return dlg; +@@ -700,7 +700,7 @@ + + #if GTK_CHECK_VERSION(3,0,0) + if (css) +- gtk_style_context_add_provider (gtk_widget_get_style_context (win), css, GTK_STYLE_PROVIDER_PRIORITY_USER); ++ gtk_style_context_add_provider (gtk_widget_get_style_context (win), GTK_STYLE_PROVIDER(css), GTK_STYLE_PROVIDER_PRIORITY_USER); + #endif + + gtk_widget_show_all (win); diff --git a/buildroot-patches/0023-yad-gcc14-fix/buildroot/package/yad/0001-gcc14-fix.patch.orig b/buildroot-patches/0023-yad-gcc14-fix/buildroot/package/yad/0001-gcc14-fix.patch.orig new file mode 100644 index 0000000..e69de29 From 7a2f5dd53e33d56e27cbdb9222dc7b2d42d4c9cb Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sun, 21 Sep 2025 17:48:54 +0200 Subject: [PATCH 202/247] bump used upstream kernel to 6.12.48 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 25e178e..4167eec 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.47" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.48" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index c0e48a4..6bad0bb 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -9,7 +9,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.47" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.48" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index 9f68549..96168f4 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 e82fe40871743048226987bd349ef107168b15aab90140e872ca4ed470922e25 linux-6.12.47.tar.xz +sha256 5bf9eb676751bf48978e38363c772298b41a75336d5038ed6d37012399471db2 linux-6.12.48.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index 9f68549..96168f4 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 e82fe40871743048226987bd349ef107168b15aab90140e872ca4ed470922e25 linux-6.12.47.tar.xz +sha256 5bf9eb676751bf48978e38363c772298b41a75336d5038ed6d37012399471db2 linux-6.12.48.tar.xz From 1865376ed9b232caade1ebaf2a5ba0a182770e8e Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Mon, 22 Sep 2025 11:31:53 +0200 Subject: [PATCH 203/247] use pactl rather than amixer for the volume controls which seems to be more reliable. In addition we allow to switch microphone levels and mute/unmute toggle via SHIFT+keypad presses as well now. --- .../rootfs-overlay/etc/hotkeyd.conf | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/buildroot-external/rootfs-overlay/etc/hotkeyd.conf b/buildroot-external/rootfs-overlay/etc/hotkeyd.conf index 3e95ffd..5cfbb4c 100644 --- a/buildroot-external/rootfs-overlay/etc/hotkeyd.conf +++ b/buildroot-external/rootfs-overlay/etc/hotkeyd.conf @@ -29,12 +29,18 @@ CUT /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Shift_L key Delete 'k UNDO /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Control_L key z keyup Control_L" & # audo control hotkeys -VOLUMEUP /bin/su - truser -c "/usr/bin/amixer sset Master 5%+" & -VOLUMEDOWN /bin/su - truser -c "/usr/bin/amixer sset Master 5%-" & -MUTE /bin/su - truser -c "/usr/bin/amixer sset Master toggle" & -LEFTALT+KPPLUS /bin/su - truser -c "/usr/bin/amixer sset Master 5%+" & -RIGHTALT+KPPLUS /bin/su - truser -c "/usr/bin/amixer sset Master 5%+" & -LEFTALT+KPMINUS /bin/su - truser -c "/usr/bin/amixer sset Master 5%-" & -RIGHTALT+KPMINUS /bin/su - truser -c "/usr/bin/amixer sset Master 5%-" & -LEFTALT+KPASTERISK /bin/su - truser -c "/usr/bin/amixer sset Master toggle" & -RIGHTALT+KPASTERISK /bin/su - truser -c "/usr/bin/amixer sset Master toggle" & +VOLUMEUP /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%" & +VOLUMEDOWN /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%" & +MUTE /bin/su - truser -c "/usr/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle" & +LEFTALT+KPPLUS /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%" & +RIGHTALT+KPPLUS /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%" & +LEFTALT+KPMINUS /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%" & +RIGHTALT+KPMINUS /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%" & +LEFTALT+KPASTERISK /bin/su - truser -c "/usr/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle" & +RIGHTALT+KPASTERISK /bin/su - truser -c "/usr/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle" & +LEFTSHIFT+KPPLUS /bin/su - truser -c "/usr/bin/pactl set-source-volume @DEFAULT_SOURCE@ +5%" & +RIGHTSHIFT+KPPLUS /bin/su - truser -c "/usr/bin/pactl set-source-volume @DEFAULT_SOURCE@ +5%" & +LEFTSHIFT+KPMINUS /bin/su - truser -c "/usr/bin/pactl set-source-volume @DEFAULT_SOURCE@ -5%" & +RIGHTSHIFT+KPMINUS /bin/su - truser -c "/usr/bin/pactl set-source-volume @DEFAULT_SOURCE@ -5%" & +LEFTSHIFT+KPASTERISK /bin/su - truser -c "/usr/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle" & +RIGHTSHIFT+KPASTERISK /bin/su - truser -c "/usr/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle" & From 4d30d308d65a90f2367cc9d62b1633416743dcfe Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Mon, 22 Sep 2025 12:10:26 +0200 Subject: [PATCH 204/247] fix hotkeyd build to pick up the correct version using commit id and added hash file accordingly. --- .../package/hotkeyd/hotkeyd.hash | 1 + buildroot-external/package/hotkeyd/hotkeyd.mk | 5 ++-- scripts/update-hotkeyd.sh | 24 +++++++++++++++++++ 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 buildroot-external/package/hotkeyd/hotkeyd.hash create mode 100755 scripts/update-hotkeyd.sh diff --git a/buildroot-external/package/hotkeyd/hotkeyd.hash b/buildroot-external/package/hotkeyd/hotkeyd.hash new file mode 100644 index 0000000..ee3a28d --- /dev/null +++ b/buildroot-external/package/hotkeyd/hotkeyd.hash @@ -0,0 +1 @@ +sha256 333683b482417282af5c7f1d9010074ec6efebb4c6015b66459769fe6b993172 hotkeyd-b35ba8173d9a95f0e8cc3be2d168124fc641fee6.tar.gz diff --git a/buildroot-external/package/hotkeyd/hotkeyd.mk b/buildroot-external/package/hotkeyd/hotkeyd.mk index ff5f1e9..1b24fc6 100644 --- a/buildroot-external/package/hotkeyd/hotkeyd.mk +++ b/buildroot-external/package/hotkeyd/hotkeyd.mk @@ -6,9 +6,8 @@ # ################################################################################ -HOTKEYD_VERSION = 0.4.6 -HOTKEYD_TAG = b35ba8173d9a95f0e8cc3be2d168124fc641fee6 -HOTKEYD_SITE = $(call github,jens-maus,hotkeyd,$(HOTKEYD_TAG)) +HOTKEYD_VERSION = b35ba8173d9a95f0e8cc3be2d168124fc641fee6 +HOTKEYD_SITE = $(call github,jens-maus,hotkeyd,$(HOTKEYD_VERSION)) HOTKEYD_LICENSE = GPL-3.0 HOTKEYD_LICENSE_FILES = LICENSE diff --git a/scripts/update-hotkeyd.sh b/scripts/update-hotkeyd.sh new file mode 100755 index 0000000..8bb4172 --- /dev/null +++ b/scripts/update-hotkeyd.sh @@ -0,0 +1,24 @@ +#!/bin/bash +set -e + +ID=${1} +PACKAGE_NAME="hotkeyd" +PROJECT_URL="https://github.com/jens-maus/hotkeyd" +ARCHIVE_URL="${PROJECT_URL}/archive/${ID}/${PACKAGE_NAME}-${ID}.tar.gz" + +if [[ -z "${ID}" ]]; then + echo "Need hotkeyd version/commit" + exit 1 +fi + +# download archive for hash update +ARCHIVE_HASH=$(wget --passive-ftp -nd -t 3 -O - "${ARCHIVE_URL}" | sha256sum | awk '{ print $1 }') +if [[ -n "${ARCHIVE_HASH}" ]]; then + # update package info + BR_PACKAGE_NAME=${PACKAGE_NAME^^} + BR_PACKAGE_NAME=${BR_PACKAGE_NAME//-/_} + sed -i "s/${BR_PACKAGE_NAME}_VERSION = .*/${BR_PACKAGE_NAME}_VERSION = ${ID}/g" "buildroot-external/package/${PACKAGE_NAME}/${PACKAGE_NAME}.mk" + # update package hash + sed -i "$ d" "buildroot-external/package/${PACKAGE_NAME}/${PACKAGE_NAME}.hash" + echo "sha256 ${ARCHIVE_HASH} ${PACKAGE_NAME}-${ID}.tar.gz" >>"buildroot-external/package/${PACKAGE_NAME}/${PACKAGE_NAME}.hash" +fi From 058ec8f26ddccf259fc5c03a5eb91a30ba35eeb1 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Mon, 22 Sep 2025 12:46:15 +0200 Subject: [PATCH 205/247] add MICMUTE keyboard hotkey to mute/unmute the default audio input source. --- buildroot-external/rootfs-overlay/etc/hotkeyd.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/rootfs-overlay/etc/hotkeyd.conf b/buildroot-external/rootfs-overlay/etc/hotkeyd.conf index 5cfbb4c..3f1ef62 100644 --- a/buildroot-external/rootfs-overlay/etc/hotkeyd.conf +++ b/buildroot-external/rootfs-overlay/etc/hotkeyd.conf @@ -32,6 +32,7 @@ UNDO /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Control_L key z keyu VOLUMEUP /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%" & VOLUMEDOWN /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%" & MUTE /bin/su - truser -c "/usr/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle" & +MICMUTE /bin/su - truser -c "/usr/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle" & LEFTALT+KPPLUS /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%" & RIGHTALT+KPPLUS /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%" & LEFTALT+KPMINUS /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%" & From bab94077bfe65b4244b94a028c76df56883cd8f1 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 23 Sep 2025 10:47:24 +0200 Subject: [PATCH 206/247] revert thinlinc to 4.18.0-3768 to check if this solves a potential multi-monitor issue appearing with latest thinRoot. --- buildroot-external/package/thinlinc/thinlinc.hash | 4 ++-- buildroot-external/package/thinlinc/thinlinc.mk | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/buildroot-external/package/thinlinc/thinlinc.hash b/buildroot-external/package/thinlinc/thinlinc.hash index e9a6eda..bfdf202 100644 --- a/buildroot-external/package/thinlinc/thinlinc.hash +++ b/buildroot-external/package/thinlinc/thinlinc.hash @@ -1,3 +1,3 @@ # Locally computed -sha256 b21961bb49be4cf830de7751ef441d27a67403225d23fc661c9bfe65b155a241 tl-4.19.0-4005-client-linux-dynamic-x86_64.tar.gz -sha256 263968914a61b87a0b7454d82659f14c59396a870d124c1c5cd304e1ca27a3f7 tl-4.19.0-4005-client-linux-dynamic-armhf.tar.gz +sha256 7d37b31a19f45044844113eb1d855935ca65578f306f95ffc6aa6521f2d12c00 tl-4.18.0-3768-client-linux-dynamic-x86_64.tar.gz +sha256 cd35be934574a197cc01399e7c3a2a9e5451e42215b0aab7ea9f29771927a643 tl-4.18.0-3768-client-linux-dynamic-armhf.tar.gz diff --git a/buildroot-external/package/thinlinc/thinlinc.mk b/buildroot-external/package/thinlinc/thinlinc.mk index 3d86854..9bc180c 100644 --- a/buildroot-external/package/thinlinc/thinlinc.mk +++ b/buildroot-external/package/thinlinc/thinlinc.mk @@ -6,7 +6,7 @@ # ################################################################################ -THINLINC_VERSION = 4.19.0-4005 +THINLINC_VERSION = 4.18.0-3768 THINLINC_SITE = https://www.cendio.com/downloads/clients ifeq ($(call qstrip,$(BR2_ARCH)),x86_64) From fe2f2aeeeb4f9e003d4e5e02485fd257f5e12048 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 23 Sep 2025 13:41:54 +0200 Subject: [PATCH 207/247] remove BR2_PACKAGE_MESA3D_LLVM to see if it is really required because it introduces quite some dependencies (libclc, etc.) which might stuff our image unnecessarily. --- buildroot-external/Buildroot.config | 1 - 1 file changed, 1 deletion(-) diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index 2463d46..fa85c5f 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -52,7 +52,6 @@ BR2_PACKAGE_DEJAVU=y BR2_PACKAGE_LIBERATION=y BR2_PACKAGE_LIBDRM=y BR2_PACKAGE_MESA3D=y -BR2_PACKAGE_MESA3D_LLVM=y BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y BR2_PACKAGE_MESA3D_OPENGL_GLX=y BR2_PACKAGE_MESA3D_OPENGL_EGL=y From 4e6d8f0a764c48305f34eee834ba426e680381c1 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 23 Sep 2025 17:44:53 +0200 Subject: [PATCH 208/247] add new buildroot package 'xosd' which will allow us to display an OSD (#41) --- buildroot-external/Buildroot.config | 1 + buildroot-external/Config.in | 1 + buildroot-external/package/xosd/Config.in | 11 +++++++++++ buildroot-external/package/xosd/xosd.hash | 1 + buildroot-external/package/xosd/xosd.mk | 20 ++++++++++++++++++++ 5 files changed, 34 insertions(+) create mode 100644 buildroot-external/package/xosd/Config.in create mode 100644 buildroot-external/package/xosd/xosd.hash create mode 100644 buildroot-external/package/xosd/xosd.mk diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index fa85c5f..70b7c6a 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -106,3 +106,4 @@ BR2_PACKAGE_HOST_MTOOLS=y BR2_PACKAGE_HOTKEYD=y BR2_PACKAGE_NUMLOCKX=y BR2_PACKAGE_XPRINTIDLE=y +BR2_PACKAGE_XOSD=y diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in index fb497be..96c2272 100644 --- a/buildroot-external/Config.in +++ b/buildroot-external/Config.in @@ -16,4 +16,5 @@ menu "Additional software" source "$BR2_EXTERNAL_THINROOT_PATH/package/qt-kiosk-browser/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/multilib32/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/yoe-kiosk-browser/Config.in" + source "$BR2_EXTERNAL_THINROOT_PATH/package/xosd/Config.in" endmenu diff --git a/buildroot-external/package/xosd/Config.in b/buildroot-external/package/xosd/Config.in new file mode 100644 index 0000000..7710ce9 --- /dev/null +++ b/buildroot-external/package/xosd/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_XOSD + bool "xosd" + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXEXT + help + XOSD displays text on your screen, sounds simple right? + The difference is it is unmanaged and shaped, so it appears + transparent. This gives the effect of an On Screen Display, + like your TV/VCR etc. + + https://sourceforge.net/projects/libxosd/ diff --git a/buildroot-external/package/xosd/xosd.hash b/buildroot-external/package/xosd/xosd.hash new file mode 100644 index 0000000..81f29a9 --- /dev/null +++ b/buildroot-external/package/xosd/xosd.hash @@ -0,0 +1 @@ +sha256 4f1fa96f4895baee6a3cba40f188a0da23bbac9d68e8c326d749e084143cb508 xosd-2.2.14.tar.gz diff --git a/buildroot-external/package/xosd/xosd.mk b/buildroot-external/package/xosd/xosd.mk new file mode 100644 index 0000000..99653de --- /dev/null +++ b/buildroot-external/package/xosd/xosd.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# libxosd / xosd +# +################################################################################ + +XOSD_VERSION = 2.2.14 +XOSD_SITE = https://downloads.sourceforge.net/project/libxosd/libxosd/xosd-$(XOSD_VERSION) +XOSD_LICENSE = GPL-2.0-or-later +XOSD_LICENSE_FILES = COPYING +XOSD_DEPENDENCIES = xlib_libX11 xlib_libXext + +# remove unnecessary stuff +define XOSD_REMOVE_DATA + $(RM) -r $(TARGET_DIR)/usr/share/xosd + $(RM) -r $(TARGET_DIR)/usr/bin/xosd-config +endef +XOSD_POST_INSTALL_TARGET_HOOKS += XOSD_REMOVE_DATA + +$(eval $(autotools-package)) From c9978b4982c6a1008a4e441340d70daff41fa59a Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 23 Sep 2025 19:02:59 +0200 Subject: [PATCH 209/247] Revert "remove BR2_PACKAGE_MESA3D_LLVM to see if it is really required because" This reverts commit fe2f2aeeeb4f9e003d4e5e02485fd257f5e12048. --- buildroot-external/Buildroot.config | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index 70b7c6a..c9927ff 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -52,6 +52,7 @@ BR2_PACKAGE_DEJAVU=y BR2_PACKAGE_LIBERATION=y BR2_PACKAGE_LIBDRM=y BR2_PACKAGE_MESA3D=y +BR2_PACKAGE_MESA3D_LLVM=y BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y BR2_PACKAGE_MESA3D_OPENGL_GLX=y BR2_PACKAGE_MESA3D_OPENGL_EGL=y From 8491026628e681dff51bad3a7d14701c8b2410eb Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 23 Sep 2025 19:05:54 +0200 Subject: [PATCH 210/247] remove /usr/share/clc upon post-build to free unnecessary occupied space. --- buildroot-external/board/generic-x86_64/post-build.sh | 3 +++ buildroot-external/board/rpi3/post-build.sh | 3 +++ buildroot-external/board/rpi4/post-build.sh | 3 +++ buildroot-external/board/rpi5/post-build.sh | 3 +++ buildroot-external/board/tinkerboard/post-build.sh | 3 +++ 5 files changed, 15 insertions(+) diff --git a/buildroot-external/board/generic-x86_64/post-build.sh b/buildroot-external/board/generic-x86_64/post-build.sh index 773a8fc..57a9176 100755 --- a/buildroot-external/board/generic-x86_64/post-build.sh +++ b/buildroot-external/board/generic-x86_64/post-build.sh @@ -17,3 +17,6 @@ rm -f "${TARGET_DIR}/lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf" # remove unnecessary /etc/init.d/fuse3 rm -f "${TARGET_DIR}/etc/init.d/fuse3" + +# remove unnecessary /usr/share/clc +rm -rf "${TARGET_DIR}/usr/share/clc" diff --git a/buildroot-external/board/rpi3/post-build.sh b/buildroot-external/board/rpi3/post-build.sh index 7aaaf78..66d0fc3 100755 --- a/buildroot-external/board/rpi3/post-build.sh +++ b/buildroot-external/board/rpi3/post-build.sh @@ -27,3 +27,6 @@ rm -f "${TARGET_DIR}/lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf" # remove unnecessary /etc/init.d/fuse3 rm -f "${TARGET_DIR}/etc/init.d/fuse3" + +# remove unnecessary /usr/share/clc +rm -rf "${TARGET_DIR}/usr/share/clc" diff --git a/buildroot-external/board/rpi4/post-build.sh b/buildroot-external/board/rpi4/post-build.sh index 8a1c097..5093b07 100755 --- a/buildroot-external/board/rpi4/post-build.sh +++ b/buildroot-external/board/rpi4/post-build.sh @@ -27,3 +27,6 @@ rm -f "${TARGET_DIR}/lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf" # remove unnecessary /etc/init.d/fuse3 rm -f "${TARGET_DIR}/etc/init.d/fuse3" + +# remove unnecessary /usr/share/clc +rm -rf "${TARGET_DIR}/usr/share/clc" diff --git a/buildroot-external/board/rpi5/post-build.sh b/buildroot-external/board/rpi5/post-build.sh index 77fd196..aacc962 100755 --- a/buildroot-external/board/rpi5/post-build.sh +++ b/buildroot-external/board/rpi5/post-build.sh @@ -27,3 +27,6 @@ rm -f "${TARGET_DIR}/lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf" # remove unnecessary /etc/init.d/fuse3 rm -f "${TARGET_DIR}/etc/init.d/fuse3" + +# remove unnecessary /usr/share/clc +rm -rf "${TARGET_DIR}/usr/share/clc" diff --git a/buildroot-external/board/tinkerboard/post-build.sh b/buildroot-external/board/tinkerboard/post-build.sh index 37fb0ee..ed58fa9 100755 --- a/buildroot-external/board/tinkerboard/post-build.sh +++ b/buildroot-external/board/tinkerboard/post-build.sh @@ -27,3 +27,6 @@ rm -f "${TARGET_DIR}/lib/dhcpcd/dhcpcd-hooks/50-timesyncd.conf" # remove unnecessary /etc/init.d/fuse3 rm -f "${TARGET_DIR}/etc/init.d/fuse3" + +# remove unnecessary /usr/share/clc +rm -rf "${TARGET_DIR}/usr/share/clc" From 1fc3d27330db72818b1ccbd707106dcc89d641c2 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 24 Sep 2025 14:13:18 +0200 Subject: [PATCH 211/247] add new pa-volume.control.sh and adapted hotkeyd.conf to use that pulseaudio volume wrapper now to perform the pulseaudio volume up/down and mute actions and then show a OSD display via xosd. In addition, umounter.sh as well as usbmount mount/umount scripts have been modified to also display a OSD notification when actions are performed. This should make the actions visible to end users. --- .../rootfs-overlay/bin/pa-volume-control.sh | 98 +++++++++++++++++++ .../rootfs-overlay/bin/umounter.sh | 27 ++++- .../rootfs-overlay/etc/hotkeyd.conf | 32 +++--- .../usbmount/mount.d/00_create_model_symlink | 7 ++ .../usbmount/umount.d/00_remove_model_symlink | 7 ++ 5 files changed, 153 insertions(+), 18 deletions(-) create mode 100755 buildroot-external/rootfs-overlay/bin/pa-volume-control.sh diff --git a/buildroot-external/rootfs-overlay/bin/pa-volume-control.sh b/buildroot-external/rootfs-overlay/bin/pa-volume-control.sh new file mode 100755 index 0000000..3ec65e3 --- /dev/null +++ b/buildroot-external/rootfs-overlay/bin/pa-volume-control.sh @@ -0,0 +1,98 @@ +#!/bin/sh +# shellcheck shell=dash disable=SC3014 +# +# This script can be run to control the pulseaudio speaker +# output and microphone input to set the volume up/down, +# mute/unmute toggle and to show that via an optional +# OSD display function. +# +# Copyright (C) 2025 Jens Maus +# + +# wrapper to call pactl as truser +pactl() +{ + /bin/su - truser -c "/usr/bin/pactl ${1} ${2} ${3}" +} + +# get the volume and return the volume in % +pa_get_sink_volume() +{ + VOLUME=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -o '[0-9]\+%' | head -n1 | tr -d %) +} + +# get the volume and return the volume in % +pa_get_source_volume() +{ + VOLUME=$(pactl get-source-volume @DEFAULT_SOURCE@ | grep -o '[0-9]\+%' | head -n1 | tr -d %) +} + +# get the mute mode of the output sink +pa_get_sink_mute() +{ + MUTE=$(pactl get-sink-mute @DEFAULT_SINK@ | awk '{print ($2=="yes")?1:0}') +} + +# get the mute mode of the input source +pa_get_source_mute() +{ + MUTE=$(pactl get-source-mute @DEFAULT_SOURCE@ | awk '{print ($2=="yes")?1:0}') +} + +# function to optionally output the current +# speaker volume or source input in percentage +osd_notify() +{ + if [ -x /usr/bin/osd_cat ]; then + if [ "${MUTE}" == "1" ]; then + VOLUME="0" + MUTETEXT=" (mute)" + else + MUTETEXT="" + fi + + if [ "${TARGET}" == "speaker" ]; then + COLOR=green + TEXT="VOL:" + elif [ "${TARGET}" == "mic" ]; then + COLOR=orange + TEXT="MIC:" + fi + + # kill previous osd_cat + pkill /usr/bin/osd_cat + export LANG=en_US.UTF-8 + export DISPLAY=:0 + /usr/bin/osd_cat -A center -p bottom -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c "${COLOR}" -s 5 -d 3 --barmode=percentage -P "${VOLUME}" -T "${TEXT} ${VOLUME}%${MUTETEXT}" & + fi +} + +############################################ +# main starts here + +TARGET=${1} +CMD=${2} + +if [ "${TARGET}" == "speaker" ]; then + if [ "${CMD}" == "toggle" ]; then + pactl set-sink-mute @DEFAULT_SINK@ "${CMD}" + else + pactl set-sink-volume @DEFAULT_SINK@ "${CMD}" + pactl set-sink-mute @DEFAULT_SINK@ 0 + fi + pa_get_sink_volume + pa_get_sink_mute +elif [ "${TARGET}" == "mic" ]; then + if [ "${CMD}" == "toggle" ]; then + pactl set-source-mute @DEFAULT_SOURCE@ "${CMD}" + else + pactl set-source-volume @DEFAULT_SOURCE@ "${CMD}" + pactl set-source-mute @DEFAULT_SOURCE@ 0 + fi + pa_get_source_volume + pa_get_source_mute +fi + +osd_notify + +exit 0 diff --git a/buildroot-external/rootfs-overlay/bin/umounter.sh b/buildroot-external/rootfs-overlay/bin/umounter.sh index e41f7bc..c91ab66 100755 --- a/buildroot-external/rootfs-overlay/bin/umounter.sh +++ b/buildroot-external/rootfs-overlay/bin/umounter.sh @@ -1,8 +1,31 @@ #!/bin/sh -grep /media/usb /proc/mounts | awk '{ print $2 }' | while read -r MNTPATH; do + +# show an OSD display +if [ -x /usr/bin/osd_cat ]; then + echo "Unmounting USB..." | DISPLAY=:0 /usr/bin/osd_cat -A center -p top -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c green -s 5 -d 20 & +fi + +# umount all stuff including bind mounts +grep "/media/usb" /proc/mounts | awk '{ print $2 }' | while read -r MNTPATH; do /bin/umount "${MNTPATH}" done -grep /usbmount /proc/mounts | awk '{ print $2 }' | while read -r BINDPATH; do +grep "/usbmount" /proc/mounts | awk '{ print $2 }' | while read -r BINDPATH; do /bin/umount "${BINDPATH}" /bin/rmdir "${BINDPATH}" done + +# check if umount worked fine +if [ -x /usr/bin/osd_cat ]; then + if ! grep -q -m1 "/media/usb" /proc/mounts 2>/dev/null && + ! grep -q -m1 "/usbmount" /proc/mounts 2>/dev/null; then + RESULT="OK" + POS=180 + COLOR=green + else + RESULT="FAIL" + POS=200 + COLOR=red + fi + echo "${RESULT}" | DISPLAY=:0 /usr/bin/osd_cat -A center -p top -i ${POS} -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c ${COLOR} -s 5 -d 2 + pkill osd_cat +fi diff --git a/buildroot-external/rootfs-overlay/etc/hotkeyd.conf b/buildroot-external/rootfs-overlay/etc/hotkeyd.conf index 3f1ef62..0c0da67 100644 --- a/buildroot-external/rootfs-overlay/etc/hotkeyd.conf +++ b/buildroot-external/rootfs-overlay/etc/hotkeyd.conf @@ -29,19 +29,19 @@ CUT /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Shift_L key Delete 'k UNDO /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Control_L key z keyup Control_L" & # audo control hotkeys -VOLUMEUP /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%" & -VOLUMEDOWN /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%" & -MUTE /bin/su - truser -c "/usr/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle" & -MICMUTE /bin/su - truser -c "/usr/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle" & -LEFTALT+KPPLUS /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%" & -RIGHTALT+KPPLUS /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ +5%" & -LEFTALT+KPMINUS /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%" & -RIGHTALT+KPMINUS /bin/su - truser -c "/usr/bin/pactl set-sink-volume @DEFAULT_SINK@ -5%" & -LEFTALT+KPASTERISK /bin/su - truser -c "/usr/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle" & -RIGHTALT+KPASTERISK /bin/su - truser -c "/usr/bin/pactl set-sink-mute @DEFAULT_SINK@ toggle" & -LEFTSHIFT+KPPLUS /bin/su - truser -c "/usr/bin/pactl set-source-volume @DEFAULT_SOURCE@ +5%" & -RIGHTSHIFT+KPPLUS /bin/su - truser -c "/usr/bin/pactl set-source-volume @DEFAULT_SOURCE@ +5%" & -LEFTSHIFT+KPMINUS /bin/su - truser -c "/usr/bin/pactl set-source-volume @DEFAULT_SOURCE@ -5%" & -RIGHTSHIFT+KPMINUS /bin/su - truser -c "/usr/bin/pactl set-source-volume @DEFAULT_SOURCE@ -5%" & -LEFTSHIFT+KPASTERISK /bin/su - truser -c "/usr/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle" & -RIGHTSHIFT+KPASTERISK /bin/su - truser -c "/usr/bin/pactl set-source-mute @DEFAULT_SOURCE@ toggle" & +VOLUMEUP /bin/pa-volume-control.sh speaker +5% & +VOLUMEDOWN /bin/pa-volume-control.sh speaker -5% & +MUTE /bin/pa-volume-control.sh speaker toggle & +MICMUTE /bin/pa-volume-control.sh mic toggle & +LEFTALT+KPPLUS /bin/pa-volume-control.sh speaker +5% & +RIGHTALT+KPPLUS /bin/pa-volume-control.sh speaker +5% & +LEFTALT+KPMINUS /bin/pa-volume-control.sh speaker -5% & +RIGHTALT+KPMINUS /bin/pa-volume-control.sh speaker -5% & +LEFTALT+KPASTERISK /bin/pa-volume-control.sh speaker toggle & +RIGHTALT+KPASTERISK /bin/pa-volume-control.sh speaker toggle & +LEFTSHIFT+KPPLUS /bin/pa-volume-control.sh mic +5% & +RIGHTSHIFT+KPPLUS /bin/pa-volume-control.sh mic +5% & +LEFTSHIFT+KPMINUS /bin/pa-volume-control.sh mic -5% & +RIGHTSHIFT+KPMINUS /bin/pa-volume-control.sh mic -5% & +LEFTSHIFT+KPASTERISK /bin/pa-volume-control.sh mic toggle & +RIGHTSHIFT+KPASTERISK /bin/pa-volume-control.sh mic toggle & diff --git a/buildroot-external/rootfs-overlay/etc/usbmount/mount.d/00_create_model_symlink b/buildroot-external/rootfs-overlay/etc/usbmount/mount.d/00_create_model_symlink index ed6b56c..2a7e19d 100755 --- a/buildroot-external/rootfs-overlay/etc/usbmount/mount.d/00_create_model_symlink +++ b/buildroot-external/rootfs-overlay/etc/usbmount/mount.d/00_create_model_symlink @@ -38,4 +38,11 @@ fi # If the symlink does not yet exist, create it. test -e "/var/run/usbmount/${name}" || (mkdir "/var/run/usbmount/${name}"; mount --bind "${UM_MOUNTPOINT}" "/var/run/usbmount/${name}") +if [ -x /usr/bin/osd_cat ]; then + export LANG=en_US.UTF-8 + export DISPLAY=:0 + COLOR=green + echo "Mounted USB: '${name}'..." | /usr/bin/osd_cat -A center -p top -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c ${COLOR} -s 5 -d 3 +fi + exit 0 diff --git a/buildroot-external/rootfs-overlay/etc/usbmount/umount.d/00_remove_model_symlink b/buildroot-external/rootfs-overlay/etc/usbmount/umount.d/00_remove_model_symlink index 5f2c9a5..31e1db2 100755 --- a/buildroot-external/rootfs-overlay/etc/usbmount/umount.d/00_remove_model_symlink +++ b/buildroot-external/rootfs-overlay/etc/usbmount/umount.d/00_remove_model_symlink @@ -21,4 +21,11 @@ if [ -n "${MOUNTNAME}" ]; then /bin/rmdir "${MOUNTNAME}" fi +if [ -x /usr/bin/osd_cat ]; then + export LANG=en_US.UTF-8 + export DISPLAY=:0 + COLOR=red + echo "Unclean USB eject: Press ALT+F10 next time!" | /usr/bin/osd_cat -A center -p top -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c ${COLOR} -s 5 -d 10 +fi + exit 0 From b668760bf53d119cb739496ad442b4e6e718f5a2 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 24 Sep 2025 14:24:49 +0200 Subject: [PATCH 212/247] set LANG and DISPLAY to fix osd_cat execution --- buildroot-external/rootfs-overlay/bin/umounter.sh | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/buildroot-external/rootfs-overlay/bin/umounter.sh b/buildroot-external/rootfs-overlay/bin/umounter.sh index c91ab66..2a198da 100755 --- a/buildroot-external/rootfs-overlay/bin/umounter.sh +++ b/buildroot-external/rootfs-overlay/bin/umounter.sh @@ -2,7 +2,9 @@ # show an OSD display if [ -x /usr/bin/osd_cat ]; then - echo "Unmounting USB..." | DISPLAY=:0 /usr/bin/osd_cat -A center -p top -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c green -s 5 -d 20 & + export LANG=en_US.UTF-8 + export DISPLAY=:0 + echo "Unmounting USB..." | /usr/bin/osd_cat -A center -p top -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c green -s 5 -d 20 & fi # umount all stuff including bind mounts @@ -26,6 +28,8 @@ if [ -x /usr/bin/osd_cat ]; then POS=200 COLOR=red fi - echo "${RESULT}" | DISPLAY=:0 /usr/bin/osd_cat -A center -p top -i ${POS} -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c ${COLOR} -s 5 -d 2 + export LANG=en_US.UTF-8 + export DISPLAY=:0 + echo "${RESULT}" | /usr/bin/osd_cat -A center -p top -i ${POS} -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c ${COLOR} -s 5 -d 2 pkill osd_cat fi From b5ca0ed18827d8defb7ab4d4729eba257a27ed61 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 24 Sep 2025 16:00:06 +0200 Subject: [PATCH 213/247] add new xkb-switch buildroot package to query the currently active X11 keyboard layout and display it if SCROLLLOCK is pressed which should now trigger hotkeyd to execute a display-kblayout.sh script showing an OSD. --- buildroot-external/Buildroot.config | 1 + buildroot-external/Config.in | 1 + .../package/xkb-switch/Config.in | 7 +++++++ .../package/xkb-switch/xkb-switch.hash | 1 + .../package/xkb-switch/xkb-switch.mk | 20 +++++++++++++++++++ .../rootfs-overlay/bin/display-kblayout.sh | 17 ++++++++++++++++ .../rootfs-overlay/etc/hotkeyd.conf | 3 +++ 7 files changed, 50 insertions(+) create mode 100644 buildroot-external/package/xkb-switch/Config.in create mode 100644 buildroot-external/package/xkb-switch/xkb-switch.hash create mode 100644 buildroot-external/package/xkb-switch/xkb-switch.mk create mode 100755 buildroot-external/rootfs-overlay/bin/display-kblayout.sh diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index c9927ff..fe61757 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -108,3 +108,4 @@ BR2_PACKAGE_HOTKEYD=y BR2_PACKAGE_NUMLOCKX=y BR2_PACKAGE_XPRINTIDLE=y BR2_PACKAGE_XOSD=y +BR2_PACKAGE_XKB_SWITCH=y diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in index 96c2272..0b470d7 100644 --- a/buildroot-external/Config.in +++ b/buildroot-external/Config.in @@ -17,4 +17,5 @@ menu "Additional software" source "$BR2_EXTERNAL_THINROOT_PATH/package/multilib32/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/yoe-kiosk-browser/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/xosd/Config.in" + source "$BR2_EXTERNAL_THINROOT_PATH/package/xkb-switch/Config.in" endmenu diff --git a/buildroot-external/package/xkb-switch/Config.in b/buildroot-external/package/xkb-switch/Config.in new file mode 100644 index 0000000..e6c7f22 --- /dev/null +++ b/buildroot-external/package/xkb-switch/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_XKB_SWITCH + bool "xkb-switch" + depends on BR2_PACKAGE_XORG7 + select BR2_PACKAGE_XLIB_LIBX11 + select BR2_PACKAGE_XLIB_LIBXKBFILE + help + CLI zum Abfragen/Umschalten des XKB-Layouts. diff --git a/buildroot-external/package/xkb-switch/xkb-switch.hash b/buildroot-external/package/xkb-switch/xkb-switch.hash new file mode 100644 index 0000000..04befc3 --- /dev/null +++ b/buildroot-external/package/xkb-switch/xkb-switch.hash @@ -0,0 +1 @@ +sha256 89e7cc64a3bfc481b0e341b79320de4f0adbdba49b551988fe4bf02f6ae9e003 xkb-switch-1.8.5.tar.gz diff --git a/buildroot-external/package/xkb-switch/xkb-switch.mk b/buildroot-external/package/xkb-switch/xkb-switch.mk new file mode 100644 index 0000000..273169c --- /dev/null +++ b/buildroot-external/package/xkb-switch/xkb-switch.mk @@ -0,0 +1,20 @@ +################################################################################ +# +# xkb-switch +# +################################################################################ + +XKB_SWITCH_VERSION = 1.8.5 +XKB_SWITCH_SITE = $(call github,sergei-mironov,xkb-switch,$(XKB_SWITCH_VERSION)) +XKB_SWITCH_LICENSE = MIT +XKB_SWITCH_LICENSE_FILES = COPYING + +XKB_SWITCH_DEPENDENCIES = xlib_libX11 xlib_libxkbfile +XKB_SWITCH_CONF_OPTS = \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_BINDIR=bin \ + -DCMAKE_INSTALL_LIBDIR=lib \ + -DCMAKE_INSTALL_MANDIR=share/man + +$(eval $(cmake-package)) diff --git a/buildroot-external/rootfs-overlay/bin/display-kblayout.sh b/buildroot-external/rootfs-overlay/bin/display-kblayout.sh new file mode 100755 index 0000000..1ff5489 --- /dev/null +++ b/buildroot-external/rootfs-overlay/bin/display-kblayout.sh @@ -0,0 +1,17 @@ +#!/bin/sh +# +# Script to query and display the current keyboard layout +# on the display via a OSD call +# + +if [ -x /usr/bin/osd_cat ]; then + export LANG=en_US.UTF-8 + export DISPLAY=:0 + KBLAYOUT=$(/usr/bin/xkb-switch -p | awk -F'[(]' '{print toupper($1)}') + if [ -n "${KBLAYOUT}" ]; then + # kill previous osd_cat + pkill /usr/bin/osd_cat + COLOR=orange + echo "Keyboard layout: ${KBLAYOUT}" | /usr/bin/osd_cat -A center -p top -f '-*-fixed-bold-r-*-*-30-*-*-*-*-*-*-*' -c "${COLOR}" -s 5 -d 3 & + fi +fi diff --git a/buildroot-external/rootfs-overlay/etc/hotkeyd.conf b/buildroot-external/rootfs-overlay/etc/hotkeyd.conf index 0c0da67..3e19614 100644 --- a/buildroot-external/rootfs-overlay/etc/hotkeyd.conf +++ b/buildroot-external/rootfs-overlay/etc/hotkeyd.conf @@ -22,6 +22,9 @@ RIGHTALT+F10 /bin/umounter.sh & LEFTALT+FN+F10 /bin/umounter.sh & RIGHTALT+FN+F10 /bin/umounter.sh & +# scrolllock keyboard language OSD +SCROLLLOCK /bin/display-kblayout.sh & + # SUN keyboard settings COPY /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Control_L key Insert keyup Control_L" & PASTE /bin/su - truser -c "DISPLAY=:0.0 /bin/xdotool keydown Shift_L key Insert keyup Shift_L" & From 69a7e2046de4b97e9f0486b2a73a8d49d5ed25a5 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 7 Oct 2025 15:06:49 +0200 Subject: [PATCH 214/247] add CONFIG_X86_X2APIC to kernel config since this might be required by some newer x86 boards. --- buildroot-external/board/generic-x86_64/kernel.config | 1 + 1 file changed, 1 insertion(+) diff --git a/buildroot-external/board/generic-x86_64/kernel.config b/buildroot-external/board/generic-x86_64/kernel.config index 9f015e4..63e1036 100644 --- a/buildroot-external/board/generic-x86_64/kernel.config +++ b/buildroot-external/board/generic-x86_64/kernel.config @@ -37,6 +37,7 @@ CONFIG_MMC_SDHCI_ACPI=y CONFIG_MMC_SDHCI_PCI=y CONFIG_MMC_REALTEK_PCI=m CONFIG_MMC_REALTEK_USB=m +CONFIG_X86_X2APIC=y CONFIG_X86_INTEL_LPSS=y CONFIG_MISC_RTSX_PCI=m From 896fe7ea9dabb56f54b8cbbc954f48f7fd168d29 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Tue, 7 Oct 2025 15:08:07 +0200 Subject: [PATCH 215/247] bump upstream kernel to 6.12.51 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 4167eec..b844f71 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.48" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.51" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 6bad0bb..5ce8df9 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -9,7 +9,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.48" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.51" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index 96168f4..e3f3920 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 5bf9eb676751bf48978e38363c772298b41a75336d5038ed6d37012399471db2 linux-6.12.48.tar.xz +sha256 2d55ad149ca7d9ef82595c669430650030cbf9afbbeb42e5cd9b4ba3cc1a7221 linux-6.12.51.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index 96168f4..e3f3920 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 5bf9eb676751bf48978e38363c772298b41a75336d5038ed6d37012399471db2 linux-6.12.48.tar.xz +sha256 2d55ad149ca7d9ef82595c669430650030cbf9afbbeb42e5cd9b4ba3cc1a7221 linux-6.12.51.tar.xz From 18c86255cd96da0431c8bbc32bc2640096131178 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 8 Oct 2025 09:24:46 +0200 Subject: [PATCH 216/247] add missing CONFIG_IRQ_REMAP to get X2APIC compiled in. --- buildroot-external/board/generic-x86_64/kernel.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/buildroot-external/board/generic-x86_64/kernel.config b/buildroot-external/board/generic-x86_64/kernel.config index 63e1036..a2cd499 100644 --- a/buildroot-external/board/generic-x86_64/kernel.config +++ b/buildroot-external/board/generic-x86_64/kernel.config @@ -172,6 +172,9 @@ CONFIG_SPI_DLN2=m CONFIG_GPIO_DLN2=m CONFIG_MFD_DLN2=m +# Required for some PCIe devices such as ath12k +CONFIG_IRQ_REMAP=y + CONFIG_HW_RANDOM_AMD=y CONFIG_HW_RANDOM_INTEL=y CONFIG_HW_RANDOM_TPM=y From 32912b81516fec4848d64834020ee9aa245a53e5 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 8 Oct 2025 13:52:01 +0200 Subject: [PATCH 217/247] add AMD and intel microcode files --- buildroot-external/configs/generic-x86_64.config | 3 +++ 1 file changed, 3 insertions(+) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index b844f71..2ad6238 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -25,6 +25,9 @@ BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265=y BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_9XXX=y BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_QUZ=y BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y +BR2_PACKAGE_LINUX_FIRMWARE_AMD_UCODE=y +BR2_PACKAGE_INTEL_MICROCODE=y +BR2_PACKAGE_INTEL_MICROCODE_INSTALL_TARGET=y BR2_PACKAGE_LIBDRM_RADEON=y BR2_PACKAGE_LIBDRM_AMDGPU=y BR2_PACKAGE_BLUEZ5_UTILS=y From 1228b4e3f15764d788343aed73e58564e406d8e7 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 9 Oct 2025 13:49:04 +0200 Subject: [PATCH 218/247] add linux-ucode.fragment generation code to external.mk to ensure CONFIG_EXTRA_FIRMWARE and CONFIG_EXTRA_FIRMWARE_DIR are put into a dedicated kconfig fragment file so that microcodes will be directly embeded into the kernel image for being able to update them as early as possible. In addition, we also ensure that the microcode files will not be part of the target directories since they are embedded into the kernel instead. --- .../board/generic-x86_64/post-build.sh | 4 ++++ .../configs/generic-x86_64.config | 1 - buildroot-external/external.mk | 23 +++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/buildroot-external/board/generic-x86_64/post-build.sh b/buildroot-external/board/generic-x86_64/post-build.sh index 57a9176..eba9dc3 100755 --- a/buildroot-external/board/generic-x86_64/post-build.sh +++ b/buildroot-external/board/generic-x86_64/post-build.sh @@ -20,3 +20,7 @@ rm -f "${TARGET_DIR}/etc/init.d/fuse3" # remove unnecessary /usr/share/clc rm -rf "${TARGET_DIR}/usr/share/clc" + +# remove unnecessary /lib/firmware stuff +rm -rf "${TARGET_DIR}/lib/firmware/intel-ucode" +rm -rf "${TARGET_DIR}/lib/firmware/amd-ucode" diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index 2ad6238..b5dcabf 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -27,7 +27,6 @@ BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_QUZ=y BR2_PACKAGE_LINUX_FIRMWARE_RTL_8169=y BR2_PACKAGE_LINUX_FIRMWARE_AMD_UCODE=y BR2_PACKAGE_INTEL_MICROCODE=y -BR2_PACKAGE_INTEL_MICROCODE_INSTALL_TARGET=y BR2_PACKAGE_LIBDRM_RADEON=y BR2_PACKAGE_LIBDRM_AMDGPU=y BR2_PACKAGE_BLUEZ5_UTILS=y diff --git a/buildroot-external/external.mk b/buildroot-external/external.mk index cf0290f..49d21cb 100644 --- a/buildroot-external/external.mk +++ b/buildroot-external/external.mk @@ -10,3 +10,26 @@ linux-check-dotconfig: linux-check-configuration-done --src-kconfig $(LINUX_SRCDIR)Kconfig \ --actual-config $(LINUX_SRCDIR).config \ $(shell echo $(BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE) $(BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES)) + +# if cpu microcode is required we embed it into the kernel build +ifeq ($(or $(BR2_PACKAGE_INTEL_MICROCODE),$(BR2_PACKAGE_LINUX_FIRMWARE_AMD_UCODE)),y) + +UCODE_FRAG := $(BINARIES_DIR)/linux-ucode.fragment + +# Hook: vor der Kernelkonfiguration Fragment erzeugen +define GEN_UCODE_FRAGMENT + @echo ">> Generating $(UCODE_FRAG)" + @mkdir -p $(BINARIES_DIR) + @{ \ + echo 'CONFIG_EXTRA_FIRMWARE_DIR="$(BINARIES_DIR)"'; \ + printf 'CONFIG_EXTRA_FIRMWARE="'; \ + ( cd $(BINARIES_DIR) 2>/dev/null && \ + find intel-ucode amd-ucode -type f \! -name "*README*" \! -name "*.asc" -printf '%p ' 2>/dev/null || true ); \ + echo '"'; \ + } > $(UCODE_FRAG) +endef + +LINUX_PRE_PATCH_HOOKS += GEN_UCODE_FRAGMENT +LINUX_KCONFIG_FRAGMENT_FILES += $(UCODE_FRAG) + +endif From 2f4ffc259f817509bc3dd5bdc1aaf925069aa281 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sat, 18 Oct 2025 15:13:27 +0200 Subject: [PATCH 219/247] bump buildroot to 2025.08.1 --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 600f4f2..694c800 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -BUILDROOT_VERSION=2025.08 -BUILDROOT_SHA256=b8310af16ddd28de15cf24384464be844f858abead9111d41100f82fe4362274 +BUILDROOT_VERSION=2025.08.1 +BUILDROOT_SHA256=6a7542c4738da3efc25bdef9a68dabf7c45d74cb5cbf79039d2bbe0ef885ee7f BUILDROOT_EXTERNAL=buildroot-external DEFCONFIG_DIR=$(BUILDROOT_EXTERNAL)/configs DATE=$(shell date +%Y%m%d) From 01ee2bd1c0c81be0e29264c5de178e7b9a4dd590 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sat, 18 Oct 2025 15:14:05 +0200 Subject: [PATCH 220/247] bump upstream kernel to 6.12.53 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index b5dcabf..f5e6f2c 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.51" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.53" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 5ce8df9..8c2c836 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -9,7 +9,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.51" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.53" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index e3f3920..4c34ee7 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 2d55ad149ca7d9ef82595c669430650030cbf9afbbeb42e5cd9b4ba3cc1a7221 linux-6.12.51.tar.xz +sha256 663507accae673afcf4e210b4ae8d4352e61d926202e5da3f04bf71ca1d2c0b5 linux-6.12.53.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index e3f3920..4c34ee7 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 2d55ad149ca7d9ef82595c669430650030cbf9afbbeb42e5cd9b4ba3cc1a7221 linux-6.12.51.tar.xz +sha256 663507accae673afcf4e210b4ae8d4352e61d926202e5da3f04bf71ca1d2c0b5 linux-6.12.53.tar.xz From 9072441ca5bee3d0987d3240bb22f2967cf023e4 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 16 Jan 2026 16:53:02 +0100 Subject: [PATCH 221/247] we have to enable user namespaces and change setup in sysctl.conf for CONFIG_USER_NS to work correctly. This is required for the chrome sandbox to work correctly when potentially using a Zoom-Client. --- buildroot-external/kernel/6.12/global.config | 3 +++ buildroot-external/rootfs-overlay/etc/sysctl.conf | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/buildroot-external/kernel/6.12/global.config b/buildroot-external/kernel/6.12/global.config index bc34269..8c07491 100644 --- a/buildroot-external/kernel/6.12/global.config +++ b/buildroot-external/kernel/6.12/global.config @@ -380,3 +380,6 @@ CONFIG_ACPI_APEI_GHES=y # enable firmware compression CONFIG_FW_LOADER_COMPRESS=y CONFIG_FW_LOADER_COMPRESS_ZSTD=y + +# enable USER_NS +CONFIG_USER_NS=y diff --git a/buildroot-external/rootfs-overlay/etc/sysctl.conf b/buildroot-external/rootfs-overlay/etc/sysctl.conf index d16adc4..ab4d70e 100644 --- a/buildroot-external/rootfs-overlay/etc/sysctl.conf +++ b/buildroot-external/rootfs-overlay/etc/sysctl.conf @@ -10,8 +10,8 @@ kernel.perf_event_paranoid = 3 # Avoid non-ancestor ptrace access to running processes and their credentials. kernel.yama.ptrace_scope = 1 -# Disable User Namespaces, as it opens up a large attack surface to unprivileged users. -user.max_user_namespaces = 0 +# Enable User Namespaces for sanboxing applications like chrome, etc. +user.max_user_namespaces = 15000 # increase netfilter conntrack maximum hash table size to 256K net.netfilter.nf_conntrack_buckets = 65536 From 4a3ee38afeb6f0705c3a8969b0316287bfbbf380 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 16 Jan 2026 16:54:14 +0100 Subject: [PATCH 222/247] switch iris driver setup to DRI 3 to work correctly and setup our X11 with proper hardware-accelerated GLX support. --- .../rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf index 9748b4d..ce2ce69 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf @@ -1,6 +1,5 @@ Section "Device" - Identifier "Intel Graphics" - Driver "intel" - Option "AccelMethod" "sna" - Option "DRI" "iris" + Identifier "Intel Graphics" + Driver "intel" + Option "DRI" "3" EndSection From 1d85cfa9559c719953f49765780e9fbd880e9a33 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 16 Jan 2026 16:55:01 +0100 Subject: [PATCH 223/247] switch from obsolete SWRAST to LLVMPIPE, enable PIPEWIRE package support and also add two X11 debug packages for being able to debug potential GLX support issues. --- buildroot-external/Buildroot.config | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index fe61757..c7a7489 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -53,7 +53,7 @@ BR2_PACKAGE_LIBERATION=y BR2_PACKAGE_LIBDRM=y BR2_PACKAGE_MESA3D=y BR2_PACKAGE_MESA3D_LLVM=y -BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_SWRAST=y +BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_LLVMPIPE=y BR2_PACKAGE_MESA3D_OPENGL_GLX=y BR2_PACKAGE_MESA3D_OPENGL_EGL=y BR2_PACKAGE_MESA3D_OPENGL_ES=y @@ -109,3 +109,8 @@ BR2_PACKAGE_NUMLOCKX=y BR2_PACKAGE_XPRINTIDLE=y BR2_PACKAGE_XOSD=y BR2_PACKAGE_XKB_SWITCH=y +BR2_PACKAGE_PIPEWIRE=y + +# X11 debug +BR2_PACKAGE_XAPP_XDPYINFO=y +BR2_PACKAGE_MESA3D_DEMOS=y From 3eec88345616673db04e4ef7cd78a1afe4d22bc3 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 16 Jan 2026 23:20:58 +0100 Subject: [PATCH 224/247] bump buildroot to 2025.08.2 --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 694c800..e530ee2 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -BUILDROOT_VERSION=2025.08.1 -BUILDROOT_SHA256=6a7542c4738da3efc25bdef9a68dabf7c45d74cb5cbf79039d2bbe0ef885ee7f +BUILDROOT_VERSION=2025.08.2 +BUILDROOT_SHA256=1a30eca6d4cac375c6c57134d7df6c3a944a1875ebc4d8ca3b13aad9ad682cbc BUILDROOT_EXTERNAL=buildroot-external DEFCONFIG_DIR=$(BUILDROOT_EXTERNAL)/configs DATE=$(shell date +%Y%m%d) From ca44ed070fb0ad5c0b85cd5d4c3df64cb0a9629f Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 16 Jan 2026 23:21:28 +0100 Subject: [PATCH 225/247] bump upstream kernel to 6.12.65 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index f5e6f2c..ed89bf8 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.53" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.65" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 8c2c836..77d68e6 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -9,7 +9,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.53" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.65" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index 4c34ee7..ce1cafe 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 663507accae673afcf4e210b4ae8d4352e61d926202e5da3f04bf71ca1d2c0b5 linux-6.12.53.tar.xz +sha256 54e852667af35c0ed06cfc81311e65fa7f5f798a3bfcf78a559d3b4785a139c1 linux-6.12.65.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index 4c34ee7..ce1cafe 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 663507accae673afcf4e210b4ae8d4352e61d926202e5da3f04bf71ca1d2c0b5 linux-6.12.53.tar.xz +sha256 54e852667af35c0ed06cfc81311e65fa7f5f798a3bfcf78a559d3b4785a139c1 linux-6.12.65.tar.xz From 19934917a49247a2dce5ae645fbd55d3be2a6c62 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 16 Jan 2026 23:40:44 +0100 Subject: [PATCH 226/247] enable glamoregl X11 module and switch to modesetting driver --- .../rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf | 1 + .../rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf index 6043d56..31add83 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf @@ -8,4 +8,5 @@ Section "Module" Load "shadow" Load "shadowfb" Load "exa" + Load "glamoregl" EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf index ce2ce69..e5b3e4e 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/20-intel.conf @@ -1,5 +1,5 @@ Section "Device" Identifier "Intel Graphics" - Driver "intel" - Option "DRI" "3" + Driver "modesetting" + Option "AccelMethod" "glamor" EndSection From 820f60435c67f8b118669a7e0c5ef57c78962849 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sat, 17 Jan 2026 21:34:25 +0100 Subject: [PATCH 227/247] bump buildroot to 2025.08.3 --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index e530ee2..26a791b 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -BUILDROOT_VERSION=2025.08.2 -BUILDROOT_SHA256=1a30eca6d4cac375c6c57134d7df6c3a944a1875ebc4d8ca3b13aad9ad682cbc +BUILDROOT_VERSION=2025.08.3 +BUILDROOT_SHA256=384cf97708463f7b7f0c4fab56c1666f5710dd1e0509a489589ae3763a1d1759 BUILDROOT_EXTERNAL=buildroot-external DEFCONFIG_DIR=$(BUILDROOT_EXTERNAL)/configs DATE=$(shell date +%Y%m%d) From c50059b7ea2b028fb5237571825cc9a3cc640a77 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sat, 17 Jan 2026 21:41:36 +0100 Subject: [PATCH 228/247] make sure not to select internal microphones and just external ones including ones provided by a webcam --- .../rootfs-overlay/bin/pa-update-default-sink.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/buildroot-external/rootfs-overlay/bin/pa-update-default-sink.sh b/buildroot-external/rootfs-overlay/bin/pa-update-default-sink.sh index fad1feb..3186a45 100755 --- a/buildroot-external/rootfs-overlay/bin/pa-update-default-sink.sh +++ b/buildroot-external/rootfs-overlay/bin/pa-update-default-sink.sh @@ -39,7 +39,7 @@ getSourceName() numsrcs=$(pactl list short sources | awk '{ print $1 }') for i in ${numsrcs}; do srcinfo=$(echo "${painfo}" | sed -n "/^Source #${i}$/,/Formats:/p") - searchres=$(echo "${srcinfo}" | grep -e "${pattern}") + searchres=$(echo "${srcinfo}" | grep -e "${pattern}" | grep -vi 'internal' | grep -vi 'not available') if [ -n "${searchres}" ]; then # output the src name echo "${painfo}" | sed -n "/^Source #${i}$/,/Formats:/p" | grep "Name: " | awk '{ print $2 }' @@ -133,7 +133,8 @@ painfo=$(pactl list sources) srcname="" # check for a microphone first -if echo "${painfo}" | grep -e "Microphone.*priority" | grep -qv 'not available'; then +MICS=$(echo "${painfo}" | grep -e "Microphone.*priority" | grep -vi 'internal' | grep -vi 'not available') +if [ -n "${MICS}" ]; then # microphone is plugged in and available, lets find out the sink name srcname=$(getSourceName "Microphone.*priority") From 306b852fb46abb45265ed53111d3fd113352c59d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 09:50:23 +0100 Subject: [PATCH 229/247] Bump actions/checkout from 5 to 6 (#47) Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 6 +++--- .github/workflows/snapshot.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bc4d8a2..9a3329b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,7 +36,7 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Check shell scripts uses: ludeeus/action-shellcheck@2.0.0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7292ef6..a5b6f62 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -33,7 +33,7 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 0 @@ -112,7 +112,7 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install Dependencies run: | @@ -229,7 +229,7 @@ jobs: needs: [release_draft, build] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 # download all artifact files - name: Download all workflow artifacts diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index b9e5941..5414d21 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -22,7 +22,7 @@ jobs: name: Check for Changes runs-on: ubuntu-24.04 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - id: commit-check run: echo "has-commits=$(git --no-pager log --pretty='format:%an' --since='24 hours ago' | grep -v github-actions | wc -l)" >> $GITHUB_OUTPUT outputs: @@ -47,7 +47,7 @@ jobs: steps: - name: Checkout Code - uses: actions/checkout@v5 + uses: actions/checkout@v6 - name: Install Dependencies run: | From 283ca85fe43ac27091ec4d08ba827ed8e3b4adbe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 09:50:43 +0100 Subject: [PATCH 230/247] Bump actions/upload-artifact from 4 to 6 (#48) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 6. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v4...v6) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 4 ++-- .github/workflows/snapshot.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a5b6f62..c7b73c3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -89,7 +89,7 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} - name: Upload release-template.md artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: path: /tmp/release-template.md name: release-template.md @@ -208,7 +208,7 @@ jobs: ####################### # manifest file artifact upload - name: Upload manifest artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: path: release/thinroot-${{ needs.release_draft.outputs.version }}-${{ matrix.platform }}.mf name: thinroot-${{ needs.release_draft.outputs.version }}-${{ matrix.platform }}.mf diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index 5414d21..f5dca7e 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -104,7 +104,7 @@ jobs: ######################## # upload build artifacts - name: Upload build artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: path: release/thinroot-${{ env.VERSION }}-${{ matrix.platform }}* name: thinroot-${{ env.VERSION }}-${{ env.GITHUB_SHA7 }}-${{ matrix.platform }} From e7a6ad3647cce35ff7edc54ba39aedc05af69cc4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 18 Jan 2026 09:50:59 +0100 Subject: [PATCH 231/247] Bump actions/download-artifact from 5 to 7 (#49) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 5 to 7. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v5...v7) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c7b73c3..5819f0c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -233,7 +233,7 @@ jobs: # download all artifact files - name: Download all workflow artifacts - uses: actions/download-artifact@v5 + uses: actions/download-artifact@v7 - name: Patch release draft shell: bash From f82c44d89cefc32abf38e4f2510605ceea376ac7 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sun, 18 Jan 2026 18:47:38 +0100 Subject: [PATCH 232/247] bump buildroot to 2025.11 and remove 0022-python-glslang-downgrade upstream patch as not required anymore. --- Makefile | 4 +- buildroot-patches/0002-linux-firmware.patch | 132 ++------- .../package/linux-firmware/Config.in | 174 +++++++++-- .../package/linux-firmware/Config.in.orig | 162 +++++++++- .../package/linux-firmware/linux-firmware.mk | 276 ++++++++++++------ .../linux-firmware/linux-firmware.mk.orig | 225 +++++++++++--- .../0022-python-glslang-downgrade.patch | 18 -- .../python-glslang/python-glslang.hash | 3 - .../python-glslang/python-glslang.hash.orig | 3 - .../package/python-glslang/python-glslang.mk | 17 -- .../python-glslang/python-glslang.mk.orig | 17 -- 11 files changed, 712 insertions(+), 319 deletions(-) delete mode 100644 buildroot-patches/0022-python-glslang-downgrade.patch delete mode 100644 buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash delete mode 100644 buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash.orig delete mode 100644 buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk delete mode 100644 buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk.orig diff --git a/Makefile b/Makefile index 26a791b..5e216ef 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -BUILDROOT_VERSION=2025.08.3 -BUILDROOT_SHA256=384cf97708463f7b7f0c4fab56c1666f5710dd1e0509a489589ae3763a1d1759 +BUILDROOT_VERSION=2025.11 +BUILDROOT_SHA256=50062bfb50d3bae686daddd90885b02de018c1abf36034e0637bffdca28d9b98 BUILDROOT_EXTERNAL=buildroot-external DEFCONFIG_DIR=$(BUILDROOT_EXTERNAL)/configs DATE=$(shell date +%Y%m%d) diff --git a/buildroot-patches/0002-linux-firmware.patch b/buildroot-patches/0002-linux-firmware.patch index 8d123e1..91ed7ec 100644 --- a/buildroot-patches/0002-linux-firmware.patch +++ b/buildroot-patches/0002-linux-firmware.patch @@ -33,40 +33,6 @@ menu "Audio firmware" config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_SST_DSP -@@ -64,6 +90,16 @@ - Firmware files for Intel 3160/7260/7265/8260/8265 Wireless - bluetooth support. - -+config BR2_PACKAGE_LINUX_FIRMWARE_MT7921_BT -+ bool "MediaTek MT7921" -+ help -+ Firmware files for MediaTek MT7921 bluetooth support -+ -+config BR2_PACKAGE_LINUX_FIRMWARE_MT7922_BT -+ bool "MediaTek MT7922" -+ help -+ Firmware files for MediaTek MT7922 bluetooth support -+ - config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7650 - bool "MediaTek MT7650" - help -@@ -400,6 +436,16 @@ - - config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7921 - bool "MediaTek MT7921" -+ help -+ MediaTek MT7921 -+ -+config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922 -+ bool "MediaTek MT7922" -+ help -+ MediaTek MT7922 -+ -+config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7921 -+ bool "MediaTek MT7921" - help - MediaTek MT7921 - --- buildroot/package/linux-firmware/linux-firmware.mk.orig +++ buildroot/package/linux-firmware/linux-firmware.mk @@ -9,6 +9,19 @@ @@ -89,90 +55,38 @@ # Intel SST DSP ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_SST_DSP),y) LINUX_FIRMWARE_FILES += intel/fw_sst_0f28.bin-48kHz_i2s_master -@@ -63,6 +76,18 @@ - LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ibt_firmware - endif - -+# Mediatek MT7921 Bluetooth -+ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MT7921_BT),y) -+LINUX_FIRMWARE_FILES += mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin -+LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek -+endif -+ -+# Mediatek MT7922 Bluetooth -+ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MT7922_BT),y) -+LINUX_FIRMWARE_FILES += mediatek/BT_RAM_CODE_MT7922_1_1_hdr.bin -+LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek -+endif -+ - # Qualcomm Atheros Rome 6174A Bluetooth - ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174A_BT),y) - LINUX_FIRMWARE_FILES += qca/rampatch_usb_00000302.bin qca/nvm_usb_00000302.bin -@@ -183,6 +208,13 @@ - LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt - endif - -+# rtw89 -+ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_RTW89),y) -+LINUX_FIRMWARE_FILES += \ -+ rtw89/rtw*.bin -+LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt -+endif -+ - # ar3011 - ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_AR3011),y) - LINUX_FIRMWARE_FILES += ath3k-1.fw -@@ -413,6 +445,20 @@ - LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek - endif - -+# MT7921 -+ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7921),y) -+LINUX_FIRMWARE_FILES += mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin \ -+ mediatek/WIFI_RAM_CODE_MT7961_1.bin -+LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek -+endif -+ -+# MT7922 -+ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922),y) -+LINUX_FIRMWARE_FILES += mediatek/WIFI_MT7922_patch_mcu_1_1_hdr.bin \ -+ mediatek/WIFI_RAM_CODE_MT7922_1.bin -+LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek -+endif -+ - # qca6174 - ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174),y) - LINUX_FIRMWARE_FILES += ath10k/QCA6174 -@@ -487,12 +533,22 @@ +@@ -580,13 +593,23 @@ + LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif - ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22000),y) --LINUX_FIRMWARE_FILES += iwlwifi-QuZ-*.ucode iwlwifi-Qu-*.ucode +-ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22000),y) +-LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-QuZ-*.ucode intel/iwlwifi/iwlwifi-Qu-*.ucode -LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware -endif - -ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22260),y) --LINUX_FIRMWARE_FILES += iwlwifi-cc-a0-*.ucode +-LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-cc-a0-*.ucode ++ifneq ($(filter y,$(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22000) $(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22260)),) +LINUX_FIRMWARE_FILES += \ -+ iwlwifi-Qu-b0-hr-b0-72.ucode \ -+ iwlwifi-Qu-c0-hr-b0-72.ucode \ -+ iwlwifi-Qu-b0-jf-b0-72.ucode \ -+ iwlwifi-Qu-c0-jf-b0-72.ucode \ -+ iwlwifi-QuZ-a0-hr-b0-72.ucode \ -+ iwlwifi-QuZ-a0-jf-b0-72.ucode \ -+ iwlwifi-cc-a0-72.ucode \ -+ iwlwifi-so-a0-jf-b0-72.ucode \ -+ iwlwifi-so-a0-hr-b0-72.ucode \ -+ iwlwifi-so-a0-gf-a0-72.ucode \ -+ iwlwifi-so-a0-gf-a0.pnvm \ -+ iwlwifi-so-a0-gf4-a0-72.ucode \ -+ iwlwifi-so-a0-gf4-a0.pnvm \ -+ iwlwifi-ty-a0-gf-a0-72.ucode \ -+ iwlwifi-ty-a0-gf-a0.pnvm ++ intel/iwlwifi/iwlwifi-Qu-b0-hr-b0-72.ucode \ ++ intel/iwlwifi/iwlwifi-Qu-c0-hr-b0-72.ucode \ ++ intel/iwlwifi/iwlwifi-Qu-b0-jf-b0-72.ucode \ ++ intel/iwlwifi/iwlwifi-Qu-c0-jf-b0-72.ucode \ ++ intel/iwlwifi/iwlwifi-QuZ-a0-hr-b0-72.ucode \ ++ intel/iwlwifi/iwlwifi-QuZ-a0-jf-b0-72.ucode \ ++ intel/iwlwifi/iwlwifi-cc-a0-72.ucode \ ++ intel/iwlwifi/iwlwifi-so-a0-jf-b0-72.ucode \ ++ intel/iwlwifi/iwlwifi-so-a0-hr-b0-72.ucode \ ++ intel/iwlwifi/iwlwifi-so-a0-gf-a0-72.ucode \ ++ intel/iwlwifi/iwlwifi-so-a0-gf-a0.pnvm \ ++ intel/iwlwifi/iwlwifi-so-a0-gf4-a0-72.ucode \ ++ intel/iwlwifi/iwlwifi-so-a0-gf4-a0.pnvm \ ++ intel/iwlwifi/iwlwifi-ty-a0-gf-a0-72.ucode \ ++ intel/iwlwifi/iwlwifi-ty-a0-gf-a0.pnvm LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif -@@ -887,15 +943,34 @@ +@@ -1028,15 +1051,34 @@ # sure we canonicalize the pointed-to file, to cover the symlinks of the form # a/foo -> ../b/foo where a/ (the directory where to put the symlink) does # not yet exist. @@ -209,7 +123,7 @@ fi ; \ done endef -@@ -903,11 +978,22 @@ +@@ -1044,11 +1086,22 @@ endif # LINUX_FIRMWARE_FILES || LINUX_FIRMWARE_DIRS define LINUX_FIRMWARE_INSTALL_TARGET_CMDS diff --git a/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/Config.in b/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/Config.in index 3a88440..1a30670 100644 --- a/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/Config.in +++ b/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/Config.in @@ -43,6 +43,15 @@ config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_SST_DSP endmenu # Audio +menu "CPU Microcode" + +config BR2_PACKAGE_LINUX_FIRMWARE_AMD_UCODE + bool "amd-ucode" + help + Firmware blobs for AMD CPUs (amd-ucode). + +endmenu # CPU Microcode + menu "Video firmware" config BR2_PACKAGE_LINUX_FIRMWARE_AMDGPU @@ -50,11 +59,27 @@ config BR2_PACKAGE_LINUX_FIRMWARE_AMDGPU help Firmware files for AMD GPU video cards. +config BR2_PACKAGE_LINUX_FIRMWARE_CDNS_MHDP8546 + bool "Cadence MHDP8546" + help + Firmware file for the Cadence MHDP8546 DPI/DP bridge. + +config BR2_PACKAGE_LINUX_FIRMWARE_CNM_WAVE521C_K3_CODEC + bool "Chips&Media Wave 521C codec IP for K3" + help + Firmware files for the Chips&Media Wave521C decoder + needed by the Linux TI j721s2-wave521c driver. + config BR2_PACKAGE_LINUX_FIRMWARE_I915 bool "Intel i915 video card firmware" help Firmware files for the Intel i915 video cards. +config BR2_PACKAGE_LINUX_FIRMWARE_XE + bool "Intel Xe video card firmware" + help + Firmware files for the Intel Xe video cards. + config BR2_PACKAGE_LINUX_FIRMWARE_RADEON bool "AMD Radeon video card firmware" help @@ -87,18 +112,8 @@ config BR2_PACKAGE_LINUX_FIRMWARE_AMLOGIC config BR2_PACKAGE_LINUX_FIRMWARE_IBT bool "Intel Wireless Bluetooth" help - Firmware files for Intel 3160/7260/7265/8260/8265 Wireless - bluetooth support. - -config BR2_PACKAGE_LINUX_FIRMWARE_MT7921_BT - bool "MediaTek MT7921" - help - Firmware files for MediaTek MT7921 bluetooth support - -config BR2_PACKAGE_LINUX_FIRMWARE_MT7922_BT - bool "MediaTek MT7922" - help - Firmware files for MediaTek MT7922 bluetooth support + Firmware files for Intel 3160/7260/7265/8260/8265/9xxx/6E/7 + Wireless bluetooth support. config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7650 bool "MediaTek MT7650" @@ -115,6 +130,11 @@ config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922_BT help Firmware files for MediaTek MT7922 bluetooth support +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7925_BT + bool "MediaTek MT7925" + help + Firmware files for MediaTek MT7925 bluetooth support + config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174A_BT bool "Qualcomm Atheros Rome 6174A Bluetooth" help @@ -143,7 +163,7 @@ config BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX_BT config BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX_BT bool "Realtek 88xx Bluetooth" help - Realtek 8821a/8821c/8822b/8822cs/8822cu/8852au + Firmware files for Realtek Bluetooth modules 88xx. config BR2_PACKAGE_LINUX_FIRMWARE_TI_CC2560 bool "TI CC2560" @@ -231,6 +251,42 @@ config BR2_PACKAGE_LINUX_FIRMWARE_CYPRESS_CYW54XXX help Firmware files for the Cypress cyw54xxx FullMAC. +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_100 + bool "Intel iwlwifi 100" + help + Firmware files for the Intel Wifi 100 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_105 + bool "Intel iwlwifi 105" + help + Firmware files for the Intel Wifi 105 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_135 + bool "Intel iwlwifi 135" + help + Firmware files for the Intel Wifi 135 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_1000 + bool "Intel iwlwifi 1000" + help + Firmware files for the Intel Wifi 1000 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_2000 + bool "Intel iwlwifi 2000" + help + Firmware files for the Intel Wifi 2000 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_2030 + bool "Intel iwlwifi 2030" + help + Firmware files for the Intel Wifi 2030 devices supported by + the iwlwifi kernel driver. + config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22000 bool "Intel iwlwifi 22000" help @@ -330,6 +386,12 @@ config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6E Firmware files for the Intel Wi-Fi 6 and Wi-Fi 6E devices supported by the iwlwifi kernel driver. +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7 + bool "Intel iwlwifi 7" + help + Firmware files for the Intel Wi-Fi 7 (BE20x) devices + supported by the iwlwifi kernel driver. + config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_QUZ bool "Intel iwlwifi QuZ" help @@ -444,21 +506,33 @@ config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922 help MediaTek MT7922 -config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7921 - bool "MediaTek MT7921" +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7925 + bool "MediaTek MT7925" help - MediaTek MT7921 + MediaTek MT7925 -config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922 - bool "MediaTek MT7922" +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7986 + bool "MediaTek MT7986 SOC WiFi" help - MediaTek MT7922 + MediaTek MT7986 SOC WiFi config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174 bool "Qualcomm Atheros 6174" help Firmware files for the Qualcomm Atheros QCA6174 chip +config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_QCN9274 + bool "Qualcomm QCN9274" + help + Firmware files for the Qualcomm 802.11be QCN9274 chip + supported by the ath12k kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_WCN7850 + bool "Qualcomm WCN7850" + help + Firmware files for the Qualcomm 802.11be WCN7850 chip + supported by the ath12k kernel driver. + config BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61 bool "Ralink rt2501/rt61" help @@ -506,6 +580,11 @@ config BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9113 help Firmware files for WLAN and Bluetooth modules rs9113 +config BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9116 + bool "Redpine rs9116" + help + Firmware files for WLAN and Bluetooth modules rs9116 + config BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X bool "TI wl127x" help @@ -522,6 +601,11 @@ config BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX help Firmware files for WLAN and Bluetooth modules wl18xx +config BR2_PACKAGE_LINUX_FIRMWARE_TI_CC33XX + bool "TI cc33xx" + help + Firmware files for cc33xx WLAN and BLE family of chips + config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_WIL6210 bool "Qualcomm Atheros wil6210" help @@ -560,6 +644,12 @@ config BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5 Firmware files for Chelsio T5 1Gb and 10Gb ethernet cards (cxgb4) +config BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T6 + bool "Chelsio T6" + help + Firmware files for Chelsio T6 1/10/25/40/50/100 Gb ethernet + cards (cxgb4) + config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_E100 bool "Intel e100 825xx" help @@ -591,7 +681,7 @@ config BR2_PACKAGE_LINUX_FIRMWARE_QLOGIC_4X (qede) config BR2_PACKAGE_LINUX_FIRMWARE_RTL_815X - bool "Realtek 8152/8153/8156 USB Ethernet Adapaters" + bool "Realtek 8152/8153/8156 USB Ethernet Adapters" help Firmware files for Realtek 8152/8153/8156 based USB Ethernet adapters. @@ -683,6 +773,50 @@ config BR2_PACKAGE_LINUX_FIRMWARE_CX23885 Firmware files for Conexant Cx23885/7/8 PCIe broadcast A/V decoder needed by the Linux CX23885 driver. +config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_ATOMISP + bool "Intel AtomISP v2" + help + Firmware files for Intel AtomISP v2 (also know as IPU2) + needed by the Linux AtomISP v2 driver. + +endmenu + +menu "GPU Firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_ARM_MALI_CSF + bool "Arm Mali CSF firmware" + help + Firmware files for Arm Mali 10th generation GPU + needed by the linux panthor kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_POWERVR_ROGUE + bool "PowerVR Technologies Rogue GPU firmware" + help + Firmware files for PowerVR Technologies Rogue video cards. + +endmenu + +menu "Serial adapters firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_RP2 + bool "Comtrol RocketPort EXPRESS/INFINITY firmware" + help + Firmware files for the Comtrol RocketPort EXPRESS/INFINITY + needed by the Linux rp2 kernel driver. + +endmenu + +menu "NPU Firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_NPU + bool "Intel NPU firmware" + help + Firmware files for Intel NPU device. Intel NPU device is an + AI inference accelerator integrated with Intel client CPUs. + The full device name is Neural Processing Unit, but the + Linux kernel driver uses the older name Versatile Processing + Unit (VPU). + endmenu endif diff --git a/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/Config.in.orig b/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/Config.in.orig index 920c0a2..4a6eaa9 100644 --- a/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/Config.in.orig +++ b/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/Config.in.orig @@ -17,6 +17,15 @@ config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_SST_DSP endmenu # Audio +menu "CPU Microcode" + +config BR2_PACKAGE_LINUX_FIRMWARE_AMD_UCODE + bool "amd-ucode" + help + Firmware blobs for AMD CPUs (amd-ucode). + +endmenu # CPU Microcode + menu "Video firmware" config BR2_PACKAGE_LINUX_FIRMWARE_AMDGPU @@ -24,11 +33,27 @@ config BR2_PACKAGE_LINUX_FIRMWARE_AMDGPU help Firmware files for AMD GPU video cards. +config BR2_PACKAGE_LINUX_FIRMWARE_CDNS_MHDP8546 + bool "Cadence MHDP8546" + help + Firmware file for the Cadence MHDP8546 DPI/DP bridge. + +config BR2_PACKAGE_LINUX_FIRMWARE_CNM_WAVE521C_K3_CODEC + bool "Chips&Media Wave 521C codec IP for K3" + help + Firmware files for the Chips&Media Wave521C decoder + needed by the Linux TI j721s2-wave521c driver. + config BR2_PACKAGE_LINUX_FIRMWARE_I915 bool "Intel i915 video card firmware" help Firmware files for the Intel i915 video cards. +config BR2_PACKAGE_LINUX_FIRMWARE_XE + bool "Intel Xe video card firmware" + help + Firmware files for the Intel Xe video cards. + config BR2_PACKAGE_LINUX_FIRMWARE_RADEON bool "AMD Radeon video card firmware" help @@ -61,8 +86,8 @@ config BR2_PACKAGE_LINUX_FIRMWARE_AMLOGIC config BR2_PACKAGE_LINUX_FIRMWARE_IBT bool "Intel Wireless Bluetooth" help - Firmware files for Intel 3160/7260/7265/8260/8265 Wireless - bluetooth support. + Firmware files for Intel 3160/7260/7265/8260/8265/9xxx/6E/7 + Wireless bluetooth support. config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7650 bool "MediaTek MT7650" @@ -79,6 +104,11 @@ config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922_BT help Firmware files for MediaTek MT7922 bluetooth support +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7925_BT + bool "MediaTek MT7925" + help + Firmware files for MediaTek MT7925 bluetooth support + config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174A_BT bool "Qualcomm Atheros Rome 6174A Bluetooth" help @@ -107,7 +137,7 @@ config BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX_BT config BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX_BT bool "Realtek 88xx Bluetooth" help - Realtek 8821a/8821c/8822b/8822cs/8822cu/8852au + Firmware files for Realtek Bluetooth modules 88xx. config BR2_PACKAGE_LINUX_FIRMWARE_TI_CC2560 bool "TI CC2560" @@ -195,6 +225,42 @@ config BR2_PACKAGE_LINUX_FIRMWARE_CYPRESS_CYW54XXX help Firmware files for the Cypress cyw54xxx FullMAC. +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_100 + bool "Intel iwlwifi 100" + help + Firmware files for the Intel Wifi 100 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_105 + bool "Intel iwlwifi 105" + help + Firmware files for the Intel Wifi 105 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_135 + bool "Intel iwlwifi 135" + help + Firmware files for the Intel Wifi 135 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_1000 + bool "Intel iwlwifi 1000" + help + Firmware files for the Intel Wifi 1000 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_2000 + bool "Intel iwlwifi 2000" + help + Firmware files for the Intel Wifi 2000 devices supported by + the iwlwifi kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_2030 + bool "Intel iwlwifi 2030" + help + Firmware files for the Intel Wifi 2030 devices supported by + the iwlwifi kernel driver. + config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22000 bool "Intel iwlwifi 22000" help @@ -294,6 +360,12 @@ config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6E Firmware files for the Intel Wi-Fi 6 and Wi-Fi 6E devices supported by the iwlwifi kernel driver. +config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7 + bool "Intel iwlwifi 7" + help + Firmware files for the Intel Wi-Fi 7 (BE20x) devices + supported by the iwlwifi kernel driver. + config BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_QUZ bool "Intel iwlwifi QuZ" help @@ -408,11 +480,33 @@ config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922 help MediaTek MT7922 +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7925 + bool "MediaTek MT7925" + help + MediaTek MT7925 + +config BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7986 + bool "MediaTek MT7986 SOC WiFi" + help + MediaTek MT7986 SOC WiFi + config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174 bool "Qualcomm Atheros 6174" help Firmware files for the Qualcomm Atheros QCA6174 chip +config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_QCN9274 + bool "Qualcomm QCN9274" + help + Firmware files for the Qualcomm 802.11be QCN9274 chip + supported by the ath12k kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_WCN7850 + bool "Qualcomm WCN7850" + help + Firmware files for the Qualcomm 802.11be WCN7850 chip + supported by the ath12k kernel driver. + config BR2_PACKAGE_LINUX_FIRMWARE_RALINK_RT61 bool "Ralink rt2501/rt61" help @@ -460,6 +554,11 @@ config BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9113 help Firmware files for WLAN and Bluetooth modules rs9113 +config BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9116 + bool "Redpine rs9116" + help + Firmware files for WLAN and Bluetooth modules rs9116 + config BR2_PACKAGE_LINUX_FIRMWARE_TI_WL127X bool "TI wl127x" help @@ -476,6 +575,11 @@ config BR2_PACKAGE_LINUX_FIRMWARE_TI_WL18XX help Firmware files for WLAN and Bluetooth modules wl18xx +config BR2_PACKAGE_LINUX_FIRMWARE_TI_CC33XX + bool "TI cc33xx" + help + Firmware files for cc33xx WLAN and BLE family of chips + config BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_WIL6210 bool "Qualcomm Atheros wil6210" help @@ -514,6 +618,12 @@ config BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T5 Firmware files for Chelsio T5 1Gb and 10Gb ethernet cards (cxgb4) +config BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T6 + bool "Chelsio T6" + help + Firmware files for Chelsio T6 1/10/25/40/50/100 Gb ethernet + cards (cxgb4) + config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_E100 bool "Intel e100 825xx" help @@ -545,7 +655,7 @@ config BR2_PACKAGE_LINUX_FIRMWARE_QLOGIC_4X (qede) config BR2_PACKAGE_LINUX_FIRMWARE_RTL_815X - bool "Realtek 8152/8153/8156 USB Ethernet Adapaters" + bool "Realtek 8152/8153/8156 USB Ethernet Adapters" help Firmware files for Realtek 8152/8153/8156 based USB Ethernet adapters. @@ -637,6 +747,50 @@ config BR2_PACKAGE_LINUX_FIRMWARE_CX23885 Firmware files for Conexant Cx23885/7/8 PCIe broadcast A/V decoder needed by the Linux CX23885 driver. +config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_ATOMISP + bool "Intel AtomISP v2" + help + Firmware files for Intel AtomISP v2 (also know as IPU2) + needed by the Linux AtomISP v2 driver. + +endmenu + +menu "GPU Firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_ARM_MALI_CSF + bool "Arm Mali CSF firmware" + help + Firmware files for Arm Mali 10th generation GPU + needed by the linux panthor kernel driver. + +config BR2_PACKAGE_LINUX_FIRMWARE_POWERVR_ROGUE + bool "PowerVR Technologies Rogue GPU firmware" + help + Firmware files for PowerVR Technologies Rogue video cards. + +endmenu + +menu "Serial adapters firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_RP2 + bool "Comtrol RocketPort EXPRESS/INFINITY firmware" + help + Firmware files for the Comtrol RocketPort EXPRESS/INFINITY + needed by the Linux rp2 kernel driver. + +endmenu + +menu "NPU Firmware" + +config BR2_PACKAGE_LINUX_FIRMWARE_INTEL_NPU + bool "Intel NPU firmware" + help + Firmware files for Intel NPU device. Intel NPU device is an + AI inference accelerator integrated with Intel client CPUs. + The full device name is Neural Processing Unit, but the + Linux kernel driver uses the older name Versatile Processing + Unit (VPU). + endmenu endif diff --git a/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/linux-firmware.mk b/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/linux-firmware.mk index cbef82d..da848ca 100644 --- a/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/linux-firmware.mk +++ b/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/linux-firmware.mk @@ -4,7 +4,7 @@ # ################################################################################ -LINUX_FIRMWARE_VERSION = 20240115 +LINUX_FIRMWARE_VERSION = 20251011 LINUX_FIRMWARE_SOURCE = linux-firmware-$(LINUX_FIRMWARE_VERSION).tar.xz LINUX_FIRMWARE_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/firmware LINUX_FIRMWARE_INSTALL_IMAGES = YES @@ -28,16 +28,31 @@ 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_AMD_UCODE),y) +LINUX_FIRMWARE_DIRS += amd-ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.amd-ucode +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_CNM_WAVE521C_K3_CODEC),y) +LINUX_FIRMWARE_FILES += cnm/wave521c_k3_codec_fw.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.cnm +endif + ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_I915),y) LINUX_FIRMWARE_DIRS += i915 LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.i915 endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_XE),y) +LINUX_FIRMWARE_DIRS += xe +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.xe +endif + ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RADEON),y) LINUX_FIRMWARE_DIRS += radeon LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.radeon @@ -66,7 +81,7 @@ endif # Amlogic SoC Bluetooth ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_AMLOGIC),y) -LINUX_FIRMWARE_FILES += amlogic/bluetooth/*.bin +LINUX_FIRMWARE_FILES += amlogic/*.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.amlogic endif @@ -76,18 +91,6 @@ LINUX_FIRMWARE_FILES += intel/ibt-* LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ibt_firmware endif -# Mediatek MT7921 Bluetooth -ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MT7921_BT),y) -LINUX_FIRMWARE_FILES += mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin -LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek -endif - -# Mediatek MT7922 Bluetooth -ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MT7922_BT),y) -LINUX_FIRMWARE_FILES += mediatek/BT_RAM_CODE_MT7922_1_1_hdr.bin -LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek -endif - # Qualcomm Atheros Rome 6174A Bluetooth ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174A_BT),y) LINUX_FIRMWARE_FILES += qca/rampatch_usb_00000302.bin qca/nvm_usb_00000302.bin @@ -104,8 +107,7 @@ endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX_BT),y) LINUX_FIRMWARE_FILES += \ rtl_bt/rtl8723a_fw.bin rtl_bt/rtl8723b_fw.bin \ - rtl_bt/rtl8723bs_config-OBDA8723.bin \ - rtl_bt/rtl8723bs_fw.bin rtl_bt/rtl8723d_config.bin \ + rtl_bt/rtl8723bs_config.bin rtl_bt/rtl8723bs_fw.bin \ rtl_bt/rtl8723d_fw.bin rtl_bt/rtl8761a_fw.bin \ rtl_bt/rtl8761b_fw.bin rtl_bt/rtl8761b_config.bin \ rtl_bt/rtl8761bu_fw.bin rtl_bt/rtl8761bu_config.bin @@ -115,16 +117,7 @@ endif # Realtek 88xx Bluetooth ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX_BT),y) LINUX_FIRMWARE_FILES += \ - rtl_bt/rtl8812ae_fw.bin rtl_bt/rtl8821a_fw.bin \ - rtl_bt/rtl8821c_config.bin rtl_bt/rtl8821c_fw.bin \ - rtl_bt/rtl8822b_config.bin rtl_bt/rtl8822b_fw.bin \ - rtl_bt/rtl8822cs_config.bin rtl_bt/rtl8822cs_fw.bin \ - rtl_bt/rtl8822cu_config.bin rtl_bt/rtl8822cu_fw.bin \ - rtl_bt/rtl8851bu_fw.bin rtl_bt/rtl8851bu_config.bin \ - rtl_bt/rtl8852au_fw.bin rtl_bt/rtl8852au_config.bin \ - rtl_bt/rtl8852bu_fw.bin rtl_bt/rtl8852bu_config.bin \ - rtl_bt/rtl8852cu_fw.bin rtl_bt/rtl8852cu_config.bin \ - rtl_bt/rtl8852cu_fw_v2.bin + rtl_bt/rtl88*.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt endif @@ -208,13 +201,6 @@ LINUX_FIRMWARE_FILES += \ LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt endif -# rtw89 -ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_RTW89),y) -LINUX_FIRMWARE_FILES += \ - rtw89/rtw*.bin -LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt -endif - # ar3011 ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_AR3011),y) LINUX_FIRMWARE_FILES += ath3k-1.fw @@ -289,14 +275,14 @@ LINUX_FIRMWARE_FILES += ath10k/QCA9377/hw1.0/board-2.bin \ ath10k/QCA9377/hw1.0/firmware-5.bin \ ath10k/QCA9377/hw1.0/firmware-6.bin \ ath10k/QCA9377/hw1.0/firmware-sdio-5.bin -LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.QualcommAtheros_ath10k endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA998X),y) LINUX_FIRMWARE_FILES += ath10k/QCA988X/hw2.0/board.bin \ ath10k/QCA988X/hw2.0/firmware-4.bin \ ath10k/QCA988X/hw2.0/firmware-5.bin -LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.QualcommAtheros_ath10k endif # sd8686 v8 @@ -445,17 +431,34 @@ LINUX_FIRMWARE_FILES += mediatek/BT_RAM_CODE_MT7922_1_1_hdr.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek endif -# MT7921 -ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7921),y) -LINUX_FIRMWARE_FILES += mediatek/WIFI_MT7961_patch_mcu_1_2_hdr.bin \ - mediatek/WIFI_RAM_CODE_MT7961_1.bin +# MT7925 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7925),y) +LINUX_FIRMWARE_FILES += \ + mediatek/mt7925/WIFI_MT7925_PATCH_MCU_1_1_hdr.bin \ + mediatek/mt7925/WIFI_RAM_CODE_MT7925_1_1.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek endif -# MT7922 -ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7922),y) -LINUX_FIRMWARE_FILES += mediatek/WIFI_MT7922_patch_mcu_1_1_hdr.bin \ - mediatek/WIFI_RAM_CODE_MT7922_1.bin +# Mediatek MT7925 Bluetooth +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7925_BT),y) +LINUX_FIRMWARE_FILES += mediatek/mt7925/BT_RAM_CODE_MT7925_1_1_hdr.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek +endif + +# Mediatek MT7986 SoC WiFi +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7986),y) +LINUX_FIRMWARE_FILES += \ + mediatek/mt7986_eeprom_mt7975_dual.bin \ + mediatek/mt7986_eeprom_mt7976.bin \ + mediatek/mt7986_eeprom_mt7976_dbdc.bin \ + mediatek/mt7986_eeprom_mt7976_dual.bin \ + mediatek/mt7986_rom_patch.bin \ + mediatek/mt7986_rom_patch_mt7975.bin \ + mediatek/mt7986_wa.bin \ + mediatek/mt7986_wm.bin \ + mediatek/mt7986_wm_mt7975.bin \ + mediatek/mt7986_wo_0.bin \ + mediatek/mt7986_wo_1.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek endif @@ -469,6 +472,25 @@ LINUX_FIRMWARE_ALL_LICENSE_FILES += \ ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_WCN7850),y) +LINUX_FIRMWARE_FILES += \ + ath12k/WCN7850/hw2.0/board-2.bin \ + ath12k/WCN7850/hw2.0/amss.bin \ + ath12k/WCN7850/hw2.0/m3.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += \ + LICENSE.QualcommAtheros_ath10k \ + ath12k/WCN7850/hw2.0/Notice.txt +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_QCN9274),y) +LINUX_FIRMWARE_FILES += \ + ath12k/QCN9274/hw2.0/board-2.bin \ + ath12k/QCN9274/hw2.0/firmware-2.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += \ + LICENSE.QualcommAtheros_ath10k \ + ath12k/QCN9274/hw2.0/Notice.txt +endif + # CC2560(A) ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_CC2560),y) LINUX_FIRMWARE_FILES += \ @@ -527,48 +549,87 @@ LINUX_FIRMWARE_FILES += \ LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity endif +# cc33xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_CC33XX),y) +LINUX_FIRMWARE_FILES += \ + ti-connectivity/cc33xx_2nd_loader.bin \ + ti-connectivity/cc33xx_fw.bin \ + ti-connectivity/cc33xx-conf.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity +endif + ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_WIL6210),y) LINUX_FIRMWARE_FILES += wil6210.* LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.QualcommAtheros_ath10k endif -ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22000),y) -LINUX_FIRMWARE_FILES += \ - iwlwifi-Qu-b0-hr-b0-72.ucode \ - iwlwifi-Qu-c0-hr-b0-72.ucode \ - iwlwifi-Qu-b0-jf-b0-72.ucode \ - iwlwifi-Qu-c0-jf-b0-72.ucode \ - iwlwifi-QuZ-a0-hr-b0-72.ucode \ - iwlwifi-QuZ-a0-jf-b0-72.ucode \ - iwlwifi-cc-a0-72.ucode \ - iwlwifi-so-a0-jf-b0-72.ucode \ - iwlwifi-so-a0-hr-b0-72.ucode \ - iwlwifi-so-a0-gf-a0-72.ucode \ - iwlwifi-so-a0-gf-a0.pnvm \ - iwlwifi-so-a0-gf4-a0-72.ucode \ - iwlwifi-so-a0-gf4-a0.pnvm \ - iwlwifi-ty-a0-gf-a0-72.ucode \ - iwlwifi-ty-a0-gf-a0.pnvm +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_100),y) +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-100-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_105),y) +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-105-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_135),y) +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-135-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_1000),y) +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-1000-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_2000),y) +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-2000-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_2030),y) +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-2030-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifneq ($(filter y,$(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22000) $(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22260)),) +LINUX_FIRMWARE_FILES += \ + intel/iwlwifi/iwlwifi-Qu-b0-hr-b0-72.ucode \ + intel/iwlwifi/iwlwifi-Qu-c0-hr-b0-72.ucode \ + intel/iwlwifi/iwlwifi-Qu-b0-jf-b0-72.ucode \ + intel/iwlwifi/iwlwifi-Qu-c0-jf-b0-72.ucode \ + intel/iwlwifi/iwlwifi-QuZ-a0-hr-b0-72.ucode \ + intel/iwlwifi/iwlwifi-QuZ-a0-jf-b0-72.ucode \ + intel/iwlwifi/iwlwifi-cc-a0-72.ucode \ + intel/iwlwifi/iwlwifi-so-a0-jf-b0-72.ucode \ + intel/iwlwifi/iwlwifi-so-a0-hr-b0-72.ucode \ + intel/iwlwifi/iwlwifi-so-a0-gf-a0-72.ucode \ + intel/iwlwifi/iwlwifi-so-a0-gf-a0.pnvm \ + intel/iwlwifi/iwlwifi-so-a0-gf4-a0-72.ucode \ + intel/iwlwifi/iwlwifi-so-a0-gf4-a0.pnvm \ + intel/iwlwifi/iwlwifi-ty-a0-gf-a0-72.ucode \ + intel/iwlwifi/iwlwifi-ty-a0-gf-a0.pnvm LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160),y) -LINUX_FIRMWARE_FILES += iwlwifi-3160-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-3160-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168),y) -LINUX_FIRMWARE_FILES += iwlwifi-3168-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-3168-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3945),y) -LINUX_FIRMWARE_FILES += iwlwifi-3945-2.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-3945-2.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_4965),y) -LINUX_FIRMWARE_FILES += iwlwifi-4965-2.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-4965-2.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif @@ -577,76 +638,79 @@ endif # different versions of the firmware API. For now, we only install the # most recent one. ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000),y) -LINUX_FIRMWARE_FILES += iwlwifi-5000-5.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-5000-5.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A),y) -LINUX_FIRMWARE_FILES += iwlwifi-6000g2a-6.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-6000g2a-6.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B),y) -LINUX_FIRMWARE_FILES += iwlwifi-6000g2b-6.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-6000g2b-6.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260),y) -LINUX_FIRMWARE_FILES += iwlwifi-7260-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-7260-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265),y) -LINUX_FIRMWARE_FILES += iwlwifi-7265-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-7265-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D),y) -LINUX_FIRMWARE_FILES += iwlwifi-7265D-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-7265D-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C),y) -LINUX_FIRMWARE_FILES += iwlwifi-8000C-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-8000C-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265),y) -LINUX_FIRMWARE_FILES += iwlwifi-8265-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-8265-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_9XXX),y) -LINUX_FIRMWARE_FILES += iwlwifi-9???-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-9???-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-so-a0-jf-b0*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6E),y) -LINUX_FIRMWARE_FILES += iwlwifi-so-a0-gf-a0*.{ucode,pnvm} +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-{so,ty}-a0-gf-a0*.{ucode,pnvm} +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7),y) +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-gl-c0-fm-c0*.{ucode,pnvm} LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_QUZ),y) -LINUX_FIRMWARE_FILES += iwlwifi-QuZ-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-QuZ-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BROADCOM_TIGON3),y) LINUX_FIRMWARE_FILES += tigon/* -# No license file; the license is in the file WHENCE -# which is installed unconditionally +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.tigon endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BNX2),y) LINUX_FIRMWARE_FILES += bnx2/* -# No license file; the license is in the file WHENCE -# which is installed unconditionally +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.bnx2 endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BNX2X),y) LINUX_FIRMWARE_FILES += bnx2x/* -# No license file; the license is in the file WHENCE -# which is installed unconditionally +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.bnx2x endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4),y) @@ -659,6 +723,11 @@ LINUX_FIRMWARE_FILES += cxgb4/t5fw*.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.chelsio_firmware endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T6),y) +LINUX_FIRMWARE_FILES += cxgb4/t6fw*.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.chelsio_firmware +endif + ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_E100),y) LINUX_FIRMWARE_FILES += e100/*.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.e100 @@ -703,6 +772,7 @@ LINUX_FIRMWARE_FILES += \ rtl_nic/rtl8107e-2.fw \ rtl_nic/rtl8125a-3.fw \ rtl_nic/rtl8125b-2.fw \ + rtl_nic/rtl8125d-1.fw \ rtl_nic/rtl8168d-1.fw \ rtl_nic/rtl8168d-2.fw \ rtl_nic/rtl8168e-1.fw \ @@ -874,18 +944,26 @@ LINUX_FIRMWARE_FILES += \ # which is installed unconditionally endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9116),y) +LINUX_FIRMWARE_FILES += \ + rsi/rs9116_wlan.rps \ + rsi/rs9116_wlan_bt_classic.rps +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_DH895XCC),y) -LINUX_FIRMWARE_FILES += qat_895xcc.bin qat_895xcc_mmp.bin +LINUX_FIRMWARE_FILES += intel/qat/qat_895xcc.bin intel/qat/qat_895xcc_mmp.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_C3XXX),y) -LINUX_FIRMWARE_FILES += qat_c3xxx.bin qat_c3xxx_mmp.bin +LINUX_FIRMWARE_FILES += intel/qat/qat_c3xxx.bin intel/qat/qat_c3xxx_mmp.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_C62X),y) -LINUX_FIRMWARE_FILES += qat_c62x.bin qat_c62x_mmp.bin +LINUX_FIRMWARE_FILES += intel/qat/qat_c62x.bin intel/qat/qat_c62x_mmp.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware endif @@ -899,6 +977,11 @@ LINUX_FIRMWARE_FILES += ti_3410.fw ti_5052.fw \ LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.moxa endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CDNS_MHDP8546),y) +LINUX_FIRMWARE_FILES += cadence/mhdp8546.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.cadence +endif + ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CX231XX),y) LINUX_FIRMWARE_FILES += v4l-cx231xx-avcore-01.fw # No license file; the license is in the file WHENCE @@ -911,6 +994,31 @@ LINUX_FIRMWARE_FILES += v4l-cx23885-avcore-01.fw # which is installed unconditionally endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_ATOMISP),y) +LINUX_FIRMWARE_FILES += intel/ipu/shisp_2400b0_v21.bin +LINUX_FIRMWARE_FILES += intel/ipu/shisp_2401a0_v21.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.ivsc +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ARM_MALI_CSF),y) +LINUX_FIRMWARE_FILES += arm/mali/arch*/mali_csffw.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mali_csffw +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_POWERVR_ROGUE),y) +LINUX_FIRMWARE_DIRS += powervr +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.powervr +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RP2),y) +LINUX_FIRMWARE_FILES += rp2.fw +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_NPU),y) +LINUX_FIRMWARE_FILES += intel/vpu/vpu_*.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.intel_vpu +endif + ifneq ($(LINUX_FIRMWARE_FILES)$(LINUX_FIRMWARE_DIRS),) define LINUX_FIRMWARE_BUILD_CMDS diff --git a/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/linux-firmware.mk.orig b/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/linux-firmware.mk.orig index 60e8861..6e58814 100644 --- a/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/linux-firmware.mk.orig +++ b/buildroot-patches/0002-linux-firmware/buildroot/package/linux-firmware/linux-firmware.mk.orig @@ -4,7 +4,7 @@ # ################################################################################ -LINUX_FIRMWARE_VERSION = 20240115 +LINUX_FIRMWARE_VERSION = 20251011 LINUX_FIRMWARE_SOURCE = linux-firmware-$(LINUX_FIRMWARE_VERSION).tar.xz LINUX_FIRMWARE_SITE = $(BR2_KERNEL_MIRROR)/linux/kernel/firmware LINUX_FIRMWARE_INSTALL_IMAGES = YES @@ -15,16 +15,31 @@ 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_AMD_UCODE),y) +LINUX_FIRMWARE_DIRS += amd-ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.amd-ucode +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_CNM_WAVE521C_K3_CODEC),y) +LINUX_FIRMWARE_FILES += cnm/wave521c_k3_codec_fw.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.cnm +endif + ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_I915),y) LINUX_FIRMWARE_DIRS += i915 LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.i915 endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_XE),y) +LINUX_FIRMWARE_DIRS += xe +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.xe +endif + ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RADEON),y) LINUX_FIRMWARE_DIRS += radeon LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.radeon @@ -53,7 +68,7 @@ endif # Amlogic SoC Bluetooth ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_AMLOGIC),y) -LINUX_FIRMWARE_FILES += amlogic/bluetooth/*.bin +LINUX_FIRMWARE_FILES += amlogic/*.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.amlogic endif @@ -79,8 +94,7 @@ endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_87XX_BT),y) LINUX_FIRMWARE_FILES += \ rtl_bt/rtl8723a_fw.bin rtl_bt/rtl8723b_fw.bin \ - rtl_bt/rtl8723bs_config-OBDA8723.bin \ - rtl_bt/rtl8723bs_fw.bin rtl_bt/rtl8723d_config.bin \ + rtl_bt/rtl8723bs_config.bin rtl_bt/rtl8723bs_fw.bin \ rtl_bt/rtl8723d_fw.bin rtl_bt/rtl8761a_fw.bin \ rtl_bt/rtl8761b_fw.bin rtl_bt/rtl8761b_config.bin \ rtl_bt/rtl8761bu_fw.bin rtl_bt/rtl8761bu_config.bin @@ -90,16 +104,7 @@ endif # Realtek 88xx Bluetooth ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RTL_88XX_BT),y) LINUX_FIRMWARE_FILES += \ - rtl_bt/rtl8812ae_fw.bin rtl_bt/rtl8821a_fw.bin \ - rtl_bt/rtl8821c_config.bin rtl_bt/rtl8821c_fw.bin \ - rtl_bt/rtl8822b_config.bin rtl_bt/rtl8822b_fw.bin \ - rtl_bt/rtl8822cs_config.bin rtl_bt/rtl8822cs_fw.bin \ - rtl_bt/rtl8822cu_config.bin rtl_bt/rtl8822cu_fw.bin \ - rtl_bt/rtl8851bu_fw.bin rtl_bt/rtl8851bu_config.bin \ - rtl_bt/rtl8852au_fw.bin rtl_bt/rtl8852au_config.bin \ - rtl_bt/rtl8852bu_fw.bin rtl_bt/rtl8852bu_config.bin \ - rtl_bt/rtl8852cu_fw.bin rtl_bt/rtl8852cu_config.bin \ - rtl_bt/rtl8852cu_fw_v2.bin + rtl_bt/rtl88*.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.rtlwifi_firmware.txt endif @@ -257,14 +262,14 @@ LINUX_FIRMWARE_FILES += ath10k/QCA9377/hw1.0/board-2.bin \ ath10k/QCA9377/hw1.0/firmware-5.bin \ ath10k/QCA9377/hw1.0/firmware-6.bin \ ath10k/QCA9377/hw1.0/firmware-sdio-5.bin -LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.QualcommAtheros_ath10k endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA998X),y) LINUX_FIRMWARE_FILES += ath10k/QCA988X/hw2.0/board.bin \ ath10k/QCA988X/hw2.0/firmware-4.bin \ ath10k/QCA988X/hw2.0/firmware-5.bin -LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.atheros_firmware +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.QualcommAtheros_ath10k endif # sd8686 v8 @@ -413,6 +418,37 @@ LINUX_FIRMWARE_FILES += mediatek/BT_RAM_CODE_MT7922_1_1_hdr.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek endif +# MT7925 +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7925),y) +LINUX_FIRMWARE_FILES += \ + mediatek/mt7925/WIFI_MT7925_PATCH_MCU_1_1_hdr.bin \ + mediatek/mt7925/WIFI_RAM_CODE_MT7925_1_1.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek +endif + +# Mediatek MT7925 Bluetooth +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7925_BT),y) +LINUX_FIRMWARE_FILES += mediatek/mt7925/BT_RAM_CODE_MT7925_1_1_hdr.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek +endif + +# Mediatek MT7986 SoC WiFi +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_MEDIATEK_MT7986),y) +LINUX_FIRMWARE_FILES += \ + mediatek/mt7986_eeprom_mt7975_dual.bin \ + mediatek/mt7986_eeprom_mt7976.bin \ + mediatek/mt7986_eeprom_mt7976_dbdc.bin \ + mediatek/mt7986_eeprom_mt7976_dual.bin \ + mediatek/mt7986_rom_patch.bin \ + mediatek/mt7986_rom_patch_mt7975.bin \ + mediatek/mt7986_wa.bin \ + mediatek/mt7986_wm.bin \ + mediatek/mt7986_wm_mt7975.bin \ + mediatek/mt7986_wo_0.bin \ + mediatek/mt7986_wo_1.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mediatek +endif + # qca6174 ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_6174),y) LINUX_FIRMWARE_FILES += ath10k/QCA6174 @@ -423,6 +459,25 @@ LINUX_FIRMWARE_ALL_LICENSE_FILES += \ ath10k/QCA6174/hw3.0/notice_ath10k_firmware-6.txt endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_WCN7850),y) +LINUX_FIRMWARE_FILES += \ + ath12k/WCN7850/hw2.0/board-2.bin \ + ath12k/WCN7850/hw2.0/amss.bin \ + ath12k/WCN7850/hw2.0/m3.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += \ + LICENSE.QualcommAtheros_ath10k \ + ath12k/WCN7850/hw2.0/Notice.txt +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_QCN9274),y) +LINUX_FIRMWARE_FILES += \ + ath12k/QCN9274/hw2.0/board-2.bin \ + ath12k/QCN9274/hw2.0/firmware-2.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += \ + LICENSE.QualcommAtheros_ath10k \ + ath12k/QCN9274/hw2.0/Notice.txt +endif + # CC2560(A) ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_CC2560),y) LINUX_FIRMWARE_FILES += \ @@ -481,38 +536,77 @@ LINUX_FIRMWARE_FILES += \ LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity endif +# cc33xx +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_TI_CC33XX),y) +LINUX_FIRMWARE_FILES += \ + ti-connectivity/cc33xx_2nd_loader.bin \ + ti-connectivity/cc33xx_fw.bin \ + ti-connectivity/cc33xx-conf.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.ti-connectivity +endif + ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QUALCOMM_WIL6210),y) LINUX_FIRMWARE_FILES += wil6210.* LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.QualcommAtheros_ath10k endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_100),y) +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-100-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_105),y) +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-105-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_135),y) +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-135-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_1000),y) +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-1000-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_2000),y) +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-2000-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_2030),y) +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-2030-*.ucode +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22000),y) -LINUX_FIRMWARE_FILES += iwlwifi-QuZ-*.ucode iwlwifi-Qu-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-QuZ-*.ucode intel/iwlwifi/iwlwifi-Qu-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_22260),y) -LINUX_FIRMWARE_FILES += iwlwifi-cc-a0-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-cc-a0-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3160),y) -LINUX_FIRMWARE_FILES += iwlwifi-3160-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-3160-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3168),y) -LINUX_FIRMWARE_FILES += iwlwifi-3168-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-3168-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_3945),y) -LINUX_FIRMWARE_FILES += iwlwifi-3945-2.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-3945-2.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_4965),y) -LINUX_FIRMWARE_FILES += iwlwifi-4965-2.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-4965-2.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif @@ -521,76 +615,79 @@ endif # different versions of the firmware API. For now, we only install the # most recent one. ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_5000),y) -LINUX_FIRMWARE_FILES += iwlwifi-5000-5.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-5000-5.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2A),y) -LINUX_FIRMWARE_FILES += iwlwifi-6000g2a-6.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-6000g2a-6.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6000G2B),y) -LINUX_FIRMWARE_FILES += iwlwifi-6000g2b-6.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-6000g2b-6.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7260),y) -LINUX_FIRMWARE_FILES += iwlwifi-7260-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-7260-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265),y) -LINUX_FIRMWARE_FILES += iwlwifi-7265-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-7265-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7265D),y) -LINUX_FIRMWARE_FILES += iwlwifi-7265D-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-7265D-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8000C),y) -LINUX_FIRMWARE_FILES += iwlwifi-8000C-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-8000C-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_8265),y) -LINUX_FIRMWARE_FILES += iwlwifi-8265-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-8265-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_9XXX),y) -LINUX_FIRMWARE_FILES += iwlwifi-9???-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-9???-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-so-a0-jf-b0*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_6E),y) -LINUX_FIRMWARE_FILES += iwlwifi-so-a0-gf-a0*.{ucode,pnvm} +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-{so,ty}-a0-gf-a0*.{ucode,pnvm} +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_7),y) +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-gl-c0-fm-c0*.{ucode,pnvm} LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_IWLWIFI_QUZ),y) -LINUX_FIRMWARE_FILES += iwlwifi-QuZ-*.ucode +LINUX_FIRMWARE_FILES += intel/iwlwifi/iwlwifi-QuZ-*.ucode LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.iwlwifi_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BROADCOM_TIGON3),y) LINUX_FIRMWARE_FILES += tigon/* -# No license file; the license is in the file WHENCE -# which is installed unconditionally +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.tigon endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BNX2),y) LINUX_FIRMWARE_FILES += bnx2/* -# No license file; the license is in the file WHENCE -# which is installed unconditionally +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.bnx2 endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_BNX2X),y) LINUX_FIRMWARE_FILES += bnx2x/* -# No license file; the license is in the file WHENCE -# which is installed unconditionally +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.bnx2x endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T4),y) @@ -603,6 +700,11 @@ LINUX_FIRMWARE_FILES += cxgb4/t5fw*.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.chelsio_firmware endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CXGB4_T6),y) +LINUX_FIRMWARE_FILES += cxgb4/t6fw*.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.chelsio_firmware +endif + ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_E100),y) LINUX_FIRMWARE_FILES += e100/*.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.e100 @@ -647,6 +749,7 @@ LINUX_FIRMWARE_FILES += \ rtl_nic/rtl8107e-2.fw \ rtl_nic/rtl8125a-3.fw \ rtl_nic/rtl8125b-2.fw \ + rtl_nic/rtl8125d-1.fw \ rtl_nic/rtl8168d-1.fw \ rtl_nic/rtl8168d-2.fw \ rtl_nic/rtl8168e-1.fw \ @@ -818,18 +921,26 @@ LINUX_FIRMWARE_FILES += \ # which is installed unconditionally endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_REDPINE_RS9116),y) +LINUX_FIRMWARE_FILES += \ + rsi/rs9116_wlan.rps \ + rsi/rs9116_wlan_bt_classic.rps +# No license file; the license is in the file WHENCE +# which is installed unconditionally +endif + ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_DH895XCC),y) -LINUX_FIRMWARE_FILES += qat_895xcc.bin qat_895xcc_mmp.bin +LINUX_FIRMWARE_FILES += intel/qat/qat_895xcc.bin intel/qat/qat_895xcc_mmp.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_C3XXX),y) -LINUX_FIRMWARE_FILES += qat_c3xxx.bin qat_c3xxx_mmp.bin +LINUX_FIRMWARE_FILES += intel/qat/qat_c3xxx.bin intel/qat/qat_c3xxx_mmp.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware endif ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_QAT_C62X),y) -LINUX_FIRMWARE_FILES += qat_c62x.bin qat_c62x_mmp.bin +LINUX_FIRMWARE_FILES += intel/qat/qat_c62x.bin intel/qat/qat_c62x_mmp.bin LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.qat_firmware endif @@ -843,6 +954,11 @@ LINUX_FIRMWARE_FILES += ti_3410.fw ti_5052.fw \ LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.moxa endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CDNS_MHDP8546),y) +LINUX_FIRMWARE_FILES += cadence/mhdp8546.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.cadence +endif + ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_CX231XX),y) LINUX_FIRMWARE_FILES += v4l-cx231xx-avcore-01.fw # No license file; the license is in the file WHENCE @@ -855,6 +971,31 @@ LINUX_FIRMWARE_FILES += v4l-cx23885-avcore-01.fw # which is installed unconditionally endif +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_ATOMISP),y) +LINUX_FIRMWARE_FILES += intel/ipu/shisp_2400b0_v21.bin +LINUX_FIRMWARE_FILES += intel/ipu/shisp_2401a0_v21.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.ivsc +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_ARM_MALI_CSF),y) +LINUX_FIRMWARE_FILES += arm/mali/arch*/mali_csffw.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENCE.mali_csffw +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_POWERVR_ROGUE),y) +LINUX_FIRMWARE_DIRS += powervr +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.powervr +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_RP2),y) +LINUX_FIRMWARE_FILES += rp2.fw +endif + +ifeq ($(BR2_PACKAGE_LINUX_FIRMWARE_INTEL_NPU),y) +LINUX_FIRMWARE_FILES += intel/vpu/vpu_*.bin +LINUX_FIRMWARE_ALL_LICENSE_FILES += LICENSE.intel_vpu +endif + ifneq ($(LINUX_FIRMWARE_FILES)$(LINUX_FIRMWARE_DIRS),) define LINUX_FIRMWARE_BUILD_CMDS diff --git a/buildroot-patches/0022-python-glslang-downgrade.patch b/buildroot-patches/0022-python-glslang-downgrade.patch deleted file mode 100644 index 5bc7647..0000000 --- a/buildroot-patches/0022-python-glslang-downgrade.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- buildroot/package/python-glslang/python-glslang.hash.orig -+++ buildroot/package/python-glslang/python-glslang.hash -@@ -1,3 +1,3 @@ - # Locally calculated --sha256 c6c21fe1873c37e639a6a9ac72d857ab63a5be6893a589f34e09a6c757174201 python-glslang-15.3.0.tar.gz -+sha256 592c98aeb03b3e81597ddaf83633c4e63068d14b18a766fd11033bad73127162 python-glslang-11.13.0.tar.gz - sha256 adb783e734e906d1f46db5df29991dbde84bdb0ceab502ac2febb44fe3c2b5f4 LICENSE.txt ---- buildroot/package/python-glslang/python-glslang.mk.orig -+++ buildroot/package/python-glslang/python-glslang.mk -@@ -4,7 +4,7 @@ - # - ################################################################################ - --PYTHON_GLSLANG_VERSION = 15.3.0 -+PYTHON_GLSLANG_VERSION = 11.13.0 - PYTHON_GLSLANG_SITE = $(call github,KhronosGroup,glslang,$(PYTHON_GLSLANG_VERSION)) - PYTHON_GLSLANG_LICENSE = BSD-3-Clause - PYTHON_GLSLANG_LICENSE_FILES = LICENSE.txt diff --git a/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash b/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash deleted file mode 100644 index df91279..0000000 --- a/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash +++ /dev/null @@ -1,3 +0,0 @@ -# Locally calculated -sha256 592c98aeb03b3e81597ddaf83633c4e63068d14b18a766fd11033bad73127162 python-glslang-11.13.0.tar.gz -sha256 adb783e734e906d1f46db5df29991dbde84bdb0ceab502ac2febb44fe3c2b5f4 LICENSE.txt diff --git a/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash.orig b/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash.orig deleted file mode 100644 index 04ec531..0000000 --- a/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.hash.orig +++ /dev/null @@ -1,3 +0,0 @@ -# Locally calculated -sha256 c6c21fe1873c37e639a6a9ac72d857ab63a5be6893a589f34e09a6c757174201 python-glslang-15.3.0.tar.gz -sha256 adb783e734e906d1f46db5df29991dbde84bdb0ceab502ac2febb44fe3c2b5f4 LICENSE.txt diff --git a/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk b/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk deleted file mode 100644 index df475b3..0000000 --- a/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk +++ /dev/null @@ -1,17 +0,0 @@ -################################################################################ -# -# python-glslang -# -################################################################################ - -PYTHON_GLSLANG_VERSION = 11.13.0 -PYTHON_GLSLANG_SITE = $(call github,KhronosGroup,glslang,$(PYTHON_GLSLANG_VERSION)) -PYTHON_GLSLANG_LICENSE = BSD-3-Clause -PYTHON_GLSLANG_LICENSE_FILES = LICENSE.txt -HOST_PYTHON_GLSLANG_DEPENDENCIES = host-python3 host-spirv-tools - -HOST_PYTHON_GLSLANG_CONF_OPTS += \ - -DALLOW_EXTERNAL_SPIRV_TOOLS=ON \ - -DGLSLANG_TESTS=OFF - -$(eval $(host-cmake-package)) diff --git a/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk.orig b/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk.orig deleted file mode 100644 index cda95eb..0000000 --- a/buildroot-patches/0022-python-glslang-downgrade/buildroot/package/python-glslang/python-glslang.mk.orig +++ /dev/null @@ -1,17 +0,0 @@ -################################################################################ -# -# python-glslang -# -################################################################################ - -PYTHON_GLSLANG_VERSION = 15.3.0 -PYTHON_GLSLANG_SITE = $(call github,KhronosGroup,glslang,$(PYTHON_GLSLANG_VERSION)) -PYTHON_GLSLANG_LICENSE = BSD-3-Clause -PYTHON_GLSLANG_LICENSE_FILES = LICENSE.txt -HOST_PYTHON_GLSLANG_DEPENDENCIES = host-python3 host-spirv-tools - -HOST_PYTHON_GLSLANG_CONF_OPTS += \ - -DALLOW_EXTERNAL_SPIRV_TOOLS=ON \ - -DGLSLANG_TESTS=OFF - -$(eval $(host-cmake-package)) From 11a182c2935d2354da7758c9ed57702823ab53e9 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Sun, 18 Jan 2026 23:30:11 +0100 Subject: [PATCH 233/247] reworked X11 xorg config to better fit general config styles. retired old/obsolete options. In addition switched from evdev/snypatics input devices uses to general and more modern libinput. --- buildroot-external/Buildroot.config | 5 +- .../etc/X11/xorg.conf.d/00-modules.conf | 10 +--- .../etc/X11/xorg.conf.d/01-mouse.conf | 5 -- .../etc/X11/xorg.conf.d/10-evdev.conf | 40 ---------------- .../etc/X11/xorg.conf.d/12-screen.conf | 34 ++------------ .../etc/X11/xorg.conf.d/15-dri.conf | 3 -- .../etc/X11/xorg.conf.d/40-libinput.conf | 37 +++++++++++++++ .../etc/X11/xorg.conf.d/70-synaptics.conf | 46 ------------------- .../etc/X11/xorg.conf.d/90-input.conf | 6 +-- 9 files changed, 44 insertions(+), 142 deletions(-) delete mode 100644 buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/01-mouse.conf delete mode 100644 buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/10-evdev.conf delete mode 100644 buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/15-dri.conf create mode 100644 buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/40-libinput.conf delete mode 100644 buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/70-synaptics.conf diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index c7a7489..e83fb34 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -67,10 +67,7 @@ BR2_PACKAGE_XLIB_LIBXV=y BR2_PACKAGE_XAPP_XPROP=y BR2_PACKAGE_XAPP_XRANDR=y BR2_PACKAGE_XAPP_XSETROOT=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_EVDEV=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_MOUSE=y -BR2_PACKAGE_XDRIVER_XF86_INPUT_SYNAPTICS=y +BR2_PACKAGE_XDRIVER_XF86_INPUT_LIBINPUT=y BR2_PACKAGE_XFONT_FONT_MISC_CYRILLIC=y BR2_PACKAGE_NODM=y BR2_PACKAGE_XDOTOOL=y diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf index 31add83..03d089e 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/00-modules.conf @@ -1,12 +1,4 @@ Section "Module" - Load "fb" - Load "fbdevhw" - Load "wfb" - Load "int10" - Load "vbe" - Load "vgahw" - Load "shadow" - Load "shadowfb" - Load "exa" + Load "glx" Load "glamoregl" EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/01-mouse.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/01-mouse.conf deleted file mode 100644 index f24b4eb..0000000 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/01-mouse.conf +++ /dev/null @@ -1,5 +0,0 @@ -Section "InputClass" - Identifier "Mouse Defaults" - MatchIsPointer "on" - Option "Resolution" "800" -EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/10-evdev.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/10-evdev.conf deleted file mode 100644 index cc83ab2..0000000 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/10-evdev.conf +++ /dev/null @@ -1,40 +0,0 @@ -# -# Catch-all evdev loader for udev-based systems -# We don't simply match on any device since that also adds accelerometers -# and other devices that we don't really want to use. The list below -# matches everything but joysticks. - -Section "InputClass" - Identifier "evdev pointer catchall" - MatchIsPointer "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev keyboard catchall" - MatchIsKeyboard "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev touchpad catchall" - MatchIsTouchpad "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev tablet catchall" - MatchIsTablet "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection - -Section "InputClass" - Identifier "evdev touchscreen catchall" - MatchIsTouchscreen "on" - MatchDevicePath "/dev/input/event*" - Driver "evdev" -EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/12-screen.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/12-screen.conf index da0a511..47041bf 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/12-screen.conf +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/12-screen.conf @@ -1,33 +1,5 @@ Section "Screen" - Identifier "Screen0" - Device "Card0" - Monitor "Monitor0" - SubSection "Display" - Viewport 0 0 - Depth 1 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 4 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 8 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 15 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 16 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 24 - EndSubSection - SubSection "Display" - Viewport 0 0 - Depth 32 - EndSubSection + Identifier "Screen0" + Device "Intel Graphics" + DefaultDepth 24 EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/15-dri.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/15-dri.conf deleted file mode 100644 index 4cfe2e5..0000000 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/15-dri.conf +++ /dev/null @@ -1,3 +0,0 @@ -Section "Dri" - Mode 0660 -EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/40-libinput.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/40-libinput.conf new file mode 100644 index 0000000..43e22db --- /dev/null +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/40-libinput.conf @@ -0,0 +1,37 @@ +# libinput catch-all configuration (Xorg) +# This replaces legacy evdev/synaptics catch-alls. + +Section "InputClass" + Identifier "libinput pointer catchall" + MatchIsPointer "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput keyboard catchall" + MatchIsKeyboard "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchpad catchall" + MatchIsTouchpad "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput touchscreen catchall" + MatchIsTouchscreen "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection + +Section "InputClass" + Identifier "libinput tablet catchall" + MatchIsTablet "on" + MatchDevicePath "/dev/input/event*" + Driver "libinput" +EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/70-synaptics.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/70-synaptics.conf deleted file mode 100644 index aa50456..0000000 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/70-synaptics.conf +++ /dev/null @@ -1,46 +0,0 @@ -# Example xorg.conf.d snippet that assigns the touchpad driver -# to all touchpads. See xorg.conf.d(5) for more information on -# InputClass. -# DO NOT EDIT THIS FILE, your distribution will likely overwrite -# it when updating. Copy (and rename) this file into -# /etc/X11/xorg.conf.d first. -# Additional options may be added in the form of -# Option "OptionName" "value" -# -Section "InputClass" - Identifier "touchpad catchall" - Driver "synaptics" - MatchIsTouchpad "on" -# This option is recommend on all Linux systems using evdev, but cannot be -# enabled by default. See the following link for details: -# http://who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html -# MatchDevicePath "/dev/input/event*" -EndSection - -Section "InputClass" - Identifier "touchpad ignore duplicates" - MatchIsTouchpad "on" - MatchOS "Linux" - MatchDevicePath "/dev/input/mouse*" - Option "Ignore" "on" -EndSection - -# This option enables the bottom right corner to be a right button on clickpads -# and the right and middle top areas to be right / middle buttons on clickpads -# with a top button area. -# This option is only interpreted by clickpads. -Section "InputClass" - Identifier "Default clickpad buttons" - MatchDriver "synaptics" - Option "SoftButtonAreas" "50% 0 82% 0 0 0 0 0" - Option "SecondarySoftButtonAreas" "58% 0 0 15% 42% 58% 0 15%" -EndSection - -# This option disables software buttons on Apple touchpads. -# This option is only interpreted by clickpads. -Section "InputClass" - Identifier "Disable clickpad buttons on Apple touchpads" - MatchProduct "Apple|bcm5974" - MatchDriver "synaptics" - Option "SoftButtonAreas" "0 0 0 0 0 0 0 0" -EndSection diff --git a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/90-input.conf b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/90-input.conf index 7628653..581d674 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/90-input.conf +++ b/buildroot-external/rootfs-overlay/etc/X11/xorg.conf.d/90-input.conf @@ -1,6 +1,4 @@ Section "ServerFlags" - Option "AutoAddDevices" "true" - Option "AutoEnableDevices" "true" - Option "AllowEmptyInput" "true" - Option "IgnoreABI" "true" + # Useful for headless/late-attached input devices. + Option "AllowEmptyInput" "true" EndSection From 0fb75e5c429a38014a4bfae93c74da24f5fa700a Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 21 Jan 2026 08:42:55 +0100 Subject: [PATCH 234/247] bump upstream kernel to 6.12.66 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index ed89bf8..df90016 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.65" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.66" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 77d68e6..2480581 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -9,7 +9,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.65" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.66" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index ce1cafe..e556db9 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 54e852667af35c0ed06cfc81311e65fa7f5f798a3bfcf78a559d3b4785a139c1 linux-6.12.65.tar.xz +sha256 ba3897a1c060b05a03cb4dda6f20d8c75e6f73c88b217744823a915056536eaf linux-6.12.66.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index ce1cafe..e556db9 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 54e852667af35c0ed06cfc81311e65fa7f5f798a3bfcf78a559d3b4785a139c1 linux-6.12.65.tar.xz +sha256 ba3897a1c060b05a03cb4dda6f20d8c75e6f73c88b217744823a915056536eaf linux-6.12.66.tar.xz From de46cfc831ac206a7c9f70943bf6dba7ad57774a Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 21 Jan 2026 15:47:18 +0100 Subject: [PATCH 235/247] updated qutselect to 3.14 with updated app.sh startup script for better BBB integration. --- buildroot-external/package/qutselect/qutselect.hash | 2 +- buildroot-external/package/qutselect/qutselect.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/package/qutselect/qutselect.hash b/buildroot-external/package/qutselect/qutselect.hash index 8f04786..fd68fd1 100644 --- a/buildroot-external/package/qutselect/qutselect.hash +++ b/buildroot-external/package/qutselect/qutselect.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 f1b76ea0fa840d6bf504f8420384a8304afda142433be2b0f6a4be550284f445 qutselect-3.13.tar.gz +sha256 4626836bc25a02a04d8304c3da03591f2efde7413552cd2a90dcc5a52dd45fbe qutselect-3.14.tar.gz diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index 870394f..057894a 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -4,7 +4,7 @@ # ################################################################################ -QUTSELECT_VERSION = 3.13 +QUTSELECT_VERSION = 3.14 QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE From a983d77113340bf6269bb7103c8fa91f0aa7d135 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 21 Jan 2026 15:48:47 +0100 Subject: [PATCH 236/247] disable X11 debugging options --- buildroot-external/Buildroot.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index e83fb34..7ff9519 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -109,5 +109,5 @@ BR2_PACKAGE_XKB_SWITCH=y BR2_PACKAGE_PIPEWIRE=y # X11 debug -BR2_PACKAGE_XAPP_XDPYINFO=y -BR2_PACKAGE_MESA3D_DEMOS=y +#BR2_PACKAGE_XAPP_XDPYINFO=y +#BR2_PACKAGE_MESA3D_DEMOS=y From a6cb87b3fd68efbb7dc6de11ad427f68f2c5d97c Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 21 Jan 2026 18:03:42 +0100 Subject: [PATCH 237/247] bump buildroot to 2025.11.1 --- Makefile | 4 ++-- buildroot-patches/0008-rpi-firmware.patch | 2 +- .../buildroot/package/rpi-firmware/rpi-firmware.mk.orig | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 5e216ef..2bb79f1 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -BUILDROOT_VERSION=2025.11 -BUILDROOT_SHA256=50062bfb50d3bae686daddd90885b02de018c1abf36034e0637bffdca28d9b98 +BUILDROOT_VERSION=2025.11.1 +BUILDROOT_SHA256=234b2e9bfad26d38dcca297daf9d7c0055826d98730c3f1da5515ba8e3ad7ca6 BUILDROOT_EXTERNAL=buildroot-external DEFCONFIG_DIR=$(BUILDROOT_EXTERNAL)/configs DATE=$(shell date +%Y%m%d) diff --git a/buildroot-patches/0008-rpi-firmware.patch b/buildroot-patches/0008-rpi-firmware.patch index df40ade..da988bb 100644 --- a/buildroot-patches/0008-rpi-firmware.patch +++ b/buildroot-patches/0008-rpi-firmware.patch @@ -17,7 +17,7 @@ ################################################################################ # Please keep in sync with configs/raspberrypi*_deconfig --RPI_FIRMWARE_VERSION = 95be71b8c0f63f03dc06dd0e4c2e5535e6fb4a93 +-RPI_FIRMWARE_VERSION = 063bcab6c8a90efb0d19f69d88cbbc7ec79cab68 +RPI_FIRMWARE_VERSION = $(call qstrip,$(BR2_PACKAGE_RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3-Clause diff --git a/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig b/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig index d0b6abc..3318e9a 100644 --- a/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig +++ b/buildroot-patches/0008-rpi-firmware/buildroot/package/rpi-firmware/rpi-firmware.mk.orig @@ -5,7 +5,7 @@ ################################################################################ # Please keep in sync with configs/raspberrypi*_deconfig -RPI_FIRMWARE_VERSION = 95be71b8c0f63f03dc06dd0e4c2e5535e6fb4a93 +RPI_FIRMWARE_VERSION = 063bcab6c8a90efb0d19f69d88cbbc7ec79cab68 RPI_FIRMWARE_SITE = $(call github,raspberrypi,firmware,$(RPI_FIRMWARE_VERSION)) RPI_FIRMWARE_LICENSE = BSD-3-Clause RPI_FIRMWARE_LICENSE_FILES = boot/LICENCE.broadcom From 4e0e100dd1d718252f05a76bc6411c1f58c93259 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 22 Jan 2026 11:06:05 +0100 Subject: [PATCH 238/247] add xcompmgr to bring up an X11 compositor up. --- buildroot-external/Buildroot.config | 1 + buildroot-external/rootfs-overlay/bin/wm-startup.sh | 6 +++++- .../rootfs-overlay/etc/X11/Xsession.d/99x11-common_start | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index 7ff9519..285a818 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -64,6 +64,7 @@ BR2_PACKAGE_XORG7=y BR2_PACKAGE_XSERVER_XORG_SERVER=y BR2_PACKAGE_XLIB_LIBXAW=y BR2_PACKAGE_XLIB_LIBXV=y +BR2_PACKAGE_XAPP_XCOMPMGR=y BR2_PACKAGE_XAPP_XPROP=y BR2_PACKAGE_XAPP_XRANDR=y BR2_PACKAGE_XAPP_XSETROOT=y diff --git a/buildroot-external/rootfs-overlay/bin/wm-startup.sh b/buildroot-external/rootfs-overlay/bin/wm-startup.sh index 84ba24d..ea02817 100755 --- a/buildroot-external/rootfs-overlay/bin/wm-startup.sh +++ b/buildroot-external/rootfs-overlay/bin/wm-startup.sh @@ -61,6 +61,10 @@ create_thinlinc_conf -remove _NET_DESKTOP_NAMES \ -remove _NET_CURRENT_DESKTOP 2> /dev/null +# start compositor process (xcompmgr) +/usr/bin/xcompmgr -c -f -D 3 & +sleep 0.2 + # start wm (openbox is the default) if [ -z "${SESSION_0_WM}" ]; then SESSION_0_WM=/usr/bin/openbox @@ -92,7 +96,7 @@ fi # start qutselect unlimited while true; do - if ! ${SESSION_0_XSTARTUP} >/var/log/xm-startup.log 2>&1; then + if ! ${SESSION_0_XSTARTUP}; then break fi done diff --git a/buildroot-external/rootfs-overlay/etc/X11/Xsession.d/99x11-common_start b/buildroot-external/rootfs-overlay/etc/X11/Xsession.d/99x11-common_start index 559f159..d834285 100644 --- a/buildroot-external/rootfs-overlay/etc/X11/Xsession.d/99x11-common_start +++ b/buildroot-external/rootfs-overlay/etc/X11/Xsession.d/99x11-common_start @@ -1,6 +1,6 @@ # $Id: 99x11-common_start 305 2005-07-03 18:51:43Z dnusinow $ # start windows manager and topmost app not exiting at all. -exec /bin/wm-startup.sh +exec /bin/wm-startup.sh >/var/log/wm-startup.log 2>&1 # vim:set ai et sts=2 sw=2 tw=80: From 8123ee48b544b637ad039c8c8c28cba6cddc4458 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 22 Jan 2026 18:29:54 +0100 Subject: [PATCH 239/247] add zoom to qutselect-disconnect.sh --- buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh b/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh index 343c666..18c761c 100755 --- a/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh +++ b/buildroot-external/rootfs-overlay/bin/qutselect-disconnect.sh @@ -2,4 +2,4 @@ # # kill all qutselect related sessions and return to the qutselect GUI # -pkill "tlclient.bin|xfreerdp|rdesktop|vncviewer|remote-viewer|chrome" +pkill "tlclient.bin|xfreerdp|rdesktop|vncviewer|remote-viewer|chrome|zoom" From 65c718d99e6e0abb7f5007739a58e65d3253805a Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 22 Jan 2026 18:30:23 +0100 Subject: [PATCH 240/247] use xcompmgr with less compositing styles making it more lightweight. --- buildroot-external/rootfs-overlay/bin/wm-startup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildroot-external/rootfs-overlay/bin/wm-startup.sh b/buildroot-external/rootfs-overlay/bin/wm-startup.sh index ea02817..6193039 100755 --- a/buildroot-external/rootfs-overlay/bin/wm-startup.sh +++ b/buildroot-external/rootfs-overlay/bin/wm-startup.sh @@ -62,7 +62,7 @@ create_thinlinc_conf -remove _NET_CURRENT_DESKTOP 2> /dev/null # start compositor process (xcompmgr) -/usr/bin/xcompmgr -c -f -D 3 & +/usr/bin/xcompmgr & sleep 0.2 # start wm (openbox is the default) From c7a6cbdec9ec1431531ccd7d7ef9c5127191b91d Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 22 Jan 2026 19:33:32 +0100 Subject: [PATCH 241/247] added new setrootpix buildroot package to compile and integrate a 'setrootpix' utility which can be used instead of xsetroot to set the X11 backrgound in a solid-color using a 1x1 pixmap tiled by the X server. This is done in a way that a potential X11 compositor (e.g. xcompmgr) will take care to keep the background color intact (which xsetroot does not seem to allow). --- buildroot-external/Buildroot.config | 1 + buildroot-external/Config.in | 1 + .../package/setrootpix/Config.in | 6 + buildroot-external/package/setrootpix/LICENSE | 201 ++++++++++++++++++ .../package/setrootpix/Makefile | 13 ++ .../package/setrootpix/setrootpix.c | 94 ++++++++ .../package/setrootpix/setrootpix.hash | 1 + .../package/setrootpix/setrootpix.mk | 22 ++ .../rootfs-overlay/bin/wm-startup.sh | 6 +- 9 files changed, 342 insertions(+), 3 deletions(-) create mode 100644 buildroot-external/package/setrootpix/Config.in create mode 100644 buildroot-external/package/setrootpix/LICENSE create mode 100644 buildroot-external/package/setrootpix/Makefile create mode 100644 buildroot-external/package/setrootpix/setrootpix.c create mode 100644 buildroot-external/package/setrootpix/setrootpix.hash create mode 100644 buildroot-external/package/setrootpix/setrootpix.mk diff --git a/buildroot-external/Buildroot.config b/buildroot-external/Buildroot.config index 285a818..0fd19ce 100644 --- a/buildroot-external/Buildroot.config +++ b/buildroot-external/Buildroot.config @@ -108,6 +108,7 @@ BR2_PACKAGE_XPRINTIDLE=y BR2_PACKAGE_XOSD=y BR2_PACKAGE_XKB_SWITCH=y BR2_PACKAGE_PIPEWIRE=y +BR2_PACKAGE_SETROOTPIX=y # X11 debug #BR2_PACKAGE_XAPP_XDPYINFO=y diff --git a/buildroot-external/Config.in b/buildroot-external/Config.in index 0b470d7..d0a76cf 100644 --- a/buildroot-external/Config.in +++ b/buildroot-external/Config.in @@ -18,4 +18,5 @@ menu "Additional software" source "$BR2_EXTERNAL_THINROOT_PATH/package/yoe-kiosk-browser/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/xosd/Config.in" source "$BR2_EXTERNAL_THINROOT_PATH/package/xkb-switch/Config.in" + source "$BR2_EXTERNAL_THINROOT_PATH/package/setrootpix/Config.in" endmenu diff --git a/buildroot-external/package/setrootpix/Config.in b/buildroot-external/package/setrootpix/Config.in new file mode 100644 index 0000000..4612959 --- /dev/null +++ b/buildroot-external/package/setrootpix/Config.in @@ -0,0 +1,6 @@ +config BR2_PACKAGE_SETROOTPIX + bool "setrootpix" + select BR2_PACKAGE_XLIB_LIBX11 + help + A utility to set the X11 root window to dedicated color in + a compositor-compatible way. diff --git a/buildroot-external/package/setrootpix/LICENSE b/buildroot-external/package/setrootpix/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/buildroot-external/package/setrootpix/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/buildroot-external/package/setrootpix/Makefile b/buildroot-external/package/setrootpix/Makefile new file mode 100644 index 0000000..6e084d1 --- /dev/null +++ b/buildroot-external/package/setrootpix/Makefile @@ -0,0 +1,13 @@ +CC = gcc + +CFLAGS = -Wall -Wextra -O2 -pipe + +all: setrootpix + +setrootpix: setrootpix.o + $(CC) -o setrootpix setrootpix.o -lX11 + +.c.o: + $(CC) -c $(CFLAGS) $< + +setrootpix.o: setrootpix.c diff --git a/buildroot-external/package/setrootpix/setrootpix.c b/buildroot-external/package/setrootpix/setrootpix.c new file mode 100644 index 0000000..52bf8db --- /dev/null +++ b/buildroot-external/package/setrootpix/setrootpix.c @@ -0,0 +1,94 @@ +/* + * setrootpix.c + * + * Set a solid-color root background using a 1x1 pixmap (tiled by the X server), + * and publish _XROOTPMAP_ID + ESETROOT_PMAP_ID hints. Uses RetainPermanent so + * the pixmap survives after this helper exits. + * + * Build: + * cc -O2 -Wall -Wextra -o setrootpix setrootpix.c -lX11 + * + * Usage: + * ./setrootpix "#32436B" + */ + +#include +#include +#include +#include + +static int alloc_color(Display *dpy, Colormap cmap, const char *spec, XColor *out) +{ + if (!XParseColor(dpy, cmap, spec, out)) { + return 0; + } + if (!XAllocColor(dpy, cmap, out)) { + return 0; + } + return 1; +} + +int main(int argc, char **argv) +{ + const char *color = (argc >= 2) ? argv[1] : "#32436B"; + + Display *dpy = XOpenDisplay(NULL); + if (!dpy) { + fprintf(stderr, "setrootpix: cannot open display\n"); + return 1; + } + + const int scr = DefaultScreen(dpy); + Window root = RootWindow(dpy, scr); + Colormap cmap = DefaultColormap(dpy, scr); + + /* Ensure server retains resources after this client exits (critical). */ + XSetCloseDownMode(dpy, RetainPermanent); + + XColor col; + if (!alloc_color(dpy, cmap, color, &col)) { + fprintf(stderr, "setrootpix: cannot parse/alloc color '%s'\n", color); + XCloseDisplay(dpy); + return 2; + } + + /* 1x1 pixmap; the server will tile it across the root window. */ + Pixmap pm = XCreatePixmap(dpy, root, 1, 1, DefaultDepth(dpy, scr)); + if (!pm) { + fprintf(stderr, "setrootpix: XCreatePixmap failed\n"); + XCloseDisplay(dpy); + return 3; + } + + GC gc = XCreateGC(dpy, pm, 0, NULL); + if (!gc) { + fprintf(stderr, "setrootpix: XCreateGC failed\n"); + XFreePixmap(dpy, pm); + XCloseDisplay(dpy); + return 4; + } + + XSetForeground(dpy, gc, col.pixel); + XFillRectangle(dpy, pm, gc, 0, 0, 1, 1); + XFreeGC(dpy, gc); + + /* Apply background pixmap and force redraw. */ + XSetWindowBackgroundPixmap(dpy, root, pm); + XClearWindow(dpy, root); + + /* Publish well-known background pixmap hints. */ + Atom a_root = XInternAtom(dpy, "_XROOTPMAP_ID", False); + Atom a_eset = XInternAtom(dpy, "ESETROOT_PMAP_ID", False); + + /* Note: properties are 32-bit items; Pixmap is an XID, safe to store as unsigned long. */ + unsigned long pm_id = (unsigned long)pm; + + XChangeProperty(dpy, root, a_root, XA_PIXMAP, 32, PropModeReplace, + (unsigned char *)&pm_id, 1); + XChangeProperty(dpy, root, a_eset, XA_PIXMAP, 32, PropModeReplace, + (unsigned char *)&pm_id, 1); + + XFlush(dpy); + XCloseDisplay(dpy); + return 0; +} diff --git a/buildroot-external/package/setrootpix/setrootpix.hash b/buildroot-external/package/setrootpix/setrootpix.hash new file mode 100644 index 0000000..e63ebdc --- /dev/null +++ b/buildroot-external/package/setrootpix/setrootpix.hash @@ -0,0 +1 @@ +sha256 c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE diff --git a/buildroot-external/package/setrootpix/setrootpix.mk b/buildroot-external/package/setrootpix/setrootpix.mk new file mode 100644 index 0000000..3696f09 --- /dev/null +++ b/buildroot-external/package/setrootpix/setrootpix.mk @@ -0,0 +1,22 @@ +################################################################################ +# +# setrootpix +# +################################################################################ + +SETROOTPIX_VERSION = 0.1.0 +SETROOTPIX_SITE = $(BR2_EXTERNAL_THINROOT_PATH)/package/setrootpix +SETROOTPIX_SITE_METHOD = local +SETROOTPIX_LICENSE = Apache-2.0 +SETROOTPIX_LICENSE_FILES = LICENSE +SETROOTPIX_DEPENDENCIES = xlib_libX11 + +define SETROOTPIX_BUILD_CMDS + $(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" CFLAGS="$(TARGET_CFLAGS)" -C $(@D) all +endef + +define SETROOTPIX_INSTALL_TARGET_CMDS + $(INSTALL) -D -m 0755 $(@D)/setrootpix $(TARGET_DIR)/usr/bin +endef + +$(eval $(generic-package)) diff --git a/buildroot-external/rootfs-overlay/bin/wm-startup.sh b/buildroot-external/rootfs-overlay/bin/wm-startup.sh index 6193039..8e9d8ee 100755 --- a/buildroot-external/rootfs-overlay/bin/wm-startup.sh +++ b/buildroot-external/rootfs-overlay/bin/wm-startup.sh @@ -61,6 +61,9 @@ create_thinlinc_conf -remove _NET_DESKTOP_NAMES \ -remove _NET_CURRENT_DESKTOP 2> /dev/null +# set solid background color in root window +/usr/bin/setrootpix "#32436B" + # start compositor process (xcompmgr) /usr/bin/xcompmgr & sleep 0.2 @@ -76,9 +79,6 @@ if ! wait_for_wm; then echo "$0: Timeout waiting for wm to start" fi -# set solid background color in root window -/usr/bin/xsetroot -solid "#32436B" - # move mouse pointer off screen to hide it in case # a user wants this upon startup if [ "${SESSION_0_HIDECURSOR}" = "true" ]; then From 6a838f3f3f9018d750db07b31d3704c6d81867a5 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 22 Jan 2026 20:00:32 +0100 Subject: [PATCH 242/247] reworked setrootpix to also add _XSETROOT_ID for xsetroot compatibility --- .../package/setrootpix/setrootpix.c | 46 +++++++++++-------- .../package/setrootpix/setrootpix.mk | 2 +- 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/buildroot-external/package/setrootpix/setrootpix.c b/buildroot-external/package/setrootpix/setrootpix.c index 52bf8db..1bd4319 100644 --- a/buildroot-external/package/setrootpix/setrootpix.c +++ b/buildroot-external/package/setrootpix/setrootpix.c @@ -1,12 +1,16 @@ /* * setrootpix.c * - * Set a solid-color root background using a 1x1 pixmap (tiled by the X server), - * and publish _XROOTPMAP_ID + ESETROOT_PMAP_ID hints. Uses RetainPermanent so - * the pixmap survives after this helper exits. + * Sets a solid-color root background using a 1x1 pixmap (tiled by the X server), + * and publishes background pixmap hints: + * - _XROOTPMAP_ID + * - ESETROOT_PMAP_ID + * - _XSETROOT_ID + * + * Uses RetainPermanent so the pixmap survives after this helper exits. * * Build: - * cc -O2 -Wall -Wextra -o setrootpix setrootpix.c -lX11 + * ${TARGET_CC} -O2 -Wall -Wextra -o setrootpix setrootpix.c -lX11 * * Usage: * ./setrootpix "#32436B" @@ -14,8 +18,8 @@ #include #include +#include #include -#include static int alloc_color(Display *dpy, Colormap cmap, const char *spec, XColor *out) { @@ -28,6 +32,15 @@ static int alloc_color(Display *dpy, Colormap cmap, const char *spec, XColor *ou return 1; } +static void set_pixmap_property(Display *dpy, Window root, Atom prop, Pixmap pm) +{ + /* XIDs are 32-bit; store as 32-bit item for XChangeProperty format=32. */ + uint32_t id = (uint32_t)pm; + + XChangeProperty(dpy, root, prop, XA_PIXMAP, 32, PropModeReplace, + (unsigned char *)&id, 1); +} + int main(int argc, char **argv) { const char *color = (argc >= 2) ? argv[1] : "#32436B"; @@ -42,7 +55,7 @@ int main(int argc, char **argv) Window root = RootWindow(dpy, scr); Colormap cmap = DefaultColormap(dpy, scr); - /* Ensure server retains resources after this client exits (critical). */ + /* Critical: keep resources (pixmap) after this client exits. */ XSetCloseDownMode(dpy, RetainPermanent); XColor col; @@ -52,7 +65,7 @@ int main(int argc, char **argv) return 2; } - /* 1x1 pixmap; the server will tile it across the root window. */ + /* 1x1 pixmap; will be tiled across the root window. */ Pixmap pm = XCreatePixmap(dpy, root, 1, 1, DefaultDepth(dpy, scr)); if (!pm) { fprintf(stderr, "setrootpix: XCreatePixmap failed\n"); @@ -72,21 +85,18 @@ int main(int argc, char **argv) XFillRectangle(dpy, pm, gc, 0, 0, 1, 1); XFreeGC(dpy, gc); - /* Apply background pixmap and force redraw. */ + /* Apply pixmap as root background and repaint. */ XSetWindowBackgroundPixmap(dpy, root, pm); XClearWindow(dpy, root); - /* Publish well-known background pixmap hints. */ - Atom a_root = XInternAtom(dpy, "_XROOTPMAP_ID", False); - Atom a_eset = XInternAtom(dpy, "ESETROOT_PMAP_ID", False); - - /* Note: properties are 32-bit items; Pixmap is an XID, safe to store as unsigned long. */ - unsigned long pm_id = (unsigned long)pm; + /* Publish hints used by compositors / pseudo-transparency clients. */ + Atom a_root = XInternAtom(dpy, "_XROOTPMAP_ID", False); + Atom a_eset = XInternAtom(dpy, "ESETROOT_PMAP_ID", False); + Atom a_xset = XInternAtom(dpy, "_XSETROOT_ID", False); - XChangeProperty(dpy, root, a_root, XA_PIXMAP, 32, PropModeReplace, - (unsigned char *)&pm_id, 1); - XChangeProperty(dpy, root, a_eset, XA_PIXMAP, 32, PropModeReplace, - (unsigned char *)&pm_id, 1); + set_pixmap_property(dpy, root, a_root, pm); + set_pixmap_property(dpy, root, a_eset, pm); + set_pixmap_property(dpy, root, a_xset, pm); XFlush(dpy); XCloseDisplay(dpy); diff --git a/buildroot-external/package/setrootpix/setrootpix.mk b/buildroot-external/package/setrootpix/setrootpix.mk index 3696f09..7afab79 100644 --- a/buildroot-external/package/setrootpix/setrootpix.mk +++ b/buildroot-external/package/setrootpix/setrootpix.mk @@ -4,7 +4,7 @@ # ################################################################################ -SETROOTPIX_VERSION = 0.1.0 +SETROOTPIX_VERSION = 0.2.0 SETROOTPIX_SITE = $(BR2_EXTERNAL_THINROOT_PATH)/package/setrootpix SETROOTPIX_SITE_METHOD = local SETROOTPIX_LICENSE = Apache-2.0 From 6edaf671fb13c542fd3f5c0490c8bd37b20bc5d4 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Thu, 22 Jan 2026 21:19:58 +0100 Subject: [PATCH 243/247] bump qutselect to 3.15 --- buildroot-external/package/qutselect/qutselect.hash | 2 +- buildroot-external/package/qutselect/qutselect.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/package/qutselect/qutselect.hash b/buildroot-external/package/qutselect/qutselect.hash index fd68fd1..db6f4ba 100644 --- a/buildroot-external/package/qutselect/qutselect.hash +++ b/buildroot-external/package/qutselect/qutselect.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 4626836bc25a02a04d8304c3da03591f2efde7413552cd2a90dcc5a52dd45fbe qutselect-3.14.tar.gz +sha256 247ba3bede4d620d3bc4cb876b88c4225f17d1878f90d06da8e96d3af420e902 qutselect-3.15.tar.gz diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index 057894a..749f086 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -4,7 +4,7 @@ # ################################################################################ -QUTSELECT_VERSION = 3.14 +QUTSELECT_VERSION = 3.15 QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE From 6bd1404d4a31d3162493e8ace84b40eed4e657f4 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 23 Jan 2026 10:44:07 +0100 Subject: [PATCH 244/247] remove 01-mouse.conf modifications in S42LoadNetFiles as we switched to libinput which does not support the old "Resolution" setting anyway. --- buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles | 5 ----- 1 file changed, 5 deletions(-) diff --git a/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles b/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles index 496e747..c657bb9 100755 --- a/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles +++ b/buildroot-external/rootfs-overlay/etc/init.d/S42LoadNetFiles @@ -192,11 +192,6 @@ setup_xconf() { sed -i "/Option .*AutoRepeat/c\\\tOption \"AutoRepeat\" \"${KEYBOARD_AUTOREPEAT}\"" /etc/X11/xorg.conf.d/00-keyboard.conf fi - # 01-mouse.conf - if [[ -n "${MOUSE_RESOLUTION}" ]]; then - sed -i "/Option .*Resolution/c\\\tOption \"Resolution\" \"${MOUSE_RESOLUTION}\"" /etc/X11/xorg.conf.d/01-mouse.conf - fi - # 10-serverlayout.conf if [[ -n "${SCREEN_BLANK_TIME}" ]]; then sed -i "/Option .*BlankTime/c\\\tOption \"BlankTime\" \"${SCREEN_BLANK_TIME}\"" /etc/X11/xorg.conf.d/10-serverlayout.conf From 26c8bca8f7f878eb6c78fe307518eaf7abea1102 Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Fri, 23 Jan 2026 13:03:54 +0100 Subject: [PATCH 245/247] bump qutselect to 3.16 --- buildroot-external/package/qutselect/qutselect.hash | 2 +- buildroot-external/package/qutselect/qutselect.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/package/qutselect/qutselect.hash b/buildroot-external/package/qutselect/qutselect.hash index db6f4ba..a939866 100644 --- a/buildroot-external/package/qutselect/qutselect.hash +++ b/buildroot-external/package/qutselect/qutselect.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 247ba3bede4d620d3bc4cb876b88c4225f17d1878f90d06da8e96d3af420e902 qutselect-3.15.tar.gz +sha256 65529cdf83de2ca328eb07be85e2503ffbc60b93ad0cf50f4ae7922aab93f790 qutselect-3.16.tar.gz diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index 749f086..a6e1325 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -4,7 +4,7 @@ # ################################################################################ -QUTSELECT_VERSION = 3.15 +QUTSELECT_VERSION = 3.16 QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE From dbf6cf3b2718d6dfe8972054534db09c06ebf58b Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 4 Feb 2026 08:49:33 +0100 Subject: [PATCH 246/247] bump upstream kernel to 6.12.68 --- buildroot-external/configs/generic-x86_64.config | 2 +- buildroot-external/configs/tinkerboard.config | 2 +- buildroot-external/patches/linux-headers/linux-headers.hash | 2 +- buildroot-external/patches/linux/linux.hash | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/buildroot-external/configs/generic-x86_64.config b/buildroot-external/configs/generic-x86_64.config index df90016..3c6eefc 100644 --- a/buildroot-external/configs/generic-x86_64.config +++ b/buildroot-external/configs/generic-x86_64.config @@ -7,7 +7,7 @@ BR2_ROOTFS_POST_BUILD_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64 BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/post-image.sh" BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64" BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.66" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.68" BR2_LINUX_KERNEL_DEFCONFIG="x86_64" BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/global.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/device-support-pci.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security-x86_64.config $(BR2_EXTERNAL_THINROOT_PATH)/kernel/6.12/security.config $(BR2_EXTERNAL_THINROOT_PATH)/board/generic-x86_64/kernel.config" BR2_PACKAGE_MESA3D_GALLIUM_DRIVER_CROCUS=y diff --git a/buildroot-external/configs/tinkerboard.config b/buildroot-external/configs/tinkerboard.config index 2480581..da9752e 100644 --- a/buildroot-external/configs/tinkerboard.config +++ b/buildroot-external/configs/tinkerboard.config @@ -9,7 +9,7 @@ BR2_ROOTFS_POST_IMAGE_SCRIPT="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/po BR2_ROOTFS_POST_SCRIPT_ARGS="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.66" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="6.12.68" BR2_LINUX_KERNEL_PATCH="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel-patches" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_THINROOT_PATH)/board/tinkerboard/kernel_defconfig" diff --git a/buildroot-external/patches/linux-headers/linux-headers.hash b/buildroot-external/patches/linux-headers/linux-headers.hash index e556db9..629b3a5 100644 --- a/buildroot-external/patches/linux-headers/linux-headers.hash +++ b/buildroot-external/patches/linux-headers/linux-headers.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 ba3897a1c060b05a03cb4dda6f20d8c75e6f73c88b217744823a915056536eaf linux-6.12.66.tar.xz +sha256 d367c7504bd4da520dd01eb08125d2d0ac088bc8af4cd56d236f2074dd4225b7 linux-6.12.68.tar.xz diff --git a/buildroot-external/patches/linux/linux.hash b/buildroot-external/patches/linux/linux.hash index e556db9..629b3a5 100644 --- a/buildroot-external/patches/linux/linux.hash +++ b/buildroot-external/patches/linux/linux.hash @@ -1,3 +1,3 @@ sha256 4f57f762991ca6455476f2ad9902595abaff1ddd600892c7f0797ecbe2cd1f37 fc20eb4e650bf793bd6b3d804a63b67085c55f08.tar.gz sha256 f26e1a7fb1f01005767792706dae81db6de8ee7b8b01881224a1a9a44c277ebb stable_20250127.tar.gz -sha256 ba3897a1c060b05a03cb4dda6f20d8c75e6f73c88b217744823a915056536eaf linux-6.12.66.tar.xz +sha256 d367c7504bd4da520dd01eb08125d2d0ac088bc8af4cd56d236f2074dd4225b7 linux-6.12.68.tar.xz From f33f7be4034c68ca8f7e9d4762e78d75f25492dd Mon Sep 17 00:00:00 2001 From: Jens Maus Date: Wed, 4 Feb 2026 08:52:52 +0100 Subject: [PATCH 247/247] bump qutselect to 3.17 --- buildroot-external/package/qutselect/qutselect.hash | 2 +- buildroot-external/package/qutselect/qutselect.mk | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/buildroot-external/package/qutselect/qutselect.hash b/buildroot-external/package/qutselect/qutselect.hash index a939866..c2e7ddb 100644 --- a/buildroot-external/package/qutselect/qutselect.hash +++ b/buildroot-external/package/qutselect/qutselect.hash @@ -1,2 +1,2 @@ # Locally computed -sha256 65529cdf83de2ca328eb07be85e2503ffbc60b93ad0cf50f4ae7922aab93f790 qutselect-3.16.tar.gz +sha256 955a7262bf4b788799eed891740969d94c2fb549ae9d85f43459fd2b887eb2a0 qutselect-3.17.tar.gz diff --git a/buildroot-external/package/qutselect/qutselect.mk b/buildroot-external/package/qutselect/qutselect.mk index a6e1325..3dd1506 100644 --- a/buildroot-external/package/qutselect/qutselect.mk +++ b/buildroot-external/package/qutselect/qutselect.mk @@ -4,7 +4,7 @@ # ################################################################################ -QUTSELECT_VERSION = 3.16 +QUTSELECT_VERSION = 3.17 QUTSELECT_SITE = $(call github,hzdr,qutselect,$(QUTSELECT_VERSION)) QUTSELECT_LICENSE = LGPL-3.0 QUTSELECT_LICENSE_FILES = LICENSE