# [PATCH] meson: fix building mergetool docs

2 messages from 2026-02-09 to 2026-02-09. Participants: Phillip Wood, Patrick Steinhardt.
Thread: https://gitlist.dev/t/64954

## Phillip Wood, 2026-02-09 10:08

Subject: [PATCH] meson: fix building mergetool docs
Message-ID: <604c79018992dee019205741934508091cdd1e47.1770631599.git.phillip.wood@dunelm.org.uk>
URL: https://gitlist.dev/e/604c79018992dee019205741934508091cdd1e47.1770631599.git.phillip.wood%40dunelm.org.uk

```
From: Phillip Wood <phillip.wood@dunelm.org.uk>

Building the documentation with meson when the build directory is
not an immediate subdirectory of the source directory prints the
following error

[2/1349] Generating Documentation/mer... command (wrapped by meson to set env)
../../Documentation/generate-mergetool-list.sh: line 15: ../git-mergetool--lib.sh: No such file or directory

The build does not fail because the failure is upstream of a pipe. Fix
the error by passing the correct source directory when meson runs
"generate-mergetool-list.sh". As that script sets $MERGE_TOOLS_DIR
we do not need to set it in the environment when running the script.

Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
---
We should probably change the script so that error is not ignored
as well. I also wonder if we should use something more exotic than
"build" as the meson build directory in our CI though that wont make
any difference if the script does not fail.

Base-Commit: 3e0db84c88c57e70ac8be8c196dfa92c5d656fbc
Published-As: https://github.com/phillipwood/git/releases/tag/pw%2Fmeson-fix-mergetool-docs%2Fv1
View-Changes-At: https://github.com/phillipwood/git/compare/3e0db84c8...604c79018
Fetch-It-Via: git fetch https://github.com/phillipwood/git pw/meson-fix-mergetool-docs/v1

 Documentation/meson.build | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/Documentation/meson.build b/Documentation/meson.build
index f02dbc20cbc..d0e557c2078 100644
--- a/Documentation/meson.build
+++ b/Documentation/meson.build
@@ -353,13 +353,10 @@ foreach mode : [ 'diff', 'merge' ]
     command: [
       shell,
       '@INPUT@',
-      '..',
+      meson.project_source_root(),
       mode,
       '@OUTPUT@'
     ],
-    env: [
-      'MERGE_TOOLS_DIR=' + meson.project_source_root() / 'mergetools',
-    ],
     input: 'generate-mergetool-list.sh',
     output: 'mergetools-' + mode + '.adoc',
   )
-- 
2.52.0.362.g884e03848a9


```

## Patrick Steinhardt, 2026-02-09 12:32

Subject: Re: [PATCH] meson: fix building mergetool docs
Message-ID: <aYnT4XdQQ2hBEsTQ@pks.im>
URL: https://gitlist.dev/e/aYnT4XdQQ2hBEsTQ%40pks.im
In-Reply-To: <604c79018992dee019205741934508091cdd1e47.1770631599.git.phillip.wood@dunelm.org.uk>

```
On Mon, Feb 09, 2026 at 10:08:43AM +0000, Phillip Wood wrote:
> From: Phillip Wood <phillip.wood@dunelm.org.uk>
> 
> Building the documentation with meson when the build directory is
> not an immediate subdirectory of the source directory prints the
> following error
> 
> [2/1349] Generating Documentation/mer... command (wrapped by meson to set env)
> ../../Documentation/generate-mergetool-list.sh: line 15: ../git-mergetool--lib.sh: No such file or directory

Oh, good catch.

> The build does not fail because the failure is upstream of a pipe. Fix
> the error by passing the correct source directory when meson runs
> "generate-mergetool-list.sh". As that script sets $MERGE_TOOLS_DIR
> we do not need to set it in the environment when running the script.

Huh.

> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
> ---
> We should probably change the script so that error is not ignored
> as well. I also wonder if we should use something more exotic than
> "build" as the meson build directory in our CI though that wont make
> any difference if the script does not fail.

We probably could, I guess. And making the script more solid would
definitely be a very good step regardless of whether or not we want to
use a more esoteric build directory.

> diff --git a/Documentation/meson.build b/Documentation/meson.build
> index f02dbc20cbc..d0e557c2078 100644
> --- a/Documentation/meson.build
> +++ b/Documentation/meson.build
> @@ -353,13 +353,10 @@ foreach mode : [ 'diff', 'merge' ]
>      command: [
>        shell,
>        '@INPUT@',
> -      '..',
> +      meson.project_source_root(),
>        mode,
>        '@OUTPUT@'
>      ],

Makes sense. I assume that this is the only change required to make
out-of-source builds work?

> -    env: [
> -      'MERGE_TOOLS_DIR=' + meson.project_source_root() / 'mergetools',
> -    ],

Hm. We indeed set this environment variable in the script itself. I was
a bit puzzled at first because we don't export it, and it's not used
directly. But we source "git-mergetool--lib.sh", which in turn uses the
variable, so it shouldn't be needed to export it.

So this looks like a nice simplification to me, thanks!

Patrick

```
