Files
zaloopipe/pipeline-runner/build.sh
T

65 lines
1.6 KiB
Bash
Executable File

#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BUILD_DIR="${SCRIPT_DIR}/build"
REBUILD=false
FAKE=false
for arg in "$@"; do
case "$arg" in
--rebuild) REBUILD=true ;;
--fake) FAKE=true ;;
esac
done
CMAKE_ARGS=""
if [ "${FAKE}" = true ]; then
CMAKE_ARGS="-DFAKE=ON"
fi
if [ "${REBUILD}" = true ]; then
echo "==> Clean build directory"
rm -rf "${BUILD_DIR}"
mkdir -p "${BUILD_DIR}"
echo "==> Configure"
cmake -S "${SCRIPT_DIR}" -B "${BUILD_DIR}" ${CMAKE_ARGS}
fi
mkdir -p "${BUILD_DIR}"
if [ -f "${BUILD_DIR}/CMakeCache.txt" ]; then
CACHED_FAKE=$(grep -o "FAKE:BOOL=.\+" "${BUILD_DIR}/CMakeCache.txt" 2>/dev/null || echo "")
if [ "${FAKE}" = true ] && [ "${CACHED_FAKE}" != "FAKE:BOOL=ON" ]; then
echo "==> FAKE flag changed, cleaning build"
rm -rf "${BUILD_DIR}"
mkdir -p "${BUILD_DIR}"
elif [ "${FAKE}" = false ] && [ "${CACHED_FAKE}" = "FAKE:BOOL=ON" ]; then
echo "==> FAKE flag changed, cleaning build"
rm -rf "${BUILD_DIR}"
mkdir -p "${BUILD_DIR}"
fi
fi
if [ ! -f "${BUILD_DIR}/CMakeCache.txt" ]; then
echo "==> Configure"
cmake -S "${SCRIPT_DIR}" -B "${BUILD_DIR}" ${CMAKE_ARGS}
fi
echo "==> Build"
cmake --build "${BUILD_DIR}" -j$(nproc)
echo "==> Run C++ tests"
rm -rf /tmp/pipeline-runner-test/
"${BUILD_DIR}/test-pipeline-runner" \
--gtest_brief=1 \
--gtest_output=xml:"${BUILD_DIR}/test-results.xml"
if [ "${FAKE}" = true ]; then
echo "==> Run Python tests"
timeout 60 python3 -m pytest "${SCRIPT_DIR}/tests" --tb=line -q \
--junitxml="${BUILD_DIR}/python-test-results.xml"
fi
echo "==> Done"