summaryrefslogtreecommitdiff
path: root/Tools/ci-run.sh
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/ci-run.sh')
-rw-r--r--Tools/ci-run.sh76
1 files changed, 61 insertions, 15 deletions
diff --git a/Tools/ci-run.sh b/Tools/ci-run.sh
index 09e9ae318..d42365fd6 100644
--- a/Tools/ci-run.sh
+++ b/Tools/ci-run.sh
@@ -1,24 +1,24 @@
#!/usr/bin/bash
+set -x
+
GCC_VERSION=${GCC_VERSION:=8}
# Set up compilers
if [[ $TEST_CODE_STYLE == "1" ]]; then
- echo "Skipping compiler setup"
+ echo "Skipping compiler setup: Code style run"
elif [[ $OSTYPE == "linux-gnu"* ]]; then
echo "Setting up linux compiler"
echo "Installing requirements [apt]"
sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test"
sudo apt update -y -q
- sudo apt install -y -q ccache gdb python-dbg python3-dbg gcc-$GCC_VERSION || exit 1
+ sudo apt install -y -q gdb python3-dbg gcc-$GCC_VERSION || exit 1
ALTERNATIVE_ARGS=""
if [[ $BACKEND == *"cpp"* ]]; then
sudo apt install -y -q g++-$GCC_VERSION || exit 1
ALTERNATIVE_ARGS="--slave /usr/bin/g++ g++ /usr/bin/g++-$GCC_VERSION"
fi
- sudo /usr/sbin/update-ccache-symlinks
- echo "/usr/lib/ccache" >> $GITHUB_PATH # export ccache to path
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-$GCC_VERSION 60 $ALTERNATIVE_ARGS
@@ -32,7 +32,27 @@ elif [[ $OSTYPE == "darwin"* ]]; then
export CC="clang -Wno-deprecated-declarations"
export CXX="clang++ -stdlib=libc++ -Wno-deprecated-declarations"
else
- echo "No setup specified for $OSTYPE"
+ echo "Skipping compiler setup: No setup specified for $OSTYPE"
+fi
+
+if [[ $COVERAGE == "1" ]]; then
+ echo "Skip setting up compilation caches"
+elif [[ $OSTYPE == "msys" ]]; then
+ echo "Set up sccache"
+ echo "TODO: Make a soft symlink to sccache"
+else
+ echo "Set up ccache"
+
+ echo "/usr/lib/ccache" >> $GITHUB_PATH # export ccache to path
+
+ echo "Make a soft symlinks to ccache"
+ cp ccache /usr/local/bin/
+ ln -s ccache /usr/local/bin/gcc
+ ln -s ccache /usr/local/bin/g++
+ ln -s ccache /usr/local/bin/cc
+ ln -s ccache /usr/local/bin/c++
+ ln -s ccache /usr/local/bin/clang
+ ln -s ccache /usr/local/bin/clang++
fi
# Set up miniconda
@@ -50,14 +70,17 @@ echo "===================="
echo "|VERSIONS INSTALLED|"
echo "===================="
echo "Python $PYTHON_SYS_VERSION"
+
if [[ $CC ]]; then
which ${CC%% *}
${CC%% *} --version
fi
+
if [[ $CXX ]]; then
which ${CXX%% *}
${CXX%% *} --version
fi
+
echo "===================="
# Install python requirements
@@ -68,12 +91,17 @@ if [[ $PYTHON_VERSION == "2.7"* ]]; then
elif [[ $PYTHON_VERSION == "3."[45]* ]]; then
python -m pip install wheel || exit 1
python -m pip install -r test-requirements-34.txt || exit 1
+elif [[ $PYTHON_VERSION == "pypy-2.7" ]]; then
+ pip install wheel || exit 1
+ pip install -r test-requirements-pypy27.txt || exit 1
+elif [[ $PYTHON_VERSION == "3.1"[2-9]* ]]; then
+ python -m pip install wheel || exit 1
+ python -m pip install -r test-requirements-312.txt || exit 1
else
- python -m pip install -U pip setuptools wheel || exit 1
+ python -m pip install -U pip "setuptools<60" wheel || exit 1
if [[ $PYTHON_VERSION != *"-dev" || $COVERAGE == "1" ]]; then
python -m pip install -r test-requirements.txt || exit 1
-
if [[ $PYTHON_VERSION != "pypy"* && $PYTHON_VERSION != "3."[1]* ]]; then
python -m pip install -r test-requirements-cpython.txt || exit 1
fi
@@ -108,7 +136,16 @@ export PATH="/usr/lib/ccache:$PATH"
# Most modern compilers allow the last conflicting option
# to override the previous ones, so '-O0 -O3' == '-O3'
# This is true for the latest msvc, gcc and clang
-CFLAGS="-O0 -ggdb -Wall -Wextra"
+if [[ $OSTYPE == "msys" ]]; then # for MSVC cl
+ # /wd disables warnings
+ # 4711 warns that function `x` was selected for automatic inline expansion
+ # 4127 warns that a conditional expression is constant, should be fixed here https://github.com/cython/cython/pull/4317
+ # (off by default) 5045 warns that the compiler will insert Spectre mitigations for memory load if the /Qspectre switch is specified
+ # (off by default) 4820 warns about the code in Python\3.9.6\x64\include ...
+ CFLAGS="-Od /Z7 /MP /W4 /wd4711 /wd4127 /wd5045 /wd4820"
+else
+ CFLAGS="-O0 -ggdb -Wall -Wextra"
+fi
# Trying to cover debug assertions in the CI without adding
# extra jobs. Therefore, odd-numbered minor versions of Python
# running C++ jobs get NDEBUG undefined, and even-numbered
@@ -123,6 +160,9 @@ fi
if [[ $NO_CYTHON_COMPILE != "1" && $PYTHON_VERSION != "pypy"* ]]; then
BUILD_CFLAGS="$CFLAGS -O2"
+ if [[ $CYTHON_COMPILE_ALL == "1" && $OSTYPE != "msys" ]]; then
+ BUILD_CFLAGS="$CFLAGS -O3 -g0 -mtune=generic" # make wheel sizes comparable to standard wheel build
+ fi
if [[ $PYTHON_SYS_VERSION == "2"* ]]; then
BUILD_CFLAGS="$BUILD_CFLAGS -fno-strict-aliasing"
fi
@@ -134,24 +174,30 @@ if [[ $NO_CYTHON_COMPILE != "1" && $PYTHON_VERSION != "pypy"* ]]; then
if [[ $CYTHON_COMPILE_ALL == "1" ]]; then
SETUP_ARGS="$SETUP_ARGS --cython-compile-all"
fi
- #SETUP_ARGS="$SETUP_ARGS
- # $(python -c 'import sys; print("-j5" if sys.version_info >= (3,5) else "")')"
+ # It looks like parallel build may be causing occasional link failures on Windows
+ # "with exit code 1158". DW isn't completely sure of this, but has disabled it in
+ # the hope it helps
+ SETUP_ARGS="$SETUP_ARGS
+ $(python -c 'import sys; print("-j5" if sys.version_info >= (3,5) and not sys.platform.startswith("win") else "")')"
CFLAGS=$BUILD_CFLAGS \
python setup.py build_ext -i $SETUP_ARGS || exit 1
# COVERAGE can be either "" (empty or not set) or "1" (when we set it)
# STACKLESS can be either "" (empty or not set) or "true" (when we set it)
- # CYTHON_COMPILE_ALL can be either "" (empty or not set) or "1" (when we set it)
if [[ $COVERAGE != "1" && $STACKLESS != "true" && $BACKEND != *"cpp"* &&
- $CYTHON_COMPILE_ALL != "1" && $LIMITED_API == "" && $EXTRA_CFLAGS == "" ]]; then
+ $LIMITED_API == "" && $EXTRA_CFLAGS == "" ]]; then
python setup.py bdist_wheel || exit 1
+ ls -l dist/ || true
fi
+
+ echo "Extension modules created during the build:"
+ find Cython -name "*.so" -ls | sort -k11
fi
if [[ $TEST_CODE_STYLE == "1" ]]; then
- make -C docs html || echo "FIXME: docs build failed!"
-elif [[ $PYTHON_VERSION != "pypy"* ]]; then
+ make -C docs html || exit 1
+elif [[ $PYTHON_VERSION != "pypy"* && $OSTYPE != "msys" ]]; then
# Run the debugger tests in python-dbg if available
# (but don't fail, because they currently do fail)
PYTHON_DBG=$(python -c 'import sys; print("%d.%d" % sys.version_info[:2])')
@@ -181,6 +227,6 @@ python runtests.py \
EXIT_CODE=$?
-ccache -s 2>/dev/null || true
+ccache -s -v -v 2>/dev/null || true
exit $EXIT_CODE