termux_step_patch_package: add support for on device patches

Name a patch *.patch.ondevice for it to only be applied when building
on device.

This can be useful if for example a tool for building documentation is
missing on device, or if a tool needed during build (but not runtime)
uses something that triggers selinux, fdsan or some other android
security thing.
This commit is contained in:
Henrik Grimler 2021-09-01 11:05:30 +02:00
parent 3dbd626d41
commit 32c67fa030

View File

@ -2,13 +2,22 @@ termux_step_patch_package() {
[ "$TERMUX_PKG_METAPACKAGE" = "true" ] && return [ "$TERMUX_PKG_METAPACKAGE" = "true" ] && return
cd "$TERMUX_PKG_SRCDIR" cd "$TERMUX_PKG_SRCDIR"
# Suffix patch with ".patch32" or ".patch64" to only apply for
# these bitnesses
local PATCHES=$(find $TERMUX_PKG_BUILDER_DIR -mindepth 1 -maxdepth 1 \
-name \*.patch -o -name \*.patch$TERMUX_ARCH_BITS)
local DEBUG_PATCHES="" local DEBUG_PATCHES=""
if [ "$TERMUX_DEBUG_BUILD" = "true" ]; then if [ "$TERMUX_DEBUG_BUILD" = "true" ]; then
DEBUG_PATCHES=$(find $TERMUX_PKG_BUILDER_DIR -mindepth 1 -maxdepth 1 -name \*.patch.debug) DEBUG_PATCHES=$(find $TERMUX_PKG_BUILDER_DIR -mindepth 1 -maxdepth 1 -name \*.patch.debug)
fi fi
# Suffix patch with ".patch32" or ".patch64" to only apply for these bitnesses: local ON_DEVICE_PATCHES=""
# .patch.ondevice patches should only be applied when building
# on device
if [ "$TERMUX_ON_DEVICE_BUILD" = "true" ]; then
ON_DEVICE_PATCHES=$(find $TERMUX_PKG_BUILDER_DIR -mindepth 1 -maxdepth 1 -name \*.patch.ondevice)
fi
shopt -s nullglob shopt -s nullglob
for patch in $TERMUX_PKG_BUILDER_DIR/*.patch{$TERMUX_ARCH_BITS,} $DEBUG_PATCHES; do for patch in $PATCHES $DEBUG_PATCHES $ON_DEVICE_PATCHES; do
echo "Applying patch: $(basename $patch)" echo "Applying patch: $(basename $patch)"
test -f "$patch" && sed \ test -f "$patch" && sed \
-e "s%\@TERMUX_APP_PACKAGE\@%${TERMUX_APP_PACKAGE}%g" \ -e "s%\@TERMUX_APP_PACKAGE\@%${TERMUX_APP_PACKAGE}%g" \