Browse Source

Merge branch 'master' into next

Thomas Petazzoni 3 years ago
parent
commit
336b4a639a
61 changed files with 1985 additions and 62 deletions
  1. 1 0
      DEVELOPERS
  2. 5 0
      board/arcturus/aarch64-ucls1012a/post-build.sh
  3. 249 0
      boot/optee-os/0003-mk-core-ta-Configurable-Python-interpreter.patch
  4. 3 2
      boot/optee-os/optee-os.mk
  5. 5 4
      configs/arcturus_ucls1012a_defconfig
  6. 8 11
      configs/ci20_defconfig
  7. 1 0
      configs/globalscale_espressobin_defconfig
  8. 1 1
      configs/microchip_sama5d27_wlsom1_ek_mmc_dev_defconfig
  9. 1 0
      configs/nitrogen6sx_defconfig
  10. 1 0
      configs/nitrogen6x_defconfig
  11. 1 0
      configs/nitrogen7_defconfig
  12. 1 0
      configs/nitrogen8m_defconfig
  13. 1 0
      configs/nitrogen8mm_defconfig
  14. 1 0
      configs/nitrogen8mn_defconfig
  15. 1 8
      configs/qemu_arm_vexpress_tz_defconfig
  16. 26 0
      package/aircrack-ng/0001-Expand-packed-definition.patch
  17. 74 0
      package/aircrack-ng/0002-Fix-duplicated-symbols.patch
  18. 3 2
      package/apache/apache.hash
  19. 1 1
      package/apache/apache.mk
  20. 9 0
      package/atest/0001-seq.h-fix-build-with-gcc-10.patch
  21. 1 0
      package/boost/boost.mk
  22. 2 0
      package/collectd/Config.in
  23. 2 0
      package/efl/efl.mk
  24. 195 0
      package/f2fs-tools/0002-fsck.f2fs-correct-return-value.patch
  25. 1 1
      package/feh/feh.hash
  26. 2 2
      package/fping/fping.hash
  27. 1 1
      package/fping/fping.mk
  28. 3 3
      package/gdk-pixbuf/gdk-pixbuf.hash
  29. 1 1
      package/gdk-pixbuf/gdk-pixbuf.mk
  30. 3 1
      package/grpc/Config.in
  31. 173 0
      package/htop/0002-Resolve-complation-issues-with-fno-common.patch
  32. 1 6
      package/iputils/iputils.mk
  33. 77 0
      package/libabseil-cpp/0003-Fix-build-on-riscv32-675.patch
  34. 19 2
      package/libabseil-cpp/Config.in
  35. 4 0
      package/libcamera/libcamera.mk
  36. 1 1
      package/libfuse3/libfuse3.hash
  37. 1 1
      package/libfuse3/libfuse3.mk
  38. 5 4
      package/librtlsdr/0001-disable_shared_library_target_in_build.patch
  39. 47 0
      package/librtlsdr/0002-cmake-Modules-Version.cmake-don-t-use-Git-version-if.patch
  40. 2 2
      package/librtlsdr/librtlsdr.hash
  41. 1 1
      package/librtlsdr/librtlsdr.mk
  42. 60 0
      package/minizip/0002-mz.h-fix-build-with-gcc-4.8.patch
  43. 2 1
      package/mtd/mtd.mk
  44. 1 1
      package/prosody/Config.in
  45. 1 0
      package/python-cython/python-cython.mk
  46. 1 0
      package/python-pycryptodomex/python-pycryptodomex.mk
  47. 117 0
      package/python-rpi-gpio/0001-fix-build-with-gcc-10.x.patch
  48. 1 0
      package/python3-cython/python3-cython.hash
  49. 16 0
      package/python3-cython/python3-cython.mk
  50. 1 1
      package/python3-decorator/python3-decorator.mk
  51. 1 1
      package/python3-mako/python3-mako.mk
  52. 1 0
      package/python3-pycryptodomex/python3-pycryptodomex.hash
  53. 20 0
      package/python3-pycryptodomex/python3-pycryptodomex.mk
  54. 1 1
      package/python3-pyelftools/python3-pyelftools.mk
  55. 1 1
      package/setools/Config.in
  56. 2 1
      package/setools/setools.mk
  57. 753 0
      package/smstools3/0002-fix-build-with-gcc-10.x.patch
  58. 29 0
      package/tftpd/0001-Use-extern-qualifier-to-fix-gcc-10.x-build.patch
  59. 36 0
      package/x11r7/xserver_xorg-server/1.20.8/0007-fix-for-ZDI-11426.patch
  60. 5 0
      package/x11r7/xserver_xorg-server/xserver_xorg-server.mk
  61. 1 0
      support/testing/tests/boot/test_atf.py

+ 1 - 0
DEVELOPERS

@@ -1087,6 +1087,7 @@ N:	Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
 F:	package/gnuradio/
 F:	package/gqrx/
 F:	package/gr-osmosdr/
+F:	package/librtlsdr/
 F:	package/libusbgx/
 F:	package/matio/
 F:	package/python-cheetah/

+ 5 - 0
board/arcturus/aarch64-ucls1012a/post-build.sh

