Merge pull request #3470 from Kwiboo/multiple-images

scripts/image: build an image for each UBOOT_SYSTEM
This commit is contained in:
Jernej Škrabec 2019-05-01 18:56:59 +02:00 committed by GitHub
commit feb42c3b43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 127 additions and 77 deletions

View File

@ -20,6 +20,38 @@ ${SCRIPTS}/checkdeps
( setup_toolchain host ) ( setup_toolchain host )
setup_toolchain target 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" \
BUILD_NAME="$IMAGE_NAME" \
IMAGE_NAME="${1:-$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_SYSTEM="$UUID_SYSTEM" \
UUID_STORAGE="$UUID_STORAGE" \
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 if [ -n "$CUSTOM_GIT_HASH" ]; then
GIT_HASH="$CUSTOM_GIT_HASH" GIT_HASH="$CUSTOM_GIT_HASH"
else else
@ -281,33 +313,29 @@ if [ "$1" = "release" -o "$1" = "mkimage" -o "$1" = "amlpkg" -o "$1" = "noobs" ]
INSTALL_SRC_DIR="$PROJECT_DIR/$PROJECT/install" INSTALL_SRC_DIR="$PROJECT_DIR/$PROJECT/install"
fi fi
# Variables used in image script must be passed UUID_SYSTEM="$(date '+%d%m')-$(date '+%M%S')"
env \ UUID_STORAGE="$(uuidgen)"
PATH="$PATH:/sbin" \
ROOT="$ROOT" \ DEVICE_BOARDS=$($SCRIPTS/uboot_helper "$PROJECT" "$DEVICE")
SCRIPTS="$SCRIPTS" \
TOOLCHAIN="$TOOLCHAIN" \ if [ "$BOOTLOADER" = "u-boot" -a -z "$UBOOT_SYSTEM" -a -n "$DEVICE" -a -n "$DEVICE_BOARDS" ]; then
PROJECT_DIR="$PROJECT_DIR" \ for UBOOT_SYSTEM in $DEVICE_BOARDS; do
PROJECT="$PROJECT" \
DEVICE="$DEVICE" \ # Re-install u-boot package
DISTRO="$DISTRO" \ rm $STAMPS_INSTALL/u-boot/install_target
TARGET_IMG="$TARGET_IMG" \ UBOOT_SYSTEM="$UBOOT_SYSTEM" $SCRIPTS/install u-boot
IMAGE_NAME="$IMAGE_NAME" \
INSTALL_SRC_DIR="$INSTALL_SRC_DIR" \ # Re-run bootloader/release
BOOTLOADER="$BOOTLOADER" \ if find_file_path bootloader/release $BOOTLOADER_DIR/release; then
KERNEL_NAME="$KERNEL_NAME" \ echo "Running $FOUND_PATH"
TARGET_KERNEL_ARCH="$TARGET_KERNEL_ARCH" \ . $FOUND_PATH
RELEASE_DIR=$RELEASE_DIR \ fi
UUID_STORAGE="$(uuidgen)" \
DISTRO_BOOTLABEL="$DISTRO_BOOTLABEL" \ do_mkimage "$IMAGE_NAME-$UBOOT_SYSTEM"
DISTRO_DISKLABEL="$DISTRO_DISKLABEL" \ done
UBOOT_SYSTEM="$UBOOT_SYSTEM" \ else
UBOOT_VERSION="$UBOOT_VERSION" \ do_mkimage
EXTRA_CMDLINE="$EXTRA_CMDLINE" \ fi
SYSTEM_SIZE="$SYSTEM_SIZE" \
SYSTEM_PART_START="$SYSTEM_PART_START" \
OVA_SIZE="$OVA_SIZE" \
$SCRIPTS/mkimage
fi fi
# Cleanup release dir # Cleanup release dir

View File

@ -23,6 +23,38 @@ $SCRIPTS/build kmod:host
$SCRIPTS/build mtools:host $SCRIPTS/build mtools:host
$SCRIPTS/build populatefs: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" \
BUILD_NAME="$IMAGE_NAME" \
IMAGE_NAME="${1:-$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_SYSTEM="$UUID_SYSTEM" \
UUID_STORAGE="$UUID_STORAGE" \
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 if [ -n "$CUSTOM_GIT_HASH" ]; then
GIT_HASH="$CUSTOM_GIT_HASH" GIT_HASH="$CUSTOM_GIT_HASH"
else else
@ -331,33 +363,29 @@ if [ "$1" = "release" -o "$1" = "mkimage" -o "$1" = "amlpkg" -o "$1" = "noobs" ]
INSTALL_SRC_DIR="$PROJECT_DIR/$PROJECT/install" INSTALL_SRC_DIR="$PROJECT_DIR/$PROJECT/install"
fi fi
# variables used in image script must be passed UUID_SYSTEM="$(date '+%d%m')-$(date '+%M%S')"
env \ UUID_STORAGE="$(uuidgen)"
PATH="$PATH:/sbin" \
ROOT="$ROOT" \ DEVICE_BOARDS=$($SCRIPTS/uboot_helper "$PROJECT" "$DEVICE")
SCRIPTS="$SCRIPTS" \
TOOLCHAIN="$TOOLCHAIN" \ if [ "$BOOTLOADER" = "u-boot" -a -z "$UBOOT_SYSTEM" -a -n "$DEVICE" -a -n "$DEVICE_BOARDS" ]; then
PROJECT_DIR="$PROJECT_DIR" \ for UBOOT_SYSTEM in $DEVICE_BOARDS; do
PROJECT="$PROJECT" \
DEVICE="$DEVICE" \ # re-install u-boot package
DISTRO="$DISTRO" \ rm $STAMPS_INSTALL/u-boot/install_target
TARGET_IMG="$TARGET_IMG" \ UBOOT_SYSTEM="$UBOOT_SYSTEM" $SCRIPTS/install u-boot
IMAGE_NAME="$IMAGE_NAME" \
INSTALL_SRC_DIR="$INSTALL_SRC_DIR" \ # re-run bootloader/release
BOOTLOADER="$BOOTLOADER" \ if find_file_path bootloader/release $BOOTLOADER_DIR/release; then
KERNEL_NAME="$KERNEL_NAME" \ echo "Running $FOUND_PATH"
TARGET_KERNEL_ARCH="$TARGET_KERNEL_ARCH" \ . $FOUND_PATH
RELEASE_DIR=$RELEASE_DIR \ fi
UUID_STORAGE="$(uuidgen)" \
DISTRO_BOOTLABEL="$DISTRO_BOOTLABEL" \ do_mkimage "$IMAGE_NAME-$UBOOT_SYSTEM"
DISTRO_DISKLABEL="$DISTRO_DISKLABEL" \ done
UBOOT_SYSTEM="$UBOOT_SYSTEM" \ else
UBOOT_VERSION="$UBOOT_VERSION" \ do_mkimage
EXTRA_CMDLINE="$EXTRA_CMDLINE" \ fi
SYSTEM_SIZE="$SYSTEM_SIZE" \
SYSTEM_PART_START="$SYSTEM_PART_START" \
OVA_SIZE="$OVA_SIZE" \
$SCRIPTS/mkimage
fi fi
# cleanup release dir # cleanup release dir

View File

@ -53,12 +53,6 @@ show_error() {
trap cleanup SIGINT 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 # create an image
echo -e "\nimage: creating file $(basename ${DISK})..." 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 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}" alias mmd="mmd -i ${DISK}@@${OFFSET}"
if [ "${BOOTLOADER}" = "syslinux" -o "${BOOTLOADER}" = "bcm2835-bootloader" -o "${BOOTLOADER}" = "u-boot" ]; then 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 fi
sync sync
@ -164,8 +158,8 @@ EOF
# copy files # copy files
echo "image: copying files to part1..." echo "image: copying files to part1..."
mcopy "${TARGET_IMG}/${IMAGE_NAME}.kernel" "::/${KERNEL_NAME}" mcopy "${TARGET_IMG}/${BUILD_NAME}.kernel" "::/${KERNEL_NAME}"
mcopy "${TARGET_IMG}/${IMAGE_NAME}.system" ::/SYSTEM mcopy "${TARGET_IMG}/${BUILD_NAME}.system" ::/SYSTEM
mcopy "${RELEASE_DIR}/target/KERNEL.md5" "::/${KERNEL_NAME}.md5" mcopy "${RELEASE_DIR}/target/KERNEL.md5" "::/${KERNEL_NAME}.md5"
mcopy "${RELEASE_DIR}/target/SYSTEM.md5" ::/SYSTEM.md5 mcopy "${RELEASE_DIR}/target/SYSTEM.md5" ::/SYSTEM.md5
@ -186,8 +180,8 @@ EOF
# copy files # copy files
echo "image: copying files to part1..." echo "image: copying files to part1..."
mcopy "${TARGET_IMG}/${IMAGE_NAME}.kernel" "::/${KERNEL_NAME}" mcopy "${TARGET_IMG}/${BUILD_NAME}.kernel" "::/${KERNEL_NAME}"
mcopy "${TARGET_IMG}/${IMAGE_NAME}.system" ::/SYSTEM mcopy "${TARGET_IMG}/${BUILD_NAME}.system" ::/SYSTEM
mcopy "${RELEASE_DIR}/target/KERNEL.md5" "::/${KERNEL_NAME}.md5" mcopy "${RELEASE_DIR}/target/KERNEL.md5" "::/${KERNEL_NAME}.md5"
mcopy "${RELEASE_DIR}/target/SYSTEM.md5" ::/SYSTEM.md5 mcopy "${RELEASE_DIR}/target/SYSTEM.md5" ::/SYSTEM.md5
@ -243,8 +237,8 @@ EOF
fi fi
echo "image: copying files to part1..." echo "image: copying files to part1..."
mcopy "${TARGET_IMG}/${IMAGE_NAME}.kernel" "::/${KERNEL_NAME}" mcopy "${TARGET_IMG}/${BUILD_NAME}.kernel" "::/${KERNEL_NAME}"
mcopy "${TARGET_IMG}/${IMAGE_NAME}.system" ::/SYSTEM mcopy "${TARGET_IMG}/${BUILD_NAME}.system" ::/SYSTEM
mcopy "${RELEASE_DIR}/target/KERNEL.md5" "::/${KERNEL_NAME}.md5" mcopy "${RELEASE_DIR}/target/KERNEL.md5" "::/${KERNEL_NAME}.md5"
mcopy "${RELEASE_DIR}/target/SYSTEM.md5" ::/SYSTEM.md5 mcopy "${RELEASE_DIR}/target/SYSTEM.md5" ::/SYSTEM.md5

View File

@ -3,12 +3,11 @@
import sys import sys
devices = { devices = {
'project' : { # 'project' : {
'device' : { # 'device' : {
'board_name' : { 'dtb' : 'board_name.dtb', 'config' : 'board_name_defconfig' }, # 'board_name' : { 'dtb' : 'board_name.dtb', 'config' : 'board_name_defconfig' },
}, # },
}, # },
'Allwinner' : { 'Allwinner' : {
'A64' : { 'A64' : {
'pine64' : { 'dtb' : 'sun50i-a64-pine64.dtb', 'config' : 'pine64_plus_defconfig' }, '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' }, 'pine_h64' : { 'dtb' : 'sun50i-h6-pine-h64.dtb', 'config' : 'pine_h64_defconfig' },
}, },
}, },
'Rockchip' : { 'Rockchip' : {
'MiQi' : { 'rk3288' : { 'dtb' : 'rk3288-miqi.dtb', 'config' : 'miqi-rk3288_config' }, }, 'MiQi' : { 'rk3288' : { 'dtb' : 'rk3288-miqi.dtb', 'config' : 'miqi-rk3288_config' }, },
'RK3328' : { 'RK3328' : {
@ -90,7 +88,9 @@ elif len(sys.argv) == 3:
# List socs supported by a given project # List socs supported by a given project
# ./scripts/uboot_helper project # ./scripts/uboot_helper project
elif len(sys.argv) == 2: 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 = [] socs = []
for soc in devices[sys.argv[1]]: for soc in devices[sys.argv[1]]:
socs.append(soc) socs.append(soc)