From: "D. Ben Knoble" <ben.knoble+github@gmail•com>
To: git@vger•kernel.org
Cc: "D. Ben Knoble" <ben.knoble+github@gmail•com>,
Phillip Wood <phillip.wood@dunelm•org.uk>,
Patrick Steinhardt <ps@pks•im>,
Marc Branchaud <marcnarc@xiplink•com>,
Evan Martin <evan.martin@gmail•com>,
"brian m. carlson" <sandals@crustytoothpaste•net>,
Junio C Hamano <gitster@pobox•com>
Subject: [PATCH v6] build: regenerate config-list.h when Documentation changes
Date: Sat, 21 Feb 2026 09:07:17 -0500 [thread overview]
Message-ID: <5dcd4e9308100a25603c50fecb36447c0ee4df62.1771682788.git.ben.knoble+github@gmail.com> (raw)
In-Reply-To: <611a94cd988e3795bc63dba2f1b270aa0d058bd2.1771425395.git.ben.knoble+github@gmail.com>
The Meson-based build doesn't know when to rebuild config-list.h, so the
header is sometimes stale.
For example, an old build directory might have config-list.h from before
4173df5187 (submodule: introduce extensions.submodulePathConfig,
2026-01-12), which added submodule.<name>.gitdir to the list. Without
it, t9902-completion.sh fails. Regenerating the config-list.h artifact
from sources fixes the artifact and the test.
Since Meson does not have (or want) builtin support for globbing like
Make, teach generate-configlist.sh to also generate a list of
Documentation files its output depends on, and incorporate that into the
Meson build.
We assume that if a user adds a new file under
Documentation/config then they will also edit one of the existing files
to include that new file, and that will trigger a rebuild. Also mark the
generator script as a dependency.
While we're at it, teach the Makefile to use the same "the script knows
it's dependencies" logic.
For Meson, combining the following commands helps debug dependencies:
ninja -C <builddir> -t deps config-list.h
ninja -C <builddir> -t browse config-list.h
The former lists all the dependencies discovered from our output ".d"
file (the config documentation) and the latter shows the dependency on
the script itself, among other useful edges in the dependency graph.
Helped-by: Patrick Steinhardt <ps@pks•im>
Helped-by: Phillip Wood <phillip.wood@dunelm•org.uk>
Signed-off-by: D. Ben Knoble <ben.knoble+github@gmail•com>
---
Notes (benknoble/commits):
Changes from v5 (<611a94cd988e3795bc63dba2f1b270aa0d058bd2.1771425395.git.ben.knoble+github@gmail•com>):
• Reword a confusing sentence in the commit message
Makefile | 5 +++--
generate-configlist.sh | 11 ++++++++++-
meson.build | 5 ++++-
3 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/Makefile b/Makefile
index 7f37ad8f58..6f926ffb1f 100644
--- a/Makefile
+++ b/Makefile
@@ -2688,9 +2688,10 @@ $(BUILT_INS): git$X
cp $< $@
config-list.h: generate-configlist.sh
+ @mkdir -p .depend
+ $(QUIET_GEN)$(SHELL_PATH) ./generate-configlist.sh . $@ .depend/config-list.h.d
-config-list.h: Documentation/*config.adoc Documentation/config/*.adoc
- $(QUIET_GEN)$(SHELL_PATH) ./generate-configlist.sh . $@
+-include .depend/config-list.h.d
command-list.h: generate-cmdlist.sh command-list.txt
diff --git a/generate-configlist.sh b/generate-configlist.sh
index 75c39ade20..39ac8845ab 100755
--- a/generate-configlist.sh
+++ b/generate-configlist.sh
@@ -2,10 +2,11 @@
SOURCE_DIR="$1"
OUTPUT="$2"
+DEPFILE="$3"
if test -z "$SOURCE_DIR" || ! test -d "$SOURCE_DIR" || test -z "$OUTPUT"
then
- echo >&2 "USAGE: $0 <SOURCE_DIR> <OUTPUT>"
+ echo >&2 "USAGE: $0 <SOURCE_DIR> <OUTPUT> [<DEPFILE>]"
exit 1
fi
@@ -36,3 +37,11 @@ print_config_list () {
echo
print_config_list
} >"$OUTPUT"
+
+if test -n "$DEPFILE"
+then
+ QUOTED_OUTPUT="$(printf '%s\n' "$OUTPUT" | sed 's,[&/\],\\&,g')"
+ printf '%s\n' "$SOURCE_DIR"/Documentation/*config.adoc \
+ "$SOURCE_DIR"/Documentation/config/*.adoc |
+ sed -e 's/[# ]/\\&/g' -e "s/^/$QUOTED_OUTPUT: /" >"$DEPFILE"
+fi
diff --git a/meson.build b/meson.build
index 762e2d0fc0..74b459b004 100644
--- a/meson.build
+++ b/meson.build
@@ -720,11 +720,14 @@ endif
builtin_sources += custom_target(
output: 'config-list.h',
+ depfile: 'config-list.h.d',
+ depend_files: [ 'generate-configlist.sh' ],
command: [
shell,
- meson.current_source_dir() + '/generate-configlist.sh',
+ meson.current_source_dir() / 'generate-configlist.sh',
meson.current_source_dir(),
'@OUTPUT@',
+ '@DEPFILE@',
],
env: script_environment,
)
Diff-intervalle contre v5 :
1: 611a94cd98 ! 1: 5dcd4e9308 build: regenerate config-list.h when Documentation changes
@@ Commit message
it, t9902-completion.sh fails. Regenerating the config-list.h artifact
from sources fixes the artifact and the test.
- Teach the meson build to depend on the Documentation files that
- generate-configlist.sh reads by having it an additional output as a list
- of dependency files, since Meson does not have (or want) builtin support
- for globbing like Make. We assume that if a user adds a new file under
+ Since Meson does not have (or want) builtin support for globbing like
+ Make, teach generate-configlist.sh to also generate a list of
+ Documentation files its output depends on, and incorporate that into the
+ Meson build.
+
+ We assume that if a user adds a new file under
Documentation/config then they will also edit one of the existing files
to include that new file, and that will trigger a rebuild. Also mark the
generator script as a dependency.
@@ Commit message
## Notes (benknoble/commits) ##
- Changes from v4 (<9cdcc9de04f0f8fff657f0474b31c063466ed808.1771280837.git.ben.knoble+github@gmail•com>):
+ Changes from v5 (<611a94cd988e3795bc63dba2f1b270aa0d058bd2.1771425395.git.ben.knoble+github@gmail•com>):
- • Include Patrick's suggested Makefile changes. Note there's no quiet
- equivalent for mdkir that isn't for the current target's containing
- directory…
- • Make depfile output efficient again, thanks to Phillip.
-
- I've kept printf instead of echo (from Patrick/Junio) because I think it
- is easier to reason about ("it works" vs. "did I use this in a way that
- might cause problems").
-
- Junio asked about other problematic bytes: the other one I could think
- of (since all the inputs should be paths, anyway) is newlines. I gave
- meson's depfile.py a glance [1], and it looks like they don't handle
- newlines in paths. Other whitespace doesn't appear to be an issue (see
- "elif c in {' ', '\n'}"); I think _most_ characters are just added to
- the filename.
-
- [1]: https://github.com/mesonbuild/meson/blob/master/mesonbuild/depfile.py
+ • Reword a confusing sentence in the commit message
## Makefile ##
@@ Makefile: $(BUILT_INS): git$X
base-commit: 4a7958ca1415077ce9b1d0a38223ede55da779d9
--
2.53.0
next prev parent reply other threads:[~2026-02-21 14:07 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-07 21:59 [PATCH] meson: regenerate config-list.h when Documentation changes D. Ben Knoble
2026-02-07 22:38 ` Ben Knoble
2026-02-09 15:19 ` [PATCH v2] " D. Ben Knoble
2026-02-11 23:51 ` [PATCH v3] " D. Ben Knoble
2026-02-12 8:06 ` Patrick Steinhardt
2026-02-12 10:29 ` Phillip Wood
2026-02-12 14:14 ` Phillip Wood
2026-02-12 15:56 ` Ben Knoble
2026-02-16 22:28 ` [PATCH v4] " D. Ben Knoble
2026-02-17 0:33 ` Ben Knoble
2026-02-17 7:03 ` Patrick Steinhardt
2026-02-17 13:28 ` D. Ben Knoble
2026-02-17 7:02 ` Patrick Steinhardt
2026-02-17 13:28 ` D. Ben Knoble
2026-02-17 20:24 ` Junio C Hamano
2026-02-17 9:20 ` Phillip Wood
2026-02-17 13:38 ` D. Ben Knoble
2026-02-17 15:11 ` Phillip Wood
2026-02-18 14:37 ` [PATCH v5] build: " D. Ben Knoble
2026-02-19 10:19 ` Phillip Wood
2026-02-19 13:40 ` D. Ben Knoble
2026-02-19 13:56 ` Patrick Steinhardt
2026-02-21 13:58 ` D. Ben Knoble
2026-02-19 15:10 ` Marc Branchaud
2026-02-21 13:58 ` D. Ben Knoble
2026-02-21 14:07 ` D. Ben Knoble [this message]
2026-02-23 6:37 ` [PATCH v6] " Patrick Steinhardt
2026-02-23 6:55 ` SZEDER Gábor
2026-02-23 21:41 ` Ben Knoble
2026-02-24 9:58 ` Patrick Steinhardt
2026-02-24 11:00 ` Phillip Wood
2026-02-24 14:12 ` D. Ben Knoble
2026-02-24 14:39 ` [PATCH v7] " D. Ben Knoble
2026-02-25 18:45 ` Junio C Hamano
2026-02-26 3:20 ` Ben Knoble
2026-02-09 15:25 ` [PATCH] meson: " Patrick Steinhardt
2026-02-09 21:50 ` D. Ben Knoble
2026-02-11 7:42 ` Patrick Steinhardt
2026-02-11 9:44 ` Phillip Wood
2026-02-11 10:57 ` Phillip Wood
2026-02-11 11:00 ` Patrick Steinhardt
2026-02-11 10:58 ` Patrick Steinhardt
2026-02-11 14:05 ` Phillip Wood
2026-02-11 20:15 ` D. Ben Knoble
2026-02-11 19:58 ` D. Ben Knoble
2026-02-12 8:10 ` Patrick Steinhardt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5dcd4e9308100a25603c50fecb36447c0ee4df62.1771682788.git.ben.knoble+github@gmail.com \
--to=ben.knoble+github@gmail$(echo .)com \
--cc=evan.martin@gmail$(echo .)com \
--cc=git@vger$(echo .)kernel.org \
--cc=gitster@pobox$(echo .)com \
--cc=marcnarc@xiplink$(echo .)com \
--cc=phillip.wood@dunelm$(echo .)org.uk \
--cc=ps@pks$(echo .)im \
--cc=sandals@crustytoothpaste$(echo .)net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox