forked from pyinstaller/pyinstaller
-
Notifications
You must be signed in to change notification settings - Fork 0
/
appveyor.yml
176 lines (146 loc) · 5.45 KB
/
appveyor.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
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
# As config was originally based on an example by Olivier Grisel. Thanks!
# https://github.com/ogrisel/python-appveyor-demo/blob/master/appveyor.yml
clone_depth: 50
# No reason for us to restrict the number concurrent jobs
max_jobs: 100
environment:
global:
# Wrapper to ensure extensions are build using the MSVC compiler matching
# the target Python version and architecture.
# SDK v7.0 MSVC Express 2008's SetEnv.cmd script will fail if the
# /E:ON and /V:ON options are not enabled in the batch script intepreter
# See: http://stackoverflow.com/a/13751649/163740
CMD_IN_ENV: 'cmd /E:ON /V:ON /C .\tests\scripts\appveyor\run_with_env.cmd'
PYTEST: py.test --maxfail 5 --durations=10 --junitxml=junit-results.xml
# Break the tests into two runs, since together they exceed the 1 hour limit.
# See https://github.com/pyinstaller/pyinstaller/issues/2024#issuecomment-224129520
# for more discussion.
TESTS_UNITTESTS: tests/unit tests/functional -k "not tests/functional/test_libraries.py"
TESTS_LIBRARIES: tests/functional/test_libraries.py
matrix:
- PYTHON: C:\Python36-x64
PYTHON_VERSION: 3.6
PYTHON_ARCH: 64
VCVARSALL: x64
TEST_LIBRARIES: NO
- PYTHON: C:\Python36-x64
PYTHON_VERSION: 3.6
PYTHON_ARCH: 64
VCVARSALL: x64
TEST_LIBRARIES: YES
- PYTHON: C:\Python36
PYTHON_VERSION: 3.6
PYTHON_ARCH: 32
VCVARSALL: x86
TEST_LIBRARIES: NO
- PYTHON: C:\Python36
PYTHON_VERSION: 3.6
PYTHON_ARCH: 32
VCVARSALL: x86
TEST_LIBRARIES: YES
- PYTHON: C:\Python35
PYTHON_VERSION: 3.5
PYTHON_ARCH: 32
VCVARSALL: x86
TEST_LIBRARIES: NO
- PYTHON: C:\Python35
PYTHON_VERSION: 3.5
PYTHON_ARCH: 32
VCVARSALL: x86
TEST_LIBRARIES: YES
- PYTHON: C:\Python34
PYTHON_VERSION: 3.4
PYTHON_ARCH: 32
VCVARSALL: x86
TEST_LIBRARIES: NO
- PYTHON: C:\Python34
PYTHON_VERSION: 3.4
PYTHON_ARCH: 32
VCVARSALL: x86
TEST_LIBRARIES: YES
- PYTHON: C:\Python33
PYTHON_VERSION: 3.3
PYTHON_ARCH: 32
VCVARSALL: x86
TEST_LIBRARIES: NO
- PYTHON: C:\Python33
PYTHON_VERSION: 3.3
PYTHON_ARCH: 32
VCVARSALL: x86
TEST_LIBRARIES: YES
- PYTHON: C:\Python27
PYTHON_VERSION: 2.7
PYTHON_ARCH: 32
VCVARSALL: x86
TEST_LIBRARIES: NO
- PYTHON: C:\Python27
PYTHON_VERSION: 2.7
PYTHON_ARCH: 32
VCVARSALL: x86
TEST_LIBRARIES: YES
init:
- ECHO %PYTHON% %PYTHON_VERSION% %PYTHON_ARCH%
- ECHO "%APPVEYOR_SCHEDULED_BUILD%"
cache:
# Cache downloaded pip packages and built wheels.
- '%LOCALAPPDATA%\pip\Cache\http'
- '%LOCALAPPDATA%\pip\Cache\wheels'
install:
- C:\cygwin\bin\du -hs "%LOCALAPPDATA%\pip\Cache"
# Prepend newly installed Python to the PATH of this build (this cannot be
# done from inside the powershell script as it would require to restart
# the parent CMD process).
- SET PATH=%PYTHON%;%PYTHON%\Scripts;%PATH%
# Check that we have the expected version and architecture for Python
- python --version
- >-
%CMD_IN_ENV%
python -c "import sys,platform,struct;
print(sys.platform, platform.machine(), struct.calcsize('P') * 8, )"
# Compile bootloader.
- cd bootloader
- '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" %VCVARSALL%'
- python waf --msvc_version="msvc 12.0" distclean all
- cd ..
### Install the PyInstaller dependencies.
# If some dependencies contain
# compiled extensions and are not provided as pre-built wheel packages, pip
# will build them from source using the MSVC compiler matching the target
# Python version and architecture. To achieve this, all commands are run
# under control of '%CMD_IN_ENV%' (see above).
# Upgrade to the latest pip.
- '%CMD_IN_ENV% python -m pip install -U pip setuptools wheel'
# Install the PyInstaller test dependencies.
- '%CMD_IN_ENV% pip install -U --timeout 5 --retries 2
-r tests/requirements-tools.txt'
- 'if "%TEST_LIBRARIES%" == "YES" (
%CMD_IN_ENV% pip install -U --timeout 5 --retries 2
-r tests/requirements-libraries.txt
)'
# Install PyInstaller into virtualenv.
- '%CMD_IN_ENV% pip install -e .'
build: none
test_script:
# Run the tests appropriate for this entry in the test matrix. Skip tests
# if we're just updating the cache.
- 'if not "%APPVEYOR_SCHEDULED_BUILD%" == "True" (
if /i "%TEST_LIBRARIES%" == "YES" (
%CMD_IN_ENV% %PYTEST% %TESTS_LIBRARIES%
) else (
%CMD_IN_ENV% %PYTEST% %TESTS_UNITTESTS%
))'
on_success:
# Remove old or huge cache files to hopefully not exceed the 1GB cache limit.
#
# If the cache limit is reached, the cache will not be updated (of not even
# created in the first run). So this is a trade of between keeping the cache
# current and having a cache at all.
# NB: This is done only `on_success` since the cache in uploaded only on
# success anyway.
- C:\cygwin\bin\find "%LOCALAPPDATA%\pip" -type f -mtime +360 -delete
- C:\cygwin\bin\find "%LOCALAPPDATA%\pip" -type f -size +10M -delete
- C:\cygwin\bin\find "%LOCALAPPDATA%\pip" -empty -delete
# Show size of cache
- C:\cygwin\bin\du -hs "%LOCALAPPDATA%\pip\Cache"
on_finish:
- ps: 'if (Test-Path ".\junit-results.xml") { (new-object net.webclient).UploadFile("https://ci.appveyor.com/api/testresults/junit/$($env:APPVEYOR_JOB_ID)", (Resolve-Path .\junit-results.xml)) }'