mirror of
https://github.com/LibreELEC/LibreELEC.tv.git
synced 2025-07-28 13:16:41 +00:00
Merge pull request #3470 from Kwiboo/multiple-images
scripts/image: build an image for each UBOOT_SYSTEM
This commit is contained in:
commit
feb42c3b43
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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' : {
|
||||||
@ -85,17 +83,19 @@ elif len(sys.argv) == 3:
|
|||||||
for board in devices[sys.argv[1]][sys.argv[2]]:
|
for board in devices[sys.argv[1]][sys.argv[2]]:
|
||||||
boards.append(board)
|
boards.append(board)
|
||||||
print(' '.join(boards))
|
print(' '.join(boards))
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# 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)
|
||||||
print(' '.join(socs))
|
print(' '.join(socs))
|
||||||
sys.exit(0)
|
sys.exit(0)
|
||||||
|
|
||||||
# List projects
|
# List projects
|
||||||
# ./scripts/uboot_helper
|
# ./scripts/uboot_helper
|
||||||
|
Loading…
x
Reference in New Issue
Block a user