Subject: Re: gitweb.js build mistake

From: Patrick Steinhardt <[email-masked]>
Date: Fri, 28 Feb 2025 08:02:16 +0100

On Fri, Feb 28, 2025 at 06:34:43AM +0100, Thorsten Glaser wrote:
> From ed9863971d37ed53628a5871a4a569ccd6287f53 Mon Sep 17 00:00:00 2001
> From: mirabilos <[email-masked]>
> Date: Fri, 28 Feb 2025 05:33:10 +0000
> Subject: [PATCH] Unbreak content of gitweb.js
> 
> The former $^ adds all prerequisites, including the
> (proper) new dependency on the generator script.

The commit message could use a bit of polishing. How about the
following:

    gitweb: fix generation of "gitweb.js"

    In 19d8fe7da65 (Makefile: extract script to generate gitweb.js,
    2024-12-06) we have extracted the logic to build "gitweb.js" into a
    separate script. As part of that the rules that builds the script
    has gained a new dependency on that script.

    This refactoring is broken though because we use "$^" to determine
    the set of JavaScript files that need to be concatenated, and this
    implicit variable now also contains the build script itself. As a
    result, the build script ends up ni the generated "gitweb.js" file,
    which is wrong.

    Fix the issue by explicitly only passing the JavaScript files.

> Signed-off-by: mirabilos <[email-masked]>

We typically require plain names instead of aliases in the SOB.

> ---
>  gitweb/Makefile | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/gitweb/Makefile b/gitweb/Makefile
> index d5748e9359..2a8f97cef8 100644
> --- a/gitweb/Makefile
> +++ b/gitweb/Makefile
> @@ -118,7 +118,7 @@ $(MAK_DIR_GITWEB)gitweb.cgi: $(MAK_DIR_GITWEB)gitweb.perl
>  $(MAK_DIR_GITWEB)static/gitweb.js: $(MAK_DIR_GITWEB)generate-gitweb-js.sh
>  $(MAK_DIR_GITWEB)static/gitweb.js: $(addprefix $(MAK_DIR_GITWEB),$(GITWEB_JSLIB_FILES))
>  	$(QUIET_GEN)$(RM) $@ $@+ && \
> -	$(MAK_DIR_GITWEB)generate-gitweb-js.sh $@+ $^ && \
> +	$(MAK_DIR_GITWEB)generate-gitweb-js.sh $@+ $(addprefix $(MAK_DIR_GITWEB),$(GITWEB_JSLIB_FILES)) && \
>  	mv $@+ $@

We could avoid repetition by filtering out any files that we don't care
about, like so:

    $(filter %.js,$^)

In any case, thanks for discovering and fixing this issue!

Patrick