2023-03-15 19:10:06

by Leon Romanovsky

[permalink] [raw]
Subject: [PATCH -rc] kbuild: properly exclude linux.tar.gz from tar archive

From: Leon Romanovsky <[email protected]>

Attempt to build rpm-pkg randomly fails in tar stage, with same error
as was reported by Nicolas [1]

tar -c -f linux.tar.gz -I pigz --exclude=./linux.tar.gz --exclude-from=.tmp_filelist_exclude --owner=0 --group=0 --sort=name --transform 's:^\.:linux:S' -C . .
tar: .: file changed as we read it
make[1]: *** [scripts/Makefile.package:58: linux.tar.gz] Error 1
make[1]: *** Deleting file 'linux.tar.gz'
make: *** [Makefile:1657: rpm-pkg] Error 2

The reason to it that tar is dependent on order of command line
arguments and needs to have excluded file before creating it. So as a
solution, touch that file to create it and move --exclude list before
any tar arguments.

[1] https://lore.kernel.org/all/Y%2Fk+v%[email protected]/
Cc: Nicolas Schier <[email protected]>
Fixes: 7bf4582d7aad ("kbuild: deb-pkg: create source package without cleaning")
Signed-off-by: Riad Abo Raed <[email protected]>
Signed-off-by: Leon Romanovsky <[email protected]>
---
scripts/Makefile.package | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/Makefile.package b/scripts/Makefile.package
index b941e6341b36..be4623481ca2 100644
--- a/scripts/Makefile.package
+++ b/scripts/Makefile.package
@@ -44,7 +44,7 @@ filechk_filelist = \
# ---------------------------------------------------------------------------

quiet_cmd_tar = TAR $@
- cmd_tar = tar -c -f $@ $(tar-compress-opt) $(tar-exclude-opt) \
+ cmd_tar = touch ./$@ && tar $(tar-exclude-opt) -c -f $@ $(tar-compress-opt) \
--owner=0 --group=0 --sort=name \
--transform 's:^\.:$*:S' -C $(tar-rootdir) .

--
2.39.2



2023-03-15 20:39:12

by Nicolas Schier

[permalink] [raw]
Subject: Re: [PATCH -rc] kbuild: properly exclude linux.tar.gz from tar archive

On Wed 15 Mar 2023 21:09:33 GMT, Leon Romanovsky wrote:
> From: Leon Romanovsky <[email protected]>
>
> Attempt to build rpm-pkg randomly fails in tar stage, with same error
> as was reported by Nicolas [1]
>
> tar -c -f linux.tar.gz -I pigz --exclude=./linux.tar.gz --exclude-from=.tmp_filelist_exclude --owner=0 --group=0 --sort=name --transform 's:^\.:linux:S' -C . .
> tar: .: file changed as we read it
> make[1]: *** [scripts/Makefile.package:58: linux.tar.gz] Error 1
> make[1]: *** Deleting file 'linux.tar.gz'
> make: *** [Makefile:1657: rpm-pkg] Error 2
>
> The reason to it that tar is dependent on order of command line
> arguments and needs to have excluded file before creating it. So as a
> solution, touch that file to create it and move --exclude list before
> any tar arguments.

thanks for digging into and proposing a solution! I'm afraid it will
not be taken because of [2] will make the whole cmd_tar definition
redundant due to the use of 'git archive'.

Nevertheless, this works for me.

Reviewed-by: Nicolas Schier <[email protected]>

Kind regards,
Nicolas


[2]: https://lore.kernel.org/linux-kbuild/[email protected]/

> [1] https://lore.kernel.org/all/Y%2Fk+v%[email protected]/
> Cc: Nicolas Schier <[email protected]>
> Fixes: 7bf4582d7aad ("kbuild: deb-pkg: create source package without cleaning")
> Signed-off-by: Riad Abo Raed <[email protected]>
> Signed-off-by: Leon Romanovsky <[email protected]>
> ---
> scripts/Makefile.package | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/Makefile.package b/scripts/Makefile.package
> index b941e6341b36..be4623481ca2 100644
> --- a/scripts/Makefile.package
> +++ b/scripts/Makefile.package
> @@ -44,7 +44,7 @@ filechk_filelist = \
> # ---------------------------------------------------------------------------
>
> quiet_cmd_tar = TAR $@
> - cmd_tar = tar -c -f $@ $(tar-compress-opt) $(tar-exclude-opt) \
> + cmd_tar = touch ./$@ && tar $(tar-exclude-opt) -c -f $@ $(tar-compress-opt) \
> --owner=0 --group=0 --sort=name \
> --transform 's:^\.:$*:S' -C $(tar-rootdir) .
>
> --
> 2.39.2

