From 7f29b5b7a17b61d0dda8659a1fe8b1bbc5716364 Mon Sep 17 00:00:00 2001 From: Goetz Goerisch Date: Thu, 5 Sep 2024 13:11:00 +0200 Subject: [PATCH 01/16] jool: update to 4.1.13 * update jool to 4.1.13 * refresh patch Changelog: https://github.com/NICMx/Jool/releases/tag/v4.1.13 Signed-off-by: Goetz Goerisch --- net/jool/Makefile | 6 ++--- ...0-fix-compilation-warning-simple-fix.patch | 23 ++++--------------- 2 files changed, 7 insertions(+), 22 deletions(-) diff --git a/net/jool/Makefile b/net/jool/Makefile index 82fd3939e8..8fe5727115 100644 --- a/net/jool/Makefile +++ b/net/jool/Makefile @@ -8,7 +8,7 @@ include $(TOPDIR)/rules.mk include $(INCLUDE_DIR)/kernel.mk PKG_NAME:=jool -PKG_VERSION:=4.1.12 +PKG_VERSION:=4.1.13 PKG_RELEASE:=1 PKG_LICENSE:=GPL-2.0-only @@ -16,8 +16,8 @@ PKG_LICENSE_FILES:=COPYING PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/NICMx/Jool.git -PKG_SOURCE_VERSION:=8d2edffe40fc9ebcb558e88e66662ee813e00b5c -PKG_MIRROR_HASH:=5f4729aeca0a5895b15a9d77ec52b4c9efdffeb25926e3a7eff36ffa6a9b1a14 +PKG_SOURCE_VERSION:=39ca69f8717a83733548bea3b7bfad2a4799572a +PKG_MIRROR_HASH:=f00592d639f34bc6c38e9d012d59a694b159a57ada1b86985cd4df38e4f85d5f PKG_BUILD_DIR=$(KERNEL_BUILD_DIR)/$(PKG_SOURCE_SUBDIR) PKG_BUILD_PARALLEL:=1 diff --git a/net/jool/patches/100-fix-compilation-warning-simple-fix.patch b/net/jool/patches/100-fix-compilation-warning-simple-fix.patch index 2b02459437..8dcd7d69bb 100644 --- a/net/jool/patches/100-fix-compilation-warning-simple-fix.patch +++ b/net/jool/patches/100-fix-compilation-warning-simple-fix.patch @@ -1,36 +1,21 @@ ---- a/src/mod/common/skbuff.c -+++ b/src/mod/common/skbuff.c -@@ -109,9 +109,9 @@ static void print_skb_fields(struct sk_b - print(tabs, "network_header:%u", skb->network_header); - print(tabs, "mac_header:%u", skb->mac_header); - print(tabs, "head:%p", skb->head); -- print(tabs, "data:%ld", skb->data - skb->head); -- print(tabs, "tail:%u", skb->tail); -- print(tabs, "end:%u", skb->end); -+ print(tabs, "data:%ld", (long int)(skb->data - skb->head)); -+ print(tabs, "tail:%u", (unsigned int)skb->tail); -+ print(tabs, "end:%u", (unsigned int)skb->end); - } - - static int truncated(unsigned int tabs) --- a/src/mod/common/xlator.c +++ b/src/mod/common/xlator.c -@@ -890,7 +890,7 @@ void xlator_put(struct xlator *jool) +@@ -891,7 +891,7 @@ void xlator_put(struct xlator *jool) static bool offset_equals(struct instance_entry_usr *offset, struct jool_instance *instance) { -- return (offset->ns == ((__u64)instance->jool.ns & 0xFFFFFFFF)) +- return (offset->ns == ((PTR_AS_UINT_TYPE)instance->jool.ns & 0xFFFFFFFF)) + return (offset->ns == ((uintptr_t)instance->jool.ns & 0xFFFFFFFF)) && (strcmp(offset->iname, instance->jool.iname) == 0); } --- a/src/mod/common/nl/instance.c +++ b/src/mod/common/nl/instance.c -@@ -37,7 +37,7 @@ static int serialize_instance(struct xla +@@ -38,7 +38,7 @@ static int serialize_instance(struct xla if (!root) return 1; -- error = nla_put_u32(skb, JNLAIE_NS, ((__u64)entry->ns) & 0xFFFFFFFF); +- error = nla_put_u32(skb, JNLAIE_NS, ((PTR_AS_UINT_TYPE)entry->ns) & 0xFFFFFFFF); + error = nla_put_u32(skb, JNLAIE_NS, ((uintptr_t)entry->ns) & 0xFFFFFFFF); if (error) goto cancel; From 30a3ec3191fd28db2988cb486c9599d23c1666b7 Mon Sep 17 00:00:00 2001 From: Carlos Miguel Ferreira Date: Mon, 16 Sep 2024 17:34:17 +0100 Subject: [PATCH 02/16] boost: Updates package to version 1.86.0 This commit updates boost to version 1.86.0 This update does not bring new libraries. More info about Boost 1.86.0 can be found at the usual place [1]. [1]: https://www.boost.org/users/history/version_1_86_0.html Signed-off-by: Carlos Miguel Ferreira --- libs/boost/Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libs/boost/Makefile b/libs/boost/Makefile index 1082eaae59..db610f8b1e 100644 --- a/libs/boost/Makefile +++ b/libs/boost/Makefile @@ -11,13 +11,13 @@ include $(TOPDIR)/rules.mk PKG_NAME:=boost -PKG_VERSION:=1.85.0 -PKG_SOURCE_VERSION:=1_85_0 +PKG_VERSION:=1.86.0 +PKG_SOURCE_VERSION:=1_86_0 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)_$(PKG_SOURCE_VERSION).tar.bz2 PKG_SOURCE_URL:=@SF/$(PKG_NAME)/$(PKG_NAME)/$(PKG_VERSION) https://boostorg.jfrog.io/artifactory/main/release/$(PKG_VERSION)/source/ -PKG_HASH:=7009fe1faa1697476bdc7027703a2badb84e849b7b0baad5086b087b971f8617 +PKG_HASH:=1bed88e40401b2cb7a1f76d4bab499e352fa4d0c5f31c0dbae64e24d34d7513b PKG_MAINTAINER:=Carlos M. Ferreira PKG_LICENSE:=BSL-1.0 @@ -42,12 +42,12 @@ define Package/boost/Default endef define Package/boost/description -This package provides the Boost v1.85.0 libraries. +This package provides the Boost v1.86.0 libraries. Boost is a set of free, peer-reviewed, portable C++ source libraries. This package provides the following run-time libraries: - atomic - - charconv (new) + - charconv - chrono - cobalt - container @@ -80,7 +80,7 @@ This package provides the following run-time libraries: - wave There are many more header-only libraries supported by Boost. -See more at http://www.boost.org/doc/libs/1_85_0/ +See more at http://www.boost.org/doc/libs/1_86_0/ endef PKG_BUILD_DEPENDS:=boost/host From c2a28fb9f0ff5a372f02437ea5161dd88861520f Mon Sep 17 00:00:00 2001 From: Javier Marcet Date: Mon, 16 Sep 2024 18:14:16 +0200 Subject: [PATCH 03/16] docker-compose: Update to version 2.29.4 Release notes: https://github.com/docker/compose/releases/tag/v2.29.4 Signed-off-by: Javier Marcet --- utils/docker-compose/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/docker-compose/Makefile b/utils/docker-compose/Makefile index 91bdea54b2..e97191cd3b 100644 --- a/utils/docker-compose/Makefile +++ b/utils/docker-compose/Makefile @@ -1,14 +1,14 @@ include $(TOPDIR)/rules.mk PKG_NAME:=compose -PKG_VERSION:=2.29.3 +PKG_VERSION:=2.29.4 PKG_RELEASE:=1 PKG_LICENSE:=Apache-2.0 PKG_LICENSE_FILES:=LICENSE PKG_SOURCE:=$(PKG_NAME)-v$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/docker/compose/tar.gz/v${PKG_VERSION}? -PKG_HASH:=55ddbcb65bccfc4f4ac4a45930eab2d1ee8f45ceea3988b68cd25982d688c9df +PKG_HASH:=a85bf4b23a52cf14233cc6d8645011e25e5f6a9168e4259de5df0d3386788afa PKG_MAINTAINER:=Javier Marcet From d0823a8244a0ac061b9c6cf3c784b4ffeee37e42 Mon Sep 17 00:00:00 2001 From: Milinda Brantini Date: Mon, 16 Sep 2024 13:32:41 +0800 Subject: [PATCH 04/16] dnsproxy: Update to 0.73.2 Signed-off-by: Milinda Brantini --- net/dnsproxy/Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/dnsproxy/Makefile b/net/dnsproxy/Makefile index 2f741d0c24..8f6c255e30 100644 --- a/net/dnsproxy/Makefile +++ b/net/dnsproxy/Makefile @@ -5,12 +5,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=dnsproxy -PKG_VERSION:=0.73.1 -PKG_RELEASE:=2 +PKG_VERSION:=0.73.2 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/AdguardTeam/dnsproxy/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=189462fe1255b4f58d39d4ea3c1696200fa65596fcb58e1a35c0545ba6b80618 +PKG_HASH:=9ab32251344f8353f3d3b02092fff887c30eaa1109839ec632bfe69d9fea25ab PKG_MAINTAINER:=Tianling Shen PKG_LICENSE:=Apache-2.0 From 1687e4282fd63a1ba2343e516bf748bd3d4a18f8 Mon Sep 17 00:00:00 2001 From: Wesley Gimenes Date: Tue, 10 Sep 2024 15:01:02 -0300 Subject: [PATCH 05/16] netbird: update to 0.29.1 Signed-off-by: Wesley Gimenes --- net/netbird/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/netbird/Makefile b/net/netbird/Makefile index 5b68a5b9d5..102e8c241a 100644 --- a/net/netbird/Makefile +++ b/net/netbird/Makefile @@ -1,12 +1,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=netbird -PKG_VERSION:=0.28.9 +PKG_VERSION:=0.29.1 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/netbirdio/netbird/tar.gz/v$(PKG_VERSION)? -PKG_HASH:=c3cc721330cbe8341665e982f8e7c77e0a37f0fedaee07f44fc78b5e200eb1c3 +PKG_HASH:=9072d16845de49ce395b150564b82f97a33defe007276b6b46d733306b6760ee PKG_MAINTAINER:=Oskari Rauta PKG_LICENSE:=BSD-3-Clause From 5af81638787a1dd1f057bc238bc243225110607f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Garc=C3=ADa=20Amor?= Date: Mon, 12 Aug 2024 21:20:56 +0200 Subject: [PATCH 06/16] zerotier: split configuration MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Split configuration in global and per-network sections. This change breaks existing configurations. The following per-network settings are available: * allow_managed * allow_global * allow_default * allow_dns See https://docs.zerotier.com/config/#network-specific-configuration Signed-off-by: Óscar García Amor Reviewed-by: Moritz Warning --- net/zerotier/Makefile | 3 +- net/zerotier/files/etc/config/zerotier | 45 ++++-- net/zerotier/files/etc/init.d/zerotier | 129 ++++++++---------- .../files/etc/uci-defaults/80-zt-migration | 19 +++ 4 files changed, 108 insertions(+), 88 deletions(-) create mode 100644 net/zerotier/files/etc/uci-defaults/80-zt-migration diff --git a/net/zerotier/Makefile b/net/zerotier/Makefile index 6d38423f91..5ecb76f217 100644 --- a/net/zerotier/Makefile +++ b/net/zerotier/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=zerotier PKG_VERSION:=1.14.0 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/zerotier/ZeroTierOne/tar.gz/$(PKG_VERSION)? @@ -71,6 +71,7 @@ define Package/zerotier/install $(INSTALL_BIN) $(PKG_BUILD_DIR)/zerotier-one $(1)/usr/bin/ $(LN) zerotier-one $(1)/usr/bin/zerotier-cli $(LN) zerotier-one $(1)/usr/bin/zerotier-idtool + $(INSTALL_DIR) $(1)/etc/uci-defaults ifeq ($(CONFIG_ZEROTIER_ENABLE_SELFTEST),y) $(INSTALL_BIN) $(PKG_BUILD_DIR)/zerotier-selftest $(1)/usr/bin/ diff --git a/net/zerotier/files/etc/config/zerotier b/net/zerotier/files/etc/config/zerotier index 34b1ad347e..00238c48a1 100644 --- a/net/zerotier/files/etc/config/zerotier +++ b/net/zerotier/files/etc/config/zerotier @@ -1,20 +1,39 @@ -config zerotier sample_config +config zerotier 'global' + # Sets whether ZeroTier is enabled or not option enabled 0 - - # persistent configuration folder (for ZT controller mode) + # Sets the ZeroTier listening port (default 9993; set to 0 for random) + #option port '9993' + # Client secret (leave blank to generate a secret on first run) + option secret '' + # Path of the optional file local.conf (see documentation at + # https://docs.zerotier.com/config#local-configuration-options) + #option local_conf_path '/etc/zerotier.conf' + # Persistent configuration directory (to perform other configurations such + # as controller mode or moons, etc.) #option config_path '/etc/zerotier' - # copy to RAM to prevent writing to flash (for ZT controller mode) + # Copy the contents of the persistent configuration directory to memory + # instead of linking it, this avoids writing to flash #option copy_config_path '1' - #option port '9993' - - # path to the local.conf - #option local_conf '/etc/zerotier.conf' +# Network configuration, you can have as many configurations as networks you +# want to join (the network name is optional) +config network 'mynet' + # Identifier of the network you wish to join + option id '8056c2e21c000001' + # Network configuration parameters (all are optional, if not indicated the + # default values are set, see documentation at + # https://docs.zerotier.com/config/#network-specific-configuration) + option allow_managed '1' + option allow_global '0' + option allow_default '0' + option allow_dns '0' - # Generate secret on first start - option secret '' +# Example of a second network (unnamed as it is optional) +#config network +# option id '1234567890123456' +# option allow_managed '1' +# option allow_global '0' +# option allow_default '0' +# option allow_dns '0' - # Join a public network called Earth - list join '8056c2e21c000001' - #list join '' diff --git a/net/zerotier/files/etc/init.d/zerotier b/net/zerotier/files/etc/init.d/zerotier index 84002f9526..910709859d 100755 --- a/net/zerotier/files/etc/init.d/zerotier +++ b/net/zerotier/files/etc/init.d/zerotier @@ -7,113 +7,94 @@ USE_PROCD=1 PROG=/usr/bin/zerotier-one CONFIG_PATH=/var/lib/zerotier-one -section_enabled() { - config_get_bool enabled "$1" 'enabled' 0 - [ $enabled -ne 0 ] +join_network() { + local section="${1}" + local id allow_managed allow_global allow_default allow_dns + + config_get id "${section}" 'id' + config_get_bool allow_managed "${section}" 'allow_managed' 1 + config_get_bool allow_global "${section}" 'allow_global' 0 + config_get_bool allow_default "${section}" 'allow_default' 0 + config_get_bool allow_dns "${section}" 'allow_dns' 0 + + if [ -n "${id}" ]; then + # an (empty) config file will cause ZT to join a network + touch "${CONFIG_PATH}"/networks.d/"${id}".conf + echo "allowManaged=${allow_managed}" > "${CONFIG_PATH}"/networks.d/"${id}".local.conf + echo "allowGlobal=${allow_global}" >> "${CONFIG_PATH}"/networks.d/"${id}".local.conf + echo "allowDefault=${allow_default}" >> "${CONFIG_PATH}"/networks.d/"${id}".local.conf + echo "allowDNS=${allow_dns}" >> "${CONFIG_PATH}"/networks.d/"${id}".local.conf + fi } -start_instance() { - local cfg="$1" - local port secret config_path local_conf copy_config_path path +start_service() { + config_load zerotier + local enabled port secret local_conf_path config_path copy_config_path local args="" - if ! section_enabled "$cfg"; then + config_get_bool enabled 'global' 'enabled' 0 + config_get port 'global' 'port' + config_get secret 'global' 'secret' + config_get local_conf_path 'global' 'local_conf_path' + config_get config_path 'global' 'config_path' + config_get_bool copy_config_path 'global' 'copy_config_path' 0 + + if [ ${enabled} -eq 0 ]; then echo "disabled in /etc/config/zerotier" - return 1 fi - config_get config_path $cfg 'config_path' - config_get port $cfg 'port' - config_get secret $cfg 'secret' - config_get local_conf $cfg 'local_conf' - config_get_bool copy_config_path $cfg 'copy_config_path' 0 - - path=${CONFIG_PATH}_$cfg - # Remove existing link or folder - rm -rf $path + rm -rf "${CONFIG_PATH}" - # Create link or copy files from CONFIG_PATH to config_path - if [ -n "$config_path" -a "$config_path" != "$path" ]; then - if [ ! -d "$config_path" ]; then - echo "ZeroTier config_path does not exist: $config_path" 1>&2 + # Create link or copy files from config_path to CONFIG_PATH + if [ -n "${config_path}" ]; then + if [ ! -d "${config_path}" ]; then + echo "ZeroTier config_path does not exist: ${config_path}" 1>&2 return fi - # ensure that the target exists - mkdir -p $(dirname $path) - - if [ "$copy_config_path" = "1" ]; then - cp -r $config_path $path + if [ ${copy_config_path} -eq 1 ]; then + cp -r "${config_path}" "${CONFIG_PATH}" else - ln -s $config_path $path + ln -s "${config_path}" "${CONFIG_PATH}" fi fi - mkdir -p $path/networks.d - - # link latest default config path to latest config path - rm -f $CONFIG_PATH - ln -s $path $CONFIG_PATH + mkdir -p "${CONFIG_PATH}"/networks.d + config_foreach join_network network - if [ -n "$port" ]; then - args="$args -p${port}" + if [ -f "${local_conf_path}" ]; then + ln -s "${local_conf_path}" "${CONFIG_PATH}"/local.conf fi - if [ -z "$secret" ]; then - echo "Generate secret - please wait..." - local sf="/tmp/zt.$cfg.secret" - - zerotier-idtool generate "$sf" > /dev/null - [ $? -ne 0 ] && return 1 - - secret="$(cat $sf)" - rm "$sf" + if [ -n "${port}" ]; then + args="${args} -p${port}" + fi - uci set zerotier.$cfg.secret="$secret" + if [ -z "${secret}" ]; then + echo -n "Generating secret - please wait... " + secret="$(zerotier-idtool generate)" + [ ${?} -ne 0 ] && return 1 + uci set zerotier.global.secret="${secret}" uci commit zerotier + echo "done." fi - if [ -n "$secret" ]; then - echo "$secret" > $path/identity.secret + if [ -n "${secret}" ]; then + echo "${secret}" > "${CONFIG_PATH}"/identity.secret # make sure there is not previous identity.public - rm -f $path/identity.public + rm -f "${CONFIG_PATH}"/identity.public fi - if [ -f "$local_conf" ]; then - ln -s "$local_conf" $path/local.conf - fi - - add_join() { - # an (empty) config file will cause ZT to join a network - touch $path/networks.d/$1.conf - } - - config_list_foreach $cfg 'join' add_join - procd_open_instance - procd_set_param command $PROG $args $path + procd_set_param command ${PROG} ${args} procd_set_param stderr 1 procd_set_param respawn procd_close_instance } -start_service() { - config_load 'zerotier' - config_foreach start_instance 'zerotier' -} - -stop_instance() { - local cfg="$1" - - # Remove existing link or folder - rm -rf ${CONFIG_PATH}_${cfg} -} - stop_service() { - config_load 'zerotier' - config_foreach stop_instance 'zerotier' - rm -f ${CONFIG_PATH} + rm -rf "${CONFIG_PATH}" } reload_service() { diff --git a/net/zerotier/files/etc/uci-defaults/80-zt-migration b/net/zerotier/files/etc/uci-defaults/80-zt-migration new file mode 100644 index 0000000000..1cfedb5838 --- /dev/null +++ b/net/zerotier/files/etc/uci-defaults/80-zt-migration @@ -0,0 +1,19 @@ +# Convert the join list into networks +nets=$(uci -q get zerotier.@zerotier[0].join) + +if [ -n "$nets" ]; then + for net in ${nets}; do + sid=$(uci add zerotier network) + uci set zerotier.${sid}.id=${net} + done + uci delete zerotier.@zerotier[0].join + + # Rename local conf (only if defined) + uci -q rename zerotier.@zerotier[0].local_conf='local_conf_path' || true + + # Rename configuration to global + uci rename zerotier.@zerotier[0]='global' + + # Commit all changes + uci commit zerotier +fi From 180046ba73f415dbb327c431954cc09bc7ebb86b Mon Sep 17 00:00:00 2001 From: Aleksey Vasilenko Date: Mon, 9 Sep 2024 05:07:03 +0300 Subject: [PATCH 07/16] memcached: update to 1.6.31 Signed-off-by: Aleksey Vasilenko --- net/memcached/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/memcached/Makefile b/net/memcached/Makefile index c4f05388e7..839ee1cef0 100644 --- a/net/memcached/Makefile +++ b/net/memcached/Makefile @@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=memcached -PKG_VERSION:=1.6.17 +PKG_VERSION:=1.6.31 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://memcached.org/files -PKG_HASH:=2055e373613d8fc21529aff9f0adce3e23b9ce01ba0478d30e7941d9f2bd1224 +PKG_HASH:=20d8d339b8fb1f6c79cee20559dc6ffb5dfee84db9e589f4eb214f6d2c873ef5 PKG_MAINTAINER:=Thomas Heil PKG_LICENSE:=BSD-3-Clause From 50bd101f2ed3dda54ad406eec19bd805856f3e84 Mon Sep 17 00:00:00 2001 From: John Audia Date: Tue, 17 Sep 2024 04:12:07 -0400 Subject: [PATCH 08/16] lxc: update to 6.0.2 No patches needed to be rebased, simple version bump. Build system: x86/64 Build-tested: x86/64/AMD Cezanne Run-tested: x86/64/AMD Cezanne Signed-off-by: John Audia --- utils/lxc/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/lxc/Makefile b/utils/lxc/Makefile index 2458f3d0b1..0cda02d48d 100644 --- a/utils/lxc/Makefile +++ b/utils/lxc/Makefile @@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=lxc -PKG_VERSION:=6.0.1 +PKG_VERSION:=6.0.2 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://linuxcontainers.org/downloads/lxc/ -PKG_HASH:=ccb38fbcdb86a82ee8192ccc85bba47edaf824439e9a7f12ab178d51ff1f77e0 +PKG_HASH:=1930aa10d892db8531d1353d15f7ebf5913e74a19e134423e4d074c07f2d6e8b PKG_MAINTAINER:=Marko Ratkaj PKG_LICENSE:=LGPL-2.1-or-later BSD-2-Clause GPL-2.0 From 9cd39fbf89c51e83e9239ca0331a72c012a615e8 Mon Sep 17 00:00:00 2001 From: Matthias FRANCK Date: Mon, 26 Aug 2024 21:54:23 +0200 Subject: [PATCH 09/16] libarchive: disable linking with pcre2 Looks like libarchive v3.7.3 adds support for pcre2 (https://github.com/libarchive/libarchive/commit/d1231a7ea7df4db6ddba73f06df67dbab0174a5c). Because of this, the following build error is observed (in the case pcre2 is compiled before libarchive): Package libarchive is missing dependencies for the following libraries: libpcre2-8.so.0 libpcre2-posix.so.3 So let's disable linking with pcre2, just like linking with pcre was disabled before. Signed-off-by: Matthias FRANCK --- libs/libarchive/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/libs/libarchive/Makefile b/libs/libarchive/Makefile index def75f7322..a0a82a08d5 100644 --- a/libs/libarchive/Makefile +++ b/libs/libarchive/Makefile @@ -78,6 +78,7 @@ CMAKE_OPTIONS += \ -DENABLE_ZSTD=OFF \ -DENABLE_LIBXML2=OFF \ -DENABLE_PCREPOSIX=OFF \ + -DENABLE_PCRE2POSIX=OFF \ -DENABLE_LibGCC=OFF \ -DENABLE_CNG=OFF \ \ From b93ad772bead10e198499433e14acb8e9520797a Mon Sep 17 00:00:00 2001 From: Yegor Yefremov Date: Tue, 27 Aug 2024 23:36:52 +0200 Subject: [PATCH 10/16] libs/glib2: update to 2.82.0 Remove the obsolete patch as the required functionality was already available upstream. Refresh 006-c99.patch. Remove -Ddefault_library option from MESON_HOST_ARGS and MESON_ARGS as this is now the default behavior. Signed-off-by: Yegor Yefremov --- libs/glib2/Makefile | 8 +- libs/glib2/patches/006-c99.patch | 2 +- ...1-Remove-packaging-module-dependency.patch | 691 ------------------ 3 files changed, 5 insertions(+), 696 deletions(-) delete mode 100644 libs/glib2/patches/021-Remove-packaging-module-dependency.patch diff --git a/libs/glib2/Makefile b/libs/glib2/Makefile index 14032e4bfe..fd30be288b 100644 --- a/libs/glib2/Makefile +++ b/libs/glib2/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=glib2 -PKG_VERSION:=2.80.3 +PKG_VERSION:=2.82.0 PKG_RELEASE:=1 PKG_SOURCE:=glib-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@GNOME/glib/$(basename $(PKG_VERSION)) -PKG_HASH:=3947a0eaddd0f3613d0230bb246d0c69e46142c19022f5c4b1b2e3cba236d417 +PKG_HASH:=f4c82ada51366bddace49d7ba54b33b4e4d6067afa3008e4847f41cb9b5c38d3 PKG_MAINTAINER:=Peter Wagner PKG_LICENSE:=LGPL-2.1-or-later @@ -68,8 +68,8 @@ COMP_ARGS+=-Dintrospection=disabled # set runtime dir to /var/run COMP_ARGS+=-Druntime_dir=/var/run -MESON_HOST_ARGS += $(COMP_ARGS) -Dxattr=false -Ddefault_library=static -Dnls=disabled -MESON_ARGS += $(COMP_ARGS) -Dxattr=true -Db_lto=true -Ddefault_library=both -Dnls=$(if $(CONFIG_BUILD_NLS),en,dis)abled +MESON_HOST_ARGS += $(COMP_ARGS) -Dxattr=false -Dnls=disabled +MESON_ARGS += $(COMP_ARGS) -Dxattr=true -Db_lto=true -Dnls=$(if $(CONFIG_BUILD_NLS),en,dis)abled define Build/InstallDev $(INSTALL_DIR) $(1)/usr/bin diff --git a/libs/glib2/patches/006-c99.patch b/libs/glib2/patches/006-c99.patch index 9cfcc33086..98c17db0f2 100644 --- a/libs/glib2/patches/006-c99.patch +++ b/libs/glib2/patches/006-c99.patch @@ -1,6 +1,6 @@ --- a/meson.build +++ b/meson.build -@@ -1160,7 +1160,7 @@ if host_system == 'windows' and (cc.get_ +@@ -1189,7 +1189,7 @@ if host_system == 'windows' and (cc.get_ glib_conf.set('HAVE_C99_SNPRINTF', false) glib_conf.set('HAVE_C99_VSNPRINTF', false) glib_conf.set('HAVE_UNIX98_PRINTF', false) diff --git a/libs/glib2/patches/021-Remove-packaging-module-dependency.patch b/libs/glib2/patches/021-Remove-packaging-module-dependency.patch deleted file mode 100644 index 914798098e..0000000000 --- a/libs/glib2/patches/021-Remove-packaging-module-dependency.patch +++ /dev/null @@ -1,691 +0,0 @@ -From 24d85ff767c43235d9a9bc90f66203b5a0791479 Mon Sep 17 00:00:00 2001 -From: Yegor Yefremov -Date: Sun, 30 Jun 2024 21:54:14 +0200 -Subject: [PATCH] Remove packaging module dependency - -codegen requires only Version class functionality. Hence, it is -sufficient to include version.py and _structures.py files from -the packaging module. - -Signed-off-by: Yegor Yefremov ---- - gio/gdbus-2.0/codegen/_structures.py | 61 +++ - gio/gdbus-2.0/codegen/meson.build | 2 + - gio/gdbus-2.0/codegen/utils.py | 4 +- - gio/gdbus-2.0/codegen/version.py | 563 +++++++++++++++++++++++++++ - meson.build | 2 +- - 5 files changed, 629 insertions(+), 3 deletions(-) - create mode 100644 gio/gdbus-2.0/codegen/_structures.py - create mode 100644 gio/gdbus-2.0/codegen/version.py - ---- /dev/null -+++ b/gio/gdbus-2.0/codegen/_structures.py -@@ -0,0 +1,61 @@ -+# This file is dual licensed under the terms of the Apache License, Version -+# 2.0, and the BSD License. See the LICENSE file in the root of this repository -+# for complete details. -+ -+ -+class InfinityType: -+ def __repr__(self) -> str: -+ return "Infinity" -+ -+ def __hash__(self) -> int: -+ return hash(repr(self)) -+ -+ def __lt__(self, other: object) -> bool: -+ return False -+ -+ def __le__(self, other: object) -> bool: -+ return False -+ -+ def __eq__(self, other: object) -> bool: -+ return isinstance(other, self.__class__) -+ -+ def __gt__(self, other: object) -> bool: -+ return True -+ -+ def __ge__(self, other: object) -> bool: -+ return True -+ -+ def __neg__(self: object) -> "NegativeInfinityType": -+ return NegativeInfinity -+ -+ -+Infinity = InfinityType() -+ -+ -+class NegativeInfinityType: -+ def __repr__(self) -> str: -+ return "-Infinity" -+ -+ def __hash__(self) -> int: -+ return hash(repr(self)) -+ -+ def __lt__(self, other: object) -> bool: -+ return True -+ -+ def __le__(self, other: object) -> bool: -+ return True -+ -+ def __eq__(self, other: object) -> bool: -+ return isinstance(other, self.__class__) -+ -+ def __gt__(self, other: object) -> bool: -+ return False -+ -+ def __ge__(self, other: object) -> bool: -+ return False -+ -+ def __neg__(self: object) -> InfinityType: -+ return Infinity -+ -+ -+NegativeInfinity = NegativeInfinityType() ---- a/gio/gdbus-2.0/codegen/meson.build -+++ b/gio/gdbus-2.0/codegen/meson.build -@@ -8,6 +8,8 @@ gdbus_codegen_files = [ - 'dbustypes.py', - 'parser.py', - 'utils.py', -+ 'version.py', -+ '_structures.py', - ] - - gdbus_codegen_conf = configuration_data() ---- a/gio/gdbus-2.0/codegen/utils.py -+++ b/gio/gdbus-2.0/codegen/utils.py -@@ -19,9 +19,9 @@ - # - # Author: David Zeuthen - --import packaging.version - import os - import sys -+from .version import Version - - - # pylint: disable=too-few-public-methods -@@ -166,4 +166,4 @@ def version_cmp_key(key): - v = str(key[0]) - else: - v = "0" -- return (packaging.version.Version(v), key[1]) -+ return (Version(v), key[1]) ---- /dev/null -+++ b/gio/gdbus-2.0/codegen/version.py -@@ -0,0 +1,563 @@ -+# This file is dual licensed under the terms of the Apache License, Version -+# 2.0, and the BSD License. See the LICENSE file in the root of this repository -+# for complete details. -+""" -+.. testsetup:: -+ -+ from packaging.version import parse, Version -+""" -+ -+from __future__ import annotations -+ -+import itertools -+import re -+from typing import Any, Callable, NamedTuple, SupportsInt, Tuple, Union -+ -+from ._structures import Infinity, InfinityType, NegativeInfinity, NegativeInfinityType -+ -+__all__ = ["VERSION_PATTERN", "parse", "Version", "InvalidVersion"] -+ -+LocalType = Tuple[Union[int, str], ...] -+ -+CmpPrePostDevType = Union[InfinityType, NegativeInfinityType, Tuple[str, int]] -+CmpLocalType = Union[ -+ NegativeInfinityType, -+ Tuple[Union[Tuple[int, str], Tuple[NegativeInfinityType, Union[int, str]]], ...], -+] -+CmpKey = Tuple[ -+ int, -+ Tuple[int, ...], -+ CmpPrePostDevType, -+ CmpPrePostDevType, -+ CmpPrePostDevType, -+ CmpLocalType, -+] -+VersionComparisonMethod = Callable[[CmpKey, CmpKey], bool] -+ -+ -+class _Version(NamedTuple): -+ epoch: int -+ release: tuple[int, ...] -+ dev: tuple[str, int] | None -+ pre: tuple[str, int] | None -+ post: tuple[str, int] | None -+ local: LocalType | None -+ -+ -+def parse(version: str) -> Version: -+ """Parse the given version string. -+ -+ >>> parse('1.0.dev1') -+ -+ -+ :param version: The version string to parse. -+ :raises InvalidVersion: When the version string is not a valid version. -+ """ -+ return Version(version) -+ -+ -+class InvalidVersion(ValueError): -+ """Raised when a version string is not a valid version. -+ -+ >>> Version("invalid") -+ Traceback (most recent call last): -+ ... -+ packaging.version.InvalidVersion: Invalid version: 'invalid' -+ """ -+ -+ -+class _BaseVersion: -+ _key: tuple[Any, ...] -+ -+ def __hash__(self) -> int: -+ return hash(self._key) -+ -+ # Please keep the duplicated `isinstance` check -+ # in the six comparisons hereunder -+ # unless you find a way to avoid adding overhead function calls. -+ def __lt__(self, other: _BaseVersion) -> bool: -+ if not isinstance(other, _BaseVersion): -+ return NotImplemented -+ -+ return self._key < other._key -+ -+ def __le__(self, other: _BaseVersion) -> bool: -+ if not isinstance(other, _BaseVersion): -+ return NotImplemented -+ -+ return self._key <= other._key -+ -+ def __eq__(self, other: object) -> bool: -+ if not isinstance(other, _BaseVersion): -+ return NotImplemented -+ -+ return self._key == other._key -+ -+ def __ge__(self, other: _BaseVersion) -> bool: -+ if not isinstance(other, _BaseVersion): -+ return NotImplemented -+ -+ return self._key >= other._key -+ -+ def __gt__(self, other: _BaseVersion) -> bool: -+ if not isinstance(other, _BaseVersion): -+ return NotImplemented -+ -+ return self._key > other._key -+ -+ def __ne__(self, other: object) -> bool: -+ if not isinstance(other, _BaseVersion): -+ return NotImplemented -+ -+ return self._key != other._key -+ -+ -+# Deliberately not anchored to the start and end of the string, to make it -+# easier for 3rd party code to reuse -+_VERSION_PATTERN = r""" -+ v? -+ (?: -+ (?:(?P[0-9]+)!)? # epoch -+ (?P[0-9]+(?:\.[0-9]+)*) # release segment -+ (?P
                                          # pre-release
