aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2025-02-05 23:09:29 +0000
committerJosh Rahm <joshuarahm@gmail.com>2025-02-05 23:09:29 +0000
commitd5f194ce780c95821a855aca3c19426576d28ae0 (patch)
treed45f461b19f9118ad2bb1f440a7a08973ad18832 /.github/workflows
parentc5d770d311841ea5230426cc4c868e8db27300a8 (diff)
parent44740e561fc93afe3ebecfd3618bda2d2abeafb0 (diff)
downloadrneovim-rahm.tar.gz
rneovim-rahm.tar.bz2
rneovim-rahm.zip
Merge remote-tracking branch 'upstream/master' into mix_20240309HEADrahm
Diffstat (limited to '.github/workflows')
-rw-r--r--.github/workflows/build.yml4
-rw-r--r--.github/workflows/news.yml14
-rw-r--r--.github/workflows/notes.md42
-rw-r--r--.github/workflows/release.yml79
-rw-r--r--.github/workflows/test.yml51
-rw-r--r--.github/workflows/vim_patches.yml8
6 files changed, 87 insertions, 111 deletions
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