Hi!

Paul reported a build failure on CentOS Stream 9 with linux-next[1]: the
kernel builds, but scripts/jobserver-exec prints

  WARNING: Unable to reopen jobserver read-side pipe: FileNotFoundError(2, 'No 
such file or directory')

and rcutorture's build check counts the "Error" in that line. CentOS's
make 4.3 carries a backport of the fix for GNU Make bug 58232, so
sub-makes, like the top-level make, give the jobserver pipe only to
recipes marked recursive, while MAKEFLAGS still names it. The new pigz
steps (1/2), for the kernel image, the built-in initramfs, and the other
gzip rules, and the older Clang LTO initcall ordering step (2/2) run
jobserver-exec from recipes without "+", so pigz gets one thread and the
initcall script caps its children at the CPU count instead of the free
job slots. Mark these recipes recursive, as was done for rustc.

Thanks!

-Kees

 v2:
 - 1/2: also mark the gzip rules that choose gzip through a variable,
   including the built-in initramfs in usr/Makefile, which rcutorture's
   kvm.sh builds and v1 missed (Paul)
 - 1/2: update the gzip entry in Documentation/kbuild/makefiles.rst
   (Nicolas)
 - 2/2: cite Masahiro's earlier version of this change and say when the
   script gets more than one archive (Nicolas)
 - v1..v2 diff: 
https://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git/diff/?id=dev/next-20261001/pigz-recursive/v2&id2=dev/next-20261001/pigz-recursive/v1
 v1: https://lore.kernel.org/all/[email protected]/

[1] 
https://lore.kernel.org/all/0ddb5e5e-f801-444c-aa98-0cfe814a3026@paulmck-laptop/

Kees Cook (2):
  kbuild: Mark the gzip recipes as recursive
  kbuild: Mark the initcall ordering recipe as recursive

 arch/alpha/boot/Makefile                    | 4 ++--
 arch/arc/boot/Makefile                      | 2 +-
 arch/arm/boot/compressed/Makefile           | 2 +-
 arch/arm64/boot/Makefile                    | 2 +-
 arch/csky/boot/Makefile                     | 2 +-
 arch/microblaze/boot/Makefile               | 2 +-
 arch/mips/boot/Makefile                     | 2 +-
 arch/mips/boot/compressed/Makefile          | 2 +-
 arch/nios2/boot/Makefile                    | 2 +-
 arch/parisc/boot/compressed/Makefile        | 2 +-
 arch/riscv/boot/Makefile                    | 2 +-
 arch/s390/boot/Makefile                     | 2 +-
 arch/sh/boot/Makefile                       | 2 +-
 arch/sh/boot/compressed/Makefile            | 2 +-
 arch/sparc/boot/Makefile                    | 4 ++--
 arch/x86/boot/compressed/Makefile           | 2 +-
 arch/xtensa/boot/Makefile                   | 2 +-
 usr/Makefile                                | 2 +-
 drivers/firmware/efi/libstub/Makefile.zboot | 2 +-
 scripts/Makefile.vmlinux_o                  | 2 +-
 Documentation/kbuild/makefiles.rst          | 7 +++++--
 21 files changed, 27 insertions(+), 24 deletions(-)

-- 
2.55.0


Reply via email to