summaryrefslogtreecommitdiff
path: root/uvim/.github/workflows
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 20:38:37 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-02 20:38:37 +0300
commit25a9943d68a7dc31eeefeb17913dbe37d87e5302 (patch)
tree540166d548cafc56726a07225f2dbe649c8e2444 /uvim/.github/workflows
parenta4b5ffbaadb591066e2a97f8d450fb1d93e56a6e (diff)
downloadProject-Tick-25a9943d68a7dc31eeefeb17913dbe37d87e5302.tar.gz
Project-Tick-25a9943d68a7dc31eeefeb17913dbe37d87e5302.zip
NOISSUE Remove not needed CI workflows for GitHub Actions and reworked some workflows
Signed-off-by: Mehmet Samet Duman <yongdohyun@projecttick.org>
Diffstat (limited to 'uvim/.github/workflows')
-rw-r--r--uvim/.github/workflows/ci.yml853
-rw-r--r--uvim/.github/workflows/codeql-analysis.yml76
-rw-r--r--uvim/.github/workflows/coverity.yml85
-rw-r--r--uvim/.github/workflows/label.yml22
-rw-r--r--uvim/.github/workflows/link-check.yml15
5 files changed, 0 insertions, 1051 deletions
diff --git a/uvim/.github/workflows/ci.yml b/uvim/.github/workflows/ci.yml
deleted file mode 100644
index 5a3f2f6f0f..0000000000
--- a/uvim/.github/workflows/ci.yml
+++ /dev/null
@@ -1,853 +0,0 @@
-name: GitHub CI
-
-on:
- push:
- branches: ['**']
- pull_request:
-
-# Cancels all previous workflow runs for pull requests that have not completed.
-concurrency:
- # The concurrency group contains the workflow name and the branch name for
- # pull requests or the commit hash for any other events.
- group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
- cancel-in-progress: true
-
-permissions:
- contents: read # to fetch code (actions/checkout)
-
-jobs:
- linux:
- runs-on: ${{ matrix.architecture == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
-
- env:
- CC: ${{ matrix.compiler }}
- GCC_VER: 14
- CLANG_VER: 21
- TEST: test
- SRCDIR: ./src
- LEAK_CFLAGS: -DEXITFREE
- LOG_DIR: ${{ github.workspace }}/logs
- TERM: xterm
- DISPLAY: ':99'
- DEBIAN_FRONTEND: noninteractive
-
- strategy:
- fail-fast: false
- matrix:
- features: [tiny, normal, huge]
- compiler: [clang, gcc]
- extra: [[]]
- # Only use non-native architecture when features != huge.
- # features=huge tries to install python3-dev, which fails to install
- # for the non-native architecture.
- architecture: [native]
- include:
- - features: tiny
- compiler: clang
- extra: [nogui]
- - features: tiny
- compiler: gcc
- extra: [nogui, syn_test_execs]
- - features: tiny
- compiler: gcc
- extra: [nogui]
- architecture: arm64
- - features: normal
- shadow: ./src/shadow
- compiler: gcc
- architecture: i386
- - features: huge
- coverage: true
- - features: huge
- compiler: clang
- interface: dynamic
- python3: stable-abi
- - features: huge
- compiler: gcc
- coverage: true
- interface: dynamic
- extra: [uchar, testgui]
- - features: huge
- compiler: clang
- # Lua5.1 is the most widely used version (since it's what LuaJIT is
- # compatible with), so ensure it works
- lua_ver: '5.1'
- extra: [asan]
- - features: huge
- compiler: gcc
- coverage: true
- extra: [unittests]
- - features: huge
- compiler: gcc
- coverage: true
- extra: [unittests]
- architecture: arm64
- - features: normal
- compiler: gcc
- extra: [vimtags, proto, preproc_indent, encoding, codestyle]
- - features: huge
- compiler: gcc
- extra: [no_x11_wl]
-
- steps:
- - name: Checkout repository from github
- uses: actions/checkout@v6
-
- - name: Check Filelist (for packaging)
- run: |
- # If any files in the repository are not listed in Filelist this will
- # exit with an error code and list the missing entries.
- make -f ci/unlisted.make
-
- - name: Check hlgroups (are any new hlgroups added, but not handled in highlight.c)
- run: |
- # If any highlight groups have been documented, but not handled in
- # highlight.c, nor listed as 'intentionally left out' in hlgroups.ignore,
- # exit with an error code and list the missing entries.
- make -C ci -f hlgroups.make
-
- - name: Report executable syntax tests
- if: contains(matrix.extra, 'syn_test_execs')
- run: |
- # Search and list all found executable syntax tests, and exit with
- # an error code.
- make -C runtime/syntax executables
-
- - run: sudo dpkg --add-architecture i386
- if: matrix.architecture == 'i386'
-
- - name: Uninstall snap
- run: |
- sudo bash ci/remove_snap.sh
-
- - name: Enable debug packages
- run: |
- # Some of the ASAN suppressions are in libraries linked with dlopen
- # and symbolization of them requires these debug packages.
- sudo apt install ubuntu-dbgsym-keyring
- sudo cp ci/ddebs.list /etc/apt/sources.list.d/ddebs.list
- sudo cp ci/pinned-pkgs /etc/apt/preferences.d/pinned-pkgs
-
- - name: Install packages
- run: |
- # This is added by default, and it is often broken, but we don't need anything from it
- sudo rm -f /etc/apt/sources.list.d/microsoft-prod.list
- PKGS=( \
- gettext \
- x11-utils \
- labwc \
- wl-clipboard \
- wayland-utils \
- libgtk-3-dev:${{ matrix.architecture }} \
- libgtk-3-bin:${{ matrix.architecture }} \
- desktop-file-utils \
- libc6-dbgsym:${{ matrix.architecture }} \
- libtool-bin \
- libncurses-dev:${{ matrix.architecture }} \
- libxt-dev:${{ matrix.architecture }} \
- libegl-mesa0:${{ matrix.architecture }} \
- libegl1:${{ matrix.architecture }} \
- libegl1-mesa-dev:${{ matrix.architecture }} \
- libepoxy-dev:${{ matrix.architecture }} \
- libwayland-egl1:${{ matrix.architecture }} \
- libwayland-client0:${{ matrix.architecture }} \
- libwayland-cursor0:${{ matrix.architecture }} \
- locales-all \
- software-properties-common \
- )
- if ${{ contains(matrix.extra, 'asan') }} && ${{ contains(matrix.architecture, 'native') }}; then
- PKGS+=( \
- libepoxy0-dbgsym:${{ matrix.architecture }} \
- libxdamage1-dbgsym:${{ matrix.architecture }} \
- libxcb1-dbgsym:${{ matrix.architecture }} \
- libgtk-3-bin-dbgsym:${{ matrix.architecture }} \
- libgtk-3-0t64-dbgsym:${{ matrix.architecture }} \
- libglib2.0-0t64-dbgsym:${{ matrix.architecture }} \
- libglib2.0-bin-dbgsym:${{ matrix.architecture }} \
- libglib2.0-dev-bin-dbgsym:${{ matrix.architecture }} \
- )
- fi
- if ${{ matrix.features == 'huge' }}; then
- LUA_VER=${{ matrix.lua_ver || '5.4' }}
- PKGS+=( \
- autoconf \
- gdb \
- lcov \
- libcanberra-dev \
- libperl-dev \
- python3-dev \
- liblua${LUA_VER}-dev \
- lua${LUA_VER} \
- ruby-dev \
- tcl-dev \
- cscope \
- libsodium-dev \
- attr \
- libattr1-dev
- )
- fi
- if ${{ contains(matrix.extra, 'proto') }}; then
- PKGS+=( python3-clang )
- fi
- sudo apt-get update && sudo apt-get upgrade -y --allow-downgrades && sudo apt-get install -y --allow-downgrades "${PKGS[@]}"
-
- - name: Install gcc-${{ env.GCC_VER }}
- if: matrix.compiler == 'gcc'
- run: |
- # ubuntu-toolchain-r/test PPA for gcc-13 compiler
- # disabled because the installation failed, causing test failures
- # sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y
- sudo apt-get update -y
- sudo apt-get install -y gcc-${{ env.GCC_VER }}:${{ matrix.architecture }}
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${{ env.GCC_VER }} 100
- sudo update-alternatives --set gcc /usr/bin/gcc-${{ env.GCC_VER }}
-
- - name: Install clang-${{ env.CLANG_VER }}
- if: matrix.compiler == 'clang'
- run: |
- . /etc/lsb-release
- curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/llvm-archive-keyring.gpg > /dev/null
- echo "Types: deb
- URIs: https://apt.llvm.org/${DISTRIB_CODENAME}/
- Suites: llvm-toolchain-${DISTRIB_CODENAME}-${{ env.CLANG_VER }}
- Components: main
- Signed-By: /usr/share/keyrings/llvm-archive-keyring.gpg" | sudo tee /etc/apt/sources.list.d/llvm-toolchain.sources > /dev/null
- sudo apt-get update -y
- sudo apt-get install -y clang-${{ env.CLANG_VER }} llvm-${{ env.CLANG_VER }}
- sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${{ env.CLANG_VER }} 100
- sudo update-alternatives --set clang /usr/bin/clang-${{ env.CLANG_VER }}
- sudo update-alternatives --install /usr/bin/llvm-cov llvm-cov /usr/bin/llvm-cov-${{ env.CLANG_VER }} 100
- sudo update-alternatives --install /usr/bin/asan_symbolize asan_symbolize /usr/bin/asan_symbolize-${{ env.CLANG_VER }} 100
-
- - name: Set up environment
- run: |
- mkdir -p "${LOG_DIR}"
- mkdir -p "${HOME}/bin"
- echo "${HOME}/bin" >> $GITHUB_PATH
- (
- echo "LINUX_VERSION=$(uname -r)"
- echo "NPROC=$(getconf _NPROCESSORS_ONLN)"
- echo "TMPDIR=$(mktemp -d -p /tmp)"
-
- case "${{ matrix.features }}" in
- tiny)
- echo "TEST=testtiny"
- if ${{ contains(matrix.extra, 'nogui') }}; then
- CONFOPT="--disable-gui"
- fi
- ;;
- normal)
- ;;
- huge)
- echo "TEST=scripttests test_libvterm indenttest syntaxtest"
- INTERFACE=${{ matrix.interface || 'yes' }}
- if ${{ matrix.python3 == 'stable-abi' }}; then
- PYTHON3_CONFOPT="--with-python3-stable-abi=3.8"
- fi
- # The ubuntu-24.04 CI runner does not provide a python2 package.
- CONFOPT="--enable-perlinterp=${INTERFACE} --enable-pythoninterp=no --enable-python3interp=${INTERFACE} --enable-rubyinterp=${INTERFACE} --enable-luainterp=${INTERFACE} --enable-tclinterp=${INTERFACE} ${PYTHON3_CONFOPT}"
- ;;
- esac
-
- if ${{ contains(matrix.extra, 'no_x11_wl') }}; then
- CONFOPT="${CONFOPT} --without-x --disable-gui --without-wayland --enable-socketserver"
- fi
- if ${{ matrix.coverage == true }}; then
- CFLAGS="${CFLAGS} --coverage -DUSE_GCOV_FLUSH"
- echo "LDFLAGS=--coverage"
- fi
- if ${{ contains(matrix.extra, 'uchar') }}; then
- CFLAGS="${CFLAGS} -funsigned-char"
- fi
- if ${{ contains(matrix.extra, 'testgui') }}; then
- echo "TEST=-C src testgui"
- fi
- if ${{ contains(matrix.extra, 'unittests') }}; then
- echo "TEST=unittests"
- fi
- if ${{ contains(matrix.extra, 'asan') }}; then
- echo "SANITIZER_CFLAGS=-g -O0 -DABORT_ON_INTERNAL_ERROR -DEXITFREE -fsanitize-recover=all -fsanitize=address -fsanitize=undefined -fno-omit-frame-pointer"
- echo "ASAN_OPTIONS=print_stacktrace=1:log_path=${LOG_DIR}/asan"
- echo "UBSAN_OPTIONS=print_stacktrace=1:log_path=${LOG_DIR}/ubsan"
- echo "LSAN_OPTIONS=suppressions=${GITHUB_WORKSPACE}/src/testdir/lsan-suppress.txt"
- fi
- if ${{ contains(matrix.extra, 'vimtags') }}; then
- echo "TEST=-C runtime/doc vimtags VIMEXE=../../${SRCDIR}/vim"
- fi
- if ${{ contains(matrix.extra, 'proto') }}; then
- echo "TEST=-C src protoclean proto"
- fi
- echo "CFLAGS=${CFLAGS}"
- echo "CONFOPT=${CONFOPT}"
- # Disables GTK attempt to integrate with the accessibility service that does run in CI.
- echo "NO_AT_BRIDGE=1"
- ) >> $GITHUB_ENV
-
- - name: Set up system
- run: |
- if [[ ${CC} = clang ]]; then
- # Use llvm-cov instead of gcov when compiler is clang.
- ln -fs /usr/bin/llvm-cov ${HOME}/bin/gcov
- fi
- sudo sysctl -w net.ipv6.conf.lo.disable_ipv6=0
- sudo usermod -a -G audio "${USER}"
- sudo bash ci/setup-xvfb.sh
-
- - name: Check autoconf
- if: contains(matrix.extra, 'unittests')
- run: |
- make -C src autoconf
-
- - name: Set up shadow dir
- if: matrix.shadow
- run: |
- make -C src shadow
- echo "SRCDIR=${{ matrix.shadow }}" >> $GITHUB_ENV
- echo "SHADOWOPT=-C ${{ matrix.shadow }}" >> $GITHUB_ENV
-
- - name: Configure
- run: |
- ./configure --with-features=${{ matrix.features }} ${CONFOPT} --enable-fail-if-missing
- # Append various warning flags to CFLAGS.
- sed -i -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
- sed -i -f ci/config.mk.${CC}.sed ${SRCDIR}/auto/config.mk
- if [[ ${CC} = clang ]]; then
- # Suppress some warnings produced by clang 12 and later.
- sed -i -f ci/config.mk.clang-12.sed ${SRCDIR}/auto/config.mk
- fi
-
- - name: Build
- if: (!contains(matrix.extra, 'unittests'))
- run: |
- make ${SHADOWOPT} -j${NPROC}
-
- - name: Check version
- if: (!contains(matrix.extra, 'unittests'))
- run: |
- "${SRCDIR}"/vim --version
- "${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
- "${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
- if ${{ matrix.features == 'huge' }}; then
- # Also check that optional and dynamic features are configured and working
- "${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 \
- -c "let g:required=['gettext', 'sodium', 'sound', 'perl', 'python3', 'lua', 'ruby', 'tcl']" \
- -S ci/if_feat_check.vim -c quit
- fi
-
- - name: Test
- timeout-minutes: 45
- run: |
- make ${SHADOWOPT} ${TEST}
-
- # Enable to debug failing tests live and ssh into the CI runners
- # - name: Setup tmate session
- # if: ${{ failure() }}
- # uses: mxschmitt/action-tmate@v3
- # with:
- # limit-access-to-actor: true
-
- - if: ${{ !cancelled() }}
- uses: ./.github/actions/test_artifacts
-
- - name: Vim tags
- if: contains(matrix.extra, 'vimtags')
- run: |
- # This will exit with an error code if the generated vim tags differs from source.
- (
- cd runtime/doc
- git diff --exit-code -- tags
- make html; rm *.html tags.ref;
- test -f errors.log && exit 3;
- true
- )
-
- - name: Generate Proto files
- if: contains(matrix.extra, 'proto')
- run: |
- # This will exit with an error code if the generated proto files differ from source
- (
- git diff --exit-code -- src/proto/
- true
- )
-
- - name: Check Source Code style
- if: contains(matrix.extra, 'codestyle')
- run: |
- make -C src/testdir codestyle
-
- - name: Check preprocessor indent
- if: contains(matrix.extra, 'preproc_indent')
- run: |
- # This will exit with an error code if the files differ from source
- (
- "${SRCDIR}"/vim -u NONE --not-a-term -esNX +"cd runtime/tools" -S preproc_indent.vim
- git diff --exit-code -- src/*.[ch] src/xxd/xxd.c
- true
- )
-
- - name: Check encoding of utf-8 runtime files
- if: contains(matrix.extra, 'encoding')
- run: |
- # This will exit with an error code if utf-8 runtime files are not in utf-8 encoding
- (
- find . -type f -name "*utf-8*.vim" -exec sh -c \
- 'iconv -f utf-8 -t utf-8 "$1" >/dev/null 2>&1 || echo "non utf-8 encoding detected in $1"' \
- find-sh {} \; |grep "non utf-8 encoding" && exit 3
- true
- )
-
- - name: Generate gcov files
- if: matrix.coverage
- run: |
- cd "${SRCDIR}"
- find . -type f -name '*.gcno' -exec gcov -pb {} + || true
-
- - name: Codecov
- timeout-minutes: 20
- if: matrix.coverage
- uses: codecov/codecov-action@v5
- with:
- flags: linux,${{ matrix.features }}-${{ matrix.compiler }}-${{ join(matrix.extra, '-') }}
- token: ${{ secrets.CODECOV_TOKEN }}
-
- - name: ASan logs
- if: contains(matrix.extra, 'asan') && !cancelled()
- run: |
- for f in $(grep -lR '#[[:digit:]]* *0x[[:xdigit:]]*' "${LOG_DIR}"); do
- echo "$f"
- asan_symbolize -l "$f"
- false # in order to fail a job
- done
-
- macos:
- runs-on: ${{ matrix.runner }}
-
- env:
- CC: clang
- TEST: test
- SRCDIR: ./src
- LEAK_CFLAGS: -DEXITFREE
- TERM: xterm
-
- strategy:
- fail-fast: false
- matrix:
- features: [tiny, normal, huge]
- runner: [macos-15-intel, macos-26]
-
- steps:
- - name: Checkout repository from github
- uses: actions/checkout@v6
-
- - name: Install packages
- if: matrix.features == 'huge'
- run: |
- brew install lua libtool
- echo "LUA_PREFIX=$(brew --prefix)" >> $GITHUB_ENV
-
- - name: Set up environment
- run: |
- (
- echo "NPROC=$(getconf _NPROCESSORS_ONLN)"
- case "${{ matrix.features }}" in
- tiny)
- echo "TEST=testtiny"
- echo "CONFOPT=--disable-gui"
- ;;
- normal)
- ;;
- huge)
- echo "CONFOPT=--enable-perlinterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
- ;;
- esac
- ) >> $GITHUB_ENV
-
- - name: Configure
- run: |
- ./configure --with-features=${{ matrix.features }} ${CONFOPT} --enable-fail-if-missing
- # Append various warning flags to CFLAGS.
- # BSD sed needs backup extension specified.
- sed -i.bak -f ci/config.mk.sed ${SRCDIR}/auto/config.mk
- # On macOS, the entity of gcc is clang.
- sed -i.bak -f ci/config.mk.clang.sed ${SRCDIR}/auto/config.mk
- # Suppress some warnings produced by clang 12 and later.
- if clang --version | grep -qs 'Apple clang version \(1[3-9]\|[2-9]\)\.'; then
- sed -i.bak -f ci/config.mk.clang-12.sed ${SRCDIR}/auto/config.mk
- fi
-
- - name: Build
- env:
- LC_ALL: C
- run: |
- make -j${NPROC}
-
- - name: Check version
- run: |
- "${SRCDIR}"/vim --version
- "${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
- "${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
- if ${{ matrix.features == 'huge' }}; then
- # Also check that optional and dynamic features are configured and working
- "${SRCDIR}"/vim -u NONE -i NONE --not-a-term -esNX -V1 \
- -c "let g:required=['sound', 'perl', 'python3', 'lua', 'ruby', 'tcl']" \
- -S ci/if_feat_check.vim -c quit
- fi
-
- - name: Install packages for testing
- run: |
- # Apple diff is broken. Use GNU diff instead. See #14032.
- brew install diffutils
-
- - name: Test
- timeout-minutes: 25
- run: |
- make ${TEST}
-
- - if: ${{ !cancelled() }}
- uses: ./.github/actions/test_artifacts
-
- windows:
- runs-on: windows-2022
-
- env:
- # Interfaces
- # Lua
- LUA_VER: 54
- LUA_VER_DOT: '5.4'
- LUA_RELEASE: 5.4.2
- LUA32_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win32_dllw6_lib.zip
- LUA64_URL: https://downloads.sourceforge.net/luabinaries/lua-%LUA_RELEASE%_Win64_dllw6_lib.zip
- LUA_DIR: D:\Lua
- # do not want \L to end up in pathdef.c and compiler complaining about unknown escape sequences \l
- LUA_DIR_SLASH: D:/Lua
- # Python 2
- PYTHON_VER: 27
- PYTHON_VER_DOT: '2.7'
- PYTHON_DIR: 'C:\Python27'
- # Python 3
- PYTHON3_VER: 313
- PYTHON3_VER_DOT: '3.13'
- # Other dependencies
- # winpty
- WINPTY_URL: https://github.com/rprichard/winpty/releases/download/0.4.3/winpty-0.4.3-msvc2015.zip
- # libsodium
- SODIUM_VER: '1.0.20'
- # SODIUM_MSVC_URL: https://download.libsodium.org/libsodium/releases/libsodium-%SODIUM_VER%-stable-msvc.zip
- SODIUM_MSVC_URL: https://github.com/jedisct1/libsodium/releases/download/%SODIUM_VER%-RELEASE/libsodium-%SODIUM_VER%-msvc.zip
- SODIUM_MSVC_VER: v143
- # SODIUM_MINGW_URL: https://download.libsodium.org/libsodium/releases/libsodium-%SODIUM_VER%-stable-mingw.tar.gz
- SODIUM_MINGW_URL: https://github.com/jedisct1/libsodium/releases/download/%SODIUM_VER%-RELEASE/libsodium-%SODIUM_VER%-mingw.tar.gz
- SODIUM_MINGW_VER: 26
- # Gettext-tools, iconv and libraries
- GETTEXT32_URL: https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-32.zip
- GETTEXT64_URL: https://github.com/mlocati/gettext-iconv-windows/releases/download/v0.21-v1.16/gettext0.21-iconv1.16-shared-64.zip
- # Escape sequences
- COL_RED: "\x1b[31m"
- COL_GREEN: "\x1b[32m"
- COL_YELLOW: "\x1b[33m"
- COL_RESET: "\x1b[m"
-
- strategy:
- fail-fast: false
- matrix:
- include:
- - { features: HUGE, toolchain: msvc, VIMDLL: no, GUI: no, arch: x64, python3: stable }
- - { features: HUGE, toolchain: mingw, VIMDLL: yes, GUI: yes, arch: x86, python3: stable, coverage: yes }
- - { features: HUGE, toolchain: msvc, VIMDLL: no, GUI: yes, arch: x86 }
- - { features: HUGE, toolchain: mingw, VIMDLL: yes, GUI: no, arch: x64, coverage: yes }
- - { features: HUGE, toolchain: msvc, VIMDLL: no, GUI: no, arch: x64, ttytype: conpty }
- - { features: NORMAL, toolchain: msvc, VIMDLL: yes, GUI: no, arch: x86 }
- - { features: NORMAL, toolchain: mingw, VIMDLL: no, GUI: yes, arch: x64 }
- - { features: TINY, toolchain: msvc, VIMDLL: yes, GUI: yes, arch: x64 }
- - { features: TINY, toolchain: mingw, VIMDLL: no, GUI: no, arch: x86 }
-
- steps:
- - name: Initialize
- id: init
- shell: bash
- run: |
- # Show Windows version
- cmd /c ver
-
- if ${{ matrix.arch == 'x64' }}; then
- cygreg=registry
- pyreg=
- echo "VCARCH=amd64" >> $GITHUB_ENV
- echo "WARCH=x64" >> $GITHUB_ENV
- echo "BITS=64" >> $GITHUB_ENV
- echo "MSYSTEM=MINGW64" >> $GITHUB_ENV
- else
- cygreg=registry32
- pyreg=-32
- echo "VCARCH=x86" >> $GITHUB_ENV
- echo "WARCH=ia32" >> $GITHUB_ENV
- echo "BITS=32" >> $GITHUB_ENV
- echo "MSYSTEM=MINGW32" >> $GITHUB_ENV
- fi
-
- echo "VCVARSALL=$(vswhere -products \* -latest -property installationPath)\\VC\\Auxiliary\\Build\\vcvarsall.bat" >> $GITHUB_ENV
- if ${{ matrix.features != 'TINY' }}; then
- if ${{ matrix.arch == 'x86' }}; then
- choco install python2 --no-progress --forcex86
- else
- choco install python2 --no-progress
- fi
- fi
- python3_dir=$(cat "/proc/$cygreg/HKEY_LOCAL_MACHINE/SOFTWARE/Python/PythonCore/${PYTHON3_VER_DOT}$pyreg/InstallPath/@")
- echo "PYTHON3_DIR=$python3_dir" >> $GITHUB_ENV
-
- if ${{ matrix.toolchain == 'msvc' }}; then
- SODIUM_DIR=D:\\libsodium
- echo "SODIUM_LIB=${SODIUM_DIR}\\${{ matrix.arch == 'x64' && 'x64' || 'Win32' }}\\Release\\${SODIUM_MSVC_VER}\\dynamic" >> $GITHUB_ENV
- else
- SODIUM_DIR=D:\\libsodium-win${{ matrix.arch == 'x64' && '64' || '32' }}
- # do not want \L to end up in pathdef.c and compiler complaining about unknown escape sequences \l
- SODIUM_DIR_SLASH=D:/libsodium-win${{ matrix.arch == 'x64' && '64' || '32' }}
- echo "SODIUM_LIB=${SODIUM_DIR}\\bin" >> $GITHUB_ENV
- echo "SODIUM_DIR_SLASH=${SODIUM_DIR_SLASH}" >> $GITHUB_ENV
- fi
- echo "SODIUM_DIR=${SODIUM_DIR}" >> $GITHUB_ENV
- echo "GETTEXT_PATH=D:\gettext${{ matrix.arch == 'x64' && '64' || '32' }}" >> $GITHUB_ENV
-
- - uses: msys2/setup-msys2@v2
- if: matrix.toolchain == 'mingw'
- with:
- update: true
- install: tar
- pacboy: >-
- make:p gcc:p
- msystem: ${{ env.MSYSTEM }}
- release: false
-
- - name: Checkout repository from github
- uses: actions/checkout@v6
-
- - name: Create a list of download URLs
- shell: cmd
- run: |
- type NUL > urls.txt
- echo %LUA_RELEASE%>> urls.txt
- echo %WINPTY_URL%>> urls.txt
- echo %SODIUM_VER%>> urls.txt
- echo %GETTEXT32_URL%>> urls.txt
- echo %GETTEXT64_URL%>> urls.txt
-
- - name: Cache downloaded files
- uses: actions/cache@v5
- with:
- path: downloads
- key: ${{ runner.os }}-${{ matrix.arch }}-${{ hashFiles('urls.txt') }}
-
- - name: Download dependencies
- shell: cmd
- run: |
- path C:\Program Files\7-Zip;%path%
- if not exist downloads mkdir downloads
-
- echo %COL_GREEN%Download Lua%COL_RESET%
- call :downloadfile %LUA${{ env.BITS }}_URL% downloads\lua.zip
- 7z x downloads\lua.zip -o%LUA_DIR% > nul || exit 1
-
- if not "${{ matrix.ttytype }}" == "conpty" (
- echo %COL_GREEN%Download winpty%COL_RESET%
- call :downloadfile %WINPTY_URL% downloads\winpty.zip
- 7z x -y downloads\winpty.zip -oD:\winpty > nul || exit 1
- copy /Y D:\winpty\%WARCH%\bin\winpty.dll src\winpty%BITS%.dll
- copy /Y D:\winpty\%WARCH%\bin\winpty-agent.exe src\
- )
-
- echo %COL_GREEN%Download libsodium%COL_RESET%
- if "${{ matrix.toolchain }}"=="msvc" (
- call :downloadfile %SODIUM_MSVC_URL% downloads\libsodium.zip
- 7z x -y downloads\libsodium.zip -oD:\ > nul || exit 1
- ) else (
- call :downloadfile %SODIUM_MINGW_URL% downloads\libsodium.tar.gz
- 7z x -y downloads\libsodium.tar.gz -so | 7z x -si -ttar -oD:\ > nul || exit 1
- mklink %SODIUM_LIB%\libsodium.dll %SODIUM_LIB%\libsodium-%SODIUM_MINGW_VER%.dll
- )
-
- echo %COL_GREEN%Download Gettext%COL_RESET%
- call :downloadfile %GETTEXT${{ env.BITS }}_URL% downloads\gettext${{ env.BITS }}.zip
- 7z e -y downloads\gettext${{ env.BITS }}.zip -oD:\gettext${{ env.BITS }} > nul || exit 1
- copy /y D:\gettext${{ env.BITS }}\libintl-8.dll src\ || exit 1
- copy /y D:\gettext${{ env.BITS }}\libiconv-2.dll src\ || exit 1
-
- goto :eof
-
- :downloadfile
- :: call :downloadfile <URL> <localfile>
- if not exist %2 (
- curl -f -L %1 -o %2
- )
- if ERRORLEVEL 1 (
- rem Retry once.
- curl -f -L %1 -o %2 || exit 1
- )
- goto :eof
-
- - name: Build (MSVC)
- if: matrix.toolchain == 'msvc'
- shell: cmd
- run: |
- call "%VCVARSALL%" %VCARCH%
- cd src
- if "${{ matrix.VIMDLL }}"=="yes" (
- set GUI=yes
- ) else (
- set GUI=${{ matrix.GUI }}
- )
- if "${{ matrix.python3 }}"=="stable" (
- set PYTHON3_STABLE=yes
- ) else (
- set PYTHON3_STABLE=no
- )
- if "${{ matrix.features }}"=="HUGE" (
- nmake -nologo -f Make_mvc.mak ^
- FEATURES=${{ matrix.features }} ^
- GUI=%GUI% IME=yes ICONV=yes VIMDLL=${{ matrix.VIMDLL }} ^
- DYNAMIC_LUA=yes LUA=%LUA_DIR% ^
- DYNAMIC_PYTHON=yes PYTHON=%PYTHON_DIR% ^
- DYNAMIC_PYTHON3=yes PYTHON3=%PYTHON3_DIR% ^
- DYNAMIC_PYTHON3_STABLE_ABI=%PYTHON3_STABLE% ^
- DYNAMIC_SODIUM=yes SODIUM=%SODIUM_DIR% ^
- CI_FLAGS=/we4267
- ) else (
- nmake -nologo -f Make_mvc.mak ^
- FEATURES=${{ matrix.features }} ^
- GUI=%GUI% IME=yes ICONV=yes VIMDLL=${{ matrix.VIMDLL }} ^
- CI_FLAGS=/we4267
- )
-
- - name: Build (MinGW)
- if: matrix.toolchain == 'mingw'
- shell: msys2 {0}
- run: |
- cd src
- if [ "${{ matrix.VIMDLL }}" = "yes" ]; then
- GUI=yes
- else
- GUI=${{ matrix.GUI }}
- fi
- if [ "${{ matrix.python3 }}" = "stable" ]; then
- PYTHON3_STABLE=yes
- else
- PYTHON3_STABLE=no
- fi
- if [ "${{ matrix.features }}" = "HUGE" ]; then
- mingw32-make -f Make_ming.mak -j2 \
- FEATURES=${{ matrix.features }} \
- GUI=$GUI IME=yes ICONV=yes VIMDLL=${{ matrix.VIMDLL }} \
- DYNAMIC_LUA=yes LUA=${LUA_DIR_SLASH} \
- DYNAMIC_PYTHON=yes PYTHON=${PYTHON_DIR} \
- DYNAMIC_PYTHON3=yes PYTHON3=${PYTHON3_DIR} \
- DYNAMIC_PYTHON3_STABLE_ABI=${PYTHON3_STABLE} \
- DYNAMIC_SODIUM=yes SODIUM=${SODIUM_DIR_SLASH} \
- STATIC_STDCPLUS=yes COVERAGE=${{ matrix.coverage }}
- else
- mingw32-make -f Make_ming.mak -j2 \
- FEATURES=${{ matrix.features }} \
- GUI=$GUI IME=yes ICONV=yes VIMDLL=${{ matrix.VIMDLL }} \
- STATIC_STDCPLUS=yes
- fi
-
- - name: Check version
- shell: cmd
- run: |
- PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PYTHON3_DIR%;%PATH%
- if "${{ matrix.GUI }}"=="yes" (
- start /wait src\gvim -u NONE -i NONE -c "redir > version.txt | ver | q" || exit 1
- type version.txt
- echo.
- start /wait src\gvim -u NONE -i NONE -c "redir! > version.txt | so ci\if_ver-1.vim | q"
- start /wait src\gvim -u NONE -i NONE -c "redir >> version.txt | so ci\if_ver-2.vim | q"
- type version.txt
- del version.txt
- ) else (
- src\vim --version || exit 1
- src\vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-1.vim -c quit
- src\vim -u NONE -i NONE --not-a-term -esNX -V1 -S ci/if_ver-2.vim -c quit
- if "${{ matrix.features }}"=="HUGE" (
- src\vim -u NONE -i NONE --not-a-term -esNX -V1 ^
- -c "let g:required=['gettext', 'sodium', 'sound', 'python3', 'lua']" ^
- -S ci/if_feat_check.vim -c quit
- )
- )
-
- #- name: Prepare Artifact
- # shell: cmd
- # run: |
- # mkdir artifacts
- # copy src\*vim.exe artifacts
- # copy src\vim*.dll artifacts
- #
- #- name: Upload Artifact
- # uses: actions/upload-artifact@v7
- # with:
- # name: vim${{ matrix.bits }}-${{ matrix.toolchain }}
- # path: ./artifacts
-
- # disabled because of https://github.com/tunisiano187/Chocolatey-packages/issues/3916
- #- name: Install packages for testing
- # shell: bash
- # run: |
- # if ${{ matrix.features != 'TINY' }}; then
- # if ${{ matrix.arch == 'x64' }}; then
- # choco install netbeans --no-progress
- # else
- # exit 0
- # fi
- # fi
-
- - name: Test and show the result of testing gVim
- if: matrix.GUI == 'yes' || matrix.VIMDLL == 'yes'
- shell: cmd
- timeout-minutes: 15
- run: |
- PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PYTHON3_DIR%;%PATH%;%SODIUM_LIB%
- call "%VCVARSALL%" %VCARCH%
-
- echo %COL_GREEN%Test gVim:%COL_RESET%
- cd src\testdir
- if "${{ matrix.GUI }}"=="yes" (
- nmake -nologo -f Make_mvc.mak VIMPROG=..\gvim || exit 1
- ) else (
- @rem Run only tiny tests.
- nmake -nologo -f Make_mvc.mak tiny VIMPROG=..\gvim || exit 1
- )
-
- - name: Test and show the result of testing Vim
- if: matrix.GUI == 'no' || matrix.VIMDLL == 'yes'
- shell: cmd
- timeout-minutes: 15
- run: |
- PATH %LUA_DIR%;C:\msys64\%MSYSTEM%\bin;%PYTHON3_DIR%;%PATH%;%SODIUM_LIB%
- call "%VCVARSALL%" %VCARCH%
-
- echo %COL_GREEN%Test Vim:%COL_RESET%
- cd src\testdir
- nmake -nologo -f Make_mvc.mak clean
- if "${{ matrix.GUI }}"=="no" (
- nmake -nologo -f Make_mvc.mak VIMPROG=..\vim || exit 1
- ) else (
- @rem Run only tiny tests.
- nmake -nologo -f Make_mvc.mak tiny VIMPROG=..\vim || exit 1
- )
-
- - if: ${{ !cancelled() }}
- uses: ./.github/actions/test_artifacts
-
- - name: Generate gcov files
- if: matrix.coverage
- shell: msys2 {0}
- run: |
- cd src
- find . -type f -name '*.gcno' -exec gcov -pb {} + || true
-
- - name: Codecov
- timeout-minutes: 20
- if: matrix.coverage
- uses: codecov/codecov-action@v5
- with:
- directory: src
- flags: windows,${{ matrix.toolchain }}-${{ matrix.arch }}-${{ matrix.features }}
- token: ${{ secrets.CODECOV_TOKEN }}
diff --git a/uvim/.github/workflows/codeql-analysis.yml b/uvim/.github/workflows/codeql-analysis.yml
deleted file mode 100644
index 3364adf340..0000000000
--- a/uvim/.github/workflows/codeql-analysis.yml
+++ /dev/null
@@ -1,76 +0,0 @@
-# For most projects, this workflow file will not need changing; you simply need
-# to commit it to your repository.
-#
-# You may wish to alter this file to override the set of languages analyzed,
-# or to provide custom queries or build logic.
-name: "CodeQL"
-
-on:
- push:
- branches: [master]
- pull_request:
- # The branches below must be a subset of the branches above
- branches: [master]
- schedule:
- - cron: '0 18 * * 1'
-
-# Cancels all previous workflow runs for pull requests that have not completed.
-concurrency:
- # The concurrency group contains the workflow name and the branch name for
- # pull requests or the commit hash for any other events.
- group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
- cancel-in-progress: true
-
-permissions:
- contents: read # to fetch code (actions/checkout)
-
-jobs:
- analyze:
- permissions:
- contents: read # to fetch code (actions/checkout)
- security-events: write # (github/codeql-action/autobuild)
-
- name: Analyze
- runs-on: ubuntu-latest
-
- strategy:
- fail-fast: false
- matrix:
- # Override automatic language detection by changing the below list
- # Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
- language: ['cpp', 'python']
- # Learn more...
- # https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
-
- steps:
- - name: Checkout repository from github
- uses: actions/checkout@v6
-
- # Initializes the CodeQL tools for scanning.
- - name: Initialize CodeQL
- uses: github/codeql-action/init@v4
- with:
- languages: ${{ matrix.language }}
- # If you wish to specify custom queries, you can do so here or in a config file.
- # By default, queries listed here will override any specified in a config file.
- # Prefix the list here with "+" to use these queries and those in the config file.
- # queries: ./path/to/local/query, your-org/your-repo/queries@main
-
- # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
- # If this step fails, then you should remove it and run the build manually (see below)
- - name: Autobuild
- uses: github/codeql-action/autobuild@v4
-
- # â„šī¸ Command-line programs to run using the OS shell.
- # 📚 https://git.io/JvXDl
-
- # âœī¸ If the Autobuild fails above, remove it and uncomment the following three lines
- # and modify them (or add more) to build your code if your project
- # uses a compiled language
-
- #- run: |
- # make bootstrap
- # make release
-
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v4
diff --git a/uvim/.github/workflows/coverity.yml b/uvim/.github/workflows/coverity.yml
deleted file mode 100644
index 04859a9758..0000000000
--- a/uvim/.github/workflows/coverity.yml
+++ /dev/null
@@ -1,85 +0,0 @@
-name: Coverity
-on:
- schedule:
- - cron: '42 0 * * *' # Run once per day, to avoid Coverity's submission limits
- workflow_dispatch:
-
-permissions:
- contents: read # to fetch code (actions/checkout)
-
-jobs:
- scan:
- runs-on: ubuntu-24.04
-
- env:
- CC: gcc
- DEBIAN_FRONTEND: noninteractive
- TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }}
-
- steps:
- - name: Checkout repository from github
- if: env.TOKEN
- uses: actions/checkout@v6
-
- - name: Download Coverity
- if: env.TOKEN
- run: |
- wget -q https://scan.coverity.com/download/cxx/linux64 --post-data "token=$TOKEN&project=vim" -O coverity_tool.tgz
- mkdir cov-scan
- tar ax -f coverity_tool.tgz --strip-components=1 -C cov-scan
-
- - name: Install packages
- if: env.TOKEN
- run: |
- sudo apt-get update && sudo apt-get install -y \
- autoconf \
- gettext \
- libcanberra-dev \
- libperl-dev \
- python3-dev \
- liblua5.4-dev \
- lua5.4 \
- ruby-dev \
- tcl-dev \
- libgtk2.0-dev \
- desktop-file-utils \
- libtool-bin \
- libsodium-dev
-
- - name: Set up environment
- if: env.TOKEN
- run: |
- echo "$(pwd)/cov-scan/bin" >> $GITHUB_PATH
- (
- echo "NPROC=$(getconf _NPROCESSORS_ONLN)"
- echo "CONFOPT=--enable-perlinterp --enable-python3interp --enable-rubyinterp --enable-luainterp --enable-tclinterp"
- ) >> $GITHUB_ENV
-
- - name: Configure
- if: env.TOKEN
- run: |
- ./configure --with-features=huge ${CONFOPT} --enable-fail-if-missing
- # Append various warning flags to CFLAGS.
- sed -i -f ci/config.mk.sed src/auto/config.mk
- sed -i -f ci/config.mk.${CC}.sed src/auto/config.mk
- # -O2 gives false warning and turns it into an error:
- # warning: function may return address of local variable [-Wreturn-local-addr]
- sed -i 's/-O2 \?//' src/auto/config.mk
-
- - name: Build/scan vim
- if: env.TOKEN
- run: |
- cov-build --dir cov-int make -j${NPROC}
-
- - name: Submit results
- if: env.TOKEN
- run: |
- tar zcf cov-scan.tgz cov-int
- curl --form token=$TOKEN \
- --form email=$EMAIL \
- --form file=@cov-scan.tgz \
- --form version="$(git rev-parse HEAD)" \
- --form description="Automatic GHA scan" \
- 'https://scan.coverity.com/builds?project=vim'
- env:
- EMAIL: ${{ secrets.COVERITY_SCAN_EMAIL }}
diff --git a/uvim/.github/workflows/label.yml b/uvim/.github/workflows/label.yml
deleted file mode 100644
index e413603bd4..0000000000
--- a/uvim/.github/workflows/label.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-# This workflow will triage pull requests and apply a label based on the
-# paths that are modified in the pull request.
-#
-# To use this workflow, you will need to set up a .github/labeler.yml
-# file with configuration. For more information, see:
-# https://github.com/actions/labeler
-
-name: Labeler
-on: [pull_request_target]
-
-jobs:
- label:
-
- runs-on: ubuntu-latest
- permissions:
- contents: read
- pull-requests: write
-
- steps:
- - uses: actions/labeler@v6
- with:
- repo-token: "${{ secrets.GITHUB_TOKEN }}"
diff --git a/uvim/.github/workflows/link-check.yml b/uvim/.github/workflows/link-check.yml
deleted file mode 100644
index 4eac572158..0000000000
--- a/uvim/.github/workflows/link-check.yml
+++ /dev/null
@@ -1,15 +0,0 @@
-# .github/workflows/link-check.yml
-name: Check Links
-on:
- workflow_dispatch:
- schedule:
- - cron: '0 3 * * 0' # Every Sunday at 03:00 UTC
-jobs:
- lychee:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v6
- - name: Run Lychee
- uses: lycheeverse/lychee-action@v2
- with:
- args: --verbose --config ci/lychee.toml .