git: f42e64c9c51f - 2025Q3 - www/onlyoffice-documentserver: Update to 9.0.2.16
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 07 Jul 2025 08:48:03 UTC
The branch 2025Q3 has been updated by mikael: URL: https://cgit.FreeBSD.org/ports/commit/?id=f42e64c9c51f830ab06b2d9a788338946deb4b47 commit f42e64c9c51f830ab06b2d9a788338946deb4b47 Author: Matt Kempe <fsbruva@yahoo.com> AuthorDate: 2025-07-01 23:11:03 +0000 Commit: Mikael Urankar <mikael@FreeBSD.org> CommitDate: 2025-07-07 08:47:53 +0000 www/onlyoffice-documentserver: Update to 9.0.2.16 Upgrade port version to 9.0.2.16 Upgrade port to use yao-pkg 6.5.1 Revert port dependency to node20, to match upstream Fix compile time errors on aarch64 Add additional cache cleanup steps in Makefile Add timestamp based versioning for cache tarball Shift pkg and npm caches to use github Take port maintainership PR: 287819 (cherry picked from commit b293e8710f76edd0b710df7b14f2e130639b76b9) --- www/onlyoffice-documentserver/Makefile | 29 +- www/onlyoffice-documentserver/distinfo | 60 +- ...patch-pkg-fetch_patches_node.v20.19.1.cpp.patch | 1014 +++++++++ ...patch-pkg-fetch_patches_node.v22.15.1.cpp.patch | 183 -- .../files/package-lock.json | 22 +- www/onlyoffice-documentserver/files/package.json | 2 +- .../patch-build__tools_scripts_build__server.py | 13 +- ...ild__tools_scripts_core__common_make__common.py | 8 +- ...tch-core_Common_3dParty_v8_v8_src_base_macros.h | 12 + ...patch-core_OfficeUtils_src_zlib-1.2.11_gzguts.h | 12 + .../files/patch-core_PdfFile_PdfEditor.cpp | 11 + .../files/patch-document-server-package_Makefile | 2 +- ...rver_bin_documentserver-update-securelink.sh.m4 | 2 +- .../files/patch-server_Common_package.json | 11 - .../files/patch-server_FileConverter_package.json | 12 - .../files/patch-server_package.json | 40 +- .../files/patch-web-apps_build_package.json | 11 +- www/onlyoffice-documentserver/pkg-plist | 2166 ++++++++++---------- 18 files changed, 2199 insertions(+), 1411 deletions(-) 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,18 +1,15 @@ 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/ @@ -27,7 +24,7 @@ BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}Jinja2>=0:devel/py-Jinja2@${PY_FLAVOR} \ 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 \ @@ -66,7 +63,10 @@ GH_TUPLE= ONLYOFFICE:core:v${DISTVERSION}:core/core \ 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 @@ -99,9 +99,9 @@ SUB_LIST= DS_GROUPNAME=${DS_GROUPNAME} \ 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 \ @@ -130,7 +130,8 @@ BINARY_ALIAS+= cpp=${LOCALBASE}/bin/clang-cpp${LLVM_DEFAULT} \ 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 @@ -193,6 +194,7 @@ 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 @@ -205,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.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} @@ -262,8 +264,9 @@ create-caches-tarball: ${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 <bsd.port.post.mk> 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 <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 */ *** 3442 LINES SKIPPED ***