diff options
author | dundargoc <33953936+dundargoc@users.noreply.github.com> | 2023-02-12 13:09:46 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-12 13:09:46 +0100 |
commit | c099836168fd669372895bb9bfa16522b5972134 (patch) | |
tree | 7eed1ce6b48c1edffa1e65a746e6b871bd8c9ae9 | |
parent | e81b4274fc18de4be753c07db642111129ff84ee (diff) | |
download | rneovim-c099836168fd669372895bb9bfa16522b5972134.tar.gz rneovim-c099836168fd669372895bb9bfa16522b5972134.tar.bz2 rneovim-c099836168fd669372895bb9bfa16522b5972134.zip |
ci: convert environment variables to matrix variables (#22224)
Having as few indirections as possible makes it easier to understand the
code.
-rw-r--r-- | .github/workflows/ci.yml | 66 | ||||
-rwxr-xr-x | .github/workflows/env.sh | 20 |
2 files changed, 30 insertions, 56 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3135bba571..b80220b2c0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -65,8 +65,8 @@ jobs: - name: Build third-party deps run: | - cmake -S cmake.deps -B "${DEPS_BUILD_DIR}" -G Ninja ${DEPS_CMAKE_FLAGS} - cmake --build "${DEPS_BUILD_DIR}" + cmake -S cmake.deps -B $DEPS_BUILD_DIR -G Ninja + cmake --build $DEPS_BUILD_DIR - if: "!cancelled()" name: Determine if run should be aborted @@ -106,8 +106,7 @@ jobs: - if: success() || failure() && steps.abort_job.outputs.status == 'success' name: check uncrustify - run: | - git diff --color --exit-code + run: git diff --color --exit-code lintc: # This job tests two things: it lints the code but also builds neovim using @@ -145,14 +144,18 @@ jobs: # lua-luv-dev # Remove comments from packages once we start using these external - # dependencies. See env.sh for more context. + # dependencies. - uses: ./.github/actions/cache - name: Build third-party deps run: | - cmake -S cmake.deps -B "${DEPS_BUILD_DIR}" -G Ninja ${DEPS_CMAKE_FLAGS} - cmake --build "${DEPS_BUILD_DIR}" + # Ideally all dependencies should external for this job, but some + # dependencies don't have the required version available. We use the + # bundled versions for these with the hopes of being able to remove them + # later on. + cmake -S cmake.deps -B $DEPS_BUILD_DIR -G Ninja -D USE_BUNDLED=OFF -D USE_BUNDLED_LUV=ON -D USE_BUNDLED_LIBVTERM=ON + cmake --build $DEPS_BUILD_DIR - name: Build run: | @@ -180,18 +183,16 @@ jobs: - flavor: asan cc: clang runner: ubuntu-22.04 - os: linux + sanitizer_flags: -D CLANG_ASAN_UBSAN=ON - flavor: tsan cc: clang runner: ubuntu-22.04 - os: linux + sanitizer_flags: -D CLANG_TSAN=ON - flavor: uchar cc: gcc runner: ubuntu-22.04 - os: linux - cc: clang runner: macos-12 - os: osx # functionaltest-lua is our dumping ground for non-mainline configurations. # 1. Check that the tests pass with PUC Lua instead of LuaJIT. @@ -199,12 +200,11 @@ jobs: - flavor: functionaltest-lua cc: gcc runner: ubuntu-22.04 - os: linux + deps_flags: -D USE_BUNDLED_LUAJIT=OFF -D USE_BUNDLED_LUA=ON runs-on: ${{ matrix.runner }} timeout-minutes: 45 env: CC: ${{ matrix.cc }} - CI_OS_NAME: ${{ matrix.os }} steps: - uses: actions/checkout@v3 @@ -214,14 +214,14 @@ jobs: ulimit -c unlimited - name: Create log dir - run: mkdir -p "${LOG_DIR}" + run: mkdir -p "$LOG_DIR" - name: Install apt packages - if: matrix.os == 'linux' + if: runner.os == 'Linux' run: ./.github/scripts/install_deps_ubuntu.sh - name: Install brew packages - if: matrix.os == 'osx' + if: runner.os == 'macOS' run: | brew update --quiet brew install automake cpanminus ninja @@ -239,7 +239,7 @@ jobs: npm install -g neovim npm link neovim - if [[ $CI_OS_NAME != osx ]]; then + if [[ $RUNNER_OS != macOS ]]; then sudo cpanm -n Neovim::Ext || cat "$HOME/.cpanm/build.log" perl -W -e 'use Neovim::Ext; print $Neovim::Ext::VERSION' fi @@ -248,18 +248,12 @@ jobs: - name: Build third-party deps run: | - if test "${FUNCTIONALTEST}" = "functionaltest-lua" ; then - DEPS_CMAKE_FLAGS="${DEPS_CMAKE_FLAGS} -D USE_BUNDLED_LUA=ON" - fi - cmake -S cmake.deps -B "${DEPS_BUILD_DIR}" -G Ninja ${DEPS_CMAKE_FLAGS} - cmake --build "${DEPS_BUILD_DIR}" + cmake -S cmake.deps -B $DEPS_BUILD_DIR -G Ninja ${{ matrix.deps_flags }} + cmake --build $DEPS_BUILD_DIR - name: Build run: | - if test -n "${CLANG_SANITIZER}" ; then - CMAKE_FLAGS="${CMAKE_FLAGS} -D CLANG_${CLANG_SANITIZER}=ON" - fi - cmake -B build -G Ninja ${CMAKE_FLAGS} + cmake -B build -G Ninja $CMAKE_FLAGS ${{ matrix.sanitizer_flags }} cmake --build build - if: "!cancelled()" @@ -293,8 +287,8 @@ jobs: - if: success() || failure() && steps.abort_job.outputs.status == 'success' name: Installtests run: | - "${INSTALL_PREFIX}/bin/nvim" --version - if ! "${INSTALL_PREFIX}/bin/nvim" -u NONE -e -c ':help' -c ':qall'; then + "$INSTALL_PREFIX/bin/nvim" --version + if ! "$INSTALL_PREFIX/bin/nvim" -u NONE -e -c ':help' -c ':qall'; then echo "Running ':help' in the installed nvim failed." echo "Maybe the helptags have not been generated properly." echo 'Failed running :help' @@ -320,7 +314,7 @@ jobs: # Check that generated syntax file has function names, #5060. genvimsynf=syntax/vim/generated.vim gpat='syn keyword vimFuncName .*eval' - if ! grep -q "$gpat" "${INSTALL_PREFIX}/share/nvim/runtime/$genvimsynf"; then + if ! grep -q "$gpat" "$INSTALL_PREFIX/share/nvim/runtime/$genvimsynf"; then echo "It appears that $genvimsynf does not contain $gpat." exit 1 fi @@ -332,21 +326,22 @@ jobs: - if: success() || failure() && steps.abort_job.outputs.status == 'success' name: Show core dumps run: | - app="${1:-${BUILD_DIR}/bin/nvim}" - if test "${CI_OS_NAME}" = osx; then + # TODO(dundargoc): app should be luajit for unittests + app="build/bin/nvim" + if test "$RUNNER_OS" = macOS; then cores="$(find /cores/ -type f -print)" else cores="$(find ./ -type f \( -name 'core.*' -o -name core -o -name nvim.core \) -print)" fi - if test -z "${cores}"; then + if test -z "$cores"; then exit 0 fi for core in $cores; do - if test "${CI_OS_NAME}" = osx; then - lldb -Q -o "bt all" -f "${app}" -c "${core}" + if test "$RUNNER_OS" = macOS; then + lldb -Q -o "bt all" -f "$app" -c "$core" else - gdb -n -batch -ex 'thread apply all bt full' "${app}" -c "${core}" + gdb -n -batch -ex 'thread apply all bt full' "$app" -c "$core" fi done echo 'Core dumps found' @@ -357,7 +352,6 @@ jobs: runs-on: ubuntu-22.04 timeout-minutes: 15 env: - CI_OS_NAME: linux CMAKE_URL: 'https://cmake.org/files/v3.10/cmake-3.10.0-Linux-x86_64.sh' CMAKE_VERSION: '3.10.0' steps: diff --git a/.github/workflows/env.sh b/.github/workflows/env.sh index 4a22c796b4..a93e9bdd97 100755 --- a/.github/workflows/env.sh +++ b/.github/workflows/env.sh @@ -12,41 +12,24 @@ NVIM_LOG_FILE=$BUILD_DIR/.nvimlog VALGRIND_LOG=$LOG_DIR/valgrind-%p.log CACHE_DIR=$GITHUB_WORKSPACE/.cache CACHE_UNCRUSTIFY=$CACHE_DIR/uncrustify -DEPS_CMAKE_FLAGS= -FUNCTIONALTEST=functionaltest CMAKE_FLAGS="-D CI_BUILD=ON -D CMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX -D MIN_LOG_LEVEL=3" -CLANG_SANITIZER= ASAN_OPTIONS= UBSAN_OPTIONS= TSAN_OPTIONS= case "$FLAVOR" in asan) - CLANG_SANITIZER=ASAN_UBSAN ASAN_OPTIONS="detect_leaks=1:check_initialization_order=1:handle_abort=1:handle_sigill=1:log_path=$LOG_DIR/asan:intercept_tls_get_addr=0" UBSAN_OPTIONS="print_stacktrace=1 log_path=$LOG_DIR/ubsan" ;; tsan) TSAN_OPTIONS=log_path=$LOG_DIR/tsan - CLANG_SANITIZER=TSAN ;; uchar) CMAKE_FLAGS+=" -D UNSIGNED_CHAR=ON" ;; - lintc) - # Re-enable once system deps are available - # CMAKE_FLAGS+=" -D LIBLUV_LIBRARY:FILEPATH=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/lua/5.1/luv.so -D LIBLUV_INCLUDE_DIR:PATH=/usr/include/lua5.1" - - # Ideally all dependencies should external for this job, but some - # dependencies don't have the required version available. We use the - # bundled versions for these with the hopes of being able to remove them - # later on. - DEPS_CMAKE_FLAGS+=" -D USE_BUNDLED=OFF -D USE_BUNDLED_LUV=ON -D USE_BUNDLED_LIBVTERM=ON" - ;; functionaltest-lua) CMAKE_FLAGS+=" -D PREFER_LUA=ON" - FUNCTIONALTEST=functionaltest-lua - DEPS_CMAKE_FLAGS+=" -D USE_BUNDLED_LUAJIT=OFF" ;; *) ;; @@ -57,15 +40,12 @@ CMAKE_FLAGS=$CMAKE_FLAGS BUILD_DIR=$BUILD_DIR BIN_DIR=$BIN_DIR DEPS_BUILD_DIR=$DEPS_BUILD_DIR -DEPS_CMAKE_FLAGS=$DEPS_CMAKE_FLAGS -FUNCTIONALTEST=$FUNCTIONALTEST INSTALL_PREFIX=$INSTALL_PREFIX LOG_DIR=$LOG_DIR NVIM_LOG_FILE=$NVIM_LOG_FILE VALGRIND_LOG=$VALGRIND_LOG CACHE_DIR=$CACHE_DIR CACHE_UNCRUSTIFY=$CACHE_UNCRUSTIFY -CLANG_SANITIZER=$CLANG_SANITIZER ASAN_OPTIONS=$ASAN_OPTIONS UBSAN_OPTIONS=$UBSAN_OPTIONS TSAN_OPTIONS=$TSAN_OPTIONS |