@@ -0,0 +1,5 @@
+#!/bin/sh
+
+mkdir -p ${TARGET_DIR}/lib/firmware
+cp -f ${BUILD_DIR}/linux-custom/firmware/ppfe/* ${TARGET_DIR}/lib/firmware/
+cp -f ${BUILD_DIR}/linux-custom/br2-ucls1012a.its ${BINARIES_DIR}/

+ 249 - 0
boot/optee-os/0003-mk-core-ta-Configurable-Python-interpreter.patch

@@ -0,0 +1,249 @@
+From 49c7d2557d92993a1e09e50c961b9d4f7ab1091b Mon Sep 17 00:00:00 2001
+From: Dick Olsson <hi@senzilla.io>
+Date: Wed, 22 Jul 2020 08:49:12 +0200
+Subject: [PATCH] mk: core: ta: Configurable Python interpreter
+
+Build systems that manage multiple different python interpreters need
+explicit control over which version of the interpreter to use.
+This patch enables one to override the default interpreter with the path
+to a specific one.
+
+Signed-off-by: Dick Olsson <hi@senzilla.io>
+Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
+Reviewed-by: Jerome Forissier <jerome@forissier.org>
+---
+ core/arch/arm/arm.mk         |  2 ++
+ core/arch/arm/kernel/link.mk | 22 +++++++++++-----------
+ core/sub.mk                  | 10 +++++-----
+ mk/config.mk                 |  6 ++++++
+ mk/lib.mk                    |  2 +-
+ ta/arch/arm/link.mk          |  2 +-
+ ta/arch/arm/link_shlib.mk    |  2 +-
+ ta/ta.mk                     |  2 +-
+ 8 files changed, 28 insertions(+), 20 deletions(-)
+
+diff --git a/core/arch/arm/arm.mk b/core/arch/arm/arm.mk
+index 5c9f16ef..878035c5 100644
+--- a/core/arch/arm/arm.mk
++++ b/core/arch/arm/arm.mk
+@@ -245,6 +245,7 @@ ta-mk-file-export-add-ta_arm32 += CROSS_COMPILE32 ?= $$(CROSS_COMPILE)_nl_
+ ta-mk-file-export-add-ta_arm32 += CROSS_COMPILE_ta_arm32 ?= $$(CROSS_COMPILE32)_nl_
+ ta-mk-file-export-add-ta_arm32 += COMPILER ?= gcc_nl_
+ ta-mk-file-export-add-ta_arm32 += COMPILER_ta_arm32 ?= $$(COMPILER)_nl_
++ta-mk-file-export-add-ta_arm32 += PYTHON3 ?= python3_nl_
+ endif
+ 
+ ifneq ($(filter ta_arm64,$(ta-targets)),)
+@@ -275,6 +276,7 @@ ta-mk-file-export-add-ta_arm64 += CROSS_COMPILE64 ?= $$(CROSS_COMPILE)_nl_
+ ta-mk-file-export-add-ta_arm64 += CROSS_COMPILE_ta_arm64 ?= $$(CROSS_COMPILE64)_nl_
+ ta-mk-file-export-add-ta_arm64 += COMPILER ?= gcc_nl_
+ ta-mk-file-export-add-ta_arm64 += COMPILER_ta_arm64 ?= $$(COMPILER)_nl_
++ta-mk-file-export-add-ta_arm64 += PYTHON3 ?= python3_nl_
+ endif
+ 
+ # Set cross compiler prefix for each TA target
+diff --git a/core/arch/arm/kernel/link.mk b/core/arch/arm/kernel/link.mk
+index 1b89b895..69375ad6 100644
+--- a/core/arch/arm/kernel/link.mk
++++ b/core/arch/arm/kernel/link.mk
+@@ -62,13 +62,13 @@ cleanfiles += $(link-out-dir)/text_unpaged.ld.S
+ $(link-out-dir)/text_unpaged.ld.S: $(link-out-dir)/unpaged.o
+ 	@$(cmd-echo-silent) '  GEN     $@'
+ 	$(q)$(READELFcore) -S -W $< | \
+-		./scripts/gen_ld_sects.py .text. > $@
++		$(PYTHON3) ./scripts/gen_ld_sects.py .text. > $@
+ 
+ cleanfiles += $(link-out-dir)/rodata_unpaged.ld.S
+ $(link-out-dir)/rodata_unpaged.ld.S: $(link-out-dir)/unpaged.o
+ 	@$(cmd-echo-silent) '  GEN     $@'
+ 	$(q)$(READELFcore) -S -W $< | \
+-		./scripts/gen_ld_sects.py .rodata. > $@
++		$(PYTHON3) ./scripts/gen_ld_sects.py .rodata. > $@
+ 
+ 
+ cleanfiles += $(link-out-dir)/init_entries.txt
+@@ -92,12 +92,12 @@ cleanfiles += $(link-out-dir)/text_init.ld.S
+ $(link-out-dir)/text_init.ld.S: $(link-out-dir)/init.o
+ 	@$(cmd-echo-silent) '  GEN     $@'
+ 	$(q)$(READELFcore) -S -W $< | \
+-		./scripts/gen_ld_sects.py .text. > $@
++		$(PYTHON3) ./scripts/gen_ld_sects.py .text. > $@
+ 
+ cleanfiles += $(link-out-dir)/rodata_init.ld.S
+ $(link-out-dir)/rodata_init.ld.S: $(link-out-dir)/init.o
+ 	@$(cmd-echo-silent) '  GEN     $@'
+-	$(q)$(READELFcore) -S -W $< | ./scripts/gen_ld_sects.py .rodata. > $@
++	$(q)$(READELFcore) -S -W $< | $(PYTHON3) ./scripts/gen_ld_sects.py .rodata. > $@
+ 
+ -include $(link-script-dep)
+ 
+@@ -176,39 +176,39 @@ cleanfiles += $(link-out-dir)/tee-pager.bin
+ $(link-out-dir)/tee-pager.bin: $(link-out-dir)/tee.elf scripts/gen_tee_bin.py
+ 	@echo Warning: $@ is deprecated
+ 	@$(cmd-echo-silent) '  GEN     $@'
+-	$(q)scripts/gen_tee_bin.py --input $< --out_tee_pager_bin $@
++	$(q)$(PYTHON3) scripts/gen_tee_bin.py --input $< --out_tee_pager_bin $@
+ 
+ cleanfiles += $(link-out-dir)/tee-pageable.bin
+ $(link-out-dir)/tee-pageable.bin: $(link-out-dir)/tee.elf scripts/gen_tee_bin.py
+ 	@echo Warning: $@ is deprecated
+ 	@$(cmd-echo-silent) '  GEN     $@'
+-	$(q)scripts/gen_tee_bin.py --input $< --out_tee_pageable_bin $@
++	$(q)$(PYTHON3) scripts/gen_tee_bin.py --input $< --out_tee_pageable_bin $@
+ 
+ all: $(link-out-dir)/tee.bin
+ cleanfiles += $(link-out-dir)/tee.bin
+ $(link-out-dir)/tee.bin: $(link-out-dir)/tee.elf scripts/gen_tee_bin.py
+ 	@$(cmd-echo-silent) '  GEN     $@'
+-	$(q)scripts/gen_tee_bin.py --input $< --out_tee_bin $@
++	$(q)$(PYTHON3) scripts/gen_tee_bin.py --input $< --out_tee_bin $@
+ 
+ all: $(link-out-dir)/tee-header_v2.bin
+ cleanfiles += $(link-out-dir)/tee-header_v2.bin
+ $(link-out-dir)/tee-header_v2.bin: $(link-out-dir)/tee.elf \
+ 				   scripts/gen_tee_bin.py
+ 	@$(cmd-echo-silent) '  GEN     $@'
+-	$(q)scripts/gen_tee_bin.py --input $< --out_header_v2 $@
++	$(q)$(PYTHON3) scripts/gen_tee_bin.py --input $< --out_header_v2 $@
+ 
+ all: $(link-out-dir)/tee-pager_v2.bin
+ cleanfiles += $(link-out-dir)/tee-pager_v2.bin
+ $(link-out-dir)/tee-pager_v2.bin: $(link-out-dir)/tee.elf scripts/gen_tee_bin.py
+ 	@$(cmd-echo-silent) '  GEN     $@'
+-	$(q)scripts/gen_tee_bin.py --input $< --out_pager_v2 $@
++	$(q)$(PYTHON3) scripts/gen_tee_bin.py --input $< --out_pager_v2 $@
+ 
+ all: $(link-out-dir)/tee-pageable_v2.bin
+ cleanfiles += $(link-out-dir)/tee-pageable_v2.bin
+ $(link-out-dir)/tee-pageable_v2.bin: $(link-out-dir)/tee.elf \
+ 				     scripts/gen_tee_bin.py
+ 	@$(cmd-echo-silent) '  GEN     $@'
+-	$(q)scripts/gen_tee_bin.py --input $< --out_pageable_v2 $@
++	$(q)$(PYTHON3) scripts/gen_tee_bin.py --input $< --out_pageable_v2 $@
+ 
+ all: $(link-out-dir)/tee.symb_sizes
+ cleanfiles += $(link-out-dir)/tee.symb_sizes
+@@ -222,5 +222,5 @@ mem_usage: $(link-out-dir)/tee.mem_usage
+ 
+ $(link-out-dir)/tee.mem_usage: $(link-out-dir)/tee.elf
+ 	@$(cmd-echo-silent) '  GEN     $@'
+-	$(q)./scripts/mem_usage.py $< > $@
++	$(q)$(PYTHON3) ./scripts/mem_usage.py $< > $@
+ endif
+diff --git a/core/sub.mk b/core/sub.mk
+index 03cc6bc7..0959c9a9 100644
+--- a/core/sub.mk
++++ b/core/sub.mk
+@@ -9,13 +9,13 @@ ifeq ($(CFG_WITH_USER_TA),y)
+ gensrcs-y += ta_pub_key
+ produce-ta_pub_key = ta_pub_key.c
+ depends-ta_pub_key = $(TA_SIGN_KEY) scripts/pem_to_pub_c.py
+-recipe-ta_pub_key = scripts/pem_to_pub_c.py --prefix ta_pub_key \
++recipe-ta_pub_key = $(PYTHON3) scripts/pem_to_pub_c.py --prefix ta_pub_key \
+ 		--key $(TA_SIGN_KEY) --out $(sub-dir-out)/ta_pub_key.c
+ 
+ gensrcs-y += ldelf
+ produce-ldelf = ldelf_hex.c
+ depends-ldelf = scripts/gen_ldelf_hex.py $(out-dir)/ldelf/ldelf.elf
+-recipe-ldelf = scripts/gen_ldelf_hex.py --input $(out-dir)/ldelf/ldelf.elf \
++recipe-ldelf = $(PYTHON3) scripts/gen_ldelf_hex.py --input $(out-dir)/ldelf/ldelf.elf \
+ 			--output $(sub-dir-out)/ldelf_hex.c
+ endif
+ 
+@@ -25,7 +25,7 @@ early-ta-$1-uuid := $(firstword $(subst ., ,$(notdir $1)))
+ gensrcs-y += early-ta-$1
+ produce-early-ta-$1 = early_ta_$$(early-ta-$1-uuid).c
+ depends-early-ta-$1 = $1 scripts/ta_bin_to_c.py
+-recipe-early-ta-$1 = scripts/ta_bin_to_c.py --compress --ta $1 \
++recipe-early-ta-$1 = $(PYTHON3) scripts/ta_bin_to_c.py --compress --ta $1 \
+ 		--out $(sub-dir-out)/early_ta_$$(early-ta-$1-uuid).c
+ endef
+ $(foreach f, $(EARLY_TA_PATHS), $(eval $(call process_early_ta,$(f))))
+@@ -40,7 +40,7 @@ core-embed-fdt-c = $(out-dir)/$(arch-dir)/dts/$(CFG_EMBED_DTB_SOURCE_FILE:.dts=.
+ gensrcs-y += embedded_secure_dtb
+ produce-embedded_secure_dtb = arch/$(ARCH)/dts/$(CFG_EMBED_DTB_SOURCE_FILE:.dts=.c)
+ depends-embedded_secure_dtb = $(core-embed-fdt-dtb) scripts/bin_to_c.py
+-recipe-embedded_secure_dtb = scripts/bin_to_c.py \
++recipe-embedded_secure_dtb = $(PYTHON3) scripts/bin_to_c.py \
+ 				--bin $(core-embed-fdt-dtb) \
+ 				--vname embedded_secure_dtb \
+ 				--out $(core-embed-fdt-c)
+@@ -58,7 +58,7 @@ $(conf-mk-xz-base64): $(conf-mk-file)
+ gensrcs-y += conf_str
+ produce-conf_str = conf.mk.xz.base64.c
+ depends-conf_str = $(conf-mk-xz-base64)
+-recipe-conf_str = scripts/bin_to_c.py --text --bin $(conf-mk-xz-base64) \
++recipe-conf_str = $(PYTHON3) scripts/bin_to_c.py --text --bin $(conf-mk-xz-base64) \
+ 			--out $(sub-dir-out)/conf.mk.xz.base64.c \
+ 			--vname conf_str
+ endif
+diff --git a/mk/config.mk b/mk/config.mk
+index 70732c4d..1fe65576 100644
+--- a/mk/config.mk
++++ b/mk/config.mk
+@@ -32,6 +32,12 @@ endif
+ # Supported values: undefined, 1, 2 and 3. 3 gives more warnings.
+ WARNS ?= 3
+ 
++# Path to the Python interpreter used by the build system.
++# This variable is set to the default python3 interpreter in the user's
++# path. But build environments that require more explicit control can
++# set the path to a specific interpreter through this variable.
++PYTHON3 ?= python3
++
+ # Define DEBUG=1 to compile without optimization (forces -O0)
+ # DEBUG=1
+ 
+diff --git a/mk/lib.mk b/mk/lib.mk
+index 6e890893..3bd422d6 100644
+--- a/mk/lib.mk
++++ b/mk/lib.mk
+@@ -72,7 +72,7 @@ $(lib-shlibstrippedfile): $(lib-shlibfile)
+ 
+ $(lib-shlibtafile): $(lib-shlibstrippedfile) $(TA_SIGN_KEY)
+ 	@$(cmd-echo-silent) '  SIGN    $$@'
+-	$$(q)$$(SIGN) --key $(TA_SIGN_KEY) --uuid $(libuuid) --in $$< --out $$@
++	$$(q)$$(PYTHON3) $$(SIGN) --key $(TA_SIGN_KEY) --uuid $(libuuid) --in $$< --out $$@
+ 
+ $(lib-libuuidln): $(lib-shlibfile)
+ 	@$(cmd-echo-silent) '  LN      $$@'
+diff --git a/ta/arch/arm/link.mk b/ta/arch/arm/link.mk
+index db7d0b9a..b95c0cba 100644
+--- a/ta/arch/arm/link.mk
++++ b/ta/arch/arm/link.mk
+@@ -2,7 +2,7 @@ link-script$(sm) = $(ta-dev-kit-dir$(sm))/src/ta.ld.S
+ link-script-pp$(sm) = $(link-out-dir$(sm))/ta.lds
+ link-script-dep$(sm) = $(link-out-dir$(sm))/.ta.ld.d
+ 
+-SIGN_ENC ?= $(ta-dev-kit-dir$(sm))/scripts/sign_encrypt.py
++SIGN_ENC ?= $(PYTHON3) $(ta-dev-kit-dir$(sm))/scripts/sign_encrypt.py
+ TA_SIGN_KEY ?= $(ta-dev-kit-dir$(sm))/keys/default_ta.pem
+ 
+ ifeq ($(CFG_ENCRYPT_TA),y)
+diff --git a/ta/arch/arm/link_shlib.mk b/ta/arch/arm/link_shlib.mk
+index ed81e59a..cc177ef0 100644
+--- a/ta/arch/arm/link_shlib.mk
++++ b/ta/arch/arm/link_shlib.mk
+@@ -47,5 +47,5 @@ $(link-out-dir)/$(shlibuuid).elf: $(link-out-dir)/$(shlibname).so
+ $(link-out-dir)/$(shlibuuid).ta: $(link-out-dir)/$(shlibname).stripped.so \
+ 				$(TA_SIGN_KEY)
+ 	@$(cmd-echo-silent) '  SIGN    $@'
+-	$(q)$(SIGN) --key $(TA_SIGN_KEY) --uuid $(shlibuuid) \
++	$(q)$(PYTHON3) $(SIGN) --key $(TA_SIGN_KEY) --uuid $(shlibuuid) \
+ 		--in $< --out $@
+diff --git a/ta/ta.mk b/ta/ta.mk
+index 918880f4..59ed87f7 100644
+--- a/ta/ta.mk
++++ b/ta/ta.mk
+@@ -67,7 +67,7 @@ $$(arm32-user-sysregs-out)/$$(arm32-user-sysregs-$(1)-h): \
+ 		$(1) scripts/arm32_sysreg.py
+ 	@$(cmd-echo-silent) '  GEN     $$@'
+ 	$(q)mkdir -p $$(dir $$@)
+-	$(q)scripts/arm32_sysreg.py --guard __$$(arm32-user-sysregs-$(1)-h) \
++	$(q)$(PYTHON3) scripts/arm32_sysreg.py --guard __$$(arm32-user-sysregs-$(1)-h) \
+ 		< $$< > $$@
+ 
+ endef #process-arm32-user-sysreg
+-- 
+2.20.1
+

+ 3 - 2
boot/optee-os/optee-os.mk

@@ -21,7 +21,7 @@ else
 OPTEE_OS_SITE = $(call github,OP-TEE,optee_os,$(OPTEE_OS_VERSION))
 endif
 
-OPTEE_OS_DEPENDENCIES = host-openssl host-python-pycryptodomex host-python-pyelftools
+OPTEE_OS_DEPENDENCIES = host-openssl host-python3 host-python3-pycryptodomex host-python3-pyelftools
 
 # On 64bit targets, OP-TEE OS can be built in 32bit mode, or
 # can be built in 64bit mode and support 32bit and 64bit
@@ -32,7 +32,8 @@ OPTEE_OS_MAKE_OPTS = \
 	CROSS_COMPILE="$(TARGET_CROSS)" \
 	CROSS_COMPILE_core="$(TARGET_CROSS)" \
 	CROSS_COMPILE_ta_arm64="$(TARGET_CROSS)" \
-	CROSS_COMPILE_ta_arm32="$(TARGET_CROSS)"
+	CROSS_COMPILE_ta_arm32="$(TARGET_CROSS)" \
+	PYTHON3="$(HOST_DIR)/bin/python3"
 
 ifeq ($(BR2_aarch64),y)
 OPTEE_OS_MAKE_OPTS += \

+ 5 - 4
configs/arcturus_ucls1012a_defconfig

@@ -1,20 +1,21 @@
 # Architecture
 BR2_aarch64=y
 
-# Linux headers same as kernel, a 4.1 series
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_1=y
+# Linux headers same as kernel, a 4.14 series
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_14=y
 
 # System settings
 BR2_TARGET_GENERIC_HOSTNAME="ucls1012a"
 BR2_TARGET_GENERIC_ISSUE="Welcome to uCLS1012A-SOM"
 BR2_SYSTEM_DHCP="eth0"
 BR2_ROOTFS_OVERLAY="board/arcturus/aarch64-ucls1012a/rootfs_overlay"
+BR2_ROOTFS_POST_BUILD_SCRIPT="board/arcturus/aarch64-ucls1012a/post-build.sh"
 BR2_ROOTFS_POST_IMAGE_SCRIPT="board/arcturus/aarch64-ucls1012a/post-image.sh"
 
 # Kernel
 BR2_LINUX_KERNEL=y
 BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,ArcturusNetworks,uCLS1012A-kernel,v0.2.1935)/linux-v0.2.1935.tar.gz"
+BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,ArcturusNetworks,uCLS1012A-kernel,v.20.31)/linux-v.20.31.tar.gz"
 BR2_LINUX_KERNEL_DEFCONFIG="ucls1012a"
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="arcturus/arc-ucls1012a"
@@ -27,7 +28,7 @@ BR2_TARGET_ROOTFS_CPIO_GZIP=y
 BR2_TARGET_UBOOT=y
 BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
 BR2_TARGET_UBOOT_CUSTOM_TARBALL=y
-BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,ArcturusNetworks,uCLS1012A-uboot,v0.2.1935)/uboot-v0.2.1935.tar.gz"
+BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION="$(call github,ArcturusNetworks,uCLS1012A-uboot,v.20.31)/uboot-v.20.31.tar.gz"
 BR2_TARGET_UBOOT_BOARD_DEFCONFIG="UCLS1012A_QSPI128"
 
 # Tools

+ 8 - 11
configs/ci20_defconfig

@@ -2,9 +2,8 @@
 BR2_mipsel=y
 BR2_mips_xburst=y
 # BR2_MIPS_SOFT_FLOAT is not set
-
-# Linux headers same as kernel, a 3.18 series
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_3_18=y
+BR2_KERNEL_HEADERS_AS_KERNEL=y
+BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_5_4=y
 
 # system
 BR2_TARGET_GENERIC_GETTY_PORT="ttyS4"
@@ -15,19 +14,17 @@ BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/ci20/genimage.cfg"
 
 # kernel
 BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL=y
-BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION="$(call github,MIPS,CI20_linux,7dff33297116643485ca37141d804eddd793e834)/linux-7dff33297116643485ca37141d804eddd793e834.tar.gz"
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="5.4.58"
 BR2_LINUX_KERNEL_DEFCONFIG="ci20"
 BR2_LINUX_KERNEL_INSTALL_TARGET=y
 
 # u-boot
 BR2_TARGET_UBOOT=y
-BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY=y
-BR2_TARGET_UBOOT_BOARDNAME="ci20_mmc"
-BR2_TARGET_UBOOT_CUSTOM_GIT=y
-BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/MIPS/CI20_u-boot"
-BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="dd3c1b95dac7d10b2ca5806f65e5c1050d7dd0fa"
-BR2_TARGET_UBOOT_PATCH="board/ci20/patches/uboot"
+BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION=y
+BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2020.07"
+BR2_TARGET_UBOOT_BOARD_DEFCONFIG="ci20_mmc"
 BR2_TARGET_UBOOT_FORMAT_IMG=y
 BR2_TARGET_UBOOT_SPL=y
 BR2_TARGET_UBOOT_SPL_NAME="spl/u-boot-spl.bin"

+ 1 - 0
configs/globalscale_espressobin_defconfig

@@ -14,6 +14,7 @@ BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/globalscale/espressobin/linux-extr
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="marvell/armada-3720-espressobin marvell/armada-3720-espressobin-emmc marvell/armada-3720-espressobin-v7 marvell/armada-3720-espressobin-v7-emmc"
 BR2_LINUX_KERNEL_INSTALL_TARGET=y
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y
 
 # Filesystem
 BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot for the Marvell ESPRESSObin"

+ 1 - 1
configs/microchip_sama5d27_wlsom1_ek_mmc_dev_defconfig

@@ -50,7 +50,7 @@ BR2_PACKAGE_LIBDRM_INSTALL_TESTS=y
 BR2_PACKAGE_DTC=y
 BR2_PACKAGE_DTC_PROGRAMS=y
 BR2_PACKAGE_ARGP_STANDALONE=y
-BR2_PACKAGE_BLUEZ_UTILS=y
+BR2_PACKAGE_BLUEZ5_UTILS=y
 BR2_PACKAGE_BRIDGE_UTILS=y
 BR2_PACKAGE_CAN_UTILS=y
 BR2_PACKAGE_ETHTOOL=y

+ 1 - 0
configs/nitrogen6sx_defconfig

@@ -40,3 +40,4 @@ BR2_LINUX_KERNEL_DEFCONFIG="boundary"
 BR2_LINUX_KERNEL_INSTALL_TARGET=y
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6sx-nitrogen6sx imx6sx-nitrogen6sx-m4"
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y

+ 1 - 0
configs/nitrogen6x_defconfig

@@ -40,3 +40,4 @@ BR2_LINUX_KERNEL_DEFCONFIG="boundary"
 BR2_LINUX_KERNEL_INSTALL_TARGET=y
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6dl-nit6xlite imx6dl-nitrogen6_vm imx6dl-nitrogen6x imx6q-nitrogen6x imx6dl-nitrogen6_som2 imx6q-nitrogen6_som2 imx6qp-nitrogen6_som2 imx6q-nitrogen6_max imx6qp-nitrogen6_max imx6q-sabrelite"
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y

+ 1 - 0
configs/nitrogen7_defconfig

@@ -39,3 +39,4 @@ BR2_LINUX_KERNEL_DEFCONFIG="boundary"
 BR2_LINUX_KERNEL_INSTALL_TARGET=y
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx7d-nitrogen7 imx7d-nitrogen7-m4"
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y

+ 1 - 0
configs/nitrogen8m_defconfig

@@ -54,3 +54,4 @@ BR2_LINUX_KERNEL_DEFCONFIG="boundary"
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_INSTALL_TARGET=y
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mq-nitrogen8m freescale/imx8mq-nitrogen8m-m4 freescale/imx8mq-nitrogen8m_som freescale/imx8mq-nitrogen8m_som-m4"
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y

+ 1 - 0
configs/nitrogen8mm_defconfig

@@ -54,3 +54,4 @@ BR2_LINUX_KERNEL_DEFCONFIG="boundary"
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_INSTALL_TARGET=y
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mm-nitrogen8mm freescale/imx8mm-nitrogen8mm-m4 freescale/imx8mm-nitrogen8mm_rev2 freescale/imx8mm-nitrogen8mm_rev2-m4 freescale/imx8mm-nitrogen8mm_som freescale/imx8mm-nitrogen8mm_som-m4"
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y

+ 1 - 0
configs/nitrogen8mn_defconfig

@@ -54,3 +54,4 @@ BR2_LINUX_KERNEL_DEFCONFIG="boundary"
 BR2_LINUX_KERNEL_DTS_SUPPORT=y
 BR2_LINUX_KERNEL_INSTALL_TARGET=y
 BR2_LINUX_KERNEL_INTREE_DTS_NAME="freescale/imx8mn-nitrogen8_nano freescale/imx8mn-nitrogen8mn freescale/imx8mn-nitrogen8mn_som"
+BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y

+ 1 - 8
configs/qemu_arm_vexpress_tz_defconfig

@@ -27,7 +27,7 @@ BR2_LINUX_KERNEL_INTREE_DTS_NAME="vexpress-v2p-ca15_a7"
 # TF-A for booting OP-TEE secure and uboot/linux non secure
 BR2_TARGET_ARM_TRUSTED_FIRMWARE=y
 BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION=y
-BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.0"
+BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_VERSION_VALUE="v2.2"
 BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="qemu"
 BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL32_OPTEE=y
 BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y
@@ -40,13 +40,6 @@ BR2_PACKAGE_OPTEE_BENCHMARK=y
 BR2_PACKAGE_OPTEE_EXAMPLES=y
 BR2_PACKAGE_OPTEE_TEST=y
 
-# OP-TEE components needs host-python3 interpreter and its modules
-BR2_PACKAGE_HOST_PYTHON3=y
-# Select python3 on the target to make sure Buildroot builds host-python using
-# python3 and builds all host-python modules for python3.
-BR2_TOOLCHAIN_BUILDROOT_WCHAR=y
-BR2_PACKAGE_PYTHON3=y
-
 # U-boot for booting the dear Linux kernel
 BR2_TARGET_UBOOT=y
 BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y

+ 26 - 0
package/aircrack-ng/0001-Expand-packed-definition.patch

@@ -0,0 +1,26 @@
+From d4496006ac1e0c99908108b998ae39afb0658733 Mon Sep 17 00:00:00 2001
+From: Joseph Benden <joe@benden.us>
+Date: Tue, 7 Jul 2020 11:42:40 -0700
+Subject: [PATCH] Expand __packed definition.
+
+Signed-off-by: Joseph Benden <joe@benden.us>
+[Retrieved from:
+https://github.com/aircrack-ng/aircrack-ng/commit/d4496006ac1e0c99908108b998ae39afb0658733]
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ lib/radiotap/radiotap.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/radiotap/radiotap.h b/lib/radiotap/radiotap.h
+index 57f784b8d..bb5a41dfc 100644
+--- a/lib/radiotap/radiotap.h
++++ b/lib/radiotap/radiotap.h
+@@ -56,7 +56,7 @@ struct ieee80211_radiotap_header {
+ 	 * @it_present: (first) present word
+ 	 */
+ 	uint32_t it_present;
+-} __packed;
++} __attribute__((__packed__));
+ 
+ /* version is always 0 */
+ #define PKTHDR_RADIOTAP_VERSION	0

