From d783fd11c33b76587d3231cb20d823bb6d5e26f5 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 12 Nov 2026 15:27:11 +0000 Subject: [PATCH] build: the two map files are one grouped target, so their sub-make runs once (#185) kernel/Makefile gave capsules/v4/sys/map-64.f18 and map-32.f18 one rule with two plain targets -- in GNU make, two rules sharing a recipe. Under -j both ran at once: two make -C v4 sysmap built and ran the same v4/build/mkmap- side by side (Build run 255's RASPI job: "mkmap-32: Permission denied"). Now one grouped target (&:, GNU make 4.3+, as here and in the CI image). Seen to fail first: the two targets with -j8, mkmap removed each time, 12 runs -- 6 failed ("Text file busy", "Permission denied"). After: 0 of 12. Both sets of runs in logs/20261112-152711/race-185/. The map files are unchanged. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_017RzZgrf7V7Zk2iczBXDRbm --- kernel/Makefile | 5 ++++- logs/20261112-152711/race-185/after-runs.log | 3 +++ logs/20261112-152711/race-185/before-runs.log | 3 +++ 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 logs/20261112-152711/race-185/after-runs.log create mode 100644 logs/20261112-152711/race-185/before-runs.log diff --git a/kernel/Makefile b/kernel/Makefile index 02221281..2782b1b2 100644 --- a/kernel/Makefile +++ b/kernel/Makefile @@ -913,7 +913,10 @@ $(V4_ROM_C) $(V4_MAP_C) &: FORCE # the same description as the ROM and v4_map_image (v4/tests/host_map.h), and # the ROM assembles it from this kernel's capsule directory: it is made # again before the directory is packed, so the three always agree. -$(CAPSULES_DIR)/v4/sys/map-64.f18 $(CAPSULES_DIR)/v4/sys/map-32.f18: FORCE +# One rule making both (&:, a grouped target, GNU make 4.3+): with two plain targets make ran the +# recipe once for each, and under -j the two sub-makes built and ran the same v4/build/mkmap- +# at once -- "Text file busy", "Permission denied" (#185). +$(CAPSULES_DIR)/v4/sys/map-64.f18 $(CAPSULES_DIR)/v4/sys/map-32.f18 &: FORCE @$(MAKE) --no-print-directory -C v4 CC=cc sysmap $(LOADER_OBJ_DIR)/v4engine/v4_rom.o: $(V4_ROM_C) | $(LOADER_OBJ_DIR) diff --git a/logs/20261112-152711/race-185/after-runs.log b/logs/20261112-152711/race-185/after-runs.log new file mode 100644 index 00000000..3047c3ac --- /dev/null +++ b/logs/20261112-152711/race-185/after-runs.log @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6a9c7dba6b783c29be8a1e62feeb9a7faf3bf6401ebc0419f4497238f370845 +size 27483 diff --git a/logs/20261112-152711/race-185/before-runs.log b/logs/20261112-152711/race-185/before-runs.log new file mode 100644 index 00000000..3b0e2801 --- /dev/null +++ b/logs/20261112-152711/race-185/before-runs.log @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c546dd08fa4b42be3f7303f1520035763e363ce44187e77e1730c9dc1387e791 +size 55126