[PATCH v2 03/11] test: Move script image-creation to its own file
Simon Glass
sjg at chromium.org
Sat May 23 10:54:39 CEST 2026
Move setup_script_image() to its own module. The image exercises the
script bootmeth and is modelled on Armbian 22.08 Jammy, so name the
module and function after what they test rather than the distribution.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
Changes in v2:
- Rename the module to script and the function to setup_script_image(),
naming it after the bootmeth it tests rather than the Armbian
distribution it is modelled on
test/py/img/script.py | 129 +++++++++++++++++++++++++++++++++++++++
test/py/tests/test_ut.py | 122 +-----------------------------------
2 files changed, 131 insertions(+), 120 deletions(-)
create mode 100644 test/py/img/script.py
diff --git a/test/py/img/script.py b/test/py/img/script.py
new file mode 100644
index 00000000000..3e36686ee5a
--- /dev/null
+++ b/test/py/img/script.py
@@ -0,0 +1,129 @@
+# SPDX-License-Identifier: GPL-2.0+
+# Copyright (c) 2016, NVIDIA CORPORATION. All rights reserved.
+
+"""Create script test disk images"""
+
+import os
+
+import utils
+from fs_helper import DiskHelper, FsHelper
+from img.common import mkdir_cond
+
+
+def setup_script_image(ubman):
+ """Create a 20MB disk image for the script bootmeth
+
+ This is modelled on Armbian 22.08 Jammy
+ """
+ mmc_dev = 4
+
+ script = '''# DO NOT EDIT THIS FILE
+#
+# Please edit /boot/armbianEnv.txt to set supported parameters
+#
+
+setenv load_addr "0x9000000"
+setenv overlay_error "false"
+# default values
+setenv rootdev "/dev/mmcblk%dp1"
+setenv verbosity "1"
+setenv console "both"
+setenv bootlogo "false"
+setenv rootfstype "ext4"
+setenv docker_optimizations "on"
+setenv earlycon "off"
+
+echo "Boot script loaded from ${devtype} ${devnum}"
+
+if test -e ${devtype} ${devnum} ${prefix}armbianEnv.txt; then
+ load ${devtype} ${devnum} ${load_addr} ${prefix}armbianEnv.txt
+ env import -t ${load_addr} ${filesize}
+fi
+
+if test "${logo}" = "disabled"; then setenv logo "logo.nologo"; fi
+
+if test "${console}" = "display" || test "${console}" = "both"; then setenv consoleargs "console=tty1"; fi
+if test "${console}" = "serial" || test "${console}" = "both"; then setenv consoleargs "console=ttyS2,1500000 ${consoleargs}"; fi
+if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; fi
+if test "${bootlogo}" = "true"; then setenv consoleargs "bootsplash.bootfile=bootsplash.armbian ${consoleargs}"; fi
+
+# get PARTUUID of first partition on SD/eMMC the boot script was loaded from
+if test "${devtype}" = "mmc"; then part uuid mmc ${devnum}:1 partuuid; fi
+
+setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}"
+
+if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1"; fi
+
+load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd
+load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}Image
+
+load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
+fdt addr ${fdt_addr_r}
+fdt resize 65536
+for overlay_file in ${overlays}; do
+ if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/rockchip/overlay/${overlay_prefix}-${overlay_file}.dtbo; then
+ echo "Applying kernel provided DT overlay ${overlay_prefix}-${overlay_file}.dtbo"
+ fdt apply ${load_addr} || setenv overlay_error "true"
+ fi
+done
+for overlay_file in ${user_overlays}; do
+ if load ${devtype} ${devnum} ${load_addr} ${prefix}overlay-user/${overlay_file}.dtbo; then
+ echo "Applying user provided DT overlay ${overlay_file}.dtbo"
+ fdt apply ${load_addr} || setenv overlay_error "true"
+ fi
+done
+if test "${overlay_error}" = "true"; then
+ echo "Error applying DT overlays, restoring original DT"
+ load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
+else
+ if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/rockchip/overlay/${overlay_prefix}-fixup.scr; then
+ echo "Applying kernel provided DT fixup script (${overlay_prefix}-fixup.scr)"
+ source ${load_addr}
+ fi
+ if test -e ${devtype} ${devnum} ${prefix}fixup.scr; then
+ load ${devtype} ${devnum} ${load_addr} ${prefix}fixup.scr
+ echo "Applying user provided fixup script (fixup.scr)"
+ source ${load_addr}
+ fi
+fi
+booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
+
+# Recompile with:
+# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
+'''
+ fsh = FsHelper(ubman.config, 'ext4', 18, 'mmc')
+ fsh.setup()
+ bootdir = os.path.join(fsh.srcdir, 'boot')
+ mkdir_cond(bootdir)
+ cmd_fname = os.path.join(bootdir, 'boot.cmd')
+ scr_fname = os.path.join(bootdir, 'boot.scr')
+ with open(cmd_fname, 'w', encoding='ascii') as outf:
+ print(script, file=outf)
+
+ infname = os.path.join(ubman.config.source_dir,
+ 'test/py/tests/bootstd/armbian.bmp.xz')
+ bmp_file = os.path.join(bootdir, 'boot.bmp')
+ utils.run_and_log(
+ ubman,
+ ['sh', '-c', f'xz -dc {infname} >{bmp_file}'])
+
+ mkimage = ubman.config.build_dir + '/tools/mkimage'
+ utils.run_and_log(
+ ubman, f'{mkimage} -C none -A arm -T script -d {cmd_fname} {scr_fname}')
+
+ kernel = 'vmlinuz-5.15.63-rockchip64'
+ target = os.path.join(bootdir, kernel)
+ with open(target, 'wb') as outf:
+ print('kernel', outf)
+
+ symlink = os.path.join(bootdir, 'Image')
+ if os.path.exists(symlink):
+ os.remove(symlink)
+ utils.run_and_log(
+ ubman, f'echo here {kernel} {symlink}')
+ os.symlink(kernel, symlink)
+ fsh.mk_fs()
+ img = DiskHelper(ubman.config, mmc_dev, 'mmc', True)
+ img.add_fs(fsh, DiskHelper.EXT4)
+ img.create()
+ fsh.cleanup()
diff --git a/test/py/tests/test_ut.py b/test/py/tests/test_ut.py
index fb3064847ff..a23fb6244d6 100644
--- a/test/py/tests/test_ut.py
+++ b/test/py/tests/test_ut.py
@@ -21,125 +21,7 @@ from fs_helper import DiskHelper, FsHelper
from test_android import test_abootimg
from img.common import mkdir_cond, copy_partition
from img.extlinux import setup_extlinux_image
-
-
-def setup_bootmenu_image(ubman):
- """Create a 20MB disk image with a single ext4 partition
-
- This is modelled on Armbian 22.08 Jammy
- """
- mmc_dev = 4
-
- script = '''# DO NOT EDIT THIS FILE
-#
-# Please edit /boot/armbianEnv.txt to set supported parameters
-#
-
-setenv load_addr "0x9000000"
-setenv overlay_error "false"
-# default values
-setenv rootdev "/dev/mmcblk%dp1"
-setenv verbosity "1"
-setenv console "both"
-setenv bootlogo "false"
-setenv rootfstype "ext4"
-setenv docker_optimizations "on"
-setenv earlycon "off"
-
-echo "Boot script loaded from ${devtype} ${devnum}"
-
-if test -e ${devtype} ${devnum} ${prefix}armbianEnv.txt; then
- load ${devtype} ${devnum} ${load_addr} ${prefix}armbianEnv.txt
- env import -t ${load_addr} ${filesize}
-fi
-
-if test "${logo}" = "disabled"; then setenv logo "logo.nologo"; fi
-
-if test "${console}" = "display" || test "${console}" = "both"; then setenv consoleargs "console=tty1"; fi
-if test "${console}" = "serial" || test "${console}" = "both"; then setenv consoleargs "console=ttyS2,1500000 ${consoleargs}"; fi
-if test "${earlycon}" = "on"; then setenv consoleargs "earlycon ${consoleargs}"; fi
-if test "${bootlogo}" = "true"; then setenv consoleargs "bootsplash.bootfile=bootsplash.armbian ${consoleargs}"; fi
-
-# get PARTUUID of first partition on SD/eMMC the boot script was loaded from
-if test "${devtype}" = "mmc"; then part uuid mmc ${devnum}:1 partuuid; fi
-
-setenv bootargs "root=${rootdev} rootwait rootfstype=${rootfstype} ${consoleargs} consoleblank=0 loglevel=${verbosity} ubootpart=${partuuid} usb-storage.quirks=${usbstoragequirks} ${extraargs} ${extraboardargs}"
-
-if test "${docker_optimizations}" = "on"; then setenv bootargs "${bootargs} cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1"; fi
-
-load ${devtype} ${devnum} ${ramdisk_addr_r} ${prefix}uInitrd
-load ${devtype} ${devnum} ${kernel_addr_r} ${prefix}Image
-
-load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
-fdt addr ${fdt_addr_r}
-fdt resize 65536
-for overlay_file in ${overlays}; do
- if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/rockchip/overlay/${overlay_prefix}-${overlay_file}.dtbo; then
- echo "Applying kernel provided DT overlay ${overlay_prefix}-${overlay_file}.dtbo"
- fdt apply ${load_addr} || setenv overlay_error "true"
- fi
-done
-for overlay_file in ${user_overlays}; do
- if load ${devtype} ${devnum} ${load_addr} ${prefix}overlay-user/${overlay_file}.dtbo; then
- echo "Applying user provided DT overlay ${overlay_file}.dtbo"
- fdt apply ${load_addr} || setenv overlay_error "true"
- fi
-done
-if test "${overlay_error}" = "true"; then
- echo "Error applying DT overlays, restoring original DT"
- load ${devtype} ${devnum} ${fdt_addr_r} ${prefix}dtb/${fdtfile}
-else
- if load ${devtype} ${devnum} ${load_addr} ${prefix}dtb/rockchip/overlay/${overlay_prefix}-fixup.scr; then
- echo "Applying kernel provided DT fixup script (${overlay_prefix}-fixup.scr)"
- source ${load_addr}
- fi
- if test -e ${devtype} ${devnum} ${prefix}fixup.scr; then
- load ${devtype} ${devnum} ${load_addr} ${prefix}fixup.scr
- echo "Applying user provided fixup script (fixup.scr)"
- source ${load_addr}
- fi
-fi
-booti ${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}
-
-# Recompile with:
-# mkimage -C none -A arm -T script -d /boot/boot.cmd /boot/boot.scr
-'''
- fsh = FsHelper(ubman.config, 'ext4', 18, 'mmc')
- fsh.setup()
- bootdir = os.path.join(fsh.srcdir, 'boot')
- mkdir_cond(bootdir)
- cmd_fname = os.path.join(bootdir, 'boot.cmd')
- scr_fname = os.path.join(bootdir, 'boot.scr')
- with open(cmd_fname, 'w', encoding='ascii') as outf:
- print(script, file=outf)
-
- infname = os.path.join(ubman.config.source_dir,
- 'test/py/tests/bootstd/armbian.bmp.xz')
- bmp_file = os.path.join(bootdir, 'boot.bmp')
- utils.run_and_log(
- ubman,
- ['sh', '-c', f'xz -dc {infname} >{bmp_file}'])
-
- mkimage = ubman.config.build_dir + '/tools/mkimage'
- utils.run_and_log(
- ubman, f'{mkimage} -C none -A arm -T script -d {cmd_fname} {scr_fname}')
-
- kernel = 'vmlinuz-5.15.63-rockchip64'
- target = os.path.join(bootdir, kernel)
- with open(target, 'wb') as outf:
- print('kernel', outf)
-
- symlink = os.path.join(bootdir, 'Image')
- if os.path.exists(symlink):
- os.remove(symlink)
- utils.run_and_log(
- ubman, f'echo here {kernel} {symlink}')
- os.symlink(kernel, symlink)
- fsh.mk_fs()
- img = DiskHelper(ubman.config, mmc_dev, 'mmc', True)
- img.add_fs(fsh, DiskHelper.EXT4)
- img.create()
- fsh.cleanup()
+from img.script import setup_script_image
def setup_cros_image(ubman):
@@ -523,7 +405,7 @@ def test_ut_dm_init_bootstd(ubman):
"""Initialise data for bootflow tests"""
setup_extlinux_image(ubman, 1, 'mmc')
- setup_bootmenu_image(ubman)
+ setup_script_image(ubman)
setup_cedit_file(ubman)
setup_cros_image(ubman)
setup_android_image(ubman)
--
2.43.0
More information about the U-Boot
mailing list