#!/bin/sh

has_separate_boot() {
    [ "$(stat --printf %d /)" != "$(stat --printf %d /boot)" ]
}

# Reading the default file
if [ -e /etc/default/u-boot ]
then
	. /etc/default/u-boot
fi

# Reading config file fragments if they exist
for file in /usr/share/u-boot-menu/conf.d/*.conf /etc/u-boot-menu/conf.d/*.conf
do
	if [ -e "${file}" ]
	then
		. "${file}"
	fi
done

# Reading the os-release file
if [ -e /etc/os-release ]
then
	. /etc/os-release
elif [ -e /usr/lib/os-release ]
then
	. /usr/lib/os-release
fi


U_BOOT_UPDATE="${U_BOOT_UPDATE:-true}"
U_BOOT_SYNC_DTBS="${U_BOOT_SYNC_DTBS:-false}"

if [ "${U_BOOT_UPDATE}" != "true" ]
then
	echo "P: u-boot-update is disabled in /etc/default/u-boot."

	exit 0
fi

# Find boot directory as seen in u-boot, and path prefix while in linux
if has_separate_boot
then
	# / and /boot are on different filesystems
	_BOOT_DIRECTORY=""
	_BOOT_PATH="/boot"
	if [ "${U_BOOT_SYNC_DTBS}" = "true" ]
	then
		_FDT_DIR="/dtb-"
	fi
else
	# / and /boot are on the same filesystem
	_BOOT_DIRECTORY="/boot"
	_BOOT_PATH=""
	_FDT_DIR="/lib/firmware/"
fi

# Setting defaults if /etc/default/u-boot is missing

U_BOOT_ALTERNATIVES="${U_BOOT_ALTERNATIVES:-default recovery}"
U_BOOT_DEFAULT="${U_BOOT_DEFAULT:-l0}"
U_BOOT_PROMPT="${U_BOOT_PROMPT:-1}"
U_BOOT_ENTRIES="${U_BOOT_ENTRIES:-all}"
U_BOOT_TIMEOUT="${U_BOOT_TIMEOUT:-50}"
U_BOOT_MENU_LABEL="${U_BOOT_MENU_LABEL:-${PRETTY_NAME:-Debian GNU/Linux kernel}}"
U_BOOT_FDT_DIR="${U_BOOT_FDT_DIR:-${_FDT_DIR}}"
U_BOOT_FDT_OVERLAYS="${U_BOOT_FDT_OVERLAYS:-}"
U_BOOT_FDT_OVERLAYS_DIR="${U_BOOT_FDT_OVERLAYS_DIR:-/boot/dtbo}"
U_BOOT_INITRD="${U_BOOT_INITRD:-initrd.img}"

if [ -z "${U_BOOT_PARAMETERS}" ] && [ -f /etc/kernel/cmdline ]
then
	U_BOOT_PARAMETERS="$(cat /etc/kernel/cmdline | sed -e 's/root=[^[:space:]]*//' -e 's/^[[:space:]]*//')"
	if [ -z "${U_BOOT_ROOT}" ]
	then
		U_BOOT_ROOT="$(cat /etc/kernel/cmdline | sed -re 's/.*(root=[^[:space:]]*).*/\1/')"
	fi
fi
U_BOOT_PARAMETERS="${U_BOOT_PARAMETERS:-ro earlycon}"
