git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Modernize the build system v2 problem

From
Eli Schwartz <eschwartz93@gmail.com>
Date
Oct 14, 2024, 19:19 UTC
Message-ID
<cd118725-f820-494c-8d10-81aba32e4064@gmail.com>
In-Reply-To
<28e13e74-d4a4-4be5-8555-27a69c5c5787@ramsayjones.plus.com>
On 10/14/24 12:59 PM, Ramsay Jones wrote:
Show 75 quoted lines
> Everything seemed to go without a hitch after that, as far as the build is
> concerned, but when I did a 'ninja test' I ended up with three failures:
> 
>   Summary of Failures:
>   
>    979/1028 t9500-gitweb-standalone-no-errors              FAIL           12.36s   exit status 1
>    980/1028 t9501-gitweb-standalone-http-status            FAIL            2.19s   exit status 1
>    981/1028 t9502-gitweb-standalone-parse-output           FAIL            2.22s   exit status 1
>   
>   Ok:                 1025
>   Expected Fail:      0   
>   Fail:               3   
>   Unexpected Pass:    0   
>   Skipped:            0   
>   Timeout:            0   
>   
>   Full log written to /home/ramsay/git/build/meson-logs/testlog.txt
>   FAILED: meson-internal__test 
>   /usr/bin/meson test --no-rebuild --print-errorlogs
>   ninja: build stopped: subcommand failed.
> 
> The failure is caused by an (apparently) mangled 'gitweb.cgi' file. Since I
> still had the make build file, I could directly compare the files:
> 
>   $ diff ../gitweb/gitweb.cgi gitweb/gitweb.cgi | wc -l
>   160
>   $ 
> 
> I won't bore you with the whole diff, but it begins like so:
> 
>   $ diff ../gitweb/gitweb.cgi gitweb/gitweb.cgi
>   83c83
>   < our $GIT = "/home/ramsay/bin/git";
>   ---
>   > our $GIT = "/usr/local/bin/git";
>   91c91
>   < our $project_maxdepth = 2007;
>   ---
>   > our $project_maxdepth = "2007";
>   2497c2497
>   < 		{ regexp => qr/^\@\@{$num_sign} /, class => "chunk_header"},
>   ---
>   > 		{ regexp => qr/^@@{$num_sign} /, class => "chunk_header"},
>   2521c2521
>   < 		$line =~ m/^\@{2} (-(\d+)(?:,(\d+))?) (\+(\d+)(?:,(\d+))?) \@{2}(.*)$/;
>   ---
>   > 		$line =~ m/^@{2} (-(\d+)(?:,(\d+))?) (\+(\d+)(?:,(\d+))?) @{2}(.*)$/;
> 
>   ...
> 
>   $ 
> 
> Note that, after the 'template variables' have been substituted, many (all?)
> character pairs \@ are replaced with @ (ie the backslashes have gone walkabout).
> This results in compilation errors in the 'gitweb.log' file, for example the
> log file for the t9500-*.sh test, looks like:
> 
>   $ cat gitweb.log
>   [Mon Oct 14 15:12:33 2024] gitweb.cgi: Possible unintended interpolation of @2 in string at /home/ramsay/git/build/gitweb/gitweb.cgi line 2521.
>   [Mon Oct 14 15:12:33 2024] gitweb.cgi: Possible unintended interpolation of @3 in string at /home/ramsay/git/build/gitweb/gitweb.cgi line 2593.
>   [Mon Oct 14 15:12:33 2024] gitweb.cgi: Possible unintended interpolation of @vrfy in string at /home/ramsay/git/build/gitweb/gitweb.cgi line 4212.
>   [Mon Oct 14 15:12:33 2024] gitweb.cgi: Global symbol "@vrfy" requires explicit package name (did you forget to declare "my @vrfy"?) at /home/ramsay/git/build/gitweb/gitweb.cgi line 4212.
>   [Mon Oct 14 15:12:33 2024] gitweb.cgi: Execution of /home/ramsay/git/build/gitweb/gitweb.cgi aborted due to compilation errors.
>   $ 
>  
> So, keeping in mind that I know absolutely nothing about meson, it seems that
> the 'configure_file' function is mangling the 'gitweb.perl' file. I assume
> that you are not seeing this, so I suspect that you are using a newer (fixed)
> version than me. :(
> 
>   $ meson --version
>   1.3.2
>   $ ninja --version
>   1.11.1
>   $ 
I recognize this: https://github.com/mesonbuild/meson/pull/13302

Note that for files which can change semi-regularly as part of development it may be better to avoid configure_file() and create something like edit-files.sh.in which then produces build rules, not configure-time changes. This would sidestep the problem entirely as you'd then process gitweb.cgi via e.g. a sed script.

(The main reason though is because it avoids reconfiguring meson when the gitweb.cgi script is modified via a patch / git pull.)

-- 
Eli Schwartz
Previous: Patrick SteinhardtNext: Ramsay Jones
Message 3 of 4 in “Modernize the build system v2 problem”
  1. Ramsay JonesOct 14, 2024
  2. Patrick SteinhardtOct 14, 2024
  3. Eli SchwartzOct 14, 2024
  4. Ramsay JonesOct 14, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.