Skip to content

Commit

Permalink
Overlay management - reverting to previous logic that doesn't need ch…
Browse files Browse the repository at this point in the history
…anges at build time
  • Loading branch information
igorpecovnik committed Nov 13, 2024
1 parent 21138d9 commit d96e4b0
Showing 1 changed file with 44 additions and 38 deletions.
82 changes: 44 additions & 38 deletions tools/modules/system/manage_dtoverlays.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,44 +14,50 @@ function manage_dtoverlays () {
# check if user agree to enter this area
local changes="false"
local overlayconf="/boot/armbianEnv.txt"
local overlaydir="/boot/dtb/overlay";
[[ "$LINUXFAMILY" == "sunxi64" ]] && overlaydir="/boot/dtb/allwinner/overlay";
[[ "$LINUXFAMILY" == "meson64" ]] && overlaydir="/boot/dtb/amlogic/overlay";
[[ "$LINUXFAMILY" == "rockchip64" || "$LINUXFAMILY" == "rk3399" || "$LINUXFAMILY" == "rockchip-rk3588" || "$LINUXFAMILY" == "rk35xx" ]] && overlaydir="/boot/dtb/rockchip/overlay";

if [[ -z "${OVERLAY_DIR}" ]]; then
show_message <<< "Error: OVERLAY folder not found.\n\nThis feature requires Armbian v24.11.1 or newer!"
else
while true; do
local options=()
j=0
available_overlays=$(ls -1 ${OVERLAY_DIR}/*.dtbo | sed "s#^${OVERLAY_DIR}/##" | sed 's/.dtbo//g' | grep $BOOT_SOC | tr '\n' ' ')
for overlay in ${available_overlays}; do
local status="OFF"
grep '^fdt_overlays' ${overlayconf} | grep -qw ${overlay} && status=ON
options+=( "$overlay" "" "$status")
done
selection=$($DIALOG --title "Manage devicetree overlays" --cancel-button "Back" \
--ok-button "Save" --checklist "\nUse <space> to toggle functions and save them.\nExit when you are done.\n " \
0 0 0 "${options[@]}" 3>&1 1>&2 2>&3)
exit_status=$?
case $exit_status in
0)
changes="true"
newoverlays=$(echo $selection | sed 's/"//g')
sed -i "s/^fdt_overlays=.*/fdt_overlays=$newoverlays/" ${overlayconf}
if ! grep -q "^fdt_overlays" ${overlayconf}; then echo "fdt_overlays=$newoverlays" >> ${overlayconf}; fi
sync
;;
1)
if [[ "$changes" == "true" ]]; then
$DIALOG --title " Reboot required " --yes-button "Reboot" \
--no-button "Cancel" --yesno "A reboot is required to apply the changes. Shall we reboot now?" 7 34
if [[ $? = 0 ]]; then
reboot
fi
fi
break
;;
255)
;;
esac
[[ -f "${overlayconf}" ]] && source "${overlayconf}"
while true; do
local options=()
j=0
if [[ -n "${BOOT_SOC}" ]]; then
available_overlays=$(ls -1 ${overlaydir}/*.dtbo | sed "s#^${overlaydir}/##" | sed 's/.dtbo//g' | grep $BOOT_SOC | tr '\n' ' ')
else
available_overlays=$(ls -1 ${overlaydir}/*.dtbo | sed "s#^${overlaydir}/##" | sed 's/.dtbo//g' | tr '\n' ' ')
fi
for overlay in ${available_overlays}; do
local status="OFF"
grep '^fdt_overlays' ${overlayconf} | grep -qw ${overlay} && status=ON
options+=( "$overlay" "" "$status")
done
fi
selection=$($DIALOG --title "Manage devicetree overlays" --cancel-button "Back" \
--ok-button "Save" --checklist "\nUse <space> to toggle functions and save them.\nExit when you are done.\n " \
0 0 0 "${options[@]}" 3>&1 1>&2 2>&3)
exit_status=$?
case $exit_status in
0)
changes="true"
newoverlays=$(echo $selection | sed 's/"//g')
sed -i "s/^fdt_overlays=.*/fdt_overlays=$newoverlays/" ${overlayconf}
if ! grep -q "^fdt_overlays" ${overlayconf}; then echo "fdt_overlays=$newoverlays" >> ${overlayconf}; fi
sync
;;
1)
if [[ "$changes" == "true" ]]; then
$DIALOG --title " Reboot required " --yes-button "Reboot" \
--no-button "Cancel" --yesno "A reboot is required to apply the changes. Shall we reboot now?" 7 34
if [[ $? = 0 ]]; then
reboot
fi
fi
break
;;
255)
;;
esac
done
fi
}

0 comments on commit d96e4b0

Please sign in to comment.