diff --git a/.github/workflows/android-emulator-tests.yml b/.github/workflows/android-emulator-tests.yml index da41073b18..637bc76207 100644 --- a/.github/workflows/android-emulator-tests.yml +++ b/.github/workflows/android-emulator-tests.yml @@ -137,6 +137,9 @@ jobs: arch: x86_64 force-avd-creation: false emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + # Pinned to emulator 37.1.11: 37.2.12 gets the runner killed (shutdown + # signal) ~10 min into the full suite, on recipe as well as on upgrades. + emulator-build: 15917651 disable-animations: true script: | set -e diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 185f687f97..ccf0c55a3d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -584,6 +584,9 @@ jobs: target: default force-avd-creation: false emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + # Pinned to emulator 37.1.11: 37.2.12 gets the runner killed (shutdown + # signal) ~10 min into the full suite, on recipe as well as on upgrades. + emulator-build: 15917651 disable-animations: true # NB: android-emulator-runner runs `script` line-by-line, so the # invocation must be a single line (no backslash continuations). diff --git a/.github/workflows/full-device-suite.yml b/.github/workflows/full-device-suite.yml index 4650b83f9f..728c3a9912 100644 --- a/.github/workflows/full-device-suite.yml +++ b/.github/workflows/full-device-suite.yml @@ -151,6 +151,9 @@ jobs: arch: x86_64 force-avd-creation: false emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none + # Pinned to emulator 37.1.11: 37.2.12 gets the runner killed (shutdown + # signal) ~10 min into the full suite, on recipe as well as on upgrades. + emulator-build: 15917651 disable-animations: true script: | adb wait-for-device diff --git a/expected-tree.txt b/expected-tree.txt index ab2eeb5781..09abcafa27 100644 --- a/expected-tree.txt +++ b/expected-tree.txt @@ -14,4 +14,4 @@ # run prepare.sh (or regenerate-patches.py, which prints the hash) and # update the value below in the same commit. If you forget, CI fails and # prints the hash it got. -408864fba897050cd2bf10e1a1ff3ad3ba838bf1 +7348f35be43b704ac87fcb8971cb841f98a00312 diff --git a/patches/build-Android-iOS-dest-os-and-toolchain-configure.py.patch b/patches/build-Android-iOS-dest-os-and-toolchain-configure.py.patch index e5bbee1afb..5ded6fc2fb 100644 --- a/patches/build-Android-iOS-dest-os-and-toolchain-configure.py.patch +++ b/patches/build-Android-iOS-dest-os-and-toolchain-configure.py.patch @@ -137,10 +137,10 @@ index 5cea0393f4..dfec53e67e 100644 - os.system("./configure --dest-cpu=" + DEST_CPU + " --dest-os=android --openssl-no-asm --cross-compiling") + os.system("./configure --dest-cpu=" + DEST_CPU + " --dest-os=android --openssl-no-asm --with-intl=" + intl + extra_flags + " --cross-compiling --shared") diff --git a/configure.py b/configure.py -index 7fd64a9620..40642c1af4 100755 +index b826e24e3f..65e3255d10 100755 --- a/configure.py +++ b/configure.py -@@ -1146,6 +1146,11 @@ parser.add_argument('-C', +@@ -1119,6 +1119,11 @@ parser.add_argument('-C', default=None, help=argparse.SUPPRESS) @@ -152,7 +152,7 @@ index 7fd64a9620..40642c1af4 100755 parser.add_argument('--clang-cl', action='store', dest='clang_cl', -@@ -1655,6 +1660,9 @@ def configure_node_cctest_sources(o): +@@ -1628,6 +1633,9 @@ def configure_node_cctest_sources(o): SearchFiles('test/cctest', 'h') def configure_node(o): diff --git a/patches/build-mobile-platform-settings-in-common.gypi.patch b/patches/build-mobile-platform-settings-in-common.gypi.patch index a3db68104d..7fbc34d3b8 100644 --- a/patches/build-mobile-platform-settings-in-common.gypi.patch +++ b/patches/build-mobile-platform-settings-in-common.gypi.patch @@ -23,10 +23,10 @@ Co-authored-by: João Matos 1 file changed, 118 insertions(+), 7 deletions(-) diff --git a/common.gypi b/common.gypi -index 83e0691d4a..dc33231a0d 100644 +index bc690955d3..b3a74cb587 100644 --- a/common.gypi +++ b/common.gypi -@@ -112,7 +112,7 @@ +@@ -115,7 +115,7 @@ 'obj_dir%': '<(PRODUCT_DIR)/obj.target', 'v8_base': '<(PRODUCT_DIR)/obj.target/tools/v8_gypfiles/libv8_snapshot.a', }], @@ -35,7 +35,7 @@ index 83e0691d4a..dc33231a0d 100644 'obj_dir%': '<(PRODUCT_DIR)/obj.target', 'v8_base': '<(PRODUCT_DIR)/libv8_snapshot.a', }], -@@ -223,6 +223,23 @@ +@@ -226,6 +226,23 @@ }], ], }], @@ -59,7 +59,7 @@ index 83e0691d4a..dc33231a0d 100644 ['OS=="solaris"', { # pull in V8's postmortem metadata 'ldflags': [ '-Wl,-z,allextract' ] -@@ -231,7 +248,7 @@ +@@ -234,7 +251,7 @@ # increase performance, number from experimentation 'cflags': [ '-qINLINE=::150:100000' ] }], @@ -68,7 +68,7 @@ index 83e0691d4a..dc33231a0d 100644 # -fno-omit-frame-pointer is necessary for the --perf_basic_prof # flag to work correctly. perf(1) gets confused about JS stack # frames otherwise, even with --call-graph dwarf. -@@ -450,7 +467,7 @@ +@@ -453,7 +470,7 @@ [ 'target_arch=="arm64"', { 'msvs_configuration_platform': 'arm64', }], @@ -77,7 +77,7 @@ index 83e0691d4a..dc33231a0d 100644 'cflags+': [ '-fno-omit-frame-pointer', '-fsanitize=address', -@@ -478,7 +495,7 @@ +@@ -481,7 +498,7 @@ }], ], }], @@ -86,7 +86,7 @@ index 83e0691d4a..dc33231a0d 100644 'cflags+': [ '-fno-omit-frame-pointer', '-fsanitize=undefined', -@@ -487,7 +504,7 @@ +@@ -490,7 +507,7 @@ 'cflags!': [ '-fno-omit-frame-pointer' ], 'ldflags': [ '-fsanitize=undefined' ], }], @@ -95,7 +95,7 @@ index 83e0691d4a..dc33231a0d 100644 'xcode_settings': { 'OTHER_CFLAGS+': [ '-fno-omit-frame-pointer', -@@ -595,11 +612,13 @@ +@@ -601,11 +618,13 @@ }], ['_toolset=="host"', { 'conditions': [ @@ -111,7 +111,7 @@ index 83e0691d4a..dc33231a0d 100644 'cflags': [ '-m64' ], 'ldflags': [ '-m64' ], }], -@@ -759,6 +778,98 @@ +@@ -773,6 +792,98 @@ }], ], }], diff --git a/patches/build-mobile-targets-in-node.gyp-node.gypi.patch b/patches/build-mobile-targets-in-node.gyp-node.gypi.patch index 9f382a5963..15a9c503d0 100644 --- a/patches/build-mobile-targets-in-node.gyp-node.gypi.patch +++ b/patches/build-mobile-targets-in-node.gyp-node.gypi.patch @@ -21,7 +21,7 @@ Co-authored-by: Julia Samól 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/node.gyp b/node.gyp -index c58f4812e2..d8b6eb51f5 100644 +index 62c748b130..b6f06f9d44 100644 --- a/node.gyp +++ b/node.gyp @@ -68,6 +68,11 @@ @@ -36,7 +36,7 @@ index c58f4812e2..d8b6eb51f5 100644 '<@(node_builtin_shareable_builtins)', ], 'node_sources': [ -@@ -923,7 +928,8 @@ +@@ -925,7 +930,8 @@ '<@(node_quic_sources)', ], }], @@ -46,7 +46,7 @@ index c58f4812e2..d8b6eb51f5 100644 'target_arch=="x64" and ' 'node_target_type=="executable"', { 'defines': [ 'NODE_ENABLE_LARGE_CODE_PAGES=1' ], -@@ -1405,8 +1411,9 @@ +@@ -1422,8 +1428,9 @@ ['OS=="solaris"', { 'ldflags': [ '-I<(SHARED_INTERMEDIATE_DIR)' ] }], @@ -58,7 +58,7 @@ index c58f4812e2..d8b6eb51f5 100644 'type': 'none', }], [ 'node_shared=="true"', { -@@ -1627,7 +1634,8 @@ +@@ -1581,7 +1588,8 @@ [ 'node_shared_libuv=="false"', { 'dependencies': [ 'deps/uv/uv.gyp:libuv#host' ], }], diff --git a/patches/build-v8-mobile-host-target-settings-in-v8-gypfiles.patch b/patches/build-v8-mobile-host-target-settings-in-v8-gypfiles.patch index 92c0c6032b..fd43fd6b46 100644 --- a/patches/build-v8-mobile-host-target-settings-in-v8-gypfiles.patch +++ b/patches/build-v8-mobile-host-target-settings-in-v8-gypfiles.patch @@ -46,7 +46,7 @@ index e614c39a6b..711428f898 100644 'configurations': { 'Debug': { diff --git a/tools/v8_gypfiles/v8.gyp b/tools/v8_gypfiles/v8.gyp -index f90a29d102..b814fee544 100644 +index 370001847e..3f1d3ee860 100644 --- a/tools/v8_gypfiles/v8.gyp +++ b/tools/v8_gypfiles/v8.gyp @@ -868,6 +868,15 @@ diff --git a/patches/ci-remove-upstream-only-workflows-and-config.patch b/patches/ci-remove-upstream-only-workflows-and-config.patch index e9ef98a33e..df304c708b 100644 --- a/patches/ci-remove-upstream-only-workflows-and-config.patch +++ b/patches/ci-remove-upstream-only-workflows-and-config.patch @@ -23,14 +23,15 @@ is read only from the default branch and is left untouched. .github/ISSUE_TEMPLATE/config.yml | 14 - .github/SUPPORT.md | 27 -- .github/label-pr-config.yml | 224 ------------ - .github/workflows/auto-start-ci.yml | 74 ---- + .github/workflows/author-ready-conflicts.yml | 48 --- + .github/workflows/auto-start-ci.yml | 78 ----- .github/workflows/build-tarball.yml | 96 ------ .github/workflows/close-stalled.yml | 36 -- - .github/workflows/codeql.yml | 42 --- + .github/workflows/codeql.yml | 44 --- .github/workflows/comment-labeled.yml | 57 ---- - .../commit-lint-problem-matcher.json | 13 - - .github/workflows/commit-lint.yml | 35 -- - .github/workflows/commit-queue.yml | 99 ------ + .github/workflows/commit-lint.yml | 56 --- + .github/workflows/commit-queue.yml | 201 ----------- + .github/workflows/contributor-guidance.yml | 141 -------- .../workflows/coverage-linux-without-intl.yml | 84 ----- .github/workflows/coverage-linux.yml | 84 ----- .github/workflows/coverage-windows.yml | 98 ------ @@ -46,7 +47,7 @@ is read only from the default branch and is left untouched. .github/workflows/lint-release-proposal.yml | 119 ------- .github/workflows/linters.yml | 250 -------------- .github/workflows/major-release.yml | 49 --- - .github/workflows/notify-on-push.yml | 61 ---- + .github/workflows/notify-on-push.yml | 64 ---- .github/workflows/notify-on-review-wanted.yml | 45 --- .github/workflows/post-release.yml | 33 -- .../remark-lint-problem-matcher.json | 22 -- @@ -62,18 +63,19 @@ is read only from the default branch and is left untouched. .github/workflows/update-openssl.yml | 61 ---- .github/workflows/update-v8.yml | 57 ---- .github/workflows/update-wpt.yml | 95 ------ - 42 files changed, 3286 deletions(-) + 43 files changed, 3594 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/SUPPORT.md delete mode 100644 .github/label-pr-config.yml + delete mode 100644 .github/workflows/author-ready-conflicts.yml delete mode 100644 .github/workflows/auto-start-ci.yml delete mode 100644 .github/workflows/build-tarball.yml delete mode 100644 .github/workflows/close-stalled.yml delete mode 100644 .github/workflows/codeql.yml delete mode 100644 .github/workflows/comment-labeled.yml - delete mode 100644 .github/workflows/commit-lint-problem-matcher.json delete mode 100644 .github/workflows/commit-lint.yml delete mode 100644 .github/workflows/commit-queue.yml + delete mode 100644 .github/workflows/contributor-guidance.yml delete mode 100644 .github/workflows/coverage-linux-without-intl.yml delete mode 100644 .github/workflows/coverage-linux.yml delete mode 100644 .github/workflows/coverage-windows.yml @@ -389,12 +391,69 @@ index 8b36066473..0000000000 - - wasi - - worker - - zlib +diff --git a/.github/workflows/author-ready-conflicts.yml b/.github/workflows/author-ready-conflicts.yml +deleted file mode 100644 +index f447c6b80a..0000000000 +--- a/.github/workflows/author-ready-conflicts.yml ++++ /dev/null +@@ -1,48 +0,0 @@ +-name: Unlabel not-ready pull requests +- +-on: +- schedule: +- - cron: 15 3 * * * +- +-permissions: +- contents: read +- +-jobs: +- remove-label: +- name: Remove author ready +- if: github.repository == 'nodejs/node' +- runs-on: ubuntu-slim +- permissions: +- pull-requests: write +- steps: +- - name: Remove the label and comment +- env: +- GH_TOKEN: ${{ github.token }} +- MESSAGE: >- +- This pull request has conflicts with its base branch, removing the +- `author ready` label. +- +- Please +- [rebase](https://github.com/nodejs/node/blob/HEAD/doc/contributing/pull-requests.md#step-5-rebase) +- your branch onto the latest base branch, resolve the conflicts +- locally, and force-push. +- +- Afterwards the pull request needs a fresh collaborator approval, +- and a collaborator will add the label back once it is +- [author ready](https://github.com/nodejs/node/blob/HEAD/doc/contributing/collaborator-guide.md#author-ready-pull-requests) +- again. +- run: | +- # Requesting the mergeable field makes GitHub compute the merge state, +- # pull requests still reported as UNKNOWN are picked up by a later run. +- gh pr list \ +- --repo "$GITHUB_REPOSITORY" \ +- --label 'author ready' \ +- --state open \ +- --limit 100 \ +- --json number,mergeable \ +- --jq '.[] | select(.mergeable == "CONFLICTING") | .number' | +- while read -r number; do +- gh pr edit "$number" --repo "$GITHUB_REPOSITORY" --remove-label 'author ready' +- printf '%s\n' "$MESSAGE" | +- gh pr comment "$number" --repo "$GITHUB_REPOSITORY" --body-file - +- done diff --git a/.github/workflows/auto-start-ci.yml b/.github/workflows/auto-start-ci.yml deleted file mode 100644 -index 34488eeed6..0000000000 +index 8c01b0592c..0000000000 --- a/.github/workflows/auto-start-ci.yml +++ /dev/null -@@ -1,74 +0,0 @@ +@@ -1,78 +0,0 @@ +-# This action uses the following secrets: +-# JENKINS_USER: GitHub user whose Jenkins token is defined below +-# JENKINS_TOKEN: Jenkins token, to be used to start CI -name: Auto Start CI - -on: @@ -403,7 +462,7 @@ index 34488eeed6..0000000000 - # optimistic, it can take longer to run. - # To understand why `schedule` is used instead of other events, refer to - # ./doc/contributing/commit-queue.md -- - cron: '*/5 * * * *' +- - cron: 3/5 * * * * - -concurrency: ${{ github.workflow }} - @@ -433,17 +492,19 @@ index 34488eeed6..0000000000 - -t '{{ range . }}{{ .number }} {{ end }}' \ - --limit 5)" >> "$GITHUB_OUTPUT" - env: -- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +- GH_TOKEN: ${{ github.token }} - start-ci: - permissions: +- checks: read - contents: read - pull-requests: write +- statuses: read - needs: get-prs-for-ci - if: needs.get-prs-for-ci.outputs.numbers != '' - runs-on: ubuntu-slim - steps: - - name: Install Node.js -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NODE_VERSION }} - @@ -456,10 +517,10 @@ index 34488eeed6..0000000000 - ncu-config set token "$GH_TOKEN" - ncu-config set jenkins_token "$JENKINS_TOKEN" - ncu-config set owner "$GITHUB_REPOSITORY_OWNER" -- ncu-config set repo "$(echo "$GITHUB_REPOSITORY" | cut -d/ -f2)" +- ncu-config set repo "${GITHUB_REPOSITORY#*/}" - env: - USERNAME: ${{ secrets.JENKINS_USER }} -- GH_TOKEN: ${{ secrets.GH_USER_TOKEN }} +- GH_TOKEN: ${{ github.token }} - JENKINS_TOKEN: ${{ secrets.JENKINS_TOKEN }} - - - name: Start the CI @@ -467,11 +528,10 @@ index 34488eeed6..0000000000 - curl -fsSL "https://github.com/${GITHUB_REPOSITORY}/raw/${GITHUB_SHA}/tools/actions/start-ci.sh" \ - | sh -s -- ${{ needs.get-prs-for-ci.outputs.numbers }} - env: -- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} -- GH_REPO: ${{ github.repository }} +- GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/build-tarball.yml b/.github/workflows/build-tarball.yml deleted file mode 100644 -index 0f17013755..0000000000 +index 8b306b59fe..0000000000 --- a/.github/workflows/build-tarball.yml +++ /dev/null @@ -1,96 +0,0 @@ @@ -518,7 +578,7 @@ index 0f17013755..0000000000 - if: github.event.pull_request.draft == false - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -545,7 +605,7 @@ index 0f17013755..0000000000 - SCCACHE_GHA_ENABLED: ${{ github.base_ref == 'main' || github.ref_name == 'main' }} - SCCACHE_IDLE_TIMEOUT: '0' - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - sparse-checkout: .github/actions/install-clang @@ -558,7 +618,7 @@ index 0f17013755..0000000000 - if: github.base_ref == 'main' || github.ref_name == 'main' - uses: Mozilla-Actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11 - with: -- version: v0.16.0 +- version: v0.17.0 - - name: Download tarball - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 - with: @@ -615,10 +675,10 @@ index 3c7ab04339..0000000000 - days-before-stale: -1 diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml deleted file mode 100644 -index 23084c68ac..0000000000 +index 1b3179ef4a..0000000000 --- a/.github/workflows/codeql.yml +++ /dev/null -@@ -1,42 +0,0 @@ +@@ -1,44 +0,0 @@ -name: Run CodeQL - -on: @@ -645,20 +705,22 @@ index 23084c68ac..0000000000 - - steps: - - name: Checkout repository -- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 +- with: +- persist-credentials: false - - # Initializes the CodeQL tools for scanning. - - name: Initialize CodeQL -- uses: github/codeql-action/init@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 +- uses: github/codeql-action/init@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0 - with: - languages: ${{ matrix.language }} - config-file: ./.github/codeql-config.yml - - - name: Autobuild -- uses: github/codeql-action/autobuild@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 +- uses: github/codeql-action/autobuild@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0 - - - name: Perform CodeQL Analysis -- uses: github/codeql-action/analyze@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 +- uses: github/codeql-action/analyze@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0 - with: - category: /language:${{matrix.language}} diff --git a/.github/workflows/comment-labeled.yml b/.github/workflows/comment-labeled.yml @@ -724,35 +786,16 @@ index 5e6f936d38..0000000000 - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NUMBER: ${{ github.event.pull_request.number }} - run: gh pr comment "$NUMBER" --repo "$GITHUB_REPOSITORY" --body "$NOTABLE_CHANGE_MESSAGE" -diff --git a/.github/workflows/commit-lint-problem-matcher.json b/.github/workflows/commit-lint-problem-matcher.json -deleted file mode 100644 -index 72dd13b9e0..0000000000 ---- a/.github/workflows/commit-lint-problem-matcher.json -+++ /dev/null -@@ -1,13 +0,0 @@ --{ -- "problemMatcher": [ -- { -- "owner": "core-validate-commit", -- "pattern": [ -- { -- "regexp": "^not ok \\d+ (.*)$", -- "message": 1 -- } -- ] -- } -- ] --} diff --git a/.github/workflows/commit-lint.yml b/.github/workflows/commit-lint.yml deleted file mode 100644 -index 896340ba3a..0000000000 +index 6b173d8bc9..0000000000 --- a/.github/workflows/commit-lint.yml +++ /dev/null -@@ -1,35 +0,0 @@ +@@ -1,56 +0,0 @@ -name: First commit message adheres to guidelines - -on: -- pull_request: +- pull_request_target: - branches: - - main - @@ -760,36 +803,57 @@ index 896340ba3a..0000000000 - NODE_VERSION: lts/* - -permissions: -- contents: read +- pull-requests: read +- +-concurrency: +- group: ${{ github.workflow }}-${{ github.event.pull_request.number }} +- cancel-in-progress: true - -jobs: - lint-commit-message: +- name: lint-commit-message - runs-on: ubuntu-slim - steps: -- - name: Compute number of commits in the PR -- id: nb-of-commits -- run: | -- echo "plusOne=$((${{ github.event.pull_request.commits }} + 1))" >> $GITHUB_OUTPUT -- echo "minusOne=$((${{ github.event.pull_request.commits }} - 1))" >> $GITHUB_OUTPUT -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 -- with: -- fetch-depth: ${{ steps.nb-of-commits.outputs.plusOne }} -- persist-credentials: false -- - run: git reset HEAD^2 - - name: Install Node.js -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NODE_VERSION }} -- - name: Validate commit message -- run: | -- echo "::add-matcher::.github/workflows/commit-lint-problem-matcher.json" -- git rev-parse HEAD~${{ steps.nb-of-commits.outputs.minusOne }} | xargs npx -q core-validate-commit --no-validate-metadata --tap +- - name: Validate first commit message +- uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0 +- with: +- script: | +- const { data: [commit] } = await github.rest.pulls.listCommits({ +- ...context.repo, +- pull_number: context.issue.number, +- per_page: 1, +- }); +- if (!commit) { +- throw new Error('No commits found in pull request'); +- } +- const { exitCode, stdout, stderr } = await exec.getExecOutput('npx', [ +- '-q', '--yes', '--ignore-scripts', 'core-validate-commit@6.0.0', +- '--no-validate-metadata', '--tap', '-', +- ], { +- cwd: process.env.RUNNER_TEMP, +- input: Buffer.from(JSON.stringify([{ +- id: commit.sha, +- message: commit.commit.message, +- author: commit.commit.author, +- }])), +- silent: true, +- ignoreReturnCode: true, +- }); +- if (exitCode !== 0) { +- core.setFailed(stdout + stderr || 'Commit message validation failed'); +- } else { +- core.info('First commit message passes validation'); +- } diff --git a/.github/workflows/commit-queue.yml b/.github/workflows/commit-queue.yml deleted file mode 100644 -index 7af7122687..0000000000 +index 8f29a390c6..0000000000 --- a/.github/workflows/commit-queue.yml +++ /dev/null -@@ -1,99 +0,0 @@ +@@ -1,201 +0,0 @@ -# This action requires the following secrets to be set on the repository: -# GH_USER_TOKEN: GitHub user token, to be used by ncu and to push changes -# JENKINS_USER: GitHub user whose Jenkins token is defined below @@ -803,7 +867,7 @@ index 7af7122687..0000000000 - # be read-only, and the Action won't have access to any other repository - # secrets, which it needs to access Jenkins API. - schedule: -- - cron: '*/5 * * * *' +- - cron: 3/5 * * * * - -concurrency: ${{ github.workflow }} - @@ -814,84 +878,333 @@ index 7af7122687..0000000000 - contents: read - -jobs: -- get_mergeable_prs: +- get_candidate_prs: - permissions: - pull-requests: read - if: github.repository == 'nodejs/node' - runs-on: ubuntu-slim - outputs: -- numbers: ${{ steps.get_mergeable_prs.outputs.numbers }} +- aged_prs: ${{ steps.get_candidate_prs.outputs.aged_prs }} +- candidates: ${{ steps.get_candidate_prs.outputs.candidates }} - steps: -- - name: Get Pull Requests -- id: get_mergeable_prs +- - name: Get Pull Request Candidates +- id: get_candidate_prs - run: | -- prs=$(gh pr list \ +- list_prs() { +- gh pr list \ - --repo "$GITHUB_REPOSITORY" \ - --base "$GITHUB_REF_NAME" \ - --label 'commit-queue' \ +- "$@" \ - --json 'number' \ -- --search "created:<=$(date --date="2 days ago" +"%Y-%m-%dT%H:%M:%S%z") -label:blocked" \ - -t '{{ range . }}{{ .number }} {{ end }}' \ -- --limit 100) -- fast_track_prs=$(gh pr list \ -- --repo "$GITHUB_REPOSITORY" \ -- --base "$GITHUB_REF_NAME" \ -- --label 'commit-queue' \ +- --limit 100 +- } +- aged_prs=$(list_prs \ +- --search "created:<=$(date --date="2 days ago" +"%Y-%m-%dT%H:%M:%S%z") -label:blocked") +- fast_track_prs=$(list_prs \ - --label 'fast-track' \ -- --search "-label:blocked" \ -- --json 'number' \ -- -t '{{ range . }}{{ .number }} {{ end }}' \ -- --limit 100) -- numbers=$(echo $prs' '$fast_track_prs | jq -r -s 'unique | join(" ")') -- echo "numbers=$numbers" >> "$GITHUB_OUTPUT" +- --search "-label:blocked") +- candidates=$(printf '%s %s\n' "$fast_track_prs" "$aged_prs" | +- jq -r -s 'reduce .[] as $pr ([]; if index($pr) then . else . + [$pr] end) | join(" ")') +- echo "aged_prs=$aged_prs" >> "$GITHUB_OUTPUT" +- echo "candidates=$candidates" >> "$GITHUB_OUTPUT" - env: -- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +- GH_TOKEN: ${{ github.token }} - commitQueue: -- needs: get_mergeable_prs -- if: needs.get_mergeable_prs.outputs.numbers != '' +- needs: get_candidate_prs +- if: needs.get_candidate_prs.outputs.candidates != '' +- permissions: +- checks: read +- contents: read +- pull-requests: read +- statuses: read - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 -- with: -- # A personal token is required because pushing with GITHUB_TOKEN will -- # prevent commits from running CI after they land. It needs -- # to be set here because `checkout` configures GitHub authentication -- # for push as well. -- token: ${{ secrets.GH_USER_TOKEN }} -- -- # Install dependencies - - name: Install Node.js -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NODE_VERSION }} +- - - name: Install @node-core/utils - run: npm install -g @node-core/utils - -- - name: Set variables -- run: | -- echo "REPOSITORY=$(echo "$GITHUB_REPOSITORY" | cut -d/ -f2)" >> "$GITHUB_ENV" -- - - name: Configure @node-core/utils - run: | -- ncu-config set branch "${GITHUB_REF_NAME}" -- ncu-config set upstream origin -- ncu-config set username "$USERNAME" -- ncu-config set token "$GITHUB_TOKEN" -- ncu-config set jenkins_token "$JENKINS_TOKEN" -- ncu-config set repo "${REPOSITORY}" -- ncu-config set owner "${GITHUB_REPOSITORY_OWNER}" +- # Keep the config outside the workspace so checkout does not remove it. +- ncu-config --global set branch "${GITHUB_REF_NAME}" +- ncu-config --global set upstream origin +- ncu-config --global set username "$USERNAME" +- ncu-config --global set token "$GH_TOKEN" +- ncu-config --global set jenkins_token "$JENKINS_TOKEN" +- ncu-config --global set repo "${GITHUB_REPOSITORY#*/}" +- ncu-config --global set owner "${GITHUB_REPOSITORY_OWNER}" - env: - USERNAME: ${{ secrets.JENKINS_USER }} -- GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} +- GH_TOKEN: ${{ github.token }} - JENKINS_TOKEN: ${{ secrets.JENKINS_TOKEN }} - +- - name: Filter Pull Requests +- id: get_mergeable_prs +- run: | +- readme="${RUNNER_TEMP}/README.md" +- curl -fsSLo "$readme" "https://github.com/${GITHUB_REPOSITORY}/raw/${GITHUB_SHA}/README.md" +- +- numbers= +- lacks_second_approval_prs= +- # shellcheck disable=SC2086 +- for pr in $CANDIDATES; do +- metadata="${RUNNER_TEMP}/metadata-${pr}.json" +- output="${RUNNER_TEMP}/metadata-${pr}.txt" +- if git node metadata "$pr" \ +- --readme "$readme" \ +- --json > "$metadata" 2> "$output"; then +- metadata_status=0 +- else +- metadata_status=$? +- fi +- +- if [ -s "$output" ]; then +- cat "$output" +- fi +- +- case "$metadata_status" in +- 0|2[0-9]|4[0-9]) ;; +- *) +- echo "git node metadata failed for pr ${pr} with exit code ${metadata_status}" +- exit 1 +- ;; +- esac +- +- metadata_exit_code=$(jq -r '.exitCode' "$metadata") || { +- echo "failed to parse metadata JSON for pr ${pr}" +- exit 1 +- } +- if [ "$metadata_exit_code" != "$metadata_status" ]; then +- echo "metadata JSON exitCode mismatch for pr ${pr}" +- exit 1 +- fi +- metadata_reason_codes=$(jq -r '.reasonCodes | join(", ")' "$metadata") || { +- echo "failed to parse metadata reason codes for pr ${pr}" +- exit 1 +- } +- +- if [ "$metadata_status" -eq 0 ]; then +- echo "pr ${pr} is ready for the commit queue" +- numbers="$numbers $pr" +- continue +- fi +- +- if [ "$metadata_status" -ge 20 ] && [ "$metadata_status" -le 29 ]; then +- echo "pr ${pr} skipped, not ready to land" +- echo "reason codes: ${metadata_reason_codes}" +- if jq -e ' +- (.reasonCodes | index("wait-time")) and +- (.pullRequest.labels | index("lacks-second-approval") | not) +- ' "$metadata" > /dev/null; then +- case " $AGED_PRS " in +- *" $pr "*) lacks_second_approval_prs="$lacks_second_approval_prs $pr" ;; +- esac +- fi +- continue +- fi +- +- echo "pr ${pr} will be handled by the commit queue" +- echo "reason codes: ${metadata_reason_codes}" +- numbers="$numbers $pr" +- done +- +- numbers=$(echo "$numbers" | xargs) +- lacks_second_approval_prs=$(echo "$lacks_second_approval_prs" | xargs) +- echo "numbers=$numbers" >> "$GITHUB_OUTPUT" +- echo "lacks_second_approval_prs=$lacks_second_approval_prs" >> "$GITHUB_OUTPUT" +- env: +- AGED_PRS: ${{ needs.get_candidate_prs.outputs.aged_prs }} +- CANDIDATES: ${{ needs.get_candidate_prs.outputs.candidates }} +- GH_TOKEN: ${{ github.token }} +- +- - name: Label Pull Requests Lacking a Second Approval +- if: steps.get_mergeable_prs.outputs.lacks_second_approval_prs != '' +- run: | +- # shellcheck disable=SC2086 +- for pr in $PULL_REQUESTS; do +- if ! gh -R "$GITHUB_REPOSITORY" pr edit "$pr" --add-label 'lacks-second-approval'; then +- echo "::warning::Failed to add lacks-second-approval to PR ${pr}" +- fi +- done +- env: +- GH_TOKEN: ${{ secrets.GH_USER_TOKEN }} +- PULL_REQUESTS: ${{ steps.get_mergeable_prs.outputs.lacks_second_approval_prs }} +- +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 +- if: steps.get_mergeable_prs.outputs.numbers != '' +- with: +- # A personal token is required because pushing with GITHUB_TOKEN will +- # prevent commits from running CI after they land. It needs +- # to be set here because `checkout` configures GitHub authentication +- # for push as well. +- token: ${{ secrets.GH_USER_TOKEN }} +- persist-credentials: true +- - - name: Start the Commit Queue -- run: ./tools/actions/commit-queue.sh "${GITHUB_REPOSITORY_OWNER}" "${REPOSITORY}" ${{ needs.get_mergeable_prs.outputs.numbers }} +- if: steps.get_mergeable_prs.outputs.numbers != '' +- run: | +- git config --local user.email "github-bot@iojs.org" +- git config --local user.name "Node.js GitHub Bot" +- ncu-config set token "$GH_TOKEN" +- ./tools/actions/commit-queue.sh ${{ steps.get_mergeable_prs.outputs.numbers }} - env: -- GITHUB_TOKEN: ${{ secrets.GH_USER_TOKEN }} +- GH_TOKEN: ${{ secrets.GH_USER_TOKEN }} +diff --git a/.github/workflows/contributor-guidance.yml b/.github/workflows/contributor-guidance.yml +deleted file mode 100644 +index 4035ea9320..0000000000 +--- a/.github/workflows/contributor-guidance.yml ++++ /dev/null +@@ -1,141 +0,0 @@ +-# This action requires the following secrets to be set on the repository: +-# GH_USER_TOKEN: GitHub user token, used because FIRST_TIMER and +-# FIRST_TIME_CONTRIBUTOR associations are only returned for +-# privileged API calls +- +-name: Contributor guidance +- +-on: +- pull_request_target: +- types: [opened] +- +-permissions: {} +- +-jobs: +- contributor: +- name: Resolve contributor status +- # Avoid allocating a runner unless a welcome or scan is a plausible outcome. +- if: >- +- github.run_attempt == 1 && +- github.repository == 'nodejs/node' && +- github.event.pull_request.user.type != 'Bot' && +- (github.event.pull_request.author_association == 'CONTRIBUTOR' || +- github.event.pull_request.author_association == 'FIRST_TIMER' || +- github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR' || +- github.event.pull_request.author_association == 'NONE') +- runs-on: ubuntu-slim +- outputs: +- is_first_time: ${{ steps.resolve.outputs.is_first_time }} +- # The event association may not expose private organization membership, +- # so gate the guidance job on the privileged API result. +- should_scan: ${{ steps.resolve.outputs.should_scan }} +- steps: +- - name: Check author association +- id: resolve +- env: +- EVENT_ASSOCIATION: ${{ github.event.pull_request.author_association }} +- GH_TOKEN: ${{ secrets.GH_USER_TOKEN }} +- NUMBER: ${{ github.event.pull_request.number }} +- run: | +- api_association=$(gh api "/repos/$GITHUB_REPOSITORY/pulls/$NUMBER" \ +- --jq '.author_association') +- echo "API author association: $api_association" +- echo "Event author association: $EVENT_ASSOCIATION" +- +- case "$api_association" in +- FIRST_TIMER|FIRST_TIME_CONTRIBUTOR) +- echo 'is_first_time=true' >> "$GITHUB_OUTPUT" +- echo 'should_scan=true' >> "$GITHUB_OUTPUT" +- ;; +- CONTRIBUTOR|NONE) +- echo 'is_first_time=false' >> "$GITHUB_OUTPUT" +- echo 'should_scan=true' >> "$GITHUB_OUTPUT" +- ;; +- COLLABORATOR|MANNEQUIN|MEMBER|OWNER) +- echo 'is_first_time=false' >> "$GITHUB_OUTPUT" +- echo 'should_scan=false' >> "$GITHUB_OUTPUT" +- ;; +- *) +- echo "Unexpected author association: $api_association" >&2 +- exit 1 +- ;; +- esac +- +- guidance: +- name: Apply contributor guidance +- needs: contributor +- if: needs.contributor.outputs.should_scan == 'true' +- runs-on: ubuntu-slim +- permissions: +- contents: read +- pull-requests: write +- steps: +- - name: Scan contributor activity +- id: agentscan +- # The welcome should still be posted if this advisory scan fails. +- continue-on-error: true +- uses: MatteoGabriele/agentscan-action@8112fb79b33fafb8506159df20129a34209ac410 # v2.5.0 +- with: +- github-token: ${{ github.token }} +- mode: labels +- scan-pull-requests: true +- scan-issues: false +- auto-close: false +- honeypot: false +- # The privileged association check skips trusted authors before this job, +- # so `trusted-author-associations` would be redundant here. +- # trusted-author-associations: collaborator,member,owner +- +- - name: Comment with contributor guidance +- if: env.IS_FIRST_TIME == 'true' || env.ADD_CAUTION == 'true' +- env: +- ADD_CAUTION: >- +- ${{ +- steps.agentscan.outputs.classification == 'mixed' || +- steps.agentscan.outputs.classification == 'automation' || +- steps.agentscan.outputs['community-flagged'] == 'true' +- }} +- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +- IS_FIRST_TIME: ${{ needs.contributor.outputs.is_first_time }} +- NUMBER: ${{ github.event.pull_request.number }} +- WELCOME_MESSAGE: >2- +- Welcome to Node.js, and thank you for your first contribution! +- +- Before review, please take a moment to read: +- +- * the [guide for first-time contributors](https://github.com/nodejs/node/blob/HEAD/doc/contributing/first-contributions.md) +- * the [contribution and automation policies](https://github.com/nodejs/node/blob/HEAD/CONTRIBUTING.md) +- * the [pull request guide](https://github.com/nodejs/node/blob/HEAD/doc/contributing/pull-requests.md) +- * the [AI use policy](https://github.com/nodejs/node/blob/HEAD/doc/contributing/ai-guidelines.md) +- * the [Code of Conduct](https://github.com/nodejs/admin/blob/HEAD/CODE_OF_CONDUCT.md) +- +- Please make sure every commit is +- [signed off](https://github.com/nodejs/node/blob/HEAD/doc/contributing/pull-requests.md#step-4-commit). +- For a first pull request, GitHub Actions require collaborator +- approval and Jenkins CI must be started by a collaborator or triager, +- so an initial wait is normal. +- CAUTION_MESSAGE: >- +- > [!CAUTION] +- +- > AgentScan found account activity patterns that may be consistent with +- automation. This is a heuristic, not proof that this pull request was +- opened by an agent or violates policy. AI-assisted contributions are +- permitted, but automated tooling must not open pull requests without +- advance approval, and contributors must personally understand, test, +- verify, and take responsibility for every submitted change. See the +- [AgentScan analysis](https://agentscan.tools/user/${{ github.event.pull_request.user.login }}), +- [AI use policy](https://github.com/nodejs/node/blob/HEAD/doc/contributing/ai-guidelines.md), +- and +- [automation policy](https://github.com/nodejs/node/blob/HEAD/CONTRIBUTING.md#automation-and-bots) +- for additional context. +- run: | +- if [[ "$IS_FIRST_TIME" == "true" && "$ADD_CAUTION" == "true" ]]; then +- body="$WELCOME_MESSAGE"$'\n\n'"$CAUTION_MESSAGE" +- elif [[ "$IS_FIRST_TIME" == "true" ]]; then +- body="$WELCOME_MESSAGE" +- else +- body="$CAUTION_MESSAGE" +- fi +- +- printf '%s\n' "$body" | +- gh pr comment "$NUMBER" --repo "$GITHUB_REPOSITORY" --body-file - diff --git a/.github/workflows/coverage-linux-without-intl.yml b/.github/workflows/coverage-linux-without-intl.yml deleted file mode 100644 -index a76d4d47e5..0000000000 +index 61309d3d6a..0000000000 --- a/.github/workflows/coverage-linux-without-intl.yml +++ /dev/null @@ -1,84 +0,0 @@ @@ -946,7 +1259,7 @@ index a76d4d47e5..0000000000 - if: github.event.pull_request.draft == false - runs-on: ubuntu-24.04 - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -957,7 +1270,7 @@ index a76d4d47e5..0000000000 - if: github.base_ref == 'main' || github.ref_name == 'main' - uses: Mozilla-Actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11 - with: -- version: v0.16.0 +- version: v0.17.0 - - name: Install gcovr - run: pip install gcovr==7.2 - - name: Configure @@ -981,7 +1294,7 @@ index a76d4d47e5..0000000000 - directory: ./coverage diff --git a/.github/workflows/coverage-linux.yml b/.github/workflows/coverage-linux.yml deleted file mode 100644 -index 65f52f5b36..0000000000 +index 4d350ebd2e..0000000000 --- a/.github/workflows/coverage-linux.yml +++ /dev/null @@ -1,84 +0,0 @@ @@ -1036,7 +1349,7 @@ index 65f52f5b36..0000000000 - if: github.event.pull_request.draft == false - runs-on: ubuntu-24.04-arm - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -1047,7 +1360,7 @@ index 65f52f5b36..0000000000 - if: github.base_ref == 'main' || github.ref_name == 'main' - uses: Mozilla-Actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11 - with: -- version: v0.16.0 +- version: v0.17.0 - - name: Install gcovr - run: pip install gcovr==7.2 - - name: Configure @@ -1071,7 +1384,7 @@ index 65f52f5b36..0000000000 - directory: ./coverage diff --git a/.github/workflows/coverage-windows.yml b/.github/workflows/coverage-windows.yml deleted file mode 100644 -index cbb5a776cb..0000000000 +index d735ea551c..0000000000 --- a/.github/workflows/coverage-windows.yml +++ /dev/null @@ -1,98 +0,0 @@ @@ -1146,7 +1459,7 @@ index cbb5a776cb..0000000000 - if: github.event.pull_request.draft == false - runs-on: windows-2025 - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -1175,7 +1488,7 @@ index cbb5a776cb..0000000000 - directory: ./coverage diff --git a/.github/workflows/create-release-proposal.yml b/.github/workflows/create-release-proposal.yml deleted file mode 100644 -index 883bb48b0d..0000000000 +index 735b15ffd1..0000000000 --- a/.github/workflows/create-release-proposal.yml +++ /dev/null @@ -1,81 +0,0 @@ @@ -1214,14 +1527,14 @@ index 883bb48b0d..0000000000 - RELEASE_LINE: ${{ inputs.release-line }} - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - ref: ${{ env.STAGING_BRANCH }} - persist-credentials: false - - # Install dependencies - - name: Install Node.js -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NODE_VERSION }} - @@ -1262,7 +1575,7 @@ index 883bb48b0d..0000000000 - BOT_TOKEN: ${{ secrets.GH_USER_TOKEN }} diff --git a/.github/workflows/daily-wpt-fyi.yml b/.github/workflows/daily-wpt-fyi.yml deleted file mode 100644 -index 0895f1353e..0000000000 +index 1078899499..0000000000 --- a/.github/workflows/daily-wpt-fyi.yml +++ /dev/null @@ -1,177 +0,0 @@ @@ -1317,7 +1630,7 @@ index 0895f1353e..0000000000 - run: echo "NIGHTLY=$(curl -s https://nodejs.org/download/nightly/index.json | jq -r '[.[] | select(.files[] | contains("linux-arm64"))][0].version')" >> $GITHUB_ENV - - name: Install Node.js - id: setup-node -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NIGHTLY || matrix.node-version }} - check-latest: true @@ -1329,7 +1642,7 @@ index 0895f1353e..0000000000 - SHORT_SHA=$(node -p 'process.version.split(/-nightly\d{8}/)[1]') - echo "NIGHTLY_REF=$(gh api /repos/nodejs/node/commits/$SHORT_SHA --jq '.sha')" >> $GITHUB_ENV - - name: Checkout ${{ steps.setup-node.outputs.node-version }} -- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - ref: ${{ env.NIGHTLY_REF || steps.setup-node.outputs.node-version }} @@ -1345,7 +1658,7 @@ index 0895f1353e..0000000000 - run: rm -rf wpt - working-directory: test/fixtures - - name: Checkout epochs/daily WPT -- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - repository: web-platform-tests/wpt - persist-credentials: false @@ -1376,7 +1689,7 @@ index 0895f1353e..0000000000 - # version-specific checkout above overwrites .github/actions/ - - name: Checkout undici WPT actions - if: ${{ env.WPT_REPORT != '' }} -- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - sparse-checkout: | - .github/actions/undici-wpt-current @@ -1445,7 +1758,7 @@ index 0895f1353e..0000000000 - done diff --git a/.github/workflows/daily.yml b/.github/workflows/daily.yml deleted file mode 100644 -index 6c4b2ec9a4..0000000000 +index b7a616e2df..0000000000 --- a/.github/workflows/daily.yml +++ /dev/null @@ -1,30 +0,0 @@ @@ -1467,11 +1780,11 @@ index 6c4b2ec9a4..0000000000 - if: github.repository == 'nodejs/node' || github.event_name == 'workflow_dispatch' - runs-on: ubuntu-24.04-arm - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Use Node.js ${{ env.NODE_VERSION }} -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NODE_VERSION }} - - name: Build lto @@ -1481,7 +1794,7 @@ index 6c4b2ec9a4..0000000000 - ninja -C out/Release diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml deleted file mode 100644 -index 6e5dfe7326..0000000000 +index 693d9ad3dd..0000000000 --- a/.github/workflows/doc.yml +++ /dev/null @@ -1,41 +0,0 @@ @@ -1511,11 +1824,11 @@ index 6e5dfe7326..0000000000 - if: github.event.pull_request.draft == false - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Use Node.js ${{ env.NODE_VERSION }} -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NODE_VERSION }} - - name: Build @@ -1528,7 +1841,7 @@ index 6e5dfe7326..0000000000 - run: NODE=$(command -v node) make test-doc-ci TEST_CI_ARGS="-p actions --measure-flakiness 9" diff --git a/.github/workflows/find-inactive-collaborators.yml b/.github/workflows/find-inactive-collaborators.yml deleted file mode 100644 -index e6e0c7f54f..0000000000 +index 8c74fda224..0000000000 --- a/.github/workflows/find-inactive-collaborators.yml +++ /dev/null @@ -1,50 +0,0 @@ @@ -1553,13 +1866,13 @@ index e6e0c7f54f..0000000000 - runs-on: ubuntu-slim - - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - persist-credentials: false - - - name: Use Node.js ${{ env.NODE_VERSION }} -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NODE_VERSION }} - @@ -1584,7 +1897,7 @@ index e6e0c7f54f..0000000000 - title: 'meta: move one or more collaborators to emeritus' diff --git a/.github/workflows/find-inactive-tsc.yml b/.github/workflows/find-inactive-tsc.yml deleted file mode 100644 -index c1804b78d3..0000000000 +index d59f26b73b..0000000000 --- a/.github/workflows/find-inactive-tsc.yml +++ /dev/null @@ -1,62 +0,0 @@ @@ -1610,13 +1923,13 @@ index c1804b78d3..0000000000 - - steps: - - name: Checkout the repo -- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - persist-credentials: false - - - name: Clone nodejs/TSC repository -- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - path: .tmp @@ -1624,7 +1937,7 @@ index c1804b78d3..0000000000 - repository: nodejs/TSC - - - name: Use Node.js ${{ env.NODE_VERSION }} -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NODE_VERSION }} - @@ -1735,7 +2048,7 @@ index 03aa1fa9a8..0000000000 - configuration-path: .github/label-pr-config.yml diff --git a/.github/workflows/license-builder.yml b/.github/workflows/license-builder.yml deleted file mode 100644 -index a95ee13c45..0000000000 +index 3bdf3fc31d..0000000000 --- a/.github/workflows/license-builder.yml +++ /dev/null @@ -1,38 +0,0 @@ @@ -1758,7 +2071,7 @@ index a95ee13c45..0000000000 - if: github.repository == 'nodejs/node' - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - run: ./tools/license-builder.sh # Run the license builder tool @@ -1779,7 +2092,7 @@ index a95ee13c45..0000000000 - labels: meta diff --git a/.github/workflows/lint-release-proposal.yml b/.github/workflows/lint-release-proposal.yml deleted file mode 100644 -index e8ffab1784..0000000000 +index 027aee336a..0000000000 --- a/.github/workflows/lint-release-proposal.yml +++ /dev/null @@ -1,119 +0,0 @@ @@ -1808,7 +2121,7 @@ index e8ffab1784..0000000000 - contents: read - pull-requests: read - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - fetch-depth: 2 @@ -1904,7 +2217,7 @@ index e8ffab1784..0000000000 - GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/linters.yml b/.github/workflows/linters.yml deleted file mode 100644 -index 9a9177e01c..0000000000 +index 38980ecf6d..0000000000 --- a/.github/workflows/linters.yml +++ /dev/null @@ -1,250 +0,0 @@ @@ -1935,11 +2248,11 @@ index 9a9177e01c..0000000000 - if: github.event.pull_request.draft == false - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Use Node.js ${{ env.NODE_VERSION }} -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NODE_VERSION }} - - name: Lint addon docs @@ -1948,7 +2261,7 @@ index 9a9177e01c..0000000000 - if: github.event.pull_request.draft == false - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -1961,12 +2274,12 @@ index 9a9177e01c..0000000000 - if: ${{ github.event.pull_request && github.event.pull_request.draft == false && github.base_ref == github.event.repository.default_branch }} - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 0 - persist-credentials: false - - name: Use Node.js ${{ env.NODE_VERSION }} -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NODE_VERSION }} - - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -1997,11 +2310,11 @@ index 9a9177e01c..0000000000 - if: github.event.pull_request.draft == false - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Use Node.js ${{ env.NODE_VERSION }} -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NODE_VERSION }} - - name: Lint JavaScript files @@ -2044,7 +2357,7 @@ index 9a9177e01c..0000000000 - if: github.event.pull_request.draft == false - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - sparse-checkout: | @@ -2069,7 +2382,7 @@ index 9a9177e01c..0000000000 - if: github.event.pull_request.draft == false - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - sparse-checkout: | @@ -2091,7 +2404,7 @@ index 9a9177e01c..0000000000 - if: github.event.pull_request.draft == false - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - sparse-checkout: | @@ -2107,7 +2420,7 @@ index 9a9177e01c..0000000000 - # cannot use ubuntu-24.04-arm here because the docker image is x86 only - runs-on: ubuntu-latest - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - uses: mszostok/codeowners-validator@7f3f5e28c6d7b8dfae5731e54ce2272ca384592f @@ -2117,7 +2430,7 @@ index 9a9177e01c..0000000000 - if: ${{ github.event.pull_request }} - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - fetch-depth: 2 - persist-credentials: false @@ -2132,7 +2445,7 @@ index 9a9177e01c..0000000000 - lint-readme: - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - sparse-checkout: | @@ -2215,10 +2528,10 @@ index b65917f89e..0000000000 - GH_TOKEN: ${{ github.token }} diff --git a/.github/workflows/notify-on-push.yml b/.github/workflows/notify-on-push.yml deleted file mode 100644 -index e709df93a8..0000000000 +index 25421b8447..0000000000 --- a/.github/workflows/notify-on-push.yml +++ /dev/null -@@ -1,61 +0,0 @@ +@@ -1,64 +0,0 @@ -on: - push: - branches: @@ -2239,7 +2552,7 @@ index e709df93a8..0000000000 - runs-on: ubuntu-24.04-arm - steps: - - name: Slack Notification -- uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # 2.4.0 +- uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0 - env: - SLACK_COLOR: '#DE512A' - SLACK_ICON: https://github.com/nodejs.png?size=48 @@ -2253,12 +2566,15 @@ index e709df93a8..0000000000 - SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} - - validateCommitMessage: +- # If a commit is force-pushed out of the main branch, the `commits` array is +- # empty and there are no checks to run. +- if: github.event.commits[0] - name: Notify on Push on `main` with invalid message - # cannot use ubuntu-slim here because rtCamp/action-slack-notify is dockerized - runs-on: ubuntu-24.04-arm - steps: - - name: Install Node.js -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NODE_VERSION }} - - name: Validate commits @@ -2268,7 +2584,7 @@ index e709df93a8..0000000000 - COMMITS: ${{ toJSON(github.event.commits) }} - - name: Slack Notification - if: ${{ failure() && steps.commit-check.conclusion == 'failure' && github.repository == 'nodejs/node' }} -- uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # 2.4.0 +- uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0 - env: - SLACK_COLOR: '#DE512A' - SLACK_ICON: https://github.com/nodejs.png?size=48 @@ -2282,7 +2598,7 @@ index e709df93a8..0000000000 - SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }} diff --git a/.github/workflows/notify-on-review-wanted.yml b/.github/workflows/notify-on-review-wanted.yml deleted file mode 100644 -index 2f1f3af813..0000000000 +index effc6c209e..0000000000 --- a/.github/workflows/notify-on-review-wanted.yml +++ /dev/null @@ -1,45 +0,0 @@ @@ -2322,7 +2638,7 @@ index 2f1f3af813..0000000000 - fi - - - name: Slack Notification -- uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # 2.4.0 +- uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0 - env: - MSG_MINIMAL: actions url - SLACK_COLOR: '#3d85c6' @@ -2400,7 +2716,7 @@ index cfb281310a..0000000000 -} diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml deleted file mode 100644 -index f84c91e1a3..0000000000 +index 4a7415bc90..0000000000 --- a/.github/workflows/scorecard.yml +++ /dev/null @@ -1,81 +0,0 @@ @@ -2442,12 +2758,12 @@ index f84c91e1a3..0000000000 - - steps: - - name: Harden Runner -- uses: step-security/harden-runner@bf7454d06d71f1098171f2acdf0cd4708d7b5920 # v2.20.0 +- uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1 - with: - egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs - - - name: Checkout code -- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - @@ -2482,7 +2798,7 @@ index f84c91e1a3..0000000000 - - # Upload the results to GitHub's code scanning dashboard. - - name: Upload to code-scanning -- uses: github/codeql-action/upload-sarif@e4fba868fa4b1b91e1fdab776edc8cfbe6e9fb81 # v4.37.3 +- uses: github/codeql-action/upload-sarif@b96794f015dfd88f77b49b1c93e0fa7110f94c63 # v4.38.0 - with: - sarif_file: results.sarif diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml @@ -2544,7 +2860,7 @@ index eb5921edb9..0000000000 - remove-stale-when-updated: true diff --git a/.github/workflows/stress-test.yml b/.github/workflows/stress-test.yml deleted file mode 100644 -index eca8c6aa5a..0000000000 +index af1df77fe5..0000000000 --- a/.github/workflows/stress-test.yml +++ /dev/null @@ -1,114 +0,0 @@ @@ -2604,7 +2920,7 @@ index eca8c6aa5a..0000000000 - SCCACHE_GHA_ENABLED: 'true' - SCCACHE_IDLE_TIMEOUT: '0' - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - path: node @@ -2628,7 +2944,7 @@ index eca8c6aa5a..0000000000 - - name: Set up sccache - uses: Mozilla-Actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11 - with: -- version: v0.16.0 +- version: v0.17.0 - # This is needed due to https://github.com/nodejs/build/issues/3878 - - name: Cleanup - if: runner.os == 'macOS' @@ -2664,7 +2980,7 @@ index eca8c6aa5a..0000000000 - "$TEST_PATH" diff --git a/.github/workflows/test-internet.yml b/.github/workflows/test-internet.yml deleted file mode 100644 -index bbc9fc9436..0000000000 +index ee3a85d10f..0000000000 --- a/.github/workflows/test-internet.yml +++ /dev/null @@ -1,64 +0,0 @@ @@ -2716,7 +3032,7 @@ index bbc9fc9436..0000000000 - if: (github.event_name == 'schedule' && github.repository == 'nodejs/node') || (github.event.pull_request && github.event.pull_request.draft == false) - runs-on: ubuntu-24.04-arm - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Set up Python ${{ env.PYTHON_VERSION }} @@ -2727,14 +3043,14 @@ index bbc9fc9436..0000000000 - if: github.base_ref == 'main' || github.ref_name == 'main' - uses: Mozilla-Actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11 - with: -- version: v0.16.0 +- version: v0.17.0 - - name: Build - run: make build-ci -j4 V=1 CONFIG_FLAGS="--error-on-warn" - - name: Test Internet - run: make test-internet -j4 V=1; diff --git a/.github/workflows/test-linux-quic.yml b/.github/workflows/test-linux-quic.yml deleted file mode 100644 -index 64c2e7d7ea..0000000000 +index c1a57509c0..0000000000 --- a/.github/workflows/test-linux-quic.yml +++ /dev/null @@ -1,69 +0,0 @@ @@ -2785,7 +3101,7 @@ index 64c2e7d7ea..0000000000 - if: github.event.pull_request.draft == false - runs-on: ubuntu-24.04-arm - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - path: node @@ -2797,7 +3113,7 @@ index 64c2e7d7ea..0000000000 - if: github.base_ref == 'main' || github.ref_name == 'main' - uses: Mozilla-Actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11 - with: -- version: v0.16.0 +- version: v0.17.0 - - name: Build - working-directory: node - run: make build-ci -j4 V=1 CONFIG_FLAGS="--error-on-warn --experimental-quic" @@ -2809,7 +3125,7 @@ index 64c2e7d7ea..0000000000 - run: git add -A && git diff --name-only --exit-code --staged diff --git a/.github/workflows/test-linux.yml b/.github/workflows/test-linux.yml deleted file mode 100644 -index 887db1dab8..0000000000 +index 03f349fbed..0000000000 --- a/.github/workflows/test-linux.yml +++ /dev/null @@ -1,85 +0,0 @@ @@ -2869,7 +3185,7 @@ index 887db1dab8..0000000000 - matrix: - os: [ubuntu-24.04, ubuntu-24.04-arm] - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - path: node @@ -2881,7 +3197,7 @@ index 887db1dab8..0000000000 - if: github.base_ref == 'main' || github.ref_name == 'main' - uses: Mozilla-Actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11 - with: -- version: v0.16.0 +- version: v0.17.0 - - name: Build - working-directory: node - run: make build-ci -j4 V=1 CONFIG_FLAGS="--error-on-warn" @@ -2900,7 +3216,7 @@ index 887db1dab8..0000000000 - DIR: dir%20with $unusual"chars?'åß∂ƒ©∆¬…` diff --git a/.github/workflows/test-macos.yml b/.github/workflows/test-macos.yml deleted file mode 100644 -index 7db72c8568..0000000000 +index 29b9d4b0b9..0000000000 --- a/.github/workflows/test-macos.yml +++ /dev/null @@ -1,102 +0,0 @@ @@ -2956,7 +3272,7 @@ index 7db72c8568..0000000000 - SCCACHE_GHA_ENABLED: ${{ github.base_ref == 'main' || github.ref_name == 'main' }} - SCCACHE_IDLE_TIMEOUT: '0' - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - path: node @@ -2970,7 +3286,7 @@ index 7db72c8568..0000000000 - if: github.base_ref == 'main' || github.ref_name == 'main' - uses: Mozilla-Actions/sccache-action@fc920bf0ec8de6ee65d409111f7ec508035751ba # v0.0.11 - with: -- version: v0.16.0 +- version: v0.17.0 - # The `npm ci` for this step fails a lot as part of the Test step. Run it - # now so that we don't have to wait 2 hours for the Build step to pass - # first before that failure happens. (And if there's something about @@ -3008,7 +3324,7 @@ index 7db72c8568..0000000000 - DIR: dir%20with $unusual"chars?'åß∂ƒ©∆¬…` diff --git a/.github/workflows/timezone-update.yml b/.github/workflows/timezone-update.yml deleted file mode 100644 -index 94961f8ae6..0000000000 +index 481c20da4e..0000000000 --- a/.github/workflows/timezone-update.yml +++ /dev/null @@ -1,74 +0,0 @@ @@ -3035,12 +3351,12 @@ index 94961f8ae6..0000000000 - - steps: - - name: Checkout nodejs/node -- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - - name: Checkout unicode-org/icu-data -- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - path: icu-data - persist-credentials: false @@ -3088,7 +3404,7 @@ index 94961f8ae6..0000000000 - update-pull-request-title-and-body: true diff --git a/.github/workflows/tools.yml b/.github/workflows/tools.yml deleted file mode 100644 -index 900cf3ae00..0000000000 +index 89ed96f31d..0000000000 --- a/.github/workflows/tools.yml +++ /dev/null @@ -1,321 +0,0 @@ @@ -3380,7 +3696,7 @@ index 900cf3ae00..0000000000 - tail -n1 temp-output | grep "NEW_VERSION=" >> "$GITHUB_ENV" || true - rm temp-output - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - if: github.event_name == 'schedule' || inputs.id == 'all' || inputs.id == matrix.id - with: - persist-credentials: false @@ -3405,7 +3721,7 @@ index 900cf3ae00..0000000000 - # no-op if the base branch is already up-to-date. - with: - token: ${{ secrets.GH_USER_TOKEN }} -- branch: actions/${{ github.ref_name == 'main' || format('{0}/', github.ref_name) }}tools-update-${{ matrix.id }} # Custom branch *just* for this Action. +- branch: actions/${{ github.ref_name != 'main' && format('{0}/', github.ref_name) || '' }}tools-update-${{ matrix.id }} # Custom branch *just* for this Action. - delete-branch: true - commit-message: ${{ env.COMMIT_MSG }} - labels: ${{ matrix.label }} @@ -3415,7 +3731,7 @@ index 900cf3ae00..0000000000 - author: Node.js GitHub Bot diff --git a/.github/workflows/update-openssl.yml b/.github/workflows/update-openssl.yml deleted file mode 100644 -index 49f0006526..0000000000 +index 10eb3289a1..0000000000 --- a/.github/workflows/update-openssl.yml +++ /dev/null @@ -1,61 +0,0 @@ @@ -3436,7 +3752,7 @@ index 49f0006526..0000000000 - # Cannot use ubuntu-slim here because the update script requires Docker - runs-on: ubuntu-latest - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Check and download new OpenSSL version @@ -3482,7 +3798,7 @@ index 49f0006526..0000000000 - path: deps/openssl diff --git a/.github/workflows/update-v8.yml b/.github/workflows/update-v8.yml deleted file mode 100644 -index e365cf7701..0000000000 +index 8e71e56389..0000000000 --- a/.github/workflows/update-v8.yml +++ /dev/null @@ -1,57 +0,0 @@ @@ -3504,7 +3820,7 @@ index e365cf7701..0000000000 - if: github.repository == 'nodejs/node' - runs-on: ubuntu-slim - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - name: Cache node modules and update-v8 @@ -3518,7 +3834,7 @@ index e365cf7701..0000000000 - ~/.npm - key: ${{ runner.os }}-build-${{ env.cache-name }} - - name: Install Node.js -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NODE_VERSION }} - - name: Install @node-core/utils @@ -3545,7 +3861,7 @@ index e365cf7701..0000000000 - labels: dependencies, v8 engine diff --git a/.github/workflows/update-wpt.yml b/.github/workflows/update-wpt.yml deleted file mode 100644 -index 4f752cc189..0000000000 +index 7b59a2f137..0000000000 --- a/.github/workflows/update-wpt.yml +++ /dev/null @@ -1,95 +0,0 @@ @@ -3578,12 +3894,12 @@ index 4f752cc189..0000000000 - subsystem: ${{ fromJSON(github.event.inputs.subsystems || '["url", "urlpattern", "WebCryptoAPI"]') }} - - steps: -- - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 +- - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - with: - persist-credentials: false - - - name: Install Node.js -- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 +- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 - with: - node-version: ${{ env.NODE_VERSION }} - diff --git a/patches/doc-build-mobile-notes-and-ignores.patch b/patches/doc-build-mobile-notes-and-ignores.patch index c81cb3eff1..7ef7091f77 100644 --- a/patches/doc-build-mobile-notes-and-ignores.patch +++ b/patches/doc-build-mobile-notes-and-ignores.patch @@ -12,8 +12,8 @@ git operations in a built tree never sweep them up. Co-authored-by: Andre Staltz --- .gitignore | 5 + - README.md | 917 ++--------------------------------------------------- - 2 files changed, 32 insertions(+), 890 deletions(-) + README.md | 920 ++--------------------------------------------------- + 2 files changed, 32 insertions(+), 893 deletions(-) diff --git a/.gitignore b/.gitignore index 74eb99c815..ce1c201ce9 100644 @@ -39,10 +39,10 @@ index 74eb99c815..ce1c201ce9 100644 /deps/openssl/openssl.props /deps/openssl/openssl.targets diff --git a/README.md b/README.md -index a6cf7d6683..1d3ab7e321 100644 +index d90887e0f5..1d3ab7e321 100644 --- a/README.md +++ b/README.md -@@ -1,912 +1,49 @@ +@@ -1,915 +1,49 @@ -# Node.js +# Node.js for Mobile Apps @@ -253,8 +253,6 @@ index a6cf7d6683..1d3ab7e321 100644 - **Ruy Adorno** <> (he/him) -* [ShogunPanda](https://github.com/ShogunPanda) - - **Paolo Insogna** <> (he/him) --* [targos](https://github.com/targos) - -- **Michaël Zasso** <> (he/him) -* [tniessen](https://github.com/tniessen) - - **Tobias Nießen** <> (he/him) - @@ -331,6 +329,8 @@ index a6cf7d6683..1d3ab7e321 100644 - **Sam Roberts** <> -* [shigeki](https://github.com/shigeki) - - **Shigeki Ohtsu** <> (he/him) +-* [targos](https://github.com/targos) - +- **Michaël Zasso** <> (he/him) -* [thefourtheye](https://github.com/thefourtheye) - - **Sakthipriyan Vairamani** <> (he/him) -* [TimothyGu](https://github.com/TimothyGu) - @@ -356,6 +356,8 @@ index a6cf7d6683..1d3ab7e321 100644 - **Antoine du Hamel** <> (he/him) - [Support me](https://github.com/sponsors/aduh95) -* [anonrig](https://github.com/anonrig) - - **Yagiz Nizipli** <> (he/him) - [Support me](https://github.com/sponsors/anonrig) +-* [araujogui](https://github.com/araujogui) - +- **Guilherme Araújo** <> (he/him) -* [atlowChemi](https://github.com/atlowChemi) - - **Chemi Atlow** <> (he/him) -* [avivkeller](https://github.com/avivkeller) - @@ -394,8 +396,6 @@ index a6cf7d6683..1d3ab7e321 100644 - **Erick Wendel** <> (he/him) -* [Ethan-Arrowood](https://github.com/Ethan-Arrowood) - - **Ethan Arrowood** <> (he/him) --* [fhinkel](https://github.com/fhinkel) - -- **Franziska Hinkelmann** <> (she/her) -* [Flarna](https://github.com/Flarna) - - **Gerhard Stöbich** <> (he/they) -* [gabrielschulhof](https://github.com/gabrielschulhof) - @@ -502,8 +502,6 @@ index a6cf7d6683..1d3ab7e321 100644 - **Stefan Stojanovic** <> (he/him) -* [sxa](https://github.com/sxa) - - **Stewart X Addison** <> (he/him) --* [targos](https://github.com/targos) - -- **Michaël Zasso** <> (he/him) -* [theanarkh](https://github.com/theanarkh) - - **theanarkh** <> (he/him) -* [tniessen](https://github.com/tniessen) - @@ -596,6 +594,8 @@ index a6cf7d6683..1d3ab7e321 100644 - **Evan Lucas** <> (he/him) -* [F3n67u](https://github.com/F3n67u) - - **Feng Yu** <> (he/him) +-* [fhinkel](https://github.com/fhinkel) - +- **Franziska Hinkelmann** <> (she/her) -* [firedfox](https://github.com/firedfox) - - **Daniel Wang** <> -* [Fishrock123](https://github.com/Fishrock123) - @@ -770,6 +770,8 @@ index a6cf7d6683..1d3ab7e321 100644 - **Weijia Wang** <> -* [stefanmb](https://github.com/stefanmb) - - **Stefan Budeanu** <> +-* [targos](https://github.com/targos) - +- **Michaël Zasso** <> (he/him) -* [tellnes](https://github.com/tellnes) - - **Christian Tellnes** <> -* [thefourtheye](https://github.com/thefourtheye) - @@ -832,6 +834,8 @@ index a6cf7d6683..1d3ab7e321 100644 - **Wiyeong Seo** <> -* [iam-frankqiu](https://github.com/iam-frankqiu) - - **Frank Qiu** <> (he/him) +-* [inoway46](https://github.com/inoway46) - +- **Yuya Inoue** <> (he/him) -* [milesguicent](https://github.com/milesguicent) - - **Miles Guicent** <> (he/him) -* [preveen-stack](https://github.com/preveen-stack) - @@ -850,8 +854,6 @@ index a6cf7d6683..1d3ab7e321 100644 - `DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7` -* **Marco Ippolito** <> - `CC68F5A3106FF448322E48ED27F5E38D5B0A215F` --* **Michaël Zasso** <> -- `8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600` -* **Rafael Gonzaga** <> - `890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4` -* **Richard Lau** <> @@ -873,7 +875,6 @@ index a6cf7d6683..1d3ab7e321 100644 -gpg --keyserver hkps://keys.openpgp.org --recv-keys 5BE8A3F6C8A5C01D106C0AD820B1A390B168D356 # Antoine du Hamel -gpg --keyserver hkps://keys.openpgp.org --recv-keys DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7 # Juan José Arboleda -gpg --keyserver hkps://keys.openpgp.org --recv-keys CC68F5A3106FF448322E48ED27F5E38D5B0A215F # Marco Ippolito --gpg --keyserver hkps://keys.openpgp.org --recv-keys 8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600 # Michaël Zasso -gpg --keyserver hkps://keys.openpgp.org --recv-keys 890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4 # Rafael Gonzaga -gpg --keyserver hkps://keys.openpgp.org --recv-keys C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C # Richard Lau -gpg --keyserver hkps://keys.openpgp.org --recv-keys 108F52B48DB57BB0CC439B2997B01419BD92F80A # Ruy Adorno @@ -917,6 +918,8 @@ index a6cf7d6683..1d3ab7e321 100644 - `61FC681DFB92A079F1685E77973F295594EC4689` -* **Julien Gilli** <> - `114F43EE0176B71C7BC219DD50A3051F888C628D` +-* **Michaël Zasso** <> +- `8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600` -* **Myles Borins** <> - `C4F0DFFF4E8C1A8236409D08E73BC641CC11F4C8` -* **Rod Vagg** <> diff --git a/patches/files.map b/patches/files.map index ba39cb8dd0..26941f10f5 100644 --- a/patches/files.map +++ b/patches/files.map @@ -37,6 +37,7 @@ test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-dg test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-dgram-membership.js test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-dgram-socket-buffer-size.js test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-fs-copyfile.js +test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-fs-glob.mjs test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-fs-lchmod.js test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-fs-mkdir.js test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-fs-open-flags.js @@ -46,6 +47,7 @@ test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-fs test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-fs-readdir-ucs2.js test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-fs-realpath-native.js test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-fs-realpath.js +test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-fs-rmSync-special-char-additional-error.js test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-fs-rmdir-recursive.js test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-fs-stat.js test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-fs-watch.js @@ -63,6 +65,7 @@ test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-pr test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-repl-options.js test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-runner-concurrency.js test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-signal-handler.js +test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-sqlite-backup.mjs test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/parallel/test-watch-mode-files_watcher.mjs test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/sequential/sequential.status test-skip-adapt-parallel-and-sequential-tests-for-mo.patch test/sequential/test-async-wrap-getasyncid.js @@ -72,14 +75,15 @@ doc-build-mobile-notes-and-ignores.patch README.md ci-remove-upstream-only-workflows-and-config.patch .github/ISSUE_TEMPLATE/config.yml ci-remove-upstream-only-workflows-and-config.patch .github/SUPPORT.md ci-remove-upstream-only-workflows-and-config.patch .github/label-pr-config.yml +ci-remove-upstream-only-workflows-and-config.patch .github/workflows/author-ready-conflicts.yml ci-remove-upstream-only-workflows-and-config.patch .github/workflows/auto-start-ci.yml ci-remove-upstream-only-workflows-and-config.patch .github/workflows/build-tarball.yml ci-remove-upstream-only-workflows-and-config.patch .github/workflows/close-stalled.yml ci-remove-upstream-only-workflows-and-config.patch .github/workflows/codeql.yml ci-remove-upstream-only-workflows-and-config.patch .github/workflows/comment-labeled.yml -ci-remove-upstream-only-workflows-and-config.patch .github/workflows/commit-lint-problem-matcher.json ci-remove-upstream-only-workflows-and-config.patch .github/workflows/commit-lint.yml ci-remove-upstream-only-workflows-and-config.patch .github/workflows/commit-queue.yml +ci-remove-upstream-only-workflows-and-config.patch .github/workflows/contributor-guidance.yml ci-remove-upstream-only-workflows-and-config.patch .github/workflows/coverage-linux-without-intl.yml ci-remove-upstream-only-workflows-and-config.patch .github/workflows/coverage-linux.yml ci-remove-upstream-only-workflows-and-config.patch .github/workflows/coverage-windows.yml diff --git a/patches/lib-install-a-WebAssembly-polyfill-when-the-engine-h.patch b/patches/lib-install-a-WebAssembly-polyfill-when-the-engine-h.patch index 5b2edbbe4f..1aaed7f904 100644 --- a/patches/lib-install-a-WebAssembly-polyfill-when-the-engine-h.patch +++ b/patches/lib-install-a-WebAssembly-polyfill-when-the-engine-h.patch @@ -46,7 +46,7 @@ index 9cc3315dd3..b876545603 100644 + SOFTWARE. + """ diff --git a/lib/internal/process/pre_execution.js b/lib/internal/process/pre_execution.js -index a7ff17a646..45cc4326a6 100644 +index d17da5d977..3f54af0958 100644 --- a/lib/internal/process/pre_execution.js +++ b/lib/internal/process/pre_execution.js @@ -9,6 +9,7 @@ const { diff --git a/patches/src-crypto-mobile-adjustment-in-crypto_context.cc.patch b/patches/src-crypto-mobile-adjustment-in-crypto_context.cc.patch index 8e63ea4cfe..66fd2c1c8c 100644 --- a/patches/src-crypto-mobile-adjustment-in-crypto_context.cc.patch +++ b/patches/src-crypto-mobile-adjustment-in-crypto_context.cc.patch @@ -19,10 +19,10 @@ Co-authored-by: Julia Samól 1 file changed, 17 insertions(+) diff --git a/src/crypto/crypto_context.cc b/src/crypto/crypto_context.cc -index 05fc2a00b3..b61f7d9eca 100644 +index 74ea622dad..575cbb51ff 100644 --- a/src/crypto/crypto_context.cc +++ b/src/crypto/crypto_context.cc -@@ -335,6 +335,9 @@ bool isSelfIssued(X509* cert) { +@@ -336,6 +336,9 @@ bool isSelfIssued(X509* cert) { #ifdef __APPLE__ TrustStatus IsTrustDictionaryTrustedForPolicy(CFDictionaryRef trust_dict, bool is_self_issued) { @@ -32,7 +32,7 @@ index 05fc2a00b3..b61f7d9eca 100644 // Trust settings may be scoped to a single application // skip as this is not supported if (CFDictionaryContainsKey(trust_dict, kSecTrustSettingsApplication)) { -@@ -426,6 +429,10 @@ TrustStatus IsTrustDictionaryTrustedForPolicy(CFDictionaryRef trust_dict, +@@ -427,6 +430,10 @@ TrustStatus IsTrustDictionaryTrustedForPolicy(CFDictionaryRef trust_dict, return (trust_settings_result == kSecTrustSettingsResultTrustAsRoot) ? TrustStatus::TRUSTED : TrustStatus::UNSPECIFIED; @@ -43,7 +43,7 @@ index 05fc2a00b3..b61f7d9eca 100644 } TrustStatus IsTrustSettingsTrustedForPolicy(CFArrayRef trust_settings, -@@ -497,6 +504,8 @@ bool IsCertificateTrustedForPolicy(X509* cert, SecCertificateRef ref) { +@@ -498,6 +505,8 @@ bool IsCertificateTrustedForPolicy(X509* cert, SecCertificateRef ref) { bool trust_evaluated = false; bool is_self_issued = isSelfIssued(cert); @@ -52,7 +52,7 @@ index 05fc2a00b3..b61f7d9eca 100644 // Evaluate user trust domain, then admin. User settings can override // admin (and both override the system domain, but we don't check that). for (const auto& trust_domain : -@@ -535,6 +544,14 @@ bool IsCertificateTrustedForPolicy(X509* cert, SecCertificateRef ref) { +@@ -536,6 +545,14 @@ bool IsCertificateTrustedForPolicy(X509* cert, SecCertificateRef ref) { CFRelease(trust_settings); } } diff --git a/patches/src-mobile-platform-guards-in-node.cc-node_internals.patch b/patches/src-mobile-platform-guards-in-node.cc-node_internals.patch index a1c786d936..9240cbadd4 100644 --- a/patches/src-mobile-platform-guards-in-node.cc-node_internals.patch +++ b/patches/src-mobile-platform-guards-in-node.cc-node_internals.patch @@ -8,24 +8,14 @@ for process-level facilities mobile OSes forbid or lack (tty tcsetattr teardown on iOS; NODE_IMPLEMENTS_POSIX_CREDENTIALS turned on for Android API >= 21, which upstream leaves off). -Also drops --experimental-wasm-jspi from the V8 argument list on iOS, -which upstream appends unconditionally as of v24.20.0. iOS builds V8 in -lite mode, so V8_ENABLE_WEBASSEMBLY is off and the whole ---experimental-wasm-* flag family does not exist; V8 leaves the flag -unconsumed and node turns that into "bad option" and exits before -running any JS. The guard is on the platform rather than on -V8_ENABLE_WEBASSEMBLY because node's own targets never receive that -define -- it is set only on V8's, and testing it here would silently -drop the flag on Android too, where WebAssembly is enabled. - Co-authored-by: Jaime Bernardo --- - src/node.cc | 9 +++++++++ + src/node.cc | 3 +++ src/node_internals.h | 2 +- - 2 files changed, 10 insertions(+), 1 deletion(-) + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/node.cc b/src/node.cc -index f03a4447e5..967abd834d 100644 +index 92c5fd8cb6..5bd029b5a2 100644 --- a/src/node.cc +++ b/src/node.cc @@ -698,6 +698,8 @@ void ResetStdio() { @@ -45,22 +35,8 @@ index f03a4447e5..967abd834d 100644 } #endif // __POSIX__ } -@@ -787,7 +790,13 @@ static ExitCode ProcessGlobalArgsInternal(std::vector* args, - } - - // WebAssembly JS Promise Integration -+ // nodejs-mobile patch: iOS builds V8 in lite mode, which compiles out -+ // WebAssembly and every --experimental-wasm-* flag with it. V8 leaves the -+ // unrecognized flag in v8_args and node then fails with "bad option" before -+ // running any JS, so the flag must not be added there. -+#if !(defined(__APPLE__) && TARGET_OS_IPHONE) - v8_args.emplace_back("--experimental-wasm-jspi"); -+#endif // !(defined(__APPLE__) && TARGET_OS_IPHONE) - - #ifdef __POSIX__ - // Block SIGPROF signals when sleeping in epoll_wait/kevent/etc. Avoids the diff --git a/src/node_internals.h b/src/node_internals.h -index 8e930a6fec..b279bf9999 100644 +index dc228f8e1e..c0ef621060 100644 --- a/src/node_internals.h +++ b/src/node_internals.h @@ -326,7 +326,7 @@ class ThreadPoolWork { diff --git a/patches/test-mobile-test-harness.patch b/patches/test-mobile-test-harness.patch index 8f3a42165d..938b82ff51 100644 --- a/patches/test-mobile-test-harness.patch +++ b/patches/test-mobile-test-harness.patch @@ -24,7 +24,7 @@ Co-authored-by: Andre Staltz diff --git a/test/common/index.js b/test/common/index.js old mode 100755 new mode 100644 -index 9d15b57bf6..70d5fefae0 +index 0f2d695bbc..4ac724e14c --- a/test/common/index.js +++ b/test/common/index.js @@ -161,6 +161,8 @@ const isFreeBSD = process.platform === 'freebsd'; @@ -36,7 +36,7 @@ index 9d15b57bf6..70d5fefae0 const isASan = process.config.variables.asan === 1; const isRiscv64 = process.arch === 'riscv64'; const isDebug = process.features.debug; -@@ -976,8 +978,10 @@ const common = { +@@ -977,8 +979,10 @@ const common = { invalidArgTypeHelper, isAlive, isASan, @@ -153,10 +153,10 @@ index 5470fd2bd9..4db0a9d5c6 100644 return result diff --git a/tools/test.py b/tools/test.py -index 0bdfa5de79..97c9503393 100755 +index 1495182fcc..8aa12d755a 100755 --- a/tools/test.py +++ b/tools/test.py -@@ -1745,6 +1745,12 @@ def Main(): +@@ -1746,6 +1746,12 @@ def Main(): 'asan': get_asan_state(vm, context), 'pointer_compression': get_pointer_compression_state(vm, context), } diff --git a/patches/test-skip-adapt-parallel-and-sequential-tests-for-mo.patch b/patches/test-skip-adapt-parallel-and-sequential-tests-for-mo.patch index 44dc293e36..4088e61256 100644 --- a/patches/test-skip-adapt-parallel-and-sequential-tests-for-mo.patch +++ b/patches/test-skip-adapt-parallel-and-sequential-tests-for-mo.patch @@ -16,11 +16,12 @@ series itself. Co-authored-by: Jaime Bernardo Co-authored-by: Andre Staltz --- - test/parallel/parallel.status | 1444 +++++++++++++++++ + test/parallel/parallel.status | 1473 +++++++++++++++++ test/parallel/test-dgram-bind-fd.js | 2 +- test/parallel/test-dgram-membership.js | 10 +- .../parallel/test-dgram-socket-buffer-size.js | 2 +- test/parallel/test-fs-copyfile.js | 3 +- + test/parallel/test-fs-glob.mjs | 5 +- test/parallel/test-fs-lchmod.js | 4 +- test/parallel/test-fs-mkdir.js | 5 +- test/parallel/test-fs-open-flags.js | 3 +- @@ -30,6 +31,7 @@ Co-authored-by: Andre Staltz test/parallel/test-fs-readdir-ucs2.js | 2 +- test/parallel/test-fs-realpath-native.js | 7 + test/parallel/test-fs-realpath.js | 8 +- + ...fs-rmSync-special-char-additional-error.js | 4 +- test/parallel/test-fs-rmdir-recursive.js | 6 + test/parallel/test-fs-stat.js | 7 + test/parallel/test-fs-watch.js | 10 +- @@ -47,17 +49,18 @@ Co-authored-by: Andre Staltz test/parallel/test-repl-options.js | 6 +- test/parallel/test-runner-concurrency.js | 3 + test/parallel/test-signal-handler.js | 12 +- + test/parallel/test-sqlite-backup.mjs | 7 +- .../test-watch-mode-files_watcher.mjs | 3 + test/sequential/sequential.status | 129 ++ test/sequential/test-async-wrap-getasyncid.js | 15 +- test/sequential/test-fs-watch.js | 4 + - 35 files changed, 1754 insertions(+), 46 deletions(-) + 38 files changed, 1796 insertions(+), 49 deletions(-) diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status -index e4c82da4d6..d951785ba4 100644 +index d13efc8ac1..0536fbccdd 100644 --- a/test/parallel/parallel.status +++ b/test/parallel/parallel.status -@@ -162,6 +162,1450 @@ test-tls-set-default-ca-certificates-append-fetch: SKIP +@@ -160,6 +160,1479 @@ test-tls-set-default-ca-certificates-append-fetch: SKIP test-tls-set-default-ca-certificates-reset-fetch: SKIP test-inspector-invalid-protocol: SKIP @@ -76,6 +79,7 @@ index e4c82da4d6..d951785ba4 100644 +test-async-hooks-fatal-error: SKIP +test-async-wrap-pop-id-during-load: SKIP +test-bash-completion: SKIP ++test-benchmark-compare: SKIP +test-buffer-constructor-node-modules-paths: SKIP +test-child-process-*: SKIP +test-cli-*: SKIP @@ -83,8 +87,10 @@ index e4c82da4d6..d951785ba4 100644 +test-common: SKIP +test-common-countdown: SKIP +test-common-expect-warning: SKIP ++test-common-wpt-script-modifier: SKIP +test-coverage-with-inspector-disabled: SKIP +test-crypto-fips: SKIP ++test-crypto-provider-cache-snapshot: SKIP +test-crypto-secure-heap: SKIP +test-cwd-enoent*: SKIP +test-debug-usage: SKIP @@ -100,6 +106,7 @@ index e4c82da4d6..d951785ba4 100644 +test-debugger-help: SKIP +test-debugger-invalid-json: SKIP +test-debugger-list: SKIP ++test-debugger-no-inspect-brk: SKIP +test-debugger-object-type-remote-object: SKIP +test-debugger-profile: SKIP +test-debugger-profile-command: SKIP @@ -128,10 +135,13 @@ index e4c82da4d6..d951785ba4 100644 +test-env-var-no-warnings: SKIP +test-error-reporting: SKIP +test-force-repl*: SKIP ++test-fs-glob-no-follow-symlink-globstar: SKIP +test-fs-readfile-error: SKIP +test-fs-readfile-pipe*: SKIP +test-fs-readfilesync-pipe-large: SKIP ++test-fs-realpath-async-stale-stat-values: SKIP +test-fs-realpath-pipe: SKIP ++test-fs-realpath-stale-stat-values: SKIP +test-fs-syncwritestream: SKIP +test-fs-write-sigxfsz: SKIP +test-fs-write-stream-patch-open: SKIP @@ -177,6 +187,7 @@ index e4c82da4d6..d951785ba4 100644 +test-module-main-fail: SKIP +test-module-main-preserve-symlinks-fail: SKIP +test-module-run-main-monkey-patch: SKIP ++test-module-unreadable-package-json: SKIP +test-module-wrap: SKIP +test-module-wrapper: SKIP +test-net-child-process-connect-reset: SKIP @@ -197,6 +208,7 @@ index e4c82da4d6..d951785ba4 100644 +test-permission-drop-fs-granted-path: SKIP +test-permission-drop-fs-specific-path: SKIP +test-permission-fs-write-trace-events: SKIP ++test-permission-openssl-store: SKIP +test-pipe-head: SKIP +test-pipe-unref: SKIP +test-policy-crypto-default-encoding: SKIP @@ -266,6 +278,7 @@ index e4c82da4d6..d951785ba4 100644 +test-runner-inspect: SKIP +test-runner-log: SKIP +test-runner-misc: SKIP ++test-runner-mock-dual-package: SKIP +test-runner-output: SKIP +test-runner-reporters: SKIP +test-runner-tag-filter-cli: SKIP @@ -378,6 +391,7 @@ index e4c82da4d6..d951785ba4 100644 +test-vm-sigint-existing-handler: SKIP +test-vm-syntax-error-message: SKIP +test-vm-syntax-error-stderr: SKIP ++test-webcrypto-prototype-pollution: SKIP +test-worker-init-failure: SKIP +test-worker-message-type-unknown: SKIP +test-worker-on-process-exit: SKIP @@ -645,6 +659,7 @@ index e4c82da4d6..d951785ba4 100644 +test-permission-drop-fs-write: SKIP +test-permission-drop-worker: SKIP +test-permission-fs-absolute-path: SKIP ++test-permission-fs-filehandle-sync: SKIP +test-permission-fs-read: SKIP +test-permission-fs-read-entrypoint: SKIP +test-permission-fs-relative-path: SKIP @@ -658,6 +673,8 @@ index e4c82da4d6..d951785ba4 100644 +test-permission-fs-write-report: SKIP +test-permission-inspector: SKIP +test-permission-inspector-brk: SKIP ++test-permission-linked-binding: SKIP ++test-permission-linked-binding-drop: SKIP +test-permission-processbinding: SKIP +test-permission-sqlite-load-extension: SKIP +test-permission-warning-flags: SKIP @@ -710,6 +727,7 @@ index e4c82da4d6..d951785ba4 100644 +test-async-hooks-fatal-error: SKIP +test-async-wrap-pop-id-during-load: SKIP +test-bash-completion: SKIP ++test-benchmark-compare: SKIP +test-buffer-constructor-node-modules-paths: SKIP +test-child-process-*: SKIP +test-cli-*: SKIP @@ -717,9 +735,11 @@ index e4c82da4d6..d951785ba4 100644 +test-common: SKIP +test-common-countdown: SKIP +test-common-expect-warning: SKIP ++test-common-wpt-script-modifier: SKIP +test-coverage-with-inspector-disabled: SKIP +test-crypto-fips: SKIP +test-crypto-no-algorithm: SKIP ++test-crypto-provider-cache-snapshot: SKIP +test-crypto-secure-heap: SKIP +test-cwd-enoent*: SKIP +test-debug-usage: SKIP @@ -738,6 +758,7 @@ index e4c82da4d6..d951785ba4 100644 +test-debugger-invalid-json: SKIP +test-debugger-list: SKIP +test-debugger-low-level: SKIP ++test-debugger-no-inspect-brk: SKIP +test-debugger-object-type-remote-object: SKIP +test-debugger-preserve-breaks: SKIP +test-debugger-probe-cond: SKIP @@ -775,10 +796,13 @@ index e4c82da4d6..d951785ba4 100644 +test-env-var-no-warnings: SKIP +test-error-reporting: SKIP +test-force-repl*: SKIP ++test-fs-glob-no-follow-symlink-globstar: SKIP +test-fs-readfile-error: SKIP +test-fs-readfile-pipe*: SKIP +test-fs-readfilesync-pipe-large: SKIP ++test-fs-realpath-async-stale-stat-values: SKIP +test-fs-realpath-pipe: SKIP ++test-fs-realpath-stale-stat-values: SKIP +test-fs-syncwritestream: SKIP +test-fs-write-sigxfsz: SKIP +test-fs-write-stream-patch-open: SKIP @@ -824,6 +848,7 @@ index e4c82da4d6..d951785ba4 100644 +test-module-main-fail: SKIP +test-module-main-preserve-symlinks-fail: SKIP +test-module-run-main-monkey-patch: SKIP ++test-module-unreadable-package-json: SKIP +test-module-wrap: SKIP +test-module-wrapper: SKIP +test-net-child-process-connect-reset: SKIP @@ -844,6 +869,7 @@ index e4c82da4d6..d951785ba4 100644 +test-permission-audit-fs-does-not-deny: SKIP +test-permission-drop-fs-granted-path: SKIP +test-permission-drop-fs-specific-path: SKIP ++test-permission-openssl-store: SKIP +test-pipe-head: SKIP +test-pipe-unref: SKIP +test-policy-crypto-default-encoding: SKIP @@ -913,6 +939,7 @@ index e4c82da4d6..d951785ba4 100644 +test-runner-inspect: SKIP +test-runner-log: SKIP +test-runner-misc: SKIP ++test-runner-mock-dual-package: SKIP +test-runner-output: SKIP +test-runner-reporters: SKIP +test-runner-watch-mode: SKIP @@ -1021,6 +1048,7 @@ index e4c82da4d6..d951785ba4 100644 +test-vm-sigint-existing-handler: SKIP +test-vm-syntax-error-message: SKIP +test-vm-syntax-error-stderr: SKIP ++test-webcrypto-prototype-pollution: SKIP +test-worker-init-failure: SKIP +test-worker-message-type-unknown: SKIP +test-worker-on-process-exit: SKIP @@ -1078,6 +1106,7 @@ index e4c82da4d6..d951785ba4 100644 +# jitless configuration on the host instead (host-smoke workflow). +# +test-fetch-disabled: SKIP ++test-internal-webidl-buffer-source: SKIP +test-vm-codegen: SKIP +test-wasm: SKIP +test-wasm-simple: SKIP @@ -1203,8 +1232,11 @@ index e4c82da4d6..d951785ba4 100644 +test-permission-drop-fs-scope: SKIP +test-permission-drop-fs-write: SKIP +test-permission-drop-worker: SKIP ++test-permission-fs-filehandle-sync: SKIP +test-permission-fs-write: SKIP +test-permission-fs-windows-path: SKIP ++test-permission-linked-binding: SKIP ++test-permission-linked-binding-drop: SKIP +# +# fs.watch's `ignore` option. libuv compiles FSEvents out entirely on iOS -- +# "iOS (currently) doesn't provide the FSEvents-API (nor CoreServices)", @@ -1576,6 +1608,22 @@ index 51d7153de0..9b1395f99b 100644 assert.strictEqual(err.path, src); assert.strictEqual(err.dest, dest); } +diff --git a/test/parallel/test-fs-glob.mjs b/test/parallel/test-fs-glob.mjs +index 869fbcac0d..893887dc36 100644 +--- a/test/parallel/test-fs-glob.mjs ++++ b/test/parallel/test-fs-glob.mjs +@@ -658,7 +658,10 @@ describe('globSync - ENOTDIR', function() { + + describe('glob - seen cache', function() { + // Refs: https://github.com/nodejs/node/issues/62897 +- test('does not skip siblings after a seen child path', () => { ++ // nodejs-mobile patch: spawns a child node process. ++ test('does not skip siblings after a seen child path', { ++ skip: common.isAndroid || common.isIOS, ++ }, () => { + // The glob traversal used to return early from the children loop when a + // child path had already been seen through a different pattern context, + // silently dropping the remaining siblings. Whether the bug triggered diff --git a/test/parallel/test-fs-lchmod.js b/test/parallel/test-fs-lchmod.js index d439710291..d048680b95 100644 --- a/test/parallel/test-fs-lchmod.js @@ -1733,6 +1781,21 @@ index 6ad074397e..c27aee2759 100644 try { fs.unlinkSync(link); } catch { // Continue regardless of error. } +diff --git a/test/parallel/test-fs-rmSync-special-char-additional-error.js b/test/parallel/test-fs-rmSync-special-char-additional-error.js +index 9b4de3c84d..dbfc1eb426 100644 +--- a/test/parallel/test-fs-rmSync-special-char-additional-error.js ++++ b/test/parallel/test-fs-rmSync-special-char-additional-error.js +@@ -43,7 +43,9 @@ try { + }, (err) => { + // Verify that the error is due to permission restrictions + let expectedCode = 'EACCES'; +- if (common.isMacOS) { ++ // nodejs-mobile patch: mobile links libc++, whose std::filesystem::remove_all ++ // reports ENOTEMPTY here, as on macOS. ++ if (common.isMacOS || common.isAndroid || common.isIOS) { + expectedCode = 'ENOTEMPTY'; + } else if (common.isWindows) { + expectedCode = 'EPERM'; diff --git a/test/parallel/test-fs-rmdir-recursive.js b/test/parallel/test-fs-rmdir-recursive.js index 77c205794b..4c52904b43 100644 --- a/test/parallel/test-fs-rmdir-recursive.js @@ -2013,7 +2076,7 @@ index a2df7d580d..eeb6c1de91 100644 + +assert.deepStrictEqual(process.getActiveResourcesInfo(), expected); diff --git a/test/parallel/test-process-versions.js b/test/parallel/test-process-versions.js -index b670ff37ac..68724daf7f 100644 +index 7f54beeea6..14f222d299 100644 --- a/test/parallel/test-process-versions.js +++ b/test/parallel/test-process-versions.js @@ -2,8 +2,15 @@ @@ -2134,6 +2197,31 @@ index b84d2063a2..4411854e0b 100644 } }, 1); +diff --git a/test/parallel/test-sqlite-backup.mjs b/test/parallel/test-sqlite-backup.mjs +index ee5f54fd90..f703409f4c 100644 +--- a/test/parallel/test-sqlite-backup.mjs ++++ b/test/parallel/test-sqlite-backup.mjs +@@ -2,6 +2,8 @@ + import { + isWindows, + skipIfSQLiteMissing, ++ isAndroid, ++ isIOS, + spawnPromisified, + } from '../common/index.mjs'; + import fixtures from '../common/fixtures.js'; +@@ -380,7 +382,10 @@ test('source database is kept alive while a backup is in flight', async (t) => { + t.assert.strictEqual(rows.n, 500); + }); + +-test('backup promise settles when the backup is the last active request', async (t) => { ++// nodejs-mobile patch: spawns a child node process. ++test('backup promise settles when the backup is the last active request', { ++ skip: isAndroid || isIOS, ++}, async (t) => { + const { code, signal, stderr } = await spawnPromisified(process.execPath, [ + fixtures.path('sqlite', 'backup-last-request.mjs'), + nextDb(), diff --git a/test/parallel/test-watch-mode-files_watcher.mjs b/test/parallel/test-watch-mode-files_watcher.mjs index e1595350cd..f5d84f7480 100644 --- a/test/parallel/test-watch-mode-files_watcher.mjs @@ -2154,10 +2242,10 @@ index e1595350cd..f5d84f7480 100644 + */ }); diff --git a/test/sequential/sequential.status b/test/sequential/sequential.status -index 01a021130c..059f682010 100644 +index 6b5714500b..9c8a8e0f5c 100644 --- a/test/sequential/sequential.status +++ b/test/sequential/sequential.status -@@ -39,6 +39,135 @@ test-perf-hooks: SKIP +@@ -43,6 +43,135 @@ test-perf-hooks: SKIP # https://github.com/nodejs/node/issues/39683 test-tls-psk-client: PASS, FLAKY @@ -2294,7 +2382,7 @@ index 01a021130c..059f682010 100644 # https://github.com/nodejs/node/issues/49933 test-watch-mode-inspect: SKIP diff --git a/test/sequential/test-async-wrap-getasyncid.js b/test/sequential/test-async-wrap-getasyncid.js -index 5db4a77631..dba092fd3f 100644 +index ef48f457a8..529cc62b12 100644 --- a/test/sequential/test-async-wrap-getasyncid.js +++ b/test/sequential/test-async-wrap-getasyncid.js @@ -12,6 +12,8 @@ const providers = { ...internalBinding('async_wrap').Providers }; @@ -2319,7 +2407,7 @@ index 5db4a77631..dba092fd3f 100644 const objKeys = Object.keys(providers); if (objKeys.length > 0) process._rawDebug(objKeys); -@@ -196,7 +204,8 @@ if (common.hasCrypto) { // eslint-disable-line node-core/crypto-check +@@ -198,7 +206,8 @@ if (common.hasCrypto) { // eslint-disable-line node-core/crypto-check testInitialized(handle, 'Pipe'); } @@ -2329,7 +2417,7 @@ index 5db4a77631..dba092fd3f 100644 tmpdir.refresh(); const server = net.createServer(common.mustCall((socket) => { -@@ -328,6 +337,8 @@ if (common.hasCrypto) { // eslint-disable-line node-core/crypto-check +@@ -330,6 +339,8 @@ if (common.hasCrypto) { // eslint-disable-line node-core/crypto-check // DIRHANDLE { const dirBinding = internalBinding('fs_dir'); diff --git a/upstream-base.txt b/upstream-base.txt index ae6aab07a6..d15714fdea 100644 --- a/upstream-base.txt +++ b/upstream-base.txt @@ -1,4 +1,4 @@ # The upstream nodejs/node release the patch series applies to. # First non-comment line is the tag (or SHA); update it as part of every # upstream bump (see README.md). -v24.20.0 +v24.22.0