Skip to content

Commit e5be6a2

Browse files
committed
Linux wheels build OpenSSL
1 parent fcaec81 commit e5be6a2

File tree

3 files changed

+48
-34
lines changed

3 files changed

+48
-34
lines changed

.github/workflows/wheels.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
run: python -m cibuildwheel --output-dir wheelhouse
3333
env:
3434
CIBW_BEFORE_ALL: sh build.sh
35-
CIBW_ENVIRONMENT: LIBGIT2_VERSION=1.5.0 LIBSSH2_VERSION=1.10.0 LIBGIT2=/project/ci
35+
CIBW_ENVIRONMENT: LIBGIT2_VERSION=1.5.0 LIBSSH2_VERSION=1.10.0 OPENSSL_VERSION=3.0.7 LIBGIT2=/project/ci
3636
CIBW_ENVIRONMENT_MACOS: LIBGIT2_VERSION=1.5.0 LIBSSH2_VERSION=1.10.0 DYLD_LIBRARY_PATH=/usr/local/lib OPENSSL_VERSION=3.0.2
3737
CIBW_SKIP: "*-musllinux*"
3838
CIBW_MANYLINUX_AARCH64_IMAGE: "manylinux_2_24"

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
.PHONY: build html
22

33
build:
4-
LIBSSH2_VERSION=1.10.0 LIBGIT2_VERSION=1.5.0 sh build.sh
4+
OPENSSL_VERSION=3.0.7 LIBSSH2_VERSION=1.10.0 LIBGIT2_VERSION=1.5.0 sh build.sh
55

66
html: build
77
make -C docs html

build.sh

+46-32
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,25 @@ PREFIX="${PREFIX:-$(pwd)/ci/$PYTHON_TAG}"
6565
export LDFLAGS="-Wl,-rpath,$PREFIX/lib"
6666

6767
if [ "$CIBUILDWHEEL" = "1" ]; then
68-
rm -rf ci
69-
mkdir ci || true
70-
cd ci
7168
if [ -f /usr/bin/apt-get ]; then
7269
apt-get update
73-
apt-get install libssl-dev wget -y
70+
apt-get install wget -y
71+
if [ -z "$OPENSSL_VERSION" ]; then
72+
apt-get install libssl-dev -y
73+
fi
7474
elif [ -f /usr/bin/yum ]; then
75-
yum install wget openssl-devel zlib-devel -y
75+
yum install wget zlib-devel -y
76+
if [ -z "$OPENSSL_VERSION" ]; then
77+
yum install openssl-devel -y
78+
fi
7679
fi
80+
rm -rf ci
81+
mkdir ci || true
82+
cd ci
7783
else
7884
# Create a virtual environment
7985
$PYTHON -m venv $PREFIX
86+
cd ci
8087
fi
8188

8289
# Install zlib
@@ -94,40 +101,45 @@ fi
94101

95102
# Install openssl
96103
if [ -n "$OPENSSL_VERSION" ]; then
97-
if [ "$CIBUILDWHEEL" != "1" ] || [ "$KERNEL" != "Darwin" ]; then
98-
echo "OPENSSL_VERSION should only be set when building"
99-
echo "macOS universal2 wheels on GitHub!"
100-
echo "Please unset and try again"
101-
exit 1
102-
fi
103104
FILENAME=openssl-$OPENSSL_VERSION
104105
wget https://www.openssl.org/source/$FILENAME.tar.gz -N --no-check-certificate
105106

106-
tar xf $FILENAME.tar.gz
107-
mv $FILENAME openssl-x86
107+
if [ "$KERNEL" = "Darwin" ]; then
108+
tar xf $FILENAME.tar.gz
109+
mv $FILENAME openssl-x86
108110

109-
tar xf $FILENAME.tar.gz
110-
mv $FILENAME openssl-arm
111+
tar xf $FILENAME.tar.gz
112+
mv $FILENAME openssl-arm
111113

112-
cd openssl-x86
113-
./Configure darwin64-x86_64-cc shared
114-
make
115-
cd ../openssl-arm
116-
./Configure enable-rc5 zlib darwin64-arm64-cc no-asm
117-
make
118-
cd ..
114+
cd openssl-x86
115+
./Configure darwin64-x86_64-cc shared
116+
make
117+
cd ../openssl-arm
118+
./Configure enable-rc5 zlib darwin64-arm64-cc no-asm
119+
make
120+
cd ..
119121

120-
mkdir openssl-universal
122+
mkdir openssl-universal
121123

122-
LIBSSL=$(basename openssl-x86/libssl.*.dylib)
123-
lipo -create openssl-x86/libssl.*.dylib openssl-arm/libssl.*.dylib -output openssl-universal/$LIBSSL
124-
LIBCRYPTO=$(basename openssl-x86/libcrypto.*.dylib)
125-
lipo -create openssl-x86/libcrypto.*.dylib openssl-arm/libcrypto.*.dylib -output openssl-universal/$LIBCRYPTO
126-
cd openssl-universal
127-
install_name_tool -id "@rpath/$LIBSSL" $LIBSSL
128-
install_name_tool -id "@rpath/$LIBCRYPTO" $LIBCRYPTO
129-
OPENSSL_PREFIX=$(pwd)
130-
cd ..
124+
LIBSSL=$(basename openssl-x86/libssl.*.dylib)
125+
lipo -create openssl-x86/libssl.*.dylib openssl-arm/libssl.*.dylib -output openssl-universal/$LIBSSL
126+
LIBCRYPTO=$(basename openssl-x86/libcrypto.*.dylib)
127+
lipo -create openssl-x86/libcrypto.*.dylib openssl-arm/libcrypto.*.dylib -output openssl-universal/$LIBCRYPTO
128+
cd openssl-universal
129+
install_name_tool -id "@rpath/$LIBSSL" $LIBSSL
130+
install_name_tool -id "@rpath/$LIBCRYPTO" $LIBCRYPTO
131+
OPENSSL_PREFIX=$(pwd)
132+
cd ..
133+
else
134+
# Linux
135+
tar xf $FILENAME.tar.gz
136+
cd $FILENAME
137+
./Configure shared --prefix=$PREFIX --libdir=$PREFIX/lib
138+
make
139+
make install
140+
OPENSSL_PREFIX=$(pwd)
141+
cd ..
142+
fi
131143
fi
132144

133145
# Install libssh2
@@ -178,6 +190,7 @@ if [ -n "$LIBGIT2_VERSION" ]; then
178190
-DOPENSSL_INCLUDE_DIR="../openssl-x86/include" \
179191
-DUSE_SSH=$USE_SSH
180192
else
193+
export CFLAGS=-I$PREFIX/include
181194
CMAKE_PREFIX_PATH=$OPENSSL_PREFIX:$LIBSSH2_PREFIX cmake . \
182195
-DBUILD_SHARED_LIBS=ON \
183196
-DBUILD_TESTS=OFF \
@@ -204,6 +217,7 @@ if [ "$CIBUILDWHEEL" = "1" ]; then
204217
fi
205218

206219
# Build pygit2
220+
cd ..
207221
$PREFIX/bin/pip install -U pip wheel
208222
if [ "$1" = "wheel" ]; then
209223
shift

0 commit comments

Comments
 (0)