Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v2] package/linux-tools: Fix parallel compilation
@ 2025-04-22  6:36 Charlie Jenkins
  2025-04-22 19:43 ` Thomas Petazzoni via buildroot
  2025-05-02 11:03 ` Arnout Vandecappelle via buildroot
  0 siblings, 2 replies; 3+ messages in thread
From: Charlie Jenkins @ 2025-04-22  6:36 UTC (permalink / raw)
  To: buildroot, Yann E. MORIN, Thomas Petazzoni; +Cc: Charlie Jenkins

linux-tools opportunistically set linux as only a patch dependency. This
unfortunately introduces a race condition in the shared linux scripts
when using PER_PACKAGE_DIRECTORIES and using top level parallelism. The
race manifests as the error "/bin/sh: 1: scripts/basic/fixdep:
Permission denied". This happens when the linux package and the
linux-tools package are being compiled in parallel.

The linux-tools currently using fixdep are perf and rtla. When the
timing is correct, perf, rtla, or the kernel Makefile will try to use
fixdep while one of the others is compiling fixed, resulting in fixdep
being briefly not available.

To fix this, set linux as a build dependency instead of a patch
dependency.

Signed-off-by: Charlie Jenkins <charlie@rivosinc.com>
Reviewed-by: Yann E. MORIN <yann.morin.1998@free.fr>
---
While the timing of this seems like it should very rarely be triggered,
on my build server I hit this issue nearly 100% of the time.
---
Changes in v2:
- Added more details to how/why the race occurs
- Link to v1: https://lore.kernel.org/r/20250409-fix_linux_tools_parallel-v1-1-14135d77acf1@rivosinc.com
---
 package/linux-tools/linux-tools.mk | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/package/linux-tools/linux-tools.mk b/package/linux-tools/linux-tools.mk
