diff --git a/target/linux/generic/hack-6.18/201-gen_init_cpio_portability.patch b/target/linux/generic/hack-6.18/201-gen_init_cpio_portability.patch new file mode 100644 index 0000000000..6704f2b469 --- /dev/null +++ b/target/linux/generic/hack-6.18/201-gen_init_cpio_portability.patch @@ -0,0 +1,52 @@ +From 60e044199e773df4863405dba0f7abe16a43282d Mon Sep 17 00:00:00 2001 +From: Mark Mentovai +Date: Fri, 29 May 2026 12:48:31 -0400 +Subject: [PATCH] gen_init_cpio: fix build on macOS hosts + +ae18b94099b0 (2025-08-20, in 6.18) introduced a dependency on the +Linux-specific O_LARGEFILE, and 97169cd6d95b (2025-08-20, in 6.18) +introduced a dependency on the Linux-specific copy_file_range. Both of +these commits were a part of the +https://lore.kernel.org/all/20250819032607.28727-1-ddiss@suse.de/ +series. These new dependencies may not be available on non-Linux +systems, although it is possible to cross-build Linux on non-Linux build +hosts, and it is appropriate to run tools like gen_init_cpio on such +build hosts. It is straightforward to avoid these Linux-specific +features when not building on Linux. + +Signed-off-by: Mark Mentovai +--- + usr/gen_init_cpio.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +--- a/usr/gen_init_cpio.c ++++ b/usr/gen_init_cpio.c +@@ -456,6 +456,7 @@ static int cpio_mkfile(const char *name, + push_pad(namepadlen ? namepadlen : padlen(offset, 4)) < 0) + goto error; + ++#ifdef __linux__ + if (size) { + this_read = copy_file_range(file, NULL, outfd, NULL, size, 0); + if (this_read > 0) { +@@ -466,6 +467,7 @@ static int cpio_mkfile(const char *name, + } + /* short or failed copy falls back to read/write... */ + } ++#endif + + while (size) { + unsigned char filebuf[65536]; +@@ -674,7 +676,11 @@ int main (int argc, char *argv[]) + break; + case 'o': + outfd = open(optarg, +- O_WRONLY | O_CREAT | O_LARGEFILE | O_TRUNC, ++ O_WRONLY | O_CREAT | O_TRUNC ++#ifdef O_LARGEFILE ++ | O_LARGEFILE ++#endif ++ , + 0600); + if (outfd < 0) { + fprintf(stderr, "failed to open %s\n", optarg);