All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] arm-bsp/boot-firmware: fix build race
@ 2021-06-14 15:59 Ross Burton
  0 siblings, 0 replies; only message in thread
From: Ross Burton @ 2021-06-14 15:59 UTC (permalink / raw)
  To: meta-arm

As boot-firmware is heavily based on SCP-firmware it has the same build
race.  Luckily, the patch in SCP-firmware[1] applies cleanly to
boot-firmware.

[1] https://github.com/ARM-software/SCP-firmware/commit/34e1c04534607f5605255f39fb46e26261fc9c4e
Signed-off-by: Ross Burton <ross.burton@arm.com>

Change-Id: Iaa2f1bb71fce66589db530ea378d4ce995a6bed9
---
 .../boot-firmware/gen-module-race.patch       | 66 +++++++++++++++++++
 .../boot-firmware/boot-firmware_git.bb        |  3 +-
 2 files changed, 68 insertions(+), 1 deletion(-)
 create mode 100644 meta-arm-bsp/recipes-bsp/boot-firmware/boot-firmware/gen-module-race.patch

diff --git a/meta-arm-bsp/recipes-bsp/boot-firmware/boot-firmware/gen-module-race.patch b/meta-arm-bsp/recipes-bsp/boot-firmware/boot-firmware/gen-module-race.patch
new file mode 100644
index 0000000..c93e91a
--- /dev/null
+++ b/meta-arm-bsp/recipes-bsp/boot-firmware/boot-firmware/gen-module-race.patch
@@ -0,0 +1,66 @@
+Upstream-Status: Pending
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From 34e1c04534607f5605255f39fb46e26261fc9c4e Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@arm.com>
+Date: Tue, 8 Sep 2020 11:49:08 +0100
+Subject: [PATCH] tools/gen_module_code: atomically rewrite the generated files
+
+The gen_module rule in rules.mk is marked as .PHONY, so make will
+execute it whenever it is mentioned. This results in gen_module_code
+being executed 64 times for a Juno build.
+
+However in heavily parallel builds there's a good chance that
+gen_module_code is writing a file whilst the compiler is reading it
+because make also doesn't know what files are generated by
+gen_module_code.
+
+The correct fix is to adjust the Makefiles so that the dependencies are
+correct but this isn't trivial, so band-aid the problem by atomically
+writing the generated files.
+
+Change-Id: I82d44f9ea6537a91002e1f80de8861d208571630
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+---
+ tools/gen_module_code.py | 19 ++++++++++++++-----
+ 1 file changed, 14 insertions(+), 5 deletions(-)
+
+diff --git a/tools/gen_module_code.py b/tools/gen_module_code.py
+index 7b3953845..ee099b713 100755
+--- a/tools/gen_module_code.py
++++ b/tools/gen_module_code.py
+@@ -17,6 +17,7 @@
+ import argparse
+ import os
+ import sys
++import tempfile
+ 
+ DEFAULT_PATH = 'build/'
+ 
+@@ -53,13 +54,21 @@
+ 
+ def generate_file(path, filename, content):
+     full_filename = os.path.join(path, filename)
+-    with open(full_filename, 'a+') as f:
+-        f.seek(0)
+-        if f.read() != content:
++
++    try:
++        with open(full_filename) as f:
++            rewrite = f.read() != content
++    except FileNotFoundError:
++        rewrite = True
++
++    if rewrite:
++        with tempfile.NamedTemporaryFile(prefix="gen-module-code",
++                                         dir=path,
++                                         delete=False,
++                                         mode="wt") as f:
+             print("[GEN] {}...".format(full_filename))
+-            f.seek(0)
+-            f.truncate()
+             f.write(content)
++        os.replace(f.name, full_filename)
+ 
+ 
+ def generate_header(path, modules):
diff --git a/meta-arm-bsp/recipes-bsp/boot-firmware/boot-firmware_git.bb b/meta-arm-bsp/recipes-bsp/boot-firmware/boot-firmware_git.bb
index c7242d1..c48e586 100644
--- a/meta-arm-bsp/recipes-bsp/boot-firmware/boot-firmware_git.bb
+++ b/meta-arm-bsp/recipes-bsp/boot-firmware/boot-firmware_git.bb
@@ -5,7 +5,8 @@ LICENSE = "BSD-3-Clause & Apache-2.0"
 LIC_FILES_CHKSUM = "file://license.md;md5=e44b2531cd6ffe9dece394dbe988d9a0 \
                     file://cmsis/LICENSE.txt;md5=e3fc50a88d0a364313df4b21ef20c29e"
 
-SRC_URI = "gitsm://git.linaro.org/landing-teams/working/arm/boot-firmware.git;protocol=https"
+SRC_URI = "gitsm://git.linaro.org/landing-teams/working/arm/boot-firmware.git;protocol=https \
+           file://gen-module-race.patch"
 SRCREV = "af7eeb1bb8c5a85a5e5a76d48acc6fe864d715a9"
 PV = "2020.02.10+git${SRCPV}"
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2021-06-14 15:59 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-14 15:59 [PATCH] arm-bsp/boot-firmware: fix build race Ross Burton

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.