index 81b1fbc17605d6f003558d113143b64b5af6714d..49e73a9ca4eca91afe7474302c13286f6665762d 100644
--- a/package/linux-tools/linux-tools.mk
+++ b/package/linux-tools/linux-tools.mk
@@ -19,8 +19,12 @@
 
 include $(sort $(wildcard package/linux-tools/*.mk.in))
 
-# We only need the kernel to be extracted, not actually built
-LINUX_TOOLS_PATCH_DEPENDENCIES = linux
+# Prevent the kernel from being compiled in parallel with linux-tools. The
+# kernel and some linux-tools (such as perf) use fixdep to manage kconfig
+# dependencies. There is a race condition where the kernel and linux-tools try
+# to build fixdep while the other tries to use fixdep, resulting in the use of
+# fixdep failing.
+LINUX_TOOLS_DEPENDENCIES = linux
 
 # Install Linux kernel tools in the staging directory since some tools
 # may install shared libraries and headers (e.g. cpupower).

---
base-commit: 7336c5fa93a896130511d661f0d42359a046ec9a
change-id: 20250409-fix_linux_tools_parallel-2323829caf82
-- 
- Charlie

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH v2] package/linux-tools: Fix parallel compilation
  2025-04-22  6:36 [Buildroot] [PATCH v2] package/linux-tools: Fix parallel compilation Charlie Jenkins
@ 2025-04-22 19:43 ` Thomas Petazzoni via buildroot
  2025-05-02 11:03 ` Arnout Vandecappelle via buildroot
  1 sibling, 0 replies; 3+ messages in thread
From: Thomas Petazzoni via buildroot @ 2025-04-22 19:43 UTC (permalink / raw)
  To: Charlie Jenkins; +Cc: buildroot, Yann E. MORIN

On Mon, 21 Apr 2025 23:36:59 -0700
Charlie Jenkins <charlie@rivosinc.com> wrote:

> linux-tools opportunistically set linux as only a patch dependency. This
> unfortunately introduces a race condition in the shared linux scripts
> when using PER_PACKAGE_DIRECTORIES and using top level parallelism. The
> race manifests as the error "/bin/sh: 1: scripts/basic/fixdep:
> Permission denied". This happens when the linux package and the
> linux-tools package are being compiled in parallel.
> 
> The linux-tools currently using fixdep are perf and rtla. When the
> timing is correct, perf, rtla, or the kernel Makefile will try to use
> fixdep while one of the others is compiling fixed, resulting in fixdep
> being briefly not available.
> 
> To fix this, set linux as a build dependency instead of a patch
> dependency.
> 
> Signed-off-by: Charlie Jenkins <charlie@rivosinc.com>
> Reviewed-by: Yann E. MORIN <yann.morin.1998@free.fr>
> ---
> While the timing of this seems like it should very rarely be triggered,
> on my build server I hit this issue nearly 100% of the time.
> ---
> Changes in v2:
> - Added more details to how/why the race occurs
> - Link to v1: https://lore.kernel.org/r/20250409-fix_linux_tools_parallel-v1-1-14135d77acf1@rivosinc.com
> ---
>  package/linux-tools/linux-tools.mk | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)

Nice commit message, thanks a lot! Applied.

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH v2] package/linux-tools: Fix parallel compilation
  2025-04-22  6:36 [Buildroot] [PATCH v2] package/linux-tools: Fix parallel compilation Charlie Jenkins
  2025-04-22 19:43 ` Thomas Petazzoni via buildroot
@ 2025-05-02 11:03 ` Arnout Vandecappelle via buildroot
  1 sibling, 0 replies; 3+ messages in thread
From: Arnout Vandecappelle via buildroot @ 2025-05-02 11:03 UTC (permalink / raw)
  To: Charlie Jenkins, buildroot, Yann E. MORIN, Thomas Petazzoni



On 22/04/2025 08:36, Charlie Jenkins wrote:
> linux-tools opportunistically set linux as only a patch dependency. This
> unfortunately introduces a race condition in the shared linux scripts
> when using PER_PACKAGE_DIRECTORIES and using top level parallelism. The
> race manifests as the error "/bin/sh: 1: scripts/basic/fixdep:
> Permission denied". This happens when the linux package and the
> linux-tools package are being compiled in parallel.
> 
> The linux-tools currently using fixdep are perf and rtla. When the
> timing is correct, perf, rtla, or the kernel Makefile will try to use
> fixdep while one of the others is compiling fixed, resulting in fixdep
> being briefly not available.
> 
> To fix this, set linux as a build dependency instead of a patch
> dependency.
> 
> Signed-off-by: Charlie Jenkins <charlie@rivosinc.com>
> Reviewed-by: Yann E. MORIN <yann.morin.1998@free.fr>

  Applied to 2025.02.x, thanks.

  Regards,
  Arnout

> ---
> While the timing of this seems like it should very rarely be triggered,
> on my build server I hit this issue nearly 100% of the time.
> ---
> Changes in v2:
> - Added more details to how/why the race occurs
> - Link to v1: https://lore.kernel.org/r/20250409-fix_linux_tools_parallel-v1-1-14135d77acf1@rivosinc.com
> ---
>   package/linux-tools/linux-tools.mk | 8 ++++++--
>   1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/package/linux-tools/linux-tools.mk b/package/linux-tools/linux-tools.mk
> index 81b1fbc17605d6f003558d113143b64b5af6714d..49e73a9ca4eca91afe7474302c13286f6665762d 100644
> --- a/package/linux-tools/linux-tools.mk
> +++ b/package/linux-tools/linux-tools.mk
> @@ -19,8 +19,12 @@
>   
>   include $(sort $(wildcard package/linux-tools/*.mk.in))
>   
> -# We only need the kernel to be extracted, not actually built
> -LINUX_TOOLS_PATCH_DEPENDENCIES = linux
> +# Prevent the kernel from being compiled in parallel with linux-tools. The
> +# kernel and some linux-tools (such as perf) use fixdep to manage kconfig
> +# dependencies. There is a race condition where the kernel and linux-tools try
> +# to build fixdep while the other tries to use fixdep, resulting in the use of
> +# fixdep failing.
> +LINUX_TOOLS_DEPENDENCIES = linux
>   
>   # Install Linux kernel tools in the staging directory since some tools
>   # may install shared libraries and headers (e.g. cpupower).
> 
> ---
> base-commit: 7336c5fa93a896130511d661f0d42359a046ec9a
> change-id: 20250409-fix_linux_tools_parallel-2323829caf82

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

end of thread, other threads:[~2025-05-02 11:03 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-22  6:36 [Buildroot] [PATCH v2] package/linux-tools: Fix parallel compilation Charlie Jenkins
2025-04-22 19:43 ` Thomas Petazzoni via buildroot
2025-05-02 11:03 ` Arnout Vandecappelle via buildroot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox