summaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
Diffstat (limited to 'www')
-rw-r--r--www/Makefile1
-rw-r--r--www/onlyoffice-documentserver/Makefile18
-rw-r--r--www/onlyoffice-documentserver/distinfo60
-rw-r--r--www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.1.cpp.patch1014
-rw-r--r--www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.4.cpp.patch192
-rw-r--r--www/onlyoffice-documentserver/files/package-lock.json16
-rw-r--r--www/onlyoffice-documentserver/files/package.json2
-rw-r--r--www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_html2.py2
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_Apple_StringDocumentHandler.hxx109
-rw-r--r--www/onlyoffice-documentserver/files/patch-core_Common_3dParty_html_fetch.py3
-rw-r--r--www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-update-securelink.sh.m43
-rw-r--r--www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_nginx_includes_ds-mime.types.conf6
-rw-r--r--www/onlyoffice-documentserver/pkg-plist2
-rw-r--r--www/pecl-yaf/files/patch-php8511
-rw-r--r--www/pecl-yar/files/patch-php8511
-rw-r--r--www/py-feedgenerator/Makefile9
-rw-r--r--www/py-feedgenerator/distinfo6
-rw-r--r--www/py-freenit/Makefile2
-rw-r--r--www/py-freenit/distinfo6
-rw-r--r--www/py-rfc3987-syntax/Makefile23
-rw-r--r--www/py-rfc3987-syntax/distinfo3
-rw-r--r--www/py-rfc3987-syntax/pkg-descr11
-rw-r--r--www/rubygem-async-pool/Makefile4
-rw-r--r--www/rubygem-async-pool/distinfo6
-rw-r--r--www/rubygem-passenger/files/patch-libev23
-rw-r--r--www/rubygem-protocol-http1/Makefile2
-rw-r--r--www/rubygem-protocol-http1/distinfo6
-rw-r--r--www/rubygem-rdf/Makefile5
-rw-r--r--www/rubygem-rdf/distinfo6
-rw-r--r--www/rubygem-roda/Makefile2
-rw-r--r--www/rubygem-roda/distinfo6
31 files changed, 468 insertions, 1102 deletions
diff --git a/www/Makefile b/www/Makefile
index 1446c2b57c5b..434570735c04 100644
--- a/www/Makefile
+++ b/www/Makefile
@@ -1908,6 +1908,7 @@
SUBDIR += py-restclient
SUBDIR += py-rfc3986
SUBDIR += py-rfc3987
+ SUBDIR += py-rfc3987-syntax
SUBDIR += py-rollbar
SUBDIR += py-routes
SUBDIR += py-rules
diff --git a/www/onlyoffice-documentserver/Makefile b/www/onlyoffice-documentserver/Makefile
index d887e2e9f95f..fae9b93955d8 100644
--- a/www/onlyoffice-documentserver/Makefile
+++ b/www/onlyoffice-documentserver/Makefile
@@ -1,6 +1,6 @@
PORTNAME= onlyoffice-documentserver
DISTVERSIONPREFIX= v
-DISTVERSION= 9.0.2.16
+DISTVERSION= 9.0.3.31
CATEGORIES= www
MASTER_SITES+= LOCAL/mikael/v8/:source1 \
https://nodejs.org/dist/v${NODE_VERSION_PKGFETCH}/:source3 \
@@ -66,7 +66,7 @@ GH_TUPLE= ONLYOFFICE:core:v${DISTVERSION}:core/core \
hunspell:hyphen:73dd296:hunspell_hyphen/core/Common/3dParty/hyphen/hyphen \
mity:md4c:481fbfb:mity_md4c/core/Common/3dParty/md/md4c \
fsbruva:onlyoffice-DS-pkg-cache:v${NODE_VERSION_PKGFETCH}:pkg_cache/ \
- fsbruva:onlyoffice-DS-npm-cache:v${DISTVERSION}-20250701:npm_cache/
+ fsbruva:onlyoffice-DS-npm-cache:v${DISTVERSION}-20250721:npm_cache/
OPTIONS_SINGLE= DB
OPTIONS_SINGLE_DB= MYSQL PGSQL
@@ -99,11 +99,11 @@ SUB_LIST= DS_GROUPNAME=${DS_GROUPNAME} \
PREFIX=${PREFIX} \
WWWDIR=${WWWDIR}
-# node version used with "npm install @yao-pkg/pkg@6.5.1"
+# node version used with "npm install @yao-pkg/pkg@6.6.0"
# keep in sync with patch-build__tools_scripts_build__server.py and patch-document-server-package_Makefile
-NODE_VERSION_PKGFETCH= 20.19.1
+NODE_VERSION_PKGFETCH= 20.19.4
-MAKE_ENV= BUILD_NUMBER="36" \
+MAKE_ENV= BUILD_NUMBER="31" \
PKG_CACHE_PATH=${WRKDIR}/.pkg-cache \
PRODUCT_VERSION=${DISTVERSION:C/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/} \
BUILD_NUMBER=${DISTVERSION:C/^[0-9]+\.[0-9]+\.[0-9]+\.([0-9]+)/\1/}
@@ -117,7 +117,7 @@ DOS2UNIX_FILES= document-server-package/common/documentserver/nginx/includes/htt
CONFLICTS_BUILD=devel/googletest
.include <bsd.port.pre.mk>
-.if ${ARCH} == aarch64
+.if ${ARCH} == aarch64 || ${ARCH} == armv7
BUILD_DEPENDS+= clang${LLVM_DEFAULT}:devel/llvm${LLVM_DEFAULT}
BINARY_ALIAS+= cpp=${LOCALBASE}/bin/clang-cpp${LLVM_DEFAULT} \
cc=${LOCALBASE}/bin/clang${LLVM_DEFAULT} \
@@ -207,7 +207,7 @@ do-build:
@${MKDIR} ${WRKSRC}/yao-pkg
@${CP} ${FILESDIR}/package* ${WRKSRC}/yao-pkg
- @cd ${WRKSRC}/yao-pkg ; ${SETENV} ${MAKE_ENV} npm install @yao-pkg/pkg@6.5.1
+ @cd ${WRKSRC}/yao-pkg ; ${SETENV} ${MAKE_ENV} npm install @yao-pkg/pkg@6.6.0
@cd ${WRKSRC} && ${PATCH} -N -s -i ${FILESDIR}/extra-patch-pkg-fetch_lib-es5_build.js || ${TRUE}
@cd ${WRKSRC} && ${PATCH} -N -s -i ${FILESDIR}/extra-patch-pkg-fetch_patches_node.v${NODE_VERSION_PKGFETCH}.cpp.patch || ${TRUE}
@@ -266,7 +266,7 @@ create-caches-tarball:
${FIND} ${WRKDIR}/.pkg-cache -type f -perm 755 -exec file {} \; | ${EGREP} "ELF|PE32+|Mach-O" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM}
${FIND} ${WRKDIR}/.pkg-cache -type f -perm 644 -exec file {} \; | ${EGREP} -v "${NODE_VERSION_PKGFETCH}" | ${EGREP} "built-v|node-v" | ${EGREP} "tar.gz|sha256sum" | ${AWK} -F ':' '{print $$1}' | ${XARGS} ${RM}
- cd ${WRKDIR} && \
- ${TAR} czf ${PORTNAME}-${DISTVERSION}_`date +%Y%m%d`-npm-cache.tar.gz .npm .pkg-cache
+# cd ${WRKDIR} && \
+# ${TAR} czf ${PORTNAME}-${DISTVERSION}_`date +%Y%m%d`-npm-cache.tar.gz .npm .pkg-cache
.include <bsd.port.post.mk>
diff --git a/www/onlyoffice-documentserver/distinfo b/www/onlyoffice-documentserver/distinfo
index 432711cf408e..c9bcfbbcf825 100644
--- a/www/onlyoffice-documentserver/distinfo
+++ b/www/onlyoffice-documentserver/distinfo
@@ -1,38 +1,36 @@
-TIMESTAMP = 1751344944
+TIMESTAMP = 1753116846
SHA256 (v8-8.9.255.25_all.tar.gz) = 54853ef93accc063a82a0dc29457b25c9b6d88315431d62e06ab1f84797c5f80
SIZE (v8-8.9.255.25_all.tar.gz) = 72818814
-SHA256 (node-v20.19.1.tar.gz) = 691011ddb85c9ab86afb7ead2b6db2ddd45592f1c8fd26687d152dcadc182229
-SIZE (node-v20.19.1.tar.gz) = 88078477
+SHA256 (node-v20.19.4.tar.gz) = cc363c0a90fe5025939175c1c29ab67235f36ebe4b5d78506634da27a73eef5d
+SIZE (node-v20.19.4.tar.gz) = 89308973
SHA256 (optipng-0.7.8.tar.gz) = 25a3bd68481f21502ccaa0f4c13f84dcf6b20338e4c4e8c51f2cefbd8513398c
SIZE (optipng-0.7.8.tar.gz) = 3294014
-SHA256 (onlyoffice-documentserver-9.0.2.16_20250630-npm-cache.tar.gz) = 11738d912f93adb7bf401ae06cb70d2357a4b35177cae7ceb5915fa5267e3522
-SIZE (onlyoffice-documentserver-9.0.2.16_20250630-npm-cache.tar.gz) = 249461250
-SHA256 (ONLYOFFICE-DocumentServer-v9.0.2.16-v9.0.2_GH0.tar.gz) = 272dc092623ca12964c09aa0893676aa508bf0900a5ab04215d7086306d2583d
-SIZE (ONLYOFFICE-DocumentServer-v9.0.2.16-v9.0.2_GH0.tar.gz) = 972017
-SHA256 (ONLYOFFICE-core-v9.0.2.16_GH0.tar.gz) = 79d7aaf8b591017911febef0e141f9c3735faa33d1e68d605e80237082805f14
-SIZE (ONLYOFFICE-core-v9.0.2.16_GH0.tar.gz) = 205184118
-SHA256 (ONLYOFFICE-core-fonts-v9.0.2.16_GH0.tar.gz) = 56ba5c76d053d2ae625d2f4a01a955ecb2f1d25b9bef896313281588879f676a
-SIZE (ONLYOFFICE-core-fonts-v9.0.2.16_GH0.tar.gz) = 95376454
-SHA256 (ONLYOFFICE-dictionaries-v9.0.2.16_GH0.tar.gz) = c1665cd8de6a528b255b5d0d200f689a53c72bb36218dbf8ac046c4b04a7fe85
-SIZE (ONLYOFFICE-dictionaries-v9.0.2.16_GH0.tar.gz) = 57973827
-SHA256 (ONLYOFFICE-document-server-integration-v9.0.2.16_GH0.tar.gz) = 61759413e2c63ca94117b30442e985e2ea5d3e559b1e6d740adfa916e55a6074
-SIZE (ONLYOFFICE-document-server-integration-v9.0.2.16_GH0.tar.gz) = 6128854
-SHA256 (ONLYOFFICE-document-templates-v9.0.2.16_GH0.tar.gz) = ba8288f4c67ce21d8c4f3ec995b02c5df43464314770805c7c57860b79e31756
-SIZE (ONLYOFFICE-document-templates-v9.0.2.16_GH0.tar.gz) = 3914530
-SHA256 (ONLYOFFICE-sdkjs-v9.0.2.16_GH0.tar.gz) = ecdb6c32c426e86b1bca71fc129f283430a14abc3e747464b8b9167ba08e264b
-SIZE (ONLYOFFICE-sdkjs-v9.0.2.16_GH0.tar.gz) = 37688710
-SHA256 (ONLYOFFICE-server-v9.0.2.16_GH0.tar.gz) = 4d1dc02e4be3546bb6c1bbf6547eb4c46262e0554cacf81314ff741ce2ed5027
-SIZE (ONLYOFFICE-server-v9.0.2.16_GH0.tar.gz) = 4082601
-SHA256 (ONLYOFFICE-web-apps-v9.0.2.16_GH0.tar.gz) = 6befc028e52e4176e2007274915efc3354aa474ef7df6bdad0299204fb1ebf2b
-SIZE (ONLYOFFICE-web-apps-v9.0.2.16_GH0.tar.gz) = 443520777
-SHA256 (ONLYOFFICE-build_tools-v9.0.2.16_GH0.tar.gz) = fe7b82477a78ed2a272c841d75c8a6383506a194b3893547ee70a86193943f50
-SIZE (ONLYOFFICE-build_tools-v9.0.2.16_GH0.tar.gz) = 33870057
+SHA256 (ONLYOFFICE-DocumentServer-v9.0.3.31-v9.0.3_GH0.tar.gz) = 9f12f50e2460b1199c24661d4f88ad349385dcc441740291b9f8e110686ef360
+SIZE (ONLYOFFICE-DocumentServer-v9.0.3.31-v9.0.3_GH0.tar.gz) = 973386
+SHA256 (ONLYOFFICE-core-v9.0.3.31_GH0.tar.gz) = fa6b4b2f729b4dd6d7ac6bf5393fd8ed5a3a821f3f7a376dcff891c81a8a59a4
+SIZE (ONLYOFFICE-core-v9.0.3.31_GH0.tar.gz) = 205214176
+SHA256 (ONLYOFFICE-core-fonts-v9.0.3.31_GH0.tar.gz) = 48fbe7bac524f21b9b146d8242ec9968cdb94b825aae6171cc30a285b5dd7189
+SIZE (ONLYOFFICE-core-fonts-v9.0.3.31_GH0.tar.gz) = 95377304
+SHA256 (ONLYOFFICE-dictionaries-v9.0.3.31_GH0.tar.gz) = c23a98195b429d0a8e2ed06d5119c41a3246f585ccf4d1ba5f74af9327e6dec4
+SIZE (ONLYOFFICE-dictionaries-v9.0.3.31_GH0.tar.gz) = 57973415
+SHA256 (ONLYOFFICE-document-server-integration-v9.0.3.31_GH0.tar.gz) = 2af3f3c324ec434e26649f1fa62fb9f01180b196ba44484d5c2be9b67de602b2
+SIZE (ONLYOFFICE-document-server-integration-v9.0.3.31_GH0.tar.gz) = 6129610
+SHA256 (ONLYOFFICE-document-templates-v9.0.3.31_GH0.tar.gz) = 5e12565edaf35cd44b8263fcf8182dcd18b84bb8a9a45404bf2a48cc75e3e9a6
+SIZE (ONLYOFFICE-document-templates-v9.0.3.31_GH0.tar.gz) = 3914552
+SHA256 (ONLYOFFICE-sdkjs-v9.0.3.31_GH0.tar.gz) = c043f08e86218f8b85d3a9e5d9303fa46376959cbcdd9debf02ea74f55fdf886
+SIZE (ONLYOFFICE-sdkjs-v9.0.3.31_GH0.tar.gz) = 37755295
+SHA256 (ONLYOFFICE-server-v9.0.3.31_GH0.tar.gz) = b398762099b6a0a4006bcfb332de22f09be01a83b25352a9f42cc93ae6429246
+SIZE (ONLYOFFICE-server-v9.0.3.31_GH0.tar.gz) = 4082661
+SHA256 (ONLYOFFICE-web-apps-v9.0.3.31_GH0.tar.gz) = 40bdf74edc25934b1b0339e08813bbf891b4c7ca3e4fdfe1752d787b3df31bec
+SIZE (ONLYOFFICE-web-apps-v9.0.3.31_GH0.tar.gz) = 443570310
+SHA256 (ONLYOFFICE-build_tools-v9.0.3.31_GH0.tar.gz) = 04a08acf1317ac14c45efea6af565667a64a3aea873e2e0549f695fc6a4b4374
+SIZE (ONLYOFFICE-build_tools-v9.0.3.31_GH0.tar.gz) = 33872416
SHA256 (ONLYOFFICE-DocumentBuilder-626d1e44db3d06ceb8298215a67ef0475912d89a_GH0.tar.gz) = 275c3a8c993528fa56c69aedb11dd74a6fba9c3bd372874004584ae9cbb190b5
SIZE (ONLYOFFICE-DocumentBuilder-626d1e44db3d06ceb8298215a67ef0475912d89a_GH0.tar.gz) = 31659
SHA256 (ONLYOFFICE-onlyoffice.github.io-b26d001664d771df4f663d2d3ba7dd4a188b6cab_GH0.tar.gz) = 347b8f1d3c21b1f61a3f1fcae86f402b27ce4f8b826e18158834251046d83cf5
SIZE (ONLYOFFICE-onlyoffice.github.io-b26d001664d771df4f663d2d3ba7dd4a188b6cab_GH0.tar.gz) = 17009005
-SHA256 (ONLYOFFICE-document-server-package-v9.0.2.16_GH0.tar.gz) = c3153d922b38362146a209eade7f645e72504e19d5eb760354c57c223c4b637f
-SIZE (ONLYOFFICE-document-server-package-v9.0.2.16_GH0.tar.gz) = 186621
+SHA256 (ONLYOFFICE-document-server-package-v9.0.3.31_GH0.tar.gz) = 301068c8feb5a50aa7c8c882099dfea0cb0f99ea155784e95b3870dd71635c38
+SIZE (ONLYOFFICE-document-server-package-v9.0.3.31_GH0.tar.gz) = 186645
SHA256 (jasenhuang-katana-parser-be6df45_GH0.tar.gz) = 363ede45ba6d125fdb7323c43d34acd3d0ae9028ac18aec632eb6a623160f09a
SIZE (jasenhuang-katana-parser-be6df45_GH0.tar.gz) = 97712
SHA256 (google-gumbo-parser-aa91b27_GH0.tar.gz) = 1360f85c02fb2573a10f00abcddebc8f1ff277a16f66553439193af93afae335
@@ -41,7 +39,7 @@ SHA256 (hunspell-hyphen-73dd296_GH0.tar.gz) = 93e80ad69ee7afd507b12f0b58ca34a6a7
SIZE (hunspell-hyphen-73dd296_GH0.tar.gz) = 292528
SHA256 (mity-md4c-481fbfb_GH0.tar.gz) = 04e03a69a2783ab5f2449f8864499dabb150092d5f48415a5e423f762a209d54
SIZE (mity-md4c-481fbfb_GH0.tar.gz) = 238753
-SHA256 (fsbruva-onlyoffice-DS-pkg-cache-v20.19.1_GH0.tar.gz) = df466a0ea8365d10089d3169b224b079bb0ec409c57f2ff79c4f6048f8c5d29c
-SIZE (fsbruva-onlyoffice-DS-pkg-cache-v20.19.1_GH0.tar.gz) = 1288
-SHA256 (fsbruva-onlyoffice-DS-npm-cache-v9.0.2.16-20250701_GH0.tar.gz) = c8a355fe7941a29ba6ba51c97c52808ef5cfe3047cb4f31335a2e03cdfd84354
-SIZE (fsbruva-onlyoffice-DS-npm-cache-v9.0.2.16-20250701_GH0.tar.gz) = 161979161
+SHA256 (fsbruva-onlyoffice-DS-pkg-cache-v20.19.4_GH0.tar.gz) = d3b6a1ad3afdfd53b57809980ae83434ae727d421e9e383ae69c32e37a570918
+SIZE (fsbruva-onlyoffice-DS-pkg-cache-v20.19.4_GH0.tar.gz) = 1292
+SHA256 (fsbruva-onlyoffice-DS-npm-cache-v9.0.3.31-20250721_GH0.tar.gz) = 7f3f935337e91c1d1d7f8d2b3e0456dbac15b617581ac064ffd322082c488fb7
+SIZE (fsbruva-onlyoffice-DS-npm-cache-v9.0.3.31-20250721_GH0.tar.gz) = 162622276
diff --git a/www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.1.cpp.patch b/www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.1.cpp.patch
deleted file mode 100644
index 44c114f57dd6..000000000000
--- a/www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.1.cpp.patch
+++ /dev/null
@@ -1,1014 +0,0 @@
-https://github.com/yao-pkg/pkg-fetch/raw/refs/tags/v3.5.23/patches/node.v20.19.1.cpp.patch
-+ local FreeBSD patches
-
---- yao-pkg/node_modules/@yao-pkg/pkg-fetch/patches/node.v20.19.1.cpp.patch
-+++ yao-pkg/node_modules/@yao-pkg/pkg-fetch/patches/node.v20.19.1.cpp.patch
-@@ -11,6 +11,24 @@ index d3c17d47bc..7970af6ea4 100644
- }],
- ],
- },
-+@@ -426,7 +426,7 @@
-+ 'ldflags': [ '-m32' ],
-+ }],
-+ [ 'host_arch=="ppc64" and OS not in "aix os400"', {
-+- 'cflags': [ '-m64', '-mminimal-toc' ],
-++ 'cflags': [ '-m64' ],
-+ 'ldflags': [ '-m64' ],
-+ }],
-+ [ 'host_arch=="s390x" and OS=="linux"', {
-+@@ -450,7 +450,7 @@
-+ 'ldflags': [ '-m32' ],
-+ }],
-+ [ 'target_arch=="ppc64" and OS not in "aix os400"', {
-+- 'cflags': [ '-m64', '-mminimal-toc' ],
-++ 'cflags': [ '-m64' ],
-+ 'ldflags': [ '-m64' ],
-+ }],
-+ [ 'target_arch=="s390x" and OS=="linux"', {
- diff --git node/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c node/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c
- index 5e7775f1a5..eeebf67796 100644
- --- node/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c
-@@ -600,3 +618,375 @@ index 2655b9e694..1d951571c7 100644
- 'cflags_cc!': [ '-fno-rtti' ],
- }],
- [ 'OS == "mac" or OS == "ios"', {
-+--- node/Makefile.orig 2025-05-14 12:22:41 UTC
-++++ node/Makefile
-+@@ -171,8 +171,7 @@ out/Makefile: config.gypi common.gypi node.gyp \
-+ $(warning '$@' target is a noop)
-+
-+ out/Makefile: config.gypi common.gypi node.gyp \
-+- deps/uv/uv.gyp deps/llhttp/llhttp.gyp deps/zlib/zlib.gyp \
-+- deps/simdutf/simdutf.gyp deps/ada/ada.gyp \
-++ deps/*/*.gyp \
-+ tools/v8_gypfiles/toolchain.gypi tools/v8_gypfiles/features.gypi \
-+ tools/v8_gypfiles/inspector.gypi tools/v8_gypfiles/v8.gyp
-+ $(PYTHON) tools/gyp_node.py -f make
-+--- node/deps/openssl/config/archs/linux-elf/no-asm/openssl-cl.gypi.orig 2023-05-16 06:58:19 UTC
-++++ node/deps/openssl/config/archs/linux-elf/no-asm/openssl-cl.gypi
-+@@ -13,7 +13,7 @@
-+ '-Wall -O3 -fomit-frame-pointer',
-+ ],
-+ 'openssl_ex_libs_linux-elf': [
-+- '-ldl -pthread',
-++ '-pthread',
-+ ],
-+ 'openssl_cli_srcs_linux-elf': [
-+ 'openssl/apps/lib/cmp_mock_srv.c',
-+--- node/deps/openssl/config/archs/linux-elf/no-asm/openssl.gypi.orig 2023-05-16 06:58:19 UTC
-++++ node/deps/openssl/config/archs/linux-elf/no-asm/openssl.gypi
-+@@ -977,7 +977,7 @@
-+ '-Wall -O3 -fomit-frame-pointer',
-+ ],
-+ 'openssl_ex_libs_linux-elf': [
-+- '-ldl -pthread',
-++ '-pthread',
-+ ],
-+ },
-+ 'include_dirs': [
-+--- node/deps/openssl/openssl-cl_no_asm.gypi.orig 2023-11-22 10:13:54 UTC
-++++ node/deps/openssl/openssl-cl_no_asm.gypi
-+@@ -1,4 +1,5 @@
-+ {
-++ 'defines': ['OPENSSL_NO_ASM'],
-+ 'conditions': [
-+ ['target_arch=="ppc64" and OS in ("aix", "os400")', {
-+ 'includes': ['config/archs/aix64-gcc-as/no-asm/openssl-cl.gypi'],
-+@@ -45,7 +46,7 @@
-+ 'includes': ['config/archs/linux64-loongarch64/no-asm/openssl-cl.gypi'],
-+ }, {
-+ # Other architectures don't use assembly
-+- 'includes': ['config/archs/linux-x86_64/no-asm/openssl-cl.gypi'],
-++ 'includes': ['config/archs/linux-elf/no-asm/openssl-cl.gypi'],
-+ }],
-+ ],
-+ }
-+--- node/deps/openssl/openssl_no_asm.gypi.orig 2023-05-16 06:58:20 UTC
-++++ node/deps/openssl/openssl_no_asm.gypi
-+@@ -44,7 +44,7 @@
-+ 'includes': ['config/archs/linux64-riscv64/no-asm/openssl.gypi'],
-+ }, {
-+ # Other architectures don't use assembly
-+- 'includes': ['config/archs/linux-x86_64/no-asm/openssl.gypi'],
-++ 'includes': ['config/archs/linux-elf/no-asm/openssl.gypi'],
-+ }],
-+ ],
-+ }
-+--- node/deps/v8/src/base/macros.h.orig 2021-04-12 21:00:33.000000000 +0000
-++++ node/deps/v8/src/base/macros.h 2025-06-20 09:42:18.838769000 +0000
-+@@ -203,7 +203,8 @@
-+ // base::is_trivially_copyable will differ for these cases.
-+ template <typename T>
-+ struct is_trivially_copyable {
-+-#if V8_CC_MSVC
-++#if V8_CC_MSVC || (__GNUC__ == 12 && __GNUC_MINOR__ <= 2) || \
-++ (defined(__clang__) && __clang_major__ <= 17)
-+ // Unfortunately, MSVC 2015 is broken in that std::is_trivially_copyable can
-+ // be false even though it should be true according to the standard.
-+ // (status at 2018-02-26, observed on the msvc waterfall bot).
-+--- node/deps/v8/src/base/platform/platform-freebsd.cc.orig 2023-05-16 06:58:20 UTC
-++++ node/deps/v8/src/base/platform/platform-freebsd.cc
-+@@ -82,8 +82,8 @@ std::vector<OS::SharedLibraryAddress> OS::GetSharedLib
-+ lib_name = std::string(path);
-+ }
-+ result.push_back(SharedLibraryAddress(
-+- lib_name, reinterpret_cast<uintptr_t>(map->kve_start),
-+- reinterpret_cast<uintptr_t>(map->kve_end)));
-++ lib_name, static_cast<uintptr_t>(map->kve_start),
-++ static_cast<uintptr_t>(map->kve_end)));
-+ }
-+
-+ start += ssize;
-+--- node/deps/v8/src/codegen/arm/cpu-arm.cc.orig 2023-05-16 06:58:20 UTC
-++++ node/deps/v8/src/codegen/arm/cpu-arm.cc
-+@@ -2,12 +2,15 @@
-+ // Use of this source code is governed by a BSD-style license that can be
-+ // found in the LICENSE file.
-+
-++#include "include/v8config.h"
-++
-+ // CPU specific code for arm independent of OS goes here.
-+ #ifdef __arm__
-+ #ifdef __QNXNTO__
-+ #include <sys/mman.h> // for cache flushing.
-+ #undef MAP_TYPE
-+ #elif V8_OS_FREEBSD
-++#include <sys/cdefs.h>
-+ #include <machine/sysarch.h> // for cache flushing
-+ #include <sys/types.h>
-+ #elif V8_OS_STARBOARD
-+--- node/deps/v8/src/codegen/ppc/constants-ppc.h.orig 2023-05-16 06:58:20 UTC
-++++ node/deps/v8/src/codegen/ppc/constants-ppc.h
-+@@ -36,7 +36,7 @@
-+ #endif
-+
-+ #if !(V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64) || !V8_TARGET_ARCH_PPC64 || \
-+- V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2)
-++ (defined(_CALL_ELF) && _CALL_ELF == 2)
-+ #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 1
-+ #else
-+ #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 0
-+@@ -44,7 +44,7 @@
-+
-+ #if !(V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64) || \
-+ (V8_TARGET_ARCH_PPC64 && \
-+- (V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2)))
-++ (defined(_CALL_ELF) && _CALL_ELF == 2))
-+ #define ABI_CALL_VIA_IP 1
-+ #else
-+ #define ABI_CALL_VIA_IP 0
-+--- node/deps/v8/src/libsampler/sampler.cc.orig 2023-05-16 06:58:20 UTC
-++++ node/deps/v8/src/libsampler/sampler.cc
-+@@ -511,6 +511,10 @@ void SignalHandler::FillRegisterState(void* context, R
-+ state->pc = reinterpret_cast<void*>(mcontext.__gregs[_REG_PC]);
-+ state->sp = reinterpret_cast<void*>(mcontext.__gregs[_REG_SP]);
-+ state->fp = reinterpret_cast<void*>(mcontext.__gregs[_REG_FP]);
-++#elif V8_TARGET_ARCH_PPC64
-++ state->pc = reinterpret_cast<void*>(mcontext.mc_srr0);
-++ state->sp = reinterpret_cast<void*>(mcontext.mc_frame[1]);
-++ state->fp = reinterpret_cast<void*>(mcontext.mc_frame[31]);
-+ #endif // V8_HOST_ARCH_*
-+ #elif V8_OS_NETBSD
-+ #if V8_HOST_ARCH_IA32
-+Obtained from: https://chromium.googlesource.com/v8/v8.git/+/182d9c05e78b1ddb1cb8242cd3628a7855a0336f
-+
-+commit 182d9c05e78b1ddb1cb8242cd3628a7855a0336f
-+Author: Andrey Kosyakov <caseq@chromium.org>
-+Date: 2023-08-17T13:50:11-07:00
-+
-+ Define UChar as char16_t
-+
-+ We used to have UChar defined as uint16_t which does not go along
-+ with STL these days if you try to have an std::basic_string<> of it,
-+ as there are no standard std::char_traits<> specialization for uint16_t.
-+
-+ This switches UChar to char16_t where practical, introducing a few
-+ compatibility shims to keep CL size small, as (1) this would likely
-+ have to be back-ported and (2) crdtp extensively uses uint16_t for
-+ wide chars.
-+
-+ Bug: b:296390693
-+ Change-Id: I66a32d8f0050915225b187de56896c26dd76163d
-+ Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4789966
-+ Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
-+ Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
-+ Auto-Submit: Andrey Kosyakov <caseq@chromium.org>
-+ Cr-Commit-Position: refs/heads/main@{#89559}
-+
-+diff --git node/deps/v8/src/inspector/string-16.cc node/deps/v8/src/inspector/string-16.cc
-+index a8b786a8166..6df9963e970 100644
-+--- node/deps/v8/src/inspector/string-16.cc
-++++ node/deps/v8/src/inspector/string-16.cc
-+@@ -27,7 +27,7 @@ bool isSpaceOrNewLine(UChar c) {
-+ return isASCII(c) && c <= ' ' && (c == ' ' || (c <= 0xD && c >= 0x9));
-+ }
-+
-+-int64_t charactersToInteger(const UChar* characters, size_t length,
-++int64_t charactersToInteger(const uint16_t* characters, size_t length,
-+ bool* ok = nullptr) {
-+ std::vector<char> buffer;
-+ buffer.reserve(length + 1);
-+@@ -50,6 +50,8 @@ int64_t charactersToInteger(const UChar* characters, size_t length,
-+
-+ String16::String16(const UChar* characters, size_t size)
-+ : m_impl(characters, size) {}
-++String16::String16(const uint16_t* characters, size_t size)
-++ : m_impl(reinterpret_cast<const UChar*>(characters), size) {}
-+
-+ String16::String16(const UChar* characters) : m_impl(characters) {}
-+
-+@@ -241,6 +243,10 @@ String16 String16::fromUTF16LE(const UChar* stringStart, size_t length) {
-+ #endif // V8_TARGET_BIG_ENDIAN
-+ }
-+
-++String16 String16::fromUTF16LE(const uint16_t* stringStart, size_t length) {
-++ return fromUTF16LE(reinterpret_cast<const UChar*>(stringStart), length);
-++}
-++
-+ std::string String16::utf8() const {
-+ return UTF16ToUTF8(m_impl.data(), m_impl.size());
-+ }
-+diff --git node/deps/v8/src/inspector/string-16.h node/deps/v8/src/inspector/string-16.h
-+index 1678ffb2e1e..d9f6c466ab1 100644
-+--- node/deps/v8/src/inspector/string-16.h
-++++ node/deps/v8/src/inspector/string-16.h
-+@@ -6,6 +6,7 @@
-+ #define V8_INSPECTOR_STRING_16_H_
-+
-+ #include <stdint.h>
-++#include <uchar.h>
-+
-+ #include <cctype>
-+ #include <climits>
-+@@ -18,7 +19,7 @@
-+
-+ namespace v8_inspector {
-+
-+-using UChar = uint16_t;
-++using UChar = char16_t;
-+
-+ class String16 {
-+ public:
-+@@ -28,6 +29,7 @@ class String16 {
-+ String16(const String16&) V8_NOEXCEPT = default;
-+ String16(String16&&) V8_NOEXCEPT = default;
-+ String16(const UChar* characters, size_t size);
-++ String16(const uint16_t* characters, size_t size);
-+ V8_EXPORT String16(const UChar* characters);
-+ V8_EXPORT String16(const char* characters);
-+ String16(const char* characters, size_t size);
-+@@ -49,7 +51,9 @@ class String16 {
-+ int toInteger(bool* ok = nullptr) const;
-+ std::pair<size_t, size_t> getTrimmedOffsetAndLength() const;
-+ String16 stripWhiteSpace() const;
-+- const UChar* characters16() const { return m_impl.c_str(); }
-++ const uint16_t* characters16() const {
-++ return reinterpret_cast<const uint16_t*>(m_impl.c_str());
-++ }
-+ size_t length() const { return m_impl.length(); }
-+ bool isEmpty() const { return !m_impl.length(); }
-+ UChar operator[](size_t index) const { return m_impl[index]; }
-+@@ -79,6 +83,8 @@ class String16 {
-+ // On Big endian architectures, byte order needs to be flipped.
-+ V8_EXPORT static String16 fromUTF16LE(const UChar* stringStart,
-+ size_t length);
-++ V8_EXPORT static String16 fromUTF16LE(const uint16_t* stringStart,
-++ size_t length);
-+
-+ std::size_t hash() const {
-+ if (!hash_code) {
-+diff --git node/deps/v8/src/inspector/v8-string-conversions.cc node/deps/v8/src/inspector/v8-string-conversions.cc
-+index 0c75e66b972..8cf19be816c 100644
-+--- node/deps/v8/src/inspector/v8-string-conversions.cc
-++++ node/deps/v8/src/inspector/v8-string-conversions.cc
-+@@ -12,7 +12,7 @@
-+
-+ namespace v8_inspector {
-+ namespace {
-+-using UChar = uint16_t;
-++using UChar = char16_t;
-+ using UChar32 = uint32_t;
-+
-+ bool isASCII(UChar c) { return !(c & ~0x7F); }
-+@@ -386,7 +386,7 @@ std::string UTF16ToUTF8(const UChar* stringStart, size_t length) {
-+
-+ std::basic_string<UChar> UTF8ToUTF16(const char* stringStart, size_t length) {
-+ if (!stringStart || !length) return std::basic_string<UChar>();
-+- std::vector<uint16_t> buffer(length);
-++ std::vector<UChar> buffer(length);
-+ UChar* bufferStart = buffer.data();
-+
-+ UChar* bufferCurrent = bufferStart;
-+@@ -395,7 +395,7 @@ std::basic_string<UChar> UTF8ToUTF16(const char* stringStart, size_t length) {
-+ reinterpret_cast<const char*>(stringStart + length),
-+ &bufferCurrent, bufferCurrent + buffer.size(), nullptr,
-+ true) != conversionOK)
-+- return std::basic_string<uint16_t>();
-++ return std::basic_string<UChar>();
-+ size_t utf16Length = bufferCurrent - bufferStart;
-+ return std::basic_string<UChar>(bufferStart, bufferStart + utf16Length);
-+ }
-+diff --git node/deps/v8/src/inspector/v8-string-conversions.h node/deps/v8/src/inspector/v8-string-conversions.h
-+index eb33c6816a5..1126255dac2 100644
-+--- node/deps/v8/src/inspector/v8-string-conversions.h
-++++ node/deps/v8/src/inspector/v8-string-conversions.h
-+@@ -5,14 +5,16 @@
-+ #ifndef V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
-+ #define V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
-+
-++#include <uchar.h>
-++
-+ #include <cstdint>
-+ #include <string>
-+
-+ // Conversion routines between UT8 and UTF16, used by string-16.{h,cc}. You may
-+ // want to use string-16.h directly rather than these.
-+ namespace v8_inspector {
-+-std::basic_string<uint16_t> UTF8ToUTF16(const char* stringStart, size_t length);
-+-std::string UTF16ToUTF8(const uint16_t* stringStart, size_t length);
-++std::basic_string<char16_t> UTF8ToUTF16(const char* stringStart, size_t length);
-++std::string UTF16ToUTF8(const char16_t* stringStart, size_t length);
-+ } // namespace v8_inspector
-+
-+ #endif // V8_INSPECTOR_V8_STRING_CONVERSIONS_H_
-+diff --git node/deps/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc node/deps/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc
-+index c9d89eaa42f..1a46d781b89 100644
-+--- node/deps/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc
-++++ node/deps/v8/third_party/inspector_protocol/crdtp/test_platform_v8.cc
-+@@ -11,13 +11,16 @@
-+ namespace v8_crdtp {
-+
-+ std::string UTF16ToUTF8(span<uint16_t> in) {
-+- return v8_inspector::UTF16ToUTF8(in.data(), in.size());
-++ return v8_inspector::UTF16ToUTF8(reinterpret_cast<const char16_t*>(in.data()),
-++ in.size());
-+ }
-+
-+ std::vector<uint16_t> UTF8ToUTF16(span<uint8_t> in) {
-+- std::basic_string<uint16_t> utf16 = v8_inspector::UTF8ToUTF16(
-++ std::basic_string<char16_t> utf16 = v8_inspector::UTF8ToUTF16(
-+ reinterpret_cast<const char*>(in.data()), in.size());
-+- return std::vector<uint16_t>(utf16.begin(), utf16.end());
-++ return std::vector<uint16_t>(
-++ reinterpret_cast<const uint16_t*>(utf16.data()),
-++ reinterpret_cast<const uint16_t*>(utf16.data()) + utf16.size());
-+ }
-+
-+ } // namespace v8_crdtp
-+--- node/node.gypi.orig 2023-05-16 06:58:21 UTC
-++++ node/node.gypi
-+@@ -349,6 +349,9 @@
-+ [ 'node_use_openssl=="true"', {
-+ 'defines': [ 'HAVE_OPENSSL=1' ],
-+ 'conditions': [
-++ ['openssl_no_asm==1', {
-++ 'defines': [ 'OPENSSL_NO_ASM' ],
-++ }],
-+ [ 'node_shared_openssl=="false"', {
-+ 'defines': [ 'OPENSSL_API_COMPAT=0x10100000L', ],
-+ 'dependencies': [
-+--- node/src/crypto/crypto_util.cc.orig 2023-05-16 06:58:21 UTC
-++++ node/src/crypto/crypto_util.cc
-+@@ -205,10 +205,12 @@ void InitCryptoOnce() {
-+ // No-op with OPENSSL_NO_COMP builds of OpenSSL.
-+ sk_SSL_COMP_zero(SSL_COMP_get_compression_methods());
-+
-++#if OPENSSL_VERSION_MAJOR < 3
-+ #ifndef OPENSSL_NO_ENGINE
-+ ERR_load_ENGINE_strings();
-+ ENGINE_load_builtin_engines();
-+ #endif // !OPENSSL_NO_ENGINE
-++#endif
-+ }
-+
-+ void GetFipsCrypto(const FunctionCallbackInfo<Value>& args) {
-+--- node/src/cares_wrap.h.orig 2023-05-16 06:58:21 UTC
-++++ node/src/cares_wrap.h
-+@@ -23,7 +23,7 @@
-+ # include <netdb.h>
-+ #endif // __POSIX__
-+
-+-# include <ares_nameser.h>
-++# include <arpa/nameser.h>
-+
-+ namespace node {
-+ namespace cares_wrap {
-+--- node/tools/v8_gypfiles/v8.gyp.orig 2023-05-16 06:58:22 UTC
-++++ node/tools/v8_gypfiles/v8.gyp
-+@@ -1091,7 +1091,7 @@
-+ }],
-+ # Platforms that don't have Compare-And-Swap (CAS) support need to link atomic library
-+ # to implement atomic memory access
-+- ['v8_current_cpu in ["mips64", "mips64el", "ppc", "arm", "riscv64", "loong64"]', {
-++ ['v8_current_cpu in ["mips64", "mips64el", "ppc", "riscv64", "loong64"]', {
-+ 'link_settings': {
-+ 'libraries': ['-latomic', ],
-+ },
-diff --git a/node_modules/@yao-pkg/pkg-fetch/patches/node.v20.19.1.cpp.patch.orig b/node_modules/@yao-pkg/pkg-fetch/patches/node.v20.19.1.cpp.patch.orig
-new file mode 100644
-index 0000000..6b9de6d
---- /dev/null
-+++ b/node_modules/@yao-pkg/pkg-fetch/patches/node.v20.19.1.cpp.patch.orig
-@@ -0,0 +1,602 @@
-+diff --git node/common.gypi node/common.gypi
-+index d3c17d47bc..7970af6ea4 100644
-+--- node/common.gypi
-++++ node/common.gypi
-+@@ -184,7 +184,7 @@
-+ ['clang==1', {
-+ 'lto': ' -flto ', # Clang
-+ }, {
-+- 'lto': ' -flto=4 -fuse-linker-plugin -ffat-lto-objects ', # GCC
-++ 'lto': ' -flto=4 -ffat-lto-objects ', # GCC
-+ }],
-+ ],
-+ },
-+diff --git node/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c node/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c
-+index 5e7775f1a5..eeebf67796 100644
-+--- node/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c
-++++ node/deps/ngtcp2/nghttp3/lib/nghttp3_ringbuf.c
-+@@ -33,16 +33,6 @@
-+
-+ #include "nghttp3_macro.h"
-+
-+-#if defined(_MSC_VER) && !defined(__clang__) && (defined(_M_ARM) || defined(_M_ARM64))
-+-unsigned int __popcnt(unsigned int x) {
-+- unsigned int c = 0;
-+- for (; x; ++c) {
-+- x &= x - 1;
-+- }
-+- return c;
-+-}
-+-#endif
-+-
-+ int nghttp3_ringbuf_init(nghttp3_ringbuf *rb, size_t nmemb, size_t size,
-+ const nghttp3_mem *mem) {
-+ if (nmemb) {
-+diff --git node/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c node/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c
-+index 74e488bce7..36ca05e80e 100644
-+--- node/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c
-++++ node/deps/ngtcp2/ngtcp2/lib/ngtcp2_ringbuf.c
-+@@ -31,16 +31,6 @@
-+
-+ #include "ngtcp2_macro.h"
-+
-+-#if defined(_MSC_VER) && !defined(__clang__) && (defined(_M_ARM) || defined(_M_ARM64))
-+-unsigned int __popcnt(unsigned int x) {
-+- unsigned int c = 0;
-+- for (; x; ++c) {
-+- x &= x - 1;
-+- }
-+- return c;
-+-}
-+-#endif
-+-
-+ int ngtcp2_ringbuf_init(ngtcp2_ringbuf *rb, size_t nmemb, size_t size,
-+ const ngtcp2_mem *mem) {
-+ uint8_t *buf = ngtcp2_mem_malloc(mem, nmemb * size);
-+diff --git node/deps/v8/include/v8-initialization.h node/deps/v8/include/v8-initialization.h
-+index d3e35d6ec5..6e9bbe3849 100644
-+--- node/deps/v8/include/v8-initialization.h
-++++ node/deps/v8/include/v8-initialization.h
-+@@ -89,6 +89,10 @@ class V8_EXPORT V8 {
-+ static void SetFlagsFromCommandLine(int* argc, char** argv,
-+ bool remove_flags);
-+
-++ static void EnableCompilationForSourcelessUse();
-++ static void DisableCompilationForSourcelessUse();
-++ static void FixSourcelessScript(Isolate* v8_isolate, Local<UnboundScript> script);
-++
-+ /** Get the version string. */
-+ static const char* GetVersion();
-+
-+diff --git node/deps/v8/src/api/api.cc node/deps/v8/src/api/api.cc
-+index a06394e6c1..154b7a82a8 100644
-+--- node/deps/v8/src/api/api.cc
-++++ node/deps/v8/src/api/api.cc
-+@@ -806,6 +806,28 @@ void V8::SetFlagsFromCommandLine(int* argc, char** argv, bool remove_flags) {
-+ HelpOptions(HelpOptions::kDontExit));
-+ }
-+
-++bool save_lazy;
-++bool save_predictable;
-++
-++void V8::EnableCompilationForSourcelessUse() {
-++ save_lazy = i::v8_flags.lazy;
-++ i::v8_flags.lazy = false;
-++ save_predictable = i::v8_flags.predictable;
-++ i::v8_flags.predictable = true;
-++}
-++
-++void V8::DisableCompilationForSourcelessUse() {
-++ i::v8_flags.lazy = save_lazy;
-++ i::v8_flags.predictable = save_predictable;
-++}
-++
-++void V8::FixSourcelessScript(Isolate* v8_isolate, Local<UnboundScript> unbound_script) {
-++ auto isolate = reinterpret_cast<i::Isolate*>(v8_isolate);
-++ auto function_info = i::Handle<i::SharedFunctionInfo>::cast(Utils::OpenHandle(*unbound_script));
-++ i::Handle<i::Script> script(i::Script::cast(function_info->script()), isolate);
-++ script->set_source(i::ReadOnlyRoots(isolate).undefined_value());
-++}
-++
-+ RegisteredExtension* RegisteredExtension::first_extension_ = nullptr;
-+
-+ RegisteredExtension::RegisteredExtension(std::unique_ptr<Extension> extension)
-+diff --git node/deps/v8/src/codegen/compiler.cc node/deps/v8/src/codegen/compiler.cc
-+index 31c5acceeb..56cad8671f 100644
-+--- node/deps/v8/src/codegen/compiler.cc
-++++ node/deps/v8/src/codegen/compiler.cc
-+@@ -3475,7 +3475,7 @@ MaybeHandle<SharedFunctionInfo> GetSharedFunctionInfoForScriptImpl(
-+ maybe_script = lookup_result.script();
-+ maybe_result = lookup_result.toplevel_sfi();
-+ is_compiled_scope = lookup_result.is_compiled_scope();
-+- if (!maybe_result.is_null()) {
-++ if (!maybe_result.is_null() && source->length()) {
-+ compile_timer.set_hit_isolate_cache();
-+ } else if (can_consume_code_cache) {
-+ compile_timer.set_consuming_code_cache();
-+diff --git node/deps/v8/src/objects/js-function.cc node/deps/v8/src/objects/js-function.cc
-+index 94f7a672a7..57bb3fc7f1 100644
-+--- node/deps/v8/src/objects/js-function.cc
-++++ node/deps/v8/src/objects/js-function.cc
-+@@ -1280,6 +1280,9 @@ Handle<String> JSFunction::ToString(Handle<JSFunction> function) {
-+ Handle<Object> maybe_class_positions = JSReceiver::GetDataProperty(
-+ isolate, function, isolate->factory()->class_positions_symbol());
-+ if (maybe_class_positions->IsClassPositions()) {
-++ if (String::cast(Script::cast(shared_info->script()).source()).IsUndefined(isolate)) {
-++ return isolate->factory()->NewStringFromAsciiChecked("class {}");
-++ }
-+ ClassPositions class_positions =
-+ ClassPositions::cast(*maybe_class_positions);
-+ int start_position = class_positions.start();
-+diff --git node/deps/v8/src/objects/shared-function-info-inl.h node/deps/v8/src/objects/shared-function-info-inl.h
-+index 5621b15d98..722e1d18cb 100644
-+--- node/deps/v8/src/objects/shared-function-info-inl.h
-++++ node/deps/v8/src/objects/shared-function-info-inl.h
-+@@ -635,6 +635,14 @@ bool SharedFunctionInfo::ShouldFlushCode(
-+ }
-+ if (!data.IsBytecodeArray()) return false;
-+
-++ Object script_obj = script();
-++ if (!script_obj.IsUndefined()) {
-++ Script script = Script::cast(script_obj);
-++ if (script.source().IsUndefined()) {
-++ return false;
-++ }
-++ }
-++
-+ if (IsStressFlushingEnabled(code_flush_mode)) return true;
-+
-+ BytecodeArray bytecode = BytecodeArray::cast(data);
-+diff --git node/deps/v8/src/parsing/parsing.cc node/deps/v8/src/parsing/parsing.cc
-+index 8c55a6fb6e..70bf82a57d 100644
-+--- node/deps/v8/src/parsing/parsing.cc
-++++ node/deps/v8/src/parsing/parsing.cc
-+@@ -42,6 +42,7 @@ bool ParseProgram(ParseInfo* info, Handle<Script> script,
-+ Isolate* isolate, ReportStatisticsMode mode) {
-+ DCHECK(info->flags().is_toplevel());
-+ DCHECK_NULL(info->literal());
-++ if (String::cast(script->source()).IsUndefined(isolate)) return false;
-+
-+ VMState<PARSER> state(isolate);
-+
-+@@ -75,6 +76,7 @@ bool ParseFunction(ParseInfo* info, Handle<SharedFunctionInfo> shared_info,
-+
-+ // Create a character stream for the parser.
-+ Handle<Script> script(Script::cast(shared_info->script()), isolate);
-++ if (String::cast(script->source()).IsUndefined(isolate)) return false;
-+ Handle<String> source(String::cast(script->source()), isolate);
-+ std::unique_ptr<Utf16CharacterStream> stream(
-+ ScannerStream::For(isolate, source, shared_info->StartPosition(),
-+diff --git node/deps/v8/src/snapshot/code-serializer.cc node/deps/v8/src/snapshot/code-serializer.cc
-+index c83e8e4581..8cb451e147 100644
-+--- node/deps/v8/src/snapshot/code-serializer.cc
-++++ node/deps/v8/src/snapshot/code-serializer.cc
-+@@ -659,10 +659,6 @@ SerializedCodeSanityCheckResult SerializedCodeData::SanityCheck(
-+
-+ SerializedCodeSanityCheckResult SerializedCodeData::SanityCheckJustSource(
-+ uint32_t expected_source_hash) const {
-+- uint32_t source_hash = GetHeaderValue(kSourceHashOffset);
-+- if (source_hash != expected_source_hash) {
-+- return SerializedCodeSanityCheckResult::kSourceMismatch;
-+- }
-+ return SerializedCodeSanityCheckResult::kSuccess;
-+ }
-+
-+@@ -679,10 +675,6 @@ SerializedCodeSanityCheckResult SerializedCodeData::SanityCheckWithoutSource()
-+ if (version_hash != Version::Hash()) {
-+ return SerializedCodeSanityCheckResult::kVersionMismatch;
-+ }
-+- uint32_t flags_hash = GetHeaderValue(kFlagHashOffset);
-+- if (flags_hash != FlagList::Hash()) {
-+- return SerializedCodeSanityCheckResult::kFlagsMismatch;
-+- }
-+ uint32_t payload_length = GetHeaderValue(kPayloadLengthOffset);
-+ uint32_t max_payload_length = this->size_ - kHeaderSize;
-+ if (payload_length > max_payload_length) {
-+diff --git node/lib/child_process.js node/lib/child_process.js
-+index cc81cb373d..e06da1048a 100644
-+--- node/lib/child_process.js
-++++ node/lib/child_process.js
-+@@ -169,7 +169,7 @@ function fork(modulePath, args = [], options) {
-+ throw new ERR_CHILD_PROCESS_IPC_REQUIRED('options.stdio');
-+ }
-+
-+- return spawn(options.execPath, args, options);
-++ return module.exports.spawn(options.execPath, args, options);
-+ }
-+
-+ function _forkChild(fd, serializationMode) {
-+diff --git node/lib/internal/bootstrap/pkg.js node/lib/internal/bootstrap/pkg.js
-+new file mode 100644
-+index 0000000000..a697294fdf
-+--- /dev/null
-++++ node/lib/internal/bootstrap/pkg.js
-+@@ -0,0 +1,49 @@
-++'use strict';
-++
-++const {
-++ prepareWorkerThreadExecution,
-++ prepareMainThreadExecution
-++} = require('internal/process/pre_execution');
-++
-++if (internalBinding('worker').isMainThread) {
-++ prepareMainThreadExecution(true);
-++} else {
-++ prepareWorkerThreadExecution();
-++}
-++
-++(function () {
-++ var __require__ = require;
-++ var fs = __require__('fs');
-++ var vm = __require__('vm');
-++ function readPrelude (fd) {
-++ var PAYLOAD_POSITION = '// PAYLOAD_POSITION //' | 0;
-++ var PAYLOAD_SIZE = '// PAYLOAD_SIZE //' | 0;
-++ var PRELUDE_POSITION = '// PRELUDE_POSITION //' | 0;
-++ var PRELUDE_SIZE = '// PRELUDE_SIZE //' | 0;
-++ if (!PRELUDE_POSITION) {
-++ // no prelude - remove entrypoint from argv[1]
-++ process.argv.splice(1, 1);
-++ return { undoPatch: true };
-++ }
-++ var prelude = Buffer.alloc(PRELUDE_SIZE);
-++ var read = fs.readSync(fd, prelude, 0, PRELUDE_SIZE, PRELUDE_POSITION);
-++ if (read !== PRELUDE_SIZE) {
-++ console.error('Pkg: Error reading from file.');
-++ process.exit(1);
-++ }
-++ var s = new vm.Script(prelude, { filename: 'pkg/prelude/bootstrap.js' });
-++ var fn = s.runInThisContext();
-++ return fn(process, __require__,
-++ console, fd, PAYLOAD_POSITION, PAYLOAD_SIZE);
-++ }
-++ (function () {
-++ var fd = fs.openSync(process.execPath, 'r');
-++ var result = readPrelude(fd);
-++ if (result && result.undoPatch) {
-++ var bindingFs = process.binding('fs');
-++ fs.internalModuleStat = bindingFs.internalModuleStat;
-++ fs.internalModuleReadJSON = bindingFs.internalModuleReadJSON;
-++ fs.closeSync(fd);
-++ }
-++ }());
-++}());
-+diff --git node/lib/internal/modules/cjs/loader.js node/lib/internal/modules/cjs/loader.js
-+index ebccdb2825..178299c752 100644
-+--- node/lib/internal/modules/cjs/loader.js
-++++ node/lib/internal/modules/cjs/loader.js
-+@@ -141,7 +141,7 @@ const {
-+ const assert = require('internal/assert');
-+ const fs = require('fs');
-+ const path = require('path');
-+-const { internalModuleStat } = internalBinding('fs');
-++const internalModuleStat = function (f) { return require('fs').internalModuleStat(f); }
-+ const { safeGetenv } = internalBinding('credentials');
-+ const {
-+ privateSymbols: {
-+diff --git node/lib/internal/modules/package_json_reader.js node/lib/internal/modules/package_json_reader.js
-+index 88c079d10d..a7eaca0574 100644
-+--- node/lib/internal/modules/package_json_reader.js
-++++ node/lib/internal/modules/package_json_reader.js
-+@@ -12,7 +12,7 @@ const {
-+ const {
-+ ERR_INVALID_PACKAGE_CONFIG,
-+ } = require('internal/errors').codes;
-+-const { internalModuleReadJSON } = internalBinding('fs');
-++const internalModuleReadJSON = function (f) { return require('fs').internalModuleReadJSON(f); }
-+ const { resolve, sep, toNamespacedPath } = require('path');
-+ const permission = require('internal/process/permission');
-+ const { kEmptyObject } = require('internal/util');
-+diff --git node/lib/internal/process/pre_execution.js node/lib/internal/process/pre_execution.js
-+index 0bbabb80c2..5dd097b69e 100644
-+--- node/lib/internal/process/pre_execution.js
-++++ node/lib/internal/process/pre_execution.js
-+@@ -50,7 +50,11 @@ const {
-+ },
-+ } = require('internal/v8/startup_snapshot');
-+
-++let _alreadyPrepared = false;
-++
-+ function prepareMainThreadExecution(expandArgv1 = false, initializeModules = true) {
-++ if (_alreadyPrepared === true) return;
-++ _alreadyPrepared = true;
-+ return prepareExecution({
-+ expandArgv1,
-+ initializeModules,
-+@@ -243,7 +247,12 @@ function patchProcessObject(expandArgv1) {
-+ let mainEntry;
-+ // If requested, update process.argv[1] to replace whatever the user provided with the resolved absolute file path of
-+ // the entry point.
-+- if (expandArgv1 && process.argv[1] && process.argv[1][0] !== '-') {
-++ if (
-++ expandArgv1 &&
-++ process.argv[1] &&
-++ process.argv[1][0] !== '-' &&
-++ process.argv[1] !== 'PKG_DUMMY_ENTRYPOINT'
-++ ) {
-+ // Expand process.argv[1] into a full path.
-+ const path = require('path');
-+ try {
-+@@ -739,6 +748,7 @@ function loadPreloadModules() {
-+ // For user code, we preload modules if `-r` is passed
-+ const preloadModules = getOptionValue('--require');
-+ if (preloadModules && preloadModules.length > 0) {
-++ assert(false, '--require is not supported');
-+ const {
-+ Module: {
-+ _preloadModules,
-+diff --git node/lib/vm.js node/lib/vm.js
-+index a12e932d8d..931a996330 100644
-+--- node/lib/vm.js
-++++ node/lib/vm.js
-+@@ -98,6 +98,7 @@ class Script extends ContextifyScript {
-+ produceCachedData = false,
-+ importModuleDynamically,
-+ [kParsingContext]: parsingContext,
-++ sourceless = false,
-+ } = options;
-+
-+ validateString(filename, 'options.filename');
-+@@ -121,7 +122,8 @@ class Script extends ContextifyScript {
-+ cachedData,
-+ produceCachedData,
-+ parsingContext,
-+- hostDefinedOptionId);
-++ hostDefinedOptionId,
-++ sourceless);
-+ } catch (e) {
-+ throw e; /* node-do-not-add-exception-line */
-+ }
-+diff --git node/src/inspector_agent.cc node/src/inspector_agent.cc
-+index bb39a0cb42..5fa6cb65cc 100644
-+--- node/src/inspector_agent.cc
-++++ node/src/inspector_agent.cc
-+@@ -766,11 +766,6 @@ bool Agent::Start(const std::string& path,
-+ StartIoThreadAsyncCallback));
-+ uv_unref(reinterpret_cast<uv_handle_t*>(&start_io_thread_async));
-+ start_io_thread_async.data = this;
-+- if (parent_env_->should_start_debug_signal_handler()) {
-+- // Ignore failure, SIGUSR1 won't work, but that should not block node
-+- // start.
-+- StartDebugSignalHandler();
-+- }
-+
-+ parent_env_->AddCleanupHook([](void* data) {
-+ Environment* env = static_cast<Environment*>(data);
-+diff --git node/src/node.cc node/src/node.cc
-+index 4ad2c8b804..ab6174fab6 100644
-+--- node/src/node.cc
-++++ node/src/node.cc
-+@@ -389,6 +389,8 @@ MaybeLocal<Value> StartExecution(Environment* env, StartExecutionCallback cb) {
-+ return env->RunSnapshotDeserializeMain();
-+ }
-+
-++ StartExecution(env, "internal/bootstrap/pkg");
-++
-+ if (env->worker_context() != nullptr) {
-+ return StartExecution(env, "internal/main/worker_thread");
-+ }
-+@@ -613,14 +615,6 @@ static void PlatformInit(ProcessInitializationFlags::Flags flags) {
-+ }
-+
-+ if (!(flags & ProcessInitializationFlags::kNoDefaultSignalHandling)) {
-+-#if HAVE_INSPECTOR
-+- sigset_t sigmask;
-+- sigemptyset(&sigmask);
-+- sigaddset(&sigmask, SIGUSR1);
-+- const int err = pthread_sigmask(SIG_SETMASK, &sigmask, nullptr);
-+- CHECK_EQ(err, 0);
-+-#endif // HAVE_INSPECTOR
-+-
-+ ResetSignalHandlers();
-+ }
-+
-+diff --git node/src/node_contextify.cc node/src/node_contextify.cc
-+index 7f82bca746..62705f04c5 100644
-+--- node/src/node_contextify.cc
-++++ node/src/node_contextify.cc
-+@@ -79,6 +79,7 @@ using v8::String;
-+ using v8::Symbol;
-+ using v8::Uint32;
-+ using v8::UnboundScript;
-++using v8::V8;
-+ using v8::Value;
-+ using v8::WeakCallbackInfo;
-+
-+@@ -817,13 +818,14 @@ void ContextifyScript::New(const FunctionCallbackInfo<Value>& args) {
-+ Local<ArrayBufferView> cached_data_buf;
-+ bool produce_cached_data = false;
-+ Local<Context> parsing_context = context;
-++ bool sourceless = false;
-+
-+ Local<Symbol> id_symbol;
-+ if (argc > 2) {
-+ // new ContextifyScript(code, filename, lineOffset, columnOffset,
-+ // cachedData, produceCachedData, parsingContext,
-+- // hostDefinedOptionId)
-+- CHECK_EQ(argc, 8);
-++ // hostDefinedOptionId, sourceless)
-++ CHECK_GE(argc, 8);
-+ CHECK(args[2]->IsNumber());
-+ line_offset = args[2].As<Int32>()->Value();
-+ CHECK(args[3]->IsNumber());
-+@@ -844,6 +846,10 @@ void ContextifyScript::New(const FunctionCallbackInfo<Value>& args) {
-+ }
-+ CHECK(args[7]->IsSymbol());
-+ id_symbol = args[7].As<Symbol>();
-++ if (argc > 8) {
-++ CHECK(args[8]->IsBoolean());
-++ sourceless = args[8]->IsTrue();
-++ }
-+ }
-+
-+ ContextifyScript* contextify_script =
-+@@ -892,6 +898,10 @@ void ContextifyScript::New(const FunctionCallbackInfo<Value>& args) {
-+ ShouldNotAbortOnUncaughtScope no_abort_scope(env);
-+ Context::Scope scope(parsing_context);
-+
-++ if (sourceless && produce_cached_data) {
-++ V8::EnableCompilationForSourcelessUse();
-++ }
-++
-+ MaybeLocal<UnboundScript> maybe_v8_script =
-+ ScriptCompiler::CompileUnboundScript(isolate, &source, compile_options);
-+
-+@@ -906,6 +916,11 @@ void ContextifyScript::New(const FunctionCallbackInfo<Value>& args) {
-+ return;
-+ }
-+
-++ if (sourceless && compile_options == ScriptCompiler::kConsumeCodeCache) {
-++ if (!source.GetCachedData()->rejected) {
-++ V8::FixSourcelessScript(env->isolate(), v8_script);
-++ }
-++ }
-+ contextify_script->script_.Reset(isolate, v8_script);
-+ contextify_script->script_.SetWeak();
-+ contextify_script->object()->SetInternalFieldForNodeCore(kUnboundScriptSlot,
-+@@ -939,6 +954,10 @@ void ContextifyScript::New(const FunctionCallbackInfo<Value>& args) {
-+ .IsNothing())
-+ return;
-+
-++ if (sourceless && produce_cached_data) {
-++ V8::DisableCompilationForSourcelessUse();
-++ }
-++
-+ TRACE_EVENT_END0(TRACING_CATEGORY_NODE2(vm, script), "ContextifyScript::New");
-+ }
-+
-+diff --git node/src/node_main.cc node/src/node_main.cc
-+index f66099a557..4048f6bd93 100644
-+--- node/src/node_main.cc
-++++ node/src/node_main.cc
-+@@ -22,6 +22,8 @@
-+ #include "node.h"
-+ #include <cstdio>
-+
-++int reorder(int argc, char** argv);
-++
-+ #ifdef _WIN32
-+ #include <windows.h>
-+ #include <VersionHelpers.h>
-+@@ -88,12 +90,95 @@ int wmain(int argc, wchar_t* wargv[]) {
-+ }
-+ argv[argc] = nullptr;
-+ // Now that conversion is done, we can finally start.
-+- return node::Start(argc, argv);
-++ return reorder(argc, argv);
-+ }
-+ #else
-+ // UNIX
-+
-+ int main(int argc, char* argv[]) {
-++ return reorder(argc, argv);
-++}
-++#endif
-++
-++#include <string.h>
-++
-++int strlen2 (char* s) {
-++ int len = 0;
-++ while (*s) {
-++ len += 1;
-++ s += 1;
-++ }
-++ return len;
-++}
-++
-++bool should_set_dummy() {
-++#ifdef _WIN32
-++ #define MAX_ENV_LENGTH 32767
-++ wchar_t execpath_env[MAX_ENV_LENGTH];
-++ DWORD result = GetEnvironmentVariableW(L"PKG_EXECPATH", execpath_env, MAX_ENV_LENGTH);
-++ if (result == 0 && GetLastError() != ERROR_SUCCESS) return true;
-++ return wcscmp(execpath_env, L"PKG_INVOKE_NODEJS") != 0;
-++#else
-++ const char* execpath_env = getenv("PKG_EXECPATH");
-++ if (!execpath_env) return true;
-++ return strcmp(execpath_env, "PKG_INVOKE_NODEJS") != 0;
-++#endif
-++}
-++
-++// for uv_setup_args
-++int adjacent(int argc, char** argv) {
-++ size_t size = 0;
-++ for (int i = 0; i < argc; i++) {
-++ size += strlen(argv[i]) + 1;
-++ }
-++ char* args = new char[size];
-++ size_t pos = 0;
-++ for (int i = 0; i < argc; i++) {
-++ memcpy(&args[pos], argv[i], strlen(argv[i]) + 1);
-++ argv[i] = &args[pos];
-++ pos += strlen(argv[i]) + 1;
-++ }
-+ return node::Start(argc, argv);
-+ }
-++
-++volatile char* BAKERY = (volatile char*) "\0// BAKERY // BAKERY " \
-++ "// BAKERY // BAKERY // BAKERY // BAKERY // BAKERY // BAKERY " \
-++ "// BAKERY // BAKERY // BAKERY // BAKERY // BAKERY // BAKERY " \
-++ "// BAKERY // BAKERY // BAKERY // BAKERY // BAKERY // BAKERY ";
-++
-++#ifdef __clang__
-++__attribute__((optnone))
-++#elif defined(__GNUC__)
-++__attribute__((optimize(0)))
-+ #endif
-++
-++int load_baked(char** nargv) {
-++ int c = 1;
-++
-++ char* bakery = (char*) BAKERY;
-++ while (true) {
-++ size_t width = strlen2(bakery);
-++ if (width == 0) break;
-++ nargv[c++] = bakery;
-++ bakery += width + 1;
-++ }
-++
-++ return c;
-++}
-++
-++int reorder(int argc, char** argv) {
-++ char** nargv = new char*[argc + 64];
-++
-++ nargv[0] = argv[0];
-++ int c = load_baked(nargv);
-++
-++ if (should_set_dummy()) {
-++ nargv[c++] = (char*) "PKG_DUMMY_ENTRYPOINT";
-++ }
-++
-++ for (int i = 1; i < argc; i++) {
-++ nargv[c++] = argv[i];
-++ }
-++
-++ return adjacent(c, nargv);
-++}
-+diff --git node/src/node_options.cc node/src/node_options.cc
-+index 9d5accc3eb..8e3c304a13 100644
-+--- node/src/node_options.cc
-++++ node/src/node_options.cc
-+@@ -316,6 +316,7 @@ void Parse(
-+ // TODO(addaleax): Make that unnecessary.
-+
-+ DebugOptionsParser::DebugOptionsParser() {
-++ return;
-+ #ifndef DISABLE_SINGLE_EXECUTABLE_APPLICATION
-+ if (sea::IsSingleExecutable()) return;
-+ #endif
-+diff --git node/tools/icu/icu-generic.gyp node/tools/icu/icu-generic.gyp
-+index 2655b9e694..1d951571c7 100644
-+--- node/tools/icu/icu-generic.gyp
-++++ node/tools/icu/icu-generic.gyp
-+@@ -52,7 +52,7 @@
-+ 'conditions': [
-+ [ 'os_posix == 1 and OS != "mac" and OS != "ios"', {
-+ 'cflags': [ '-Wno-deprecated-declarations', '-Wno-strict-aliasing' ],
-+- 'cflags_cc': [ '-frtti' ],
-++ 'cflags_cc': [ '-frtti', '-fno-lto' ],
-+ 'cflags_cc!': [ '-fno-rtti' ],
-+ }],
-+ [ 'OS == "mac" or OS == "ios"', {
diff --git a/www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.4.cpp.patch b/www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.4.cpp.patch
new file mode 100644
index 000000000000..0940e6667edd
--- /dev/null
+++ b/www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.4.cpp.patch
@@ -0,0 +1,192 @@
+https://github.com/yao-pkg/pkg-fetch/raw/refs/tags/v3.5.24/patches/node.v20.19.4.cpp.patch
++ local FreeBSD patches
+
+--- yao-pkg/node_modules/@yao-pkg/pkg-fetch/patches/node.v20.19.4.cpp.patch
++++ yao-pkg/node_modules/@yao-pkg/pkg-fetch/patches/node.v20.19.4.cpp.patch
+@@ -600,3 +600,186 @@ index 2655b9e694..1d951571c7 100644
+ 'cflags_cc!': [ '-fno-rtti' ],
+ }],
+ [ 'OS == "mac" or OS == "ios"', {
++--- node/common.gypi.orig 2023-07-20 18:27:37 UTC
+++++ node/common.gypi
++@@ -426,7 +426,7 @@
++ 'ldflags': [ '-m32' ],
++ }],
++ [ 'host_arch=="ppc64" and OS not in "aix os400"', {
++- 'cflags': [ '-m64', '-mminimal-toc' ],
+++ 'cflags': [ '-m64' ],
++ 'ldflags': [ '-m64' ],
++ }],
++ [ 'host_arch=="s390x" and OS=="linux"', {
++@@ -450,7 +450,7 @@
++ 'ldflags': [ '-m32' ],
++ }],
++ [ 'target_arch=="ppc64" and OS not in "aix os400"', {
++- 'cflags': [ '-m64', '-mminimal-toc' ],
+++ 'cflags': [ '-m64' ],
++ 'ldflags': [ '-m64' ],
++ }],
++ [ 'target_arch=="s390x" and OS=="linux"', {
++--- node/deps/openssl/config/archs/linux-elf/no-asm/openssl-cl.gypi.orig 2023-05-16 06:58:19 UTC
+++++ node/deps/openssl/config/archs/linux-elf/no-asm/openssl-cl.gypi
++@@ -13,7 +13,7 @@
++ '-Wall -O3 -fomit-frame-pointer',
++ ],
++ 'openssl_ex_libs_linux-elf': [
++- '-ldl -pthread',
+++ '-pthread',
++ ],
++ 'openssl_cli_srcs_linux-elf': [
++ 'openssl/apps/lib/cmp_mock_srv.c',
++--- node/deps/openssl/config/archs/linux-elf/no-asm/openssl.gypi.orig 2023-05-16 06:58:19 UTC
+++++ node/deps/openssl/config/archs/linux-elf/no-asm/openssl.gypi
++@@ -977,7 +977,7 @@
++ '-Wall -O3 -fomit-frame-pointer',
++ ],
++ 'openssl_ex_libs_linux-elf': [
++- '-ldl -pthread',
+++ '-pthread',
++ ],
++ },
++ 'include_dirs': [
++--- node/deps/openssl/openssl-cl_no_asm.gypi.orig 2023-11-22 10:13:54 UTC
+++++ node/deps/openssl/openssl-cl_no_asm.gypi
++@@ -1,4 +1,5 @@
++ {
+++ 'defines': ['OPENSSL_NO_ASM'],
++ 'conditions': [
++ ['target_arch=="ppc64" and OS in ("aix", "os400")', {
++ 'includes': ['config/archs/aix64-gcc-as/no-asm/openssl-cl.gypi'],
++@@ -45,7 +46,7 @@
++ 'includes': ['config/archs/linux64-loongarch64/no-asm/openssl-cl.gypi'],
++ }, {
++ # Other architectures don't use assembly
++- 'includes': ['config/archs/linux-x86_64/no-asm/openssl-cl.gypi'],
+++ 'includes': ['config/archs/linux-elf/no-asm/openssl-cl.gypi'],
++ }],
++ ],
++ }
++--- node/deps/openssl/openssl_no_asm.gypi.orig 2023-05-16 06:58:20 UTC
+++++ node/deps/openssl/openssl_no_asm.gypi
++@@ -44,7 +44,7 @@
++ 'includes': ['config/archs/linux64-riscv64/no-asm/openssl.gypi'],
++ }, {
++ # Other architectures don't use assembly
++- 'includes': ['config/archs/linux-x86_64/no-asm/openssl.gypi'],
+++ 'includes': ['config/archs/linux-elf/no-asm/openssl.gypi'],
++ }],
++ ],
++ }
++--- node/deps/v8/src/base/platform/platform-freebsd.cc.orig 2023-05-16 06:58:20 UTC
+++++ node/deps/v8/src/base/platform/platform-freebsd.cc
++@@ -82,8 +82,8 @@ std::vector<OS::SharedLibraryAddress> OS::GetSharedLib
++ lib_name = std::string(path);
++ }
++ result.push_back(SharedLibraryAddress(
++- lib_name, reinterpret_cast<uintptr_t>(map->kve_start),
++- reinterpret_cast<uintptr_t>(map->kve_end)));
+++ lib_name, static_cast<uintptr_t>(map->kve_start),
+++ static_cast<uintptr_t>(map->kve_end)));
++ }
++
++ start += ssize;
++--- node/deps/v8/src/codegen/arm/cpu-arm.cc.orig 2023-05-16 06:58:20 UTC
+++++ node/deps/v8/src/codegen/arm/cpu-arm.cc
++@@ -2,12 +2,15 @@
++ // Use of this source code is governed by a BSD-style license that can be
++ // found in the LICENSE file.
++
+++#include "include/v8config.h"
+++
++ // CPU specific code for arm independent of OS goes here.
++ #ifdef __arm__
++ #ifdef __QNXNTO__
++ #include <sys/mman.h> // for cache flushing.
++ #undef MAP_TYPE
++ #elif V8_OS_FREEBSD
+++#include <sys/cdefs.h>
++ #include <machine/sysarch.h> // for cache flushing
++ #include <sys/types.h>
++ #elif V8_OS_STARBOARD
++--- node/deps/v8/src/codegen/ppc/constants-ppc.h.orig 2023-05-16 06:58:20 UTC
+++++ node/deps/v8/src/codegen/ppc/constants-ppc.h
++@@ -36,7 +36,7 @@
++ #endif
++
++ #if !(V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64) || !V8_TARGET_ARCH_PPC64 || \
++- V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2)
+++ (defined(_CALL_ELF) && _CALL_ELF == 2)
++ #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 1
++ #else
++ #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 0
++@@ -44,7 +44,7 @@
++
++ #if !(V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64) || \
++ (V8_TARGET_ARCH_PPC64 && \
++- (V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2)))
+++ (defined(_CALL_ELF) && _CALL_ELF == 2))
++ #define ABI_CALL_VIA_IP 1
++ #else
++ #define ABI_CALL_VIA_IP 0
++--- node/deps/v8/src/libsampler/sampler.cc.orig 2023-05-16 06:58:20 UTC
+++++ node/deps/v8/src/libsampler/sampler.cc
++@@ -511,6 +511,10 @@ void SignalHandler::FillRegisterState(void* context, R
++ state->pc = reinterpret_cast<void*>(mcontext.__gregs[_REG_PC]);
++ state->sp = reinterpret_cast<void*>(mcontext.__gregs[_REG_SP]);
++ state->fp = reinterpret_cast<void*>(mcontext.__gregs[_REG_FP]);
+++#elif V8_TARGET_ARCH_PPC64
+++ state->pc = reinterpret_cast<void*>(mcontext.mc_srr0);
+++ state->sp = reinterpret_cast<void*>(mcontext.mc_frame[1]);
+++ state->fp = reinterpret_cast<void*>(mcontext.mc_frame[31]);
++ #endif // V8_HOST_ARCH_*
++ #elif V8_OS_NETBSD
++ #if V8_HOST_ARCH_IA32
++--- node.gypi.orig 2023-05-16 06:58:21 UTC
+++++ node.gypi
++@@ -349,6 +349,9 @@
++ [ 'node_use_openssl=="true"', {
++ 'defines': [ 'HAVE_OPENSSL=1' ],
++ 'conditions': [
+++ ['openssl_no_asm==1', {
+++ 'defines': [ 'OPENSSL_NO_ASM' ],
+++ }],
++ [ 'node_shared_openssl=="false"', {
++ 'defines': [ 'OPENSSL_API_COMPAT=0x10100000L', ],
++ 'dependencies': [
++--- node/src/crypto/crypto_util.cc.orig 2023-05-16 06:58:21 UTC
+++++ node/src/crypto/crypto_util.cc
++@@ -205,10 +205,12 @@ void InitCryptoOnce() {
++ // No-op with OPENSSL_NO_COMP builds of OpenSSL.
++ sk_SSL_COMP_zero(SSL_COMP_get_compression_methods());
++
+++#if OPENSSL_VERSION_MAJOR < 3
++ #ifndef OPENSSL_NO_ENGINE
++ ERR_load_ENGINE_strings();
++ ENGINE_load_builtin_engines();
++ #endif // !OPENSSL_NO_ENGINE
+++#endif
++ }
++
++ void GetFipsCrypto(const FunctionCallbackInfo<Value>& args) {
++--- node/src/cares_wrap.h.orig 2023-05-16 06:58:21 UTC
+++++ node/src/cares_wrap.h
++@@ -23,7 +23,7 @@
++ # include <netdb.h>
++ #endif // __POSIX__
++
++-# include <ares_nameser.h>
+++# include <arpa/nameser.h>
++
++ namespace node {
++ namespace cares_wrap {
++--- node/tools/v8_gypfiles/v8.gyp.orig 2023-05-16 06:58:22 UTC
+++++ node/tools/v8_gypfiles/v8.gyp
++@@ -1091,7 +1091,7 @@
++ }],
++ # Platforms that don't have Compare-And-Swap (CAS) support need to link atomic library
++ # to implement atomic memory access
++- ['v8_current_cpu in ["mips64", "mips64el", "ppc", "arm", "riscv64", "loong64"]', {
+++ ['v8_current_cpu in ["mips64", "mips64el", "ppc", "riscv64", "loong64"]', {
++ 'link_settings': {
++ 'libraries': ['-latomic', ],
++ },
diff --git a/www/onlyoffice-documentserver/files/package-lock.json b/www/onlyoffice-documentserver/files/package-lock.json
index 3894802eb620..59035f286384 100644
--- a/www/onlyoffice-documentserver/files/package-lock.json
+++ b/www/onlyoffice-documentserver/files/package-lock.json
@@ -5,7 +5,7 @@
"packages": {
"": {
"dependencies": {
- "@yao-pkg/pkg": "^6.5.1"
+ "@yao-pkg/pkg": "^6.6.0"
}
},
"node_modules/@babel/generator": {
@@ -118,15 +118,15 @@
}
},
"node_modules/@yao-pkg/pkg": {
- "version": "6.5.1",
- "resolved": "https://registry.npmjs.org/@yao-pkg/pkg/-/pkg-6.5.1.tgz",
- "integrity": "sha512-z6XlySYfnqfm1AfVlBN8A3yeAQniIwL7TKQfDCGsswYSVYLt2snbRefQYsfQQ3pw5lVXrZdLqgTjzaqID9IkWA==",
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@yao-pkg/pkg/-/pkg-6.6.0.tgz",
+ "integrity": "sha512-3/oiaSm7fS0Fc7dzp22r9B7vFaguGhO9vERgEReRYj2EUzdi5ssyYhe1uYJG4ec/dmo2GG6RRHOUAT8savl79Q==",
"license": "MIT",
"dependencies": {
"@babel/generator": "^7.23.0",
"@babel/parser": "^7.23.0",
"@babel/types": "^7.23.0",
- "@yao-pkg/pkg-fetch": "3.5.23",
+ "@yao-pkg/pkg-fetch": "3.5.24",
"into-stream": "^6.0.0",
"minimist": "^1.2.6",
"multistream": "^4.1.0",
@@ -147,9 +147,9 @@
}
},
"node_modules/@yao-pkg/pkg-fetch": {
- "version": "3.5.23",
- "resolved": "https://registry.npmjs.org/@yao-pkg/pkg-fetch/-/pkg-fetch-3.5.23.tgz",
- "integrity": "sha512-rn45sqVQSkcJNSBdTnYze3n+kyub4CN8aiWYlPgA9yp9FZeEF+BlpL68kSIm3HaVuANniF+7RBMH5DkC4zlHZA==",
+ "version": "3.5.24",
+ "resolved": "https://registry.npmjs.org/@yao-pkg/pkg-fetch/-/pkg-fetch-3.5.24.tgz",
+ "integrity": "sha512-FPESCH1uXCYui6jeDp2aayWuFHR39w+uU1r88nI6JWRvPYOU64cHPUV/p6GSFoQdpna7ip92HnrZKbBC60l0gA==",
"license": "MIT",
"dependencies": {
"https-proxy-agent": "^5.0.0",
diff --git a/www/onlyoffice-documentserver/files/package.json b/www/onlyoffice-documentserver/files/package.json
index 942f29ed7251..9251e320859a 100644
--- a/www/onlyoffice-documentserver/files/package.json
+++ b/www/onlyoffice-documentserver/files/package.json
@@ -1,5 +1,5 @@
{
"dependencies": {
- "@yao-pkg/pkg": "^6.5.1"
+ "@yao-pkg/pkg": "^6.6.0"
}
}
diff --git a/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_html2.py b/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_html2.py
index df8c9dc3c87b..f7392a57031b 100644
--- a/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_html2.py
+++ b/www/onlyoffice-documentserver/files/patch-build__tools_scripts_core__common_modules_html2.py
@@ -5,7 +5,7 @@
old_cur_dir = os.getcwd()
- print("[fetch]: html")
-+ print("[path & build]: html")
++ print("[patch & build]: html")
base_dir = base.get_script_dir() + "/../../core/Common/3dParty/html"
diff --git a/www/onlyoffice-documentserver/files/patch-core_Apple_StringDocumentHandler.hxx b/www/onlyoffice-documentserver/files/patch-core_Apple_StringDocumentHandler.hxx
index 2ba2e7398244..0d72b10783f3 100644
--- a/www/onlyoffice-documentserver/files/patch-core_Apple_StringDocumentHandler.hxx
+++ b/www/onlyoffice-documentserver/files/patch-core_Apple_StringDocumentHandler.hxx
@@ -1,6 +1,6 @@
---- core/Apple/StringDocumentHandler.hxx.orig 2025-03-08 17:38:58.104116000 +0100
-+++ core/Apple/StringDocumentHandler.hxx 2025-03-08 16:45:03.144938000 +0100
-@@ -0,0 +1,51 @@
+--- core/Apple/StringDocumentHandler.hxx.orig 2025-07-21 00:30:34.163412000 +0000
++++ core/Apple/StringDocumentHandler.hxx 2025-07-21 03:02:42.802399000 +0000
+@@ -0,0 +1,154 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
+/* writerperfect
+ * Version: MPL 2.0 / LGPLv2.1+
@@ -52,3 +52,106 @@
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
++/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
++/* writerperfect
++ * Version: MPL 2.0 / LGPLv2.1+
++ *
++ * This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
++ *
++ * Major Contributor(s):
++ * Copyright (C) 2002-2004 William Lachance (wrlach@gmail.com)
++ * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
++ *
++ * For minor contributions see the git repository.
++ *
++ * Alternatively, the contents of this file may be used under the terms
++ * of the GNU Lesser General Public License Version 2.1 or later
++ * (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
++ * applicable instead of those above.
++ *
++ * For further information visit http://libwpd.sourceforge.net
++ */
++
++#include <string.h>
++
++
++StringDocumentHandler::StringDocumentHandler() : m_data(""), m_isTagOpened(false), m_openedTagName("")
++{
++ m_data.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
++}
++
++void StringDocumentHandler::endDocument()
++{
++ if (!m_isTagOpened) return;
++ m_data.append(">");
++ m_isTagOpened = false;
++}
++
++void StringDocumentHandler::startElement(const char *psName, const librevenge::RVNGPropertyList &xPropList)
++{
++ if (m_isTagOpened)
++ {
++ m_data.append(">");
++ m_isTagOpened = false;
++ }
++ m_data.append("<");
++ m_data.append(psName);
++ librevenge::RVNGPropertyList::Iter i(xPropList);
++ for (i.rewind(); i.next();)
++ {
++ // filter out librevenge elements
++ if (!strncmp(i.key(), "librevenge:", 11)) continue;
++
++ m_data.append(" ");
++ m_data.append(i.key());
++ m_data.append("=\"");
++ if (i()->getStr().len()>0)
++ m_data.append(i()->getStr().cstr());
++ m_data.append("\"");
++ }
++ m_isTagOpened = true;
++ m_openedTagName.sprintf("%s", psName);
++}
++void StringDocumentHandler::endElement(const char *psName)
++{
++ if (m_isTagOpened)
++ {
++ if (m_openedTagName == psName)
++ {
++ m_data.append("/>");
++ m_isTagOpened = false;
++ }
++ else // should not happen, but handle it
++ {
++ m_data.append(">");
++ m_data.append("</");
++ m_data.append(psName);
++ m_data.append(">");
++ m_isTagOpened = false;
++ }
++ }
++ else
++ {
++ m_data.append("</");
++ m_data.append(psName);
++ m_data.append(">");
++ m_isTagOpened = false;
++ }
++}
++
++void StringDocumentHandler::characters(const librevenge::RVNGString &sCharacters)
++{
++ if (m_isTagOpened)
++ {
++ m_data.append(">");
++ m_isTagOpened = false;
++ }
++ librevenge::RVNGString sEscapedCharacters;
++ sEscapedCharacters.appendEscapedXML(sCharacters);
++ if (sEscapedCharacters.len() > 0)
++ m_data.append(sEscapedCharacters.cstr());
++}
++
++/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */
diff --git a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_html_fetch.py b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_html_fetch.py
index 6cc05be7d649..bc0ee48515bc 100644
--- a/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_html_fetch.py
+++ b/www/onlyoffice-documentserver/files/patch-core_Common_3dParty_html_fetch.py
@@ -14,9 +14,10 @@
# fix gumbo
base.replaceInFile(base_directory + "/gumbo-parser/src/tag.c", "isspace(*c)", "isspace((unsigned char)*c)")
- if not base.is_dir("katana-parser"):
+-if not base.is_dir("katana-parser"):
- base.cmd("git", ["clone", "https://github.com/jasenhuang/katana-parser.git"])
- base.cmd_in_dir("katana-parser", "git", ["checkout", "be6df458d4540eee375c513958dcb862a391cdd1"])
++if base.is_dir("katana-parser"):
+# base.cmd("git", ["clone", "https://github.com/jasenhuang/katana-parser.git"])
+# base.cmd_in_dir("katana-parser", "git", ["checkout", "be6df458d4540eee375c513958dcb862a391cdd1"])
diff --git a/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-update-securelink.sh.m4 b/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-update-securelink.sh.m4
index 231a6247a51a..6d40dfa72b4c 100644
--- a/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-update-securelink.sh.m4
+++ b/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_bin_documentserver-update-securelink.sh.m4
@@ -46,7 +46,8 @@
+LOCAL_CONF=%%LOCALBASE%%/etc/M4_DS_PREFIX/local.json
+JSON="%%LOCALBASE%%/www/M4_DS_PREFIX/npm/json -q -f ${LOCAL_CONF}"
- SECURE_LINK_SECRET=${SECURE_LINK_SECRET:-$(tr -dc A-Za-z0-9 </dev/urandom | head -c 20)}
+-SECURE_LINK_SECRET=${SECURE_LINK_SECRET:-$(tr -dc A-Za-z0-9 </dev/urandom | head -c 20)}
++SECURE_LINK_SECRET=${SECURE_LINK_SECRET:-$(pwgen -s 20)}
-sed "s,\(set \+\$secure_link_secret\).*,\1 "${SECURE_LINK_SECRET}";," -i ${NGINX_CONF}
-${JSON} -I -e 'this.storage={fs: {secretString: "'${SECURE_LINK_SECRET}'" }}' && chown ds:ds $LOCAL_CONF
diff --git a/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_nginx_includes_ds-mime.types.conf b/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_nginx_includes_ds-mime.types.conf
index c8a9eedfa80e..6386c904077e 100644
--- a/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_nginx_includes_ds-mime.types.conf
+++ b/www/onlyoffice-documentserver/files/patch-document-server-package_common_documentserver_nginx_includes_ds-mime.types.conf
@@ -1,8 +1,9 @@
https://raw.githubusercontent.com/nginx/nginx/master/conf/mime.types
++ IWork filetypes
--- document-server-package/common/documentserver/nginx/includes/ds-mime.types.conf.orig 2022-05-15 11:09:53.906141000 +0200
+++ document-server-package/common/documentserver/nginx/includes/ds-mime.types.conf 2022-05-15 11:10:02.802873000 +0200
-@@ -0,0 +1,99 @@
+@@ -0,0 +1,102 @@
+
+types {
+ text/html html htm shtml;
@@ -40,6 +41,9 @@ https://raw.githubusercontent.com/nginx/nginx/master/conf/mime.types
+ application/pdf pdf;
+ application/postscript ps eps ai;
+ application/rtf rtf;
++ application/vnd.apple.keynote key kth;
++ application/vnd.apple.pages pages template;
++ application/vnd.apple.numbers numbers nmbtemplate;
+ application/vnd.apple.mpegurl m3u8;
+ application/vnd.google-earth.kml+xml kml;
+ application/vnd.google-earth.kmz kmz;
diff --git a/www/onlyoffice-documentserver/pkg-plist b/www/onlyoffice-documentserver/pkg-plist
index 8c1f22b765b3..4c96e63cd9f7 100644
--- a/www/onlyoffice-documentserver/pkg-plist
+++ b/www/onlyoffice-documentserver/pkg-plist
@@ -1156,7 +1156,7 @@ lib/libkernel_network.so
%%WWWDIR%%/documentserver/sdkjs/pdf/src/annotations/stamps/ja-JA.json
%%WWWDIR%%/documentserver/sdkjs/pdf/src/annotations/stamps/pt-BR.json
%%WWWDIR%%/documentserver/sdkjs/pdf/src/annotations/stamps/ru-RU.json
-%%WWWDIR%%/documentserver/sdkjs/pdf/src/annotations/stamps/zh-ZH.json
+%%WWWDIR%%/documentserver/sdkjs/pdf/src/annotations/stamps/zh-CN.json
%%WWWDIR%%/documentserver/sdkjs/pdf/src/engine/cmap.bin
%%WWWDIR%%/documentserver/sdkjs/pdf/src/engine/drawingfile.js
%%WWWDIR%%/documentserver/sdkjs/pdf/src/engine/drawingfile.wasm
diff --git a/www/pecl-yaf/files/patch-php85 b/www/pecl-yaf/files/patch-php85
new file mode 100644
index 000000000000..1d35ad034c24
--- /dev/null
+++ b/www/pecl-yaf/files/patch-php85
@@ -0,0 +1,11 @@
+--- yaf_exception.c.orig 2024-06-25 03:13:57 UTC
++++ yaf_exception.c
+@@ -73,7 +73,7 @@ zend_class_entry * yaf_get_exception_base(int root) /*
+ }
+ #endif
+
+- return zend_exception_get_default();
++ return zend_ce_exception;
+ }
+ /* }}} */
+
diff --git a/www/pecl-yar/files/patch-php85 b/www/pecl-yar/files/patch-php85
new file mode 100644
index 000000000000..20c15b01392c
--- /dev/null
+++ b/www/pecl-yar/files/patch-php85
@@ -0,0 +1,11 @@
+--- yar_exception.c.orig 2024-06-25 08:51:10 UTC
++++ yar_exception.c
+@@ -62,7 +62,7 @@ zend_class_entry * php_yar_get_exception_base(int root
+ }
+ #endif
+
+- return zend_exception_get_default();
++ return zend_ce_exception;
+ }
+ /* }}} */
+
diff --git a/www/py-feedgenerator/Makefile b/www/py-feedgenerator/Makefile
index d0a8b4fb5c25..6155157a7e30 100644
--- a/www/py-feedgenerator/Makefile
+++ b/www/py-feedgenerator/Makefile
@@ -1,6 +1,5 @@
PORTNAME= feedgenerator
-PORTVERSION= 2.1.0
-PORTREVISION= 1
+PORTVERSION= 2.2.0
CATEGORIES= www python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
@@ -12,12 +11,10 @@ WWW= https://github.com/getpelican/feedgenerator
LICENSE= BSD3CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
-BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>=40.6.0:devel/py-setuptools@${PY_FLAVOR} \
- ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR}
-RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pytz>=0,1:devel/py-pytz@${PY_FLAVOR}
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}hatchling>=0:devel/py-hatchling@${PY_FLAVOR}
USES= python
-USE_PYTHON= autoplist concurrent pep517 unittest
+USE_PYTHON= autoplist concurrent pep517 pytest
NO_ARCH= yes
diff --git a/www/py-feedgenerator/distinfo b/www/py-feedgenerator/distinfo
index 70ce22dc678a..f6cc51cede38 100644
--- a/www/py-feedgenerator/distinfo
+++ b/www/py-feedgenerator/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1681843906
-SHA256 (feedgenerator-2.1.0.tar.gz) = f075f23f28fd227f097c36b212161c6cf012e1c6caaf7ff53d5d6bb02cd42b9d
-SIZE (feedgenerator-2.1.0.tar.gz) = 20682
+TIMESTAMP = 1752566726
+SHA256 (feedgenerator-2.2.0.tar.gz) = 2976f6ccc5989a967202da343ea145c21aedabbe0035c7088d64ba0aa9725a60
+SIZE (feedgenerator-2.2.0.tar.gz) = 20309
diff --git a/www/py-freenit/Makefile b/www/py-freenit/Makefile
index 5d4194423c65..c3cef51fc9bf 100644
--- a/www/py-freenit/Makefile
+++ b/www/py-freenit/Makefile
@@ -1,5 +1,5 @@
PORTNAME= freenit
-DISTVERSION= 0.3.19
+DISTVERSION= 0.3.20
CATEGORIES= www devel python
MASTER_SITES= PYPI
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
diff --git a/www/py-freenit/distinfo b/www/py-freenit/distinfo
index 328f9f0e73c8..48bdc9faf306 100644
--- a/www/py-freenit/distinfo
+++ b/www/py-freenit/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1751665277
-SHA256 (freenit-0.3.19.tar.gz) = 4d61c6c6f393c0b5ef344d2710aae5e3bbdb535a7b507d39911ee09b23b1641f
-SIZE (freenit-0.3.19.tar.gz) = 28403
+TIMESTAMP = 1753270744
+SHA256 (freenit-0.3.20.tar.gz) = d5a48c39d7d603ea9aeac8a29d25d9c3fb1fc5ebfbc4bf56f829b01f5e88906d
+SIZE (freenit-0.3.20.tar.gz) = 28417
diff --git a/www/py-rfc3987-syntax/Makefile b/www/py-rfc3987-syntax/Makefile
new file mode 100644
index 000000000000..ce164ab080b1
--- /dev/null
+++ b/www/py-rfc3987-syntax/Makefile
@@ -0,0 +1,23 @@
+PORTNAME= rfc3987-syntax
+PORTVERSION= 1.1.0
+CATEGORIES= www python
+MASTER_SITES= PYPI
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+DISTNAME= rfc3987_syntax-${PORTVERSION}
+
+MAINTAINER= sunpoet@FreeBSD.org
+COMMENT= Helper functions to syntactically validate strings according to RFC 3987
+WWW= https://github.com/willynilly/rfc3987-syntax
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}hatchling>=0:devel/py-hatchling@${PY_FLAVOR}
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}lark>=1.2.2:devel/py-lark@${PY_FLAVOR}
+
+USES= python
+USE_PYTHON= autoplist concurrent pep517
+
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/www/py-rfc3987-syntax/distinfo b/www/py-rfc3987-syntax/distinfo
new file mode 100644
index 000000000000..84e591b5d264
--- /dev/null
+++ b/www/py-rfc3987-syntax/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1753213880
+SHA256 (rfc3987_syntax-1.1.0.tar.gz) = 717a62cbf33cffdd16dfa3a497d81ce48a660ea691b1ddd7be710c22f00b4a0d
+SIZE (rfc3987_syntax-1.1.0.tar.gz) = 14239
diff --git a/www/py-rfc3987-syntax/pkg-descr b/www/py-rfc3987-syntax/pkg-descr
new file mode 100644
index 000000000000..afc27d822cbc
--- /dev/null
+++ b/www/py-rfc3987-syntax/pkg-descr
@@ -0,0 +1,11 @@
+rfc3987-syntax provides helper functions to parse and validate the syntax of
+terms defined in RFC 3987 -- the IETF standard for Internationalized Resource
+Identifiers (IRIs).
+
+The goal of rfc3987-syntax is to provide a lightweight, permissively licensed
+Python module for validating that strings conform to the ABNF grammar defined in
+RFC 3987. These helpers are:
+- Strictly aligned with the syntax rules of RFC 3987
+- Built using a permissive MIT license
+- Designed for both open source and proprietary use
+- Powered by Lark, a fast, EBNF-based parser
diff --git a/www/rubygem-async-pool/Makefile b/www/rubygem-async-pool/Makefile
index 992cffe68a7f..e0374e5b5299 100644
--- a/www/rubygem-async-pool/Makefile
+++ b/www/rubygem-async-pool/Makefile
@@ -1,5 +1,5 @@
PORTNAME= async-pool
-PORTVERSION= 0.10.3
+PORTVERSION= 0.11.0
CATEGORIES= www rubygems
MASTER_SITES= RG
@@ -11,7 +11,7 @@ WWW= https://socketry.github.io/async-pool/ \
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/license.md
-RUN_DEPENDS= rubygem-async>=1.25:devel/rubygem-async
+RUN_DEPENDS= rubygem-async>=2.0:devel/rubygem-async
USES= gem
diff --git a/www/rubygem-async-pool/distinfo b/www/rubygem-async-pool/distinfo
index 8df4f2d20354..35d7d12c0bb2 100644
--- a/www/rubygem-async-pool/distinfo
+++ b/www/rubygem-async-pool/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1738606631
-SHA256 (rubygem/async-pool-0.10.3.gem) = b542f9decc34fd3d6d0544576408bb79d6d2d2aa9ca467a75b546ac45765008a
-SIZE (rubygem/async-pool-0.10.3.gem) = 13312
+TIMESTAMP = 1752566748
+SHA256 (rubygem/async-pool-0.11.0.gem) = 2228c4a8d1ca59a259b5f9dab7e0f9f23d57856b195aca1c0aa684a7439ea525
+SIZE (rubygem/async-pool-0.11.0.gem) = 13824
diff --git a/www/rubygem-passenger/files/patch-libev b/www/rubygem-passenger/files/patch-libev
new file mode 100644
index 000000000000..b7c89c1af886
--- /dev/null
+++ b/www/rubygem-passenger/files/patch-libev
@@ -0,0 +1,23 @@
+--- src/cxx_supportlib/vendor-modified/libev/ev.c.orig 2025-07-13 19:43:52 UTC
++++ src/cxx_supportlib/vendor-modified/libev/ev.c
+@@ -421,6 +421,11 @@
+
+ #if EV_USE_INOTIFY
+ # include <sys/statfs.h>
++# ifdef __FreeBSD__
++# include <sys/mount.h>
++# else
++# include <sys/statfs.h>
++# endif
+ # include <sys/inotify.h>
+ /* some very old inotify.h headers don't have IN_DONT_FOLLOW */
+ # ifndef IN_DONT_FOLLOW
+@@ -2753,7 +2758,7 @@ ev_recommended_backends (void) EV_THROW
+ {
+ unsigned int flags = ev_supported_backends ();
+
+-#ifndef __NetBSD__
++#if !defined(__NetBSD__) && !defined(__FreeBSD__)
+ /* kqueue is borked on everything but netbsd apparently */
+ /* it usually doesn't work correctly on anything but sockets and pipes */
+ flags &= ~EVBACKEND_KQUEUE;
diff --git a/www/rubygem-protocol-http1/Makefile b/www/rubygem-protocol-http1/Makefile
index 8208be10cd03..a4ef690aa9ef 100644
--- a/www/rubygem-protocol-http1/Makefile
+++ b/www/rubygem-protocol-http1/Makefile
@@ -1,5 +1,5 @@
PORTNAME= protocol-http1
-PORTVERSION= 0.34.0
+PORTVERSION= 0.34.1
CATEGORIES= www rubygems
MASTER_SITES= RG
diff --git a/www/rubygem-protocol-http1/distinfo b/www/rubygem-protocol-http1/distinfo
index 62db2c7b4dc6..5b9b683b0c7c 100644
--- a/www/rubygem-protocol-http1/distinfo
+++ b/www/rubygem-protocol-http1/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1744289358
-SHA256 (rubygem/protocol-http1-0.34.0.gem) = 96f9a88ceb77d8e9ae967037c3831a2869e04bb55663209a8043d63ced177c4a
-SIZE (rubygem/protocol-http1-0.34.0.gem) = 21504
+TIMESTAMP = 1752566750
+SHA256 (rubygem/protocol-http1-0.34.1.gem) = 146532623e506f3cbe814a69411ca45477c29249dc92c945249ca3222a02eb88
+SIZE (rubygem/protocol-http1-0.34.1.gem) = 21504
diff --git a/www/rubygem-rdf/Makefile b/www/rubygem-rdf/Makefile
index 420ecd3974c2..77fad31e2cfc 100644
--- a/www/rubygem-rdf/Makefile
+++ b/www/rubygem-rdf/Makefile
@@ -1,5 +1,5 @@
PORTNAME= rdf
-PORTVERSION= 3.3.3
+PORTVERSION= 3.3.4
CATEGORIES= www rubygems
MASTER_SITES= RG
@@ -15,7 +15,8 @@ RUN_DEPENDS= rubygem-bcp47_spec>=0.2<1:devel/rubygem-bcp47_spec \
rubygem-bigdecimal>=3.1.5<4:math/rubygem-bigdecimal \
rubygem-link_header>=0.0.8<1:www/rubygem-link_header \
rubygem-logger>=1.5<2:devel/rubygem-logger \
- rubygem-ostruct>=0.6<1:devel/rubygem-ostruct
+ rubygem-ostruct>=0.6<1:devel/rubygem-ostruct \
+ rubygem-readline>=0.0<1:devel/rubygem-readline
USES= gem
diff --git a/www/rubygem-rdf/distinfo b/www/rubygem-rdf/distinfo
index 46429ac0108b..30024491924e 100644
--- a/www/rubygem-rdf/distinfo
+++ b/www/rubygem-rdf/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1750954460
-SHA256 (rubygem/rdf-3.3.3.gem) = d93b9f967b92cae1d90f3827424fe00c18ace3c61a18cac3691da85bb177dcda
-SIZE (rubygem/rdf-3.3.3.gem) = 159744
+TIMESTAMP = 1752566752
+SHA256 (rubygem/rdf-3.3.4.gem) = a77fa0821e5b4e2bea9fdbb7c9d980564c89d27e81979690ce5c9e6bc80859c1
+SIZE (rubygem/rdf-3.3.4.gem) = 160256
diff --git a/www/rubygem-roda/Makefile b/www/rubygem-roda/Makefile
index 74b7e852f622..135a4034ae7f 100644
--- a/www/rubygem-roda/Makefile
+++ b/www/rubygem-roda/Makefile
@@ -1,5 +1,5 @@
PORTNAME= roda
-PORTVERSION= 3.93.0
+PORTVERSION= 3.94.0
CATEGORIES= www rubygems
MASTER_SITES= RG
diff --git a/www/rubygem-roda/distinfo b/www/rubygem-roda/distinfo
index a0a726c7bb12..7cb90035c081 100644
--- a/www/rubygem-roda/distinfo
+++ b/www/rubygem-roda/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1750188280
-SHA256 (rubygem/roda-3.93.0.gem) = f4246e1a0dcae64d9abda11b91a2ab75395580f8748b25045a5b52a97c8c164a
-SIZE (rubygem/roda-3.93.0.gem) = 189952
+TIMESTAMP = 1752566802
+SHA256 (rubygem/roda-3.94.0.gem) = 161e13e6060cb6fdab05ee29e04d9e71cfbfa687edbb57d8e2da8f1748551fff
+SIZE (rubygem/roda-3.94.0.gem) = 190464