-+            [-_\.]?
-+            (?Palpha|a|beta|b|preview|pre|c|rc)
-+            [-_\.]?
-+            (?P[0-9]+)?
-+        )?
-+        (?P                                         # post release
-+            (?:-(?P[0-9]+))
-+            |
-+            (?:
-+                [-_\.]?
-+                (?Ppost|rev|r)
-+                [-_\.]?
-+                (?P[0-9]+)?
-+            )
-+        )?
-+        (?P                                          # dev release
-+            [-_\.]?
-+            (?Pdev)
-+            [-_\.]?
-+            (?P[0-9]+)?
-+        )?
-+    )
-+    (?:\+(?P[a-z0-9]+(?:[-_\.][a-z0-9]+)*))?       # local version
-+"""
-+
-+VERSION_PATTERN = _VERSION_PATTERN
-+"""
-+A string containing the regular expression used to match a valid version.
-+
-+The pattern is not anchored at either end, and is intended for embedding in larger
-+expressions (for example, matching a version number as part of a file name). The
-+regular expression should be compiled with the ``re.VERBOSE`` and ``re.IGNORECASE``
-+flags set.
-+
-+:meta hide-value:
-+"""
-+
-+
-+class Version(_BaseVersion):
-+    """This class abstracts handling of a project's versions.
-+
-+    A :class:`Version` instance is comparison aware and can be compared and
-+    sorted using the standard Python interfaces.
-+
-+    >>> v1 = Version("1.0a5")
-+    >>> v2 = Version("1.0")
-+    >>> v1
-+    
-+    >>> v2
-+    
-+    >>> v1 < v2
-+    True
-+    >>> v1 == v2
-+    False
-+    >>> v1 > v2
-+    False
-+    >>> v1 >= v2
-+    False
-+    >>> v1 <= v2
-+    True
-+    """
-+
-+    _regex = re.compile(r"^\s*" + VERSION_PATTERN + r"\s*$", re.VERBOSE | re.IGNORECASE)
-+    _key: CmpKey
-+
-+    def __init__(self, version: str) -> None:
-+        """Initialize a Version object.
-+
-+        :param version:
-+            The string representation of a version which will be parsed and normalized
-+            before use.
-+        :raises InvalidVersion:
-+            If the ``version`` does not conform to PEP 440 in any way then this
-+            exception will be raised.
-+        """
-+
-+        # Validate the version and parse it into pieces
-+        match = self._regex.search(version)
-+        if not match:
-+            raise InvalidVersion(f"Invalid version: '{version}'")
-+
-+        # Store the parsed out pieces of the version
-+        self._version = _Version(
-+            epoch=int(match.group("epoch")) if match.group("epoch") else 0,
-+            release=tuple(int(i) for i in match.group("release").split(".")),
-+            pre=_parse_letter_version(match.group("pre_l"), match.group("pre_n")),
-+            post=_parse_letter_version(
-+                match.group("post_l"), match.group("post_n1") or match.group("post_n2")
-+            ),
-+            dev=_parse_letter_version(match.group("dev_l"), match.group("dev_n")),
-+            local=_parse_local_version(match.group("local")),
-+        )
-+
-+        # Generate a key which will be used for sorting
-+        self._key = _cmpkey(
-+            self._version.epoch,
-+            self._version.release,
-+            self._version.pre,
-+            self._version.post,
-+            self._version.dev,
-+            self._version.local,
-+        )
-+
-+    def __repr__(self) -> str:
-+        """A representation of the Version that shows all internal state.
-+
-+        >>> Version('1.0.0')
-+        
-+        """
-+        return f""
-+
-+    def __str__(self) -> str:
-+        """A string representation of the version that can be rounded-tripped.
-+
-+        >>> str(Version("1.0a5"))
-+        '1.0a5'
-+        """
-+        parts = []
-+
-+        # Epoch
-+        if self.epoch != 0:
-+            parts.append(f"{self.epoch}!")
-+
-+        # Release segment
-+        parts.append(".".join(str(x) for x in self.release))
-+
-+        # Pre-release
-+        if self.pre is not None:
-+            parts.append("".join(str(x) for x in self.pre))
-+
-+        # Post-release
-+        if self.post is not None:
-+            parts.append(f".post{self.post}")
-+
-+        # Development release
-+        if self.dev is not None:
-+            parts.append(f".dev{self.dev}")
-+
-+        # Local version segment
-+        if self.local is not None:
-+            parts.append(f"+{self.local}")
-+
-+        return "".join(parts)
-+
-+    @property
-+    def epoch(self) -> int:
-+        """The epoch of the version.
-+
-+        >>> Version("2.0.0").epoch
-+        0
-+        >>> Version("1!2.0.0").epoch
-+        1
-+        """
-+        return self._version.epoch
-+
-+    @property
-+    def release(self) -> tuple[int, ...]:
-+        """The components of the "release" segment of the version.
-+
-+        >>> Version("1.2.3").release
-+        (1, 2, 3)
-+        >>> Version("2.0.0").release
-+        (2, 0, 0)
-+        >>> Version("1!2.0.0.post0").release
-+        (2, 0, 0)
-+
-+        Includes trailing zeroes but not the epoch or any pre-release / development /
-+        post-release suffixes.
-+        """
-+        return self._version.release
-+
-+    @property
-+    def pre(self) -> tuple[str, int] | None:
-+        """The pre-release segment of the version.
-+
-+        >>> print(Version("1.2.3").pre)
-+        None
-+        >>> Version("1.2.3a1").pre
-+        ('a', 1)
-+        >>> Version("1.2.3b1").pre
-+        ('b', 1)
-+        >>> Version("1.2.3rc1").pre
-+        ('rc', 1)
-+        """
-+        return self._version.pre
-+
-+    @property
-+    def post(self) -> int | None:
-+        """The post-release number of the version.
-+
-+        >>> print(Version("1.2.3").post)
-+        None
-+        >>> Version("1.2.3.post1").post
-+        1
-+        """
-+        return self._version.post[1] if self._version.post else None
-+
-+    @property
-+    def dev(self) -> int | None:
-+        """The development number of the version.
-+
-+        >>> print(Version("1.2.3").dev)
-+        None
-+        >>> Version("1.2.3.dev1").dev
-+        1
-+        """
-+        return self._version.dev[1] if self._version.dev else None
-+
-+    @property
-+    def local(self) -> str | None:
-+        """The local version segment of the version.
-+
-+        >>> print(Version("1.2.3").local)
-+        None
-+        >>> Version("1.2.3+abc").local
-+        'abc'
-+        """
-+        if self._version.local:
-+            return ".".join(str(x) for x in self._version.local)
-+        else:
-+            return None
-+
-+    @property
-+    def public(self) -> str:
-+        """The public portion of the version.
-+
-+        >>> Version("1.2.3").public
-+        '1.2.3'
-+        >>> Version("1.2.3+abc").public
-+        '1.2.3'
-+        >>> Version("1.2.3+abc.dev1").public
-+        '1.2.3'
-+        """
-+        return str(self).split("+", 1)[0]
-+
-+    @property
-+    def base_version(self) -> str:
-+        """The "base version" of the version.
-+
-+        >>> Version("1.2.3").base_version
-+        '1.2.3'
-+        >>> Version("1.2.3+abc").base_version
-+        '1.2.3'
-+        >>> Version("1!1.2.3+abc.dev1").base_version
-+        '1!1.2.3'
-+
-+        The "base version" is the public version of the project without any pre or post
-+        release markers.
-+        """
-+        parts = []
-+
-+        # Epoch
-+        if self.epoch != 0:
-+            parts.append(f"{self.epoch}!")
-+
-+        # Release segment
-+        parts.append(".".join(str(x) for x in self.release))
-+
-+        return "".join(parts)
-+
-+    @property
-+    def is_prerelease(self) -> bool:
-+        """Whether this version is a pre-release.
-+
-+        >>> Version("1.2.3").is_prerelease
-+        False
-+        >>> Version("1.2.3a1").is_prerelease
-+        True
-+        >>> Version("1.2.3b1").is_prerelease
-+        True
-+        >>> Version("1.2.3rc1").is_prerelease
-+        True
-+        >>> Version("1.2.3dev1").is_prerelease
-+        True
-+        """
-+        return self.dev is not None or self.pre is not None
-+
-+    @property
-+    def is_postrelease(self) -> bool:
-+        """Whether this version is a post-release.
-+
-+        >>> Version("1.2.3").is_postrelease
-+        False
-+        >>> Version("1.2.3.post1").is_postrelease
-+        True
-+        """
-+        return self.post is not None
-+
-+    @property
-+    def is_devrelease(self) -> bool:
-+        """Whether this version is a development release.
-+
-+        >>> Version("1.2.3").is_devrelease
-+        False
-+        >>> Version("1.2.3.dev1").is_devrelease
-+        True
-+        """
-+        return self.dev is not None
-+
-+    @property
-+    def major(self) -> int:
-+        """The first item of :attr:`release` or ``0`` if unavailable.
-+
-+        >>> Version("1.2.3").major
-+        1
-+        """
-+        return self.release[0] if len(self.release) >= 1 else 0
-+
-+    @property
-+    def minor(self) -> int:
-+        """The second item of :attr:`release` or ``0`` if unavailable.
-+
-+        >>> Version("1.2.3").minor
-+        2
-+        >>> Version("1").minor
-+        0
-+        """
-+        return self.release[1] if len(self.release) >= 2 else 0
-+
-+    @property
-+    def micro(self) -> int:
-+        """The third item of :attr:`release` or ``0`` if unavailable.
-+
-+        >>> Version("1.2.3").micro
-+        3
-+        >>> Version("1").micro
-+        0
-+        """
-+        return self.release[2] if len(self.release) >= 3 else 0
-+
-+
-+def _parse_letter_version(
-+    letter: str | None, number: str | bytes | SupportsInt | None
-+) -> tuple[str, int] | None:
-+    if letter:
-+        # We consider there to be an implicit 0 in a pre-release if there is
-+        # not a numeral associated with it.
-+        if number is None:
-+            number = 0
-+
-+        # We normalize any letters to their lower case form
-+        letter = letter.lower()
-+
-+        # We consider some words to be alternate spellings of other words and
-+        # in those cases we want to normalize the spellings to our preferred
-+        # spelling.
-+        if letter == "alpha":
-+            letter = "a"
-+        elif letter == "beta":
-+            letter = "b"
-+        elif letter in ["c", "pre", "preview"]:
-+            letter = "rc"
-+        elif letter in ["rev", "r"]:
-+            letter = "post"
-+
-+        return letter, int(number)
-+    if not letter and number:
-+        # We assume if we are given a number, but we are not given a letter
-+        # then this is using the implicit post release syntax (e.g. 1.0-1)
-+        letter = "post"
-+
-+        return letter, int(number)
-+
-+    return None
-+
-+
-+_local_version_separators = re.compile(r"[\._-]")
-+
-+
-+def _parse_local_version(local: str | None) -> LocalType | None:
-+    """
-+    Takes a string like abc.1.twelve and turns it into ("abc", 1, "twelve").
-+    """
-+    if local is not None:
-+        return tuple(
-+            part.lower() if not part.isdigit() else int(part)
-+            for part in _local_version_separators.split(local)
-+        )
-+    return None
-+
-+
-+def _cmpkey(
-+    epoch: int,
-+    release: tuple[int, ...],
-+    pre: tuple[str, int] | None,
-+    post: tuple[str, int] | None,
-+    dev: tuple[str, int] | None,
-+    local: LocalType | None,
-+) -> CmpKey:
-+    # When we compare a release version, we want to compare it with all of the
-+    # trailing zeros removed. So we'll use a reverse the list, drop all the now
-+    # leading zeros until we come to something non zero, then take the rest
-+    # re-reverse it back into the correct order and make it a tuple and use
-+    # that for our sorting key.
-+    _release = tuple(
-+        reversed(list(itertools.dropwhile(lambda x: x == 0, reversed(release))))
-+    )
-+
-+    # We need to "trick" the sorting algorithm to put 1.0.dev0 before 1.0a0.
-+    # We'll do this by abusing the pre segment, but we _only_ want to do this
-+    # if there is not a pre or a post segment. If we have one of those then
-+    # the normal sorting rules will handle this case correctly.
-+    if pre is None and post is None and dev is not None:
-+        _pre: CmpPrePostDevType = NegativeInfinity
-+    # Versions without a pre-release (except as noted above) should sort after
-+    # those with one.
-+    elif pre is None:
-+        _pre = Infinity
-+    else:
-+        _pre = pre
-+
-+    # Versions without a post segment should sort before those with one.
-+    if post is None:
-+        _post: CmpPrePostDevType = NegativeInfinity
-+
-+    else:
-+        _post = post
-+
-+    # Versions without a development segment should sort after those with one.
-+    if dev is None:
-+        _dev: CmpPrePostDevType = Infinity
-+
-+    else:
-+        _dev = dev
-+
-+    if local is None:
-+        # Versions without a local segment should sort before those with one.
-+        _local: CmpLocalType = NegativeInfinity
-+    else:
-+        # Versions with a local segment need that segment parsed to implement
-+        # the sorting rules in PEP440.
-+        # - Alpha numeric segments sort before numeric segments
-+        # - Alpha numeric segments sort lexicographically
-+        # - Numeric segments sort numerically
-+        # - Shorter versions sort before longer versions when the prefixes
-+        #   match exactly
-+        _local = tuple(
-+            (i, "") if isinstance(i, int) else (NegativeInfinity, i) for i in local
-+        )
-+
-+    return epoch, _release, _pre, _post, _dev, _local
---- a/meson.build
-+++ b/meson.build
-@@ -2419,7 +2419,7 @@ endif
- 
- glib_conf.set('HAVE_PROC_SELF_CMDLINE', have_proc_self_cmdline)
- 
--python = import('python').find_installation(modules: ['packaging'])
-+python = import('python').find_installation(modules: [])
- # used for '#!/usr/bin/env '
- python_name = 'python3'
- 

From 180ee1321934cfd27d1245426f8fed3053a1cc66 Mon Sep 17 00:00:00 2001
From: Dirk Brenken 
Date: Tue, 17 Sep 2024 21:31:46 +0200
Subject: [PATCH 11/16] adblock: update to 4.2.2-4

* fixed wrongly detected NX domains in adblock reporting
* remove existing pcap files when restarting/stopping adblock
   to prevent problems when changing tcpdump parameters

Signed-off-by: Dirk Brenken 
---
 net/adblock/Makefile         | 2 +-
 net/adblock/files/adblock.sh | 7 ++++---
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/net/adblock/Makefile b/net/adblock/Makefile
index 4f97215ddb..a14b74e1bb 100644
--- a/net/adblock/Makefile
+++ b/net/adblock/Makefile
@@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=adblock
 PKG_VERSION:=4.2.2
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 PKG_LICENSE:=GPL-3.0-or-later
 PKG_MAINTAINER:=Dirk Brenken 
 
diff --git a/net/adblock/files/adblock.sh b/net/adblock/files/adblock.sh
index d98344ba85..4f2948d51e 100755
--- a/net/adblock/files/adblock.sh
+++ b/net/adblock/files/adblock.sh
@@ -11,7 +11,7 @@
 export LC_ALL=C
 export PATH="/usr/sbin:/usr/bin:/sbin:/bin"
 
-adb_ver="4.2.2-r3"
+adb_ver="4.2.2-r4"
 adb_enabled="0"
 adb_debug="0"
 adb_forcedns="0"
@@ -128,6 +128,7 @@ f_load() {
 			done
 			unset bg_pid
 		fi
+		rm -f "${adb_reportdir}"/adb_report.pcap*
 	fi
 
 	if [ -x "${adb_dumpcmd}" ] && [ "${adb_report}" = "1" ] && [ -z "${bg_pid}" ] && [ "${adb_action}" != "report" ] && [ "${adb_action}" != "stop" ]; then
@@ -1328,7 +1329,7 @@ f_report() {
 						if(type=="."&&$(NF-2)!="CNAME")
 							{domain=substr($(NF-1),1,length($(NF-1))-1);type="RQ"}
 						else
-							{if($(NF-1)~/[0-9]\/[0-9]\/[0-9]/||$(NF-1)=="0.0.0.0"){type="NX"}else{type="OK"};domain=""};
+							{if($(NF-2)~/NXDomain/||$(NF-1)=="0.0.0.0"){type="NX"}else{type="OK"};domain=""};
 						printf "%08d\t%s\t%s\t%s\t%-25s\t%s\n",$9,type,$1,substr($2,1,8),$6,domain}' >>"${report_raw}"
 				else
 					"${adb_dumpcmd}" "${resolve}" --immediate-mode -T domain -tttt -r "${file}" 2>/dev/null |
@@ -1337,7 +1338,7 @@ f_report() {
 						if(type=="."&&$(NF-2)!="CNAME")
 							{domain=substr($(NF-1),1,length($(NF-1))-1);type="RQ"}
 						else
-							{if($(NF-1)~/[0-9]\/[0-9]\/[0-9]/||$(NF-1)=="0.0.0.0"){type="NX"}else{type="OK"};domain=""};
+							{if($(NF-2)~/NXDomain/||$(NF-1)=="0.0.0.0"){type="NX"}else{type="OK"};domain=""};
 						printf "%08d\t%s\t%s\t%s\t%-25s\t%s\n",$7,type,$1,substr($2,1,8),$4,domain}' >>"${report_raw}"
 				fi
 			) &

From 22dd9a0ffecc54fecc9c21ed224d6e8e61ed725c Mon Sep 17 00:00:00 2001
From: Aleksey Vasilenko 
Date: Thu, 12 Sep 2024 10:17:51 +0300
Subject: [PATCH 12/16] sexpect: update to 2.3.14

Signed-off-by: Aleksey Vasilenko 
---
 utils/sexpect/Makefile | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/utils/sexpect/Makefile b/utils/sexpect/Makefile
index 932b720f97..71117c518f 100644
--- a/utils/sexpect/Makefile
+++ b/utils/sexpect/Makefile
@@ -2,12 +2,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=sexpect
-PKG_VERSION:=2.3.11
-PKG_RELEASE:=3
+PKG_VERSION:=2.3.14
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://codeload.github.com/clarkwang/sexpect/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=0ffdba912760383a60783bf010edc184b96d6dd454dc24922fcf7190de969e55
+PKG_HASH:=f6801c8b979d56eec54aedd7ede06e2342f382cee291beea88b52869186c557c
 
 PKG_MAINTAINER:=Clark Wang 
 PKG_LICENSE:=GPL-3.0-only

From 7cb9e4bbeaea1826115ded21ef6ce5df85d40c7f Mon Sep 17 00:00:00 2001
From: Aleksey Vasilenko 
Date: Wed, 18 Sep 2024 12:42:02 +0300
Subject: [PATCH 13/16] curl: update to 8.10.1

Signed-off-by: Aleksey Vasilenko 
---
 net/curl/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/curl/Makefile b/net/curl/Makefile
index bfe0bc51f6..5210f8c8d7 100644
--- a/net/curl/Makefile
+++ b/net/curl/Makefile
@@ -9,13 +9,13 @@ include $(TOPDIR)/rules.mk
 include $(INCLUDE_DIR)/nls.mk
 
 PKG_NAME:=curl
-PKG_VERSION:=8.10.0
+PKG_VERSION:=8.10.1
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://github.com/curl/curl/releases/download/curl-$(subst .,_,$(PKG_VERSION))/ \
 	https://curl.se/download/
-PKG_HASH:=e6b142f0e85e954759d37e26a3627e2278137595be80e3a860c4353e4335e5a0
+PKG_HASH:=73a4b0e99596a09fa5924a4fb7e4b995a85fda0d18a2c02ab9cf134bebce04ee
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=COPYING

From 7eef7e36e91b4e39a226a479a9702b22f3880b39 Mon Sep 17 00:00:00 2001
From: Tianling Shen 
Date: Thu, 19 Sep 2024 14:09:39 +0800
Subject: [PATCH 14/16] v2ray-core: Update to 5.18.0

Signed-off-by: Tianling Shen 
---
 net/v2ray-core/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/v2ray-core/Makefile b/net/v2ray-core/Makefile
index f39ceb1bab..2bb7aaaa3d 100644
--- a/net/v2ray-core/Makefile
+++ b/net/v2ray-core/Makefile
@@ -5,12 +5,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=v2ray-core
-PKG_VERSION:=5.17.1
+PKG_VERSION:=5.18.0
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://codeload.github.com/v2fly/v2ray-core/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=e6798d1a29f6a52a3c0cc7176803b73e292427bc7858d534d0529a278936b8b0
+PKG_HASH:=15acf65228867d47dcab27f87af048a2f0e6ed5d347a2e68730d30ae2a3871eb
 
 PKG_LICENSE:=MIT
 PKG_LICENSE_FILES:=LICENSE

From fecdb92b3ffa6c30a551bb4cbc79cc417f05be8e Mon Sep 17 00:00:00 2001
From: Tianling Shen 
Date: Thu, 19 Sep 2024 14:10:00 +0800
Subject: [PATCH 15/16] v2ray-geodata: Update to latest version

Signed-off-by: Tianling Shen 
---
 net/v2ray-geodata/Makefile | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/net/v2ray-geodata/Makefile b/net/v2ray-geodata/Makefile
index 4bb764d3e7..19e63b2f49 100644
--- a/net/v2ray-geodata/Makefile
+++ b/net/v2ray-geodata/Makefile
@@ -12,31 +12,31 @@ PKG_MAINTAINER:=Tianling Shen 
 
 include $(INCLUDE_DIR)/package.mk
 
-GEOIP_VER:=202408290048
+GEOIP_VER:=202409120050
 GEOIP_FILE:=geoip.dat.$(GEOIP_VER)
 define Download/geoip
   URL:=https://github.com/v2fly/geoip/releases/download/$(GEOIP_VER)/
   URL_FILE:=geoip.dat
   FILE:=$(GEOIP_FILE)
-  HASH:=428f8d3c2f65be51afa945a3464b44fde82d509f5df3f1383a5902d1706d1fe4
+  HASH:=4ec83c46f84b3efb9856903e7c10d6c21f6515b9e656575c483dcf2a3d80f916
 endef
 
-GEOSITE_VER:=20240829063032
+GEOSITE_VER:=20240914091803
 GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER)
 define Download/geosite
   URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/
   URL_FILE:=dlc.dat
   FILE:=$(GEOSITE_FILE)
-  HASH:=acabd214b0a05363f678baba64dfb745ffc551a9dea6d8c15abe0821a0cac5e9
+  HASH:=c171f61d3ba8e0dcf31a9548e9fd928a9416e064ad9417664eadda8d25eb6ad9
 endef
 
-GEOSITE_IRAN_VER:=202408260030
+GEOSITE_IRAN_VER:=202409160034
 GEOSITE_IRAN_FILE:=iran.dat.$(GEOSITE_IRAN_VER)
 define Download/geosite-ir
   URL:=https://github.com/bootmortis/iran-hosted-domains/releases/download/$(GEOSITE_IRAN_VER)/
   URL_FILE:=iran.dat
   FILE:=$(GEOSITE_IRAN_FILE)
-  HASH:=d95bd88c33b41514400ced2ec117834dd325c24a46c04e82f8c04ef040648f14
+  HASH:=d4f7a05bb3c81a52a511a7ea5d2d865adadcb2d0ccdf4dd3a7bca5851d1e9d27
 endef
 
 define Package/v2ray-geodata/template

From d5752d2d6fe497a3f5bdce68b618f709fa5df47c Mon Sep 17 00:00:00 2001
From: Tianling Shen 
Date: Thu, 19 Sep 2024 14:10:17 +0800
Subject: [PATCH 16/16] alist: Update to 3.37.4

Signed-off-by: Tianling Shen 
---
 net/alist/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/alist/Makefile b/net/alist/Makefile
index 4f789f879d..163fd39c86 100644
--- a/net/alist/Makefile
+++ b/net/alist/Makefile
@@ -5,12 +5,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=alist
-PKG_VERSION:=3.37.1
+PKG_VERSION:=3.37.4
 PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
 PKG_SOURCE_URL:=https://codeload.github.com/alist-org/alist/tar.gz/v$(PKG_VERSION)?
-PKG_HASH:=528a967fc26d3d74c33c4efc2baa8cf5a64e82c167c582e749724fcefae10ce5
+PKG_HASH:=0f2c54aba7ddcfd7df3e959ce40709bbd88bf4eb9b0436079db879c8eb25b51b
 
 PKG_LICENSE:=AGPL-3.0-only
 PKG_LICENSE_FILES:=LICENSE