+ 74 - 0
package/aircrack-ng/0002-Fix-duplicated-symbols.patch

@@ -0,0 +1,74 @@
+From f6f1396807607f5649d20631db517cfca3a1f5c4 Mon Sep 17 00:00:00 2001
+From: Joseph Benden <joe@benden.us>
+Date: Tue, 7 Jul 2020 11:44:40 -0700
+Subject: [PATCH] Fix duplicated symbols.
+
+Signed-off-by: Joseph Benden <joe@benden.us>
+[Retrieved from:
+https://github.com/aircrack-ng/aircrack-ng/commit/f6f1396807607f5649d20631db517cfca3a1f5c4]
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ src/airodump-ng/airodump-ng.c                 | 2 --
+ src/airventriloquist-ng/airventriloquist-ng.c | 6 +++---
+ src/tkiptun-ng/tkiptun-ng.c                   | 4 ++--
+ 3 files changed, 5 insertions(+), 7 deletions(-)
+
+diff --git a/src/airodump-ng/airodump-ng.c b/src/airodump-ng/airodump-ng.c
+index 3ae6994dd..e72bc88e2 100644
+--- a/src/airodump-ng/airodump-ng.c
++++ b/src/airodump-ng/airodump-ng.c
+@@ -92,8 +92,6 @@
+ #include "radiotap/radiotap_iter.h"
+ 
+ struct devices dev;
+-uint8_t h80211[4096] __attribute__((aligned(16)));
+-uint8_t tmpbuf[4096] __attribute__((aligned(16)));
+ 
+ static const unsigned char llcnull[] = {0, 0, 0, 0};
+ 
+diff --git a/src/airventriloquist-ng/airventriloquist-ng.c b/src/airventriloquist-ng/airventriloquist-ng.c
+index ac6b7647e..267d95540 100644
+--- a/src/airventriloquist-ng/airventriloquist-ng.c
++++ b/src/airventriloquist-ng/airventriloquist-ng.c
+@@ -173,7 +173,7 @@ static struct local_options
+ } lopt;
+ 
+ struct devices dev;
+-struct wif *_wi_in, *_wi_out;
++extern struct wif *_wi_in, *_wi_out;
+ 
+ struct ARP_req
+ {
+@@ -195,8 +195,8 @@ struct APt
+ };
+ 
+ unsigned long nb_pkt_sent;
+-u_int8_t h80211[4096];
+-static u_int8_t tmpbuf[4096];
++extern u_int8_t h80211[4096];
++extern u_int8_t tmpbuf[4096];
+ 
+ static int tcp_test(const char * ip_str, const short port)
+ {
+diff --git a/src/tkiptun-ng/tkiptun-ng.c b/src/tkiptun-ng/tkiptun-ng.c
+index dc67f5d58..43db0bc23 100644
+--- a/src/tkiptun-ng/tkiptun-ng.c
++++ b/src/tkiptun-ng/tkiptun-ng.c
+@@ -267,7 +267,7 @@ static struct local_options
+ 
+ // unused, but needed for link
+ struct devices dev;
+-struct wif *_wi_in, *_wi_out;
++extern struct wif *_wi_in, *_wi_out;
+ 
+ struct ARP_req
+ {
+@@ -289,7 +289,7 @@ struct APt
+ };
+ 
+ unsigned long nb_pkt_sent;
+-unsigned char h80211[4096];
++extern unsigned char h80211[4096];
+ static unsigned char srcbuf[4096];
+ static char strbuf[512];
+ static int alarmed;

+ 3 - 2
package/apache/apache.hash

@@ -1,4 +1,5 @@
-# From http://archive.apache.org/dist/httpd/httpd-2.4.43.tar.bz2.sha256
-sha256  a497652ab3fc81318cdc2a203090a999150d86461acff97c1065dc910fe10f43  httpd-2.4.43.tar.bz2
+# From http://archive.apache.org/dist/httpd/httpd-2.4.46.tar.bz2.{sha256,sha512}
+sha256  740eddf6e1c641992b22359cabc66e6325868c3c5e2e3f98faf349b61ecf41ea  httpd-2.4.46.tar.bz2
+sha512  5936784bb662e9d8a4f7fe38b70c043b468114d931cd10ea831bfe74461ea5856b64f88f42c567ab791fc8907640a99884ba4b6a600f86d661781812735b6f13  httpd-2.4.46.tar.bz2
 # Locally computed
 sha256  47b8c2b6c3309282a99d4a3001575c790fead690cc14734628c4667d2bbffc43  LICENSE

+ 1 - 1
package/apache/apache.mk

@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-APACHE_VERSION = 2.4.43
+APACHE_VERSION = 2.4.46
 APACHE_SOURCE = httpd-$(APACHE_VERSION).tar.bz2
 APACHE_SITE = http://archive.apache.org/dist/httpd
 APACHE_LICENSE = Apache-2.0

File diff suppressed because it is too large
+ 9 - 0
package/atest/0001-seq.h-fix-build-with-gcc-10.patch


+ 1 - 0
package/boost/boost.mk

@@ -134,6 +134,7 @@ define BOOST_CONFIGURE_CMDS
 	(cd $(@D) && ./bootstrap.sh $(BOOST_FLAGS))
 	echo "using gcc : `$(TARGET_CC) -dumpversion` : $(TARGET_CXX) : <cxxflags>\"$(BOOST_TARGET_CXXFLAGS)\" <linkflags>\"$(TARGET_LDFLAGS)\" ;" > $(@D)/user-config.jam
 	echo "" >> $(@D)/user-config.jam
+	sed -i "s/: -O.* ;/: $(TARGET_OPTIMIZATION) ;/" $(@D)/tools/build/src/tools/gcc.jam
 endef
 
 define BOOST_BUILD_CMDS

+ 2 - 0
package/collectd/Config.in

@@ -572,6 +572,7 @@ config BR2_PACKAGE_COLLECTD_GRPC
 	depends on BR2_INSTALL_LIBSTDCPP # grpc -> protobuf
 	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # grpc -> protobuf
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # grpc -> protobuf
+	depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS # grpc
 	select BR2_PACKAGE_GRPC
 	help
 	  Send/receive values using the gRPC protocol.
@@ -580,6 +581,7 @@ comment "grpc needs a toolchain w/ C++, gcc >= 4.8"
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8
 	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS
+	depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS # grpc
 
 config BR2_PACKAGE_COLLECTD_MQTT
 	bool "mqtt"

+ 2 - 0
package/efl/efl.mk

@@ -29,6 +29,7 @@ EFL_DEPENDENCIES = host-pkgconf host-efl host-luajit dbus freetype \
 # elua=true: build elua for the target.
 # sdl=false: disable sdl2 support.
 # embedded-lz4=false: use liblz4 from lz4 package.
+# native-arch-optimization=false: avoid optimization flags added by meson.
 # network-backend=none: disable connman networkmanager.
 EFL_CONF_OPTS = \
 	-Davahi=false \
@@ -39,6 +40,7 @@ EFL_CONF_OPTS = \
 	-Delua=true \
 	-Dembedded-lz4=false \
 	-Dlua-interpreter=luajit \
+	-Dnative-arch-optimization=false \
 	-Dnetwork-backend=none \
 	-Dpixman=false \
 	-Dsdl=false \

+ 195 - 0
package/f2fs-tools/0002-fsck.f2fs-correct-return-value.patch

@@ -0,0 +1,195 @@
+From eee12fe5e2e6c5f71bc7cbe25a608b730fd5362e Mon Sep 17 00:00:00 2001
+From: Chao Yu <yuchao0@huawei.com>
+Date: Fri, 7 Aug 2020 10:02:31 +0800
+Subject: [PATCH] fsck.f2fs: correct return value
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+As Norbert Lange reported:
+
+"
+$ fsck.f2fs -a /dev/mmcblk0p5; echo $?
+Info: Fix the reported corruption.
+Info: Mounted device!
+Info: Check FS only on RO mounted device
+Error: Failed to open the device!
+255
+"
+
+Michael Laß reminds:
+
+"
+I think the return value is exactly the problem here. See fsck(8) (
+https://linux.die.net/man/8/fsck) which specifies the return values.
+Systemd looks at these and decides how to proceed:
+
+https://github.com/systemd/systemd/blob/a859abf062cef1511e4879c4ee39c6036ebeaec8/src/fsck/fsck.c#L407
+
+That means, if fsck.f2fs returns 255, then
+the FSCK_SYSTEM_SHOULD_REBOOT bit is set and systemd will reboot.
+"
+
+So the problem here is fsck.f2fs didn't return correct value to userspace
+apps, result in later unexpected behavior of rebooting, let's fix this.
+
+Reported-by: Norbert Lange <nolange79@gmail.com>
+Reported-by: Michael Laß <bevan@bi-co.net>
+Signed-off-by: Chao Yu <yuchao0@huawei.com>
+Signed-off-by: Norbert Lange <nolange79@gmail.com>
+---
+ fsck/fsck.h | 11 +++++++++++
+ fsck/main.c | 45 +++++++++++++++++++++++++++++++--------------
+ 2 files changed, 42 insertions(+), 14 deletions(-)
+
+diff --git a/fsck/fsck.h b/fsck/fsck.h
+index ccf4a39..c8aeb06 100644
+--- a/fsck/fsck.h
++++ b/fsck/fsck.h
+@@ -13,6 +13,17 @@
+ 
+ #include "f2fs.h"
+ 
++enum {
++	FSCK_SUCCESS                 = 0,
++	FSCK_ERROR_CORRECTED         = 1 << 0,
++	FSCK_SYSTEM_SHOULD_REBOOT    = 1 << 1,
++	FSCK_ERRORS_LEFT_UNCORRECTED = 1 << 2,
++	FSCK_OPERATIONAL_ERROR       = 1 << 3,
++	FSCK_USAGE_OR_SYNTAX_ERROR   = 1 << 4,
++	FSCK_USER_CANCELLED          = 1 << 5,
++	FSCK_SHARED_LIB_ERROR        = 1 << 7,
++};
++
+ struct quota_ctx;
+ 
+ #define FSCK_UNMATCHED_EXTENT		0x00000001
+diff --git a/fsck/main.c b/fsck/main.c
+index 8c62a14..b0f2ec3 100644
+--- a/fsck/main.c
++++ b/fsck/main.c
+@@ -591,7 +591,7 @@ void f2fs_parse_options(int argc, char *argv[])
+ 	error_out(prog);
+ }
+ 
+-static void do_fsck(struct f2fs_sb_info *sbi)
++static int do_fsck(struct f2fs_sb_info *sbi)
+ {
+ 	struct f2fs_checkpoint *ckpt = F2FS_CKPT(sbi);
+ 	u32 flag = le32_to_cpu(ckpt->ckpt_flags);
+@@ -614,7 +614,7 @@ static void do_fsck(struct f2fs_sb_info *sbi)
+ 			} else {
+ 				MSG(0, "[FSCK] F2FS metadata   [Ok..]");
+ 				fsck_free(sbi);
+-				return;
++				return FSCK_SUCCESS;
+ 			}
+ 
+ 			if (!c.ro)
+@@ -646,7 +646,7 @@ static void do_fsck(struct f2fs_sb_info *sbi)
+ 		ret = quota_init_context(sbi);
+ 		if (ret) {
+ 			ASSERT_MSG("quota_init_context failure: %d", ret);
+-			return;
++			return FSCK_OPERATIONAL_ERROR;
+ 		}
+ 	}
+ 	fsck_chk_orphan_node(sbi);
+@@ -654,8 +654,14 @@ static void do_fsck(struct f2fs_sb_info *sbi)
+ 			F2FS_FT_DIR, TYPE_INODE, &blk_cnt, NULL);
+ 	fsck_chk_quota_files(sbi);
+ 
+-	fsck_verify(sbi);
++	ret = fsck_verify(sbi);
+ 	fsck_free(sbi);
++
++	if (!c.bug_on)
++		return FSCK_SUCCESS;
++	if (!ret)
++		return FSCK_ERROR_CORRECTED;
++	return FSCK_ERRORS_LEFT_UNCORRECTED;
+ }
+ 
+ static void do_dump(struct f2fs_sb_info *sbi)
+@@ -763,7 +769,7 @@ static int do_sload(struct f2fs_sb_info *sbi)
+ int main(int argc, char **argv)
+ {
+ 	struct f2fs_sb_info *sbi;
+-	int ret = 0;
++	int ret = 0, ret2;
+ 	clock_t start = clock();
+ 
+ 	f2fs_init_configuration();
+@@ -771,10 +777,15 @@ int main(int argc, char **argv)
+ 	f2fs_parse_options(argc, argv);
+ 
+ 	if (c.func != DUMP && f2fs_devs_are_umounted() < 0) {
+-		if (errno == EBUSY)
++		if (errno == EBUSY) {
++			if (c.func == FSCK)
++				return FSCK_OPERATIONAL_ERROR;
+ 			return -1;
++		}
+ 		if (!c.ro || c.func == DEFRAG) {
+ 			MSG(0, "\tError: Not available on mounted device!\n");
++			if (c.func == FSCK)
++				return FSCK_OPERATIONAL_ERROR;
+ 			return -1;
+ 		}
+ 
+@@ -789,8 +800,11 @@ int main(int argc, char **argv)
+ 	}
+ 
+ 	/* Get device */
+-	if (f2fs_get_device_info() < 0)
++	if (f2fs_get_device_info() < 0) {
++		if (c.func == FSCK)
++			return FSCK_OPERATIONAL_ERROR;
+ 		return -1;
++	}
+ 
+ fsck_again:
+ 	memset(&gfsck, 0, sizeof(gfsck));
+@@ -808,7 +822,7 @@ fsck_again:
+ 
+ 	switch (c.func) {
+ 	case FSCK:
+-		do_fsck(sbi);
++		ret = do_fsck(sbi);
+ 		break;
+ #ifdef WITH_DUMP
+ 	case DUMP:
+@@ -856,8 +870,8 @@ fsck_again:
+ 			char ans[255] = {0};
+ retry:
+ 			printf("Do you want to fix this partition? [Y/N] ");
+-			ret = scanf("%s", ans);
+-			ASSERT(ret >= 0);
++			ret2 = scanf("%s", ans);
++			ASSERT(ret2 >= 0);
+ 			if (!strcasecmp(ans, "y"))
+ 				c.fix_on = 1;
+ 			else if (!strcasecmp(ans, "n"))
+@@ -869,12 +883,15 @@ retry:
+ 				goto fsck_again;
+ 		}
+ 	}
+-	ret = f2fs_finalize_device();
+-	if (ret < 0)
+-		return ret;
++	ret2 = f2fs_finalize_device();
++	if (ret2) {
++		if (c.func == FSCK)
++			return FSCK_OPERATIONAL_ERROR;
++		return ret2;
++	}
+ 
+ 	printf("\nDone: %lf secs\n", (clock() - start) / (double)CLOCKS_PER_SEC);
+-	return 0;
++	return ret;
+ 
+ out_err:
+ 	if (sbi->ckpt)
+-- 
+2.27.0
+

+ 1 - 1
package/feh/feh.hash

@@ -1,3 +1,3 @@
 # Locally calculated after checking pgp signature
 sha256 782463034ab0135bc8438515191f986db23a79d502154d23a7c07a7574907b7b  feh-3.4.1.tar.bz2
-sha256 a289176a74d8e5d071456df5d4ee629aeb86f8eeeb6570076fe126f182c6b91d  COPYING
+sha256 2c3a31327dc3cc3331aa6e759d378e4f66d0ece7174a0d5aa137f3cba4bf0509  COPYING

+ 2 - 2
package/fping/fping.hash

@@ -1,5 +1,5 @@
 # Locally calculated
-sha256 7d339674b6a95aae1d8ad487ff5056fd95b474c3650938268f6a905c3771b64a  fping-4.2.tar.gz
+sha256  ed38c0b9b64686a05d1b3bc1d66066114a492e04e44eef1821d43b1263cd57b8  fping-5.0.tar.gz
 
 # Hash for license file
