diff options
Diffstat (limited to '.github')
-rw-r--r-- | .github/ISSUE_TEMPLATE/bug_report.yml | 2 | ||||
-rw-r--r-- | .github/ISSUE_TEMPLATE/feature_request.yml | 2 | ||||
-rw-r--r-- | .github/ISSUE_TEMPLATE/lsp_bug_report.yml | 3 | ||||
-rwxr-xr-x | .github/scripts/install_deps.sh | 2 | ||||
-rw-r--r-- | .github/scripts/reviewers_add.js | 1 | ||||
-rw-r--r-- | .github/workflows/build.yml | 4 | ||||
-rw-r--r-- | .github/workflows/news.yml | 14 | ||||
-rw-r--r-- | .github/workflows/notes.md | 42 | ||||
-rw-r--r-- | .github/workflows/release.yml | 79 | ||||
-rw-r--r-- | .github/workflows/test.yml | 51 | ||||
-rw-r--r-- | .github/workflows/vim_patches.yml | 8 |
11 files changed, 92 insertions, 116 deletions
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index ce0dbd40de..8cbd3d4ef5 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,6 +1,6 @@ name: Bug Report description: Report a problem in Nvim -labels: [bug] +type: 'bug' body: - type: markdown diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 49bd8158bf..f7cf5980b3 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -1,6 +1,6 @@ name: Feature request description: Request an enhancement for Nvim -labels: [enhancement] +type: 'enhancement' body: - type: markdown diff --git a/.github/ISSUE_TEMPLATE/lsp_bug_report.yml b/.github/ISSUE_TEMPLATE/lsp_bug_report.yml index 277fabca5e..a186a1ee98 100644 --- a/.github/ISSUE_TEMPLATE/lsp_bug_report.yml +++ b/.github/ISSUE_TEMPLATE/lsp_bug_report.yml @@ -1,7 +1,8 @@ name: Language server (LSP) client bug description: Report an issue with Nvim LSP title: "LSP: " -labels: [bug, lsp] +type: bug +labels: [lsp] body: - type: markdown diff --git a/.github/scripts/install_deps.sh b/.github/scripts/install_deps.sh index 2aec8ea553..5e2c88c7af 100755 --- a/.github/scripts/install_deps.sh +++ b/.github/scripts/install_deps.sh @@ -30,7 +30,7 @@ if [[ $os == Linux ]]; then fi if [[ -n $TEST ]]; then - sudo apt-get install -y locales-all cpanminus attr libattr1-dev gdb inotify-tools + sudo apt-get install -y locales-all cpanminus attr libattr1-dev gdb inotify-tools xdg-utils # Use default CC to avoid compilation problems when installing Python modules CC=cc python3 -m pip -q install --user --upgrade --break-system-packages pynvim diff --git a/.github/scripts/reviewers_add.js b/.github/scripts/reviewers_add.js index 08b4e85b74..73e1ece516 100644 --- a/.github/scripts/reviewers_add.js +++ b/.github/scripts/reviewers_add.js @@ -57,7 +57,6 @@ module.exports = async ({ github, context }) => { if (labels.includes("lsp")) { reviewers.add("MariaSolOs"); - reviewers.add("mfussenegger"); } if (labels.includes("netrw")) { diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ab313729b9..3211216c85 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -89,7 +89,9 @@ jobs: for d in *; do (cd "$d"; rm -rf ./autom4te.cache; make clean || true; make distclean || true); done - name: Re-build bundled dependencies with no network access - run: unshare --map-root-user --net make deps DEPS_CMAKE_FLAGS=-DUSE_EXISTING_SRC_DIR=ON + run: | + sudo sysctl kernel.apparmor_restrict_unprivileged_userns=0 + unshare --map-root-user --net make deps DEPS_CMAKE_FLAGS=-DUSE_EXISTING_SRC_DIR=ON - name: Build run: make CMAKE_FLAGS="-D CI_BUILD=ON" diff --git a/.github/workflows/news.yml b/.github/workflows/news.yml index 8d21b86e8e..e2d9a058c3 100644 --- a/.github/workflows/news.yml +++ b/.github/workflows/news.yml @@ -19,15 +19,15 @@ jobs: message=$(git log -n1 --pretty=format:%s $commit) type="$(echo "$message" | sed -E 's|([[:alpha:]]+)(\(.*\))?!?:.*|\1|')" breaking="$(echo "$message" | sed -E 's|[[:alpha:]]+(\(.*\))?!:.*|breaking-change|')" - if [[ "$type" == "feat" ]] || [[ "$breaking" == "breaking-change" ]]; then - ! git diff HEAD~${{ github.event.pull_request.commits }}..HEAD --quiet runtime/doc/news.txt || + if [[ "$type" == "feat" ]] || [[ "$type" == "perf" ]] || [[ "$breaking" == "breaking-change" ]]; then + ! git diff HEAD~${{ github.event.pull_request.commits }}..HEAD --quiet runtime/doc/news.txt runtime/doc/deprecated.txt || { echo " - Pull request includes a new feature or a breaking change, but - news.txt hasn't been updated yet. This is just a reminder - that news.txt may need to be updated. You can ignore this CI - failure if you think the change won't be of interest to - users." + Pull request includes a new feature, performance improvement + or a breaking change, but news.txt hasn't been updated yet. + This is just a reminder that news.txt may need to be updated. + You can ignore this CI failure if you think the change won't + be of interest to users." exit 1 } fi diff --git a/.github/workflows/notes.md b/.github/workflows/notes.md index 25f4a5fb32..092bab2720 100644 --- a/.github/workflows/notes.md +++ b/.github/workflows/notes.md @@ -34,38 +34,46 @@ Note: On Windows "Server" you may need to [install vcruntime140.dll](https://lea 3. Extract: `tar xzvf nvim-macos-arm64.tar.gz` 4. Run `./nvim-macos-arm64/bin/nvim` -### Linux (x64) +### Linux (x86_64) glibc 2.31 or newer is required. Or you may try the (unsupported) [builds for older glibc](https://github.com/neovim/neovim-releases). #### AppImage -1. Download **nvim.appimage** -2. Run `chmod u+x nvim.appimage && ./nvim.appimage` +1. Download **nvim-linux-x86_64.appimage** +2. Run `chmod u+x nvim-linux-x86_64.appimage && ./nvim-linux-x86_64.appimage` - If your system does not have FUSE you can [extract the appimage](https://github.com/AppImage/AppImageKit/wiki/FUSE#type-2-appimage): ``` - ./nvim.appimage --appimage-extract + ./nvim-linux-x86_64.appimage --appimage-extract ./squashfs-root/usr/bin/nvim ``` #### Tarball -1. Download **nvim-linux64.tar.gz** -2. Extract: `tar xzvf nvim-linux64.tar.gz` -3. Run `./nvim-linux64/bin/nvim` +1. Download **nvim-linux-x86_64.tar.gz** +2. Extract: `tar xzvf nvim-linux-x86_64.tar.gz` +3. Run `./nvim-linux-x86_64/bin/nvim` + +### Linux (arm64) + +#### AppImage + +1. Download **nvim-linux-arm64.appimage** +2. Run `chmod u+x nvim-linux-arm64.appimage && ./nvim-linux-arm64.appimage` + - If your system does not have FUSE you can [extract the appimage](https://github.com/AppImage/AppImageKit/wiki/FUSE#type-2-appimage): + ``` + ./nvim-linux-arm64.appimage --appimage-extract + ./squashfs-root/usr/bin/nvim + ``` + +#### Tarball + +1. Download **nvim-linux-arm64.tar.gz** +2. Extract: `tar xzvf nvim-linux-arm64.tar.gz` +3. Run `./nvim-linux-arm64/bin/nvim` ### Other - Install by [package manager](https://github.com/neovim/neovim/blob/master/INSTALL.md#install-from-package) ## SHA256 Checksums - -``` -${SHA_LINUX_64_TAR} -${SHA_APP_IMAGE} -${SHA_APP_IMAGE_ZSYNC} -${SHA_MACOS_X86_64} -${SHA_MACOS_ARM64} -${SHA_WIN_64_ZIP} -${SHA_WIN_64_MSI} -``` diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index de90a077ff..9f26e667f7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -39,10 +39,21 @@ jobs: printf "appimage_tag=${APPIMAGE_TAG}\n" >> $GITHUB_OUTPUT linux: - runs-on: ubuntu-20.04 needs: setup + strategy: + fail-fast: false + matrix: + runner: [ ubuntu-20.04, ubuntu-24.04-arm ] + include: + - runner: ubuntu-20.04 + arch: x86_64 + cc: gcc-10 + - runner: ubuntu-24.04-arm + arch: arm64 + runs-on: ${{ matrix.runner }} env: - CC: gcc-10 + CC: ${{ matrix.cc }} + LDAI_NO_APPSTREAM: 1 # skip checking (broken) AppStream metadata for issues outputs: version: ${{ steps.build.outputs.version }} steps: @@ -52,22 +63,25 @@ jobs: fetch-depth: 0 - run: ./.github/scripts/install_deps.sh - run: echo "CMAKE_BUILD_TYPE=${{ needs.setup.outputs.build_type }}" >> $GITHUB_ENV + - if: matrix.arch == 'arm64' + run: sudo apt-get update && sudo apt-get install -y libfuse2t64 - name: appimage - run: ./scripts/genappimage.sh ${{ needs.setup.outputs.appimage_tag }} + run: | + ./scripts/genappimage.sh ${{ needs.setup.outputs.appimage_tag }} - name: tar.gz run: cpack --config build/CPackConfig.cmake -G TGZ - uses: actions/upload-artifact@v4 with: - name: appimage + name: nvim-appimage-${{ matrix.arch }} path: | - build/bin/nvim.appimage - build/bin/nvim.appimage.zsync + build/bin/nvim-linux-${{ matrix.arch }}.appimage + build/bin/nvim-linux-${{ matrix.arch }}.appimage.zsync retention-days: 1 - uses: actions/upload-artifact@v4 with: - name: nvim-linux64 + name: nvim-linux-${{ matrix.arch }} path: | - build/nvim-linux64.tar.gz + build/nvim-linux-${{ matrix.arch }}.tar.gz retention-days: 1 - name: Export version id: build @@ -75,7 +89,6 @@ jobs: printf 'version<<END\n' >> $GITHUB_OUTPUT ./build/bin/nvim --version | head -n 3 >> $GITHUB_OUTPUT printf 'END\n' >> $GITHUB_OUTPUT - macos: needs: setup strategy: @@ -104,7 +117,6 @@ jobs: -D CMAKE_BUILD_TYPE=${{ needs.setup.outputs.build_type }} \ -D CMAKE_FIND_FRAMEWORK=NEVER cmake --build .deps - - name: Build neovim run: | cmake -B build -G Ninja \ @@ -112,7 +124,6 @@ jobs: -D ENABLE_LIBINTL=OFF \ -D CMAKE_FIND_FRAMEWORK=NEVER cmake --build build - - name: Package run: cpack --config build/CPackConfig.cmake @@ -187,45 +198,23 @@ jobs: git push origin :stable || true # `sha256sum` outputs <sha> <path>, so we cd into each dir to drop the # containing folder from the output. - - name: Generate Linux64 SHA256 checksums - run: | - cd ./nvim-linux64 - sha256sum nvim-linux64.tar.gz > nvim-linux64.tar.gz.sha256sum - echo "SHA_LINUX_64_TAR=$(cat nvim-linux64.tar.gz.sha256sum)" >> $GITHUB_ENV - - name: Generate App Image SHA256 checksums - run: | - cd ./appimage - sha256sum nvim.appimage > nvim.appimage.sha256sum - echo "SHA_APP_IMAGE=$(cat nvim.appimage.sha256sum)" >> $GITHUB_ENV - - name: Generate App Image Zsync SHA256 checksums - run: | - cd ./appimage - sha256sum nvim.appimage.zsync > nvim.appimage.zsync.sha256sum - echo "SHA_APP_IMAGE_ZSYNC=$(cat nvim.appimage.zsync.sha256sum)" >> $GITHUB_ENV - - name: Generate macos x86_64 SHA256 checksums - run: | - cd ./nvim-macos-x86_64 - sha256sum nvim-macos-x86_64.tar.gz > nvim-macos-x86_64.tar.gz.sha256sum - echo "SHA_MACOS_X86_64=$(cat nvim-macos-x86_64.tar.gz.sha256sum)" >> $GITHUB_ENV - - name: Generate macos arm64 SHA256 checksums - run: | - cd ./nvim-macos-arm64 - sha256sum nvim-macos-arm64.tar.gz > nvim-macos-arm64.tar.gz.sha256sum - echo "SHA_MACOS_ARM64=$(cat nvim-macos-arm64.tar.gz.sha256sum)" >> $GITHUB_ENV - - name: Generate Win64 SHA256 checksums - run: | - cd ./nvim-win64 - sha256sum nvim-win64.zip > nvim-win64.zip.sha256sum - echo "SHA_WIN_64_ZIP=$(cat nvim-win64.zip.sha256sum)" >> $GITHUB_ENV - sha256sum nvim-win64.msi > nvim-win64.msi.sha256sum - echo "SHA_WIN_64_MSI=$(cat nvim-win64.msi.sha256sum)" >> $GITHUB_ENV + - run: | + for i in nvim-*; do + ( + cd $i || exit + sha256sum * >> $GITHUB_WORKSPACE/shasum.txt + ) + done - name: Publish release env: NVIM_VERSION: ${{ needs.linux.outputs.version }} DEBUG: api run: | envsubst < "$GITHUB_WORKSPACE/.github/workflows/notes.md" > "$RUNNER_TEMP/notes.md" + echo '```' >> "$RUNNER_TEMP/notes.md" + cat shasum.txt >> "$RUNNER_TEMP/notes.md" + echo '```' >> "$RUNNER_TEMP/notes.md" if [ "$TAG_NAME" != "nightly" ]; then - gh release create stable $PRERELEASE --notes-file "$RUNNER_TEMP/notes.md" --title "$SUBJECT" --target $GITHUB_SHA nvim-macos-x86_64/* nvim-macos-arm64/* nvim-linux64/* appimage/* nvim-win64/* + gh release create stable $PRERELEASE --notes-file "$RUNNER_TEMP/notes.md" --title "$SUBJECT" --target $GITHUB_SHA nvim-macos-x86_64/* nvim-macos-arm64/* nvim-linux-x86_64/* nvim-linux-arm64/* nvim-appimage-x86_64/* nvim-appimage-arm64/* nvim-win64/* shasum.txt fi - gh release create $TAG_NAME $PRERELEASE --notes-file "$RUNNER_TEMP/notes.md" --title "$SUBJECT" --target $GITHUB_SHA nvim-macos-x86_64/* nvim-macos-arm64/* nvim-linux64/* appimage/* nvim-win64/* + gh release create $TAG_NAME $PRERELEASE --notes-file "$RUNNER_TEMP/notes.md" --title "$SUBJECT" --target $GITHUB_SHA nvim-macos-x86_64/* nvim-macos-arm64/* nvim-linux-x86_64/* nvim-linux-arm64/* nvim-appimage-x86_64/* nvim-appimage-arm64/* nvim-win64/* shasum.txt diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 0885efddd5..a366dea082 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -106,7 +106,8 @@ jobs: [ { runner: ubuntu-24.04, os: ubuntu, flavor: asan, cc: clang, flags: -D ENABLE_ASAN_UBSAN=ON }, { runner: ubuntu-24.04, os: ubuntu, flavor: tsan, cc: clang, flags: -D ENABLE_TSAN=ON }, - { runner: ubuntu-24.04, os: ubuntu, cc: gcc }, + { runner: ubuntu-24.04, os: ubuntu, flavor: release, cc: gcc, flags: -D CMAKE_BUILD_TYPE=Release }, + { runner: ubuntu-24.04-arm, os: ubuntu, flavor: arm, cc: gcc, flags: -D CMAKE_BUILD_TYPE=RelWithDebInfo }, { runner: macos-13, os: macos, flavor: intel, cc: clang, flags: -D CMAKE_FIND_FRAMEWORK=NEVER, deps_flags: -D CMAKE_FIND_FRAMEWORK=NEVER }, { runner: macos-15, os: macos, flavor: arm, cc: clang, flags: -D CMAKE_FIND_FRAMEWORK=NEVER, deps_flags: -D CMAKE_FIND_FRAMEWORK=NEVER }, { runner: ubuntu-24.04, os: ubuntu, flavor: puc-lua, cc: gcc, deps_flags: -D USE_BUNDLED_LUAJIT=OFF -D USE_BUNDLED_LUA=ON, flags: -D PREFER_LUA=ON }, @@ -145,6 +146,10 @@ jobs: sudo cpanm -n Neovim::Ext || cat "$HOME/.cpanm/build.log" perl -W -e 'use Neovim::Ext; print $Neovim::Ext::VERSION' + - name: Remove .git directory + if: ${{ matrix.build.os == 'ubuntu' }} + run: cmake -E rm -rf -- .git + - name: Build third-party deps run: | cmake -S cmake.deps --preset ci -D CMAKE_BUILD_TYPE=Debug ${{ matrix.build.deps_flags }} @@ -155,9 +160,15 @@ jobs: cmake --preset ci -D CMAKE_BUILD_TYPE=Debug -D CMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX ${{ matrix.build.flags }} cmake --build build - - name: ${{ matrix.test }} + - if: ${{ matrix.test == 'oldtest' }} + name: ${{ matrix.test }} + timeout-minutes: 20 + run: make -C test/old/testdir NVIM_PRG=$(realpath build)/bin/nvim + + - if: ${{ matrix.test != 'oldtest' }} + name: ${{ matrix.test }} timeout-minutes: 20 - run: make ${{ matrix.test }} + run: cmake --build build --target ${{ matrix.test }} - name: Install run: | @@ -193,40 +204,6 @@ jobs: windows: uses: ./.github/workflows/test_windows.yml - # This job tests the following things: - # - Check if Release, MinSizeRel and RelWithDebInfo compiles correctly. - # - Test the above build types with the GCC compiler specifically. - # Empirically the difference in warning levels between GCC and other - # compilers is particularly big. - # - Test if the build works with multi-config generators. We mostly use - # single-config generators so it's nice to have a small sanity check for - # multi-config. - build-types: - runs-on: ubuntu-24.04 - timeout-minutes: 10 - env: - CC: gcc - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/setup - - - name: Build third-party deps - run: | - cmake -S cmake.deps -B .deps -G "Ninja Multi-Config" - cmake --build .deps - - - name: Configure - run: cmake --preset ci -G "Ninja Multi-Config" - - - name: Release - run: cmake --build build --config Release - - - name: RelWithDebInfo - run: cmake --build build --config RelWithDebInfo - - - name: MinSizeRel - run: cmake --build build --config MinSizeRel - with-external-deps: runs-on: ubuntu-24.04 timeout-minutes: 10 diff --git a/.github/workflows/vim_patches.yml b/.github/workflows/vim_patches.yml index b0be01089f..05af39f19c 100644 --- a/.github/workflows/vim_patches.yml +++ b/.github/workflows/vim_patches.yml @@ -28,10 +28,10 @@ jobs: - run: sudo apt-get install libfuse2 - run: | - gh release download -R neovim/neovim -p nvim.appimage - chmod a+x nvim.appimage + gh release download -R neovim/neovim -p nvim-linux-x86_64.appimage + chmod a+x nvim-linux-x86_64.appimage mkdir -p $HOME/.local/bin - mv nvim.appimage $HOME/.local/bin/nvim + mv nvim-linux-x86_64.appimage $HOME/.local/bin/nvim printf '%s\n' "$HOME/.local/bin" >> $GITHUB_PATH - name: Set up git config @@ -43,7 +43,7 @@ jobs: id: update-version run: | git checkout -b ${VERSION_BRANCH} - nvim -V1 -es -i NONE +'luafile scripts/vimpatch.lua' +q + nvim -l scripts/vimpatch.lua printf 'NEW_PATCHES=%s\n' $([ -z "$(git diff)" ]; echo $?) >> $GITHUB_OUTPUT - name: Automatic PR |