--
Nicolas Schier

epost|xmpp: [email protected] irc://oftc.net/nsc
↳ gpg: 18ed 52db e34f 860e e9fb c82b 7d97 0932 55a0 ce7f
-- frykten for herren er opphav til kunnskap --


Attachments:
(No filename) (2.33 kB)
signature.asc (833.00 B)
Download all attachments

2023-03-16 07:12:50

by Leon Romanovsky

[permalink] [raw]
Subject: Re: [PATCH -rc] kbuild: properly exclude linux.tar.gz from tar archive

On Wed, Mar 15, 2023 at 09:18:08PM +0100, Nicolas Schier wrote:
> On Wed 15 Mar 2023 21:09:33 GMT, Leon Romanovsky wrote:
> > From: Leon Romanovsky <[email protected]>
> >
> > Attempt to build rpm-pkg randomly fails in tar stage, with same error
> > as was reported by Nicolas [1]
> >
> > tar -c -f linux.tar.gz -I pigz --exclude=./linux.tar.gz --exclude-from=.tmp_filelist_exclude --owner=0 --group=0 --sort=name --transform 's:^\.:linux:S' -C . .
> > tar: .: file changed as we read it
> > make[1]: *** [scripts/Makefile.package:58: linux.tar.gz] Error 1
> > make[1]: *** Deleting file 'linux.tar.gz'
> > make: *** [Makefile:1657: rpm-pkg] Error 2
> >
> > The reason to it that tar is dependent on order of command line
> > arguments and needs to have excluded file before creating it. So as a
> > solution, touch that file to create it and move --exclude list before
> > any tar arguments.
>
> thanks for digging into and proposing a solution! I'm afraid it will
> not be taken because of [2] will make the whole cmd_tar definition
> redundant due to the use of 'git archive'.

OK, good to know.

>
> Nevertheless, this works for me.
>
> Reviewed-by: Nicolas Schier <[email protected]>

Thanks

>
> Kind regards,
> Nicolas
>
>
> [2]: https://lore.kernel.org/linux-kbuild/[email protected]/
>
> > [1] https://lore.kernel.org/all/Y%2Fk+v%[email protected]/
> > Cc: Nicolas Schier <[email protected]>
> > Fixes: 7bf4582d7aad ("kbuild: deb-pkg: create source package without cleaning")
> > Signed-off-by: Riad Abo Raed <[email protected]>
> > Signed-off-by: Leon Romanovsky <[email protected]>
> > ---
> > scripts/Makefile.package | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/scripts/Makefile.package b/scripts/Makefile.package
> > index b941e6341b36..be4623481ca2 100644
> > --- a/scripts/Makefile.package
> > +++ b/scripts/Makefile.package
> > @@ -44,7 +44,7 @@ filechk_filelist = \
> > # ---------------------------------------------------------------------------
> >
> > quiet_cmd_tar = TAR $@
> > - cmd_tar = tar -c -f $@ $(tar-compress-opt) $(tar-exclude-opt) \
> > + cmd_tar = touch ./$@ && tar $(tar-exclude-opt) -c -f $@ $(tar-compress-opt) \
> > --owner=0 --group=0 --sort=name \
> > --transform 's:^\.:$*:S' -C $(tar-rootdir) .
> >
> > --
> > 2.39.2
>
> --
> Nicolas Schier
>
> epost|xmpp: [email protected] irc://oftc.net/nsc
> ↳ gpg: 18ed 52db e34f 860e e9fb c82b 7d97 0932 55a0 ce7f
> -- frykten for herren er opphav til kunnskap --