This repository was archived by the owner on Aug 30, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 21
/
Copy pathwindows.yml
150 lines (136 loc) · 5.16 KB
/
windows.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
parameters:
name: ""
vmImage: ""
matrix: []
jobs:
- job: ${{ parameters.name }}
pool:
vmImage: ${{ parameters.vmImage }}
variables:
BUILD_COMMIT: "master"
NIGHTLY_BUILD_COMMIT: "master"
JUNITXML: "test-data.xml"
TEST_DIR: '$(Agent.WorkFolder)/tmp_for_test'
strategy:
matrix:
${{ insert }}: ${{ parameters.matrix }}
steps:
- checkout: self
submodules: true
- task: UsePythonVersion@0
inputs:
versionSpec: $(PYTHON_VERSION)
addToPath: true
architecture: $(PYTHON_ARCH)
displayName: Set python version
- bash: |
set -e
echo PYTHON $PYTHON_VERSION $PYTHON_ARCH
echo Build Reason: $BUILD_REASON
python --version
python -c "import struct; print(struct.calcsize('P') * 8)"
pip --version
displayName: Check that we have the expected version and architecture for Python
- bash: |
set -e
if [ "$BUILD_REASON" == "Schedule" ]; then
BUILD_COMMIT=$NIGHTLY_BUILD_COMMIT
fi
echo "Building numpy@$BUILD_COMMIT"
echo "##vso[task.setvariable variable=BUILD_COMMIT]$BUILD_COMMIT"
# Store original Python path to be able to create test_venv pointing
# to same Python version.
PYTHON_EXE=`which python`
echo "##vso[task.setvariable variable=PYTHON_EXE]$PYTHON_EXE"
displayName: Define build env variables
- bash: |
set -e
cd numpy
git fetch origin HEAD
git checkout $BUILD_COMMIT
git clean -fxd
git reset --hard
displayName: Checkout numpy commit
- powershell: |
choco install -y mingw --forcex86 --force --version=5.3.0
displayName: 'Install 32-bit mingw for 32-bit builds'
condition: eq(variables['BITS'], 32)
- bash: |
set -xe
pushd numpy
pip install twine wheel urllib3
# a bit overkill, all we really need is cython
pip install --timeout=60 -r test_requirements.txt
# handle license
cp ../LICENSE_win32.txt LICENSE.txt
# handle _distributor_init.py
PYTHONPATH=tools python -c "import openblas_support; openblas_support.make_init('numpy')"
# Download and get the path to "openblas.a". We cannot copy it
# to $PYTHON_EXE's directory since that is on a different drive which
# mingw does not like. Instead copy it to a directory and set OPENBLAS
target=$(python tools/openblas_support.py)
mkdir -p openblas
echo Copying $target to openblas
cp $target openblas
echo "##vso[task.setvariable variable=OPENBLAS]openblas"
displayName: Prepare the build
- powershell: |
If ($(BITS) -eq 32) {
$env:CFLAGS = "-m32"
$env:LDFLAGS = "-m32"
$env:PATH = "C:\\tools\\mingw32\\bin;" + $env:PATH
refreshenv
}
# Build the wheel
pushd numpy
python setup.py build
python setup.py bdist_wheel
twine check dist/*
popd
displayName: Build wheel
- bash: |
set -ex
source extra_functions.sh
source config.sh
setup_test_venv
python -m pip install -r numpy/test_requirements.txt
python -m pip install numpy/dist/numpy-*.whl
mkdir -p for_test
pushd for_test
run_tests
popd
teardown_test_venv
displayName: Install wheel and test
- bash: echo "##vso[task.prependpath]$CONDA/Scripts"
displayName: Add conda to PATH
- bash: conda install -q -y anaconda-client
displayName: Install anaconda-client
- bash: |
set -e
if [ "$BUILD_COMMIT" == "master" ]; then
ANACONDA_ORG="scipy-wheels-nightly"
TOKEN="$MAPPED_NUMPY_NIGHTLY_UPLOAD_TOKEN"
else
ANACONDA_ORG="multibuild-wheels-staging"
TOKEN="$MAPPED_NUMPY_STAGING_UPLOAD_TOKEN"
fi
if [ "$TOKEN" == "" -o "${TOKEN:0:7}" == "\$(NUMPY" ]; then
echo "##[warning] Could not find anaconda.org upload token in secret variables"
TOKEN=""
fi
echo "##vso[task.setvariable variable=TOKEN]$TOKEN"
echo "##vso[task.setvariable variable=ANACONDA_ORG]$ANACONDA_ORG"
displayName: Retrieve secret upload token
env:
# Secret variables need to mapped to env variables explicitly:
MAPPED_NUMPY_NIGHTLY_UPLOAD_TOKEN: $(NUMPY_NIGHTLY_UPLOAD_TOKEN)
MAPPED_NUMPY_STAGING_UPLOAD_TOKEN: $(NUMPY_STAGING_UPLOAD_TOKEN)
- bash: |
set -e
source extra_functions.sh
for f in numpy/dist/numpy-*.whl; do rename_wheel $f; done
echo uploading numpy/dist/numpy-*.whl
anaconda -t $TOKEN upload -u $ANACONDA_ORG numpy/dist/numpy-*.whl
echo "PyPI-style index: https://pypi.anaconda.org/$ANACONDA_ORG/simple"
displayName: Upload to anaconda.org (only if secret token is retrieved)
condition: ne(variables['TOKEN'], '')