All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] arm-bsp/external-system: fix the gen_module race, again
@ 2023-02-08 11:38 Ross Burton
  2023-02-12 21:29 ` Jon Mason
  2023-02-17  4:30 ` Jon Mason
  0 siblings, 2 replies; 3+ messages in thread
From: Ross Burton @ 2023-02-08 11:38 UTC (permalink / raw)
  To: meta-arm; +Cc: nd

Apply the patch from scp-firmware to the third copy of the buggy
Makefiles which fail randomly under parallel builds.

Signed-off-by: Ross Burton <ross.burton@arm.com>
---
 .../external-system/external-system_0.1.0.bb  |  3 +-
 .../external-system/files/race.patch          | 66 +++++++++++++++++++
 2 files changed, 68 insertions(+), 1 deletion(-)
 create mode 100644 meta-arm-bsp/recipes-bsp/external-system/files/race.patch

diff --git a/meta-arm-bsp/recipes-bsp/external-system/external-system_0.1.0.bb b/meta-arm-bsp/recipes-bsp/external-system/external-system_0.1.0.bb
index 5bb8c37c..dce29a93 100644
--- a/meta-arm-bsp/recipes-bsp/external-system/external-system_0.1.0.bb
+++ b/meta-arm-bsp/recipes-bsp/external-system/external-system_0.1.0.bb
@@ -8,7 +8,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.gitlab.arm.com/arm-reference-solutions/corstone1000/external_system/rtx.git;protocol=https;branch=master"
+SRC_URI = "gitsm://git.gitlab.arm.com/arm-reference-solutions/corstone1000/external_system/rtx.git;protocol=https;branch=master \
+           file://race.patch"
 SRCREV = "8c9dca74b104ff6c9722fb0738ba93dd3719c080"
 PV .= "+git${SRCPV}"
 
diff --git a/meta-arm-bsp/recipes-bsp/external-system/files/race.patch b/meta-arm-bsp/recipes-bsp/external-system/files/race.patch
new file mode 100644
index 00000000..c6bc4f22
--- /dev/null
+++ b/meta-arm-bsp/recipes-bsp/external-system/files/race.patch
@@ -0,0 +1,66 @@
+Upstream-Status: Submitted [https://gitlab.arm.com/arm-reference-solutions/corstone1000/external_system/rtx/-/issues/1]
+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):
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] arm-bsp/external-system: fix the gen_module race, again
  2023-02-08 11:38 [PATCH] arm-bsp/external-system: fix the gen_module race, again Ross Burton
@ 2023-02-12 21:29 ` Jon Mason
  2023-02-17  4:30 ` Jon Mason
  1 sibling, 0 replies; 3+ messages in thread
From: Jon Mason @ 2023-02-12 21:29 UTC (permalink / raw)
  To: meta-arm, Ross Burton; +Cc: nd

On Wed, 8 Feb 2023 11:38:53 +0000, Ross Burton wrote:
> Apply the patch from scp-firmware to the third copy of the buggy
> Makefiles which fail randomly under parallel builds.

Applied, thanks!

[1/1] arm-bsp/external-system: fix the gen_module race, again
      commit: 0d7489a0552bd83a1cc9f2669dfa458a66924217

Best regards,
-- 
Jon Mason <jon.mason@arm.com>


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] arm-bsp/external-system: fix the gen_module race, again
  2023-02-08 11:38 [PATCH] arm-bsp/external-system: fix the gen_module race, again Ross Burton
  2023-02-12 21:29 ` Jon Mason
@ 2023-02-17  4:30 ` Jon Mason
  1 sibling, 0 replies; 3+ messages in thread
From: Jon Mason @ 2023-02-17  4:30 UTC (permalink / raw)
  To: meta-arm, Ross Burton; +Cc: nd

On Wed, 8 Feb 2023 11:38:53 +0000, Ross Burton wrote:
> Apply the patch from scp-firmware to the third copy of the buggy
> Makefiles which fail randomly under parallel builds.

Applied, thanks!

[1/1] arm-bsp/external-system: fix the gen_module race, again
      commit: 0d7489a0552bd83a1cc9f2669dfa458a66924217

Best regards,
-- 
Jon Mason <jon.mason@arm.com>


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-02-17  4:31 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-08 11:38 [PATCH] arm-bsp/external-system: fix the gen_module race, again Ross Burton
2023-02-12 21:29 ` Jon Mason
2023-02-17  4:30 ` Jon Mason

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.