-sha256 6051b27e4b4a648f7bc8b329024da53a6e95ce88fcf0ccc259c371a74b741757  COPYING
+sha256  6051b27e4b4a648f7bc8b329024da53a6e95ce88fcf0ccc259c371a74b741757  COPYING

+ 1 - 1
package/fping/fping.mk

@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-FPING_VERSION = 4.2
+FPING_VERSION = 5.0
 FPING_SITE = http://fping.org/dist
 FPING_LICENSE = BSD-like
 FPING_LICENSE_FILES = COPYING

+ 3 - 3
package/gdk-pixbuf/gdk-pixbuf.hash

@@ -1,4 +1,4 @@
-# From http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.36/gdk-pixbuf-2.36.10.sha256sum
-sha256 f8f6fa896b89475c73b6e9e8d2a2b062fc359c4b4ccb8e96470d6ab5da949ace  gdk-pixbuf-2.36.10.tar.xz
+# From http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.36/gdk-pixbuf-2.36.12.sha256sum
+sha256  fff85cf48223ab60e3c3c8318e2087131b590fd6f1737e42cb3759a3b427a334  gdk-pixbuf-2.36.12.tar.xz
 # Locally calculated
-sha256 d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5  COPYING
+sha256  d245807f90032872d1438d741ed21e2490e1175dc8aa3afa5ddb6c8e529b58e5  COPYING

+ 1 - 1
package/gdk-pixbuf/gdk-pixbuf.mk

@@ -5,7 +5,7 @@
 ################################################################################
 
 GDK_PIXBUF_VERSION_MAJOR = 2.36
-GDK_PIXBUF_VERSION = $(GDK_PIXBUF_VERSION_MAJOR).10
+GDK_PIXBUF_VERSION = $(GDK_PIXBUF_VERSION_MAJOR).12
 GDK_PIXBUF_SOURCE = gdk-pixbuf-$(GDK_PIXBUF_VERSION).tar.xz
 GDK_PIXBUF_SITE = http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/$(GDK_PIXBUF_VERSION_MAJOR)
 GDK_PIXBUF_LICENSE = LGPL-2.0+

+ 3 - 1
package/grpc/Config.in

@@ -4,8 +4,9 @@ config BR2_PACKAGE_GRPC
 	depends on BR2_TOOLCHAIN_HAS_THREADS # protobuf
 	depends on BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS # protobuf
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # protobuf
-	depends on !BR2_STATIC_LIBS # protobuf
+	depends on !BR2_STATIC_LIBS # protobuf, libabseil-cpp
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC
+	depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS
 	select BR2_PACKAGE_C_ARES
 	select BR2_PACKAGE_LIBABSEIL_CPP
 	select BR2_PACKAGE_OPENSSL
@@ -18,6 +19,7 @@ config BR2_PACKAGE_GRPC
 	  http://github.com/grpc/grpc
 
 comment "grpc needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8"
+	depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 || BR2_TOOLCHAIN_HAS_ATOMIC
 	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS \
 		|| BR2_STATIC_LIBS || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8

+ 173 - 0
package/htop/0002-Resolve-complation-issues-with-fno-common.patch

@@ -0,0 +1,173 @@
+From dfd9279f87791e36a5212726781c31fbe7110361 Mon Sep 17 00:00:00 2001
+From: Nathan Scott <nathans@redhat.com>
+Date: Fri, 10 Jul 2020 10:35:32 +1000
+Subject: [PATCH] Resolve complation issues with -fno-common (default from
+ gcc-10)
+
+Extends the MakeHeader script to auto-generate correct "extern"
+function declarations in some cases that it currently does not.
+
+Related to https://github.com/hishamhm/htop/pull/981
+
+Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru>
+Fetch from: https://github.com/hishamhm/htop/commit/dfd9279f87791e36a5212726781c31fbe7110361.patch
+---
+ CRT.c                 |  4 ++--
+ CRT.h                 | 28 ++++++++++++++--------------
+ linux/LinuxProcess.c  |  3 ++-
+ linux/LinuxProcess.h  | 19 ++++++++++---------
+ scripts/MakeHeader.py |  4 +++-
+ 5 files changed, 31 insertions(+), 27 deletions(-)
+
+diff --git a/CRT.c b/CRT.c
+index ca9a10dd..088cd1a4 100644
+--- a/CRT.c
++++ b/CRT.c
+@@ -131,9 +131,9 @@ typedef enum ColorElements_ {
+    LAST_COLORELEMENT
+ } ColorElements;
+ 
+-void CRT_fatalError(const char* note) __attribute__ ((noreturn));
++extern void CRT_fatalError(const char* note) __attribute__ ((noreturn));
+ 
+-void CRT_handleSIGSEGV(int sgn);
++extern void CRT_handleSIGSEGV(int sgn);
+ 
+ #define KEY_ALT(x) (KEY_F(64 - 26) + (x - 'A'))
+ 
+diff --git a/CRT.h b/CRT.h
+index 933fe068..bc3fb8b7 100644
+--- a/CRT.h
++++ b/CRT.h
+@@ -119,9 +119,9 @@ typedef enum ColorElements_ {
+    LAST_COLORELEMENT
+ } ColorElements;
+ 
+-void CRT_fatalError(const char* note) __attribute__ ((noreturn));
++extern void CRT_fatalError(const char* note) __attribute__ ((noreturn));
+ 
+-void CRT_handleSIGSEGV(int sgn);
++extern void CRT_handleSIGSEGV(int sgn);
+ 
+ #define KEY_ALT(x) (KEY_F(64 - 26) + (x - 'A'))
+ 
+@@ -140,7 +140,7 @@ extern const char **CRT_treeStr;
+ 
+ extern int CRT_delay;
+ 
+-int* CRT_colors;
++extern int* CRT_colors;
+ 
+ extern int CRT_colorSchemes[LAST_COLORSCHEME][LAST_COLORELEMENT];
+ 
+@@ -150,21 +150,21 @@ extern int CRT_scrollHAmount;
+ 
+ extern int CRT_scrollWheelVAmount;
+ 
+-char* CRT_termType;
++extern char* CRT_termType;
+ 
+ // TODO move color scheme to Settings, perhaps?
+ 
+ extern int CRT_colorScheme;
+ 
+-void *backtraceArray[128];
++extern void *backtraceArray[128];
+ 
+ #if HAVE_SETUID_ENABLED
+ 
+ #define DIE(msg) do { CRT_done(); fprintf(stderr, msg); exit(1); } while(0)
+ 
+-void CRT_dropPrivileges();
++extern void CRT_dropPrivileges();
+ 
+-void CRT_restorePrivileges();
++extern void CRT_restorePrivileges();
+ 
+ #else
+ 
+@@ -179,18 +179,18 @@ void CRT_restorePrivileges();
+ 
+ // TODO: pass an instance of Settings instead.
+ 
+-void CRT_init(int delay, int colorScheme);
++extern void CRT_init(int delay, int colorScheme);
+ 
+-void CRT_done();
++extern void CRT_done();
+ 
+-void CRT_fatalError(const char* note);
++extern void CRT_fatalError(const char* note);
+ 
+-int CRT_readKey();
++extern int CRT_readKey();
+ 
+-void CRT_disableDelay();
++extern void CRT_disableDelay();
+ 
+-void CRT_enableDelay();
++extern void CRT_enableDelay();
+ 
+-void CRT_setColors(int colorScheme);
++extern void CRT_setColors(int colorScheme);
+ 
+ #endif
+
+diff --git a/linux/LinuxProcess.h b/linux/LinuxProcess.h
+index 6ce3037d..586aa717 100644
+--- a/linux/LinuxProcess.h
++++ b/linux/LinuxProcess.h
+@@ -152,9 +153,9 @@ extern ProcessPidColumn Process_pidColumns[];
+ 
+ extern ProcessClass LinuxProcess_class;
+ 
+-LinuxProcess* LinuxProcess_new(Settings* settings);
++extern LinuxProcess* LinuxProcess_new(Settings* settings);
+ 
+-void Process_delete(Object* cast);
++extern void Process_delete(Object* cast);
+ 
+ /*
+ [1] Note that before kernel 2.6.26 a process that has not asked for
+@@ -166,19 +167,19 @@ extern io_priority;
+ */
+ #define LinuxProcess_effectiveIOPriority(p_) (IOPriority_class(p_->ioPriority) == IOPRIO_CLASS_NONE ? IOPriority_tuple(IOPRIO_CLASS_BE, (p_->super.nice + 20) / 5) : p_->ioPriority)
+ 
+-IOPriority LinuxProcess_updateIOPriority(LinuxProcess* this);
++extern IOPriority LinuxProcess_updateIOPriority(LinuxProcess* this);
+ 
+-bool LinuxProcess_setIOPriority(LinuxProcess* this, IOPriority ioprio);
++extern bool LinuxProcess_setIOPriority(LinuxProcess* this, IOPriority ioprio);
+ 
+ #ifdef HAVE_DELAYACCT
+-void LinuxProcess_printDelay(float delay_percent, char* buffer, int n);
++extern void LinuxProcess_printDelay(float delay_percent, char* buffer, int n);
+ #endif
+ 
+-void LinuxProcess_writeField(Process* this, RichString* str, ProcessField field);
++extern void LinuxProcess_writeField(Process* this, RichString* str, ProcessField field);
+ 
+-long LinuxProcess_compare(const void* v1, const void* v2);
++extern long LinuxProcess_compare(const void* v1, const void* v2);
+ 
+-bool Process_isThread(Process* this);
++extern bool Process_isThread(Process* this);
+ 
+ 
+ #endif
+diff --git a/scripts/MakeHeader.py b/scripts/MakeHeader.py
+index 349531b8..3ef34b88 100755
+--- a/scripts/MakeHeader.py
++++ b/scripts/MakeHeader.py
+@@ -54,8 +54,10 @@
+          elif line.startswith("typedef struct"):
+             state = SKIP
+          elif line[-1] == "{":
+-            out.write( line[:-2].replace("inline", "extern") + ";\n" )
++            out.write("extern " + line[:-2].replace("inline ", "") + ";\n")
+             state = SKIP
++         elif line[-1] == ";":
++            out.write("extern " + line + "\n")
+          else:
+             out.write( line + "\n")
+          is_blank = False

+ 1 - 6
package/iputils/iputils.mk

@@ -40,13 +40,8 @@ IPUTILS_DEPENDENCIES += libgcrypt
 else ifeq ($(BR2_PACKAGE_OPENSSL),y)
 IPUTILS_CONF_OPTS += -DUSE_CRYPTO=openssl
 IPUTILS_DEPENDENCIES += openssl
-else ifeq ($(BR2_PACKAGE_LINUX_HEADERS),y)
-IPUTILS_CONF_OPTS += -DUSE_CRYPTO=kernel
-IPUTILS_DEPENDENCIES += linux-headers
 else
-IPUTILS_CONF_OPTS += -DUSE_CRYPTO=none
-# BUILD_NINFOD=true and USE_CRYPTO=none cannot be combined
-IPUTILS_NINFOD = n
+IPUTILS_CONF_OPTS += -DUSE_CRYPTO=kernel
 endif
 
 ifeq ($(BR2_PACKAGE_SYSTEMD),y)

+ 77 - 0
package/libabseil-cpp/0003-Fix-build-on-riscv32-675.patch

