aboutsummaryrefslogtreecommitdiff
path: root/state/gen
diff options
context:
space:
mode:
Diffstat (limited to 'state/gen')
-rwxr-xr-xstate/gen65
1 files changed, 65 insertions, 0 deletions
diff --git a/state/gen b/state/gen
new file mode 100755
index 0000000..23a3382
--- /dev/null
+++ b/state/gen
@@ -0,0 +1,65 @@
+#!/bin/sh
+# redirect stdout to stderr (stdout gets interpreted by make)
+exec 1>&2
+# create files in the same directory as this script
+cd "$(dirname "$0")"
+# do not run anything if make was run with -n (dry run)
+# [ "${MAKEFLAGS#*n}" != "$MAKEFLAGS" ] && exit
+
+touch_rm_exit_code() { [ $? -eq 0 ] && touch "$1" || rm -f "$1" ; }
+
+# container image (initialized here, updated in makefile)
+$CTR image exists "$CTR_IMG_TAG" 1> /dev/null 2> /dev/null
+touch_rm_exit_code container_img
+
+# check if all the submodules are initialized
+test -z "$(git submodule status | grep '^-')"
+touch_rm_exit_code submodules
+
+rm -f auto.mk
+
+# guess which device is the sd card by size (around 8GB)
+for SDCARD_DISK in "$(lsblk --noheadings --bytes --output PATH,SIZE,TYPE | awk '
+ $3 != "disk" { next }
+ ($2 < 7900000000) { next }
+ ($2 > 8000000000) { next }
+ { print $1 }')"
+do
+ [ -z "$SDCARD_DISK" ] && continue
+ # check if the sd card is already correctly partitioned & formatted
+ PARTS="$(lsblk "$SDCARD_DISK" --noheadings --output PATH,SIZE,TYPE,PTTYPE,FSTYPE,LABEL | awk '
+ NR == 1 {
+ if ($4 != "dos") exit(1)
+ }
+ NR == 2 {
+ if ($6 != "BOOT") exit(1)
+ if ($2 != "64M") exit(1)
+ if ($5 != "vfat") exit(1)
+ print $1
+ }
+ NR == 3 {
+ if ($6 != "ROOTFS") exit(1)
+ if ($5 != "ext4") exit(1)
+ print $1
+ }
+ END { if (NR != 3) exit(1) }')" || continue
+ SDCARD_PART_BOOT="$(echo "$PARTS" | sed '1!d')"
+ SDCARD_PART_ROOTFS="$(echo "$PARTS" | sed '2!d')"
+ break
+done
+
+if [ -n "$SDCARD_DISK" ]; then
+ echo "SDCARD_DISK ?= $SDCARD_DISK" >> auto.mk
+fi
+
+if [ -n "$SDCARD_PART_BOOT" ] && [ -n "$SDCARD_PART_ROOTFS" ]; then
+ echo "SDCARD_PART_BOOT ?= $SDCARD_PART_BOOT" >> auto.mk
+ echo "SDCARD_PART_ROOTFS ?= $SDCARD_PART_ROOTFS" >> auto.mk
+ touch sdcard_part_fmt
+else
+ rm -f sdcard_part_fmt
+fi
+
+# export all variables in auto.mk
+echo "export" >> auto.mk
+