From d7e54484cc9e91bb20650609d1d7aca2c717b849 Mon Sep 17 00:00:00 2001 From: Luke Craig Date: Mon, 13 Jul 2026 17:51:32 -0400 Subject: [PATCH 1/2] configs: enable CONFIG_TIPC and CONFIG_CMA across all targets Add CONFIG_TIPC=y and CONFIG_CMA=y to all-common.inc for both kernel versions (4.10, 6.13), so they apply to every target arch. - CONFIG_TIPC: TIPC networking protocol, needed by firmware that uses it. - CONFIG_CMA: Contiguous Memory Allocator, for memory-model coverage. CONFIG_TUN and CONFIG_HUGETLBFS were already enabled globally; no change needed there. Verified via 'build.sh --config-only' that both new options survive savedefconfig on all 13 arch/version combinations tested (arm32, arm64, mips 32/64 LE/BE, x86_64, powerpc, riscv64, loongarch64). --- configs/4.10/all-common.inc | 2 ++ configs/6.13/all-common.inc | 2 ++ 2 files changed, 4 insertions(+) diff --git a/configs/4.10/all-common.inc b/configs/4.10/all-common.inc index 8fd198d..a6b327b 100644 --- a/configs/4.10/all-common.inc +++ b/configs/4.10/all-common.inc @@ -38,6 +38,7 @@ CONFIG_CGROUP_NET_PRIO=y CONFIG_CGROUP_PIDS=y CONFIG_CGROUP_SCHED=y CONFIG_CHECKPOINT_RESTORE=y +CONFIG_CMA=y CONFIG_CODA_FS=y CONFIG_CONFIGFS_FS=y CONFIG_CRAMFS=y @@ -265,6 +266,7 @@ CONFIG_SYN_COOKIES=y CONFIG_SYSVIPC=y CONFIG_SYSV_FS=y CONFIG_TASKSTATS=y +CONFIG_TIPC=y CONFIG_TMPFS=y CONFIG_TUN=y CONFIG_UDF_FS=y diff --git a/configs/6.13/all-common.inc b/configs/6.13/all-common.inc index fff1110..4c71df9 100644 --- a/configs/6.13/all-common.inc +++ b/configs/6.13/all-common.inc @@ -31,6 +31,7 @@ CONFIG_CGROUP_NET_PRIO=y CONFIG_CGROUP_PIDS=y CONFIG_CGROUP_SCHED=y CONFIG_CHECKPOINT_RESTORE=y +CONFIG_CMA=y CONFIG_CODA_FS=y CONFIG_CONFIGFS_FS=y CONFIG_CRAMFS=y @@ -274,6 +275,7 @@ CONFIG_SYN_COOKIES=y CONFIG_SYSVIPC=y CONFIG_SYSV_FS=y CONFIG_TASKSTATS=y +CONFIG_TIPC=y CONFIG_TMPFS=y CONFIG_TUN=y CONFIG_UDF_FS=y From bca5295f9dfb1bb8093faa5166835e6bd61f5810 Mon Sep 17 00:00:00 2001 From: Luke Craig Date: Mon, 13 Jul 2026 17:51:33 -0400 Subject: [PATCH 2/2] build.sh: fix local --config-only (set -u guard + diff exit) Two latent bugs broke 'build.sh --config-only' outside the shared-docker CI: - rewrite_mount() dereferenced $PENGUIN_HOST_MOUNT_FROM/_TO unguarded under 'set -u', aborting every local build where those env vars aren't exported. Guard them with ${VAR:-}. - The config-only lint diff runs under 'set -e' and always returns non-zero (savedefconfig prunes defaults/dupes), so a multi-target --config-only run aborted after the first target. Append '|| true' since the diff is purely informational. With both fixed, 'build.sh --config-only --targets "a b"' lints every target with no env-var workaround. --- _in_container_build.sh | 5 ++++- build.sh | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/_in_container_build.sh b/_in_container_build.sh index 759c0ad..9e380e7 100755 --- a/_in_container_build.sh +++ b/_in_container_build.sh @@ -170,7 +170,10 @@ for TARGET in $TARGETS; do echo "Linting config for $TARGET to config_${VERSION}_${TARGET}.linted" make -C /app/linux/$VERSION ARCH=${short_arch} CROSS_COMPILE=$(get_cc $TARGET $VERSION) O=/tmp/build/${VERSION}/${TARGET}/ savedefconfig cp "/tmp/build/${VERSION}/${TARGET}/defconfig" "/app/config_${VERSION}_${TARGET}.linted" - diff -u <(sort /tmp/build/${VERSION}/${TARGET}/.config) <(sort /tmp/build/${VERSION}/${TARGET}/defconfig | sed '/^[ #]/d') + # Informational only: savedefconfig prunes defaults/dupes so the configs + # always differ. Don't let the non-zero exit abort the (set -e) loop, or + # only the first target ever gets linted in a multi-target --config-only run. + diff -u <(sort /tmp/build/${VERSION}/${TARGET}/.config) <(sort /tmp/build/${VERSION}/${TARGET}/defconfig | sed '/^[ #]/d') || true else echo "Building kernel for $TARGET" # 2. Inject missing label for x86_64 R_X86_64_PLT32 backport bug diff --git a/build.sh b/build.sh index 7987966..3b844ac 100755 --- a/build.sh +++ b/build.sh @@ -147,8 +147,8 @@ fi # node-shared path directly.) rewrite_mount() { local path="$1" - if [[ -n "$PENGUIN_HOST_MOUNT_FROM" && -n "$PENGUIN_HOST_MOUNT_TO" \ - && "$path" == "$PENGUIN_HOST_MOUNT_FROM"* ]]; then + if [[ -n "${PENGUIN_HOST_MOUNT_FROM:-}" && -n "${PENGUIN_HOST_MOUNT_TO:-}" \ + && "$path" == "${PENGUIN_HOST_MOUNT_FROM}"* ]]; then printf '%s' "${PENGUIN_HOST_MOUNT_TO}${path#"$PENGUIN_HOST_MOUNT_FROM"}" else printf '%s' "$path"