scripts: add termux_setup_python_pip function
It replaces termux_setup_python_crossenv and can be used when compiling python packages. Packages should specify their python dependencies in TERMUX_PKG_PYTHON_TARGET_DEPS, TERMUX_PKG_PYTHON_BUILD_DEPS, and TERMUX_PKG_PYTHON_COMMON_DEPS.
This commit is contained in:
parent
0680380273
commit
d97b8c353b
|
@ -104,9 +104,9 @@ source "$TERMUX_SCRIPTDIR/scripts/build/setup/termux_setup_golang.sh"
|
|||
# shellcheck source=scripts/build/setup/termux_setup_no_integrated_as.sh
|
||||
source "$TERMUX_SCRIPTDIR/scripts/build/setup/termux_setup_no_integrated_as.sh"
|
||||
|
||||
# Utility function for python packages to setup a python crossenv.
|
||||
# shellcheck source=scripts/build/setup/termux_setup_python_crossenv.sh
|
||||
source "$TERMUX_SCRIPTDIR/scripts/build/setup/termux_setup_python_crossenv.sh"
|
||||
# Utility function for python packages to setup a python.
|
||||
# shellcheck source=scripts/build/setup/termux_setup_python_pip.sh
|
||||
source "$TERMUX_SCRIPTDIR/scripts/build/setup/termux_setup_python_pip.sh"
|
||||
|
||||
# Utility function for rust-using packages to setup a rust toolchain.
|
||||
# shellcheck source=scripts/build/setup/termux_setup_rust.sh
|
||||
|
@ -164,6 +164,10 @@ source "$TERMUX_SCRIPTDIR/scripts/build/termux_get_repo_files.sh"
|
|||
# shellcheck source=scripts/build/termux_step_get_dependencies.sh
|
||||
source "$TERMUX_SCRIPTDIR/scripts/build/termux_step_get_dependencies.sh"
|
||||
|
||||
# Download python dependency modules for compilation.
|
||||
# shellcheck source=scripts/build/termux_step_get_dependencies_python.sh
|
||||
source "$TERMUX_SCRIPTDIR/scripts/build/termux_step_get_dependencies_python.sh"
|
||||
|
||||
# Handle config scripts that needs to be run during build. Not to be overridden by packages.
|
||||
# shellcheck source=scripts/build/termux_step_override_config_scripts.sh
|
||||
source "$TERMUX_SCRIPTDIR/scripts/build/termux_step_override_config_scripts.sh"
|
||||
|
@ -571,6 +575,7 @@ for ((i=0; i<${#PACKAGE_LIST[@]}; i++)); do
|
|||
termux_step_setup_toolchain
|
||||
|
||||
if [ "$TERMUX_CONTINUE_BUILD" == "false" ]; then
|
||||
termux_step_get_dependencies_python
|
||||
termux_step_patch_package
|
||||
termux_step_replace_guess_scripts
|
||||
cd "$TERMUX_PKG_SRCDIR"
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
termux_setup_python_crossenv() {
|
||||
local _CROSSENV_VERSION=1.3.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 [ "$TERMUX_ON_DEVICE_BUILD" = "false" ]; then
|
||||
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 \
|
||||
a217a67f9201801c087b582b28c0318e014a17ffa89d355854d646e1b1094b80
|
||||
|
||||
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
|
||||
fi
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
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
|
||||
return
|
||||
else
|
||||
local _CROSSENV_VERSION=1.3.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 \
|
||||
a217a67f9201801c087b582b28c0318e014a17ffa89d355854d646e1b1094b80
|
||||
|
||||
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
|
||||
pushd "$TERMUX_PYTHON_CROSSENV_SRCDIR"
|
||||
python${TERMUX_PYTHON_VERSION} -m crossenv \
|
||||
"$TERMUX_PREFIX/bin/python${TERMUX_PYTHON_VERSION}" \
|
||||
"${TERMUX_PYTHON_CROSSENV_PREFIX}"
|
||||
popd
|
||||
fi
|
||||
. "${TERMUX_PYTHON_CROSSENV_PREFIX}/bin/activate"
|
||||
fi
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
termux_step_get_dependencies_python() {
|
||||
if [ "$TERMUX_PKG_SETUP_PYTHON" = "true" ]; then
|
||||
# python pip setup
|
||||
termux_setup_python_pip
|
||||
|
||||
# installing python modules
|
||||
LDFLAGS+=" -lpython${TERMUX_PYTHON_VERSION}"
|
||||
if [ "$TERMUX_SKIP_DEPCHECK" = "false" ]; then
|
||||
local pip
|
||||
local pip_pkgs="$TERMUX_PKG_PYTHON_COMMON_DEPS, "
|
||||
if [ "$TERMUX_ON_DEVICE_BUILD" = "true" ]; then
|
||||
pip="pip3"
|
||||
pip_pkgs+="$TERMUX_PKG_PYTHON_TARGET_DEPS"
|
||||
else
|
||||
pip="build-pip"
|
||||
pip_pkgs+="$TERMUX_PKG_PYTHON_BUILD_DEPS"
|
||||
fi
|
||||
for i in ${pip_pkgs//, / } ; do
|
||||
local name_python_module=$(echo "$i" | sed "s/<=/ /; s/>=/ /; s/</ /; s/>/ /; s/'//g" | awk '{printf $1}')
|
||||
local name_python_module_termux=$(echo "$name_python_module" | grep 'python-' || echo "python-$name_python_module")
|
||||
[ ! "$TERMUX_QUIET_BUILD" = true ] && echo "Installing the dependency python module $i if necessary..."
|
||||
if $pip show "$name_python_module" &>/dev/null && ([ "$TERMUX_FORCE_BUILD_DEPENDENCIES" = "false" ] || termux_check_package_in_built_packages_list "$name_python_module_termux"); then
|
||||
[ ! "$TERMUX_QUIET_BUILD" = true ] && echo "Skipping the already installed dependency python module $i"
|
||||
continue
|
||||
fi
|
||||
bash -c "$pip install "$(test "${TERMUX_FORCE_BUILD_DEPENDENCIES}" = "true" && echo "-I" || true)" $i"
|
||||
[ "$TERMUX_FORCE_BUILD_DEPENDENCIES" = "true" ] && termux_add_package_to_built_packages_list "$name_python_module_termux"
|
||||
done
|
||||
fi
|
||||
|
||||
# adding and setting values to work properly with python modules
|
||||
export PYTHONPATH=$TERMUX_PREFIX/lib/python${TERMUX_PYTHON_VERSION}/site-packages
|
||||
export PYTHON_SITE_PKG=$TERMUX_PREFIX/lib/python${TERMUX_PYTHON_VERSION}/site-packages
|
||||
fi
|
||||
}
|
|
@ -3,6 +3,8 @@ termux_step_make_install() {
|
|||
|
||||
if test -f build.ninja; then
|
||||
ninja -w dupbuild=warn -j $TERMUX_MAKE_PROCESSES install
|
||||
elif test -f setup.py || test -f pyproject.toml || test -f setup.cfg; then
|
||||
pip install --no-deps . --prefix $TERMUX_PREFIX
|
||||
elif ls ./*.cabal &>/dev/null; then
|
||||
termux-ghc-setup copy
|
||||
if [ "${TERMUX_PKG_IS_HASKELL_LIB}" = true ]; then
|
||||
|
|
|
@ -126,6 +126,12 @@ termux_step_setup_variables() {
|
|||
TERMUX_PKG_NO_SHEBANG_FIX=false # if true, skip fixing shebang accordingly to TERMUX_PREFIX
|
||||
TERMUX_PKG_IS_HASKELL_LIB=true # by default assume haskell package is lib package as most of them will always be libs.
|
||||
TERMUX_PKG_ON_DEVICE_BUILD_NOT_SUPPORTED=false # if the package does not support compilation on a device, then this package should not be compiled on devices
|
||||
TERMUX_PKG_SETUP_PYTHON=false # setting python to compile a package
|
||||
TERMUX_PYTHON_VERSION=$(. $TERMUX_SCRIPTDIR/packages/python/build.sh; echo $_MAJOR_VERSION) # get the latest version of python
|
||||
TERMUX_PKG_PYTHON_TARGET_DEPS="" # python modules to be installed via pip3
|
||||
TERMUX_PKG_PYTHON_BUILD_DEPS="" # python modules to be installed via build-pip
|
||||
TERMUX_PKG_PYTHON_COMMON_DEPS="" # python modules to be installed via pip3 or build-pip
|
||||
TERMUX_PYTHON_CROSSENV_PREFIX=$TERMUX_TOPDIR/python-crossenv-prefix # python modules dependency location (only used in non-devices)
|
||||
|
||||
unset CFLAGS CPPFLAGS LDFLAGS CXXFLAGS
|
||||
}
|
||||
|
|
|
@ -15,6 +15,11 @@ termux_step_start_build() {
|
|||
exit 0
|
||||
fi
|
||||
|
||||
if [ -n "$TERMUX_PKG_PYTHON_COMMON_DEPS" ] || [[ "$TERMUX_ON_DEVICE_BUILD" = "false" && -n "$TERMUX_PKG_PYTHON_BUILD_DEPS" ]] || [[ "$TERMUX_ON_DEVICE_BUILD" = "true" && -n "$TERMUX_PKG_PYTHON_TARGET_DEPS" ]]; then
|
||||
# Enable python setting
|
||||
TERMUX_PKG_SETUP_PYTHON=true
|
||||
fi
|
||||
|
||||
TERMUX_PKG_FULLVERSION=$TERMUX_PKG_VERSION
|
||||
if [ "$TERMUX_PKG_REVISION" != "0" ] || [ "$TERMUX_PKG_FULLVERSION" != "${TERMUX_PKG_FULLVERSION/-/}" ]; then
|
||||
# "0" is the default revision, so only include it if the upstream versions contains "-" itself
|
||||
|
|
|
@ -50,8 +50,8 @@ mkdir -p "$TERMUX_PKG_TMPDIR"
|
|||
(. "$TERMUX_SCRIPTDIR"/scripts/build/setup/termux_setup_protobuf.sh
|
||||
termux_setup_protobuf
|
||||
)
|
||||
(. "$TERMUX_SCRIPTDIR"/scripts/build/setup/termux_setup_python_crossenv.sh
|
||||
termux_setup_python_crossenv
|
||||
(. "$TERMUX_SCRIPTDIR"/scripts/build/setup/termux_setup_python_pip.sh
|
||||
termux_setup_python_pip
|
||||
)
|
||||
# Offline rust is not supported yet.
|
||||
#(. "$TERMUX_SCRIPTDIR"/scripts/build/setup/termux_setup_rust.sh
|
||||
|
|
Loading…
Reference in New Issue