4747#
4848
4949set -x # Print every command and variable
50- set -e # Exit script on any command failure
51-
52- # Arguments
53- WHAT=${1:- inplace}
50+ set -e # Fail fast
5451
5552# Variables
53+ ARCH=` uname -m`
54+ BUILD_STATIC=${BUILD_STATIC:- ' ' }
55+ BUILD_TYPE=${BUILD_TYPE:- Debug}
5656PYTHON=${PYTHON:- python3}
57- PYTHON_VERSION=$( $PYTHON -c " import platform; print(f'{platform.python_implementation()}-{platform.python_version()}')" )
58- PREFIX=" ${PREFIX:- $(pwd)/ ci/ $PYTHON_VERSION } "
57+
58+ PYTHON_TAG=$( $PYTHON build_tag.py)
59+ PREFIX=" ${PREFIX:- $(pwd)/ ci/ $PYTHON_TAG } "
5960export LDFLAGS=" -Wl,-rpath,$PREFIX /lib"
6061
6162# Linux or macOS
7475$PYTHON -m venv $PREFIX
7576cd ci
7677
78+ # Install zlib
79+ # XXX Build libgit2 with USE_BUNDLED_ZLIB instead?
80+ if [ -n " $ZLIB_VERSION " ]; then
81+ FILENAME=zlib-$ZLIB_VERSION
82+ wget https://www.zlib.net/$FILENAME .tar.gz -N
83+ tar xf $FILENAME .tar.gz
84+ cd $FILENAME
85+ ./configure --prefix=$PREFIX $( [ $BUILD_STATIC ] && echo " --static" || echo " " )
86+ make
87+ make install
88+ cd ..
89+ fi
90+
7791# Install libssh2
7892if [ -n " $LIBSSH2_VERSION " ]; then
7993 FILENAME=libssh2-$LIBSSH2_VERSION
8094 wget https://www.libssh2.org/download/$FILENAME .tar.gz -N
8195 tar xf $FILENAME .tar.gz
8296 cd $FILENAME
83- ./configure --prefix=$PREFIX --disable-static
84- make
85- make install
97+ cmake . \
98+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
99+ -DBUILD_EXAMPLES=OFF \
100+ -DBUILD_TESTING=OFF \
101+ -DBUILD_SHARED_LIBS=$( [ $BUILD_STATIC ] && echo " OFF" || echo " ON" )
102+ cmake --build . --target install
86103 cd ..
87- $LDD $PREFIX /lib/libssh2.$SOEXT
88104 LIBSSH2_PREFIX=$PREFIX
89105fi
90106
@@ -94,7 +110,11 @@ if [ -n "$LIBGIT2_VERSION" ]; then
94110 wget https://github.com/libgit2/libgit2/releases/download/v$LIBGIT2_VERSION /$FILENAME .tar.gz -N
95111 tar xf $FILENAME .tar.gz
96112 cd $FILENAME
97- CMAKE_PREFIX_PATH=$OPENSSL_PREFIX :$LIBSSH2_PREFIX cmake . -DBUILD_CLAR=OFF -DCMAKE_INSTALL_PREFIX=$PREFIX
113+ CMAKE_PREFIX_PATH=$OPENSSL_PREFIX :$LIBSSH2_PREFIX cmake . \
114+ -DCMAKE_INSTALL_PREFIX=$PREFIX \
115+ -DBUILD_CLAR=OFF \
116+ -DBUILD_SHARED_LIBS=$( [ $BUILD_STATIC ] && echo " OFF" || echo " ON" ) \
117+ -DCMAKE_BUILD_TYPE=$BUILD_TYPE
98118 cmake --build . --target install
99119 cd ..
100120 $LDD $PREFIX /lib/libgit2.$SOEXT
104124# Build pygit2
105125cd ..
106126$PREFIX /bin/pip install -U pip
107- if [ $WHAT = " wheel" ]; then
127+ if [ " $1 " = " wheel" ]; then
128+ shift
108129 $PREFIX /bin/pip install wheel
109130 $PREFIX /bin/python setup.py bdist_wheel
131+ WHEELDIR=dist
110132else
111133 # Install Python requirements & build inplace
112134 $PREFIX /bin/python setup.py egg_info
113135 $PREFIX /bin/pip install -r pygit2.egg-info/requires.txt
114136 $PREFIX /bin/python setup.py build_ext --inplace
115137fi
116138
139+ # Bundle libraries
140+ if [ " $1 " = " bundle" ]; then
141+ shift
142+ $PREFIX /bin/pip install auditwheel
143+ $PREFIX /bin/auditwheel repair dist/pygit2* -$PYTHON_TAG -* _$ARCH .whl
144+ $PREFIX /bin/auditwheel show wheelhouse/pygit2* -$PYTHON_TAG -* _$ARCH .whl
145+ WHEELDIR=wheelhouse
146+ fi
147+
117148# Tests
118- if [ $WHAT = " test" ]; then
149+ if [ " $1 " = " test" ]; then
150+ if [ -n " $WHEELDIR " ]; then
151+ $PREFIX /bin/pip install $WHEELDIR /pygit2* -$PYTHON_TAG -* _$ARCH .whl
152+ fi
119153 $PREFIX /bin/pip install -r requirements-test.txt
120154 $PREFIX /bin/pytest --cov=pygit2
121155fi
0 commit comments