mirror of
https://github.com/termux/termux-packages.git
synced 2025-03-04 08:18:54 +00:00
72 lines
2.6 KiB
Bash
72 lines
2.6 KiB
Bash
termux_setup_python_pip() {
|
|
if [ "$TERMUX_ON_DEVICE_BUILD" = "true" ]; then
|
|
if [[ "$TERMUX_APP_PACKAGE_MANAGER" = "apt" && "$(dpkg-query -W -f '${db:Status-Status}\n' python-pip 2>/dev/null)" != "installed" ]] ||
|
|
[[ "$TERMUX_APP_PACKAGE_MANAGER" = "pacman" && ! "$(pacman -Q python-pip 2>/dev/null)" ]]; then
|
|
echo "Package 'python-pip' is not installed."
|
|
echo "You can install it with"
|
|
echo
|
|
echo " pkg install python-pip"
|
|
echo
|
|
echo " pacman -S python-pip"
|
|
echo
|
|
echo "Note that package 'python-pip' is known to be problematic for building on device."
|
|
exit 1
|
|
fi
|
|
|
|
# Setup a virtual environment and do not mess the system site-packages
|
|
local _VENV_DIR="${TERMUX_PKG_TMPDIR}/venv-dir"
|
|
|
|
mkdir -p "$_VENV_DIR"
|
|
python${TERMUX_PYTHON_VERSION} -m venv --system-site-packages "$_VENV_DIR"
|
|
. "$_VENV_DIR/bin/activate"
|
|
return
|
|
else
|
|
local _CROSSENV_VERSION=1.4.0
|
|
local _CROSSENV_TAR=crossenv-$_CROSSENV_VERSION.tar.gz
|
|
local _CROSSENV_FOLDER
|
|
|
|
if [ "${TERMUX_PACKAGES_OFFLINE-false}" = "true" ]; then
|
|
_CROSSENV_FOLDER=${TERMUX_SCRIPTDIR}/build-tools/crossenv-${_CROSSENV_VERSION}
|
|
else
|
|
_CROSSENV_FOLDER=${TERMUX_COMMON_CACHEDIR}/crossenv-${_CROSSENV_VERSION}
|
|
fi
|
|
export TERMUX_PYTHON_CROSSENV_SRCDIR=$_CROSSENV_FOLDER
|
|
|
|
if [ ! -d "$_CROSSENV_FOLDER" ]; then
|
|
termux_download \
|
|
https://github.com/benfogle/crossenv/archive/refs/tags/v$_CROSSENV_VERSION.tar.gz \
|
|
$TERMUX_PKG_TMPDIR/$_CROSSENV_TAR \
|
|
28da6260fafd85b05fa539793c45ef804c700a0bb71172fadef429796d49ac4e
|
|
|
|
rm -Rf "$TERMUX_PKG_TMPDIR/crossenv-$_CROSSENV_VERSION"
|
|
tar xf $TERMUX_PKG_TMPDIR/$_CROSSENV_TAR -C $TERMUX_PKG_TMPDIR
|
|
mv "$TERMUX_PKG_TMPDIR/crossenv-$_CROSSENV_VERSION" \
|
|
$_CROSSENV_FOLDER
|
|
shopt -s nullglob
|
|
local f
|
|
for f in "$TERMUX_SCRIPTDIR"/scripts/build/setup/python-crossenv-*.patch; do
|
|
echo "[${FUNCNAME[0]}]: Applying $(basename "$f")"
|
|
patch --silent -p1 -d "$_CROSSENV_FOLDER" < "$f"
|
|
done
|
|
shopt -u nullglob
|
|
fi
|
|
|
|
if [ ! -d "$TERMUX_PYTHON_CROSSENV_PREFIX" ]; then
|
|
cd "$TERMUX_PYTHON_CROSSENV_SRCDIR"
|
|
python${TERMUX_PYTHON_VERSION} -m crossenv \
|
|
"$TERMUX_PREFIX/bin/python${TERMUX_PYTHON_VERSION}" \
|
|
"${TERMUX_PYTHON_CROSSENV_PREFIX}"
|
|
fi
|
|
. "${TERMUX_PYTHON_CROSSENV_PREFIX}/bin/activate"
|
|
|
|
# Since 3.12, distutils is removed from python, but setuptools>=60 provides it
|
|
build-pip install 'setuptools==67.6.1' wheel
|
|
cross-pip install 'setuptools==67.6.1' wheel
|
|
if [ "${TERMUX_PYTHON_VERSION#*.}" -lt "12" ]; then
|
|
export SETUPTOOLS_USE_DISTUTILS=stdlib
|
|
fi
|
|
|
|
export PATH="${PATH}:${TERMUX_PYTHON_CROSSENV_PREFIX}/build/bin"
|
|
fi
|
|
}
|