@@ -0,0 +1,77 @@
+From 3f347c46272886a099852a4cd303ecf37a054de8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 18 May 2020 10:23:50 -0700
+Subject: [PATCH] Fix build on riscv32 (#675)
+
+[Backport from upstream commit 3f347c46272886a099852a4cd303ecf37a054de8]
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+---
+ absl/base/internal/direct_mmap.h        | 5 +++++
+ absl/base/internal/spinlock_linux.inc   | 8 ++++++++
+ absl/synchronization/internal/waiter.cc | 8 ++++++++
+ 3 files changed, 21 insertions(+)
+
+diff --git a/absl/base/internal/direct_mmap.h b/absl/base/internal/direct_mmap.h
+index 5618867..16accf0 100644
+--- a/absl/base/internal/direct_mmap.h
++++ b/absl/base/internal/direct_mmap.h
+@@ -61,6 +61,10 @@ extern "C" void* __mmap2(void*, size_t, int, int, int, size_t);
+ #endif
+ #endif  // __BIONIC__
+ 
++#if defined(__NR_mmap2) && !defined(SYS_mmap2)
++#define SYS_mmap2 __NR_mmap2
++#endif
++
+ namespace absl {
+ ABSL_NAMESPACE_BEGIN
+ namespace base_internal {
+@@ -72,6 +76,7 @@ inline void* DirectMmap(void* start, size_t length, int prot, int flags, int fd,
+ #if defined(__i386__) || defined(__ARM_ARCH_3__) || defined(__ARM_EABI__) || \
+     (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI32) ||                   \
+     (defined(__PPC__) && !defined(__PPC64__)) ||                             \
++    (defined(__riscv) && __riscv_xlen == 32) ||                              \
+     (defined(__s390__) && !defined(__s390x__))
+   // On these architectures, implement mmap with mmap2.
+   static int pagesize = 0;
+diff --git a/absl/base/internal/spinlock_linux.inc b/absl/base/internal/spinlock_linux.inc
+index 323edd6..e31c6ed 100644
+--- a/absl/base/internal/spinlock_linux.inc
++++ b/absl/base/internal/spinlock_linux.inc
+@@ -46,6 +46,14 @@ static_assert(sizeof(std::atomic<uint32_t>) == sizeof(int),
+ #endif
+ #endif
+ 
++#if defined(__NR_futex_time64) && !defined(SYS_futex_time64)
++#define SYS_futex_time64 __NR_futex_time64
++#endif
++
++#if defined(SYS_futex_time64) && !defined(SYS_futex)
++#define SYS_futex SYS_futex_time64
++#endif
++
+ extern "C" {
+ 
+ ABSL_ATTRIBUTE_WEAK void AbslInternalSpinLockDelay(
+diff --git a/absl/synchronization/internal/waiter.cc b/absl/synchronization/internal/waiter.cc
+index 2949f5a..b6150b9 100644
+--- a/absl/synchronization/internal/waiter.cc
++++ b/absl/synchronization/internal/waiter.cc
+@@ -86,6 +86,14 @@ static void MaybeBecomeIdle() {
+ #endif
+ #endif
+ 
++#if defined(__NR_futex_time64) && !defined(SYS_futex_time64)
++#define SYS_futex_time64 __NR_futex_time64
++#endif
++
++#if defined(SYS_futex_time64) && !defined(SYS_futex)
++#define SYS_futex SYS_futex_time64
++#endif
++
+ class Futex {
+  public:
+   static int WaitUntil(std::atomic<int32_t> *v, int32_t val,
+-- 
+2.26.2
+

+ 19 - 2
package/libabseil-cpp/Config.in

@@ -1,7 +1,22 @@
+# see absl/debugging/internal/examine_stack.cc for the list of
+# architectures that are supported, and for which ucontext is used.
+config BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS
+	bool
+	default y if BR2_aarch64 || BR2_aarch64_be
+	default y if BR2_arm || BR2_armeb
+	default y if BR2_i386
+	default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
+	default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
+	default y if BR2_riscv
+	default y if BR2_x86_64
+	depends on BR2_TOOLCHAIN_HAS_UCONTEXT
+
 config BR2_PACKAGE_LIBABSEIL_CPP
 	bool "libabseil-cpp"
 	depends on BR2_INSTALL_LIBSTDCPP
 	depends on BR2_TOOLCHAIN_HAS_THREADS
+	depends on !BR2_STATIC_LIBS # uses dlfcn.h
+	depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS
 	help
 	  Abseil is an open-source collection of C++ library code
 	  designed to augment the C++ standard library. The Abseil
@@ -11,5 +26,7 @@ config BR2_PACKAGE_LIBABSEIL_CPP
 
 	  https://github.com/abseil/abseil-cpp
 
-comment "libabseil-cpp needs a toolchain w/ C++, threads"
-	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS
+comment "libabseil-cpp needs a toolchain w/ C++, threads, dynamic library"
+	depends on BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HAS_THREADS || \
+		BR2_STATIC_LIBS

+ 4 - 0
package/libcamera/libcamera.mk

@@ -36,6 +36,10 @@ LIBCAMERA_LICENSE_FILES = \
 	LICENSES/CC0-1.0.txt \
 	LICENSES/CC-BY-SA-4.0.txt
 
+ifeq ($(BR2_TOOLCHAIN_GCC_AT_LEAST_7),y)
+LIBCAMERA_CXXFLAGS = -faligned-new
+endif
+
 ifeq ($(BR2_PACKAGE_LIBCAMERA_V4L2),y)
 LIBCAMERA_CONF_OPTS += -Dv4l2=true
 else

+ 1 - 1
package/libfuse3/libfuse3.hash

@@ -1,3 +1,3 @@
 # Locally calculated sha256 checksums
-sha256  b4409255cbda6f6975ca330f5b04cb335b823a95ddd8c812c3d224ec53478fc0  libfuse3-3.9.2.tar.gz
+sha256  9e076ae757a09cac9ce1beb50b3361ae83a831e5abc0f1bf5cdf771cd1320338  libfuse3-3.9.4.tar.gz
 sha256  b8832d9caaa075bbbd2aef24efa09f8b7ab66a832812d88c602da0c7b4397fad  LICENSE

+ 1 - 1
package/libfuse3/libfuse3.mk

@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-LIBFUSE3_VERSION = 3.9.2
+LIBFUSE3_VERSION = 3.9.4
 LIBFUSE3_SITE = $(call github,libfuse,libfuse,fuse-$(LIBFUSE3_VERSION))
 LIBFUSE3_LICENSE = LGPL-2.1
 LIBFUSE3_LICENSE_FILES = LICENSE

+ 5 - 4
package/librtlsdr/0001-disable_shared_library_target_in_build.patch

@@ -1,4 +1,4 @@
-From c8878472bf84c656979ea1d07e7ed55b0aa2c939 Mon Sep 17 00:00:00 2001
+From 9a1c2587d4ef18e2026811deabd024eb7577d9ce Mon Sep 17 00:00:00 2001
 From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
 Date: Fri, 15 May 2020 16:14:48 +0200
 Subject: [PATCH] disable shared library target in build
@@ -19,12 +19,13 @@ will be install.
 Signed-off-by: Yuvaraj Patil <yuvaraj.patil@wipro.com>
 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
 Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
+Signed-off-by: Titouan Christophe <titouan.christophe@railnova.eu>
 ---
  src/CMakeLists.txt | 30 +++++++++++++++++++++---------
  1 file changed, 21 insertions(+), 9 deletions(-)
 
 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
-index 33faee7..d82fc87 100644
+index de93044..13b7b1a 100644
 --- a/src/CMakeLists.txt
 +++ b/src/CMakeLists.txt
 @@ -18,6 +18,8 @@
@@ -121,9 +122,9 @@ index 33faee7..d82fc87 100644
    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} # .so/.dylib file
    )
 +endif()
- install(TARGETS rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power
+ install(TARGETS rtl_sdr rtl_tcp rtl_test rtl_fm rtl_eeprom rtl_adsb rtl_power rtl_biast
    DESTINATION ${CMAKE_INSTALL_BINDIR}
    )
 -- 
-2.26.2
+2.25.3
 

+ 47 - 0
package/librtlsdr/0002-cmake-Modules-Version.cmake-don-t-use-Git-version-if.patch

@@ -0,0 +1,47 @@
+From feb5d9c6b7bcec788f9b01781c205e31fff260e7 Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+Date: Tue, 11 Aug 2020 23:07:08 +0200
+Subject: [PATCH] cmake/Modules/Version.cmake: don't use Git version if not in
+ a Git repo
+
+If the librtlsdr code comes from a tarball, it doesn't have any .git/
+metadata, and therefore even if Git (as a tool) is found, the logic in
+cmake/Modules/Version.cmake fails finding a version through Git:
+
+-- Extracting version information from git describe...
+fatal: Not a git repository (or any of the parent directories): .git
+
+As a consequence, the VERSION variable is empty, which later causes
+cmake to bail out with:
+
+CMake Error at /home/test/autobuild/run/instance-1/output-1/host/share/cmake-3.15/Modules/WriteBasicConfigVersionFile.cmake:43 (message):
+  No VERSION specified for WRITE_BASIC_CONFIG_VERSION_FILE()
+Call Stack (most recent call first):
+  /home/test/autobuild/run/instance-1/output-1/host/share/cmake-3.15/Modules/CMakePackageConfigHelpers.cmake:225 (write_basic_config_version_file)
+  CMakeLists.txt:173 (write_basic_package_version_file)
+
+To avoid this, we only use Git to determine the version if the cmake
+project top-level source directory has a .git/ folder.
+
+Upstream: https://github.com/librtlsdr/librtlsdr/pull/75
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+---
+ cmake/Modules/Version.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmake/Modules/Version.cmake b/cmake/Modules/Version.cmake
+index 2d4e76d..6f67fa4 100644
+--- a/cmake/Modules/Version.cmake
++++ b/cmake/Modules/Version.cmake
+@@ -32,7 +32,7 @@ set(PATCH_VERSION ${VERSION_INFO_PATCH_VERSION})
+ ########################################################################
+ find_package(Git QUIET)
+ 
+-if(GIT_FOUND)
++if(GIT_FOUND AND EXISTS ${CMAKE_SOURCE_DIR}/.git)
+     message(STATUS "Extracting version information from git describe...")
+     execute_process(
+         COMMAND ${GIT_EXECUTABLE} describe --always --abbrev=4 --long
+-- 
+2.26.2
+

+ 2 - 2
package/librtlsdr/librtlsdr.hash

@@ -1,4 +1,4 @@
 # Locally calculated
-sha256 78c20031287017d057941640dcf05cb7666cfedcfad1b4a1186ed00cabfabc2f  librtlsdr-d794155ba65796a76cd0a436f9709f4601509320.tar.gz
+sha256  f09ff5ba2fa1780071321ba22885b9d1a16ac9d4b944a97e39b6921960439301  librtlsdr-ed0317e6a58c098874ac58b769cf2e609c18d9a5.tar.gz
 # License file, locally calculated
-sha256 ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING
+sha256  ab15fd526bd8dd18a9e77ebc139656bf4d33e97fc7238cd11bf60e2b9b8666c6  COPYING

+ 1 - 1
package/librtlsdr/librtlsdr.mk

@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-LIBRTLSDR_VERSION = d794155ba65796a76cd0a436f9709f4601509320
+LIBRTLSDR_VERSION = ed0317e6a58c098874ac58b769cf2e609c18d9a5
 LIBRTLSDR_SITE = $(call github,steve-m,librtlsdr,$(LIBRTLSDR_VERSION))
 LIBRTLSDR_LICENSE = GPL-2.0+
 LIBRTLSDR_LICENSE_FILES = COPYING

+ 60 - 0
package/minizip/0002-mz.h-fix-build-with-gcc-4.8.patch

@@ -0,0 +1,60 @@
+From d38254c2cfdfa2baceef9e4fa553b74ed2e0247e Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Sat, 25 Jul 2020 14:36:11 +0200
+Subject: [PATCH] mz.h: fix build with gcc 4.8
+
+gcc 4.8 does not support __has_include directive as a result the build
+will fail on:
+
+/home/naourr/work/instance-1/output-1/build/minizip-2.10.0/mz.h:162:44: error: missing binary operator before token "("
+    (defined(__has_include) && __has_include(<stdint.h>))
+                                            ^
+
+Fix it by appling:
+https://gcc.gnu.org/onlinedocs/gcc-10.1.0/cpp/_005f_005fhas_005finclude.html
+
+Fix #510
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+[Upstream status: https://github.com/nmoinvaz/minizip/pull/515]
+---
+ mz.h | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/mz.h b/mz.h
+index 4d3732b..83662e0 100644
+--- a/mz.h
++++ b/mz.h
+@@ -158,9 +158,12 @@
+ #include <string.h> /* memset, strncpy, strlen */
+ #include <limits.h>
+ 
+-#if defined(HAVE_STDINT_H) || \
+-   (defined(__has_include) && __has_include(<stdint.h>))
++#if defined(HAVE_STDINT_H)
+ #  include <stdint.h>
++#elif defined(__has_include)
++#  if __has_include(<stdint.h>)
++#    include <stdint.h>
++#  endif
+ #endif
+ 
+ #ifndef __INT8_TYPE__
+@@ -188,9 +191,12 @@ typedef unsigned int       uint32_t;
+ typedef unsigned long long uint64_t;
+ #endif
+ 
+-#if defined(HAVE_INTTYPES_H) || \
+-   (defined(__has_include) && __has_include(<inttypes.h>))
++#if defined(HAVE_INTTYPES_H)
+ #  include <inttypes.h>
++#elif defined(__has_include)
++#  if __has_include(<inttypes.h>)
++#    include <inttypes.h>
++#  endif
+ #endif
+ 
+ #ifndef PRId8
+-- 
+2.27.0
+

+ 2 - 1
package/mtd/mtd.mk

@@ -21,7 +21,8 @@ endif
 ifeq ($(BR2_PACKAGE_MTD_UBIFS_UTILS),y)
 MTD_DEPENDENCIES += util-linux zlib lzo host-pkgconf
 MTD_CONF_OPTS += --with-ubifs
-ifeq ($(BR2_PACKAGE_OPENSSL),y)
+# crypto needs linux/hash_info.h
+ifeq ($(BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12)$(BR2_PACKAGE_OPENSSL),yy)
 MTD_DEPENDENCIES += openssl
 MTD_CONF_OPTS += --with-crypto
 else

+ 1 - 1
package/prosody/Config.in

@@ -4,7 +4,7 @@ config BR2_PACKAGE_PROSODY
 	depends on BR2_PACKAGE_HAS_LUAINTERPRETER
 	depends on !BR2_PACKAGE_LUA_5_4
 	depends on !BR2_STATIC_LIBS # luaexpat, luasec, luasocket, luafilesystem
-	select BR2_PACKAGE_LUABITOP if !BR2_PACKAGE_LUAJIT # runtime
+	select BR2_PACKAGE_LUABITOP if BR2_PACKAGE_LUA_5_1 # runtime
 	select BR2_PACKAGE_LUAEXPAT # runtime
 	select BR2_PACKAGE_LUASEC # runtime
 	select BR2_PACKAGE_LUASOCKET # runtime

+ 1 - 0
package/python-cython/python-cython.mk

@@ -4,6 +4,7 @@
 #
 ################################################################################
 
+# Please keep in sync with package/python3-cython/python3-cython.mk
 PYTHON_CYTHON_VERSION = 0.29.21
 PYTHON_CYTHON_SOURCE = Cython-$(PYTHON_CYTHON_VERSION).tar.gz
 PYTHON_CYTHON_SITE = https://files.pythonhosted.org/packages/6c/9f/f501ba9d178aeb1f5bf7da1ad5619b207c90ac235d9859961c11829d0160

+ 1 - 0
package/python-pycryptodomex/python-pycryptodomex.mk

@@ -4,6 +4,7 @@
 #
 ################################################################################
 
+# Please keep in sync with package/python3-pycryptodomex/python3-pycryptodomex.mk
 PYTHON_PYCRYPTODOMEX_VERSION = 3.9.8
 PYTHON_PYCRYPTODOMEX_SOURCE = pycryptodomex-$(PYTHON_PYCRYPTODOMEX_VERSION).tar.gz
 PYTHON_PYCRYPTODOMEX_SITE = https://files.pythonhosted.org/packages/f5/79/9d9206688385d1e7a5ff925e7aab1d685636256e34a409037aa7adbbe611

+ 117 - 0
package/python-rpi-gpio/0001-fix-build-with-gcc-10.x.patch

@@ -0,0 +1,117 @@
+Description: This patch fixes the "multiple definition of" errors with gcc10
+
+Signed-off-by: Michael Fischer <mf@go-sys.de>
+
+diff -purN python-rpi-gpio.org/source/common.h python-rpi-gpio/source/common.h
+--- python-rpi-gpio.org/source/common.h	2019-07-21 14:41:22.000000000 +0200
++++ python-rpi-gpio/source/common.h	2020-08-07 09:31:33.948575964 +0200
+@@ -30,14 +30,14 @@ SOFTWARE.
+ #define I2C          42
+ #define PWM          43
+ 
+-int gpio_mode;
+-const int pin_to_gpio_rev1[41];
+-const int pin_to_gpio_rev2[41];
+-const int pin_to_gpio_rev3[41];
+-const int (*pin_to_gpio)[41];
+-int gpio_direction[54];
+-rpi_info rpiinfo;
+-int setup_error;
+-int module_setup;
++extern int gpio_mode;
++extern const int pin_to_gpio_rev1[41];
++extern const int pin_to_gpio_rev2[41];
++extern const int pin_to_gpio_rev3[41];
++extern const int (*pin_to_gpio)[41];
++extern int gpio_direction[54];
++extern rpi_info rpiinfo;
++extern int setup_error;
++extern int module_setup;
+ int check_gpio_priv(void);
+ int get_gpio_number(int channel, unsigned int *gpio);
+diff -purN python-rpi-gpio.org/source/constants.h python-rpi-gpio/source/constants.h
+--- python-rpi-gpio.org/source/constants.h	2019-07-21 14:41:22.000000000 +0200
++++ python-rpi-gpio/source/constants.h	2020-08-07 09:32:15.522196618 +0200
+@@ -23,22 +23,22 @@ SOFTWARE.
+ #define PY_PUD_CONST_OFFSET 20
+ #define PY_EVENT_CONST_OFFSET 30
+ 
+-PyObject *high;
+-PyObject *low;
+-PyObject *input;
+-PyObject *output;
+-PyObject *pwm;
+-PyObject *serial;
+-PyObject *i2c;
+-PyObject *spi;
+-PyObject *unknown;
+-PyObject *board;
+-PyObject *bcm;
+-PyObject *pud_off;
+-PyObject *pud_up;
+-PyObject *pud_down;
+-PyObject *rising_edge;
+-PyObject *falling_edge;
+-PyObject *both_edge;
++extern PyObject *high;
++extern PyObject *low;
++extern PyObject *input;
++extern PyObject *output;
++extern PyObject *pwm;
++extern PyObject *serial;
++extern PyObject *i2c;
++extern PyObject *spi;
++extern PyObject *unknown;
++extern PyObject *board;
++extern PyObject *bcm;
++extern PyObject *pud_off;
++extern PyObject *pud_up;
++extern PyObject *pud_down;
++extern PyObject *rising_edge;
++extern PyObject *falling_edge;
++extern PyObject *both_edge;
+ 
+ void define_constants(PyObject *module);
+diff -purN python-rpi-gpio.org/source/event_gpio.c python-rpi-gpio/source/event_gpio.c
+--- python-rpi-gpio.org/source/event_gpio.c	2019-07-21 14:41:22.000000000 +0200
++++ python-rpi-gpio/source/event_gpio.c	2020-08-07 09:42:05.564483136 +0200
+@@ -57,7 +57,7 @@ struct callback
+ };
+ struct callback *callbacks = NULL;
+ 
+-pthread_t threads;
++static pthread_t threads;
+ int event_occurred[54] = { 0 };
+ int thread_running = 0;
+ int epfd_thread = -1;
+diff -purN python-rpi-gpio.org/source/py_pwm.h python-rpi-gpio/source/py_pwm.h
+--- python-rpi-gpio.org/source/py_pwm.h	2019-07-21 14:41:22.000000000 +0200
++++ python-rpi-gpio/source/py_pwm.h	2020-08-07 09:38:49.445646807 +0200
+@@ -20,5 +20,5 @@ OUT OF OR IN CONNECTION WITH THE SOFTWAR
+ SOFTWARE.
+ */
+ 
+-PyTypeObject PWMType;
++extern PyTypeObject PWMType;
+ PyTypeObject *PWM_init_PWMType(void);
+diff -purN python-rpi-gpio.org/source/soft_pwm.c python-rpi-gpio/source/soft_pwm.c
+--- python-rpi-gpio.org/source/soft_pwm.c	2019-07-21 14:41:22.000000000 +0200
++++ python-rpi-gpio/source/soft_pwm.c	2020-08-07 09:42:40.753160437 +0200
+@@ -25,7 +25,7 @@ SOFTWARE.
+ #include <time.h>
+ #include "c_gpio.h"
+ #include "soft_pwm.h"
+-pthread_t threads;
++static pthread_t threads;
+ 
+ struct pwm
+ {
+diff -purN python-rpi-gpio.org/source/soft_pwm.h python-rpi-gpio/source/soft_pwm.h
+--- python-rpi-gpio.org/source/soft_pwm.h	2019-07-21 14:41:22.000000000 +0200
++++ python-rpi-gpio/source/soft_pwm.h	2020-08-07 09:39:25.916811352 +0200
+@@ -26,4 +26,4 @@ void pwm_set_duty_cycle(unsigned int gpi
+ void pwm_set_frequency(unsigned int gpio, float freq);
+ void pwm_start(unsigned int gpio);
+ void pwm_stop(unsigned int gpio);
+-int pwm_exists(unsigned int gpio);
++extern int pwm_exists(unsigned int gpio);

+ 1 - 0
package/python3-cython/python3-cython.hash

@@ -0,0 +1 @@
+../python-cython/python-cython.hash

+ 16 - 0
package/python3-cython/python3-cython.mk

@@ -0,0 +1,16 @@
+################################################################################
+#
+# python3-cython
+#
+################################################################################
+
+# Please keep in sync with package/python-cython/python-cython.mk
+PYTHON3_CYTHON_VERSION = 0.29.21
+PYTHON3_CYTHON_SOURCE = Cython-$(PYTHON3_CYTHON_VERSION).tar.gz
+PYTHON3_CYTHON_SITE = https://files.pythonhosted.org/packages/6c/9f/f501ba9d178aeb1f5bf7da1ad5619b207c90ac235d9859961c11829d0160
+PYTHON3_CYTHON_SETUP_TYPE = setuptools
+PYTHON3_CYTHON_LICENSE = Apache-2.0
+PYTHON3_CYTHON_LICENSE_FILES = COPYING.txt LICENSE.txt
+HOST_PYTHON3_CYTHON_NEEDS_HOST_PYTHON = python3
+
+$(eval $(host-python-package))

+ 1 - 1
package/python3-decorator/python3-decorator.mk

@@ -7,7 +7,7 @@
 # Please keep in sync with package/python-decorator/python-decorator.mk
 PYTHON3_DECORATOR_VERSION = 4.4.1
 PYTHON3_DECORATOR_SITE = https://files.pythonhosted.org/packages/dc/c3/9d378af09f5737cfd524b844cd2fbb0d2263a35c11d712043daab290144d
-PYTHON3_DECORATOR_SOURCE = decorator-$(PYTHON_DECORATOR_VERSION).tar.gz
+PYTHON3_DECORATOR_SOURCE = decorator-$(PYTHON3_DECORATOR_VERSION).tar.gz
 PYTHON3_DECORATOR_LICENSE = BSD-2-Clause
 PYTHON3_DECORATOR_LICENSE_FILES = LICENSE.txt
 PYTHON3_DECORATOR_SETUP_TYPE = setuptools

+ 1 - 1
package/python3-mako/python3-mako.mk

@@ -7,7 +7,7 @@
 # Please keep in sync with
 # package/python-mako/python-mako.mk
 PYTHON3_MAKO_VERSION = 1.1.2
-PYTHON3_MAKO_SOURCE = Mako-$(PYTHON_MAKO_VERSION).tar.gz
+PYTHON3_MAKO_SOURCE = Mako-$(PYTHON3_MAKO_VERSION).tar.gz
 PYTHON3_MAKO_SITE = https://files.pythonhosted.org/packages/42/64/fc7c506d14d8b6ed363e7798ffec2dfe4ba21e14dda4cfab99f4430cba3a
 PYTHON3_MAKO_SETUP_TYPE = setuptools
 PYTHON3_MAKO_LICENSE = MIT

+ 1 - 0
package/python3-pycryptodomex/python3-pycryptodomex.hash

@@ -0,0 +1 @@
+../python-pycryptodomex/python-pycryptodomex.hash

+ 20 - 0
package/python3-pycryptodomex/python3-pycryptodomex.mk

@@ -0,0 +1,20 @@
+################################################################################
+#
+# python3-pycryptodomex
+#
+################################################################################
+
+# Please keep in sync with package/python-pycryptodomex/python-pycryptodomex.mk
+PYTHON3_PYCRYPTODOMEX_VERSION = 3.9.8
+PYTHON3_PYCRYPTODOMEX_SOURCE = pycryptodomex-$(PYTHON3_PYCRYPTODOMEX_VERSION).tar.gz
+PYTHON3_PYCRYPTODOMEX_SITE = https://files.pythonhosted.org/packages/f5/79/9d9206688385d1e7a5ff925e7aab1d685636256e34a409037aa7adbbe611
+PYTHON3_PYCRYPTODOMEX_SETUP_TYPE = setuptools
+PYTHON3_PYCRYPTODOMEX_LICENSE = \
+	BSD-2-Clause, \
+	Public Domain (pycrypto original code), \
+	OCB patent license (OCB mode)
+PYTHON3_PYCRYPTODOMEX_LICENSE_FILES = LICENSE.rst Doc/LEGAL/COPYRIGHT.pycrypto
+HOST_PYTHON3_PYCRYPTODOMEX_DL_SUBDIR = python-pycryptodomex
+HOST_PYTHON3_PYCRYPTODOMEX_NEEDS_HOST_PYTHON = python3
+
+$(eval $(host-python-package))

+ 1 - 1
package/python3-pyelftools/python3-pyelftools.mk

@@ -6,7 +6,7 @@
 
 # Please keep in sync with package/python-pyelftools/python-pyelftools.mk
 PYTHON3_PYELFTOOLS_VERSION = 0.25
-PYTHON3_PYELFTOOLS_SOURCE = pyelftools-$(PYTHON_PYELFTOOLS_VERSION).tar.gz
+PYTHON3_PYELFTOOLS_SOURCE = pyelftools-$(PYTHON3_PYELFTOOLS_VERSION).tar.gz
 PYTHON3_PYELFTOOLS_SITE = https://files.pythonhosted.org/packages/fa/9a/0674cb1725196568bdbca98304f2efb17368b57af1a4bb3fc772c026f474
 PYTHON3_PYELFTOOLS_LICENSE = Public domain
 PYTHON3_PYELFTOOLS_LICENSE_FILES = LICENSE

+ 1 - 1
package/setools/Config.in

@@ -4,7 +4,7 @@ config BR2_PACKAGE_SETOOLS
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on BR2_USE_WCHAR
 	depends on BR2_USE_MMU
-	depends on BR2_PACKAGE_PYTHON3 # python-networkx
+	depends on BR2_PACKAGE_PYTHON3
 	select BR2_PACKAGE_PYTHON_NETWORKX # runtime
 	select BR2_PACKAGE_PYTHON_SETUPTOOLS
 	select BR2_PACKAGE_LIBSELINUX

+ 2 - 1
package/setools/setools.mk

@@ -11,7 +11,8 @@ SETOOLS_INSTALL_STAGING = YES
 SETOOLS_LICENSE = GPL-2.0+, LGPL-2.1+
 SETOOLS_LICENSE_FILES = COPYING COPYING.GPL COPYING.LGPL
 SETOOLS_SETUP_TYPE = setuptools
-HOST_SETOOLS_DEPENDENCIES = host-python-cython host-libselinux host-libsepol host-python-networkx
+HOST_SETOOLS_DEPENDENCIES = host-python3-cython host-libselinux host-libsepol host-python-networkx
+HOST_SETOOLS_NEEDS_HOST_PYTHON = python3
 
 define SETOOLS_FIX_SETUP
 	# By default, setup.py will look for libsepol.a in the host machines

+ 753 - 0
package/smstools3/0002-fix-build-with-gcc-10.x.patch

@@ -0,0 +1,753 @@
+Description: fix of FTBFS with gcc10
+Author: Thorsten Alteholz <debian@alteholz.de>
+
+Fetch from: <https://salsa.debian.org/debian-mobcom-team/smstools/-/blob/57a358a9eebbe2ca5639cc526f7027944ed95ea1/debian/patches/gcc10.patch>
+
+Signed-off-by: Michael Fischer <mf@go-sys.de>
+
+Index: smstools/src/smsd_cfg.h
+===================================================================
+--- smstools.orig/src/smsd_cfg.h	2020-08-05 19:02:50.536596441 +0000
++++ smstools/src/smsd_cfg.h	2020-08-05 19:33:22.915005150 +0000
+@@ -126,17 +126,17 @@
+ #define ALPHABET_UNKNOWN        4
+ #define ALPHABET_DEFAULT        0
+ 
+-char process_title[32];         // smsd for main task, NOTIFIER or CHILD, name of a modem for other tasks.
+-int process_id;                 // -1 for main task, all modems have numbers starting with 0.
++extern char process_title[32];         // smsd for main task, NOTIFIER or CHILD, name of a modem for other tasks.
++extern int process_id;                 // -1 for main task, all modems have numbers starting with 0.
+                                 // This is the same as device, can be used like devices[process_id] if IS_MODEM_PROCESS.
+ 
+-time_t process_start_time;
++extern time_t process_start_time;
+ 
+-int modem_handle;               // Handle for modem.
++extern int modem_handle;               // Handle for modem.
+ 
+-int put_command_timeouts;
+-unsigned long long put_command_sent; // 3.1.16beta.
+-char tmpdir[PATH_MAX];          // 3.1.16beta.
++extern int put_command_timeouts;
++extern unsigned long long put_command_sent; // 3.1.16beta.
++extern char tmpdir[PATH_MAX];          // 3.1.16beta.
+ 
+ typedef struct
+ {
+@@ -284,204 +284,204 @@
+ 
+ // NOTE for regular run intervals: effective value is at least delaytime.
+ 
+-char configfile[PATH_MAX];	// Path to config file
+-char d_spool[PATH_MAX];		// Spool directory
+-char d_failed[PATH_MAX];	// Failed spool directory
+-char d_failed_copy[PATH_MAX];	// 3.1.17.
+-char d_incoming[PATH_MAX];	// Incoming spool directory
+-char d_incoming_copy[PATH_MAX]; // 3.1.16beta2.
+-char d_report[PATH_MAX];	// Incoming report spool directory
+-char d_report_copy[PATH_MAX];	// 3.1.17.
+-char d_phonecalls[PATH_MAX];    // Incoming phonecalls data directory
+-char d_saved[PATH_MAX];         // Directory for smsd's internal use, concatenation storage files etc.
+-char d_sent[PATH_MAX];		// Sent spool directory
+-char d_sent_copy[PATH_MAX];	// 3.1.17.
+-char d_checked[PATH_MAX];	// Spool directory for checked messages (only used when no provider queues used)
+-char eventhandler[PATH_MAX];	// Global event handler program or script
+-char alarmhandler[PATH_MAX];	// Global alarm handler program or script
+-char checkhandler[PATH_MAX];    // Handler that checks if the sms file is valid.
+-int alarmlevel;			// Alarm Level (9=highest). Verbosity of alarm handler.
+-char logfile[PATH_MAX];		// Name or Handle of Log File
+-int  loglevel;			// Log Level (9=highest). Verbosity of log file.
+-_queue queues[NUMBER_OF_MODEMS]; // Queues
+-_device devices[NUMBER_OF_MODEMS]; // Modem devices
+-int delaytime;			// sleep-time after workless
+-int delaytime_mainprocess;      // sleep-time after workless, main process. If -1, delaytime is used.
+-int blocktime;			// sleep-time after multiple errors
+-int blockafter;                 // Block modem after n errors
+-int errorsleeptime;		// sleep-time after each error
+-int autosplit;			// Splitting of large text messages 0=no, 1=yes 2=number with text, 3=number with UDH
+-int receive_before_send;	// if 1 smsd tries to receive one message before sending
+-int store_received_pdu;         // 0=no, 1=unsupported pdu's only, 2=unsupported and 8bit/unicode, 3=all
+-int store_sent_pdu;             // 0=no, 1=failed pdu's only, 2=failed and 8bit/unicode, 3=all
+-int validity_period;            // Validity period for messages.
+-int decode_unicode_text;        // 1 if unicode text is decoded internally.
+-int internal_combine;           // 1 if multipart message is combined internally.
+-int internal_combine_binary;    // 1 if multipart binary message is combined internally. Defaults to internal_combine.
+-int keep_filename;              // 0 if unique filename is created to each directory when a message file is moved.
+-int store_original_filename;    // 1 if an original filename is saved to message file when it's moved from
+-                                // outgoing directory to spooler. Works together with keep_filename.
+-int date_filename;              // 1 or 2 if YYYYMMDD is included to the filename of incoming message.
+-char regular_run[PATH_MAX];     // Script/program which is run regularly.
+-int regular_run_interval;       // Number of seconds between running a regular_run script/progdam.
+-char admin_to[SIZE_TO];         // Destination number for administrative messages.
+-int filename_preview;           // Number of chars of message text to concatenate to filename.
+-int incoming_utf8;              // 1 if incoming files are saved using UTF-8 character set.
+-int outgoing_utf8;              // 1 if outgoing files are automatically converted from UTF-8 to ISO and GSM.
+-int log_charconv;               // 1 if character set conversion is logged.
+-int log_single_lines;           // 1 if linefeeds are removed from the modem response to be logged.
+-int executable_check;           // 0 if eventhandler and other executables are NOT checked during the startup checking.
+-int keep_messages;              // For testing purposes: messages are not deleted and smsd stops after first run.
+-char priviledged_numbers[SIZE_PRIVILEDGED_NUMBERS]; // Priviledged numbers in incoming messages.
+-int ic_purge_hours;             // If internal_combine is used, concatenation storage is checked every ic_purge_interval minutes
+-int ic_purge_minutes;           // and if there is message parts older than defined, they are handled or deleted.
+-int ic_purge_read;              // 1 = message parts are stored as single messages. 0 = parts are just deleted.
+-int ic_purge_interval;          // 
+-char shell[PATH_MAX];           // Shell used to run eventhandler, defaults to /bin/sh
+-char adminmessage_device[32];   // Name of device used to send administrative messages of mainspooler.
+-int smart_logging;              // 1 = if loglevel is less than 7, degug log is written is there has been any errors.
+-int status_signal_quality;      // 1 = signal quality is written to status file.
+-int status_include_counters;    // 1 = succeeded, failed and received counters are included in the status line.
+-int status_include_uptime;      // 3.1.16beta: 1 = include started & uptime line in the status file.
+-int hangup_incoming_call;       // 1 = if detected unexpected input contains RING and we want to end call.
+-int max_continuous_sending;     // Defines when sending is breaked to do check/do other tasks. Time in minutes.
+-int voicecall_hangup_ath;       // If ATH is used instead of AT+CHUP.
++extern char configfile[PATH_MAX];	// Path to config file
++extern char d_spool[PATH_MAX];		// Spool directory
++extern char d_failed[PATH_MAX];	// Failed spool directory
++extern char d_failed_copy[PATH_MAX];	// 3.1.17.
++extern char d_incoming[PATH_MAX];	// Incoming spool directory
++extern char d_incoming_copy[PATH_MAX]; // 3.1.16beta2.
++extern char d_report[PATH_MAX];	// Incoming report spool directory
++extern char d_report_copy[PATH_MAX];	// 3.1.17.
++extern char d_phonecalls[PATH_MAX];    // Incoming phonecalls data directory
++extern char d_saved[PATH_MAX];         // Directory for smsd's internal use, concatenation storage files etc.
++extern char d_sent[PATH_MAX];		// Sent spool directory
++extern char d_sent_copy[PATH_MAX];	// 3.1.17.
++extern char d_checked[PATH_MAX];	// Spool directory for checked messages (only used when no provider queues used)
++extern char eventhandler[PATH_MAX];	// Global event handler program or script
++extern char alarmhandler[PATH_MAX];	// Global alarm handler program or script
++extern char checkhandler[PATH_MAX];    // Handler that checks if the sms file is valid.
++extern int alarmlevel;			// Alarm Level (9=highest). Verbosity of alarm handler.
++extern char logfile[PATH_MAX];		// Name or Handle of Log File
++extern int  loglevel;			// Log Level (9=highest). Verbosity of log file.
++extern _queue queues[NUMBER_OF_MODEMS]; // Queues
++extern _device devices[NUMBER_OF_MODEMS]; // Modem devices
++extern int delaytime;			// sleep-time after workless
++extern int delaytime_mainprocess;      // sleep-time after workless, main process. If -1, delaytime is used.
++extern int blocktime;			// sleep-time after multiple errors
++extern int blockafter;                 // Block modem after n errors
++extern int errorsleeptime;		// sleep-time after each error
++extern int autosplit;			// Splitting of large text messages 0=no, 1=yes 2=number with text, 3=number with UDH
++extern int receive_before_send;	// if 1 smsd tries to receive one message before sending
++extern int store_received_pdu;         // 0=no, 1=unsupported pdu's only, 2=unsupported and 8bit/unicode, 3=all
++extern int store_sent_pdu;             // 0=no, 1=failed pdu's only, 2=failed and 8bit/unicode, 3=all
++extern int validity_period;            // Validity period for messages.
++extern int decode_unicode_text;        // 1 if unicode text is decoded internally.
++extern int internal_combine;           // 1 if multipart message is combined internally.
++extern int internal_combine_binary;    // 1 if multipart binary message is combined internally. Defaults to internal_combine.
++extern int keep_filename;              // 0 if unique filename is created to each directory when a message file is moved.
++extern int store_original_filename;    // 1 if an original filename is saved to message file when it's moved from
++// outgoing directory to spooler. Works together with keep_filename.
++extern int date_filename;              // 1 or 2 if YYYYMMDD is included to the filename of incoming message.
++extern char regular_run[PATH_MAX];     // Script/program which is run regularly.
++extern int regular_run_interval;       // Number of seconds between running a regular_run script/progdam.
++extern char admin_to[SIZE_TO];         // Destination number for administrative messages.
++extern int filename_preview;           // Number of chars of message text to concatenate to filename.
++extern int incoming_utf8;              // 1 if incoming files are saved using UTF-8 character set.
++extern int outgoing_utf8;              // 1 if outgoing files are automatically converted from UTF-8 to ISO and GSM.
++extern int log_charconv;               // 1 if character set conversion is logged.
++extern int log_single_lines;           // 1 if linefeeds are removed from the modem response to be logged.
++extern int executable_check;           // 0 if eventhandler and other executables are NOT checked during the startup checking.
++extern int keep_messages;              // For testing purposes: messages are not deleted and smsd stops after first run.
++extern char priviledged_numbers[SIZE_PRIVILEDGED_NUMBERS]; // Priviledged numbers in incoming messages.
++extern int ic_purge_hours;             // If internal_combine is used, concatenation storage is checked every ic_purge_interval minutes
++extern int ic_purge_minutes;           // and if there is message parts older than defined, they are handled or deleted.
++extern int ic_purge_read;              // 1 = message parts are stored as single messages. 0 = parts are just deleted.
++extern int ic_purge_interval;          //
++extern char shell[PATH_MAX];           // Shell used to run eventhandler, defaults to /bin/sh
++extern char adminmessage_device[32];   // Name of device used to send administrative messages of mainspooler.
++extern int smart_logging;              // 1 = if loglevel is less than 7, degug log is written is there has been any errors.
++extern int status_signal_quality;      // 1 = signal quality is written to status file.
++extern int status_include_counters;    // 1 = succeeded, failed and received counters are included in the status line.
++extern int status_include_uptime;      // 3.1.16beta: 1 = include started & uptime line in the status file.
++extern int hangup_incoming_call;       // 1 = if detected unexpected input contains RING and we want to end call.
++extern int max_continuous_sending;     // Defines when sending is breaked to do check/do other tasks. Time in minutes.
++extern int voicecall_hangup_ath;       // If ATH is used instead of AT+CHUP.
+ 
+ // 3.1.5:
+-int trust_outgoing;             // 1 = it's _sure_ that files are created by rename AND permissions are correct. Speeds up spooling.
++extern int trust_outgoing;             // 1 = it's _sure_ that files are created by rename AND permissions are correct. Speeds up spooling.
+ 
+ // 3.1.5:
+-int ignore_outgoing_priority;   // 1 = Priority: high header is not checked. Speeds up spooling.
++extern int ignore_outgoing_priority;   // 1 = Priority: high header is not checked. Speeds up spooling.
+ 
+ // 3.1.7:
+-int ignore_exec_output;         // 1 = stdout and stderr of eventhandlers is _not_ checked.
++extern int ignore_exec_output;         // 1 = stdout and stderr of eventhandlers is _not_ checked.
+ 
+ // 3.1.7:
+-mode_t conf_umask;              // File mode creation mask for smsd and modem processes.
++extern mode_t conf_umask;              // File mode creation mask for smsd and modem processes.
+ 
+ // 3.1.7:
+-int trim_text;                  // 1 = trailing whitespaces are removed from text:
++extern int trim_text;                  // 1 = trailing whitespaces are removed from text:
+ 
+ // 3.1.7:
+-int use_linux_ps_trick;         // 1 = change argv[0] to "smsd: MAINPROCESS", "smsd: GSM1" etc.
++extern int use_linux_ps_trick;         // 1 = change argv[0] to "smsd: MAINPROCESS", "smsd: GSM1" etc.
+ 
+ // 3.1.7:
+-int log_unmodified;
++extern int log_unmodified;
+ 
+ // 3.1.7:
+-char suspend_filename[PATH_MAX];
++extern char suspend_filename[PATH_MAX];
+ 
+ // 3.1.9:
+-int spool_directory_order;
++extern int spool_directory_order;
+ 
+ // 3.1.9: 1 if read_from_modem is logged.
+-int log_read_from_modem;
++extern int log_read_from_modem;
+ 
+ // 3.1.16beta2: log_read_timing for performance tuning.
+-int log_read_timing;
++extern int log_read_timing;
+ 
+ // 3.1.16beta:
+-int log_response_time;
++extern int log_response_time;
+ 
+ // 3.1.16beta2:
+-int default_alphabet;
++extern int default_alphabet;
+ 
+ // 3.1.17: Child process for the mainprocess:
+-char mainprocess_child[PATH_MAX];
+-char mainprocess_child_args[PATH_MAX];
++extern char mainprocess_child[PATH_MAX];
++extern char mainprocess_child_args[PATH_MAX];
+ 
+ // 3.1.17: Notifier for the mainprocess:
+-int mainprocess_notifier;
++extern int mainprocess_notifier;
+ 
+ // 3.1.17: If *_copy was made, evenhandler can use it instead of original file:
+-int eventhandler_use_copy;
++extern int eventhandler_use_copy;
+ 
+ // 3.1.17: This defines how long to sleep while looping:
+-int sleeptime_mainprocess;
++extern int sleeptime_mainprocess;
+ 
+ // 3.1.17: Defines how often PID is checked to detect if another smsd is running:
+-int check_pid_interval;
++extern int check_pid_interval;
+ 
+ // 3.1.18: start script/program for mainprocess:
+-char mainprocess_start[PATH_MAX];
+-char mainprocess_start_args[PATH_MAX];
++extern char mainprocess_start[PATH_MAX];
++extern char mainprocess_start_args[PATH_MAX];
+ 
+-int message_count;              // Counter for sent messages. Multipart message is one message.
++extern int message_count;              // Counter for sent messages. Multipart message is one message.
+ 
+-volatile sig_atomic_t break_workless_delay; // To break the delay when SIGCONT is received.
+-volatile sig_atomic_t terminate; // To terminate when SIGTERM is received.
++extern volatile sig_atomic_t break_workless_delay; // To break the delay when SIGCONT is received.
++extern volatile sig_atomic_t terminate; // To terminate when SIGTERM is received.
+ 
+-char username[65];              // user and group name which are used to run.
+-char groupname[65];             // (max length is just a guess)
++extern char username[65];              // user and group name which are used to run.
++extern char groupname[65];             // (max length is just a guess)
+ 
+-char infofile[PATH_MAX];        // Hepler file for stopping the smsd smoothly.
+-char pidfile[PATH_MAX];         // File where a process id is stored.
++extern char infofile[PATH_MAX];        // Hepler file for stopping the smsd smoothly.
++extern char pidfile[PATH_MAX];         // File where a process id is stored.
+ 
+ // Command line arguments:
+-char arg_username[65];
+-char arg_groupname[65];
+-char arg_infofile[PATH_MAX];
+-char arg_pidfile[PATH_MAX];
+-char arg_logfile[PATH_MAX];
+-int arg_terminal;
++extern char arg_username[65];
++extern char arg_groupname[65];
++extern char arg_infofile[PATH_MAX];
++extern char arg_pidfile[PATH_MAX];
++extern char arg_logfile[PATH_MAX];
++extern int arg_terminal;
+ // 3.1.7:
+-char arg_7bit_packed[512];
+-int do_encode_decode_arg_7bit_packed;
++extern char arg_7bit_packed[512];
++extern int do_encode_decode_arg_7bit_packed;
+ 
+-int terminal;                   // 1 if smsd is communicating with terminal.
+-pid_t device_pids[NUMBER_OF_MODEMS]; // Pid's of modem processes.
+-char run_info[PATH_MAX];        // Information about external script/program execution.
++extern int terminal;                   // 1 if smsd is communicating with terminal.
++extern pid_t device_pids[NUMBER_OF_MODEMS]; // Pid's of modem processes.
++extern char run_info[PATH_MAX];        // Information about external script/program execution.
+ 
+-char communicate[32];           // Device name for terminal communication mode.
++extern char communicate[32];           // Device name for terminal communication mode.
+ 
+-char international_prefixes[PATH_MAX +1];
+-char national_prefixes[PATH_MAX +1];
++extern char international_prefixes[PATH_MAX +1];
++extern char national_prefixes[PATH_MAX +1];
+ 
+ // Storage for startup errors:
+-char *startup_err_str;
+-int startup_err_count;
++extern char *startup_err_str;
++extern int startup_err_count;
+ 
+ // Storage for PDU's:
+-char *incoming_pdu_store;
+-char *outgoing_pdu_store;
+-char *routed_pdu_store;
++extern char *incoming_pdu_store;
++extern char *outgoing_pdu_store;
++extern char *routed_pdu_store;
+ 
+ // Storage for getfile errors:
+-char *getfile_err_store;
++extern char *getfile_err_store;
+ 
+ // Text buffer for error messages:
+-char tb[SIZE_TB];
++extern char tb[SIZE_TB];
+ 
+ // Buffer for SIM memory checking:
+-char *check_memory_buffer;
+-size_t check_memory_buffer_size;
++extern char *check_memory_buffer;
++extern size_t check_memory_buffer_size;
+ 
+-int os_cygwin;                  // 1 if we are on Cygwin.
++extern int os_cygwin;                  // 1 if we are on Cygwin.
+ 
+-char language_file[PATH_MAX];   // File name of translated headers.
+-char yes_chars[SIZE_HEADER];    // Characters which mean "yes" in the yesno() question.
+-char no_chars[SIZE_HEADER];     // See details inside read_translation() function.
+-char yes_word[SIZE_HEADER];     // "yes" printed as an output.
+-char no_word[SIZE_HEADER];      // "no"
+-char datetime_format[SIZE_HEADER]; // strftime format string for time stamps (not inside status reports).
+-char logtime_format[SIZE_HEADER]; // 3.1.7: strftime format string for logging time stamps
+-char date_filename_format[SIZE_HEADER]; // 3.1.7: strftime format string for date_filename
+-int translate_incoming;         // 0 if incoming message headers are NOT transtaled.
++extern char language_file[PATH_MAX];   // File name of translated headers.
++extern char yes_chars[SIZE_HEADER];    // Characters which mean "yes" in the yesno() question.
++extern char no_chars[SIZE_HEADER];     // See details inside read_translation() function.
++extern char yes_word[SIZE_HEADER];     // "yes" printed as an output.
++extern char no_word[SIZE_HEADER];      // "no"
++extern char datetime_format[SIZE_HEADER]; // strftime format string for time stamps (not inside status reports).
++extern char logtime_format[SIZE_HEADER]; // 3.1.7: strftime format string for logging time stamps
++extern char date_filename_format[SIZE_HEADER]; // 3.1.7: strftime format string for date_filename
++extern int translate_incoming;         // 0 if incoming message headers are NOT transtaled.
+ 
+ // 3.1.14:
+-int logtime_us;
+-int logtime_ms;
++extern int logtime_us;
++extern int logtime_ms;
+ 
+ // 3.1.14:
+-int shell_test;
++extern int shell_test;
+ 
+ // Next two are for debugging purposes:
+-int enable_smsd_debug;
+-char smsd_debug[SIZE_SMSD_DEBUG]; // Header of an outgoing message file.
++extern int enable_smsd_debug;
++extern char smsd_debug[SIZE_SMSD_DEBUG]; // Header of an outgoing message file.
+ 
+ // 3.1.20: Alt keys in communication mode:
+ #define COMMUNICATE_A_KEY_COUNT 10
+-char communicate_a_keys[COMMUNICATE_A_KEY_COUNT][256];
++extern char communicate_a_keys[COMMUNICATE_A_KEY_COUNT][256];
+ 
+ /* initialize all variable with default values */
+ 
+Index: smstools/src/smsd_cfg.c
+===================================================================
+--- smstools.orig/src/smsd_cfg.c	2020-07-27 19:00:41.616207603 +0000
++++ smstools/src/smsd_cfg.c	2020-08-05 19:17:41.595712888 +0000
+@@ -38,6 +38,221 @@
+ #include "modeminit.h"
+ #include "charshift.h"
+ 
++
++/* global variables */
++char process_title[32];         // smsd for main task, NOTIFIER or CHILD, name of a modem for other tasks.
++int process_id;                 // -1 for main task, all modems have numbers starting with 0.
++                                // This is the same as device, can be used like devices[process_id] if IS_MODEM_PROCESS.
++
++time_t process_start_time;
++
++int modem_handle;               // Handle for modem.
++
++int put_command_timeouts;
++unsigned long long put_command_sent; // 3.1.16beta.
++char tmpdir[PATH_MAX];          // 3.1.16beta.
++
++// NOTE for regular run intervals: effective value is at least delaytime.
++
++char configfile[PATH_MAX];	// Path to config file
++char d_spool[PATH_MAX];		// Spool directory
++char d_failed[PATH_MAX];	// Failed spool directory
++char d_failed_copy[PATH_MAX];	// 3.1.17.
++char d_incoming[PATH_MAX];	// Incoming spool directory
++char d_incoming_copy[PATH_MAX]; // 3.1.16beta2.
++char d_report[PATH_MAX];	// Incoming report spool directory
++char d_report_copy[PATH_MAX];	// 3.1.17.
++char d_phonecalls[PATH_MAX];    // Incoming phonecalls data directory
++char d_saved[PATH_MAX];         // Directory for smsd's internal use, concatenation storage files etc.
++char d_sent[PATH_MAX];		// Sent spool directory
++char d_sent_copy[PATH_MAX];	// 3.1.17.
++char d_checked[PATH_MAX];	// Spool directory for checked messages (only used when no provider queues used)
++char eventhandler[PATH_MAX];	// Global event handler program or script
++char alarmhandler[PATH_MAX];	// Global alarm handler program or script
++char checkhandler[PATH_MAX];    // Handler that checks if the sms file is valid.
++int alarmlevel;			// Alarm Level (9=highest). Verbosity of alarm handler.
++char logfile[PATH_MAX];		// Name or Handle of Log File
++int  loglevel;			// Log Level (9=highest). Verbosity of log file.
++_queue queues[NUMBER_OF_MODEMS]; // Queues
++_device devices[NUMBER_OF_MODEMS]; // Modem devices
++int delaytime;			// sleep-time after workless
++int delaytime_mainprocess;      // sleep-time after workless, main process. If -1, delaytime is used.
++int blocktime;			// sleep-time after multiple errors
++int blockafter;                 // Block modem after n errors
++int errorsleeptime;		// sleep-time after each error
++int autosplit;			// Splitting of large text messages 0=no, 1=yes 2=number with text, 3=number with UDH
++int receive_before_send;	// if 1 smsd tries to receive one message before sending
++int store_received_pdu;         // 0=no, 1=unsupported pdu's only, 2=unsupported and 8bit/unicode, 3=all
++int store_sent_pdu;             // 0=no, 1=failed pdu's only, 2=failed and 8bit/unicode, 3=all
++int validity_period;            // Validity period for messages.
++int decode_unicode_text;        // 1 if unicode text is decoded internally.
++int internal_combine;           // 1 if multipart message is combined internally.
++int internal_combine_binary;    // 1 if multipart binary message is combined internally. Defaults to internal_combine.
++int keep_filename;              // 0 if unique filename is created to each directory when a message file is moved.
++int store_original_filename;    // 1 if an original filename is saved to message file when it's moved from
++                                // outgoing directory to spooler. Works together with keep_filename.
++int date_filename;              // 1 or 2 if YYYYMMDD is included to the filename of incoming message.
++char regular_run[PATH_MAX];     // Script/program which is run regularly.
++int regular_run_interval;       // Number of seconds between running a regular_run script/progdam.
++char admin_to[SIZE_TO];         // Destination number for administrative messages.
++int filename_preview;           // Number of chars of message text to concatenate to filename.
++int incoming_utf8;              // 1 if incoming files are saved using UTF-8 character set.
++int outgoing_utf8;              // 1 if outgoing files are automatically converted from UTF-8 to ISO and GSM.
++int log_charconv;               // 1 if character set conversion is logged.
++int log_single_lines;           // 1 if linefeeds are removed from the modem response to be logged.
++int executable_check;           // 0 if eventhandler and other executables are NOT checked during the startup checking.
++int keep_messages;              // For testing purposes: messages are not deleted and smsd stops after first run.
++char priviledged_numbers[SIZE_PRIVILEDGED_NUMBERS]; // Priviledged numbers in incoming messages.
++int ic_purge_hours;             // If internal_combine is used, concatenation storage is checked every ic_purge_interval minutes
++int ic_purge_minutes;           // and if there is message parts older than defined, they are handled or deleted.
++int ic_purge_read;              // 1 = message parts are stored as single messages. 0 = parts are just deleted.
++int ic_purge_interval;          //
++char shell[PATH_MAX];           // Shell used to run eventhandler, defaults to /bin/sh
++char adminmessage_device[32];   // Name of device used to send administrative messages of mainspooler.
++int smart_logging;              // 1 = if loglevel is less than 7, degug log is written is there has been any errors.
++int status_signal_quality;      // 1 = signal quality is written to status file.
++int status_include_counters;    // 1 = succeeded, failed and received counters are included in the status line.
++int status_include_uptime;      // 3.1.16beta: 1 = include started & uptime line in the status file.
++int hangup_incoming_call;       // 1 = if detected unexpected input contains RING and we want to end call.
++int max_continuous_sending;     // Defines when sending is breaked to do check/do other tasks. Time in minutes.
++int voicecall_hangup_ath;       // If ATH is used instead of AT+CHUP.
++
++// 3.1.5:
++int trust_outgoing;             // 1 = it's _sure_ that files are created by rename AND permissions are correct. Speeds up spooling.
++
++// 3.1.5:
++int ignore_outgoing_priority;   // 1 = Priority: high header is not checked. Speeds up spooling.
++
++// 3.1.7:
++int ignore_exec_output;         // 1 = stdout and stderr of eventhandlers is _not_ checked.
++
++// 3.1.7:
++mode_t conf_umask;              // File mode creation mask for smsd and modem processes.
++
++// 3.1.7:
++int trim_text;                  // 1 = trailing whitespaces are removed from text:
++
++// 3.1.7:
++int use_linux_ps_trick;         // 1 = change argv[0] to "smsd: MAINPROCESS", "smsd: GSM1" etc.
++
++// 3.1.7:
++int log_unmodified;
++
++// 3.1.7:
++char suspend_filename[PATH_MAX];
++
++// 3.1.9:
++int spool_directory_order;
++
++// 3.1.9: 1 if read_from_modem is logged.
++int log_read_from_modem;
++
++// 3.1.16beta2: log_read_timing for performance tuning.
++int log_read_timing;
++
++// 3.1.16beta:
++int log_response_time;
++
++// 3.1.16beta2:
++int default_alphabet;
++
++// 3.1.17: Child process for the mainprocess:
++char mainprocess_child[PATH_MAX];
++char mainprocess_child_args[PATH_MAX];
++
++// 3.1.17: Notifier for the mainprocess:
++int mainprocess_notifier;
++
++// 3.1.17: If *_copy was made, evenhandler can use it instead of original file:
++int eventhandler_use_copy;
++
++// 3.1.17: This defines how long to sleep while looping:
++int sleeptime_mainprocess;
++
++// 3.1.17: Defines how often PID is checked to detect if another smsd is running:
++int check_pid_interval;
++
++// 3.1.18: start script/program for mainprocess:
++char mainprocess_start[PATH_MAX];
++char mainprocess_start_args[PATH_MAX];
++
++int message_count;              // Counter for sent messages. Multipart message is one message.
++
++volatile sig_atomic_t break_workless_delay; // To break the delay when SIGCONT is received.
++volatile sig_atomic_t terminate; // To terminate when SIGTERM is received.
++
++char username[65];              // user and group name which are used to run.
++char groupname[65];             // (max length is just a guess)
++
++char infofile[PATH_MAX];        // Hepler file for stopping the smsd smoothly.
++char pidfile[PATH_MAX];         // File where a process id is stored.
++
++// Command line arguments:
++char arg_username[65];
++char arg_groupname[65];
++char arg_infofile[PATH_MAX];
++char arg_pidfile[PATH_MAX];
++char arg_logfile[PATH_MAX];
++int arg_terminal;
++// 3.1.7:
++char arg_7bit_packed[512];
++int do_encode_decode_arg_7bit_packed;
++
++int terminal;                   // 1 if smsd is communicating with terminal.
++pid_t device_pids[NUMBER_OF_MODEMS]; // Pid's of modem processes.
++char run_info[PATH_MAX];        // Information about external script/program execution.
++
++char communicate[32];           // Device name for terminal communication mode.
++
++char international_prefixes[PATH_MAX +1];
++char national_prefixes[PATH_MAX +1];
++
++// Storage for startup errors:
++char *startup_err_str;
++int startup_err_count;
++
++// Storage for PDU's:
++char *incoming_pdu_store;
++char *outgoing_pdu_store;
++char *routed_pdu_store;
++
++// Storage for getfile errors:
++char *getfile_err_store;
++
++// Text buffer for error messages:
++char tb[SIZE_TB];
++
++// Buffer for SIM memory checking:
++char *check_memory_buffer;
++size_t check_memory_buffer_size;
++
++int os_cygwin;                  // 1 if we are on Cygwin.
++
++char language_file[PATH_MAX];   // File name of translated headers.
++char yes_chars[SIZE_HEADER];    // Characters which mean "yes" in the yesno() question.
++char no_chars[SIZE_HEADER];     // See details inside read_translation() function.
++char yes_word[SIZE_HEADER];     // "yes" printed as an output.
++char no_word[SIZE_HEADER];      // "no"
++char datetime_format[SIZE_HEADER]; // strftime format string for time stamps (not inside status reports).
++char logtime_format[SIZE_HEADER]; // 3.1.7: strftime format string for logging time stamps
++char date_filename_format[SIZE_HEADER]; // 3.1.7: strftime format string for date_filename
++int translate_incoming;         // 0 if incoming message headers are NOT transtaled.
++
++// 3.1.14:
++int logtime_us;
++int logtime_ms;
++
++// 3.1.14:
++int shell_test;
++
++// Next two are for debugging purposes:
++int enable_smsd_debug;
++char smsd_debug[SIZE_SMSD_DEBUG]; // Header of an outgoing message file.
++
++// 3.1.20: Alt keys in communication mode:
++#define COMMUNICATE_A_KEY_COUNT 10
++char communicate_a_keys[COMMUNICATE_A_KEY_COUNT][256];
++
+ char *msg_dir = "%s directory %s cannot be opened.";
+ char *msg_file = "%s directory %s is not writable.";
+ char *msg_not_executable = "is not executable for smsd.";
+Index: smstools/src/logging.c
+===================================================================
+--- smstools.orig/src/logging.c	2020-07-27 19:00:41.612207583 +0000
++++ smstools/src/logging.c	2020-08-05 19:27:38.373800111 +0000
+@@ -25,6 +25,16 @@
+ #include "smsd_cfg.h"
+ #include "stats.h"
+ 
++
++// 3.1.16beta2: Moved logch() and prch() from charset.c to logging.c:
++char logch_buffer[8192];
++
++char prch(char ch);
++
++// 3.1.16beta: changed type:
++//int trouble_logging_started;
++time_t trouble_logging_started;
++
+ int Filehandle = -1;
+ int Level;
+ int SavedLevel;
+Index: smstools/src/logging.h
+===================================================================
+--- smstools.orig/src/logging.h	2020-07-27 19:00:41.612207583 +0000
++++ smstools/src/logging.h	2020-08-05 19:27:52.077848035 +0000
+@@ -18,7 +18,7 @@
+ #include <time.h>
+ 
+ // 3.1.16beta2: Moved logch() and prch() from charset.c to logging.c:
+-char logch_buffer[8192];
++extern char logch_buffer[8192];
+ 
+ #ifdef __GNUC__
+ void logch(char* format, ...) __attribute__ ((format(printf, 1, 2)));
+@@ -26,11 +26,11 @@
+ void logch(char* format, ...);
+ #endif
+ 
+-char prch(char ch);
++extern char prch(char ch);
+ 
+ // 3.1.16beta: changed type:
+ //int trouble_logging_started;
+-time_t trouble_logging_started;
++extern time_t trouble_logging_started;
+ 
+ int change_loglevel(int new_level);
+ void restore_loglevel();
+Index: smstools/src/stats.c
+===================================================================
+--- smstools.orig/src/stats.c	2020-07-27 19:00:41.616207603 +0000
++++ smstools/src/stats.c	2020-08-05 19:28:58.094078936 +0000
+@@ -29,6 +29,20 @@
+ #include <mm.h>
+ #endif
+ 
++
++_stats* statistics[NUMBER_OF_MODEMS]; // Statistic data (shared memory!)
++int rejected_counter;		// Statistic counter, rejected SM, number does not fit into any queue
++time_t start_time;		// Start time of smsd, allows statistic functions
++int printstatus;		// if 1 smsd outputs status on stdout
++time_t last_stats;		// time when the last stats file was created
++char d_stats[PATH_MAX];		// path to statistic files
++int stats_interval;		// time between statistic files in seconds.
++int stats_no_zeroes;		// Suppress files that contain only zeroes
++int status_interval;            // time between updating status file in seconds
++
++char *shared_buffer;
++
++
+ char newstatus[NUMBER_OF_MODEMS +1] = {0};
+ char oldstatus[NUMBER_OF_MODEMS +1] = {0};
+ 
+Index: smstools/src/stats.h
+===================================================================
+--- smstools.orig/src/stats.h	2020-07-27 19:00:41.616207603 +0000
++++ smstools/src/stats.h	2020-08-05 19:29:14.750137182 +0000
+@@ -33,17 +33,17 @@
+   int ber;
+ } _stats;
+ 
+-_stats* statistics[NUMBER_OF_MODEMS]; // Statistic data (shared memory!)
+-int rejected_counter;		// Statistic counter, rejected SM, number does not fit into any queue
+-time_t start_time;		// Start time of smsd, allows statistic functions
+-int printstatus;		// if 1 smsd outputs status on stdout
+-time_t last_stats;		// time when the last stats file was created
+-char d_stats[PATH_MAX];		// path to statistic files
+-int stats_interval;		// time between statistic files in seconds.
+-int stats_no_zeroes;		// Suppress files that contain only zeroes
+-int status_interval;            // time between updating status file in seconds
++extern _stats* statistics[NUMBER_OF_MODEMS]; // Statistic data (shared memory!)
++extern int rejected_counter;		// Statistic counter, rejected SM, number does not fit into any queue
++extern time_t start_time;		// Start time of smsd, allows statistic functions
++extern int printstatus;		// if 1 smsd outputs status on stdout
++extern time_t last_stats;		// time when the last stats file was created
++extern char d_stats[PATH_MAX];		// path to statistic files
++extern int stats_interval;		// time between statistic files in seconds.
++extern int stats_no_zeroes;		// Suppress files that contain only zeroes
++extern int status_interval;            // time between updating status file in seconds
+ 
+-char *shared_buffer;
++extern char *shared_buffer;
+ 
+ /* Creates shared memory variables for statistic data */
+ 
+Index: smstools/src/blacklist.c
+===================================================================
+--- smstools.orig/src/blacklist.c	2020-07-27 19:00:41.612207583 +0000
++++ smstools/src/blacklist.c	2020-08-05 19:34:13.903183463 +0000
+@@ -23,6 +23,8 @@
+ #include "alarm.h"
+ #include "smsd_cfg.h"
+ 
++char blacklist[256];     // Filename of the black-list
++
+ int inblacklist(char* msisdn)
+ {
+   FILE* file;
+Index: smstools/src/blacklist.h
+===================================================================
+--- smstools.orig/src/blacklist.h	2020-07-27 19:00:41.612207583 +0000
++++ smstools/src/blacklist.h	2020-08-05 19:34:04.903151994 +0000
+@@ -15,7 +15,7 @@
+ #ifndef BLACK_H
+ #define BLACK_H
+ 
+-char blacklist[256];	// Filename of the black-list
++extern char blacklist[256];	// Filename of the black-list
+ 
+ int inblacklist(char* msisdn);
+ 
+Index: smstools/src/whitelist.c
+===================================================================
+--- smstools.orig/src/whitelist.c	2020-07-27 19:00:41.616207603 +0000
++++ smstools/src/whitelist.c	2020-08-05 19:39:23.436266057 +0000
+@@ -23,6 +23,8 @@
+ #include "alarm.h"
+ #include "smsd_cfg.h"
+ 
++char whitelist[256];     // Filename of the white-list
++
+ /* Used with >= 3.1x */
+ int inwhitelist_q(char* msisdn, char *queuename)
+ {
+Index: smstools/src/whitelist.h
+===================================================================
+--- smstools.orig/src/whitelist.h	2020-07-27 19:00:41.616207603 +0000
++++ smstools/src/whitelist.h	2020-08-05 19:34:29.959239624 +0000
+@@ -15,7 +15,7 @@
+ #ifndef WHITE_H
+ #define WHITE_H
+ 
+-char whitelist[256];	// Filename of the white-list
++extern char whitelist[256];	// Filename of the white-list
+ 
+ /* Used with >= 3.1x */
+ int inwhitelist_q(char* msisdn, char *queuename);

+ 29 - 0
package/tftpd/0001-Use-extern-qualifier-to-fix-gcc-10.x-build.patch

@@ -0,0 +1,29 @@
+From 6f994166d8571961a08479736ae86c5baa2bb47f Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+Date: Fri, 7 Aug 2020 12:07:45 +0200
+Subject: [PATCH] Use "extern" qualifier to fix gcc 10.x build
+
+Patch from
+https://src.fedoraproject.org/rpms/tftp/raw/master/f/tftp-hpa-5.2-gcc10.patch.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
+---
+ tftp/tftp.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tftp/tftp.c b/tftp/tftp.c
+index d15da22..d067f96 100644
+--- a/tftp/tftp.c
++++ b/tftp/tftp.c
+@@ -48,7 +48,7 @@ extern int maxtimeout;
+ #define PKTSIZE    SEGSIZE+4
+ char ackbuf[PKTSIZE];
+ int timeout;
+-sigjmp_buf toplevel;
++extern sigjmp_buf toplevel;
+ sigjmp_buf timeoutbuf;
+ 
+ static void nak(int, const char *);
+-- 
+2.26.2
+

+ 36 - 0
package/x11r7/xserver_xorg-server/1.20.8/0007-fix-for-ZDI-11426.patch

@@ -0,0 +1,36 @@
+From aac28e162e5108510065ad4c323affd6deffd816 Mon Sep 17 00:00:00 2001
+From: Matthieu Herrb <matthieu@herrb.eu>
+Date: Sat, 25 Jul 2020 19:33:50 +0200
+Subject: [PATCH] fix for ZDI-11426
+
+Avoid leaking un-initalized memory to clients by zeroing the
+whole pixmap on initial allocation.
+
+This vulnerability was discovered by:
+Jan-Niklas Sohn working with Trend Micro Zero Day Initiative
+
+Signed-off-by: Matthieu Herrb <matthieu@herrb.eu>
+Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+[downloaded from upstream commit
+ https://gitlab.freedesktop.org/xorg/xserver/-/commit/aac28e162e5108510065ad4c323affd6deffd816]
+---
+ dix/pixmap.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/dix/pixmap.c b/dix/pixmap.c
+index 1186d7dbbf..5a0146bbb6 100644
+--- a/dix/pixmap.c
++++ b/dix/pixmap.c
+@@ -116,7 +116,7 @@ AllocatePixmap(ScreenPtr pScreen, int pixDataSize)
+     if (pScreen->totalPixmapSize > ((size_t) - 1) - pixDataSize)
+         return NullPixmap;
+ 
+-    pPixmap = malloc(pScreen->totalPixmapSize + pixDataSize);
++    pPixmap = calloc(1, pScreen->totalPixmapSize + pixDataSize);
+     if (!pPixmap)
+         return NullPixmap;
+ 
+-- 
+GitLab
+

+ 5 - 0
package/x11r7/xserver_xorg-server/xserver_xorg-server.mk

@@ -38,6 +38,11 @@ XSERVER_XORG_SERVER_DEPENDENCIES = \
 	mcookie \
 	host-pkgconf
 
+ifeq ($(BR2_PACKAGE_XSERVER_XORG_SERVER_V_1_20),y)
+# 1.20.8/0007-fix-for-ZDI-11426.patch
+XSERVER_XORG_SERVER_IGNORE_CVES += CVE-2020-14347
+endif
+
 # We force -O2 regardless of the optimization level chosen by the
 # user, as the X.org server is known to trigger some compiler bugs at
 # -Os on several architectures.

+ 1 - 0
support/testing/tests/boot/test_atf.py

@@ -14,6 +14,7 @@ class TestATFVexpress(infra.basetest.BRTest):
         BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM="juno"
         BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP=y
         BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33=y
+        BR2_TARGET_ARM_TRUSTED_FIRMWARE_NEEDS_DTC=y
         BR2_TARGET_UBOOT=y
         BR2_TARGET_UBOOT_BOARDNAME="vexpress_aemv8a_juno"
         BR2_TARGET_UBOOT_CUSTOM_VERSION=y

Some files were not shown because too many files changed in this diff