From 2303a32b9c9457aeda39e9500559c3c80a6a2fe9 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Sun, 25 Jul 2021 17:00:48 +0200 Subject: [PATCH] uxc: backport required packages for container support Signed-off-by: John Crispin --- ...s-add-defaults-for-linksys-e8450-ubi.patch | 37 +- backports/0100-procd-add-uxc-support.patch | 170 +++ ...ld-create-APK-files-parrallel-to-IPK.patch | 174 +++ .../0102-fstools-update-to-git-HEAD.patch | 69 + .../0103-tools-libressl-update-to-3.3.3.patch | 40 + backports/0104-uvol-backport-package.patch | 1213 +++++++++++++++++ backports/0105-apk-backport-package.patch | 312 +++++ .../0106-lua-lzlib-backport-package.patch | 104 ++ ...e-it-easier-to-detect-host-built-Lua.patch | 35 + ...032-ipq40xx-add-tplink-ec420-support.patch | 28 +- ...ootfs_data_max-support-during-sysupg.patch | 26 + profiles/container.yml | 10 +- profiles/edgecore_ecw5211.yml | 1 + profiles/edgecore_spw2ac1200.yml | 1 + profiles/linksys_e8450-ubi.yml | 1 + profiles/tplink_ec420.yml | 1 + 16 files changed, 2204 insertions(+), 18 deletions(-) create mode 100644 backports/0100-procd-add-uxc-support.patch create mode 100644 backports/0101-build-create-APK-files-parrallel-to-IPK.patch create mode 100644 backports/0102-fstools-update-to-git-HEAD.patch create mode 100644 backports/0103-tools-libressl-update-to-3.3.3.patch create mode 100644 backports/0104-uvol-backport-package.patch create mode 100644 backports/0105-apk-backport-package.patch create mode 100644 backports/0106-lua-lzlib-backport-package.patch create mode 100644 backports/0107-lua-make-it-easier-to-detect-host-built-Lua.patch create mode 100644 patches/0042-base-files-fix-rootfs_data_max-support-during-sysupg.patch diff --git a/backports/0007-uboot-envtools-add-defaults-for-linksys-e8450-ubi.patch b/backports/0007-uboot-envtools-add-defaults-for-linksys-e8450-ubi.patch index cf70f5d17..55f81b79b 100644 --- a/backports/0007-uboot-envtools-add-defaults-for-linksys-e8450-ubi.patch +++ b/backports/0007-uboot-envtools-add-defaults-for-linksys-e8450-ubi.patch @@ -1,7 +1,7 @@ -From 7837219939ea5d8ecab21acf943a8199bea7e89a Mon Sep 17 00:00:00 2001 +From 256daf33ec9c8cc8b094d7612ba7384db18d0a6b Mon Sep 17 00:00:00 2001 From: Daniel Golle Date: Fri, 12 Feb 2021 03:09:39 +0000 -Subject: [PATCH 7/9] uboot-envtools: add defaults for linksys-e8450-ubi +Subject: [PATCH 04/64] uboot-envtools: add defaults for linksys-e8450-ubi Add U-Boot environment configuration for the Linksys E8450 (UBI) to allow access to the bootloader environment from OpenWrt via @@ -9,17 +9,16 @@ allow access to the bootloader environment from OpenWrt via Signed-off-by: Daniel Golle --- - package/boot/uboot-envtools/files/mediatek | 25 ++++++++++++++++++++++ - 1 file changed, 25 insertions(+) + package/boot/uboot-envtools/files/mediatek | 46 ++++++++++++++++++++++ + 1 file changed, 46 insertions(+) create mode 100644 package/boot/uboot-envtools/files/mediatek diff --git a/package/boot/uboot-envtools/files/mediatek b/package/boot/uboot-envtools/files/mediatek new file mode 100644 -index 0000000000..92a04ea73d +index 0000000000..495a837274 --- /dev/null +++ b/package/boot/uboot-envtools/files/mediatek -@@ -0,0 +1,25 @@ -+#!/bin/sh +@@ -0,0 +1,46 @@ +# +# Copyright (C) 2021 OpenWrt.org +# @@ -34,10 +33,32 @@ index 0000000000..92a04ea73d +board=$(board_name) + +case "$board" in -+"linksys,e8450,ubi") ++linksys,e8450-ubi) + ubootenv_add_uci_config "/dev/ubi0_0" "0x0" "0x1f000" "0x1f000" "1" + ubootenv_add_uci_config "/dev/ubi0_1" "0x0" "0x1f000" "0x1f000" "1" + ;; ++bananapi,bpi-r64) ++ . /lib/upgrade/common.sh ++ export_bootdevice ++ export_partdevice rootdev 0 ++ case "$rootdev" in ++ mmc*) ++ local envdev=/dev/$(get_partition_by_name $rootdev ubootenv) ++ ubootenv_add_uci_config "$envdev" "0x0" "0x80000" "0x80000" "1" ++ ubootenv_add_uci_config "$envdev" "0x80000" "0x80000" "0x80000" "1" ++ ;; ++ *) ++ ubootenv_add_uci_config "/dev/ubi0_0" "0x0" "0x1f000" "0x1f000" "1" ++ ubootenv_add_uci_config "/dev/ubi0_1" "0x0" "0x1f000" "0x1f000" "1" ++ ;; ++ esac ++ ;; ++buffalo,wsr-2533dhp2) ++ ubootenv_add_uci_config "/dev/mtd3" "0x0" "0x1000" "0x20000" ++ ;; ++ubnt,unifi-6-lr-ubootmod) ++ ubootenv_add_uci_config "/dev/mtd2" "0x0" "0x4000" "0x10000" ++ ;; +esac + +config_load ubootenv diff --git a/backports/0100-procd-add-uxc-support.patch b/backports/0100-procd-add-uxc-support.patch new file mode 100644 index 000000000..4dd8c1748 --- /dev/null +++ b/backports/0100-procd-add-uxc-support.patch @@ -0,0 +1,170 @@ +From 8897bab871fb43701fad786c94af5d1b1ef123ae Mon Sep 17 00:00:00 2001 +From: John Crispin +Date: Sun, 25 Jul 2021 13:32:37 +0200 +Subject: [PATCH 01/46] procd: add uxc support + +Signed-off-by: John Crispin +--- + package/system/procd/Makefile | 12 ++--- + package/system/procd/files/procd.sh | 79 +++++++++++++++++++++++++++++ + package/system/procd/files/uxc.init | 4 ++ + 3 files changed, 89 insertions(+), 6 deletions(-) + +diff --git a/package/system/procd/Makefile b/package/system/procd/Makefile +index fff9faa1bf..98f1ed1775 100644 +--- a/package/system/procd/Makefile ++++ b/package/system/procd/Makefile +@@ -12,9 +12,9 @@ PKG_RELEASE:=$(AUTORELEASE) + + PKG_SOURCE_PROTO:=git + PKG_SOURCE_URL=$(PROJECT_GIT)/project/procd.git +-PKG_SOURCE_DATE:=2021-02-08 +-PKG_SOURCE_VERSION:=08938fe1cbc06eeaafa39448057368391d165272 +-PKG_MIRROR_HASH:=efc3deac56057e929789d44742858b2a16d976f6bfa0a2036e413d10afcaeee4 ++PKG_SOURCE_DATE:=2021-08-15 ++PKG_SOURCE_VERSION:=104b49d6ab25a8cf067e6d8d1f2da7defb9876d4 ++PKG_MIRROR_HASH:=d13b566a14e84f6babe8b7d3dfb88e34c3dff0e97d7770d6fe71174685bca628 + CMAKE_INSTALL:=1 + + PKG_LICENSE:=GPL-2.0 +@@ -32,7 +32,7 @@ include $(INCLUDE_DIR)/package.mk + include $(INCLUDE_DIR)/cmake.mk + + ifeq ($(DUMP),) +- STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell echo $(CONFIG_TARGET_INIT_PATH) | mkhash md5) ++ STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell echo $(CONFIG_TARGET_INIT_PATH) | $(MKHASH) md5) + endif + + CMAKE_OPTIONS += -DEARLY_PATH="$(TARGET_INIT_PATH)" +@@ -82,7 +82,7 @@ endef + define Package/procd-seccomp + SECTION:=base + CATEGORY:=Base system +- DEPENDS:=@(arm||armeb||mips||mipsel||i386||powerpc||x86_64) @!TARGET_uml \ ++ DEPENDS:=@(aarch64||arm||armeb||mips||mipsel||i386||powerpc||x86_64) @!TARGET_uml \ + @KERNEL_SECCOMP +libubox +libblobmsg-json + TITLE:=OpenWrt process seccomp helper + utrace + endef +@@ -90,7 +90,7 @@ endef + define Package/uxc + SECTION:=base + CATEGORY:=Base system +- DEPENDS:=+procd-ujail +libubus +libubox +libblobmsg-json ++ DEPENDS:=+procd-ujail +libubus +libubox +libblobmsg-json +blockd +rpcd + TITLE:=OpenWrt container management + MAINTAINER:=Daniel Golle + endef +diff --git a/package/system/procd/files/procd.sh b/package/system/procd/files/procd.sh +index d86b7219da..3549a5a914 100644 +--- a/package/system/procd/files/procd.sh ++++ b/package/system/procd/files/procd.sh +@@ -329,6 +329,82 @@ _procd_add_config_trigger() { + json_close_array + } + ++_procd_add_mount_trigger() { ++ json_add_array ++ _procd_add_array_data "$1" ++ local action="$2" ++ local multi=0 ++ shift ; shift ++ ++ json_add_array ++ _procd_add_array_data "if" ++ ++ if [ "$2" ]; then ++ json_add_array ++ _procd_add_array_data "or" ++ multi=1 ++ fi ++ ++ while [ "$1" ]; do ++ json_add_array ++ _procd_add_array_data "eq" "target" "$1" ++ shift ++ json_close_array ++ done ++ ++ [ $multi = 1 ] && json_close_array ++ ++ json_add_array ++ _procd_add_array_data "run_script" /etc/init.d/$name $action ++ json_close_array ++ ++ json_close_array ++ _procd_add_timeout ++ json_close_array ++} ++ ++_procd_add_action_mount_trigger() { ++ local script=$(readlink "$initscript") ++ local name=$(basename ${script:-$initscript}) ++ local action="$1" ++ local mpath ++ shift ++ ++ _procd_open_trigger ++ _procd_add_mount_trigger mount.add $action "$@" ++ _procd_close_trigger ++} ++ ++procd_get_mountpoints() { ++ ( ++ __procd_check_mount() { ++ local cfg="$1" ++ local path="${2%%/}/" ++ local target ++ config_get target "$cfg" target ++ target="${target%%/}/" ++ [ "$path" != "${path##$target}" ] && echo "${target%%/}" ++ } ++ ++ config_load fstab ++ for mpath in "$@"; do ++ config_foreach __procd_check_mount mount "$mpath" ++ done ++ ) | sort -u ++} ++ ++_procd_add_restart_mount_trigger() { ++ local mountpoints="$(procd_get_mountpoints "$@")" ++ [ "${mountpoints//[[:space:]]}" ] && ++ _procd_add_action_mount_trigger restart $mountpoints ++} ++ ++_procd_add_reload_mount_trigger() { ++ local mountpoints="$(procd_get_mountpoints "$@")" ++ [ "${mountpoints//[[:space:]]}" ] && ++ _procd_add_action_mount_trigger reload $mountpoints ++} ++ + _procd_add_raw_trigger() { + json_add_array + _procd_add_array_data "$1" +@@ -560,8 +636,11 @@ _procd_wrapper \ + procd_add_raw_trigger \ + procd_add_config_trigger \ + procd_add_interface_trigger \ ++ procd_add_mount_trigger \ + procd_add_reload_trigger \ + procd_add_reload_interface_trigger \ ++ procd_add_reload_mount_trigger \ ++ procd_add_restart_mount_trigger \ + procd_open_trigger \ + procd_close_trigger \ + procd_open_instance \ +diff --git a/package/system/procd/files/uxc.init b/package/system/procd/files/uxc.init +index 035c8b0b9e..1e75b796f8 100644 +--- a/package/system/procd/files/uxc.init ++++ b/package/system/procd/files/uxc.init +@@ -16,3 +16,7 @@ boot() { + __BOOT_UXC=1 + start + } ++ ++service_triggers() { ++ procd_add_raw_trigger "mount.add" 3000 /etc/init.d/uxc boot ++} +-- +2.25.1 + diff --git a/backports/0101-build-create-APK-files-parrallel-to-IPK.patch b/backports/0101-build-create-APK-files-parrallel-to-IPK.patch new file mode 100644 index 000000000..816b6b43a --- /dev/null +++ b/backports/0101-build-create-APK-files-parrallel-to-IPK.patch @@ -0,0 +1,174 @@ +From 0a31ac2bfc8aa43c2a5e43eac81c4647dbf2d1b7 Mon Sep 17 00:00:00 2001 +From: Paul Spooren +Date: Fri, 2 Oct 2020 23:30:30 -1000 +Subject: [PATCH 01/45] build: create APK files parrallel to IPK + +Create APK files based on the folder and control files of IPK packages. + +Signed-off-by: Paul Spooren +--- + include/package-ipkg.mk | 48 +++++++++++++++++++++++++------------ + package/Makefile | 2 ++ + package/base-files/Makefile | 4 ++++ + rules.mk | 2 ++ + scripts/apk-make-index.sh | 20 ++++++++++++++++ + 5 files changed, 61 insertions(+), 15 deletions(-) + create mode 100755 scripts/apk-make-index.sh + +diff --git a/include/package-ipkg.mk b/include/package-ipkg.mk +index c2017cd220..b0177070f8 100644 +--- a/include/package-ipkg.mk ++++ b/include/package-ipkg.mk +@@ -102,6 +102,7 @@ ifeq ($(DUMP),) + ABIV_$(1):=$(if $(filter-out kmod-%,$(1)),$(ABI_VERSION)) + PDIR_$(1):=$(call FeedPackageDir,$(1)) + IPKG_$(1):=$$(PDIR_$(1))/$(1)$$(ABIV_$(1))_$(VERSION)_$(PKGARCH).ipk ++ APK_$(1):=$$(PDIR_$(1))/$(1)$$(ABIV_$(1))_$(VERSION)_$(PKGARCH).apk + IDIR_$(1):=$(PKG_BUILD_DIR)/ipkg-$(PKGARCH)/$(1) + KEEP_$(1):=$(strip $(call Package/$(1)/conffiles)) + +@@ -200,7 +201,7 @@ $(_endef) + $(PKG_INFO_DIR)/$(1).provides $$(IPKG_$(1)): $(STAMP_BUILT) $(INCLUDE_DIR)/package-ipkg.mk + @rm -rf $$(IDIR_$(1)); \ + $$(call remove_ipkg_files,$(1),$$(call opkg_package_files,$(call gen_ipkg_wildcard,$(1)))) +- mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/CONTROL $(PKG_INFO_DIR) ++ mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1)) $(PKG_INFO_DIR) + $(call Package/$(1)/install,$$(IDIR_$(1))) + $(if $(Package/$(1)/install-overlay),mkdir -p $(PACKAGE_DIR) $$(IDIR_$(1))/rootfs-overlay) + $(call Package/$(1)/install-overlay,$$(IDIR_$(1))/rootfs-overlay) +@@ -226,6 +227,37 @@ $(_endef) + ) || true \ + ) + endif ++ ++ ifneq ($$(KEEP_$(1)),) ++ @( \ ++ keepfiles=""; \ ++ for x in $$(KEEP_$(1)); do \ ++ [ -f "$$(IDIR_$(1))/$$$$x" ] || keepfiles="$$$${keepfiles:+$$$$keepfiles }$$$$x"; \ ++ done; \ ++ [ -z "$$$$keepfiles" ] || { \ ++ mkdir -p $$(IDIR_$(1))/lib/upgrade/keep.d; \ ++ for x in $$$$keepfiles; do echo $$$$x >> $$(IDIR_$(1))/lib/upgrade/keep.d/$(1); done; \ ++ }; \ ++ ) ++ endif ++ ++ $(INSTALL_DIR) $$(PDIR_$(1)) ++ ++ $(FAKEROOT) apk mkpkg \ ++ --info "name:$(1)" \ ++ --info "version:$(VERSION)" \ ++ --info "description:$()" \ ++ --info "arch:$(PKGARCH)" \ ++ --info "license:$(LICENSE)" \ ++ --info "origin:$(SOURCE)" \ ++ --info "maintainer:$(MAINTAINER)" \ ++ $$(foreach dep,$$(Package/$(1)/DEPENDS),--info "depends:$$(subst $$(comma),,$$(dep))") \ ++ --files "$$(IDIR_$(1))" \ ++ --output "$$(APK_$(1))" \ ++ --sign "$(BUILD_KEY_APK_SEC)" ++ ++ mkdir -p $$(IDIR_$(1))/CONTROL ++ + (cd $$(IDIR_$(1))/CONTROL; \ + ( \ + echo "$$$$CONTROL"; \ +@@ -249,20 +281,6 @@ $(_endef) + $($(1)_COMMANDS) \ + ) + +- ifneq ($$(KEEP_$(1)),) +- @( \ +- keepfiles=""; \ +- for x in $$(KEEP_$(1)); do \ +- [ -f "$$(IDIR_$(1))/$$$$x" ] || keepfiles="$$$${keepfiles:+$$$$keepfiles }$$$$x"; \ +- done; \ +- [ -z "$$$$keepfiles" ] || { \ +- mkdir -p $$(IDIR_$(1))/lib/upgrade/keep.d; \ +- for x in $$$$keepfiles; do echo $$$$x >> $$(IDIR_$(1))/lib/upgrade/keep.d/$(1); done; \ +- }; \ +- ) +- endif +- +- $(INSTALL_DIR) $$(PDIR_$(1)) + $(FAKEROOT) $(SCRIPT_DIR)/ipkg-build -m "$(FILE_MODES)" $$(IDIR_$(1)) $$(PDIR_$(1)) + @[ -f $$(IPKG_$(1)) ] + +diff --git a/package/Makefile b/package/Makefile +index ec503dc527..18a19fff13 100644 +--- a/package/Makefile ++++ b/package/Makefile +@@ -60,6 +60,7 @@ $(curdir)/merge-index: $(curdir)/merge + + ifndef SDK + $(curdir)/compile: $(curdir)/system/opkg/host/compile ++ $(patsubst %,$(curdir)/%/compile,$(filter-out %/apk/host,$($(curdir)/builddirs))): $(curdir)/system/apk/host/compile + endif + + $(curdir)/install: $(TMP_DIR)/.build $(curdir)/merge $(if $(CONFIG_TARGET_PER_DEVICE_ROOTFS),$(curdir)/merge-index) +@@ -84,6 +85,7 @@ $(curdir)/index: FORCE + @for d in $(PACKAGE_SUBDIRS); do ( \ + mkdir -p $$d; \ + cd $$d || continue; \ ++ $(SCRIPT_DIR)/apk-make-index.sh . 2>&1; \ + $(SCRIPT_DIR)/ipkg-make-index.sh . 2>&1 > Packages.manifest; \ + grep -vE '^(Maintainer|LicenseFiles|Source|SourceName|Require|SourceDateEpoch)' Packages.manifest > Packages; \ + case "$$(((64 + $$(stat -L -c%s Packages)) % 128))" in 110|111) \ +diff --git a/package/base-files/Makefile b/package/base-files/Makefile +index 8a1ddf96f5..9db4812981 100644 +--- a/package/base-files/Makefile ++++ b/package/base-files/Makefile +@@ -107,6 +107,10 @@ ifdef CONFIG_SIGNED_PACKAGES + [ -s $(BUILD_KEY).ucert ] || \ + $(STAGING_DIR_HOST)/bin/ucert -I -c $(BUILD_KEY).ucert -p $(BUILD_KEY).pub -s $(BUILD_KEY) + ++ [ -s $(BUILD_KEY_APK_SEC) -a -s $(BUILD_KEY_APK_PUB) ] || \ ++ openssl ecparam -name prime256v1 -genkey -noout -out $(BUILD_KEY_APK_SEC); \ ++ openssl ec -in $(BUILD_KEY_APK_SEC) -pubout > $(BUILD_KEY_APK_PUB) ++ + endef + + ifndef CONFIG_BUILDBOT +diff --git a/rules.mk b/rules.mk +index f31d9bb113..de81b65d46 100644 +--- a/rules.mk ++++ b/rules.mk +@@ -258,6 +258,8 @@ else + endif + + BUILD_KEY=$(TOPDIR)/key-build ++BUILD_KEY_APK_SEC=$(TOPDIR)/private-key.pem ++BUILD_KEY_APK_PUB=$(TOPDIR)/public-key.pem + + FAKEROOT:=$(STAGING_DIR_HOST)/bin/fakeroot + +diff --git a/scripts/apk-make-index.sh b/scripts/apk-make-index.sh +new file mode 100755 +index 0000000000..df1f1a2e2b +--- /dev/null ++++ b/scripts/apk-make-index.sh +@@ -0,0 +1,20 @@ ++#!/usr/bin/env bash ++set -e ++ ++pkg_dir=$1 ++ ++if [ -z "$pkg_dir" ] || [ ! -d "$pkg_dir" ]; then ++ echo "Usage: apk-make-index " >&2 ++ exit 1 ++fi ++ ++( ++ cd "$pkg_dir" || exit 1 ++ GLOBIGNORE="kernel*:libc*" ++ set -- *.apk ++ if [ "$1" = '*.apk' ]; then ++ echo "No APK packages found" ++ fi ++ apk index --output APKINDEX.tar.gz "$@" ++ unset GLOBIGNORE ++) +-- +2.25.1 + diff --git a/backports/0102-fstools-update-to-git-HEAD.patch b/backports/0102-fstools-update-to-git-HEAD.patch new file mode 100644 index 000000000..3a48a72c9 --- /dev/null +++ b/backports/0102-fstools-update-to-git-HEAD.patch @@ -0,0 +1,69 @@ +From 2239c3c87a723bee8efa64ecf22c61a15433517e Mon Sep 17 00:00:00 2001 +From: Daniel Golle +Date: Sun, 25 Jul 2021 01:20:31 +0100 +Subject: [PATCH 102/146] fstools: update to git HEAD + + bad1835 fstools: add partname volume driver + 19d7d93 libfstools: partname: several fixes + 3c38f0c libfstools: fix build with glibc + d05ad93 libfstools: remove superflus include + 964d1e3 partname: allow skipping existing 'rootfs_data' partition + c44b40b overlay: fix syncronizing typo + b5397a1 fstools: block: fix segfault on mount with no target + bd7cc8d block: use dynamically allocated target string + 6d8450e blockd: use allocated strings instead of fixed buffers + d47909e libblkid-tiny: fix buffer overflow + 67d2297 block: match device path instead of assuming /dev/%s + 2aeba88 block: allow autofs and umount commands also on MTD/UBI + 3d40a1b blockd: add missing #define _GNU_SOURCE + 4d4dcfb blockd: detect mountpoint of /dev/mapper/* + 2f42515 block: resolve /dev/mapper/* name for /dev/dm-0 when hotplugging + 39558a1 blockd: also send ubus notification on mount hotplug + 3386b6b blockd: fix trigger name + cdc9939 blockd: move to its own POSIX process group + 59f7c11 blockd: create mountpoint parent folder if needed + 9cc96af Revert "block: resolve /dev/mapper/* name for /dev/dm-0 when hotplugging" + 06334ac Revert "blockd: detect mountpoint of /dev/mapper/*" + 9ab3551 block: use /dev/dm-* instead of /dev/mapper/* + 5114595 block: allow remove hotplug event to arrive at blockd + a846c6b blockd: fix length of timeout int passed to ioctl + 1d681ca block: support umount device basename + +Signed-off-by: Daniel Golle +--- + package/system/fstools/Makefile | 6 +++--- + package/system/fstools/files/blockd.init | 1 + + 2 files changed, 4 insertions(+), 3 deletions(-) + +diff --git a/package/system/fstools/Makefile b/package/system/fstools/Makefile +index 2da508d541..b582a17bae 100644 +--- a/package/system/fstools/Makefile ++++ b/package/system/fstools/Makefile +@@ -12,9 +12,9 @@ PKG_RELEASE:=1 + + PKG_SOURCE_PROTO:=git + PKG_SOURCE_URL=$(PROJECT_GIT)/project/fstools.git +-PKG_MIRROR_HASH:=a485792d90c71cd4fb396ce97f42a57ee4d2a3d78e5f3fd0748270ffb14209e6 +-PKG_SOURCE_DATE:=2021-01-04 +-PKG_SOURCE_VERSION:=c53b18820756f6f32ad0782d3bf489422b7c4ad3 ++PKG_MIRROR_HASH:=6a457b812166e04e2244ee1be92a4957666b5d1554315c0e18db1b30376cc617 ++PKG_SOURCE_DATE:=2021-07-28 ++PKG_SOURCE_VERSION:=cc63933faedd8d4fcdabb872cf4661ac04fe4ba2 + CMAKE_INSTALL:=1 + + PKG_LICENSE:=GPL-2.0 +diff --git a/package/system/fstools/files/blockd.init b/package/system/fstools/files/blockd.init +index a4ce57d40d..bdd8bbf622 100755 +--- a/package/system/fstools/files/blockd.init ++++ b/package/system/fstools/files/blockd.init +@@ -16,6 +16,7 @@ reload_service() { + start_service() { + procd_open_instance + procd_set_param command "$PROG" ++ procd_set_param watch block + procd_set_param respawn + procd_close_instance + } +-- +2.25.1 + diff --git a/backports/0103-tools-libressl-update-to-3.3.3.patch b/backports/0103-tools-libressl-update-to-3.3.3.patch new file mode 100644 index 000000000..1ebf0e4b4 --- /dev/null +++ b/backports/0103-tools-libressl-update-to-3.3.3.patch @@ -0,0 +1,40 @@ +From c40bb49f31443d9c03043c4361e4af56e5c3eba4 Mon Sep 17 00:00:00 2001 +From: Rosen Penev +Date: Sat, 19 Jun 2021 14:45:11 -0700 +Subject: [PATCH 103/146] tools/libressl: update to 3.3.3 + +Fix wrong FPIC variable usage. Fixes compilation under sparc64 host. + +Signed-off-by: Rosen Penev +(cherry picked from commit bf4dbbb55e2b8e23f186e1334f1e9ce6a3a8ddfe) +--- + tools/libressl/Makefile | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/tools/libressl/Makefile b/tools/libressl/Makefile +index 2b5a33450c..e25b5661ee 100644 +--- a/tools/libressl/Makefile ++++ b/tools/libressl/Makefile +@@ -8,8 +8,8 @@ + include $(TOPDIR)/rules.mk + + PKG_NAME:=libressl +-PKG_VERSION:=3.3.1 +-PKG_HASH:=a6d331865e0164a13ac85a228e52517f7cf8f8488f2f95f34e7857302f97cfdb ++PKG_VERSION:=3.3.3 ++PKG_HASH:=a471565b36ccd1a70d0bd7d37c6e95c43a26a62829b487d9d2cdebfe58be3066 + PKG_RELEASE:=1 + + PKG_CPE_ID:=cpe:/a:openbsd:libressl +@@ -25,7 +25,7 @@ include $(INCLUDE_DIR)/host-build.mk + + HOSTCC := $(HOSTCC_NOCACHE) + HOST_CONFIGURE_ARGS += --enable-static --disable-shared --disable-tests +-HOST_CFLAGS += $(FPIC) ++HOST_CFLAGS += $(HOST_FPIC) + + ifeq ($(GNU_HOST_NAME),x86_64-linux-gnux32) + HOST_CONFIGURE_ARGS += --disable-asm +-- +2.25.1 + diff --git a/backports/0104-uvol-backport-package.patch b/backports/0104-uvol-backport-package.patch new file mode 100644 index 000000000..6f8d05489 --- /dev/null +++ b/backports/0104-uvol-backport-package.patch @@ -0,0 +1,1213 @@ +From b915cb9a73c7696f25994c3f63fed4e6ea3aa55b Mon Sep 17 00:00:00 2001 +From: John Crispin +Date: Fri, 13 Aug 2021 08:46:57 +0200 +Subject: [PATCH 05/46] uvol: backport package + +Signed-off-by: John Crispin +--- + package/system/uvol/Makefile | 77 ++++ + package/system/uvol/files/autopart.defaults | 127 ++++++ + package/system/uvol/files/common.sh | 83 ++++ + package/system/uvol/files/lvm.sh | 435 ++++++++++++++++++++ + package/system/uvol/files/ubi.sh | 337 +++++++++++++++ + package/system/uvol/files/uvol | 52 +++ + package/system/uvol/files/uvol.defaults | 3 + + package/system/uvol/files/uvol.init | 23 ++ + 8 files changed, 1137 insertions(+) + create mode 100644 package/system/uvol/Makefile + create mode 100644 package/system/uvol/files/autopart.defaults + create mode 100644 package/system/uvol/files/common.sh + create mode 100644 package/system/uvol/files/lvm.sh + create mode 100644 package/system/uvol/files/ubi.sh + create mode 100644 package/system/uvol/files/uvol + create mode 100644 package/system/uvol/files/uvol.defaults + create mode 100644 package/system/uvol/files/uvol.init + +diff --git a/package/system/uvol/Makefile b/package/system/uvol/Makefile +new file mode 100644 +index 0000000000..e988d51682 +--- /dev/null ++++ b/package/system/uvol/Makefile +@@ -0,0 +1,77 @@ ++include $(TOPDIR)/rules.mk ++ ++PKG_NAME:=uvol ++PKG_VERSION:=0.4 ++PKG_RELEASE:=$(AUTORELEASE) ++ ++PKG_MAINTAINER:=Daniel Golle ++PKG_LICENSE:=GPL-2.0-or-later ++ ++include $(INCLUDE_DIR)/package.mk ++ ++define Package/autopart ++ SECTION:=utils ++ CATEGORY:=Utilities ++ SUBMENU:=Disc ++ TITLE:=Automatically initialize LVM partition ++ DEPENDS:=+partx-utils +sfdisk ++ PKGARCH=all ++endef ++ ++define Package/autopart/description ++ Automatically allocate the GPT partition for LVM and initialize it ++ on first boot. ++endef ++ ++define Package/uvol ++ SECTION:=utils ++ CATEGORY:=Utilities ++ SUBMENU:=Disc ++ TITLE:=OpenWrt UBI/LVM volume abstraction ++ DEPENDS:=+blockd ++ PKGARCH=all ++endef ++ ++define Package/uvol/description ++ 'uvol' is tool to automate storage volume handling on embedded ++ devices in a generic way. ++ Also install the 'autopart' package to easily make use of 'uvol' on ++ block-storage based devices. ++ ++ Examples: ++ uvol create example_volume_1 256MiB rw ++ uvol up example_volume_1 ++ uvol device example_volume_1 ++ ++ uvol create example_volume_2 9812733 ro ++ cat example_volume_2.squashfs | uvol write example_volume_2 9812733 ++ uvol up example_volume_2 ++ uvol device example_volume_2 ++endef ++ ++define Build/Prepare ++endef ++ ++define Build/Configure ++endef ++ ++define Build/Compile ++endef ++ ++define Package/autopart/install ++ $(INSTALL_DIR) $(1)/etc/uci-defaults ++ $(INSTALL_BIN) ./files/autopart.defaults $(1)/etc/uci-defaults/30-autopart ++endef ++ ++define Package/uvol/install ++ $(INSTALL_DIR) $(1)/etc/init.d $(1)/usr/libexec/uvol $(1)/usr/sbin $(1)/lib/functions $(1)/etc/uci-defaults ++ $(INSTALL_BIN) ./files/uvol.init $(1)/etc/init.d/uvol ++ $(INSTALL_BIN) ./files/common.sh $(1)/lib/functions/uvol.sh ++ $(INSTALL_BIN) ./files/ubi.sh $(1)/usr/libexec/uvol/20-ubi.sh ++ $(INSTALL_BIN) ./files/lvm.sh $(1)/usr/libexec/uvol/50-lvm.sh ++ $(INSTALL_BIN) ./files/uvol $(1)/usr/sbin ++ $(INSTALL_BIN) ./files/uvol.defaults $(1)/etc/uci-defaults/90-uvol-restore-uci ++endef ++ ++$(eval $(call BuildPackage,autopart)) ++$(eval $(call BuildPackage,uvol)) +diff --git a/package/system/uvol/files/autopart.defaults b/package/system/uvol/files/autopart.defaults +new file mode 100644 +index 0000000000..870cd44156 +--- /dev/null ++++ b/package/system/uvol/files/autopart.defaults +@@ -0,0 +1,127 @@ ++#!/bin/sh ++ ++. /lib/functions.sh ++. /lib/upgrade/common.sh ++. /usr/share/libubox/jshn.sh ++ ++OWRT_VOLUMES=owrt-volumes ++ ++load_partitions() { ++ local dev="$1" ++ json_init ++ json_load "$(sfdisk -J "$dev" 2>/dev/null)" ++ json_select "partitiontable" || return 1 ++ return 0 ++} ++ ++get_partition_by_name_gpt() { ++ local label part parts node name ++ json_get_vars label ++ [ "$label" = "gpt" ] || return ++ json_select "partitions" || return ++ json_get_keys parts ++ for part in $parts; do ++ json_select "$part" ++ json_get_vars node name ++ if [ "$1" = "$name" ]; then ++ echo "$node" ++ break ++ fi ++ json_select .. ++ done ++ json_select .. ++} ++ ++get_partition_by_type_mbr() { ++ local label part parts node type ++ json_get_vars label ++ [ "$label" = "dos" ] || return ++ json_select "partitions" || return ++ json_get_keys parts ++ for part in $parts; do ++ json_select "$part" ++ json_get_vars node type ++ if [ "$1" = "$type" ]; then ++ echo "$node" ++ break ++ fi ++ json_select .. ++ done ++ json_select .. ++} ++ ++part_fixup() { ++ echo "write" | sfdisk --force -q -w never "$1" 1>/dev/null 2>/dev/null ++} ++ ++get_free_area() { ++ local found= ++ sfdisk -q -F "$1" 2>/dev/null | while read -r start end sectors size; do ++ case $start in ++ *"Unpartitioned"* | *"Units:"* | *"Sector"* | *"Start"* ) ++ continue ++ ;; ++ [0-9]*) ++ case "$size" in ++ *"M") ++ [ "${size%%M}" -lt 100 ] && continue ++ ;; ++ *"G" | *"T") ++ ;; ++ *"k" | *"b") ++ continue ++ ;; ++ esac ++ [ "$found" ] || echo "start=$start, size=$((end - start))" ++ found=1 ++ ;; ++ esac ++ done ++} ++ ++create_lvm_part() { ++ local disk="$1" ++ local freepart ++ ++ freepart="$(get_free_area "$disk")" ++ if [ "$freepart" ]; then ++ echo "$freepart, type=lvm, name=$OWRT_VOLUMES" | sfdisk --force -w never -a "$disk" || return 1 ++ partx -a "$disk" 1>/dev/null 2>/dev/null || true ++ return 0 ++ else ++ return 1 ++ fi ++} ++ ++lvm_init() { ++ lvm pvcreate -f "$1" ++ lvm vgcreate "$2" "$1" ++ lvm vgs ++} ++ ++autopart_init() { ++ local diskdev ++ local lvmpart ++ local diskserial diskhash ++ ++ export_bootdevice && export_partdevice diskdev 0 ++ ++ [ "$diskdev" ] || return ++ ++ [ -e "/sys/class/block/$diskdev/device/serial" ] && diskserial="$(cat "/sys/class/block/$diskdev/device/serial")" ++ [ -e "/sys/class/block/$diskdev/device/cid" ] && diskserial="$diskserial$(cat "/sys/class/block/$diskdev/device/cid")" ++ [ "$diskserial" ] || diskserial="$(cat /proc/sys/kernel/random/uuid)" ++ diskhash="$(echo "$diskserial" | sha256sum | cut -d' ' -f1)" ++ ++ part_fixup "/dev/$diskdev" ++ create_lvm_part "/dev/$diskdev" || return ++ load_partitions "/dev/$diskdev" || return ++ lvmpart="$(get_partition_by_name_gpt "$OWRT_VOLUMES")" ++ [ "$lvmpart" ] || lvmpart="$(get_partition_by_type_mbr "8e")" ++ [ "$lvmpart" ] || return ++ ++ lvm_init "$lvmpart" "${OWRT_VOLUMES}-${diskhash:0:16}" ++} ++ ++autopart_init ++exit 0 +diff --git a/package/system/uvol/files/common.sh b/package/system/uvol/files/common.sh +new file mode 100644 +index 0000000000..e3b554e180 +--- /dev/null ++++ b/package/system/uvol/files/common.sh +@@ -0,0 +1,83 @@ ++#!/bin/sh ++ ++UCI_SPOOLDIR="/var/spool/uvol" ++ ++_uvol_init_spooldir() { ++ [ ! -d "$(dirname "$UCI_SPOOLDIR")" ] && mkdir -p "$(dirname "$UCI_SPOOLDIR")" ++ mkdir -m 0700 -p "$UCI_SPOOLDIR" ++} ++ ++uvol_uci_add() { ++ local volname="$1" ++ local devname="$2" ++ local mode="$3" ++ local autofs=0 ++ local target="/var/run/uvol/$volname" ++ local uuid uciname ++ ++ [ "$mode" = "ro" ] && autofs=1 ++ uciname="${volname//[-.]/_}" ++ uciname="${uciname//[!([:alnum:]_)]}" ++ uuid="$(/sbin/block info | grep "^$2" | xargs -n 1 echo | grep "^UUID=.*")" ++ [ "$uuid" ] || return 22 ++ uuid="${uuid:5}" ++ ++ case "$uciname" in ++ "_uxc") ++ target="/var/state/uxc" ++ ;; ++ "_"*) ++ return 1 ++ ;; ++ esac ++ ++ _uvol_init_spooldir ++ if [ -e "${UCI_SPOOLDIR}/remove-$1" ]; then ++ rm "${UCI_SPOOLDIR}/remove-$1" ++ fi ++ ++ cat >"${UCI_SPOOLDIR}/add-$1" <"${UCI_SPOOLDIR}/remove-$1" </dev/null || return 1 ++ ++. /lib/functions.sh ++. /lib/functions/uvol.sh ++. /lib/upgrade/common.sh ++. /usr/share/libubox/jshn.sh ++ ++export_bootdevice ++[ "$BOOTDEV_MAJOR" ] || return 1 ++export_partdevice rootdev 0 ++[ "$rootdev" ] || return 1 ++ ++case "$rootdev" in ++ mtd*|\ ++ ram*|\ ++ ubi*) ++ return 1 ++esac ++ ++lvm_cmd() { ++ local cmd="$1" ++ shift ++ LVM_SUPPRESS_FD_WARNINGS=1 lvm "$cmd" "$@" ++ return $? ++} ++ ++pvs() { ++ lvm_cmd pvs --reportformat json --units b "$@" ++} ++ ++vgs() { ++ lvm_cmd vgs --reportformat json --units b "$@" ++} ++ ++lvs() { ++ lvm_cmd lvs --reportformat json --units b "$@" ++} ++ ++freebytes() { ++ echo $((vg_free_count * vg_extent_size)) ++} ++ ++totalbytes() { ++ echo $((vg_extent_count * vg_extent_size)) ++} ++ ++existvol() { ++ [ "$1" ] || return 1 ++ test -e "/dev/$vg_name/ro_$1" || test -e "/dev/$vg_name/rw_$1" ++ return $? ++} ++ ++vg_name= ++exportpv() { ++ local reports rep pv pvs ++ vg_name= ++ json_init ++ json_load "$(pvs -o vg_name -S "pv_name=~^/dev/$rootdev.*\$")" ++ json_select report ++ json_get_keys reports ++ for rep in $reports; do ++ json_select "$rep" ++ json_select pv ++ json_get_keys pvs ++ for pv in $pvs; do ++ json_select "$pv" ++ json_get_vars vg_name ++ json_select .. ++ break ++ done ++ json_select .. ++ break ++ done ++} ++ ++vg_extent_size= ++vg_extent_count= ++vg_free_count= ++exportvg() { ++ local reports rep vg vgs ++ vg_extent_size= ++ vg_extent_count= ++ vg_free_count= ++ json_init ++ json_load "$(vgs -o vg_extent_size,vg_extent_count,vg_free_count -S "vg_name=$vg_name")" ++ json_select report ++ json_get_keys reports ++ for rep in $reports; do ++ json_select "$rep" ++ json_select vg ++ json_get_keys vgs ++ for vg in $vgs; do ++ json_select "$vg" ++ json_get_vars vg_extent_size vg_extent_count vg_free_count ++ vg_extent_size=${vg_extent_size%B} ++ json_select .. ++ break ++ done ++ json_select .. ++ break ++ done ++} ++ ++lv_active= ++lv_name= ++lv_full_name= ++lv_path= ++lv_dm_path= ++lv_size= ++exportlv() { ++ local reports rep lv lvs ++ lv_active= ++ lv_name= ++ lv_full_name= ++ lv_path= ++ lv_dm_path= ++ lv_size= ++ json_init ++ ++ json_load "$(lvs -o lv_active,lv_name,lv_full_name,lv_size,lv_path,lv_dm_path -S "lv_name=~^[rw][owp]_$1\$ && vg_name=$vg_name")" ++ json_select report ++ json_get_keys reports ++ for rep in $reports; do ++ json_select "$rep" ++ json_select lv ++ json_get_keys lvs ++ for lv in $lvs; do ++ json_select "$lv" ++ json_get_vars lv_active lv_name lv_full_name lv_size lv_path lv_dm_path ++ lv_size=${lv_size%B} ++ json_select .. ++ break ++ done ++ json_select .. ++ break ++ done ++} ++ ++getdev() { ++ local dms dm_name ++ ++ for dms in /sys/devices/virtual/block/dm-* ; do ++ [ "$dms" = "/sys/devices/virtual/block/dm-*" ] && break ++ read -r dm_name < "$dms/dm/name" ++ [ $(basename "$lv_dm_path") = "$dm_name" ] && echo "$(basename "$dms")" ++ done ++} ++ ++getuserdev() { ++ local dms dm_name ++ existvol "$1" || return 1 ++ exportlv "$1" ++ getdev "$@" ++} ++ ++getsize() { ++ exportlv "$1" ++ [ "$lv_size" ] && echo "$lv_size" ++} ++ ++activatevol() { ++ exportlv "$1" ++ [ "$lv_path" ] || return 2 ++ case "$lv_path" in ++ /dev/*/wo_*|\ ++ /dev/*/wp_*) ++ return 22 ++ ;; ++ *) ++ uvol_uci_commit "$1" ++ [ "$lv_active" = "active" ] && return 0 ++ lvm_cmd lvchange -k n "$lv_full_name" || return $? ++ lvm_cmd lvchange -a y "$lv_full_name" || return $? ++ return 0 ++ ;; ++ esac ++} ++ ++disactivatevol() { ++ exportlv "$1" ++ local devname ++ [ "$lv_path" ] || return 2 ++ case "$lv_path" in ++ /dev/*/wo_*|\ ++ /dev/*/wp_*) ++ return 22 ++ ;; ++ *) ++ [ "$lv_active" = "active" ] || return 0 ++ devname="$(getdev "$1")" ++ [ "$devname" ] && /sbin/block umount "$devname" ++ lvm_cmd lvchange -a n "$lv_full_name" ++ lvm_cmd lvchange -k y "$lv_full_name" || return $? ++ return 0 ++ ;; ++ esac ++} ++ ++getstatus() { ++ exportlv "$1" ++ [ "$lv_full_name" ] || return 2 ++ existvol "$1" || return 1 ++ return 0 ++} ++ ++createvol() { ++ local mode lvmode ret ++ local volsize=$(($2)) ++ [ "$volsize" ] || return 22 ++ exportlv "$1" ++ [ "$lv_size" ] && return 17 ++ size_ext=$((volsize / vg_extent_size)) ++ [ $((size_ext * vg_extent_size)) -lt $volsize ] && size_ext=$((size_ext + 1)) ++ ++ case "$3" in ++ ro|wo) ++ lvmode=r ++ mode=wo ++ ;; ++ rw) ++ lvmode=rw ++ mode=wp ++ ;; ++ *) ++ return 22 ++ ;; ++ esac ++ ++ lvm_cmd lvcreate -p "$lvmode" -a n -y -W n -Z n -n "${mode}_$1" -l "$size_ext" "$vg_name" || return $? ++ ret=$? ++ if [ ! $ret -eq 0 ] || [ "$lvmode" = "r" ]; then ++ return $ret ++ fi ++ exportlv "$1" ++ [ "$lv_full_name" ] || return 22 ++ lvm_cmd lvchange -a y "$lv_full_name" || return $? ++ if [ "$lv_size" -gt $(( 100 * 1024 * 1024 )) ]; then ++ mkfs.f2fs -f -l "$1" "$lv_path" ++ ret=$? ++ [ $ret != 0 ] && [ $ret != 134 ] && { ++ lvm_cmd lvchange -a n "$lv_full_name" || return $? ++ return $ret ++ } ++ else ++ mke2fs -F -L "$1" "$lv_path" || { ++ ret=$? ++ lvm_cmd lvchange -a n "$lv_full_name" || return $? ++ return $ret ++ } ++ fi ++ uvol_uci_add "$1" "/dev/$(getdev "$1")" "rw" ++ lvm_cmd lvchange -a n "$lv_full_name" || return $? ++ lvm_cmd lvrename "$vg_name" "wp_$1" "rw_$1" || return $? ++ return 0 ++} ++ ++removevol() { ++ exportlv "$1" ++ [ "$lv_full_name" ] || return 2 ++ [ "$lv_active" = "active" ] && return 16 ++ lvm_cmd lvremove -y "$lv_full_name" || return $? ++ uvol_uci_remove "$1" ++ uvol_uci_commit "$1" ++} ++ ++updatevol() { ++ exportlv "$1" ++ [ "$lv_full_name" ] || return 2 ++ [ "$lv_size" -ge "$2" ] || return 27 ++ case "$lv_path" in ++ /dev/*/wo_*) ++ lvm_cmd lvchange -p rw "$lv_full_name" || return $? ++ lvm_cmd lvchange -a y "$lv_full_name" || return $? ++ dd of="$lv_path" ++ uvol_uci_add "$1" "/dev/$(getdev "$1")" "ro" ++ lvm_cmd lvchange -a n "$lv_full_name" || return $? ++ lvm_cmd lvchange -p r "$lv_full_name" || return $? ++ lvm_cmd lvrename "$lv_full_name" "${lv_full_name%%/*}/ro_$1" || return $? ++ return 0 ++ ;; ++ default) ++ return 22 ++ ;; ++ esac ++} ++ ++listvols() { ++ local reports rep lv lvs lv_name lv_size lv_mode volname ++ volname=${1:-.*} ++ json_init ++ json_load "$(lvs -o lv_name,lv_size -S "lv_name=~^[rw][owp]_$volname\$ && vg_name=$vg_name")" ++ json_select report ++ json_get_keys reports ++ for rep in $reports; do ++ json_select "$rep" ++ json_select lv ++ json_get_keys lvs ++ for lv in $lvs; do ++ json_select "$lv" ++ json_get_vars lv_name lv_size ++ lv_mode="${lv_name:0:2}" ++ lv_name="${lv_name:3}" ++ lv_size=${lv_size%B} ++ echo "$lv_name $lv_mode $lv_size" ++ json_select .. ++ done ++ json_select .. ++ break ++ done ++} ++ ++ ++detect() { ++ local reports rep lv lvs lv_name lv_full_name lv_mode volname devname lv_skip_activation ++ local temp_up="" ++ ++ json_init ++ json_load "$(lvs -o lv_full_name -S "lv_name=~^[rw][owp]_.*\$ && vg_name=$vg_name && lv_skip_activation!=0")" ++ json_select report ++ json_get_keys reports ++ for rep in $reports; do ++ json_select "$rep" ++ json_select lv ++ json_get_keys lvs ++ for lv in $lvs; do ++ json_select "$lv" ++ json_get_vars lv_full_name ++ echo "lvchange -a y $lv_full_name" ++ lvm_cmd lvchange -k n "$lv_full_name" ++ lvm_cmd lvchange -a y "$lv_full_name" ++ temp_up="$temp_up $lv_full_name" ++ json_select .. ++ done ++ json_select .. ++ break ++ done ++ sleep 1 ++ ++ uvol_uci_init ++ ++ json_init ++ json_load "$(lvs -o lv_name,lv_dm_path -S "lv_name=~^[rw][owp]_.*\$ && vg_name=$vg_name")" ++ json_select report ++ json_get_keys reports ++ for rep in $reports; do ++ json_select "$rep" ++ json_select lv ++ json_get_keys lvs ++ for lv in $lvs; do ++ json_select "$lv" ++ json_get_vars lv_name lv_dm_path ++ lv_mode="${lv_name:0:2}" ++ lv_name="${lv_name:3}" ++ echo uvol_uci_add "$lv_name" "/dev/$(getdev "$lv_name")" "$lv_mode" ++ uvol_uci_add "$lv_name" "/dev/$(getdev "$lv_name")" "$lv_mode" ++ json_select .. ++ done ++ json_select .. ++ break ++ done ++ ++ uvol_uci_commit ++ ++ for lv_full_name in $temp_up; do ++ echo "lvchange -a n $lv_full_name" ++ lvm_cmd lvchange -a n "$lv_full_name" ++ lvm_cmd lvchange -k y "$lv_full_name" ++ done ++} ++ ++boot() { ++ true ; # nothing to do, lvm does it all for us ++} ++ ++exportpv ++exportvg ++ ++case "$cmd" in ++ align) ++ echo "$vg_extent_size" ++ ;; ++ free) ++ freebytes ++ ;; ++ total) ++ totalbytes ++ ;; ++ detect) ++ detect ++ ;; ++ boot) ++ boot ++ ;; ++ list) ++ listvols "$@" ++ ;; ++ create) ++ createvol "$@" ++ ;; ++ remove) ++ removevol "$@" ++ ;; ++ device) ++ getuserdev "$@" ++ ;; ++ size) ++ getsize "$@" ++ ;; ++ up) ++ activatevol "$@" ++ ;; ++ down) ++ disactivatevol "$@" ++ ;; ++ status) ++ getstatus "$@" ++ ;; ++ write) ++ updatevol "$@" ++ ;; ++ *) ++ echo "unknown command" ++ return 1 ++ ;; ++esac +diff --git a/package/system/uvol/files/ubi.sh b/package/system/uvol/files/ubi.sh +new file mode 100644 +index 0000000000..b0b363d7ed +--- /dev/null ++++ b/package/system/uvol/files/ubi.sh +@@ -0,0 +1,337 @@ ++#!/bin/sh ++ ++cmd="$1" ++shift ++ ++if [ "$cmd" = "name" ]; then ++ echo "UBI" ++ return 0 ++fi ++ ++test -e /sys/class/ubi/version || return 0 ++read -r ubiver < /sys/class/ubi/version ++[ "$ubiver" = "1" ] || return 1 ++test -e /sys/devices/virtual/ubi || return 0 ++ ++ubidev=$(ls -1 /sys/devices/virtual/ubi | head -n 1) ++ ++read -r ebsize < "/sys/devices/virtual/ubi/${ubidev}/eraseblock_size" ++ ++. /lib/functions/uvol.sh ++ ++freebytes() { ++ read -r availeb < "/sys/devices/virtual/ubi/${ubidev}/avail_eraseblocks" ++ echo $((availeb * ebsize)) ++} ++ ++totalbytes() { ++ read -r totaleb < "/sys/devices/virtual/ubi/${ubidev}/total_eraseblocks" ++ echo $((totaleb * ebsize)) ++} ++ ++getdev() { ++ local voldir volname ++ for voldir in "/sys/devices/virtual/ubi/${ubidev}/${ubidev}_"*; do ++ read -r volname < "${voldir}/name" ++ case "$volname" in ++ uvol-[rw][owpd]-$1) ++ basename "$voldir" ++ break ++ ;; ++ *) ++ continue ++ ;; ++ esac ++ done ++} ++ ++vol_is_mode() { ++ local voldev="$1" ++ local volname ++ read -r volname < "/sys/devices/virtual/ubi/${ubidev}/${voldev}/name" ++ case "$volname" in ++ uvol-$2-*) ++ return 0 ++ ;; ++ esac ++ return 1 ++} ++ ++getstatus() { ++ local voldev ++ voldev="$(getdev "$@")" ++ [ "$voldev" ] || return 2 ++ vol_is_mode "$voldev" wo && return 22 ++ vol_is_mode "$voldev" wp && return 16 ++ vol_is_mode "$voldev" wd && return 1 ++ vol_is_mode "$voldev" ro && [ ! -e "/dev/ubiblock${voldev:3}" ] && return 1 ++ return 0 ++} ++ ++getsize() { ++ local voldev ++ voldev="$(getdev "$@")" ++ [ "$voldev" ] || return 2 ++ cat "/sys/devices/virtual/ubi/${ubidev}/${voldev}/data_bytes" ++} ++ ++getuserdev() { ++ local voldev ++ voldev="$(getdev "$@")" ++ [ "$voldev" ] || return 2 ++ if vol_is_mode "$voldev" ro ; then ++ echo "/dev/ubiblock${voldev:3}" ++ elif vol_is_mode "$voldev" rw ; then ++ echo "/dev/$voldev" ++ fi ++} ++ ++mkubifs() { ++ local tmp_mp ++ tmp_mp="$(mktemp -d)" ++ mount -t ubifs "$1" "$tmp_mp" || return $? ++ umount "$tmp_mp" || return $? ++ rmdir "$tmp_mp" || return $? ++ return 0 ++} ++ ++createvol() { ++ local mode ret voldev ++ voldev=$(getdev "$@") ++ [ "$voldev" ] && return 17 ++ case "$3" in ++ ro|wo) ++ mode=wo ++ ;; ++ rw) ++ mode=wp ++ ;; ++ *) ++ return 22 ++ ;; ++ esac ++ ubimkvol "/dev/$ubidev" -N "uvol-$mode-$1" -s "$2" || return $? ++ ret=$? ++ [ $ret -eq 0 ] || return $ret ++ voldev="$(getdev "$@")" ++ ubiupdatevol -t "/dev/$voldev" || return $? ++ [ "$mode" = "wp" ] || return 0 ++ mkubifs "/dev/$voldev" || return $? ++ uvol_uci_add "$1" "/dev/$voldev" "rw" ++ ubirename "/dev/$ubidev" "uvol-wp-$1" "uvol-wd-$1" || return $? ++} ++ ++removevol() { ++ local voldev volnum ++ voldev=$(getdev "$@") ++ [ "$voldev" ] || return 2 ++ vol_is_mode "$voldev" rw && return 16 ++ vol_is_mode "$voldev" ro && return 16 ++ volnum="${voldev#${ubidev}_}" ++ ubirmvol "/dev/$ubidev" -n "$volnum" || return $? ++ uvol_uci_remove "$1" ++ uvol_uci_commit "$1" ++} ++ ++block_hotplug() { ++ export ACTION="$1" ++ export DEVNAME="$2" ++ /sbin/block hotplug ++} ++ ++activatevol() { ++ local voldev ++ voldev="$(getdev "$@")" ++ [ "$voldev" ] || return 2 ++ vol_is_mode "$voldev" rw && return 0 ++ vol_is_mode "$voldev" ro && return 0 ++ vol_is_mode "$voldev" wo && return 22 ++ vol_is_mode "$voldev" wp && return 16 ++ uvol_uci_commit "$1" ++ if vol_is_mode "$voldev" rd; then ++ ubirename "/dev/$ubidev" "uvol-rd-$1" "uvol-ro-$1" || return $? ++ ubiblock --create "/dev/$voldev" || return $? ++ return 0 ++ elif vol_is_mode "$voldev" wd; then ++ ubirename "/dev/$ubidev" "uvol-wd-$1" "uvol-rw-$1" || return $? ++ block_hotplug add "$voldev" ++ return 0 ++ fi ++} ++ ++disactivatevol() { ++ local voldev ++ voldev="$(getdev "$@")" ++ [ "$voldev" ] || return 2 ++ vol_is_mode "$voldev" rd && return 0 ++ vol_is_mode "$voldev" wd && return 0 ++ vol_is_mode "$voldev" wo && return 22 ++ vol_is_mode "$voldev" wp && return 16 ++ if vol_is_mode "$voldev" ro; then ++ /sbin/block umount "ubiblock${voldev:3}" ++ ubiblock --remove "/dev/$voldev" ++ ubirename "/dev/$ubidev" "uvol-ro-$1" "uvol-rd-$1" || return $? ++ return 0 ++ elif vol_is_mode "$voldev" rw; then ++ /sbin/block umount "$voldev" ++ ubirename "/dev/$ubidev" "uvol-rw-$1" "uvol-wd-$1" || return $? ++ block_hotplug remove "$voldev" ++ return 0 ++ fi ++} ++ ++updatevol() { ++ local voldev ++ voldev="$(getdev "$@")" ++ [ "$voldev" ] || return 2 ++ [ "$2" ] || return 22 ++ vol_is_mode "$voldev" wo || return 22 ++ ubiupdatevol -s "$2" "/dev/$voldev" - ++ ubiblock --create "/dev/$voldev" ++ uvol_uci_add "$1" "/dev/ubiblock${voldev:3}" "ro" ++ ubiblock --remove "/dev/$voldev" ++ ubirename "/dev/$ubidev" "uvol-wo-$1" "uvol-rd-$1" ++} ++ ++listvols() { ++ local volname volmode volsize ++ for voldir in "/sys/devices/virtual/ubi/${ubidev}/${ubidev}_"*; do ++ read -r volname < "$voldir/name" ++ case "$volname" in ++ uvol-[rw][wod]*) ++ read -r volsize < "$voldir/data_bytes" ++ ;; ++ *) ++ continue ++ ;; ++ esac ++ volmode="${volname:5:2}" ++ volname="${volname:8}" ++ echo "$volname $volmode $volsize" ++ done ++} ++ ++bootvols() { ++ local volname volmode volsize voldev fstype ++ for voldir in "/sys/devices/virtual/ubi/${ubidev}/${ubidev}_"*; do ++ read -r volname < "$voldir/name" ++ voldev="$(basename "$voldir")" ++ fstype= ++ case "$volname" in ++ uvol-ro-*) ++ ubiblock --create "/dev/$voldev" || return $? ++ ;; ++ *) ++ continue ++ ;; ++ esac ++ volmode="${volname:5:2}" ++ volname="${volname:8}" ++ done ++} ++ ++detect() { ++ local volname voldev volmode voldev fstype tmpdev="" ++ for voldir in "/sys/devices/virtual/ubi/${ubidev}/${ubidev}_"*; do ++ read -r volname < "$voldir/name" ++ voldev="$(basename "$voldir")" ++ fstype= ++ case "$volname" in ++ uvol-r[od]-*) ++ if ! [ -e "/dev/ubiblock${voldev:3}" ]; then ++ ubiblock --create "/dev/$voldev" || return $? ++ fi ++ case "$volname" in ++ uvol-rd-*) ++ tmpdev="$tmpdev $voldev" ++ ;; ++ esac ++ ;; ++ *) ++ continue ++ ;; ++ esac ++ volmode="${volname:5:2}" ++ volname="${volname:8}" ++ done ++ ++ uvol_uci_init ++ ++ for voldir in "/sys/devices/virtual/ubi/${ubidev}/${ubidev}_"*; do ++ read -r volname < "$voldir/name" ++ voldev="$(basename "$voldir")" ++ case "$volname" in ++ uvol-[rw][wod]*) ++ true ++ ;; ++ *) ++ continue ++ ;; ++ esac ++ volmode="${volname:5:2}" ++ volname="${volname:8}" ++ case "$volmode" in ++ "ro" | "rd") ++ uvol_uci_add "$volname" "/dev/ubiblock${voldev:3}" "ro" ++ ;; ++ "rw" | "wd") ++ uvol_uci_add "$volname" "/dev/${voldev}" "rw" ++ ;; ++ esac ++ done ++ ++ uvol_uci_commit ++ ++ for voldev in $tmpdev ; do ++ ubiblock --remove "/dev/$voldev" || return $? ++ done ++} ++ ++case "$cmd" in ++ align) ++ echo "$ebsize" ++ ;; ++ free) ++ freebytes ++ ;; ++ total) ++ totalbytes ++ ;; ++ detect) ++ detect ++ ;; ++ boot) ++ bootvols ++ ;; ++ list) ++ listvols "$@" ++ ;; ++ create) ++ createvol "$@" ++ ;; ++ remove) ++ removevol "$@" ++ ;; ++ device) ++ getuserdev "$@" ++ ;; ++ size) ++ getsize "$@" ++ ;; ++ up) ++ activatevol "$@" ++ ;; ++ down) ++ disactivatevol "$@" ++ ;; ++ status) ++ getstatus "$@" ++ ;; ++ write) ++ updatevol "$@" ++ ;; ++ *) ++ echo "unknown command" ++ return 1 ++ ;; ++esac +diff --git a/package/system/uvol/files/uvol b/package/system/uvol/files/uvol +new file mode 100644 +index 0000000000..4ecd2e165a +--- /dev/null ++++ b/package/system/uvol/files/uvol +@@ -0,0 +1,52 @@ ++#!/bin/sh ++ ++# uvol prototype ++# future development roadmap (aka. to-do): ++# * re-implement in C (use libubox, execve lvm/ubi*) ++# * hash to validate volume while writing ++# * add atomic batch processing for use by container/package manager ++ ++if [ -z "$1" ]; then cat </dev/null || uvol detect || true +diff --git a/package/system/uvol/files/uvol.init b/package/system/uvol/files/uvol.init +new file mode 100644 +index 0000000000..1f6e2aac08 +--- /dev/null ++++ b/package/system/uvol/files/uvol.init +@@ -0,0 +1,23 @@ ++#!/bin/sh /etc/rc.common ++ ++START=99 ++USE_PROCD=1 ++NAME=uvol ++PROG=/usr/sbin/uvol ++ ++start_service() { ++ [ "${__BOOT_UVOL}" = "1" ] && return 0 ++ procd_open_instance "$NAME" ++ procd_set_param command "$PROG" boot ++ procd_close_instance ++} ++ ++boot() { ++ __BOOT_UVOL=1 ++ start ++} ++ ++service_triggers() { ++ procd_add_raw_trigger "mount.ready" 200 /etc/init.d/uvol start ++} ++ +-- +2.25.1 + diff --git a/backports/0105-apk-backport-package.patch b/backports/0105-apk-backport-package.patch new file mode 100644 index 000000000..9f7099014 --- /dev/null +++ b/backports/0105-apk-backport-package.patch @@ -0,0 +1,312 @@ +From 6741963067c4be8999896a5e653dc0d72487e392 Mon Sep 17 00:00:00 2001 +From: John Crispin +Date: Fri, 13 Aug 2021 08:47:11 +0200 +Subject: [PATCH 06/46] apk: backport package + +Signed-off-by: John Crispin +--- + package/system/apk/Makefile | 93 +++++++++++++++++++ + ...vel@lists.alpinelinux.org-4a6a0840.rsa.pub | 9 ++ + ...vel@lists.alpinelinux.org-5243ef4b.rsa.pub | 9 ++ + ...vel@lists.alpinelinux.org-5261cecb.rsa.pub | 9 ++ + package/system/apk/files/alpine-repositories | 3 + + .../apk/patches/000-Makefile-version.patch | 11 +++ + .../patches/0001-remove-doc-generation.patch | 21 +++++ + package/system/apk/patches/100-link.patch | 16 ++++ + package/system/apk/patches/100-phtread.patch | 12 +++ + ...ude-limits.h-to-fix-build-with-glibc.patch | 20 ++++ + package/system/apk/test.sh | 9 ++ + 11 files changed, 212 insertions(+) + create mode 100644 package/system/apk/Makefile + create mode 100644 package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub + create mode 100644 package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub + create mode 100644 package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub + create mode 100644 package/system/apk/files/alpine-repositories + create mode 100644 package/system/apk/patches/000-Makefile-version.patch + create mode 100644 package/system/apk/patches/0001-remove-doc-generation.patch + create mode 100644 package/system/apk/patches/100-link.patch + create mode 100644 package/system/apk/patches/100-phtread.patch + create mode 100644 package/system/apk/patches/100-tar-include-limits.h-to-fix-build-with-glibc.patch + create mode 100644 package/system/apk/test.sh + +diff --git a/package/system/apk/Makefile b/package/system/apk/Makefile +new file mode 100644 +index 0000000000..335f50c155 +--- /dev/null ++++ b/package/system/apk/Makefile +@@ -0,0 +1,93 @@ ++include $(TOPDIR)/rules.mk ++ ++PKG_NAME:=apk ++PKG_VERSION:=3.0.0_pre0 ++ ++PKG_SOURCE_PROTO:=git ++PKG_SOURCE_URL:=https://git.alpinelinux.org/apk-tools.git ++PKG_SOURCE_DATE:=2021-08-17 ++PKG_SOURCE_VERSION:=a46043bcc4cc15b456ef1eac5c5f9d93bd905d53 ++PKG_MIRROR_HASH:=e16fd04b18043e78a177acd8c6958fa03fd1484b62c879c2dd0bed8ce9c50625 ++PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_SOURCE_DATE)-$(call version_abbrev,$(PKG_SOURCE_VERSION)) ++PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_SOURCE_SUBDIR) ++HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/$(PKG_SOURCE_SUBDIR) ++PKG_SOURCE:=$(PKG_SOURCE_SUBDIR).tar.xz ++PKG_RELEASE:=r$(PKG_SOURCE_DATE)-$(call version_abbrev,$(PKG_SOURCE_VERSION))-$(AUTORELEASE) ++ ++PKG_MAINTAINER:=Paul Spooren ++PKG_LICENSE:=GPL-2.0-only ++PKG_LICENSE_FILES:=LICENSE ++ ++PKG_INSTALL:=1 ++PKG_BUILD_PARALLEL:=1 ++ ++HOST_BUILD_DEPENDS:=lua/host lua-lzlib/host ++PKG_BUILD_DEPENDS:=$(HOST_BUILD_DEPENDS) ++ ++include $(INCLUDE_DIR)/package.mk ++include $(INCLUDE_DIR)/host-build.mk ++ ++define Package/apk ++ SECTION:=utils ++ CATEGORY:=Utilities ++ TITLE:=apk package manager ++ DEPENDS:=+liblua +libopenssl +zlib @!arc ++ URL:=$(PKG_SOURCE_URL) ++endef ++ ++define Package/alpine-keys ++ SECTION:=utils ++ CATEGORY:=Utilities ++ TITLE:=Alpine apk public signing keys ++ DEPENDS:=apk ++endef ++ ++define Package/alpine-repositories ++ SECTION:=utils ++ CATEGORY:=Utilities ++ TITLE:=Official Alpine repositories ++ DEPENDS:=apk ++endef ++ ++MAKE_FLAGS += \ ++ LUA=$(STAGING_DIR_HOSTPKG)/bin/lua \ ++ LUA_VERSION=5.1 \ ++ LUA_PC=lua ++ ++HOST_MAKE_FLAGS += \ ++ LUA=$(STAGING_DIR_HOSTPKG)/bin/lua \ ++ LUA_VERSION=5.1 \ ++ DESTDIR=$(STAGING_DIR_HOSTPKG) \ ++ SBINDIR=/bin \ ++ PREFIX= ++ ++HOST_LDFLAGS+=-Wl,-rpath=$(STAGING_DIR_HOSTPKG)/lib -lpthread ++ ++define Package/apk/install ++ $(INSTALL_DIR) $(1)/lib/apk/db ++ ++ $(INSTALL_DIR) $(1)/bin ++ $(INSTALL_BIN) $(PKG_INSTALL_DIR)/sbin/apk $(1)/bin/apk ++ ++ $(INSTALL_DIR) $(1)/usr/lib ++ $(CP) $(PKG_INSTALL_DIR)/lib/*.so.* $(1)/usr/lib/ ++ ++ $(INSTALL_DIR) $(1)/etc/apk/ ++ echo $(ARCH) > $(1)/etc/apk/arch ++ touch $(1)/etc/apk/world ++endef ++ ++define Package/alpine-keys/install ++ $(INSTALL_DIR) $(1)/etc/apk/keys ++ $(INSTALL_DATA) ./files/alpine-keys/* $(1)/etc/apk/keys ++endef ++ ++define Package/alpine-repositories/install ++ $(INSTALL_DIR) $(1)/etc/apk/keys ++ $(INSTALL_DATA) ./files/alpine-repositories $(1)/etc/apk/repositories ++endef ++ ++$(eval $(call BuildPackage,apk)) ++$(eval $(call BuildPackage,alpine-keys)) ++$(eval $(call BuildPackage,alpine-repositories)) ++$(eval $(call HostBuild)) +diff --git a/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub b/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub +new file mode 100644 +index 0000000000..bb4bdc80fd +--- /dev/null ++++ b/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-4a6a0840.rsa.pub +@@ -0,0 +1,9 @@ ++-----BEGIN PUBLIC KEY----- ++MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1yHJxQgsHQREclQu4Ohe ++qxTxd1tHcNnvnQTu/UrTky8wWvgXT+jpveroeWWnzmsYlDI93eLI2ORakxb3gA2O ++Q0Ry4ws8vhaxLQGC74uQR5+/yYrLuTKydFzuPaS1dK19qJPXB8GMdmFOijnXX4SA ++jixuHLe1WW7kZVtjL7nufvpXkWBGjsfrvskdNA/5MfxAeBbqPgaq0QMEfxMAn6/R ++L5kNepi/Vr4S39Xvf2DzWkTLEK8pcnjNkt9/aafhWqFVW7m3HCAII6h/qlQNQKSo ++GuH34Q8GsFG30izUENV9avY7hSLq7nggsvknlNBZtFUcmGoQrtx3FmyYsIC8/R+B ++ywIDAQAB ++-----END PUBLIC KEY----- +diff --git a/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub b/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub +new file mode 100644 +index 0000000000..6cbfad7441 +--- /dev/null ++++ b/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5243ef4b.rsa.pub +@@ -0,0 +1,9 @@ ++-----BEGIN PUBLIC KEY----- ++MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvNijDxJ8kloskKQpJdx+ ++mTMVFFUGDoDCbulnhZMJoKNkSuZOzBoFC94omYPtxnIcBdWBGnrm6ncbKRlR+6oy ++DO0W7c44uHKCFGFqBhDasdI4RCYP+fcIX/lyMh6MLbOxqS22TwSLhCVjTyJeeH7K ++aA7vqk+QSsF4TGbYzQDDpg7+6aAcNzg6InNePaywA6hbT0JXbxnDWsB+2/LLSF2G ++mnhJlJrWB1WGjkz23ONIWk85W4S0XB/ewDefd4Ly/zyIciastA7Zqnh7p3Ody6Q0 ++sS2MJzo7p3os1smGjUF158s6m/JbVh4DN6YIsxwl2OjDOz9R0OycfJSDaBVIGZzg ++cQIDAQAB ++-----END PUBLIC KEY----- +diff --git a/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub b/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub +new file mode 100644 +index 0000000000..83f0658e9c +--- /dev/null ++++ b/package/system/apk/files/alpine-keys/alpine-devel@lists.alpinelinux.org-5261cecb.rsa.pub +@@ -0,0 +1,9 @@ ++-----BEGIN PUBLIC KEY----- ++MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwlzMkl7b5PBdfMzGdCT0 ++cGloRr5xGgVmsdq5EtJvFkFAiN8Ac9MCFy/vAFmS8/7ZaGOXoCDWbYVLTLOO2qtX ++yHRl+7fJVh2N6qrDDFPmdgCi8NaE+3rITWXGrrQ1spJ0B6HIzTDNEjRKnD4xyg4j ++g01FMcJTU6E+V2JBY45CKN9dWr1JDM/nei/Pf0byBJlMp/mSSfjodykmz4Oe13xB ++Ca1WTwgFykKYthoLGYrmo+LKIGpMoeEbY1kuUe04UiDe47l6Oggwnl+8XD1MeRWY ++sWgj8sF4dTcSfCMavK4zHRFFQbGp/YFJ/Ww6U9lA3Vq0wyEI6MCMQnoSMFwrbgZw ++wwIDAQAB ++-----END PUBLIC KEY----- +diff --git a/package/system/apk/files/alpine-repositories b/package/system/apk/files/alpine-repositories +new file mode 100644 +index 0000000000..5babbb23b4 +--- /dev/null ++++ b/package/system/apk/files/alpine-repositories +@@ -0,0 +1,3 @@ ++https://dl-cdn.alpinelinux.org/alpine/edge/main ++https://dl-cdn.alpinelinux.org/alpine/edge/community ++ +diff --git a/package/system/apk/patches/000-Makefile-version.patch b/package/system/apk/patches/000-Makefile-version.patch +new file mode 100644 +index 0000000000..2e7f5b0f15 +--- /dev/null ++++ b/package/system/apk/patches/000-Makefile-version.patch +@@ -0,0 +1,11 @@ ++--- a/Makefile +++++ b/Makefile ++@@ -4,7 +4,7 @@ ++ -include config.mk ++ ++ PACKAGE := apk-tools ++-VERSION := 2.12.0 +++VERSION := 3.0.0_pre0 ++ ++ export VERSION ++ +diff --git a/package/system/apk/patches/0001-remove-doc-generation.patch b/package/system/apk/patches/0001-remove-doc-generation.patch +new file mode 100644 +index 0000000000..dee05c56f2 +--- /dev/null ++++ b/package/system/apk/patches/0001-remove-doc-generation.patch +@@ -0,0 +1,21 @@ ++From b05a93c48fdbb50f0c464310dc2ce45777d32ea2 Mon Sep 17 00:00:00 2001 ++From: Paul Spooren ++Date: Fri, 2 Oct 2020 14:08:52 -1000 ++Subject: [PATCH] remove doc generation ++ ++Signed-off-by: Paul Spooren ++--- ++ Makefile | 2 +- ++ 1 file changed, 1 insertion(+), 1 deletion(-) ++ ++--- a/Makefile +++++ b/Makefile ++@@ -25,7 +25,7 @@ export DESTDIR SBINDIR LIBDIR CONFDIR MA ++ ## ++ # Top-level subdirs ++ ++-subdirs := libfetch/ src/ doc/ +++subdirs := libfetch/ src/ ++ ++ ## ++ # Include all rules and stuff +diff --git a/package/system/apk/patches/100-link.patch b/package/system/apk/patches/100-link.patch +new file mode 100644 +index 0000000000..9cae2787d9 +--- /dev/null ++++ b/package/system/apk/patches/100-link.patch +@@ -0,0 +1,16 @@ ++diff -urN apk-2021-08-17-a46043bc.orig/src/Makefile apk-2021-08-17-a46043bc/src/Makefile ++--- apk-2021-08-17-a46043bc.orig/src/Makefile 2021-08-17 14:21:04.117760513 +0200 +++++ apk-2021-08-17-a46043bc/src/Makefile 2021-08-17 14:21:16.653830180 +0200 ++@@ -65,7 +65,11 @@ ++ app_convdb.o app_convndx.o app_del.o app_dot.o app_extract.o app_fetch.o \ ++ app_fix.o app_index.o app_info.o app_list.o app_manifest.o app_mkndx.o \ ++ app_mkpkg.o app_policy.o app_update.o app_upgrade.o app_search.o \ ++- app_stats.o app_verify.o app_version.o app_vertest.o applet.o +++ app_stats.o app_verify.o app_version.o app_vertest.o applet.o \ +++ adb.o adb_comp.o adb_walk_adb.o adb_walk_genadb.o adb_walk_gentext.o adb_walk_text.o apk_adb.o \ +++ atom.o blob.o commit.o common.o context.o crypto_openssl.o database.o hash.o \ +++ extract.o extract_v2.o extract_v3.o io.o io_gunzip.o io_url.o tar.o \ +++ package.o pathbuilder.o print.o solver.o trust.o version.o ++ ++ ifeq ($(ADB),y) ++ libapk.so.$(libapk_soname)-objs += apk_adb.o +diff --git a/package/system/apk/patches/100-phtread.patch b/package/system/apk/patches/100-phtread.patch +new file mode 100644 +index 0000000000..c252e14dc1 +--- /dev/null ++++ b/package/system/apk/patches/100-phtread.patch +@@ -0,0 +1,12 @@ ++diff -urN apk-2021-07-23-3d203e8f.orig/src/Makefile apk-2021-07-23-3d203e8f/src/Makefile ++--- apk-2021-07-23-3d203e8f.orig/src/Makefile 2021-07-25 12:55:05.576564663 +0200 +++++ apk-2021-07-23-3d203e8f/src/Makefile 2021-07-25 12:55:48.660862181 +0200 ++@@ -87,7 +87,7 @@ ++ apk.static-libs := $(apk-static-libs) ++ LDFLAGS_apk.static := -static ++ LIBS_apk.static := -Wl,--as-needed -ldl -Wl,--no-as-needed ++-LDFLAGS_apk += -L$(obj) +++LDFLAGS_apk += -L$(obj) -pthread ++ LDFLAGS_apk-test += -L$(obj) ++ ++ CFLAGS_ALL += $(OPENSSL_CFLAGS) $(ZLIB_CFLAGS) +diff --git a/package/system/apk/patches/100-tar-include-limits.h-to-fix-build-with-glibc.patch b/package/system/apk/patches/100-tar-include-limits.h-to-fix-build-with-glibc.patch +new file mode 100644 +index 0000000000..43ec7d5f1a +--- /dev/null ++++ b/package/system/apk/patches/100-tar-include-limits.h-to-fix-build-with-glibc.patch +@@ -0,0 +1,20 @@ ++From c72ea983e287ec1d8b1f2b3aab1bf40aa7a30b03 Mon Sep 17 00:00:00 2001 ++From: Daniel Golle ++Date: Wed, 4 Aug 2021 21:37:40 +0100 ++Subject: [PATCH] tar: include to fix build with glibc ++ ++Signed-off-by: Daniel Golle ++--- ++ src/tar.c | 1 + ++ 1 file changed, 1 insertion(+) ++ ++--- a/src/tar.c +++++ b/src/tar.c ++@@ -9,6 +9,7 @@ ++ ++ #include ++ #include +++#include /* for SSIZE_MAX with glibc */ ++ ++ #include "apk_defines.h" ++ #include "apk_tar.h" +diff --git a/package/system/apk/test.sh b/package/system/apk/test.sh +new file mode 100644 +index 0000000000..814777fd70 +--- /dev/null ++++ b/package/system/apk/test.sh +@@ -0,0 +1,9 @@ ++#!/bin/sh ++ ++case "$1" in ++ "apk") ++ apk --version | grep "${2/-r*/}" ++ ;; ++ *) ++ return 0; ++esac +-- +2.25.1 + diff --git a/backports/0106-lua-lzlib-backport-package.patch b/backports/0106-lua-lzlib-backport-package.patch new file mode 100644 index 000000000..1a9f46257 --- /dev/null +++ b/backports/0106-lua-lzlib-backport-package.patch @@ -0,0 +1,104 @@ +From 900d18f3ae2cd5bb3d8d6e2584d2280cb5302e01 Mon Sep 17 00:00:00 2001 +From: John Crispin +Date: Fri, 13 Aug 2021 08:48:02 +0200 +Subject: [PATCH 106/146] lua-lzlib: backport package + +Signed-off-by: John Crispin +--- + package/libs/lua-lzlib/Makefile | 64 +++++++++++++++++++ + .../patches/001-allow_optim_flags.patch | 12 ++++ + 2 files changed, 76 insertions(+) + create mode 100644 package/libs/lua-lzlib/Makefile + create mode 100644 package/libs/lua-lzlib/patches/001-allow_optim_flags.patch + +diff --git a/package/libs/lua-lzlib/Makefile b/package/libs/lua-lzlib/Makefile +new file mode 100644 +index 0000000000..5e0a16b135 +--- /dev/null ++++ b/package/libs/lua-lzlib/Makefile +@@ -0,0 +1,64 @@ ++# ++# Copyright (C) 2015 OpenWrt.org ++# ++# This is free software, licensed under the GNU General Public License v2. ++# See /LICENSE for more information. ++# ++ ++include $(TOPDIR)/rules.mk ++ ++PKG_NAME:=lua-lzlib ++PKG_VERSION:=0.4.3 ++PKG_RELEASE:=1 ++PKG_MAINTAINER:=Dirk Chang ++PKG_LICENSE:=MIT ++ ++PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz ++PKG_MIRROR_HASH:=b6ef5e3f04b7f2137b39931a175ee802489a2486e70537770919bcccca10e723 ++PKG_SOURCE_URL:=https://github.com/LuaDist/lzlib.git ++PKG_SOURCE_PROTO:=git ++PKG_SOURCE_VERSION:=79329a07d8f79c19eadd7ea2752b4c4e1574b015 ++PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) ++ ++HOST_BUILD_DEPENDS:=lua/host ++ ++include $(INCLUDE_DIR)/package.mk ++include $(INCLUDE_DIR)/host-build.mk ++ ++define Package/lua-lzlib ++ SUBMENU:=Lua ++ SECTION:=lang ++ CATEGORY:=Languages ++ TITLE:=Lua zlib binding ++ URL:=http://github.com/LuaDist/lzlib ++ DEPENDS:= +lua +zlib ++endef ++ ++define Package/lua-lzlib/description ++ A library to access zlib library functions and also to read/write gzip files using an interface similar to the base io package. ++endef ++ ++MAKE_FLAGS += \ ++ LUA="$(STAGING_DIR)/usr" \ ++ OFLAGS="$(TARGET_CFLAGS)" \ ++ ++HOST_MAKE_FLAGS += \ ++ LUA="$(STAGING_DIR_HOSTPKG)" \ ++ OFLAGS="$(HOST_CFLAGS)" \ ++ ++define Package/lua-lzlib/install ++ $(INSTALL_DIR) $(1)/usr/lib/lua ++ $(INSTALL_BIN) $(PKG_BUILD_DIR)/zlib.so $(1)/usr/lib/lua/ ++ ++ $(INSTALL_DATA) $(PKG_BUILD_DIR)/gzip.lua $(1)/usr/lib/lua/ ++endef ++ ++define Host/Install ++ $(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/lib/lua/5.1 ++ $(INSTALL_BIN) $(HOST_BUILD_DIR)/zlib.so $(STAGING_DIR_HOSTPKG)/lib/lua/5.1 ++ ++ $(INSTALL_DATA) $(HOST_BUILD_DIR)/gzip.lua $(STAGING_DIR_HOSTPKG)/lib/lua/5.1 ++endef ++ ++$(eval $(call BuildPackage,lua-lzlib)) ++$(eval $(call HostBuild)) +diff --git a/package/libs/lua-lzlib/patches/001-allow_optim_flags.patch b/package/libs/lua-lzlib/patches/001-allow_optim_flags.patch +new file mode 100644 +index 0000000000..78f981d237 +--- /dev/null ++++ b/package/libs/lua-lzlib/patches/001-allow_optim_flags.patch +@@ -0,0 +1,12 @@ ++--- a/Makefile +++++ b/Makefile ++@@ -14,7 +14,8 @@ LUABIN= $(LUA)/bin ++ ZLIB=../zlib-1.2.3 ++ ++ # no need to change anything below here ++-CFLAGS= $(INCS) $(DEFS) $(WARN) -O0 -fPIC +++CFLAGS= $(INCS) $(DEFS) $(WARN) $(OFLAGS) -fPIC +++OFLAGS= -O0 ++ WARN= -g -Werror -Wall -pedantic #-ansi ++ INCS= -I$(LUAINC) -I$(ZLIB) ++ LIBS= -L$(ZLIB) -lz -L$(LUALIB) -L$(LUABIN) #-llua51 +-- +2.25.1 + diff --git a/backports/0107-lua-make-it-easier-to-detect-host-built-Lua.patch b/backports/0107-lua-make-it-easier-to-detect-host-built-Lua.patch new file mode 100644 index 000000000..7c902b45c --- /dev/null +++ b/backports/0107-lua-make-it-easier-to-detect-host-built-Lua.patch @@ -0,0 +1,35 @@ +From 5c8a575ec759105e63a3aad033289d124516ec69 Mon Sep 17 00:00:00 2001 +From: Daniel Golle +Date: Sat, 10 Jul 2021 20:21:26 +0100 +Subject: [PATCH 107/146] lua: make it easier to detect host-built Lua + +Install pkg-config file also for host-build, clean up Lua symlinks. + +Signed-off-by: Daniel Golle +(cherry picked from commit 315f52e0f3bfa3d65ad14ca21a696c6d31c4edcd) +--- + package/utils/lua/Makefile | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/package/utils/lua/Makefile b/package/utils/lua/Makefile +index a54ef7d25a..be18880cb1 100644 +--- a/package/utils/lua/Makefile ++++ b/package/utils/lua/Makefile +@@ -134,8 +134,12 @@ define Host/Install + INSTALL_TOP="$(STAGING_DIR_HOSTPKG)" \ + install + +- $(LN) $(STAGING_DIR_HOSTPKG)/bin/lua5.1 $(STAGING_DIR_HOSTPKG)/bin/lua +- $(LN) $(STAGING_DIR_HOSTPKG)/bin/luac5.1 $(STAGING_DIR_HOSTPKG)/bin/luac ++ $(INSTALL_DIR) $(STAGING_DIR_HOSTPKG)/lib/pkgconfig ++ $(CP) $(HOST_BUILD_DIR)/etc/lua.pc $(STAGING_DIR_HOSTPKG)/lib/pkgconfig/lua5.1.pc ++ ++ $(LN) lua5.1 $(STAGING_DIR_HOSTPKG)/bin/lua ++ $(LN) luac5.1 $(STAGING_DIR_HOSTPKG)/bin/luac ++ $(LN) lua5.1.pc $(STAGING_DIR_HOSTPKG)/lib/pkgconfig/lua.pc + endef + + define Build/InstallDev +-- +2.25.1 + diff --git a/patches/0032-ipq40xx-add-tplink-ec420-support.patch b/patches/0032-ipq40xx-add-tplink-ec420-support.patch index 6f70a4945..9ca0c17b0 100644 --- a/patches/0032-ipq40xx-add-tplink-ec420-support.patch +++ b/patches/0032-ipq40xx-add-tplink-ec420-support.patch @@ -1,25 +1,38 @@ -From 07b09c01d002572c58d37de90d9b69d89a179de8 Mon Sep 17 00:00:00 2001 +From fa71a84201e148d5eb9c36cb7acb9d9d2fa8fca9 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Fri, 18 Jun 2021 11:07:02 +0200 Subject: [PATCH 1/7] ipq40xx: add tplink ec420 support Signed-off-by: John Crispin --- + package/boot/uboot-envtools/files/ipq40xx | 1 + package/firmware/ipq-wifi/Makefile | 4 +- .../ipq-wifi/board-tp-link_ec420-g1.qca4019 | Bin 0 -> 607304 bytes .../ipq-wifi/board-tp-link_ec420-g1.qca9984 | Bin 0 -> 171916 bytes .../ipq40xx/base-files/etc/board.d/02_network | 3 +- .../etc/hotplug.d/firmware/11-ath10k-caldata | 11 +- .../base-files/lib/upgrade/platform.sh | 3 +- - .../dts/qcom-ipq4019-tp-link-ec420-g1.dts | 276 ++++++++++++++++++ + .../dts/qcom-ipq4019-tp-link-ec420-g1.dts | 275 ++++++++++++++++++ target/linux/ipq40xx/image/generic.mk | 15 + .../patches-5.4/998-tp-link-ec420-g1.patch | 12 + - 9 files changed, 316 insertions(+), 8 deletions(-) + 10 files changed, 316 insertions(+), 8 deletions(-) create mode 100644 package/firmware/ipq-wifi/board-tp-link_ec420-g1.qca4019 create mode 100644 package/firmware/ipq-wifi/board-tp-link_ec420-g1.qca9984 create mode 100755 target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-tp-link-ec420-g1.dts create mode 100644 target/linux/ipq40xx/patches-5.4/998-tp-link-ec420-g1.patch +diff --git a/package/boot/uboot-envtools/files/ipq40xx b/package/boot/uboot-envtools/files/ipq40xx +index b24cbf979e..44a8688dbe 100644 +--- a/package/boot/uboot-envtools/files/ipq40xx ++++ b/package/boot/uboot-envtools/files/ipq40xx +@@ -59,6 +59,7 @@ linksys,ea8300 |\ + linksys,mr8300) + ubootenv_add_uci_config "/dev/mtd7" "0x0" "0x40000" "0x20000" + ;; ++tp-link,ec420-g1 |\ + zyxel,nbg6617) + ubootenv_add_uci_config "/dev/mtd6" "0x0" "0x10000" "0x10000" + ;; diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile index 513ad4ea67..87dcf9a769 100644 --- a/package/firmware/ipq-wifi/Makefile @@ -1148,10 +1161,10 @@ index 5582696759..530545e442 100644 alfa-network,ap120c-ac) diff --git a/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-tp-link-ec420-g1.dts b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-tp-link-ec420-g1.dts new file mode 100755 -index 0000000000..fc48e605d5 +index 0000000000..9f6fdd5e76 --- /dev/null +++ b/target/linux/ipq40xx/files/arch/arm/boot/dts/qcom-ipq4019-tp-link-ec420-g1.dts -@@ -0,0 +1,276 @@ +@@ -0,0 +1,275 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +#include "qcom-ipq4019.dtsi" @@ -1344,7 +1357,6 @@ index 0000000000..fc48e605d5 + partition5@e0000 { + label = "0:APPSBLENV"; + reg = <0x000e0000 0x00010000>; -+ read-only; + }; + partition6@f0000 { + label = "0:APPSBL"; @@ -1429,7 +1441,7 @@ index 0000000000..fc48e605d5 +}; + diff --git a/target/linux/ipq40xx/image/generic.mk b/target/linux/ipq40xx/image/generic.mk -index 487bba77b0..ee648edc50 100644 +index 487bba77b0..860b5e03bf 100644 --- a/target/linux/ipq40xx/image/generic.mk +++ b/target/linux/ipq40xx/image/generic.mk @@ -820,3 +820,18 @@ define Device/zyxel_wre6606 @@ -1448,7 +1460,7 @@ index 487bba77b0..ee648edc50 100644 + BLOCKSIZE := 128k + PAGESIZE := 2048 + SUPPORTED_DEVICES := tp-link,ec420-g1 -+ DEVICE_PACKAGES := ath10k-firmware-qca9984-ct ipq-wifi-tp-link_ec420-g1 ++ DEVICE_PACKAGES := ath10k-firmware-qca9984-ct ipq-wifi-tp-link_ec420-g1 uboot-envtools +endef +TARGET_DEVICES += tp-link_ec420_g1 diff --git a/target/linux/ipq40xx/patches-5.4/998-tp-link-ec420-g1.patch b/target/linux/ipq40xx/patches-5.4/998-tp-link-ec420-g1.patch diff --git a/patches/0042-base-files-fix-rootfs_data_max-support-during-sysupg.patch b/patches/0042-base-files-fix-rootfs_data_max-support-during-sysupg.patch new file mode 100644 index 000000000..0ab5232c0 --- /dev/null +++ b/patches/0042-base-files-fix-rootfs_data_max-support-during-sysupg.patch @@ -0,0 +1,26 @@ +From b673b8dad0cb6392c7097dfe75b2919b13ecd1c6 Mon Sep 17 00:00:00 2001 +From: John Crispin +Date: Tue, 17 Aug 2021 17:29:22 +0200 +Subject: [PATCH] base-files: fix rootfs_data_max support during sysupgrade + +Signed-off-by: John Crispin +--- + package/base-files/files/sbin/sysupgrade | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/package/base-files/files/sbin/sysupgrade b/package/base-files/files/sbin/sysupgrade +index 7e0a00e13b..5a2d459013 100755 +--- a/package/base-files/files/sbin/sysupgrade ++++ b/package/base-files/files/sbin/sysupgrade +@@ -357,6 +357,8 @@ if [ $TEST -eq 1 ]; then + exit 0 + fi + ++fw_printenv > /dev/null ++ + install_bin /sbin/upgraded + v "Commencing upgrade. Closing all shell sessions." + +-- +2.25.1 + diff --git a/profiles/container.yml b/profiles/container.yml index 7e7300a20..9f8c1f00c 100644 --- a/profiles/container.yml +++ b/profiles/container.yml @@ -1,6 +1,12 @@ --- description: Add the container dependencies +feeds: + - name: container + path: ../../feeds/container packages: - - procd-ujail - - procd-ujail-console + - apk + - uvol - uxc + - blockd + - procd-ujail-console + - kmod-veth diff --git a/profiles/edgecore_ecw5211.yml b/profiles/edgecore_ecw5211.yml index adb68bf19..92b003a1e 100644 --- a/profiles/edgecore_ecw5211.yml +++ b/profiles/edgecore_ecw5211.yml @@ -6,6 +6,7 @@ description: Build image for the Edgecore ECW5211 image: bin/targets/ipq40xx/generic/openwrt-ipq40xx-generic-edgecore_ecw5211-squashfs-nand-sysupgrade.bin include: - ucentral-ap + - container packages: - ath10k-firmware-qca4019-ct-htt - ath10k-firmware-qca9888-ct-htt diff --git a/profiles/edgecore_spw2ac1200.yml b/profiles/edgecore_spw2ac1200.yml index cc5a8862e..9f0358cf1 100644 --- a/profiles/edgecore_spw2ac1200.yml +++ b/profiles/edgecore_spw2ac1200.yml @@ -6,6 +6,7 @@ description: Build image for the Edgecore spw2ac1200 image: bin/targets/ipq40xx/generic/openwrt-ipq40xx-generic-edgecore_spw2ac1200-squashfs-nand-sysupgrade.bin include: - ucentral-ap + - container packages: - ath10k-firmware-qca4019-ct-htt - ath10k-firmware-qca9888-ct-htt diff --git a/profiles/linksys_e8450-ubi.yml b/profiles/linksys_e8450-ubi.yml index ba247a354..d90336909 100644 --- a/profiles/linksys_e8450-ubi.yml +++ b/profiles/linksys_e8450-ubi.yml @@ -6,6 +6,7 @@ description: Build image for the Linksys E8450 image: bin/targets/mediatek/mt7622/openwrt-mediatek-mt7622-linksys_e8450-ubi-squashfs-sysupgrade.itb include: - ucentral-ap + - container diffconfig: | CONFIG_TESTING_KERNEL=y CONFIG_TARGET_ROOTFS_INITRAMFS=y diff --git a/profiles/tplink_ec420.yml b/profiles/tplink_ec420.yml index 1a3e251e9..665879679 100644 --- a/profiles/tplink_ec420.yml +++ b/profiles/tplink_ec420.yml @@ -6,6 +6,7 @@ description: Build image for the TP-Link EC420 image: bin/targets/ipq40xx/generic/openwrt-ipq40xx-generic-tp-link_ec420_g1-squashfs-nand-sysupgrade.bin include: - ucentral-ap + - container packages: - ath10k-firmware-qca4019-ct-htt - ath10k-firmware-qca9888-ct-htt