Skip to content

Commit c69b208

Browse files
committed
Add ARM64 jobs in Travis-CI
1 parent 0371125 commit c69b208

File tree

3 files changed

+112
-23
lines changed

3 files changed

+112
-23
lines changed

.travis.yml

Lines changed: 87 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ dist: xenial
33
cache: false
44
env:
55
global:
6-
- LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
76
- SEGFAULT_SIGNALS=all
87
- TWINE_USERNAME=ionel
98
matrix:
@@ -18,75 +17,140 @@ matrix:
1817
language: generic
1918
env:
2019
- TOXENV=py27-cover
21-
- env:
20+
- arch: amd64
21+
env:
22+
- TOXENV=py27-cover,codecov,extension-coveralls,coveralls
23+
python: '2.7'
24+
- arch: arm64
25+
env:
2226
- TOXENV=py27-cover,codecov,extension-coveralls,coveralls
2327
python: '2.7'
2428
- os: osx
2529
language: generic
2630
env:
2731
- TOXENV=py27-nocov
2832
- WHEEL_PATH=.tox/dist
29-
- env:
33+
- arch: amd64
34+
env:
3035
- TOXENV=py27-nocov
3136
- WHEEL_MANYLINUX1=cp27
3237
- WHEEL_PATH=wheelhouse
3338
python: '2.7'
34-
- env:
39+
- arch: arm64
40+
env:
41+
- TOXENV=py27-nocov
42+
- WHEEL_PATH=.tox/dist
43+
python: '2.7'
44+
- arch: amd64
45+
env:
46+
- TOXENV=py35-cover,codecov,extension-coveralls,coveralls
47+
python: '3.5'
48+
- arch: arm64
49+
env:
3550
- TOXENV=py35-cover,codecov,extension-coveralls,coveralls
3651
python: '3.5'
37-
- env:
52+
- arch: amd64
53+
env:
3854
- TOXENV=py35-nocov
3955
- WHEEL_MANYLINUX1=cp35
4056
- WHEEL_PATH=wheelhouse
4157
python: '3.5'
42-
- env:
58+
- arch: arm64
59+
env:
60+
- TOXENV=py35-nocov
61+
- WHEEL_PATH=.tox/dist
62+
python: '3.5'
63+
- arch: amd64
64+
env:
4365
- TOXENV=py36-cover,codecov,extension-coveralls,coveralls
4466
python: '3.6'
45-
- env:
67+
- arch: arm64
68+
env:
69+
- TOXENV=py36-cover,codecov,extension-coveralls,coveralls
70+
python: '3.6'
71+
- arch: amd64
72+
env:
4673
- TOXENV=py36-nocov
4774
- WHEEL_MANYLINUX1=cp36
4875
- WHEEL_PATH=wheelhouse
4976
python: '3.6'
77+
- arch: arm64
78+
env:
79+
- TOXENV=py36-nocov
80+
- WHEEL_PATH=.tox/dist
81+
python: '3.6'
5082
- os: osx
5183
language: generic
5284
env:
5385
- TOXENV=py37-cover
54-
- env:
86+
- arch: amd64
87+
env:
88+
- TOXENV=py37-cover,codecov,extension-coveralls,coveralls
89+
python: '3.7'
90+
- arch: arm64
91+
env:
5592
- TOXENV=py37-cover,codecov,extension-coveralls,coveralls
5693
python: '3.7'
5794
- os: osx
5895
language: generic
5996
env:
6097
- TOXENV=py37-nocov
6198
- WHEEL_PATH=.tox/dist
62-
- env:
99+
- arch: amd64
100+
env:
63101
- TOXENV=py37-nocov
64102
- WHEEL_MANYLINUX1=cp37
65103
- WHEEL_PATH=wheelhouse
66104
python: '3.7'
67-
- env:
105+
- arch: arm64
106+
env:
107+
- TOXENV=py37-nocov
108+
- WHEEL_PATH=.tox/dist
109+
python: '3.7'
110+
- arch: amd64
111+
env:
112+
- TOXENV=py38-cover,codecov,extension-coveralls,coveralls
113+
python: '3.8'
114+
- arch: arm64
115+
env:
68116
- TOXENV=py38-cover,codecov,extension-coveralls,coveralls
69117
python: '3.8'
70-
- env:
118+
- arch: amd64
119+
env:
71120
- TOXENV=py38-nocov
72121
- WHEEL_MANYLINUX1=cp38
73122
- WHEEL_PATH=wheelhouse
74123
python: '3.8'
75-
- env:
124+
- arch: arm64
125+
env:
126+
- TOXENV=py38-nocov
127+
- WHEEL_PATH=.tox/dist
128+
python: '3.8'
129+
- arch: amd64
130+
env:
76131
- TOXENV=pypy-cover,codecov,extension-coveralls,coveralls
77132
python: 'pypy'
78-
- env:
133+
- arch: amd64
134+
env:
79135
- TOXENV=pypy-nocov
80136
python: 'pypy'
81-
- env:
137+
- arch: amd64
138+
env:
82139
- TOXENV=pypy3-cover,codecov,extension-coveralls,coveralls
83140
- TOXPYTHON=pypy3
84141
python: 'pypy3'
85-
- env:
142+
- arch: amd64
143+
env:
86144
- TOXENV=pypy3-nocov
87145
- TOXPYTHON=pypy3
88146
python: 'pypy3'
89147
before_install:
148+
- |
149+
if [[ ${TRAVIS_CPU_ARCH} == "arm64" ]]; then
150+
export LD_PRELOAD=/lib/aarch64-linux-gnu/libSegFault.so
151+
else
152+
export LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
153+
fi
90154
- python --version
91155
- uname -a
92156
- lsb_release -a || true
@@ -114,12 +178,18 @@ script:
114178
tox -v
115179
fi
116180
if [[ -n ${WHEEL_PATH:-} ]]; then
181+
if [[ ${TRAVIS_CPU_ARCH} == "arm64" ]]; then
182+
sudo apt-get install patchelf
183+
python3 -mpip install --progress-bar=off auditwheel
184+
python3 -m auditwheel repair $WHEEL_PATH/*.whl -w $WHEEL_PATH/
185+
rm -rf $WHEEL_PATH/*linux_aarch64.whl
186+
fi
117187
twine upload --repository-url https://test.pypi.org/legacy/ --skip-existing $WHEEL_PATH/*.whl
118188
fi
119189
)
120190
after_failure:
121-
- more .tox/log/* | cat
122-
- more .tox/*/log/* | cat
191+
- travis_wait 15 more .tox/log/* | cat
192+
- travis_wait 15 more .tox/*/log/* | cat
123193
notifications:
124194
email:
125195
on_success: never

ci/bootstrap.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,11 @@ def main():
6969
for line in subprocess.check_output([sys.executable, '-m', 'tox', '--listenvs'], universal_newlines=True).splitlines()
7070
]
7171
tox_environments = [line for line in tox_environments if line.startswith('py')]
72+
architecture = ['amd64', 'arm64']
7273

7374
for name in os.listdir(join("ci", "templates")):
7475
with open(join(base_path, name), "w") as fh:
75-
fh.write(jinja.get_template(name).render(tox_environments=tox_environments))
76+
fh.write(jinja.get_template(name).render(tox_environments=tox_environments, architecture=architecture))
7677
print("Wrote {}".format(name))
7778
print("DONE.")
7879

ci/templates/.travis.yml

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ dist: xenial
33
cache: false
44
env:
55
global:
6-
- LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
76
- SEGFAULT_SIGNALS=all
87
- TWINE_USERNAME=ionel
98
matrix:
@@ -24,11 +23,16 @@ matrix:
2423
- WHEEL_PATH=.tox/dist
2524
{%- endif %}
2625
{%- endif %}{{ '' }}
27-
- env:
26+
{%- for arch in architecture %}{{ '' }}
27+
{%- if 'arm64' not in arch or 'pypy' not in env %}{{ '' }}
28+
- arch: {{ arch }}
29+
env:
2830
- TOXENV={{ env }}{% if 'cover' in env %},codecov,extension-coveralls,coveralls{% endif %}
29-
{%- if 'pypy' not in env and 'nocov' in env %}{{ '' }}
31+
{%- if 'pypy' not in env and 'nocov' in env and 'arm64' not in arch %}{{ '' }}
3032
- WHEEL_MANYLINUX1=cp{{ env.split('-')[0][2:] }}
3133
- WHEEL_PATH=wheelhouse
34+
{%- elif 'pypy' not in env and 'nocov' in env and 'arm64' in arch %}{{ '' }}
35+
- WHEEL_PATH=.tox/dist
3236
{%- endif %}
3337
{%- if env.startswith('pypy3') %}{{ '' }}
3438
- TOXPYTHON=pypy3
@@ -38,8 +42,16 @@ matrix:
3842
{%- else %}{{ '' }}
3943
python: '{{ '{0[2]}.{0[3]}'.format(env) }}'
4044
{%- endif %}
45+
{%- endif %}{{ '' }}
46+
{%- endfor %}{{ '' }}
4147
{%- endfor %}{{ '' }}
4248
before_install:
49+
- |
50+
if [[ ${TRAVIS_CPU_ARCH} == "arm64" ]]; then
51+
export LD_PRELOAD=/lib/aarch64-linux-gnu/libSegFault.so
52+
else
53+
export LD_PRELOAD=/lib/x86_64-linux-gnu/libSegFault.so
54+
fi
4355
- python --version
4456
- uname -a
4557
- lsb_release -a || true
@@ -67,12 +79,18 @@ script:
6779
tox -v
6880
fi
6981
if [[ -n ${WHEEL_PATH:-} ]]; then
82+
if [[ ${TRAVIS_CPU_ARCH} == "arm64" ]]; then
83+
sudo apt-get install patchelf
84+
python3 -mpip install --progress-bar=off auditwheel
85+
python3 -m auditwheel repair $WHEEL_PATH/*.whl -w $WHEEL_PATH/
86+
rm -rf $WHEEL_PATH/*linux_aarch64.whl
87+
fi
7088
twine upload --repository-url https://test.pypi.org/legacy/ --skip-existing $WHEEL_PATH/*.whl
7189
fi
7290
)
7391
after_failure:
74-
- more .tox/log/* | cat
75-
- more .tox/*/log/* | cat
92+
- travis_wait 15 more .tox/log/* | cat
93+
- travis_wait 15 more .tox/*/log/* | cat
7694
notifications:
7795
email:
7896
on_success: never

0 commit comments

Comments
 (0)