|
|
|
termux_step_handle_buildarch() {
|
|
|
|
[ "$TERMUX_ON_DEVICE_BUILD" = "true" ] && return
|
|
|
|
|
|
|
|
# If $TERMUX_PREFIX already exists, it may have been built for a different arch
|
|
|
|
local TERMUX_ARCH_FILE=/data/TERMUX_ARCH
|
|
|
|
if [ -f "${TERMUX_ARCH_FILE}" ]; then
|
|
|
|
local TERMUX_PREVIOUS_ARCH
|
|
|
|
TERMUX_PREVIOUS_ARCH=$(cat $TERMUX_ARCH_FILE)
|
|
|
|
if [ "$TERMUX_PREVIOUS_ARCH" != "$TERMUX_ARCH" ]; then
|
|
|
|
local TERMUX_DATA_BACKUPDIRS=$TERMUX_TOPDIR/_databackups
|
|
|
|
mkdir -p "$TERMUX_DATA_BACKUPDIRS"
|
|
|
|
local TERMUX_DATA_PREVIOUS_BACKUPDIR=$TERMUX_DATA_BACKUPDIRS/$TERMUX_PREVIOUS_ARCH
|
|
|
|
local TERMUX_DATA_CURRENT_BACKUPDIR=$TERMUX_DATA_BACKUPDIRS/$TERMUX_ARCH
|
|
|
|
# Save current /data (removing old backup if any)
|
|
|
|
if test -e "$TERMUX_DATA_PREVIOUS_BACKUPDIR"; then
|
|
|
|
termux_error_exit "Directory already exists"
|
|
|
|
fi
|
|
|
|
if [ -d /data/data ]; then
|
|
|
|
mv /data/data "$TERMUX_DATA_PREVIOUS_BACKUPDIR"
|
|
|
|
fi
|
|
|
|
# Restore new one (if any)
|
|
|
|
if [ -d "$TERMUX_DATA_CURRENT_BACKUPDIR" ]; then
|
|
|
|
mv "$TERMUX_DATA_CURRENT_BACKUPDIR" /data/data
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Keep track of current arch we are building for.
|
|
|
|
echo "$TERMUX_ARCH" > $TERMUX_ARCH_FILE
|
|
|
|
}
|