aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordundargoc <33953936+dundargoc@users.noreply.github.com>2023-02-07 14:43:45 +0100
committerGitHub <noreply@github.com>2023-02-07 14:43:45 +0100
commitc1d76363ac72a7a17b657eaa99df4533d169a40b (patch)
tree305ce7951d68c8a8d30c42dd0b2fc440b68860ca
parent8fbe75b3dda7ab3b9e6df0d5406539bde4c80887 (diff)
downloadrneovim-c1d76363ac72a7a17b657eaa99df4533d169a40b.tar.gz
rneovim-c1d76363ac72a7a17b657eaa99df4533d169a40b.tar.bz2
rneovim-c1d76363ac72a7a17b657eaa99df4533d169a40b.zip
ci: simplify how environment variables are used (#22067)
Having a clear separation between when we manipulate variables and when we export them to GITHUB_ENV makes it less error-prone.
-rw-r--r--.github/workflows/ci.yml10
-rwxr-xr-x.github/workflows/env.sh78
-rwxr-xr-xci/before_cache.sh5
-rwxr-xr-xci/before_script.sh2
-rwxr-xr-xci/install.sh2
-rwxr-xr-xci/run_tests.sh2
-rwxr-xr-xsrc/nvim/CMakeLists.txt9
7 files changed, 58 insertions, 50 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 83ee4f0358..aa2708332c 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -11,12 +11,12 @@ on:
paths-ignore:
- 'contrib/**'
-# Cancel any in-progress CI runs for a PR if it is updated
concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
cancel-in-progress: true
env:
+ CI_BUILD_DIR: ${{ github.workspace }}
UNCRUSTIFY_VERSION: uncrustify-0.75.0
# TEST_FILE: test/functional/core/startup_spec.lua
# TEST_FILTER: foo
@@ -59,9 +59,9 @@ jobs:
run: |
source_dir=uncrustify
build_dir=uncrustify/build
- cmake -S $source_dir -B $build_dir -G Ninja -DCMAKE_BUILD_TYPE=Release
+ cmake -S $source_dir -B $build_dir -G Ninja -D CMAKE_BUILD_TYPE=Release
cmake --build $build_dir
- mkdir -p $HOME/.cache
+ mkdir -p $CACHE_DIR
cp $build_dir/uncrustify ${{ env.CACHE_UNCRUSTIFY }}
- uses: ./.github/actions/cache
@@ -302,12 +302,12 @@ jobs:
- name: Build deps
run: |
- cmake -S cmake.deps -B $env:DEPS_BUILD_DIR -G Ninja -DCMAKE_BUILD_TYPE='RelWithDebInfo'
+ cmake -S cmake.deps -B $env:DEPS_BUILD_DIR -G Ninja -D CMAKE_BUILD_TYPE='RelWithDebInfo'
cmake --build $env:DEPS_BUILD_DIR
- name: Build nvim
run: |
- cmake -B build -G Ninja -DCMAKE_BUILD_TYPE='RelWithDebInfo' -DDEPS_PREFIX="$env:DEPS_PREFIX" -DCI_BUILD=ON
+ cmake -B build -G Ninja -D CMAKE_BUILD_TYPE='RelWithDebInfo' -D DEPS_PREFIX="$env:DEPS_PREFIX" -D CI_BUILD=ON
cmake --build build
- name: Install test deps
diff --git a/.github/workflows/env.sh b/.github/workflows/env.sh
index 42a355da44..24d85fc23c 100755
--- a/.github/workflows/env.sh
+++ b/.github/workflows/env.sh
@@ -3,67 +3,77 @@ set -e -u
FLAVOR=${1:-}
-cat <<EOF >> "$GITHUB_PATH"
-$HOME/.local/bin
-EOF
-
-cat <<EOF >> "$GITHUB_ENV"
-CI_BUILD_DIR=$GITHUB_WORKSPACE
-BUILD_DIR=$GITHUB_WORKSPACE/build
+BUILD_DIR=$CI_BUILD_DIR/build
+BIN_DIR=$HOME/.local/bin
DEPS_BUILD_DIR=$HOME/nvim-deps
INSTALL_PREFIX=$HOME/nvim-install
-LOG_DIR=$GITHUB_WORKSPACE/build/log
-NVIM_LOG_FILE=$GITHUB_WORKSPACE/build/.nvimlog
-VALGRIND_LOG=$GITHUB_WORKSPACE/build/log/valgrind-%p.log
-CACHE_NVIM_DEPS_DIR=$HOME/.cache/nvim-deps
-CACHE_MARKER=$HOME/.cache/nvim-deps/.ci_cache_marker
-CACHE_UNCRUSTIFY=$HOME/.cache/uncrustify
-EOF
-
+LOG_DIR=$BUILD_DIR/log
+NVIM_LOG_FILE=$BUILD_DIR/.nvimlog
+VALGRIND_LOG=$LOG_DIR/valgrind-%p.log
+CACHE_DIR=$HOME/.cache
+CACHE_NVIM_DEPS_DIR=$CACHE_DIR/nvim-deps
+CACHE_MARKER=$CACHE_NVIM_DEPS_DIR/.ci_cache_marker
+CACHE_UNCRUSTIFY=$CACHE_DIR/uncrustify
DEPS_CMAKE_FLAGS=
FUNCTIONALTEST=functionaltest
-BUILD_FLAGS="CMAKE_FLAGS=-DCI_BUILD=ON -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX:PATH=$HOME/nvim-install -DBUSTED_OUTPUT_TYPE=nvim -DDEPS_PREFIX=$HOME/nvim-deps/usr -DMIN_LOG_LEVEL=3"
+CMAKE_FLAGS="-D CI_BUILD=ON -D CMAKE_BUILD_TYPE=Debug -D CMAKE_INSTALL_PREFIX:PATH=$INSTALL_PREFIX -D BUSTED_OUTPUT_TYPE=nvim -D DEPS_PREFIX=$DEPS_BUILD_DIR/usr -D MIN_LOG_LEVEL=3"
+CLANG_SANITIZER=
+ASAN_OPTIONS=
+UBSAN_OPTIONS=
+TSAN_OPTIONS=
case "$FLAVOR" in
asan)
- cat <<EOF >> "$GITHUB_ENV"
-CLANG_SANITIZER=ASAN_UBSAN
-ASAN_OPTIONS=detect_leaks=1:check_initialization_order=1:log_path=$GITHUB_WORKSPACE/build/log/asan:intercept_tls_get_addr=0
-UBSAN_OPTIONS=print_stacktrace=1 log_path=$GITHUB_WORKSPACE/build/log/ubsan
-EOF
+ CLANG_SANITIZER=ASAN_UBSAN
+ ASAN_OPTIONS="detect_leaks=1:check_initialization_order=1:log_path=$LOG_DIR/asan:intercept_tls_get_addr=0"
+ UBSAN_OPTIONS="print_stacktrace=1 log_path=$LOG_DIR/ubsan"
;;
tsan)
- cat <<EOF >> "$GITHUB_ENV"
-TSAN_OPTIONS=log_path=$GITHUB_WORKSPACE/build/log/tsan
-CLANG_SANITIZER=TSAN
-EOF
+ TSAN_OPTIONS=log_path=$LOG_DIR/tsan
+ CLANG_SANITIZER=TSAN
;;
uchar)
- cat <<EOF >> "$GITHUB_ENV"
-BUILD_UCHAR=1
-EOF
+ CMAKE_FLAGS+=" -D UNSIGNED_CHAR=ON"
;;
lintc)
-# Re-enable once system deps are available
-# BUILD_FLAGS="$BUILD_FLAGS -DLIBLUV_LIBRARY:FILEPATH=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)/lua/5.1/luv.so -DLIBLUV_INCLUDE_DIR:PATH=/usr/include/lua5.1"
+ # 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="$DEPS_CMAKE_FLAGS -DUSE_BUNDLED=OFF -DUSE_BUNDLED_LUV=ON -DUSE_BUNDLED_LIBVTERM=ON"
+ DEPS_CMAKE_FLAGS+=" -D USE_BUNDLED=OFF -D USE_BUNDLED_LUV=ON -D USE_BUNDLED_LIBVTERM=ON"
;;
functionaltest-lua)
- BUILD_FLAGS="$BUILD_FLAGS -DPREFER_LUA=ON"
+ CMAKE_FLAGS+=" -D PREFER_LUA=ON"
FUNCTIONALTEST=functionaltest-lua
- DEPS_CMAKE_FLAGS="$DEPS_CMAKE_FLAGS -DUSE_BUNDLED_LUAJIT=OFF"
+ DEPS_CMAKE_FLAGS+=" -D USE_BUNDLED_LUAJIT=OFF"
;;
*)
;;
esac
cat <<EOF >> "$GITHUB_ENV"
-$BUILD_FLAGS
+CMAKE_FLAGS=$CMAKE_FLAGS
+BUILD_DIR=$BUILD_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=$HOME/.cache
+CACHE_NVIM_DEPS_DIR=$CACHE_NVIM_DEPS_DIR
+CACHE_MARKER=$CACHE_MARKER
+CACHE_UNCRUSTIFY=$CACHE_UNCRUSTIFY
+CLANG_SANITIZER=$CLANG_SANITIZER
+ASAN_OPTIONS=$ASAN_OPTIONS
+UBSAN_OPTIONS=$UBSAN_OPTIONS
+TSAN_OPTIONS=$TSAN_OPTIONS
+EOF
+
+cat <<EOF >> "$GITHUB_PATH"
+$BIN_DIR
EOF
diff --git a/ci/before_cache.sh b/ci/before_cache.sh
index d7405bab19..7bf66221ae 100755
--- a/ci/before_cache.sh
+++ b/ci/before_cache.sh
@@ -7,10 +7,7 @@ CI_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source-path=SCRIPTDIR
source "${CI_DIR}/common/suite.sh"
-mkdir -p "${HOME}/.cache"
-
-echo "before_cache.sh: cache size"
-du -chd 1 "${HOME}/.cache" | sort -rh | head -20
+mkdir -p "$CACHE_DIR"
# Update the third-party dependency cache only if the build was successful.
if ended_successfully && [ -d "${DEPS_BUILD_DIR}" ]; then
diff --git a/ci/before_script.sh b/ci/before_script.sh
index 4a95e5a60f..3e8adcfb15 100755
--- a/ci/before_script.sh
+++ b/ci/before_script.sh
@@ -10,7 +10,7 @@ if [[ -n "${GCOV}" ]] && [[ ! $(type -P "${GCOV}") ]]; then
fi
if test "${FUNCTIONALTEST}" = "functionaltest-lua" ; then
- DEPS_CMAKE_FLAGS="${DEPS_CMAKE_FLAGS} -DUSE_BUNDLED_LUA=ON"
+ DEPS_CMAKE_FLAGS="${DEPS_CMAKE_FLAGS} -D USE_BUNDLED_LUA=ON"
fi
mkdir -p "${DEPS_BUILD_DIR}"
diff --git a/ci/install.sh b/ci/install.sh
index 5925cc7b02..d65c86032b 100755
--- a/ci/install.sh
+++ b/ci/install.sh
@@ -8,7 +8,7 @@ echo "Install neovim module for Python."
CC=cc python3 -m pip -q install --user --upgrade pynvim
echo "Install neovim RubyGem."
-gem install --no-document --bindir "$HOME/.local/bin" --user-install --pre neovim
+gem install --no-document --bindir "$BIN_DIR" --user-install --pre neovim
echo "Install neovim npm package"
npm install -g neovim
diff --git a/ci/run_tests.sh b/ci/run_tests.sh
index c692d859d7..0d39627dac 100755
--- a/ci/run_tests.sh
+++ b/ci/run_tests.sh
@@ -13,7 +13,7 @@ build_nvim() {
check_core_dumps --delete quiet
if test -n "${CLANG_SANITIZER}" ; then
- CMAKE_FLAGS="${CMAKE_FLAGS} -DCLANG_${CLANG_SANITIZER}=ON"
+ CMAKE_FLAGS="${CMAKE_FLAGS} -D CLANG_${CLANG_SANITIZER}=ON"
fi
mkdir -p "${BUILD_DIR}"
diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt
index fd34a30619..e4bbdda0c3 100755
--- a/src/nvim/CMakeLists.txt
+++ b/src/nvim/CMakeLists.txt
@@ -166,13 +166,14 @@ if(CI_BUILD)
target_compile_options(main_lib INTERFACE -WX)
else()
target_compile_options(main_lib INTERFACE -Werror)
- if(DEFINED ENV{BUILD_UCHAR})
- # Get some test coverage for unsigned char
- target_compile_options(main_lib INTERFACE -funsigned-char)
- endif()
endif()
endif()
+option(UNSIGNED_CHAR "Set char to be unsigned" OFF)
+if(UNSIGNED_CHAR)
+ target_compile_options(main_lib INTERFACE -funsigned-char)
+endif()
+
list(APPEND CMAKE_REQUIRED_INCLUDES "${MSGPACK_INCLUDE_DIRS}")
check_c_source_compiles("
#include <msgpack.h>