aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/ISSUE_TEMPLATE/bug_report.yml11
-rw-r--r--.github/ISSUE_TEMPLATE/feature_request.yml2
-rw-r--r--.github/ISSUE_TEMPLATE/lsp_bug_report.yml2
-rw-r--r--.github/actions/cache/action.yml2
-rw-r--r--.github/actions/setup/action.yml29
-rw-r--r--.github/labeler.yml66
-rwxr-xr-x.github/scripts/build_universal_macos.sh7
-rw-r--r--.github/scripts/close_unresponsive.js1
-rwxr-xr-x.github/scripts/install_deps.sh4
-rw-r--r--.github/scripts/labeler_configuration.yml71
-rw-r--r--.github/scripts/reviewers_add.js (renamed from .github/scripts/reviews.js)8
-rw-r--r--.github/scripts/reviewers_remove.js (renamed from .github/scripts/remove-reviewers.js)0
-rw-r--r--.github/workflows/backport.yml8
-rw-r--r--.github/workflows/build.yml18
-rw-r--r--.github/workflows/codeql.yml15
-rw-r--r--.github/workflows/coverity.yml6
-rw-r--r--.github/workflows/docs.yml (renamed from .github/workflows/api-docs.yml)17
-rw-r--r--.github/workflows/labeler_issue.yml (renamed from .github/workflows/issue-open-check.yml)9
-rw-r--r--.github/workflows/labeler_pr.yml (renamed from .github/workflows/labeler.yml)15
-rw-r--r--.github/workflows/lintcommit.yml6
-rw-r--r--.github/workflows/news.yml6
-rw-r--r--.github/workflows/notes.md2
-rw-r--r--.github/workflows/optional.yml23
-rw-r--r--.github/workflows/release.yml63
-rw-r--r--.github/workflows/reviewers_add.yml (renamed from .github/workflows/add-reviewers.yml)4
-rw-r--r--.github/workflows/reviewers_remove.yml (renamed from .github/workflows/remove-reviewers.yml)4
-rw-r--r--.github/workflows/test.yml48
-rw-r--r--.github/workflows/vim_patches.yml (renamed from .github/workflows/vim-patches.yml)0
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