From a74435d4de06925cef1420e8054e911c11306a60 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Wed, 1 May 2019 16:27:00 +0000 Subject: [PATCH 1/5] scripts/image: extract function do_mkimage --- scripts/image | 58 ++++++++++++++++++++++++++---------------------- scripts/image_st | 58 ++++++++++++++++++++++++++---------------------- 2 files changed, 62 insertions(+), 54 deletions(-) diff --git a/scripts/image b/scripts/image index ba9b1aa9e3..178d02c017 100755 --- a/scripts/image +++ b/scripts/image @@ -20,6 +20,36 @@ ${SCRIPTS}/checkdeps ( setup_toolchain host ) setup_toolchain target +function do_mkimage() { + # Variables used in mkimage script must be passed + env \ + PATH="$PATH:/sbin" \ + ROOT="$ROOT" \ + SCRIPTS="$SCRIPTS" \ + TOOLCHAIN="$TOOLCHAIN" \ + PROJECT_DIR="$PROJECT_DIR" \ + PROJECT="$PROJECT" \ + DEVICE="$DEVICE" \ + DISTRO="$DISTRO" \ + TARGET_IMG="$TARGET_IMG" \ + IMAGE_NAME="$IMAGE_NAME" \ + INSTALL_SRC_DIR="$INSTALL_SRC_DIR" \ + BOOTLOADER="$BOOTLOADER" \ + KERNEL_NAME="$KERNEL_NAME" \ + TARGET_KERNEL_ARCH="$TARGET_KERNEL_ARCH" \ + RELEASE_DIR="$RELEASE_DIR" \ + UUID_STORAGE="$(uuidgen)" \ + DISTRO_BOOTLABEL="$DISTRO_BOOTLABEL" \ + DISTRO_DISKLABEL="$DISTRO_DISKLABEL" \ + UBOOT_SYSTEM="$UBOOT_SYSTEM" \ + UBOOT_VERSION="$UBOOT_VERSION" \ + EXTRA_CMDLINE="$EXTRA_CMDLINE" \ + SYSTEM_SIZE="$SYSTEM_SIZE" \ + SYSTEM_PART_START="$SYSTEM_PART_START" \ + OVA_SIZE="$OVA_SIZE" \ + $SCRIPTS/mkimage +} + if [ -n "$CUSTOM_GIT_HASH" ]; then GIT_HASH="$CUSTOM_GIT_HASH" else @@ -281,33 +311,7 @@ if [ "$1" = "release" -o "$1" = "mkimage" -o "$1" = "amlpkg" -o "$1" = "noobs" ] INSTALL_SRC_DIR="$PROJECT_DIR/$PROJECT/install" fi - # Variables used in image script must be passed - env \ - PATH="$PATH:/sbin" \ - ROOT="$ROOT" \ - SCRIPTS="$SCRIPTS" \ - TOOLCHAIN="$TOOLCHAIN" \ - PROJECT_DIR="$PROJECT_DIR" \ - PROJECT="$PROJECT" \ - DEVICE="$DEVICE" \ - DISTRO="$DISTRO" \ - TARGET_IMG="$TARGET_IMG" \ - IMAGE_NAME="$IMAGE_NAME" \ - INSTALL_SRC_DIR="$INSTALL_SRC_DIR" \ - BOOTLOADER="$BOOTLOADER" \ - KERNEL_NAME="$KERNEL_NAME" \ - TARGET_KERNEL_ARCH="$TARGET_KERNEL_ARCH" \ - RELEASE_DIR=$RELEASE_DIR \ - UUID_STORAGE="$(uuidgen)" \ - DISTRO_BOOTLABEL="$DISTRO_BOOTLABEL" \ - DISTRO_DISKLABEL="$DISTRO_DISKLABEL" \ - UBOOT_SYSTEM="$UBOOT_SYSTEM" \ - UBOOT_VERSION="$UBOOT_VERSION" \ - EXTRA_CMDLINE="$EXTRA_CMDLINE" \ - SYSTEM_SIZE="$SYSTEM_SIZE" \ - SYSTEM_PART_START="$SYSTEM_PART_START" \ - OVA_SIZE="$OVA_SIZE" \ - $SCRIPTS/mkimage + do_mkimage fi # Cleanup release dir diff --git a/scripts/image_st b/scripts/image_st index bd4decf390..4f60e9bf28 100755 --- a/scripts/image_st +++ b/scripts/image_st @@ -23,6 +23,36 @@ $SCRIPTS/build kmod:host $SCRIPTS/build mtools:host $SCRIPTS/build populatefs:host +function do_mkimage() { + # Variables used in mkimage script must be passed + env \ + PATH="$PATH:/sbin" \ + ROOT="$ROOT" \ + SCRIPTS="$SCRIPTS" \ + TOOLCHAIN="$TOOLCHAIN" \ + PROJECT_DIR="$PROJECT_DIR" \ + PROJECT="$PROJECT" \ + DEVICE="$DEVICE" \ + DISTRO="$DISTRO" \ + TARGET_IMG="$TARGET_IMG" \ + IMAGE_NAME="$IMAGE_NAME" \ + INSTALL_SRC_DIR="$INSTALL_SRC_DIR" \ + BOOTLOADER="$BOOTLOADER" \ + KERNEL_NAME="$KERNEL_NAME" \ + TARGET_KERNEL_ARCH="$TARGET_KERNEL_ARCH" \ + RELEASE_DIR="$RELEASE_DIR" \ + UUID_STORAGE="$(uuidgen)" \ + DISTRO_BOOTLABEL="$DISTRO_BOOTLABEL" \ + DISTRO_DISKLABEL="$DISTRO_DISKLABEL" \ + UBOOT_SYSTEM="$UBOOT_SYSTEM" \ + UBOOT_VERSION="$UBOOT_VERSION" \ + EXTRA_CMDLINE="$EXTRA_CMDLINE" \ + SYSTEM_SIZE="$SYSTEM_SIZE" \ + SYSTEM_PART_START="$SYSTEM_PART_START" \ + OVA_SIZE="$OVA_SIZE" \ + $SCRIPTS/mkimage +} + if [ -n "$CUSTOM_GIT_HASH" ]; then GIT_HASH="$CUSTOM_GIT_HASH" else @@ -331,33 +361,7 @@ if [ "$1" = "release" -o "$1" = "mkimage" -o "$1" = "amlpkg" -o "$1" = "noobs" ] INSTALL_SRC_DIR="$PROJECT_DIR/$PROJECT/install" fi - # variables used in image script must be passed - env \ - PATH="$PATH:/sbin" \ - ROOT="$ROOT" \ - SCRIPTS="$SCRIPTS" \ - TOOLCHAIN="$TOOLCHAIN" \ - PROJECT_DIR="$PROJECT_DIR" \ - PROJECT="$PROJECT" \ - DEVICE="$DEVICE" \ - DISTRO="$DISTRO" \ - TARGET_IMG="$TARGET_IMG" \ - IMAGE_NAME="$IMAGE_NAME" \ - INSTALL_SRC_DIR="$INSTALL_SRC_DIR" \ - BOOTLOADER="$BOOTLOADER" \ - KERNEL_NAME="$KERNEL_NAME" \ - TARGET_KERNEL_ARCH="$TARGET_KERNEL_ARCH" \ - RELEASE_DIR=$RELEASE_DIR \ - UUID_STORAGE="$(uuidgen)" \ - DISTRO_BOOTLABEL="$DISTRO_BOOTLABEL" \ - DISTRO_DISKLABEL="$DISTRO_DISKLABEL" \ - UBOOT_SYSTEM="$UBOOT_SYSTEM" \ - UBOOT_VERSION="$UBOOT_VERSION" \ - EXTRA_CMDLINE="$EXTRA_CMDLINE" \ - SYSTEM_SIZE="$SYSTEM_SIZE" \ - SYSTEM_PART_START="$SYSTEM_PART_START" \ - OVA_SIZE="$OVA_SIZE" \ - $SCRIPTS/mkimage + do_mkimage fi # cleanup release dir From 41329e36e5cca062cb85c425273fb65c6bd02424 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Wed, 1 May 2019 16:27:02 +0000 Subject: [PATCH 2/5] scripts/image: pass UUID_SYSTEM to mkimage --- scripts/image | 6 +++++- scripts/image_st | 6 +++++- scripts/mkimage | 8 +------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/scripts/image b/scripts/image index 178d02c017..0b509efbf9 100755 --- a/scripts/image +++ b/scripts/image @@ -38,7 +38,8 @@ function do_mkimage() { KERNEL_NAME="$KERNEL_NAME" \ TARGET_KERNEL_ARCH="$TARGET_KERNEL_ARCH" \ RELEASE_DIR="$RELEASE_DIR" \ - UUID_STORAGE="$(uuidgen)" \ + UUID_SYSTEM="$UUID_SYSTEM" \ + UUID_STORAGE="$UUID_STORAGE" \ DISTRO_BOOTLABEL="$DISTRO_BOOTLABEL" \ DISTRO_DISKLABEL="$DISTRO_DISKLABEL" \ UBOOT_SYSTEM="$UBOOT_SYSTEM" \ @@ -311,6 +312,9 @@ if [ "$1" = "release" -o "$1" = "mkimage" -o "$1" = "amlpkg" -o "$1" = "noobs" ] INSTALL_SRC_DIR="$PROJECT_DIR/$PROJECT/install" fi + UUID_SYSTEM="$(date '+%d%m')-$(date '+%M%S')" + UUID_STORAGE="$(uuidgen)" + do_mkimage fi diff --git a/scripts/image_st b/scripts/image_st index 4f60e9bf28..4a0bebc988 100755 --- a/scripts/image_st +++ b/scripts/image_st @@ -41,7 +41,8 @@ function do_mkimage() { KERNEL_NAME="$KERNEL_NAME" \ TARGET_KERNEL_ARCH="$TARGET_KERNEL_ARCH" \ RELEASE_DIR="$RELEASE_DIR" \ - UUID_STORAGE="$(uuidgen)" \ + UUID_SYSTEM="$UUID_SYSTEM" \ + UUID_STORAGE="$UUID_STORAGE" \ DISTRO_BOOTLABEL="$DISTRO_BOOTLABEL" \ DISTRO_DISKLABEL="$DISTRO_DISKLABEL" \ UBOOT_SYSTEM="$UBOOT_SYSTEM" \ @@ -361,6 +362,9 @@ if [ "$1" = "release" -o "$1" = "mkimage" -o "$1" = "amlpkg" -o "$1" = "noobs" ] INSTALL_SRC_DIR="$PROJECT_DIR/$PROJECT/install" fi + UUID_SYSTEM="$(date '+%d%m')-$(date '+%M%S')" + UUID_STORAGE="$(uuidgen)" + do_mkimage fi diff --git a/scripts/mkimage b/scripts/mkimage index 908245f7fd..bd1410ec16 100755 --- a/scripts/mkimage +++ b/scripts/mkimage @@ -53,12 +53,6 @@ show_error() { trap cleanup SIGINT -# generate volume id for fat partition -UUID_1=$(date '+%d%m') -UUID_2=$(date '+%M%S') -FAT_SERIAL_NUMBER="${UUID_1}${UUID_2}" -UUID_SYSTEM="${UUID_1}-${UUID_2}" - # create an image echo -e "\nimage: creating file $(basename ${DISK})..." dd if=/dev/zero of="${DISK}" bs=1M count="${DISK_SIZE}" conv=fsync >"${SAVE_ERROR}" 2>&1 || show_error @@ -113,7 +107,7 @@ alias mcopy="mcopy -i ${DISK}@@${OFFSET}" alias mmd="mmd -i ${DISK}@@${OFFSET}" if [ "${BOOTLOADER}" = "syslinux" -o "${BOOTLOADER}" = "bcm2835-bootloader" -o "${BOOTLOADER}" = "u-boot" ]; then - mformat -v "${DISTRO_BOOTLABEL}" -N "${FAT_SERIAL_NUMBER}" :: + mformat -v "${DISTRO_BOOTLABEL}" -N "${UUID_SYSTEM//-/}" :: fi sync From 0d2d9f8c2929e36460f49bae09e4d81ba38bd70c Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Wed, 1 May 2019 16:27:04 +0000 Subject: [PATCH 3/5] scripts/image: use BUILD_NAME in mkimage --- scripts/image | 1 + scripts/image_st | 1 + scripts/mkimage | 12 ++++++------ 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/scripts/image b/scripts/image index 0b509efbf9..18ea65c562 100755 --- a/scripts/image +++ b/scripts/image @@ -32,6 +32,7 @@ function do_mkimage() { DEVICE="$DEVICE" \ DISTRO="$DISTRO" \ TARGET_IMG="$TARGET_IMG" \ + BUILD_NAME="$IMAGE_NAME" \ IMAGE_NAME="$IMAGE_NAME" \ INSTALL_SRC_DIR="$INSTALL_SRC_DIR" \ BOOTLOADER="$BOOTLOADER" \ diff --git a/scripts/image_st b/scripts/image_st index 4a0bebc988..9bc86fa98d 100755 --- a/scripts/image_st +++ b/scripts/image_st @@ -35,6 +35,7 @@ function do_mkimage() { DEVICE="$DEVICE" \ DISTRO="$DISTRO" \ TARGET_IMG="$TARGET_IMG" \ + BUILD_NAME="$IMAGE_NAME" \ IMAGE_NAME="$IMAGE_NAME" \ INSTALL_SRC_DIR="$INSTALL_SRC_DIR" \ BOOTLOADER="$BOOTLOADER" \ diff --git a/scripts/mkimage b/scripts/mkimage index bd1410ec16..6e9ef996ce 100755 --- a/scripts/mkimage +++ b/scripts/mkimage @@ -158,8 +158,8 @@ EOF # copy files echo "image: copying files to part1..." - mcopy "${TARGET_IMG}/${IMAGE_NAME}.kernel" "::/${KERNEL_NAME}" - mcopy "${TARGET_IMG}/${IMAGE_NAME}.system" ::/SYSTEM + mcopy "${TARGET_IMG}/${BUILD_NAME}.kernel" "::/${KERNEL_NAME}" + mcopy "${TARGET_IMG}/${BUILD_NAME}.system" ::/SYSTEM mcopy "${RELEASE_DIR}/target/KERNEL.md5" "::/${KERNEL_NAME}.md5" mcopy "${RELEASE_DIR}/target/SYSTEM.md5" ::/SYSTEM.md5 @@ -180,8 +180,8 @@ EOF # copy files echo "image: copying files to part1..." - mcopy "${TARGET_IMG}/${IMAGE_NAME}.kernel" "::/${KERNEL_NAME}" - mcopy "${TARGET_IMG}/${IMAGE_NAME}.system" ::/SYSTEM + mcopy "${TARGET_IMG}/${BUILD_NAME}.kernel" "::/${KERNEL_NAME}" + mcopy "${TARGET_IMG}/${BUILD_NAME}.system" ::/SYSTEM mcopy "${RELEASE_DIR}/target/KERNEL.md5" "::/${KERNEL_NAME}.md5" mcopy "${RELEASE_DIR}/target/SYSTEM.md5" ::/SYSTEM.md5 @@ -237,8 +237,8 @@ EOF fi echo "image: copying files to part1..." - mcopy "${TARGET_IMG}/${IMAGE_NAME}.kernel" "::/${KERNEL_NAME}" - mcopy "${TARGET_IMG}/${IMAGE_NAME}.system" ::/SYSTEM + mcopy "${TARGET_IMG}/${BUILD_NAME}.kernel" "::/${KERNEL_NAME}" + mcopy "${TARGET_IMG}/${BUILD_NAME}.system" ::/SYSTEM mcopy "${RELEASE_DIR}/target/KERNEL.md5" "::/${KERNEL_NAME}.md5" mcopy "${RELEASE_DIR}/target/SYSTEM.md5" ::/SYSTEM.md5 From e9c26b5d6676746b3548ab78e2465851918d901a Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Wed, 1 May 2019 16:27:06 +0000 Subject: [PATCH 4/5] scripts/uboot_helper: print usage help when requested --- scripts/uboot_helper | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/scripts/uboot_helper b/scripts/uboot_helper index a426bb4e97..71f7886a29 100755 --- a/scripts/uboot_helper +++ b/scripts/uboot_helper @@ -3,12 +3,11 @@ import sys devices = { - 'project' : { - 'device' : { - 'board_name' : { 'dtb' : 'board_name.dtb', 'config' : 'board_name_defconfig' }, - }, - }, - +# 'project' : { +# 'device' : { +# 'board_name' : { 'dtb' : 'board_name.dtb', 'config' : 'board_name_defconfig' }, +# }, +# }, 'Allwinner' : { 'A64' : { 'pine64' : { 'dtb' : 'sun50i-a64-pine64.dtb', 'config' : 'pine64_plus_defconfig' }, @@ -30,7 +29,6 @@ devices = { 'pine_h64' : { 'dtb' : 'sun50i-h6-pine-h64.dtb', 'config' : 'pine_h64_defconfig' }, }, }, - 'Rockchip' : { 'MiQi' : { 'rk3288' : { 'dtb' : 'rk3288-miqi.dtb', 'config' : 'miqi-rk3288_config' }, }, 'RK3328' : { @@ -85,17 +83,19 @@ elif len(sys.argv) == 3: for board in devices[sys.argv[1]][sys.argv[2]]: boards.append(board) print(' '.join(boards)) - sys.exit(0) + sys.exit(0) # List socs supported by a given project # ./scripts/uboot_helper project elif len(sys.argv) == 2: - if sys.argv[1] in devices: + if sys.argv[1] in ['help', 'usage']: + usage() + elif sys.argv[1] in devices: socs = [] for soc in devices[sys.argv[1]]: socs.append(soc) print(' '.join(socs)) - sys.exit(0) + sys.exit(0) # List projects # ./scripts/uboot_helper From e92b858d9e877a4978b770874cf73c79bbc3c057 Mon Sep 17 00:00:00 2001 From: Jonas Karlman Date: Wed, 1 May 2019 16:27:07 +0000 Subject: [PATCH 5/5] scripts/image: build an image for each UBOOT_SYSTEM --- scripts/image | 23 +++++++++++++++++++++-- scripts/image_st | 23 +++++++++++++++++++++-- 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/scripts/image b/scripts/image index 18ea65c562..93bf4b2719 100755 --- a/scripts/image +++ b/scripts/image @@ -33,7 +33,7 @@ function do_mkimage() { DISTRO="$DISTRO" \ TARGET_IMG="$TARGET_IMG" \ BUILD_NAME="$IMAGE_NAME" \ - IMAGE_NAME="$IMAGE_NAME" \ + IMAGE_NAME="${1:-$IMAGE_NAME}" \ INSTALL_SRC_DIR="$INSTALL_SRC_DIR" \ BOOTLOADER="$BOOTLOADER" \ KERNEL_NAME="$KERNEL_NAME" \ @@ -316,7 +316,26 @@ if [ "$1" = "release" -o "$1" = "mkimage" -o "$1" = "amlpkg" -o "$1" = "noobs" ] UUID_SYSTEM="$(date '+%d%m')-$(date '+%M%S')" UUID_STORAGE="$(uuidgen)" - do_mkimage + DEVICE_BOARDS=$($SCRIPTS/uboot_helper "$PROJECT" "$DEVICE") + + if [ "$BOOTLOADER" = "u-boot" -a -z "$UBOOT_SYSTEM" -a -n "$DEVICE" -a -n "$DEVICE_BOARDS" ]; then + for UBOOT_SYSTEM in $DEVICE_BOARDS; do + + # Re-install u-boot package + rm $STAMPS_INSTALL/u-boot/install_target + UBOOT_SYSTEM="$UBOOT_SYSTEM" $SCRIPTS/install u-boot + + # Re-run bootloader/release + if find_file_path bootloader/release $BOOTLOADER_DIR/release; then + echo "Running $FOUND_PATH" + . $FOUND_PATH + fi + + do_mkimage "$IMAGE_NAME-$UBOOT_SYSTEM" + done + else + do_mkimage + fi fi # Cleanup release dir diff --git a/scripts/image_st b/scripts/image_st index 9bc86fa98d..c2275176e1 100755 --- a/scripts/image_st +++ b/scripts/image_st @@ -36,7 +36,7 @@ function do_mkimage() { DISTRO="$DISTRO" \ TARGET_IMG="$TARGET_IMG" \ BUILD_NAME="$IMAGE_NAME" \ - IMAGE_NAME="$IMAGE_NAME" \ + IMAGE_NAME="${1:-$IMAGE_NAME}" \ INSTALL_SRC_DIR="$INSTALL_SRC_DIR" \ BOOTLOADER="$BOOTLOADER" \ KERNEL_NAME="$KERNEL_NAME" \ @@ -366,7 +366,26 @@ if [ "$1" = "release" -o "$1" = "mkimage" -o "$1" = "amlpkg" -o "$1" = "noobs" ] UUID_SYSTEM="$(date '+%d%m')-$(date '+%M%S')" UUID_STORAGE="$(uuidgen)" - do_mkimage + DEVICE_BOARDS=$($SCRIPTS/uboot_helper "$PROJECT" "$DEVICE") + + if [ "$BOOTLOADER" = "u-boot" -a -z "$UBOOT_SYSTEM" -a -n "$DEVICE" -a -n "$DEVICE_BOARDS" ]; then + for UBOOT_SYSTEM in $DEVICE_BOARDS; do + + # re-install u-boot package + rm $STAMPS_INSTALL/u-boot/install_target + UBOOT_SYSTEM="$UBOOT_SYSTEM" $SCRIPTS/install u-boot + + # re-run bootloader/release + if find_file_path bootloader/release $BOOTLOADER_DIR/release; then + echo "Running $FOUND_PATH" + . $FOUND_PATH + fi + + do_mkimage "$IMAGE_NAME-$UBOOT_SYSTEM" + done + else + do_mkimage + fi fi # cleanup release dir