#!/sbin/sh
exec > /tmp/postmarketos/pmos.log 2>&1
set -ex

export CHROOT='/tmp/postmarketos/chroot'

# Extract chroot (using premade list instead of wildcard for better compability)
# shellcheck disable=SC2046
unzip -o "$ZIP" $(cat /tmp/postmarketos/chroot_contents) -d /tmp/postmarketos

# shellcheck source=/dev/null
. "$CHROOT"/install_options
if [ "$FDE" = 'true' ]; then
	# Install password setting script
	{
		echo '#!/sbin/sh'
		echo "chroot $CHROOT /bin/pmos_setpw"
	} > /sbin/pmos_setpw
	chmod 755 /sbin/pmos_setpw
fi

# Mount the logfile and pmos.zip so we can access it inside the chroot
for file in "pmos.log" "pmos.zip"; do
	{ umount "$CHROOT"/"$file" ; rm "$CHROOT"/"$file" ; } || :
	touch "$CHROOT"/"$file"
done
mount --bind /tmp/postmarketos/pmos.log "$CHROOT"/pmos.log
mount --bind "$ZIP" "$CHROOT"/pmos.zip

fstab_recovery="recovery.fstab"
# TWRP can use twrp.fstab instead of recovery.fstab (device specific)
# This check exists to support both formats.
if [ ! -e "/etc/"$fstab_recovery ]; then
	fstab_recovery="twrp.fstab"
fi

# Create copy of fstab file provided by the recovery
if ! cp /etc/$fstab_recovery "$CHROOT"/$fstab_recovery; then
	echo "Error copying $fstab_recovery , exiting..."
	exit 1
fi

# Mount necessary filesystems for the chroot
for mountpoint in "/dev" "/proc" "/sys"; do
	mkdir -p "$CHROOT""$mountpoint"
	mount --bind "$mountpoint" "$CHROOT""$mountpoint"
done

# Copy Mediatek /emmc@partitionname symlinks to the chroot
cp -d /emmc@* "$CHROOT" || true

# Set permissions
chmod 755 "$CHROOT"/bin/*
chmod 755 "$CHROOT"/lib/*

# Create busybox symlinks
chroot "$CHROOT" /bin/busybox --install /bin

# Umount install partition (pmaports#1654: outside of chroot)
INSTALL_PART="$(chroot "$CHROOT" /bin/pmos_install_part)"
if [ -n "$INSTALL_PART" ]; then
	umount "$INSTALL_PART"
fi

# Start the installation script
chroot "$CHROOT" /bin/pmos_install
