From: D. Ben Knoble Date: Wed, 11 Feb 2026 23:51:02 GMT Subject: [PATCH v3] meson: regenerate config-list.h when Documentation changes Message-ID: <0a344f1f3ee4a5d95c6f46df030b9936db4354a1.1770853297.git.ben.knoble+github@gmail.com> In-Reply-To: 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..gitdir to the list. Without 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. Helped-by: Patrick Steinhardt Signed-off-by: D. Ben Knoble --- Notes (benknoble/commits): Changes from v2 (): • Pick up (and tweak) Patrick's depfile proposal • Include the script itself as a dependency • Escape output paths (spaces, octothorpes, and backslashes) for Ninja I'm not 100% sure I've actually done the escaping correctly, though, since Ninja's source says that a space preceded by 2N backslashes represents 2N backslashes at the end of a filename, and λ printf '%s\n' 'foo\' | sed 's/[# \\]/\\&/g' | xxd 00000000: 666f 6f5c 5c0a foo\\. So would they interpret that as the filename 'foo\\' instead of 'foo\' ? (Or, no because the 2N slashes aren't followed by a SP, but a NL?) generate-configlist.sh | 10 +++++++++- meson.build | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/generate-configlist.sh b/generate-configlist.sh index 75c39ade20..091efd4564 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 " + echo >&2 "USAGE: $0 []" exit 1 fi @@ -36,3 +37,10 @@ print_config_list () { echo print_config_list } >"$OUTPUT" + +if test -n "$DEPFILE" +then + printf "$OUTPUT: %s\n" "$0" "$SOURCE_DIR"/Documentation/*config.adoc \ + "$SOURCE_DIR"/Documentation/config/*.adoc | + sed 's/[# \\]/\\&/g' >"$DEPFILE" +fi diff --git a/meson.build b/meson.build index 3a1d12caa4..fb5d7367f5 100644 --- a/meson.build +++ b/meson.build @@ -720,11 +720,13 @@ endif builtin_sources += custom_target( output: 'config-list.h', + depfile: 'config-list.h.d', 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, ) base-commit: 19a08e0c02faf1c5b4efd1add85598cf8390ff7e prerequisite-patch-id: 364ba1899740b93be5957262d3583348d030e8fa -- 2.52.0.rc0.1058.g68d811a4ee.dirty