diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 51f30c263022..cdff56e1a133 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -217,6 +217,11 @@ stages: BITS: 64 NPY_USE_BLAS_ILP64: '1' OPENBLAS_SUFFIX: '64_' + PyPy36-32bit: + PYTHON_VERSION: 'PyPy3.6' + PYTHON_ARCH: 'x32' + TEST_MODE: fast + BITS: 32 steps: - template: azure-steps-windows.yml - job: Linux_PyPy3 diff --git a/azure-steps-windows.yml b/azure-steps-windows.yml index 4c4e1d177e89..28762f5d9528 100644 --- a/azure-steps-windows.yml +++ b/azure-steps-windows.yml @@ -4,10 +4,31 @@ steps: versionSpec: $(PYTHON_VERSION) addToPath: true architecture: $(PYTHON_ARCH) -- script: python -m pip install --upgrade pip + condition: not(contains(variables['PYTHON_VERSION'], 'PyPy')) +- powershell: | + $url = "http://buildbot.pypy.org/nightly/py3.6/pypy-c-jit-latest-win32.zip" + $output = "pypy.zip" + $wc = New-Object System.Net.WebClient + $wc.DownloadFile($url, $output) + echo "downloaded $url to $output" + mkdir pypy3 + Expand-Archive $output -DestinationPath pypy3 + move pypy3/pypy-c-*/* pypy3 + cp pypy3/pypy3.exe pypy3/python.exe + $pypypath = Join-Path (Get-Item .).FullName pypy3 + $env:Path = $pypypath + ";" + $env:Path + setx PATH $env:Path + python -mensurepip + echo "##vso[task.prependpath]$pypypath" + condition: contains(variables['PYTHON_VERSION'], 'PyPy') + displayName: "Install PyPy pre-release" + +- script: python -m pip install --upgrade pip wheel displayName: 'Install tools' + - script: python -m pip install -r test_requirements.txt displayName: 'Install dependencies; some are optional to avoid test skips' + - powershell: | $ErrorActionPreference = "Stop" # Download and get the path to "openblas.a". We cannot copy it @@ -16,7 +37,7 @@ steps: # since OPENBLAS will be picked up by the openblas discovery $target = $(python tools/openblas_support.py) mkdir openblas - echo Copying $target to openblas/openblas$env:OPENBLAS_SUFFIX.a + echo "Copying $target to openblas/openblas$env:OPENBLAS_SUFFIX.a" cp $target openblas/openblas$env:OPENBLAS_SUFFIX.a If ( Test-Path env:NPY_USE_BLAS_ILP64 ){ echo "##vso[task.setvariable variable=OPENBLAS64_]$pwd\openblas" @@ -27,35 +48,40 @@ steps: - powershell: | choco install -y mingw --forcex86 --force --version=7.3.0 + refreshenv displayName: 'Install 32-bit mingw for 32-bit builds' condition: eq(variables['BITS'], 32) # NOTE: for Windows builds it seems much more tractable to use runtests.py # vs. manual setup.py and then runtests.py for testing only + - powershell: | If ($(BITS) -eq 32) { $env:CFLAGS = "-m32" $env:LDFLAGS = "-m32" $env:PATH = "C:\\ProgramData\\chocolatey\\lib\\mingw\\tools\\install\\mingw$(BITS)\\bin;" + $env:PATH - refreshenv } python -c "from tools import openblas_support; openblas_support.make_init('numpy')" - pip wheel -v -v -v --no-build-isolation --no-use-pep517 --wheel-dir=dist . + python -m pip wheel -v -v -v --no-build-isolation --no-use-pep517 --wheel-dir=dist . ls dist -r | Foreach-Object { - pip install $_.FullName + python -m pip install $_.FullName } displayName: 'Build NumPy' + - bash: | pushd . && cd .. && target=$(python -c "import numpy, os; print(os.path.abspath(os.path.join(os.path.dirname(numpy.__file__), '.libs')))") && popd - pip download -d destination --only-binary :all: --no-deps numpy==1.14 + python -m pip download -d destination --only-binary :all: --no-deps numpy==1.14 cd destination && unzip numpy*.whl && cp numpy/.libs/*.dll $target ls $target displayName: 'Add extraneous & older DLL to numpy/.libs to probe DLL handling robustness' condition: eq(variables['PYTHON_VERSION'], '3.6') - script: pushd . && cd .. && python -c "from ctypes import windll; windll.kernel32.SetDefaultDllDirectories(0x00000800); import numpy" && popd displayName: 'For gh-12667; Windows DLL resolution' + condition: eq(variables['PYTHON_VERSION'], '3.6') + - 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 condition: succeededOrFailed() inputs: