| trigger: |
| # start a new build for every push |
| batch: False |
| branches: |
| include: |
| - master |
| - maintenance/* |
| 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 && \ |
| locale-gen fr_FR && update-locale && \ |
| pip3 install setuptools nose cython==0.29.0 pytest pytz pickle5 && \ |
| apt-get -y install gfortran-5 wget && \ |
| cd .. && \ |
| mkdir openblas && cd openblas && \ |
| wget https://3f23b170c54c2533c070-1c8a9b3114517dc5fe17b7c3f8c63a43.ssl.cf2.rackcdn.com/openblas-v0.3.4-manylinux1_i686.tar.gz && \ |
| tar zxvf openblas-v0.3.4-manylinux1_i686.tar.gz && \ |
| cp -r ./usr/local/lib/* /usr/lib && \ |
| cp ./usr/local/include/* /usr/include && \ |
| cd ../numpy && \ |
| NUMPY_EXPERIMENTAL_ARRAY_FUNCTION=1 \ |
| F77=gfortran-5 F90=gfortran-5 \ |
| CFLAGS='-UNDEBUG -std=c99' python3 runtests.py --mode=full -- -rsx --junitxml=junit/test-results.xml" |
| displayName: 'Run 32-bit Ubuntu Docker Build / Tests' |
| - task: PublishTestResults@2 |
| inputs: |
| testResultsFiles: '**/test-*.xml' |
| 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.13 |
| 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: HOMEBREW_NO_AUTO_UPDATE=1 brew install gcc |
| displayName: 'make gfortran available on mac os vm' |
| - script: python -m pip install --upgrade pip setuptools wheel |
| displayName: 'Install tools' |
| - script: python -m pip install cython nose pytz pytest pickle5 vulture docutils sphinx numpydoc matplotlib |
| 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' |
| # NOTE: init_dgelsd failed init issue with current ACCELERATE / |
| # LAPACK configuration on Azure macos image; at the time of writing |
| # this plagues homebrew / macports NumPy builds, but we will |
| # circumvent for now by aggressively disabling acceleration for |
| # macos NumPy builds / tests; ACCELERATE=None on its own is not |
| # sufficient |
| # also, might as well prefer usage of clang over gcc proper |
| # to match likely scenario on many user mac machines |
| - script: python setup.py build -j 4 install |
| displayName: 'Build NumPy' |
| env: |
| BLAS: None |
| LAPACK: None |
| ATLAS: None |
| ACCELERATE: None |
| CC: /usr/bin/clang |
| - script: python runtests.py -g --refguide-check |
| displayName: 'Run Refuide Check' |
| - script: python runtests.py --mode=full -- -rsx --junitxml=junit/test-results.xml |
| displayName: 'Run Full NumPy Test Suite' |
| - task: PublishTestResults@2 |
| inputs: |
| testResultsFiles: '**/test-*.xml' |
| testRunTitle: 'Publish test results for Python 3.6 64-bit full Mac OS' |
| - job: Windows |
| pool: |
| vmIMage: 'VS2017-Win2016' |
| variables: |
| # openblas URLs from numpy-wheels |
| # appveyor / Windows config |
| OPENBLAS_32: "https://3f23b170c54c2533c070-1c8a9b3114517dc5fe17b7c3f8c63a43.ssl.cf2.rackcdn.com/openblas-v0.3.3-186-g701ea883-win32-gcc_7_1_0.zip" |
| OPENBLAS_64: "https://3f23b170c54c2533c070-1c8a9b3114517dc5fe17b7c3f8c63a43.ssl.cf2.rackcdn.com/openblas-v0.3.3-186-g701ea883-win_amd64-gcc_7_1_0.zip" |
| strategy: |
| maxParallel: 6 |
| matrix: |
| Python36-32bit-fast: |
| PYTHON_VERSION: '3.6' |
| PYTHON_ARCH: 'x86' |
| TEST_MODE: fast |
| OPENBLAS: $(OPENBLAS_32) |
| BITS: 32 |
| Python37-32bit-fast: |
| PYTHON_VERSION: '3.7' |
| PYTHON_ARCH: 'x86' |
| TEST_MODE: fast |
| OPENBLAS: $(OPENBLAS_32) |
| BITS: 32 |
| Python35-64bit-full: |
| PYTHON_VERSION: '3.5' |
| PYTHON_ARCH: 'x64' |
| TEST_MODE: full |
| OPENBLAS: $(OPENBLAS_64) |
| BITS: 64 |
| Python36-64bit-full: |
| PYTHON_VERSION: '3.6' |
| PYTHON_ARCH: 'x64' |
| TEST_MODE: full |
| INSTALL_PICKLE5: 1 |
| OPENBLAS: $(OPENBLAS_64) |
| BITS: 64 |
| Python37-64bit-full: |
| PYTHON_VERSION: '3.7' |
| PYTHON_ARCH: 'x64' |
| TEST_MODE: full |
| INSTALL_PICKLE5: 1 |
| OPENBLAS: $(OPENBLAS_64) |
| BITS: 64 |
| steps: |
| - task: UsePythonVersion@0 |
| inputs: |
| versionSpec: $(PYTHON_VERSION) |
| addToPath: true |
| architecture: $(PYTHON_ARCH) |
| - script: python -m pip install --upgrade pip setuptools wheel |
| displayName: 'Install tools' |
| - powershell: | |
| $wc = New-Object net.webclient |
| $wc.Downloadfile("$(OPENBLAS)", "openblas.zip") |
| $tmpdir = New-TemporaryFile | %{ rm $_; mkdir $_ } |
| Expand-Archive "openblas.zip" $tmpdir |
| $pyversion = python -c "from __future__ import print_function; import sys; print(sys.version.split()[0])" |
| Write-Host "Python Version: $pyversion" |
| $target = "C:\\hostedtoolcache\\windows\\Python\\$pyversion\\$(PYTHON_ARCH)\\lib\\openblas.a" |
| Write-Host "target path: $target" |
| cp $tmpdir\$(BITS)\lib\libopenblas_v0.3.3-186-g701ea883-gcc_7_1_0.a $target |
| displayName: 'Download / Install OpenBLAS' |
| - powershell: | |
| choco install -y mingw --forcex86 --force |
| displayName: 'Install 32-bit mingw for 32-bit builds' |
| condition: eq(variables['BITS'], 32) |
| - script: python -m pip install cython nose pytz pytest |
| displayName: 'Install dependencies; some are optional to avoid test skips' |
| # NOTE: for Windows builds it seems much more tractable to use runtests.py |
| # vs. manual setup.py and then runtests.py for testing only |
| - script: if [%INSTALL_PICKLE5%]==[1] python -m pip install pickle5 |
| displayName: 'Install optional pickle5 backport (only for python3.6 and 3.7)' |
| - powershell: | |
| If ($(BITS) -eq 32) { |
| $env:NPY_DISTUTILS_APPEND_FLAGS = 1 |
| $env:CFLAGS = "-m32" |
| $env:LDFLAGS = "-m32" |
| $env:PATH = "C:\\tools\\mingw32\\bin;" + $env:PATH |
| refreshenv |
| } |
| pip wheel -v -v -v --wheel-dir=dist . |
| |
| ls dist -r | Foreach-Object { |
| pip install $_.FullName |
| } |
| displayName: 'Build NumPy' |
| - script: python runtests.py -n --show-build-log --mode=$(TEST_MODE) -- -rsx --junitxml=junit/test-results.xml |
| displayName: 'Run NumPy Test Suite' |
| - task: PublishTestResults@2 |
| inputs: |
| testResultsFiles: '**/test-*.xml' |
| testRunTitle: 'Publish test results for Python $(PYTHON_VERSION) $(BITS)-bit $(TEST_MODE) Windows' |