diff --git a/www/onlyoffice-documentserver/Makefile b/www/onlyoffice-documentserver/Makefile index efa621b6588f..d887e2e9f95f 100644 --- a/www/onlyoffice-documentserver/Makefile +++ b/www/onlyoffice-documentserver/Makefile @@ -1,269 +1,272 @@ PORTNAME= onlyoffice-documentserver DISTVERSIONPREFIX= v -DISTVERSION= 8.3.3.23 -PORTREVISION= 2 +DISTVERSION= 9.0.2.16 CATEGORIES= www MASTER_SITES+= LOCAL/mikael/v8/:source1 \ - LOCAL/mikael/onlyoffice/:source2 \ https://nodejs.org/dist/v${NODE_VERSION_PKGFETCH}/:source3 \ SF/optipng/OptiPNG/optipng-0.7.8/:source4 DISTFILES+= v8-8.9.255.25_all.tar.gz:source1 \ node-v${NODE_VERSION_PKGFETCH}.tar.gz:source3 \ - optipng-0.7.8.tar.gz:source4 \ - ${PORTNAME}-${DISTVERSION}_${PORTREVISION}-npm-cache.tar.gz:source2 + optipng-0.7.8.tar.gz:source4 -MAINTAINER= ports@FreeBSD.org +MAINTAINER= fsbruva@yahoo.com COMMENT= Secure office and productivity apps WWW= https://www.onlyoffice.com/ LICENSE= AGPLv3 LICENSE_FILE= ${WRKSRC}/LICENSE.txt BROKEN_i386= fails to build BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR} \ boost-libs>0:devel/boost-libs \ glib>=2.54:devel/glib20 \ gn:devel/gn \ java:java/openjdk11 \ ninja:devel/ninja \ - npm:www/npm-node22 \ + npm:www/npm-node20 \ ${LOCALBASE}/lib/libcrypto.a:security/openssl LIB_DEPENDS= libboost_regex.so:devel/boost-libs \ libetonyek-0.1.so:graphics/libetonyek01 \ libcurl.so:ftp/curl \ libharfbuzz.so:print/harfbuzz \ libiconv.so:converters/libiconv \ libicutu.so:devel/icu \ libodfgen-0.1.so:textproc/libodfgen01 \ librevenge-0.0.so:textproc/librevenge RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}supervisor>0:sysutils/py-supervisor@${PY_FLAVOR} \ ${LOCALBASE}/share/certs/ca-root-nss.crt:security/ca_root_nss \ gsed:textproc/gsed \ nginx:www/nginx \ pwgen:sysutils/pwgen \ rabbitmq>0:net/rabbitmq \ webfonts>=0:x11-fonts/webfonts USES= autoreconf:build dos2unix fakeroot gmake gnome iconv localbase nodejs:22,build pkgconfig \ python:3.9+,build qt:5 trigger USE_QT= qmake:build USE_GITHUB= yes GH_ACCOUNT= ONLYOFFICE GH_PROJECT= DocumentServer GH_TAGNAME= v${DISTVERSION:C/^([0-9]+\.[0-9]+\.[0-9]+).*/\1/} GH_TUPLE= ONLYOFFICE:core:v${DISTVERSION}:core/core \ ONLYOFFICE:core-fonts:v${DISTVERSION}:corefonts/core-fonts \ ONLYOFFICE:dictionaries:v${DISTVERSION}:dictionaries/dictionaries \ ONLYOFFICE:document-server-integration:v${DISTVERSION}:dsi/document-server-integration \ ONLYOFFICE:document-templates:v${DISTVERSION}:dt/document-templates \ ONLYOFFICE:sdkjs:v${DISTVERSION}:sdkjs/sdkjs \ ONLYOFFICE:server:v${DISTVERSION}:server/server \ ONLYOFFICE:web-apps:v${DISTVERSION}:webapps/web-apps \ ONLYOFFICE:build_tools:v${DISTVERSION}:buildtools/build_tools \ ONLYOFFICE:DocumentBuilder:626d1e44db3d06ceb8298215a67ef0475912d89a:document_builder/DocumentBuilder \ ONLYOFFICE:onlyoffice.github.io:b26d001664d771df4f663d2d3ba7dd4a188b6cab:sdkjs_plugins_v1/onlyoffice.github.io \ ONLYOFFICE:document-server-package:v${DISTVERSION}:dsp/document-server-package \ jasenhuang:katana-parser:be6df45:jasenhuang_katana/core/Common/3dParty/html/katana-parser \ google:gumbo-parser:aa91b27:google_gumbo/core/Common/3dParty/html/gumbo-parser \ - hunspell:hyphen:73dd296:hunspell_hyphen/core/Common/3dParty/hyphen/hyphen + 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/ OPTIONS_SINGLE= DB OPTIONS_SINGLE_DB= MYSQL PGSQL OPTIONS_DEFAULT= PGSQL MYSQL_USES+= mysql:client PGSQL_USES+= pgsql PGSQL_VARS= WANT_PGSQL=client BINARY_ALIAS= python=${PYTHON_CMD} \ strip=true USE_LDCONFIG= yes WWWDIR= ${PREFIX}/www/onlyoffice ETCDIR= ${PREFIX}/etc/onlyoffice DS_USERNAME= onlyoffice DS_GROUPNAME= onlyoffice USERS= ${DS_USERNAME} GROUPS= ${DS_GROUPNAME} PLIST_SUB= DS_GROUPNAME=${DS_GROUPNAME} \ DS_USERNAME=${DS_USERNAME} SUB_FILES= pkg-message \ onlyoffice.newsyslog.sample SUB_LIST= DS_GROUPNAME=${DS_GROUPNAME} \ DS_USERNAME=${DS_USERNAME} \ ETCDIR=${ETCDIR} \ PREFIX=${PREFIX} \ WWWDIR=${WWWDIR} -# node version used with "npm install @yao-pkg/pkg@6.5.0" +# node version used with "npm install @yao-pkg/pkg@6.5.1" # keep in sync with patch-build__tools_scripts_build__server.py and patch-document-server-package_Makefile -NODE_VERSION_PKGFETCH= 22.15.1 +NODE_VERSION_PKGFETCH= 20.19.1 MAKE_ENV= BUILD_NUMBER="36" \ 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/} # Don't create __pycache__ directory when executing node-gyp # This is a workaround to avoid filesystem violations during poudriere build MAKE_ENV+= PYTHONDONTWRITEBYTECODE=1 DOS2UNIX_FILES= document-server-package/common/documentserver/nginx/includes/http-common.conf.m4 CONFLICTS_BUILD=devel/googletest .include .if ${ARCH} == aarch64 BUILD_DEPENDS+= clang${LLVM_DEFAULT}:devel/llvm${LLVM_DEFAULT} BINARY_ALIAS+= cpp=${LOCALBASE}/bin/clang-cpp${LLVM_DEFAULT} \ cc=${LOCALBASE}/bin/clang${LLVM_DEFAULT} \ c++=${LOCALBASE}/bin/clang++${LLVM_DEFAULT} \ ar=${LOCALBASE}/bin/llvm-ar${LLVM_DEFAULT} \ nm=${LOCALBASE}/bin/llvm-nm${LLVM_DEFAULT} \ ld=${LOCALBASE}/bin/ld.lld${LLVM_DEFAULT} .endif post-extract: @${MV} ${WRKDIR}/v8 ${WRKSRC}/core/Common/3dParty/v8_89 - @${MKDIR} ${WRKDIR}/.pkg-cache/node + @${LN} -s ${WRKSRC_npm_cache} ${WRKDIR}/.npm + @${LN} -s ${WRKSRC_pkg_cache} ${WRKDIR}/.pkg-cache @${CP} ${DISTDIR}/node-v${NODE_VERSION_PKGFETCH}.tar.gz ${WRKDIR}/.pkg-cache/node @${MKDIR} ${WRKSRC}/sdkjs-plugins/v1 @${CP} ${WRKSRC}/onlyoffice.github.io/sdkjs-plugins/v1/* ${WRKSRC}/sdkjs-plugins/v1 @${MV} ${WRKSRC}/server/Common/config/production-linux.json ${WRKSRC}/server/Common/config/production-freebsd.json @${MV} ${WRKSRC}/server/Common/config/development-linux.json ${WRKSRC}/server/Common/config/development-freebsd.json # linux has moved to systemd init files, continue to using supervisord for now ${MKDIR} ${WRKSRC}/document-server-package/common/documentserver/supervisor .for i in ds-converter.conf ds-docservice.conf ds-metrics.conf ds.conf ${CP} ${FILESDIR}/${i} \ ${WRKSRC}/document-server-package/common/documentserver/supervisor .endfor post-patch: @${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|' \ ${WRKSRC}/build_tools/tools/freebsd/automate.py \ ${WRKSRC}/core/Apple/IWork.pro \ ${WRKSRC}/core/Common/3dParty/boost/boost.pri \ ${WRKSRC}/core/Common/3dParty/icu/icu.pri \ ${WRKSRC}/core/Common/3dParty/openssl/openssl.pri \ ${WRKSRC}/core/Common/3dParty/v8_89/v8/build/toolchain/gcc_toolchain.gni \ ${WRKSRC}/core/Common/3dParty/v8_89/v8/buildtools/third_party/libc++/BUILD.gn \ ${WRKSRC}/core/DesktopEditor/fontengine/ApplicationFonts.cpp \ ${WRKSRC}/document-server-package/common/documentserver/bin/documentserver-generate-allfonts.sh.m4 \ ${WRKSRC}/document-server-package/common/documentserver/bin/documentserver-jwt-status.sh.m4 \ ${WRKSRC}/document-server-package/common/documentserver/bin/documentserver-pluginsmanager.sh.m4 \ ${WRKSRC}/document-server-package/common/documentserver/bin/documentserver-static-gzip.sh.m4 \ ${WRKSRC}/document-server-package/common/documentserver/bin/documentserver-update-securelink.sh.m4 \ ${WRKSRC}/document-server-package/common/documentserver/supervisor/ds-converter.conf \ ${WRKSRC}/document-server-package/common/documentserver/supervisor/ds-docservice.conf \ ${WRKSRC}/document-server-package/common/documentserver/supervisor/ds-metrics.conf @${REINPLACE_CMD} -e 's|%%CC%%|${CC}|' -e 's|%%CXX%%|${CXX}|' \ ${WRKSRC}/core/Common/3dParty/v8_89/v8/build/toolchain/gcc_toolchain.gni \ ${WRKSRC}/core/Common/base.pri @${REINPLACE_CMD} 's|%%WRKDIR%%|${WRKDIR}|' \ ${WRKSRC}/document-server-package/Makefile @${REINPLACE_CMD} 's|%%WRKSRC%%|${WRKSRC}|' \ ${WRKSRC}/build_tools/scripts/build_js.py \ ${WRKSRC}/build_tools/scripts/build_server.py \ ${WRKSRC}/document-server-package/Makefile @${REINPLACE_CMD} -e 's|/var/lib|/var/db|' -e 's|/var/www|${LOCALBASE}/www|' \ -e 's|/usr/share|${LOCALBASE}/share|' -e 's|/etc|${LOCALBASE}/etc|' \ ${WRKSRC}/server/Common/config/production-freebsd.json \ ${WRKSRC}/server/Common/config/development-freebsd.json @${REINPLACE_CMD} 's|%%DISTDIR%%|${DISTDIR}|' \ ${WRKSRC}/web-apps/build/patches/optipng-bin+5.1.0.patch @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|' -e 's|%%ETCDIR%%|${ETCDIR}|' \ ${WRKSRC}/document-server-package/common/documentserver/bin/documentserver-flush-cache.sh.m4 \ ${WRKSRC}/document-server-package/Makefile @${RM} ${WRKSRC}/web-apps/build/patches/optipng-bin+5.1.0.patch.orig @${FIND} ${WRKSRC}/server -type f -name npm-shrinkwrap.json -delete @${ECHO} "# Generated from 'DEPS'" > ${WRKSRC}/core/Common/3dParty/v8_89/v8/build/config/gclient_args.gni @${ECHO} "checkout_google_benchmark = false" >> ${WRKSRC}/core/Common/3dParty/v8_89/v8/build/config/gclient_args.gni do-build: ${INSTALL_SCRIPT} ${FILESDIR}/npm ${BINARY_LINKDIR}/npm @${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|g' ${WRKDIR}/.bin/npm +# @cd ${WRKSRC}/web-apps/build ; ${SETENV} ${MAKE_ENV} npm cache clean --force @cd ${WRKSRC}/web-apps/build ; ${SETENV} ${MAKE_ENV} npm install patch-package @cd ${WRKSRC}/web-apps/build ; ${SETENV} ${MAKE_ENV} npm install optipng-bin@5.1.0 @cd ${WRKSRC}/web-apps/build ; node_modules/.bin/patch-package @cd ${WRKSRC}/web-apps/build/node_modules/optipng-bin ; ${SETENV} ${MAKE_ENV} npm run postinstall optipng-bin @cd ${WRKSRC}/server ; ${SETENV} ${MAKE_ENV} npm install grunt-cli @cd ${WRKSRC}/server ; ${SETENV} ${MAKE_ENV} npm install grunt @cd ${WRKSRC}/sdkjs ; ${SETENV} ${MAKE_ENV} npm install grunt-cli @cd ${WRKSRC}/sdkjs ; ${SETENV} ${MAKE_ENV} npm install grunt @${MKDIR} ${WRKSRC}/yao-pkg @${CP} ${FILESDIR}/package* ${WRKSRC}/yao-pkg - @cd ${WRKSRC}/yao-pkg ; ${SETENV} ${MAKE_ENV} npm install @yao-pkg/pkg@6.5.0 + @cd ${WRKSRC}/yao-pkg ; ${SETENV} ${MAKE_ENV} npm install @yao-pkg/pkg@6.5.1 @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} cd ${WRKSRC}/build_tools/tools/freebsd ; ${SETENV} ${MAKE_ENV} ${PYTHON_CMD} automate.py cd ${WRKSRC}/document-server-package ; ${SETENV} ${MAKE_ENV} ${GMAKE} freebsd do-install: # install the project # do not strip docservice, converter, metrics and json cd ${WRKSRC}/document-server-package/common/documentserver/home && ${COPYTREE_SHARE} . ${STAGEDIR}${WWWDIR}/documentserver ${INSTALL_SCRIPT} ${WRKSRC}/document-server-package/common/documentserver/bin/*.sh ${STAGEDIR}${PREFIX}/bin ${INSTALL_PROGRAM} ${WRKSRC}/document-server-package/common/documentserver/home/server/tools/all* ${STAGEDIR}${WWWDIR}/documentserver/server/tools ${INSTALL_PROGRAM} ${WRKSRC}/document-server-package/common/documentserver/home/server/FileConverter/bin/x2t ${STAGEDIR}${WWWDIR}/documentserver/server/FileConverter/bin ${INSTALL_PROGRAM} ${WRKSRC}/document-server-package/common/documentserver/home/server/FileConverter/bin/docbuilder ${STAGEDIR}${WWWDIR}/documentserver/server/FileConverter/bin ${INSTALL_PROGRAM} ${WRKSRC}/document-server-package/common/documentserver/home/server/tools/pluginsmanager ${STAGEDIR}${WWWDIR}/documentserver/server/tools ${INSTALL_DATA} ${WRKSRC}/document-server-package/common/documentserver/home/npm/json ${STAGEDIR}${WWWDIR}/documentserver/npm ${INSTALL_LIB} ${WRKSRC}/document-server-package/common/documentserver/home/server/FileConverter/bin/*.so ${STAGEDIR}${PREFIX}/lib ${RM} ${STAGEDIR}${PREFIX}/bin/documentserver-letsencrypt.sh # install conf ${MKDIR} ${STAGEDIR}${ETCDIR}/documentserver/supervisor \ ${STAGEDIR}${ETCDIR}/documentserver/nginx/includes \ ${STAGEDIR}${ETCDIR}/documentserver/logrotate ${RM} ${WRKSRC}/document-server-package/common/documentserver/config/*-mac.json ${WRKSRC}/document-server-package/common/documentserver/config/*-windows.json cd ${WRKSRC}/document-server-package/common/documentserver/supervisor && ${COPYTREE_SHARE} . ${STAGEDIR}${ETCDIR}/documentserver/supervisor "-name *\.conf" cd ${WRKSRC}/document-server-package/common/documentserver/logrotate && ${COPYTREE_SHARE} . ${STAGEDIR}${ETCDIR}/documentserver/logrotate "-name *\.conf" @${CP} ${WRKSRC}/document-server-package/common/documentserver/nginx/ds-ssl.conf.tmpl ${WRKSRC}/document-server-package/common/documentserver/nginx/ds-ssl.conf .for f in ds.conf ds-ssl.conf includes/http-common.conf includes/ds-common.conf includes/ds-docservice.conf includes/ds-letsencrypt.conf includes/ds-mime.types.conf ${INSTALL_DATA} ${WRKSRC}/document-server-package/common/documentserver/nginx/${f} ${STAGEDIR}${ETCDIR}/documentserver/nginx/${f}.sample .endfor @echo "# Production ds-cache.conf is created automatically by documentserver-flush-cache.sh" > ${STAGEDIR}${ETCDIR}/documentserver/nginx/includes/ds-cache.conf.sample cd ${WRKSRC}/document-server-package/common/documentserver/nginx/includes && ${COPYTREE_SHARE} . ${STAGEDIR}${ETCDIR}/documentserver/nginx/includes "-name *\.conf" cd ${WRKSRC}/document-server-package/common/documentserver/config && ${COPYTREE_SHARE} . ${STAGEDIR}${ETCDIR}/documentserver ${INSTALL_DATA} ${FILESDIR}/local.json.sample ${STAGEDIR}${ETCDIR}/documentserver ${MKDIR} ${STAGEDIR}/${ETCDIR}/documentserver/newsyslog.conf.d ${INSTALL_DATA} ${WRKDIR}/onlyoffice.newsyslog.sample ${STAGEDIR}/${ETCDIR}/documentserver/newsyslog.conf.d # create missing dir ${MKDIR} ${STAGEDIR}/var/log/onlyoffice/documentserver/docservice \ ${STAGEDIR}/var/log/onlyoffice/documentserver/converter \ ${STAGEDIR}/var/log/onlyoffice/documentserver/metrics \ ${STAGEDIR}/var/db/onlyoffice/documentserver/App_Data/cache/files \ ${STAGEDIR}/var/db/onlyoffice/documentserver/App_Data/docbuilder \ ${STAGEDIR}${WWWDIR}/Data \ ${STAGEDIR}${WWWDIR}/documentserver/fonts # Remove bak file ${RM} ${STAGEDIR}${WWWDIR}/documentserver/server/Common/config/*.bak ${RM} ${STAGEDIR}${WWWDIR}/documentserver/dictionaries/sl_SI/hyph_sl_SI.dic.bak create-caches-tarball: # do some cleanup first ${RM} -r ${WRKDIR}/.npm/_logs ${WRKDIR}/.npm/_update-notifier-last-checked ${WRKDIR}/.cache/yarn/v6/.tmp ${WRKDIR}/.cache/node-gyp # ${FIND} ${WRKDIR}/.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 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}_${PORTREVISION:}-npm-cache.tar.gz .npm .pkg-cache + ${TAR} czf ${PORTNAME}-${DISTVERSION}_`date +%Y%m%d`-npm-cache.tar.gz .npm .pkg-cache .include diff --git a/www/onlyoffice-documentserver/distinfo b/www/onlyoffice-documentserver/distinfo index 8e4416bca7bd..432711cf408e 100644 --- a/www/onlyoffice-documentserver/distinfo +++ b/www/onlyoffice-documentserver/distinfo @@ -1,41 +1,47 @@ -TIMESTAMP = 1748528476 +TIMESTAMP = 1751344944 SHA256 (v8-8.9.255.25_all.tar.gz) = 54853ef93accc063a82a0dc29457b25c9b6d88315431d62e06ab1f84797c5f80 SIZE (v8-8.9.255.25_all.tar.gz) = 72818814 -SHA256 (node-v22.15.1.tar.gz) = 38aea029f8818f7783f273fbc70dcf930f9ef54bdd49c5f90c0152caec7a57be -SIZE (node-v22.15.1.tar.gz) = 100310295 +SHA256 (node-v20.19.1.tar.gz) = 691011ddb85c9ab86afb7ead2b6db2ddd45592f1c8fd26687d152dcadc182229 +SIZE (node-v20.19.1.tar.gz) = 88078477 SHA256 (optipng-0.7.8.tar.gz) = 25a3bd68481f21502ccaa0f4c13f84dcf6b20338e4c4e8c51f2cefbd8513398c SIZE (optipng-0.7.8.tar.gz) = 3294014 -SHA256 (onlyoffice-documentserver-8.3.3.23_2-npm-cache.tar.gz) = 8b3b8f5e885516de5cf4b70ad39be58cdf529e79dc21da9b110386ab183c59b5 -SIZE (onlyoffice-documentserver-8.3.3.23_2-npm-cache.tar.gz) = 261836699 -SHA256 (ONLYOFFICE-DocumentServer-v8.3.3.23-v8.3.3_GH0.tar.gz) = 4d59be06a010524d47d2be5329a7b25330bc42c3b9ba8447c83cedbee4ec2421 -SIZE (ONLYOFFICE-DocumentServer-v8.3.3.23-v8.3.3_GH0.tar.gz) = 93087 -SHA256 (ONLYOFFICE-core-v8.3.3.23_GH0.tar.gz) = 44827fbc88a0faaf26de37989187056d0f9c8f7c5f9d9007b7c2e0b9e00c926d -SIZE (ONLYOFFICE-core-v8.3.3.23_GH0.tar.gz) = 205039440 -SHA256 (ONLYOFFICE-core-fonts-v8.3.3.23_GH0.tar.gz) = 15d9a2850ff6fe2bfa782bbdef5163c8f5876fddc508a71a204f08f6d38dbd70 -SIZE (ONLYOFFICE-core-fonts-v8.3.3.23_GH0.tar.gz) = 95375592 -SHA256 (ONLYOFFICE-dictionaries-v8.3.3.23_GH0.tar.gz) = 8fd634cbb036cd7a484f172c3b95c54115d52cade8fa31a50102e6cb4e64d88d -SIZE (ONLYOFFICE-dictionaries-v8.3.3.23_GH0.tar.gz) = 56268318 -SHA256 (ONLYOFFICE-document-server-integration-v8.3.3.23_GH0.tar.gz) = 88c5548a861e5f376a3672cb5f130d88c44bbe672d83b3332197db520881affe -SIZE (ONLYOFFICE-document-server-integration-v8.3.3.23_GH0.tar.gz) = 6137374 -SHA256 (ONLYOFFICE-document-templates-v8.3.3.23_GH0.tar.gz) = ec276efdfb0c8f2370b57c62234e213aee99c89f40ff7f4a0637f46cc9471bbc -SIZE (ONLYOFFICE-document-templates-v8.3.3.23_GH0.tar.gz) = 3683534 -SHA256 (ONLYOFFICE-sdkjs-v8.3.3.23_GH0.tar.gz) = 7f9caf4c6f2749ae712bf354f50f3ca5761d6a1c69154c053bf3873bdb71f9b3 -SIZE (ONLYOFFICE-sdkjs-v8.3.3.23_GH0.tar.gz) = 36293797 -SHA256 (ONLYOFFICE-server-v8.3.3.23_GH0.tar.gz) = ae3d072c98faeec8bffc7c2cc690e758c5c46f6adda7bbc6fc46981308423110 -SIZE (ONLYOFFICE-server-v8.3.3.23_GH0.tar.gz) = 397648 -SHA256 (ONLYOFFICE-web-apps-v8.3.3.23_GH0.tar.gz) = 947c92cb1d9ec92e9c4d9aa118c8522261c7d21322242bdc631a02041dbe347a -SIZE (ONLYOFFICE-web-apps-v8.3.3.23_GH0.tar.gz) = 437551850 -SHA256 (ONLYOFFICE-build_tools-v8.3.3.23_GH0.tar.gz) = 01e7f9ab87aaa0aded91212c45007532d67505eeec176c1cf8b727224d29b780 -SIZE (ONLYOFFICE-build_tools-v8.3.3.23_GH0.tar.gz) = 33860736 +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-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-v8.3.3.23_GH0.tar.gz) = 219aab7ace2af4d0166820529a0043833e236eecf6d0b7bdd6ca3206ada5cb5c -SIZE (ONLYOFFICE-document-server-package-v8.3.3.23_GH0.tar.gz) = 186487 +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 (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 SIZE (google-gumbo-parser-aa91b27_GH0.tar.gz) = 2119417 SHA256 (hunspell-hyphen-73dd296_GH0.tar.gz) = 93e80ad69ee7afd507b12f0b58ca34a6a78347dcbb5fe5d9b6f0e19b02397ef7 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 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 new file mode 100644 index 000000000000..44c114f57dd6 --- /dev/null +++ b/www/onlyoffice-documentserver/files/extra-patch-pkg-fetch_patches_node.v20.19.1.cpp.patch @@ -0,0 +1,1014 @@ +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 ++ 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::GetSharedLib ++ lib_name = std::string(path); ++ } ++ result.push_back(SharedLibraryAddress( ++- lib_name, reinterpret_cast(map->kve_start), ++- reinterpret_cast(map->kve_end))); +++ lib_name, static_cast(map->kve_start), +++ static_cast(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 // for cache flushing. ++ #undef MAP_TYPE ++ #elif V8_OS_FREEBSD +++#include ++ #include // for cache flushing ++ #include ++ #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(mcontext.__gregs[_REG_PC]); ++ state->sp = reinterpret_cast(mcontext.__gregs[_REG_SP]); ++ state->fp = reinterpret_cast(mcontext.__gregs[_REG_FP]); +++#elif V8_TARGET_ARCH_PPC64 +++ state->pc = reinterpret_cast(mcontext.mc_srr0); +++ state->sp = reinterpret_cast(mcontext.mc_frame[1]); +++ state->fp = reinterpret_cast(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 ++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 ++ Commit-Queue: Jaroslav Sevcik ++ Auto-Submit: Andrey Kosyakov ++ 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 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(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(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 +++#include ++ ++ #include ++ #include ++@@ -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 getTrimmedOffsetAndLength() const; ++ String16 stripWhiteSpace() const; ++- const UChar* characters16() const { return m_impl.c_str(); } +++ const uint16_t* characters16() const { +++ return reinterpret_cast(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 UTF8ToUTF16(const char* stringStart, size_t length) { ++ if (!stringStart || !length) return std::basic_string(); ++- std::vector buffer(length); +++ std::vector buffer(length); ++ UChar* bufferStart = buffer.data(); ++ ++ UChar* bufferCurrent = bufferStart; ++@@ -395,7 +395,7 @@ std::basic_string UTF8ToUTF16(const char* stringStart, size_t length) { ++ reinterpret_cast(stringStart + length), ++ &bufferCurrent, bufferCurrent + buffer.size(), nullptr, ++ true) != conversionOK) ++- return std::basic_string(); +++ return std::basic_string(); ++ size_t utf16Length = bufferCurrent - bufferStart; ++ return std::basic_string(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 +++ ++ #include ++ #include ++ ++ // 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 UTF8ToUTF16(const char* stringStart, size_t length); ++-std::string UTF16ToUTF8(const uint16_t* stringStart, size_t length); +++std::basic_string 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 in) { ++- return v8_inspector::UTF16ToUTF8(in.data(), in.size()); +++ return v8_inspector::UTF16ToUTF8(reinterpret_cast(in.data()), +++ in.size()); ++ } ++ ++ std::vector UTF8ToUTF16(span in) { ++- std::basic_string utf16 = v8_inspector::UTF8ToUTF16( +++ std::basic_string utf16 = v8_inspector::UTF8ToUTF16( ++ reinterpret_cast(in.data()), in.size()); ++- return std::vector(utf16.begin(), utf16.end()); +++ return std::vector( +++ reinterpret_cast(utf16.data()), +++ reinterpret_cast(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& args) { ++--- node/src/cares_wrap.h.orig 2023-05-16 06:58:21 UTC +++++ node/src/cares_wrap.h ++@@ -23,7 +23,7 @@ ++ # include ++ #endif // __POSIX__ ++ ++-# include +++# include ++ ++ 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 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 unbound_script) { +++ auto isolate = reinterpret_cast(v8_isolate); +++ auto function_info = i::Handle::cast(Utils::OpenHandle(*unbound_script)); +++ i::Handle 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) ++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 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 JSFunction::ToString(Handle function) { ++ Handle 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