Re: [PATCH] meson: restore hook-list.h to builtin_sources
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Jul 2, 2026, 11:06 UTC
- Message-ID
- <akZGJP1kVtjBFN_e@pks.im>
- In-Reply-To
- <20260701193928.358825-1-floppym@gentoo.org>
On Wed, Jul 01, 2026 at 03:39:28PM -0400, Mike Gilbert wrote:
Show 10 quoted lines
> This fixes a racy build failure. > > ``` > builtin/bugreport.c:12:10: fatal error: hook-list.h: No such file or directory > 12 | #include "hook-list.h" > | ^~~~~~~~~~~~~ > > ``` > > hook-list.h must be generated before builtin/bugreport.c is compiled.
"hook-list.h" is required by both "hook.c" and by "builtin/bugreport.c". So you would expect that we indeed need the header generated for both of these, but right now we only explicitly list the dependency for our libgit sources, not to our builtin sources. And consequently the header may not be generated:
$ meson setup build
...
$ ninja -C build git.p/builtin_bugreport.c.o
...
../builtin/bugreport.c:12:10: fatal error: 'hook-list.h' file not found
12 | #include "hook-list.h"
| ^~~~~~~~~~~~~
1 error generated.The fix is of course to explicitly list the header for both targets. And...
Show 46 quoted lines
> diff --git a/meson.build b/meson.build > index 3247697f74aa..bdc83843e8e0 100644 > --- a/meson.build > +++ b/meson.build > @@ -278,7 +278,20 @@ compat_sources = [ > 'compat/terminal.c', > ] > > +hook_list = custom_target( > + input: 'Documentation/githooks.adoc', > + output: 'hook-list.h', > + command: [ > + shell, > + meson.current_source_dir() + '/tools/generate-hooklist.sh', > + meson.current_source_dir(), > + '@OUTPUT@', > + ], > + env: script_environment, > +) > + > libgit_sources = [ > + hook_list, > 'abspath.c', > 'add-interactive.c', > 'add-patch.c', > @@ -566,19 +579,8 @@ libgit_sources += custom_target( > env: script_environment, > ) > > -libgit_sources += custom_target( > - input: 'Documentation/githooks.adoc', > - output: 'hook-list.h', > - command: [ > - shell, > - meson.current_source_dir() + '/tools/generate-hooklist.sh', > - meson.current_source_dir(), > - '@OUTPUT@', > - ], > - env: script_environment, > -) > - > builtin_sources = [ > + hook_list, > 'builtin/add.c', > 'builtin/am.c', > 'builtin/annotate.c',
... that's exactly what you do. So this fix looks good to me, thanks!
Patrick