trigger: # start a new build for every push batch: False branches: include: - master - maintenance/* variables: # OpenBLAS_version should be updated # to match numpy-wheels repo OpenBLAS_version: 0.3.7 stages: - stage: InitialTests jobs: - job: WindowsFast pool: vmImage: 'VS2017-Win2016' strategy: matrix: Python36-64bit-fast: PYTHON_VERSION: '3.6' PYTHON_ARCH: 'x64' TEST_MODE: fast BITS: 64 steps: - template: azure-steps-windows.yml - stage: ComprehensiveTests jobs: - job: Linux_Python_36_32bit_full_with_asserts pool: vmImage: 'ubuntu-16.04' steps: - script: | docker pull i386/ubuntu:bionic docker run -v $(pwd):/numpy i386/ubuntu:bionic /bin/bash -c "cd numpy && \ apt-get -y update && \ apt-get -y install python3.6-dev python3-pip locales python3-certifi && \ locale-gen fr_FR && update-locale && \ apt-get -y install gfortran-5 wget && \ target=\$(python3 tools/openblas_support.py) && \ cp -r \$target/usr/local/lib/* /usr/lib && \ cp \$target/usr/local/include/* /usr/include && \ python3 -m pip install --user --upgrade pip setuptools && \ python3 -m pip install --user -r test_requirements.txt && \ python3 -m pip install . && \ F77=gfortran-5 F90=gfortran-5 \ CFLAGS=-UNDEBUG python3 runtests.py -n --debug-info --mode=full -- -rsx --junitxml=junit/test-results.xml && \ python3 tools/openblas_support.py --check_version $(OpenBLAS_version)" displayName: 'Run 32-bit Ubuntu Docker Build / Tests' - task: PublishTestResults@2 condition: succeededOrFailed() inputs: testResultsFiles: '**/test-*.xml' failTaskOnFailedTests: true testRunTitle: 'Publish test results for Python 3.6-32 bit full Linux' - job: macOS pool: # NOTE: at time of writing, there is a danger # that using an invalid vmIMage string for macOS # image silently redirects to a Windows build on Azure; # for now, use the only image name officially present in # the docs even though i.e., numba uses another in their # azure config for mac os -- Microsoft has indicated # they will patch this issue vmImage: macOS-10.14 steps: # the @0 refers to the (major) version of the *task* on Microsoft's # end, not the order in the build matrix nor anything to do # with version of Python selected - task: UsePythonVersion@0 inputs: versionSpec: '3.6' addToPath: true architecture: 'x64' # NOTE: do we have a compelling reason to use older / newer # versions of Xcode toolchain for testing? - script: /bin/bash -c "sudo xcode-select -s /Applications/Xcode_10.app/Contents/Developer" displayName: 'select Xcode version' # NOTE: might be better if we could avoid installing # two C compilers, but with homebrew looks like we're # now stuck getting the full gcc toolchain instead of # just pulling in gfortran - script: | # same version of gfortran as the wheel builds brew install gcc49 # manually link critical gfortran libraries ln -s /usr/local/Cellar/gcc@4.9/4.9.4_1/lib/gcc/4.9/libgfortran.3.dylib /usr/local/lib/libgfortran.3.dylib ln -s /usr/local/Cellar/gcc@4.9/4.9.4_1/lib/gcc/4.9/libquadmath.0.dylib /usr/local/lib/libquadmath.0.dylib # manually symlink gfortran-4.9 to plain gfortran # for f2py ln -s /usr/local/bin/gfortran-4.9 /usr/local/bin/gfortran displayName: 'make gfortran available on mac os vm' # use the pre-built openblas binary that most closely # matches our MacOS wheel builds -- currently based # primarily on file size / name details - script: | target=$(python tools/openblas_support.py) # manually link to appropriate system paths cp $target/usr/local/lib/* /usr/local/lib/ cp $target/usr/local/include/* /usr/local/include/ displayName: 'install pre-built openblas' - script: python -m pip install --upgrade pip setuptools wheel displayName: 'Install tools' - script: | python -m pip install -r test_requirements.txt python -m pip install vulture docutils sphinx==2.2.0 numpydoc displayName: 'Install dependencies; some are optional to avoid test skips' - script: /bin/bash -c "! vulture . --min-confidence 100 --exclude doc/,numpy/distutils/ | grep 'unreachable'" displayName: 'Check for unreachable code paths in Python modules' # prefer usage of clang over gcc proper # to match likely scenario on many user mac machines - script: python setup.py build -j 4 build_src --verbose-cfg install displayName: 'Build NumPy' env: BLAS: None LAPACK: None ATLAS: None ACCELERATE: None CC: /usr/bin/clang # wait until after dev build of NumPy to pip # install matplotlib to avoid pip install of older numpy - script: python -m pip install matplotlib displayName: 'Install matplotlib before refguide run' - script: python runtests.py -g --refguide-check displayName: 'Run Refuide Check' - script: python runtests.py -n --mode=full -- -rsx --junitxml=junit/test-results.xml displayName: 'Run Full NumPy Test Suite' - bash: python tools/openblas_support.py --check_version $(OpenBLAS_version) displayName: 'Verify OpenBLAS version' - task: PublishTestResults@2 condition: succeededOrFailed() inputs: testResultsFiles: '**/test-*.xml' failTaskOnFailedTests: true testRunTitle: 'Publish test results for Python 3.6 64-bit full Mac OS' - job: Windows pool: vmImage: 'VS2017-Win2016' strategy: maxParallel: 6 matrix: Python36-32bit-fast: PYTHON_VERSION: '3.6' PYTHON_ARCH: 'x86' TEST_MODE: fast BITS: 32 Python37-32bit-fast: PYTHON_VERSION: '3.7' PYTHON_ARCH: 'x86' TEST_MODE: fast BITS: 32 Python38-32bit-fast: PYTHON_VERSION: '3.8' PYTHON_ARCH: 'x86' TEST_MODE: fast BITS: 32 Python35-64bit-full: PYTHON_VERSION: '3.5' PYTHON_ARCH: 'x64' TEST_MODE: full BITS: 64 Python36-64bit-full: PYTHON_VERSION: '3.6' PYTHON_ARCH: 'x64' TEST_MODE: full BITS: 64 Python37-64bit-full: PYTHON_VERSION: '3.7' PYTHON_ARCH: 'x64' TEST_MODE: full BITS: 64 Python38-64bit-full: PYTHON_VERSION: '3.8' PYTHON_ARCH: 'x64' TEST_MODE: full BITS: 64 steps: - template: azure-steps-windows.yml - job: Linux_PyPy3 pool: vmIMage: 'ubuntu-16.04' steps: - script: source tools/pypy-test.sh displayName: 'Run PyPy3 Build / Tests' - task: PublishTestResults@2 condition: succeededOrFailed() inputs: testResultsFiles: '**/test-*.xml' testRunTitle: 'Publish test results for PyPy3' failTaskOnFailedTests: true - job: Linux_gcc48 pool: vmImage: 'ubuntu-18.04' steps: - script: | if ! `gcc-4.8 2>/dev/null`; then sudo apt install gcc-4.8 fi displayName: 'add gcc 4.8' - script: | python3 -m pip install --user --upgrade pip setuptools python3 -m pip install --user -r test_requirements.txt CPPFLAGS='' CC=gcc-4.8 F77=gfortran-5 F90=gfortran-5 \ python3 runtests.py --debug-info --mode=full -- -rsx --junitxml=junit/test-results.xml displayName: 'Run gcc4.8 Build / Tests' - task: PublishTestResults@2 condition: succeededOrFailed() inputs: testResultsFiles: '**/test-*.xml' failTaskOnFailedTests: true testRunTitle: 'Publish test results for gcc 4.8'