mirror of
https://github.com/neovim/neovim.git
synced 2025-11-13 05:48:51 +00:00
* Split build steps to utilize the Travis build lifecycle. * Move shell code from `.travis.yml` into Bash files in `.ci/`, one file for each step of the Travis build lifecycle. * Use configuration variables in `.travis.yml` to change build behavior (e.g. build 32-bit with `BUILD_32BIT=ON`). * Keep all configuration in environment variables in `.travis.yml`. In scripts, concatenate environment variables according to configuration to change to different behavior. * Add GCC 5 builds for Linux. * Use Travis's caching feature [1] for third-party dependencies and pip packages. * Allow failures MSan, as the errors it reports have to be fixed first. Valgrind is still disabled, but can be enabled by setting `env: VALGRIND=ON` for a job in `.travis.yml`. [1] http://docs.travis-ci.com/user/caching
80 lines
1.9 KiB
Bash
80 lines
1.9 KiB
Bash
build_deps() {
|
|
if [[ "${BUILD_32BIT}" == ON ]]; then
|
|
if [[ "${BUILD_MINGW}" == ON ]]; then
|
|
>&2 echo "32-bit MinGW builds not supported."
|
|
exit 1
|
|
fi
|
|
|
|
DEPS_CMAKE_FLAGS="${DEPS_CMAKE_FLAGS} ${CMAKE_FLAGS_32BIT}"
|
|
fi
|
|
if [[ "${BUILD_MINGW}" == ON ]]; then
|
|
DEPS_CMAKE_FLAGS="${DEPS_CMAKE_FLAGS} ${CMAKE_FLAGS_MINGW}"
|
|
fi
|
|
|
|
rm -rf "${DEPS_INSTALL_PREFIX}"
|
|
|
|
# If there is a valid cache and we're not forced to recompile,
|
|
# use cached third-party dependencies.
|
|
if [[ -f "${CACHE_MARKER}" ]] && [[ "${BUILD_NVIM_DEPS}" != true ]]; then
|
|
echo "Using third-party dependencies from Travis's cache (last updated: $(stat -c '%y' "${CACHE_MARKER}"))."
|
|
|
|
mkdir -p "$(dirname "${DEPS_INSTALL_PREFIX}")"
|
|
ln -Ts "${HOME}/.cache/nvim-deps" "${DEPS_INSTALL_PREFIX}"
|
|
return
|
|
fi
|
|
|
|
mkdir -p "${DEPS_BUILD_DIR}"
|
|
cd "${DEPS_BUILD_DIR}"
|
|
echo "Configuring with '${DEPS_CMAKE_FLAGS}'."
|
|
cmake ${DEPS_CMAKE_FLAGS} "${TRAVIS_BUILD_DIR}/third-party/"
|
|
|
|
if ! ${MAKE_CMD}; then
|
|
exit 1
|
|
fi
|
|
|
|
cd "${TRAVIS_BUILD_DIR}"
|
|
}
|
|
|
|
build_nvim() {
|
|
if [[ -n "${CLANG_SANITIZER}" ]]; then
|
|
CMAKE_FLAGS="${CMAKE_FLAGS} -DCLANG_${CLANG_SANITIZER}=ON"
|
|
fi
|
|
if [[ "${BUILD_32BIT}" == ON ]]; then
|
|
if [[ "${BUILD_MINGW}" == ON ]]; then
|
|
>&2 echo "32-bit MinGW builds not supported."
|
|
exit 1
|
|
fi
|
|
|
|
CMAKE_FLAGS="${CMAKE_FLAGS} ${CMAKE_FLAGS_32BIT}"
|
|
fi
|
|
if [[ "${BUILD_MINGW}" == ON ]]; then
|
|
CMAKE_FLAGS="${CMAKE_FLAGS} ${CMAKE_FLAGS_MINGW}"
|
|
fi
|
|
|
|
mkdir -p "${BUILD_DIR}"
|
|
cd "${BUILD_DIR}"
|
|
echo "Configuring with '${CMAKE_FLAGS}'."
|
|
cmake ${CMAKE_FLAGS} "${TRAVIS_BUILD_DIR}"
|
|
|
|
echo "Building nvim."
|
|
if ! ${MAKE_CMD} nvim; then
|
|
exit 1
|
|
fi
|
|
|
|
echo "Building libnvim."
|
|
if ! ${MAKE_CMD} libnvim; then
|
|
exit 1
|
|
fi
|
|
|
|
echo "Building nvim-test."
|
|
if ! ${MAKE_CMD} nvim-test; then
|
|
exit 1
|
|
fi
|
|
|
|
# Invoke nvim to trigger *San early.
|
|
bin/nvim --version
|
|
bin/nvim -u NONE -e -c ':qall'
|
|
|
|
cd "${TRAVIS_BUILD_DIR}"
|
|
}
|