Re: [PATCH] Make: Fix if_changed when command contains backslashes

From: Sascha Hauer
Date: Fri Sep 07 2012 - 05:38:53 EST


On Fri, Sep 07, 2012 at 11:35:52AM +0200, Sascha Hauer wrote:
> The call if_changed mechanism does not work when the command
> contains backslashes. This basically is an issue with lzo
> and bzip2 compressed kernels. The compressed binaries do not
> contain the uncompressed image size, so these use size_append
> to append the size. This results in backslashes in the executed
> command. With this if_changed always detects a change in the
> command and rebuilds the compressed image even if nothing
> has changed.
>
> Fix this by escaping backslashes in make-cmd
>
> Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx>

This was found and fixed together with Jan Lübbe, so I should not
forget his credits:

Signed-off-by: Jan Luebbe <jlu@xxxxxxxxxxxxxx>

Sascha

> ---
> scripts/Kbuild.include | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
> index 6a3ee98..afa4459 100644
> --- a/scripts/Kbuild.include
> +++ b/scripts/Kbuild.include
> @@ -209,7 +209,7 @@ endif
> # >$< substitution to preserve $ when reloading .cmd file
> # note: when using inline perl scripts [perl -e '...$$t=1;...']
> # in $(cmd_xxx) double $$ your perl vars
> -make-cmd = $(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1)))))
> +make-cmd = $(subst \\,\\\\,$(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1))))))
>
> # Find any prerequisites that is newer than target or that does not exist.
> # PHONY targets skipped in both cases.
> --
> 1.7.10.4
>
>

--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/