Files
termux-packages/packages/python-numpy/build.sh
2022-09-21 08:51:41 +00:00

92 lines
2.7 KiB
Bash

TERMUX_PKG_HOMEPAGE=https://numpy.org/
TERMUX_PKG_DESCRIPTION="The fundamental package for scientific computing with Python"
TERMUX_PKG_LICENSE="BSD 3-Clause"
TERMUX_PKG_MAINTAINER="@termux"
TERMUX_PKG_VERSION="1.23.3"
TERMUX_PKG_REVISION=2
TERMUX_PKG_SRCURL=https://github.com/numpy/numpy.git
TERMUX_PKG_DEPENDS="libc++, libopenblas, python"
TERMUX_PKG_BUILD_IN_SRC=true
TERMUX_PKG_AUTO_UPDATE=true
TERMUX_PKG_RM_AFTER_INSTALL="
bin/
"
termux_step_pre_configure() {
if $TERMUX_ON_DEVICE_BUILD; then
termux_error_exit "Package '$TERMUX_PKG_NAME' is not available for on-device builds."
fi
_PYTHON_VERSION=$(. $TERMUX_SCRIPTDIR/packages/python/build.sh; echo $_MAJOR_VERSION)
}
termux_step_configure() {
termux_setup_python_crossenv
pushd $TERMUX_PYTHON_CROSSENV_SRCDIR
_CROSSENV_PREFIX=$TERMUX_PKG_BUILDDIR/python-crossenv-prefix
python${_PYTHON_VERSION} -m crossenv \
$TERMUX_PREFIX/bin/python${_PYTHON_VERSION} \
${_CROSSENV_PREFIX}
popd
. ${_CROSSENV_PREFIX}/bin/activate
LDFLAGS+=" -lpython${_PYTHON_VERSION}"
}
termux_step_make() {
build-pip install pybind11 Cython pythran wheel
DEVICE_STIE=$TERMUX_PREFIX/lib/python${_PYTHON_VERSION}/site-packages
MATHLIB="m" python setup.py install --force
}
termux_step_make_install() {
export PYTHONPATH="$DEVICE_STIE"
MATHLIB="m" python setup.py install --force --prefix $TERMUX_PREFIX
pushd $DEVICE_STIE
_NUMPY_EGGDIR=
for f in numpy-${TERMUX_PKG_VERSION}-py${_PYTHON_VERSION}-linux-*.egg; do
if [ -d "$f" ]; then
_NUMPY_EGGDIR="$f"
break
fi
done
test -n "${_NUMPY_EGGDIR}"
# XXX: Fix the EXT_SUFFIX. More investigation is needed to find the underlying cause.
pushd "${_NUMPY_EGGDIR}"
local old_suffix=".cpython-310-$TERMUX_HOST_PLATFORM.so"
local new_suffix=".cpython-310.so"
find . \
-name '*'"$old_suffix" \
-exec sh -c '_f="{}"; mv -- "$_f" "${_f%'"$old_suffix"'}'"$new_suffix"'"' \;
popd
popd
}
termux_step_post_make_install() {
# Delete the easy-install related files, since we use postinst/prerm to handle it.
pushd $TERMUX_PREFIX
rm -rf lib/python${_PYTHON_VERSION}/site-packages/__pycache__
rm -rf lib/python${_PYTHON_VERSION}/site-packages/easy-install.pth
rm -rf lib/python${_PYTHON_VERSION}/site-packages/site.py
popd
}
termux_step_create_debscripts() {
cat <<- EOF > ./postinst
#!$TERMUX_PREFIX/bin/sh
echo "Installing numpy..."
echo "./${_NUMPY_EGGDIR}" >> $TERMUX_PREFIX/lib/python${_PYTHON_VERSION}/site-packages/easy-install.pth
EOF
cat <<- EOF > ./prerm
#!$TERMUX_PREFIX/bin/sh
echo "Removing numpy..."
find $TERMUX_PREFIX/lib/python${_PYTHON_VERSION}/site-packages/$_NUMPY_EGGDIR | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf
sed -i "/\.\/${_NUMPY_EGGDIR//./\\.}/d" $TERMUX_PREFIX/lib/python${_PYTHON_VERSION}/site-packages/easy-install.pth
EOF
}