Skip to content

Commit b283190

Browse files
committed
Add Linux AArch64 wheel build support
1 parent 02c0697 commit b283190

File tree

3 files changed

+77
-1
lines changed

3 files changed

+77
-1
lines changed

.circleci/config.yml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,44 @@ jobs:
111111
command: |
112112
twine upload --skip-existing -u $PYPI_USER -p $PYPI_PASSWORD dist/* wheelhouse/*
113113
114+
manylinux2014-aarch64:
115+
machine:
116+
image: ubuntu-2004:202101-01
117+
resource_class: arm.medium
118+
steps:
119+
- checkout
120+
- python/load-cache:
121+
key: manylinuxdepsv6-{{ .Branch }}.{{ arch }}
122+
dependency-file: requirements_dev.txt
123+
- run:
124+
name: Git LFS
125+
command: |
126+
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
127+
sudo apt-get install git-lfs
128+
git lfs install
129+
git lfs pull
130+
- run:
131+
name: Deps
132+
command: |
133+
sudo apt-get install python3-pip
134+
pip3 install -U pip
135+
pip3 install twine
136+
which twine
137+
- python/save-cache:
138+
key: manylinuxdepsv6-{{ .Branch }}.{{ arch }}
139+
dependency-file: requirements_dev.txt
140+
- run:
141+
name: Build Wheels
142+
command: |
143+
if [[ -z "${CIRCLE_PULL_REQUEST}" ]]; then
144+
docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" ;
145+
fi
146+
./ci/travis/build-manylinux.sh
147+
- run:
148+
name: Upload Wheels
149+
command: |
150+
twine upload --skip-existing -u $PYPI_USER -p $PYPI_PASSWORD dist/* wheelhouse/*
151+
114152
workflows:
115153
version: 2.1
116154
main:
@@ -132,6 +170,13 @@ workflows:
132170
only: /.*/
133171
branches:
134172
ignore: /.*/
173+
- manylinux2014-aarch64:
174+
context: Docker
175+
#filters:
176+
# tags:
177+
# only: /.*/
178+
# branches:
179+
# ignore: /.*/
135180
- osx:
136181
matrix:
137182
parameters:
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
FROM quay.io/pypa/manylinux2014_aarch64
2+
3+
ENV OPENSSL openssl-1.1.1g
4+
ENV SYSTEM_LIBSSH2 1
5+
ENV LIBSSH2_VERSION 1.9.0
6+
7+
RUN yum install zlib-devel -y
8+
9+
ADD libssh2-${LIBSSH2_VERSION}.tar.gz libssh2-${LIBSSH2_VERSION}.tar.gz
10+
ADD https://www.openssl.org/source/${OPENSSL}.tar.gz ${OPENSSL}.tar.gz
11+
12+
RUN tar -xzf ${OPENSSL}.tar.gz
13+
# Openssl
14+
RUN cd ${OPENSSL} && \
15+
./config --prefix=/usr --openssldir=/usr/openssl threads shared && \
16+
make -j4 && make install
17+
18+
# Libssh2
19+
RUN mkdir -p build_libssh2 && cd build_libssh2 && \
20+
cmake ../libssh2-${LIBSSH2_VERSION}.tar.gz/libssh2-libssh2-${LIBSSH2_VERSION} \
21+
-DBUILD_SHARED_LIBS=ON -DENABLE_ZLIB_COMPRESSION=ON \
22+
-DENABLE_CRYPT_NONE=ON -DENABLE_MAC_NONE=ON -DCMAKE_INSTALL_PREFIX=/usr && \
23+
cmake --build . --config Release --target install
24+
25+
RUN rm -rf ${OPENSSL}* build_libssh2 libssh2.tar.gz
26+
27+
VOLUME /var/cache

ci/travis/build-manylinux.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,11 @@ rm -rf build ssh2/libssh2.*
66
python ci/appveyor/fix_version.py .
77

88
docker pull $docker_tag || echo
9-
docker build --cache-from $docker_tag ci/docker/manylinux -t $docker_tag
9+
if [[ `uname -m` == "aarch64" ]]; then
10+
docker build --cache-from $docker_tag ci/docker/manylinux -t $docker_tag -f ci/docker/manylinux/Dockerfile.aarch64
11+
else
12+
docker build --cache-from $docker_tag ci/docker/manylinux -t $docker_tag
13+
fi
1014
if [[ "$TRAVIS_PULL_REQUEST" == "false" ]]; then docker push $docker_tag; fi
1115
docker run -e TRAVIS_TAG="$TRAVIS_TAG" --rm -v `pwd`:/io $docker_tag /io/ci/travis/build-wheels.sh
1216
ls wheelhouse/

0 commit comments

Comments
 (0)