2022-04-16 02:15:54

by Daniel Mentz

[permalink] [raw]
Subject: [PATCH] kheaders: Have cpio unconditionally replace files

For out-of-tree builds, this script invokes cpio twice to copy header
files from the srctree and subsequently from the objtree. According to a
comment in the script, there might be situations in which certain files
already exist in the destination directory when header files are copied
from the objtree:

"The second CPIO can complain if files already exist which can happen
with out of tree builds having stale headers in srctree. Just silence
CPIO for now."

GNU cpio might simply print a warning like "newer or same age version
exists", but toybox cpio exits with a non-zero exit code unless the
command line option "-u" is specified.

To improve compatibility with toybox cpio, add the command line option
"-u" to unconditionally replace existing files in the destination
directory.

Signed-off-by: Daniel Mentz <[email protected]>
---
kernel/gen_kheaders.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/gen_kheaders.sh b/kernel/gen_kheaders.sh
index 1966a749e0d9..0c78e64f747d 100755
--- a/kernel/gen_kheaders.sh
+++ b/kernel/gen_kheaders.sh
@@ -74,7 +74,7 @@ fi
# of tree builds having stale headers in srctree. Just silence CPIO for now.
for f in $dir_list;
do find "$f" -name "*.h";
-done | cpio --quiet -pd $cpio_dir >/dev/null 2>&1
+done | cpio --quiet -pdu $cpio_dir >/dev/null 2>&1

# Remove comments except SDPX lines
find $cpio_dir -type f -print0 |
--
2.36.0.rc0.470.gd361397f0d-goog


2022-04-21 11:37:02

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH] kheaders: Have cpio unconditionally replace files

On Thu, Apr 14, 2022 at 8:37 AM Daniel Mentz <[email protected]> wrote:
>
> For out-of-tree builds, this script invokes cpio twice to copy header
> files from the srctree and subsequently from the objtree. According to a
> comment in the script, there might be situations in which certain files
> already exist in the destination directory when header files are copied
> from the objtree:
>
> "The second CPIO can complain if files already exist which can happen
> with out of tree builds having stale headers in srctree. Just silence
> CPIO for now."
>
> GNU cpio might simply print a warning like "newer or same age version
> exists", but toybox cpio exits with a non-zero exit code unless the
> command line option "-u" is specified.
>
> To improve compatibility with toybox cpio, add the command line option
> "-u" to unconditionally replace existing files in the destination
> directory.
>
> Signed-off-by: Daniel Mentz <[email protected]>
> ---

Applied to linux-kbuild.
Thanks.


> kernel/gen_kheaders.sh | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/gen_kheaders.sh b/kernel/gen_kheaders.sh
> index 1966a749e0d9..0c78e64f747d 100755
> --- a/kernel/gen_kheaders.sh
> +++ b/kernel/gen_kheaders.sh
> @@ -74,7 +74,7 @@ fi
> # of tree builds having stale headers in srctree. Just silence CPIO for now.
> for f in $dir_list;
> do find "$f" -name "*.h";
> -done | cpio --quiet -pd $cpio_dir >/dev/null 2>&1
> +done | cpio --quiet -pdu $cpio_dir >/dev/null 2>&1
>
> # Remove comments except SDPX lines
> find $cpio_dir -type f -print0 |
> --
> 2.36.0.rc0.470.gd361397f0d-goog
>


--
Best Regards
Masahiro Yamada