diff options
Diffstat (limited to '.github')
28 files changed, 227 insertions, 220 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index c07ae66c6f..578a776b32 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -8,11 +8,11 @@ body: value: | *Before reporting:* - Confirm the problem is reproducible on [**master**](https://github.com/neovim/neovim/releases/nightly) or [**latest stable**](https://github.com/neovim/neovim/releases/stable) release - - run `make distclean` when encountering build issues - - search [existing issues](https://github.com/neovim/neovim/issues?q=is%3Aissue+is%3Aopen+label%3Abug) - - check the [FAQ](https://github.com/neovim/neovim/wiki/FAQ) + - Run `make distclean` when encountering build issues + - Search [existing issues](https://github.com/neovim/neovim/issues?q=is%3Aissue+is%3Aopen+label%3Abug,bug-crash) (including [closed](https://github.com/neovim/neovim/issues?q=is%3Aissue+is%3Aclosed+label%3Abug%2Cbug-crash)) + - Read the [FAQ](https://neovim.io/doc/user/faq.html) and ["Reporting Problems" in CONTRIBUTING.md](https://github.com/neovim/neovim/blob/master/CONTRIBUTING.md#reporting-problems). - Usage or "How to" questions belong on the [stackoverflow](https://vi.stackexchange.com/) and will be closed. + Usage or "How to" questions belong on [stackoverflow](https://vi.stackexchange.com/) and will be closed. - type: textarea attributes: label: "Problem" @@ -24,8 +24,9 @@ body: label: "Steps to reproduce" description: | - For build failures: list the exact steps including CMake flags (if any). + - If the bug pertains to crashing (or segfault), please include a [stacktrace](https://neovim.io/doc/user/dev_tools.html#dev-tools-backtrace). - For startup or shell-related problems: try `env -i TERM=ansi-256color "$(which nvim)"`. - - See [Minimal-reproduction-template](https://github.com/neovim/neovim/wiki/Minimal-reproduction-template) for how to create a minimal configuration. + - Use the provided [minimal reproduction template](https://github.com/neovim/neovim/blob/master/contrib/minimal.lua) to create a minimal configuration. After you fill it out with necessary information, run with `nvim --clean -u minimal.lua`. - Please do **not** include a package manager in the reproduction steps. placeholder: | nvim --clean diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 4b9a443064..711d70c589 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -6,7 +6,7 @@ body: - type: markdown attributes: value: | - Before requesting: search [existing issues](https://github.com/neovim/neovim/labels/enhancement) and check the [FAQ](https://github.com/neovim/neovim/wiki/FAQ). + Before requesting: search [existing feature requests](https://github.com/neovim/neovim/labels/enhancement) and check the [FAQ](https://neovim.io/doc/user/faq.html). - type: textarea attributes: diff --git a/.github/ISSUE_TEMPLATE/lsp_bug_report.yml b/.github/ISSUE_TEMPLATE/lsp_bug_report.yml index bdad12e412..0e2111923d 100644 --- a/.github/ISSUE_TEMPLATE/lsp_bug_report.yml +++ b/.github/ISSUE_TEMPLATE/lsp_bug_report.yml @@ -6,7 +6,7 @@ body: - type: markdown attributes: value: | - _Before reporting:_ search [existing issues](https://github.com/neovim/neovim/issues?q=is%3Aissue+is%3Aopen+label%3Abug) and check the [FAQ](https://github.com/neovim/neovim/wiki/FAQ). Usage questions or "Why isn't X language server/feature working?" belong on [stackoverflow](https://vi.stackexchange.com/) and will be closed. + _Before reporting:_ search [existing issues](https://github.com/neovim/neovim/issues?q=is%3Aissue+is%3Aopen+label%3Abug) and check the [FAQ](https://neovim.io/doc/user/faq.html). Usage questions or "Why isn't X language server/feature working?" belong on [stackoverflow](https://vi.stackexchange.com/) and will be closed. - type: textarea attributes: diff --git a/.github/actions/cache/action.yml b/.github/actions/cache/action.yml index d668c7a7cc..8a5c53a139 100644 --- a/.github/actions/cache/action.yml +++ b/.github/actions/cache/action.yml @@ -25,7 +25,7 @@ runs: # if it makes the expression below simpler. hashFiles() has a timer that # will fail the job if it times out, which can happen if there are too many # files to search through. - - uses: actions/cache@v3 + - uses: actions/cache@v4 with: path: .deps key: ${{ env.CACHE_KEY }}-${{ steps.image.outputs.version }}-${{ hashFiles('cmake**', diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml new file mode 100644 index 0000000000..dfa3101abc --- /dev/null +++ b/.github/actions/setup/action.yml @@ -0,0 +1,29 @@ +name: 'setup' +description: "Creates necessary setup for CI" +inputs: + install_flags: + description: 'Install script flags' + required: false + default: '' +runs: + using: "composite" + steps: + - name: Set $BIN_DIR + shell: bash + run: echo "$BIN_DIR" >> $GITHUB_PATH + + - if: ${{ runner.os != 'Windows' }} + name: Set ulimit + shell: bash + run: ulimit -c unlimited + + - if: ${{ runner.os == 'Windows' }} + run: .github/scripts/env.ps1 + shell: pwsh + + - name: Install dependencies + run: ./.github/scripts/install_deps.sh ${{ inputs.install_flags }} + shell: bash + + - name: Cache + uses: ./.github/actions/cache diff --git a/.github/labeler.yml b/.github/labeler.yml deleted file mode 100644 index 111fc5f373..0000000000 --- a/.github/labeler.yml +++ /dev/null @@ -1,66 +0,0 @@ -"lsp": - - runtime/lua/vim/lsp.lua - - runtime/lua/vim/lsp/* - -"tui": - - src/nvim/tui/tui.* - -"treesitter": - - src/nvim/lua/treesitter.* - - runtime/lua/vim/treesitter.lua - - runtime/lua/vim/treesitter/* - - runtime/queries/**/* - -"diagnostic": - - runtime/lua/vim/diagnostic.lua - -"dependencies": - - cmake.deps/**/* - -"spell": - - src/nvim/spell* - -"terminal": - - src/nvim/terminal.* - -"column": - - src/nvim/sign* - -"folds": - - src/nvim/fold* - -"mouse": - - src/nvim/mouse* - -"documentation": - - all: ["runtime/doc/*"] - - all: ["**/*.md"] - -"clipboard": - - runtime/autoload/provider/clipboard.vim - -"diff": - - src/nvim/diff.* - -"build": - - CMakeLists.txt - - "**/CMakeLists.txt" - - "**/Makefile" - - "**/*.cmake" - -"test": - - all: ["test/**/*"] - -"ci": - - .github/labeler.yml - - .github/workflows/**/* - - .builds/* - - ci/**/* - -"filetype": - - runtime/lua/vim/filetype.lua - - runtime/lua/vim/filetype/detect.lua - -"platform:nix": - - contrib/flake.lock - - contrib/flake.nix diff --git a/.github/scripts/build_universal_macos.sh b/.github/scripts/build_universal_macos.sh index d07c395cd6..aeda93ee03 100755 --- a/.github/scripts/build_universal_macos.sh +++ b/.github/scripts/build_universal_macos.sh @@ -1,17 +1,18 @@ #!/bin/bash -e -MACOSX_DEPLOYMENT_TARGET="$(sw_vers -productVersion | cut -f1 -d.)" +MACOSX_DEPLOYMENT_TARGET=11.0 export MACOSX_DEPLOYMENT_TARGET cmake -S cmake.deps -B .deps -G Ninja \ - -D CMAKE_BUILD_TYPE=${NVIM_BUILD_TYPE} \ + -D CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \ -D CMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} \ -D CMAKE_OSX_ARCHITECTURES=arm64\;x86_64 \ -D CMAKE_FIND_FRAMEWORK=NEVER cmake --build .deps cmake -B build -G Ninja \ - -D CMAKE_BUILD_TYPE=${NVIM_BUILD_TYPE} \ + -D CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \ -D CMAKE_OSX_DEPLOYMENT_TARGET=${MACOSX_DEPLOYMENT_TARGET} \ -D CMAKE_OSX_ARCHITECTURES=arm64\;x86_64 \ + -D ENABLE_LIBINTL=OFF \ -D CMAKE_FIND_FRAMEWORK=NEVER cmake --build build # Make sure we build everything for M1 as well diff --git a/.github/scripts/close_unresponsive.js b/.github/scripts/close_unresponsive.js index f0e8bbe93e..b16c19b653 100644 --- a/.github/scripts/close_unresponsive.js +++ b/.github/scripts/close_unresponsive.js @@ -41,6 +41,7 @@ module.exports = async ({ github, context }) => { owner: owner, repo: repo, issue_number: number, + state_reason: "not_planned", state: "closed", }); diff --git a/.github/scripts/install_deps.sh b/.github/scripts/install_deps.sh index 9a782e9698..ad81e053f9 100755 --- a/.github/scripts/install_deps.sh +++ b/.github/scripts/install_deps.sh @@ -30,12 +30,12 @@ if [[ $os == Linux ]]; then fi if [[ -n $TEST ]]; then - sudo apt-get install -y locales-all cpanminus attr libattr1-dev gdb + sudo apt-get install -y locales-all cpanminus attr libattr1-dev gdb fswatch fi elif [[ $os == Darwin ]]; then brew update --quiet brew install ninja if [[ -n $TEST ]]; then - brew install cpanminus + brew install cpanminus fswatch fi fi diff --git a/.github/scripts/labeler_configuration.yml b/.github/scripts/labeler_configuration.yml new file mode 100644 index 0000000000..3db8444fde --- /dev/null +++ b/.github/scripts/labeler_configuration.yml @@ -0,0 +1,71 @@ +lsp: + - changed-files: + - any-glob-to-any-file: [ runtime/lua/vim/lsp.lua, runtime/lua/vim/lsp/* ] + +tui: + - changed-files: + - any-glob-to-any-file: [ src/nvim/tui/tui.* ] + +treesitter: + - changed-files: + - any-glob-to-any-file: [ src/nvim/lua/treesitter.*, runtime/lua/vim/treesitter.lua, runtime/lua/vim/treesitter/*, runtime/queries/**/* ] + +diagnostic: + - changed-files: + - any-glob-to-any-file: [ runtime/lua/vim/diagnostic.lua ] + +dependencies: + - changed-files: + - any-glob-to-any-file: [ cmake.deps/**/* ] + +spell: + - changed-files: + - any-glob-to-any-file: [ src/nvim/spell* ] + +terminal: + - changed-files: + - any-glob-to-any-file: [ src/nvim/terminal.* ] + +column: + - changed-files: + - any-glob-to-any-file: [ src/nvim/sign* ] + +folds: + - changed-files: + - any-glob-to-any-file: [ src/nvim/fold* ] + +mouse: + - changed-files: + - any-glob-to-any-file: [ src/nvim/mouse* ] + +documentation: + - changed-files: + - any-glob-to-all-files: [ runtime/doc/*, "**/*.md" ] + +clipboard: + - changed-files: + - any-glob-to-any-file: [ runtime/autoload/provider/clipboard.vim ] + +diff: + - changed-files: + - any-glob-to-any-file: [ src/nvim/diff.* ] + +build: + - changed-files: + - any-glob-to-any-file: [ CMakeLists.txt, "**/CMakeLists.txt", "**/Makefile", "**/*.cmake" ] + +test: + - changed-files: + - any-glob-to-all-files: [test/**/*] + +ci: + - changed-files: + - any-glob-to-any-file: [ .github/actions/**, .github/workflows/**, .github/scripts/** ] + +filetype: + - changed-files: + - any-glob-to-any-file: [ runtime/lua/vim/filetype.lua, runtime/lua/vim/filetype/detect.lua ] + +platform:nix: + - changed-files: + - any-glob-to-any-file: [ contrib/flake.lock, contrib/flake.nix ] diff --git a/.github/scripts/reviews.js b/.github/scripts/reviewers_add.js index d28d91c2f6..c6a878ec8e 100644 --- a/.github/scripts/reviews.js +++ b/.github/scripts/reviewers_add.js @@ -28,6 +28,10 @@ module.exports = async ({ github, context }) => { reviewers.add("lewis6991"); } + if (labels.includes("defaults")) { + reviewers.add("gpanders"); + } + if (labels.includes("dependencies")) { reviewers.add("jamessan"); } @@ -91,6 +95,10 @@ module.exports = async ({ github, context }) => { reviewers.add("lewis6991"); } + if (labels.includes("tui")) { + reviewers.add("gpanders"); + } + if (labels.includes("typo")) { reviewers.add("dundargoc"); } diff --git a/.github/scripts/remove-reviewers.js b/.github/scripts/reviewers_remove.js index 9e44e4ac86..9e44e4ac86 100644 --- a/.github/scripts/remove-reviewers.js +++ b/.github/scripts/reviewers_remove.js diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index 321cd02b0c..88cddcded4 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -1,4 +1,4 @@ -name: Backport +name: backport on: pull_request_target: types: [closed, labeled] @@ -14,3 +14,9 @@ jobs: - uses: actions/checkout@v4 - name: Create backport PRs uses: korthout/backport-action@v2 + with: + # https://github.com/korthout/backport-action/pull/399 + experimental: > + { + "detect_merge_method": true + } diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d6e11fcdcb..13fa692be1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,12 +21,12 @@ env: jobs: macos-universal: - runs-on: macos-latest + runs-on: macos-14 timeout-minutes: 20 steps: - uses: actions/checkout@v4 - - run: ./.github/scripts/install_deps.sh - - run: printf 'NVIM_BUILD_TYPE=Release\n' >> $GITHUB_ENV + - uses: ./.github/actions/setup + - run: printf 'CMAKE_BUILD_TYPE=Release\n' >> $GITHUB_ENV - name: Build universal binary run: ./.github/scripts/build_universal_macos.sh @@ -36,15 +36,11 @@ jobs: runs-on: ubuntu-22.04 timeout-minutes: 15 env: - CMAKE_URL: 'https://cmake.org/files/v3.10/cmake-3.10.0-Linux-x86_64.sh' - CMAKE_VERSION: '3.10.0' + CMAKE_URL: 'https://cmake.org/files/v3.13/cmake-3.13.0-Linux-x86_64.sh' + CMAKE_VERSION: '3.13.0' steps: - uses: actions/checkout@v4 - - run: ./.github/scripts/install_deps.sh - - - name: Set up environment - run: echo "$BIN_DIR" >> $GITHUB_PATH - + - uses: ./.github/actions/setup - name: Install minimum required version of cmake run: | @@ -73,7 +69,7 @@ jobs: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - - run: ./.github/scripts/install_deps.sh + - uses: ./.github/actions/setup - name: Build bundled dependencies run: make deps diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 365c3fdf56..c2db78dd25 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -1,4 +1,4 @@ -name: "CodeQL" +name: "codeql" concurrency: group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} @@ -20,20 +20,15 @@ jobs: security-events: write steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install dependencies - run: ./.github/scripts/install_deps.sh + - uses: actions/checkout@v4 + - uses: ./.github/actions/setup - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: cpp - - uses: ./.github/actions/cache - - run: make - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml index 3eed1e51df..db0f878de4 100644 --- a/.github/workflows/coverity.yml +++ b/.github/workflows/coverity.yml @@ -1,4 +1,4 @@ -name: Coverity +name: coverity on: schedule: - cron: '10 0 * * *' # Run every day at 00:10 @@ -9,9 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - - name: Install dependencies - run: ./.github/scripts/install_deps.sh + - uses: ./.github/actions/setup - name: Download Coverity run: | diff --git a/.github/workflows/api-docs.yml b/.github/workflows/docs.yml index 6f8fe107d2..c91f2945fb 100644 --- a/.github/workflows/api-docs.yml +++ b/.github/workflows/docs.yml @@ -1,5 +1,4 @@ -# Check if any PR needs to run the autogenerate script -name: Autogenerate API docs and types +name: docs on: pull_request: types: [opened, synchronize, reopened, ready_for_review] @@ -8,9 +7,10 @@ on: - 'src/nvim/eval.lua' - 'runtime/lua/**.lua' - 'runtime/doc/**' - + - 'scripts/gen_vimdoc.py' + - 'scripts/gen_help_html.lua' jobs: - regen-api-docs-and-types: + docs: runs-on: ubuntu-latest if: github.event.pull_request.draft == false permissions: @@ -18,11 +18,7 @@ jobs: pull-requests: write steps: - uses: actions/checkout@v4 - - name: Install dependencies - run: | - ./.github/scripts/install_deps.sh - sudo apt-get install -y doxygen python3-msgpack - - uses: ./.github/actions/cache + - uses: ./.github/actions/setup - name: Generate docs run: | @@ -32,3 +28,6 @@ jobs: echo "::error::The doc generation produces the following changes:" git diff --color --exit-code fi + + - name: Validate docs + run: make lintdoc diff --git a/.github/workflows/issue-open-check.yml b/.github/workflows/labeler_issue.yml index eac1c2ee4d..deba3cd5a5 100644 --- a/.github/workflows/issue-open-check.yml +++ b/.github/workflows/labeler_issue.yml @@ -1,22 +1,19 @@ -name: Issue Open Check - +name: "labeler: issue" on: issues: types: [opened] - jobs: - issue-open-check: + labeler: permissions: issues: write runs-on: ubuntu-latest steps: - name: check issue title - id: check-issue uses: actions/github-script@v7 with: script: | const title = context.payload.issue.title; - const titleSplit = title.split(/\s+/).map(e => e.toLowerCase()); + const titleSplit = title.split(/\b/).map(e => e.toLowerCase()); const keywords = ['api', 'treesitter', 'ui', 'lsp']; var match = new Set(); for (const keyword of keywords) { diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler_pr.yml index 52682d93dd..8fd93bfb6d 100644 --- a/.github/workflows/labeler.yml +++ b/.github/workflows/labeler_pr.yml @@ -1,20 +1,21 @@ -name: "Pull Request Labeler" +name: "labeler: PR" on: pull_request_target: types: [opened] jobs: - triage: + changed-files: runs-on: ubuntu-latest permissions: contents: read pull-requests: write steps: - - uses: actions/labeler@v4 + - uses: actions/checkout@v4 + - uses: actions/labeler@v5 with: - sync-labels: "" + configuration-path: .github/scripts/labeler_configuration.yml type-scope: - needs: triage + needs: changed-files runs-on: ubuntu-latest permissions: contents: write @@ -33,7 +34,7 @@ jobs: run: gh pr edit "$PR_NUMBER" --add-label "$(echo "$PR_TITLE" | sed -E 's|[[:alpha:]]+(\(.*\))?!:.*|breaking-change|')" || true request-reviewer: - needs: ["triage", "type-scope"] + needs: ["changed-files", "type-scope"] permissions: pull-requests: write - uses: ./.github/workflows/add-reviewers.yml + uses: ./.github/workflows/reviewers_add.yml diff --git a/.github/workflows/lintcommit.yml b/.github/workflows/lintcommit.yml index 8f56c057ae..3d140532cd 100644 --- a/.github/workflows/lintcommit.yml +++ b/.github/workflows/lintcommit.yml @@ -1,4 +1,4 @@ -name: "Commit Linter" +name: "lintcommit" on: pull_request: types: [opened, synchronize, reopened, ready_for_review] @@ -14,8 +14,8 @@ jobs: fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} - - run: ./.github/scripts/install_deps.sh - - uses: ./.github/actions/cache + - uses: ./.github/actions/setup + - name: Build run: | cmake -S cmake.deps --preset ci diff --git a/.github/workflows/news.yml b/.github/workflows/news.yml index d4f8e5ad65..8d21b86e8e 100644 --- a/.github/workflows/news.yml +++ b/.github/workflows/news.yml @@ -1,13 +1,13 @@ -name: "news.txt check" +name: "news.txt" on: pull_request: - types: [opened, synchronize, reopened, ready_for_review] + types: [opened, synchronize, reopened, ready_for_review, labeled, unlabeled] branches: - 'master' jobs: check: runs-on: ubuntu-latest - if: github.event.pull_request.draft == false + if: github.event.pull_request.draft == false && !contains(github.event.pull_request.labels.*.name, 'ci:skip-news') steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/notes.md b/.github/workflows/notes.md index 8c518b0bdb..294d92ebb5 100644 --- a/.github/workflows/notes.md +++ b/.github/workflows/notes.md @@ -48,7 +48,7 @@ https://github.com/neovim/neovim-releases. ### Other -- Install by [package manager](https://github.com/neovim/neovim/wiki/Installing-Neovim) +- Install by [package manager](https://github.com/neovim/neovim/blob/master/INSTALL.md#install-from-package) ## SHA256 Checksums diff --git a/.github/workflows/optional.yml b/.github/workflows/optional.yml index ebaf23d29b..c9a8205f87 100644 --- a/.github/workflows/optional.yml +++ b/.github/workflows/optional.yml @@ -2,6 +2,7 @@ name: optional on: pull_request: types: [labeled, opened, synchronize, reopened] + workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }} @@ -9,12 +10,14 @@ concurrency: env: INSTALL_PREFIX: ${{ github.workspace }}/nvim-install + # Double test timeout since it's running via qemu + TEST_TIMEOUT: 2400 # TEST_FILE: test/functional/shada # TEST_FILTER: foo jobs: s390x: - if: contains(github.event.pull_request.labels.*.name, 'ci-s390x') + if: contains(github.event.pull_request.labels.*.name, 'ci:s390x') || github.event_name == 'workflow_dispatch' strategy: fail-fast: false matrix: @@ -25,17 +28,21 @@ jobs: - run: docker run --rm --privileged multiarch/qemu-user-static:register --reset - uses: docker://multiarch/ubuntu-core:s390x-focal with: + # Docker runs the command as root, but we want the build/test to run + # as non-root so permissions based tests run correctly args: > bash -c " apt-get -y update && DEBIAN_FRONTEND=noninteractive apt-get -y install build-essential cmake curl gettext ninja-build locales-all cpanminus git attr libattr1-dev && - git clone --depth=1 https://github.com/neovim/neovim.git && + useradd --create-home qemuci && + chown -R qemuci. . && + runuser -u qemuci -- git clone --depth=1 https://github.com/neovim/neovim.git && cd neovim && - git fetch origin ${{ github.ref }}:pr && - git switch pr && - cmake -S cmake.deps -B .deps -G Ninja -D USE_BUNDLED_LUAJIT=OFF -D USE_BUNDLED_LUA=ON && - cmake --build .deps && - cmake -B build -G Ninja -D PREFER_LUA=ON && - make ${{ matrix.test }} + runuser -u qemuci -- git fetch origin ${{ github.ref }}:pr && + runuser -u qemuci -- git switch pr && + runuser -u qemuci -- cmake -S cmake.deps -B .deps -G Ninja -D USE_BUNDLED_LUAJIT=OFF -D USE_BUNDLED_LUA=ON && + runuser -u qemuci -- cmake --build .deps && + runuser -u qemuci -- cmake -B build -G Ninja -D CI_BUILD=ON -D PREFER_LUA=ON && + runuser -u qemuci -- make ${{ matrix.test }} " diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b19019d06d..48a3901955 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,4 @@ -name: Release +name: release on: schedule: - cron: '5 5 * * *' @@ -23,27 +23,30 @@ jobs: version: ${{ steps.build.outputs.version }} steps: - uses: actions/checkout@v4 + with: + # Perform a full checkout #13471 + fetch-depth: 0 - run: ./.github/scripts/install_deps.sh - if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name != 'nightly') run: | - echo 'NVIM_BUILD_TYPE=Release' >> $GITHUB_ENV + echo 'CMAKE_BUILD_TYPE=Release' >> $GITHUB_ENV echo 'APPIMAGE_TAG=latest' >> $GITHUB_ENV - if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name == 'nightly') run: | - echo 'NVIM_BUILD_TYPE=RelWithDebInfo' >> $GITHUB_ENV + echo 'CMAKE_BUILD_TYPE=RelWithDebInfo' >> $GITHUB_ENV echo 'APPIMAGE_TAG=nightly' >> $GITHUB_ENV - name: appimage run: ./scripts/genappimage.sh ${APPIMAGE_TAG} - name: tar.gz run: cpack --config build/CPackConfig.cmake -G TGZ - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: appimage path: | build/bin/nvim.appimage build/bin/nvim.appimage.zsync retention-days: 1 - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: nvim-linux64 path: | @@ -57,18 +60,21 @@ jobs: printf 'END\n' >> $GITHUB_OUTPUT macOS: - runs-on: macos-11 + runs-on: macos-14 steps: - uses: actions/checkout@v4 + with: + # Perform a full checkout #13471 + fetch-depth: 0 - name: Install dependencies run: ./.github/scripts/install_deps.sh - if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name != 'nightly') - run: printf 'NVIM_BUILD_TYPE=Release\n' >> $GITHUB_ENV + run: printf 'CMAKE_BUILD_TYPE=Release\n' >> $GITHUB_ENV - if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name == 'nightly') - run: printf 'NVIM_BUILD_TYPE=RelWithDebInfo\n' >> $GITHUB_ENV + run: printf 'CMAKE_BUILD_TYPE=RelWithDebInfo\n' >> $GITHUB_ENV - name: Build universal binary run: ./.github/scripts/build_universal_macos.sh - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: nvim-macos path: build/nvim-macos.tar.gz @@ -79,6 +85,9 @@ jobs: name: windows (MSVC_64) steps: - uses: actions/checkout@v4 + with: + # Perform a full checkout #13471 + fetch-depth: 0 - run: .github/scripts/env.ps1 - name: Build deps run: | @@ -88,7 +97,7 @@ jobs: run: | cmake -B build -G Ninja -DCMAKE_BUILD_TYPE='RelWithDebInfo' cmake --build build --target package - - uses: actions/upload-artifact@v3 + - uses: actions/upload-artifact@v4 with: name: nvim-win64 path: | @@ -109,7 +118,7 @@ jobs: # before running, and would therefore delete the downloaded artifacts - uses: actions/checkout@v4 - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 - name: Install dependencies run: sudo apt-get update && sudo apt-get install -y gettext-base @@ -169,37 +178,7 @@ jobs: DEBUG: api run: | envsubst < "$GITHUB_WORKSPACE/.github/workflows/notes.md" > "$RUNNER_TEMP/notes.md" - gh release create $TAG_NAME $PRERELEASE --notes-file "$RUNNER_TEMP/notes.md" --title "$SUBJECT" --target $GITHUB_SHA nvim-macos/* nvim-linux64/* appimage/* nvim-win64/* if [ "$TAG_NAME" != "nightly" ]; then gh release create stable $PRERELEASE --notes-file "$RUNNER_TEMP/notes.md" --title "$SUBJECT" --target $GITHUB_SHA nvim-macos/* nvim-linux64/* appimage/* nvim-win64/* fi - - publish-winget: - needs: publish - runs-on: windows-latest - steps: - - if: github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name != 'nightly') - name: Publish stable - uses: vedantmgoyal2009/winget-releaser@v2 - with: - identifier: Neovim.Neovim - release-tag: ${{ github.event.inputs.tag_name || github.ref_name }} - token: ${{ secrets.WINGET_TOKEN }} - - name: Fetch nightly build msi from previous job - if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name == 'nightly') - uses: actions/download-artifact@v3 - - if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name == 'nightly') - name: Get version from nightly build msi - id: get-version - run: | - Install-Module -Name 'Carbon.Windows.Installer' -Force - $VERSION = (Get-CMsi (Resolve-Path .\nvim-win64\nvim-win64.msi).Path).ProductVersion - "version=$VERSION" >> $env:GITHUB_OUTPUT - - if: github.event_name == 'schedule' || (github.event_name == 'workflow_dispatch' && github.event.inputs.tag_name == 'nightly') - name: Publish nightly - uses: vedantmgoyal2009/winget-releaser@v2 - with: - identifier: Neovim.Neovim.Nightly - version: ${{ steps.get-version.outputs.version }} - release-tag: nightly - token: ${{ secrets.WINGET_TOKEN }} + gh release create $TAG_NAME $PRERELEASE --notes-file "$RUNNER_TEMP/notes.md" --title "$SUBJECT" --target $GITHUB_SHA nvim-macos/* nvim-linux64/* appimage/* nvim-win64/* diff --git a/.github/workflows/add-reviewers.yml b/.github/workflows/reviewers_add.yml index 22c68b6ef7..b116bca29b 100644 --- a/.github/workflows/add-reviewers.yml +++ b/.github/workflows/reviewers_add.yml @@ -1,4 +1,4 @@ -name: "Request reviews" +name: "reviewers: add" on: pull_request_target: types: [labeled, ready_for_review, reopened] @@ -15,5 +15,5 @@ jobs: uses: actions/github-script@v7 with: script: | - const script = require('./.github/scripts/reviews.js') + const script = require('./.github/scripts/reviewers_add.js') await script({github, context}) diff --git a/.github/workflows/remove-reviewers.yml b/.github/workflows/reviewers_remove.yml index 3fe7493b93..b10d8c3d23 100644 --- a/.github/workflows/remove-reviewers.yml +++ b/.github/workflows/reviewers_remove.yml @@ -1,4 +1,4 @@ -name: "Remove reviewers" +name: "reviewers: remove" on: pull_request_target: types: [converted_to_draft, closed] @@ -13,5 +13,5 @@ jobs: uses: actions/github-script@v7 with: script: | - const script = require('./.github/scripts/remove-reviewers.js') + const script = require('./.github/scripts/reviewers_remove.js') await script({github, context}) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index acf0f195b9..6bd40b8561 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -35,15 +35,12 @@ jobs: CC: clang steps: - uses: actions/checkout@v4 - - run: ./.github/scripts/install_deps.sh - - uses: ./.github/actions/cache + - uses: ./.github/actions/setup - name: Install stylua run: | - URL=$(curl -L https://api.github.com/repos/JohnnyMorganz/StyLua/releases/latest | jq -r '.assets[] | select(.name == "stylua-linux-x86_64.zip") | .browser_download_url') - wget --directory-prefix="$BIN_DIR" "$URL" + wget --directory-prefix="$BIN_DIR" https://github.com/JohnnyMorganz/StyLua/releases/latest/download/stylua-linux-x86_64.zip (cd "$BIN_DIR"; unzip stylua*.zip) - echo "$BIN_DIR" >> $GITHUB_PATH - name: Build third-party deps run: | @@ -88,8 +85,7 @@ jobs: CC: clang steps: - uses: actions/checkout@v4 - - run: ./.github/scripts/install_deps.sh - - uses: ./.github/actions/cache + - uses: ./.github/actions/setup - name: Build third-party deps run: | cmake -S cmake.deps --preset ci @@ -108,14 +104,17 @@ jobs: { runner: ubuntu-22.04, flavor: tsan, cc: clang, flags: -D ENABLE_TSAN=ON }, { runner: ubuntu-22.04, cc: gcc }, { runner: macos-12, cc: clang, flags: -D CMAKE_FIND_FRAMEWORK=NEVER, deps_flags: -D CMAKE_FIND_FRAMEWORK=NEVER }, - { runner: ubuntu-22.04, flavor: functionaltest-lua, cc: gcc, deps_flags: -D USE_BUNDLED_LUAJIT=OFF -D USE_BUNDLED_LUA=ON, flags: -D PREFER_LUA=ON }, + { runner: macos-14, cc: clang, flags: -D CMAKE_FIND_FRAMEWORK=NEVER, deps_flags: -D CMAKE_FIND_FRAMEWORK=NEVER }, + { runner: ubuntu-22.04, flavor: puc-lua, cc: gcc, deps_flags: -D USE_BUNDLED_LUAJIT=OFF -D USE_BUNDLED_LUA=ON, flags: -D PREFER_LUA=ON }, ] test: [unittest, functionaltest, oldtest] exclude: - test: unittest build: { flavor: tsan } - test: unittest - build: { flavor: functionaltest-lua } + build: { flavor: puc-lua } + - test: unittest + build: { runner: macos-14 } # unittests don't work on M1 #26145 - test: oldtest build: { flavor: tsan } runs-on: ${{ matrix.build.runner }} @@ -124,24 +123,13 @@ jobs: CC: ${{ matrix.build.cc }} steps: - uses: actions/checkout@v4 - - run: ./.github/scripts/install_deps.sh --test - - uses: ./.github/actions/cache - - - name: Set up environment - run: | - ulimit -c unlimited - echo "$BIN_DIR" >> $GITHUB_PATH + - uses: ./.github/actions/setup + with: + install_flags: "--test" - name: Create log dir run: mkdir -p "$LOG_DIR" - # FIXME(dundargoc): this workaround is needed for macos as the python3 - # provider tests suddenly started to become extremely flaky, and this - # removes the flakiness for some reason. - - uses: actions/setup-python@v4 - with: - python-version: '3.11' - - if: ${{ matrix.test != 'unittest' }} name: Set up interpreter packages run: | @@ -161,12 +149,12 @@ jobs: - name: Build third-party deps run: | - cmake -S cmake.deps --preset ci ${{ matrix.build.deps_flags }} + cmake -S cmake.deps --preset ci -D CMAKE_BUILD_TYPE=Debug ${{ matrix.build.deps_flags }} cmake --build .deps - name: Build run: | - cmake --preset ci -D CMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX ${{ matrix.build.flags }} + cmake --preset ci -D CMAKE_BUILD_TYPE=Debug -D CMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX ${{ matrix.build.flags }} cmake --build build - name: ${{ matrix.test }} @@ -213,8 +201,7 @@ jobs: test: [functional, old] steps: - uses: actions/checkout@v4 - - uses: ./.github/actions/cache - - run: .github/scripts/env.ps1 + - uses: ./.github/actions/setup - name: Build deps run: | @@ -281,8 +268,7 @@ jobs: CC: gcc steps: - uses: actions/checkout@v4 - - run: ./.github/scripts/install_deps.sh - - uses: ./.github/actions/cache + - uses: ./.github/actions/setup - name: Build third-party deps run: | @@ -308,11 +294,11 @@ jobs: CC: gcc steps: - uses: actions/checkout@v4 + - uses: ./.github/actions/setup - name: Install dependencies run: | sudo add-apt-repository ppa:neovim-ppa/stable - ./.github/scripts/install_deps.sh sudo apt-get install -y \ libluajit-5.1-dev \ libmsgpack-dev \ @@ -329,8 +315,6 @@ jobs: # Remove comments from packages once we start using these external # dependencies. - - uses: ./.github/actions/cache - - name: Build third-party deps run: | cmake -S cmake.deps --preset external_deps diff --git a/.github/workflows/vim-patches.yml b/.github/workflows/vim_patches.yml index 711ddae815..711ddae815 100644 --- a/.github/workflows/vim-patches.yml +++ b/.github/workflows/vim_patches.yml |