Sub-set of device-specific bootimg parameters results in wrong parameters passed to mkbootimg
On top of this repo's `master`, I was doing the following <details> <summary>Click to expand</summary> ```diff diff --git a/devices/qcom/bootloader.sh b/devices/qcom/bootloader.sh index c0c64ab..110a635 100755 --- a/devices/qcom/bootloader.sh +++ b/devices/qcom/bootloader.sh @@ -1,5 +1,7 @@ #!/bin/sh +set -x + SCRIPT="$0" DEVICE="$1" diff --git a/devices/qcom/configs/sdm845.toml b/devices/qcom/configs/sdm845.toml index 5ecfdf7..fd56220 100644 --- a/devices/qcom/configs/sdm845.toml +++ b/devices/qcom/configs/sdm845.toml @@ -10,6 +10,18 @@ pagesize = 4096 vendor = "google" model = "blueline" +[[device]] +vendor = "google" +model = "crosshatch" +#bootimg.base = 0x0 +bootimg.version = 2 +#bootimg.kernel = 0x8000 +#bootimg.ramdisk = 0x1000000 +bootimg.second = 0x00f00000 +#bootimg.tags = 0x100 +#bootimg.pagesize = 4096 +bootimg.dtb_offset = 0x01f00000 + [[device]] vendor = "lg" model = "judyln" ``` </details> because I assumed I shouldn't specify the parameters where the device-specific parameters are the same as the SoC-specific defaults. Yet <details> <summary>Click to expand</summary> ``` 2026/07/12 17:01:08 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + tomlq -r .device[1].vendor /tmp/script/configs/sdm845.toml 2026/07/12 17:01:09 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + VENDOR=google 2026/07/12 17:01:09 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + tomlq -r .device[1].model /tmp/script/configs/sdm845.toml 2026/07/12 17:01:11 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + MODEL=crosshatch 2026/07/12 17:01:11 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + tomlq -r if .device[1].variant then .device[1].variant else "" end /tmp/script/configs/sdm845.toml 2026/07/12 17:01:12 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + VARIANT= 2026/07/12 17:01:12 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + tomlq -r if .device[1].chipset then .device[1].chipset else "sdm845" end /tmp/script/configs/sdm845.toml 2026/07/12 17:01:14 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + DEVICE_SOC=sdm845 2026/07/12 17:01:14 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + tomlq -r if .device[1].append then .device[1].append else "" end /tmp/script/configs/sdm845.toml 2026/07/12 17:01:16 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + APPEND= 2026/07/12 17:01:16 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + tomlq -r if .device[1].bootimg then .device[1].bootimg else "" end /tmp/script/configs/sdm845.toml 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + DEVICE_BOOTIMG={ 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "version": 2, 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "second": 15728640, 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "dtb_offset": 32505856 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | } 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + CMDLINE=mobile.qcomsoc=qcom/sdm845 mobile.vendor=google mobile.model=crosshatch 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + [ ] 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + FULLMODEL=crosshatch 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + DTB_FILE=/usr/lib/linux-image-6.12-sdm845/qcom/sdm845-google-crosshatch.dtb 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + LOGLEVEL=quiet 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + [ ] 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + [ { 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "version": 2, 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "second": 15728640, 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "dtb_offset": 32505856 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | } ] 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + bootimg_offsets { 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "version": 2, 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "second": 15728640, 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "dtb_offset": 32505856 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | } 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + local BOOTIMG={ 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "version": 2, 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "second": 15728640, 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "dtb_offset": 32505856 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | } 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + echo { 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "version": 2, 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "second": 15728640, 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "dtb_offset": 32505856 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | } 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + jq -r if .version then .version else 0 end - 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + local VERSION=2 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + echo { 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "version": 2, 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "second": 15728640, 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "dtb_offset": 32505856 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | } 2026/07/12 17:01:17 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + jq -r .kernel + .base - 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + local KERNEL=null 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + echo { 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "version": 2, 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "second": 15728640, 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "dtb_offset": 32505856 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | } 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + jq -r .ramdisk + .base - 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + local RAMDISK=null 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + echo { 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "version": 2, 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "second": 15728640, 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "dtb_offset": 32505856 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | } 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + jq -r .second + .base - 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + local SECOND=15728640 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + echo { 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "version": 2, 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "second": 15728640, 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "dtb_offset": 32505856 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | } 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + jq -r .tags + .base - 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + local TAGS=null 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + echo { 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "version": 2, 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "second": 15728640, 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "dtb_offset": 32505856 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | } 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + jq -r .pagesize - 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + local PAGE_SIZE=null 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + echo { 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "version": 2, 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "second": 15728640, 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | "dtb_offset": 32505856 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | } 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + jq -r if .dtb then .dtb + .base else "" end - 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + local DTB= 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + local ARGS=--kernel_offset null --ramdisk_offset null 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + ARGS=--kernel_offset null --ramdisk_offset null --second_offset 15728640 --tags_offset null 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + ARGS=--kernel_offset null --ramdisk_offset null --second_offset 15728640 --tags_offset null --pagesize null 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + [ 2 != 0 ] 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + ARGS=--kernel_offset null --ramdisk_offset null --second_offset 15728640 --tags_offset null --pagesize null --header_version 2 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + [ ] 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + echo --kernel_offset null --ramdisk_offset null --second_offset 15728640 --tags_offset null --pagesize null --header_version 2 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + BOOTIMG_ARGS=--kernel_offset null --ramdisk_offset null --second_offset 15728640 --tags_offset null --pagesize null --header_version 2 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + echo --kernel_offset null --ramdisk_offset null --second_offset 15728640 --tags_offset null --pagesize null --header_version 2 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + grep -q dtb_offset 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + echo Creating boot image for crosshatch... 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | Creating boot image for crosshatch... 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + cat /boot/vmlinuz-6.12-sdm845 /usr/lib/linux-image-6.12-sdm845/qcom/sdm845-google-crosshatch.dtb 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | cat: /usr/lib/linux-image-6.12-sdm845/qcom/sdm845-google-crosshatch.dtb: No such file or directory 2026/07/12 17:01:18 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | + mkbootimg -o /bootimg-crosshatch --kernel_offset null --ramdisk_offset null --second_offset 15728640 --tags_offset null --pagesize null --header_version 2 --kernel /tmp/kernel-dtb --ramdisk /boot/initrd.img-6.12-sdm845 --cmdline mobile.root=UUID=d0a0962c-6cae-4da3-b96d-be99274437b9 mobile.qcomsoc=qcom/sdm845 mobile.vendor=google mobile.model=crosshatch init=/sbin/init ro quiet splash 2026/07/12 17:01:19 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | usage: mkbootimg [-h] [--kernel KERNEL] [--ramdisk RAMDISK] [--second SECOND] 2026/07/12 17:01:19 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | [--dtb DTB] [--recovery_dtbo RECOVERY_DTBO | 2026/07/12 17:01:19 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | --recovery_acpio RECOVERY_ACPIO] [--cmdline CMDLINE] 2026/07/12 17:01:19 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | [--vendor_cmdline VENDOR_CMDLINE] [--base BASE] 2026/07/12 17:01:19 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | [--kernel_offset KERNEL_OFFSET] 2026/07/12 17:01:19 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | [--ramdisk_offset RAMDISK_OFFSET] 2026/07/12 17:01:19 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | [--second_offset SECOND_OFFSET] [--dtb_offset DTB_OFFSET] 2026/07/12 17:01:19 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | [--os_version OS_VERSION] [--os_patch_level OS_PATCH_LEVEL] 2026/07/12 17:01:19 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | [--tags_offset TAGS_OFFSET] [--board BOARD] 2026/07/12 17:01:19 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | [--pagesize {2048,4096,8192,16384}] [--id] 2026/07/12 17:01:19 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | [--header_version HEADER_VERSION] [-o OUTPUT] 2026/07/12 17:01:19 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | [--vendor_boot VENDOR_BOOT] [--vendor_ramdisk VENDOR_RAMDISK] 2026/07/12 17:01:19 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | [--vendor_bootconfig VENDOR_BOOTCONFIG] 2026/07/12 17:01:19 bootloader.sh sdm845 mobian-sdm845-plasma-mobile-20260712 | mkbootimg: error: argument --kernel_offset: invalid parse_int value: 'null' ``` </details> e.g. `local KERNEL=null` and `local RAMDISK=null`. When the device-specific parameters are not specified, they are kept `null` without falling back to the default values for that SoC. Workaround is to specify the complete set of bootimg parameters whenever a new device requires some special bootimg parameters, but it would be nice for `devices/qcom/bootloader.sh` to be able to fallback to the default values.
issue