diff options
Diffstat (limited to 'Tools/ci-run.sh')
-rw-r--r-- | Tools/ci-run.sh | 76 |
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 |