From f5f32ed8d41d48f5bfd59b531079903621ef2af0 Mon Sep 17 00:00:00 2001 From: bryan Date: Mon, 11 May 2026 19:12:42 -0400 Subject: [PATCH] Pass ROOTFS_PARTSIZE to IB --- openwrtbuilder | 74 ++++++++++++++++++++++++++++---------------------- profiles | 11 ++++---- 2 files changed, 46 insertions(+), 39 deletions(-) diff --git a/openwrtbuilder b/openwrtbuilder index 57fe397..8c817e5 100755 --- a/openwrtbuilder +++ b/openwrtbuilder @@ -175,7 +175,7 @@ install_dependencies() { lock_file="$BUILD_ROOT/.dependencies_imagebuilder.lock" fi - [[ -f $lock_file ]] && debug "$lock_file lock file exists but skipping for --debug" && return 0 + [[ -f $lock_file ]] && debug "$lock_file lock file exists, skipping dependency install" && return 0 if [[ "$mode" == "source" ]]; then # For building from source code see: @@ -403,31 +403,51 @@ ssh_backup() { [[ -d "$FILES_DIR" ]] || execute mkdir -p "$FILES_DIR" # Make backup archive on remote - if ! execute "ssh -t $SSH_BACKUP_PATH sysupgrade -b /tmp/$backup_fname"; then + if ! execute ssh -t "$SSH_BACKUP_PATH" sysupgrade -b "/tmp/$backup_fname"; then echo "SSH backup failed" exit 1 fi # Move backup archive locally - if ! execute "rsync -avz --remove-source-files $SSH_BACKUP_PATH:/tmp/$backup_fname $BUILD_DIR/"; then + if ! execute rsync -avz --remove-source-files "$SSH_BACKUP_PATH:/tmp/$backup_fname" "$BUILD_DIR/"; then echo "Could not copy SSH backup" exit 1 fi # Extract backup archive - if ! execute "tar -C $FILES_DIR -xzf $BUILD_DIR/$backup_fname"; then + if ! execute tar -C "$FILES_DIR" -xzf "$BUILD_DIR/$backup_fname"; then echo "Could not extract SSH backup" exit 1 fi - execute "rm $BUILD_DIR/$backup_fname" + execute rm "$BUILD_DIR/$backup_fname" } make_images() { debug "${FUNCNAME[0]}" - local -a make_opts + local -a make_opts; ((DEBUG)) && make_opts+=("V=sc") + local rootfs_partsize + + # Image Builder accepts ROOTFS_PARTSIZE, not CONFIG_TARGET_ROOTFS_PARTSIZE. + # Parse profile KCONFIGS (scalar string) and extract only this value. + for kconfig in $KCONFIGS; do + case "$kconfig" in + CONFIG_TARGET_ROOTFS_PARTSIZE=*) rootfs_partsize="${kconfig#*=}" ;; + esac + done + + local -a make_cmd=(make "${make_opts[@]}" image + BIN_DIR="$BIN_DIR" + PROFILE="$DEVICE" + PACKAGES="$PACKAGES" + FILES="$FILES_DIR" + --directory="$BUILD_DIR" + --jobs="$JOBS") + + [[ -n "$rootfs_partsize" ]] && make_cmd+=("ROOTFS_PARTSIZE=$rootfs_partsize") # Reuse the existing output + # TODO Disable for now since it was causing issues # if [[ -d "$BIN_DIR" ]]; then # if ask_ok "$BIN_DIR exists. Rebuild?"; then # execute rm -rf "$BIN_DIR" @@ -436,21 +456,9 @@ make_images() { # fi # fi - ((DEBUG)) && make_opts+=("V=sc") - - debug make "${make_opts[@]}" image BIN_DIR="$BIN_DIR" \ - PROFILE="$DEVICE" PACKAGES="$PACKAGES" \ - FILES="$FILES_DIR" --directory="$BUILD_DIR" \ - --jobs="$JOBS" - - make "${make_opts[@]}" image \ - BIN_DIR="$BIN_DIR" \ - PROFILE="$DEVICE" \ - PACKAGES="$PACKAGES" \ - FILES="$FILES_DIR" \ - --directory="$BUILD_DIR" \ - --jobs="$JOBS" \ - > "$BUILD_DIR/make.log" + # Debug manually so we can log output + debug "${make_cmd[*]}" + "${make_cmd[@]}" > "$BUILD_DIR/make.log" 2>&1 } flash_images() { @@ -504,15 +512,14 @@ ssh_upgrade() { } # @description Builds OpenWRT from source code using the the default buildbot as base -# This enables the use of kernel config options in profiles from_source() { debug "${FUNCNAME[0]}" local src_url="https://github.com/openwrt/openwrt.git" local seed_file="$BUILD_DIR/.config" local worktree_meta="$SRC_DIR/.git/worktrees/source-$REF" - local pkg config commit description + local pkg kconfig commit description local -a make_opts - local -a config_opts=( + local -a kconfigs=( "CONFIG_TARGET_${TARGET%%/*}=y" "CONFIG_TARGET_${TARGET//\//_}=y" "CONFIG_TARGET_PROFILE=DEVICE_$DEVICE" @@ -670,22 +677,23 @@ from_source() { # Add custom packages for pkg in $PACKAGES; do if [[ $pkg == -* ]]; then - config_opts+=("CONFIG_PACKAGE_${pkg#-}=n") # remove package + kconfigs+=("CONFIG_PACKAGE_${pkg#-}=n") # remove package else - config_opts+=("CONFIG_PACKAGE_$pkg=y") # add package + kconfigs+=("CONFIG_PACKAGE_$pkg=y") # add package fi done - # Add profile config options - for config in $CONFIGS; do - config_opts+=("$config") + # Add profile kconfig options + # $KCONFIGS is a scalar, use a loop to split and avoid SC2068 + for kconfig in $KCONFIGS; do + kconfigs+=("$kconfig") done # Reset and write options to config seed file [[ -f $seed_file ]] && execute rm -f "$seed_file" - for config in "${config_opts[@]}"; do - debug "Writing $config to $seed_file" - echo "$config" >> "$seed_file" + for kconfig in "${kconfigs[@]}"; do + debug "Writing $kconfig to $seed_file" + echo "$kconfig" >> "$seed_file" done # Expand seed into full config @@ -813,7 +821,7 @@ main() { declare -g PACKAGES="${P_ARR[packages]:-}" # scalar declare -g CHERRYPICKS="${P_ARR[cherrypicks]:-}" # scalar declare -g BRANCHES="${P_ARR[branches]:-}" # scalar - declare -g CONFIGS="${P_ARR[configs]:-}" # scalar + declare -g KCONFIGS="${P_ARR[kconfigs]:-}" # scalar install_dependencies "$MODE" diff --git a/profiles b/profiles index 4f6e42d..78bcf40 100644 --- a/profiles +++ b/profiles @@ -13,7 +13,7 @@ default_packages=( ) # Default kernel configs -default_configs=( +default_kconfigs=( ) # Current devices @@ -27,9 +27,9 @@ declare -Ag r4s=( collectd-mod-df usbutils kmod-usb-storage kmod-usb-storage-uas \ kmod-fs-btrfs btrfs-progs block-mount smcroute avahi-daemon \ ethtool ca-bundle tailscale" - [configs]="${default_configs[*]} \ - CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y CONFIG_BTRFS_PROGS_ZSTD=y \ - CONFIG_TARGET_ROOTFS_PARTSIZE=512 CONFIG_TARGET_KERNEL_PARTSIZE=32" + [kconfigs]="${default_kconfigs[*]} \ + CONFIG_TARGET_ROOTFS_PARTSIZE=512 CONFIG_TARGET_KERNEL_PARTSIZE=32 \ + CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y CONFIG_BTRFS_PROGS_ZSTD=y" [files]="/mnt/backup" # For 24.10 branch (Linux 6.6) # [cherrypicks]="https://github.com/wurzerj/openwrt.git:59d6e31 \ @@ -65,7 +65,7 @@ declare -Ag n5100=( btrfs-progs block-mount cryptsetup kmod-crypto-xts smcroute \ avahi-daemon ethtool ca-bundle smartmontools intel-microcode \ lm-sensors samba4-server luci-app-samba4 tailscale shadow-useradd" - [configs]="${default_configs[*]} \ + [kconfigs]="${default_kconfigs[*]} \ CONFIG_KERNEL_BTRFS_FS_POSIX_ACL=y CONFIG_BTRFS_PROGS_ZSTD=y \ CONFIG_TARGET_ROOTFS_PARTSIZE=512 CONFIG_TARGET_KERNEL_PARTSIZE=32" # [files]="/mnt/backup" @@ -107,7 +107,6 @@ declare -Ag w1700k_ap=( [release]="snapshot" [packages]="${default_packages[*]} \ -dnsmasq -odhcpd-ipv6only -nftables -firewall4 \ - irqblance luci-app-irqbalance \ wpad-openssl libiwinfo-data tailscale bridger switch smp_util \ kmod-crypto-hw-eip93" # [branches]="https://github.com/OpenWRT-fanboy/OpenW1700k.git@minimal"