Skip to content

Commit bcc106c

Browse files
odidevpkittenis
andauthored
Add Linux AArch64 wheel build support (#154)
Co-authored-by: Panos <[email protected]>
1 parent 60e03ec commit bcc106c

File tree

3 files changed

+79
-1
lines changed

3 files changed

+79
-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: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
#!/bin/bash -xe
22

33
docker_tag="parallelssh/ssh2-manylinux"
4+
docker_file="ci/docker/manylinux/Dockerfile"
45

56
rm -rf build ssh2/libssh2.*
67
python ci/appveyor/fix_version.py .
78

9+
if [[ `uname -m` == "aarch64" ]]; then
10+
docker_tag=${docker_tag}-aarch64
11+
docker_file=${docker_file}.aarch64
12+
fi
13+
814
docker pull $docker_tag || echo
9-
docker build --cache-from $docker_tag ci/docker/manylinux -t $docker_tag
15+
docker build --cache-from $docker_tag ci/docker/manylinux -t $docker_tag -f ${docker_file}
1016
if [[ "$TRAVIS_PULL_REQUEST" == "false" ]]; then docker push $docker_tag; fi
1117
docker run -e TRAVIS_TAG="$TRAVIS_TAG" --rm -v `pwd`:/io $docker_tag /io/ci/travis/build-wheels.sh
1218
ls wheelhouse/

0 commit comments

Comments
 (0)