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

[PATCH v3 07/13] meson: drop separate version library

From
Patrick Steinhardt <ps@pks.im>
Date
Feb 26, 2025, 08:22 UTC
Message-ID
<20250226-b4-pks-meson-improvements-v3-7-60c77cf673ae@pks.im>
In-Reply-To
<20250226-b4-pks-meson-improvements-v3-0-60c77cf673ae@pks.im>

When building `libgit.a` we link it against a `libgit_version.a` library that contains the version information that we inject at build time. The intent of this is to avoid rebuilding all of `libgit.a` whenever the version changes. But that wouldn't happen in the first place, as we know to just rebuild the files that depend on the generated "version-def.h" file.

This is an artifact of an earlier version of the Meson build infra that didn't ultimately land. We didn't yet have "version-def.h", and instead injected the version via preprocessor directives. And here we would have rebuilt all of `libgit.a` indeed in case the version changes, because the preprocessor directive applied to all files.

Stop building the separate library and instead add "version-def.h" to the list of source files directly.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
 meson.build | 21 +++++----------------
 1 file changed, 5 insertions(+), 16 deletions(-)
diff --git a/meson.build b/meson.build
index 39d15ee6cb8..c8df19804ae 100644
--- a/meson.build
+++ b/meson.build
@@ -478,6 +478,7 @@ libgit_sources = [
   'userdiff.c',
   'utf8.c',
   'varint.c',
+  'version.c',
   'versioncmp.c',
   'walker.c',
   'wildmatch.c',
@@ -1542,26 +1543,14 @@ version_def_h = custom_target(
   depends: [git_version_file],
   env: version_gen_environment,
 )
-
-# Build a separate library for "version.c" so that we do not have to rebuild
-# everything when the current Git commit changes.
-libgit_version_library = static_library('git-version',
-  sources: [
-    'version.c',
-    version_def_h,
-  ],
-  c_args: libgit_c_args + [
-    '-DGIT_VERSION_H="' + version_def_h.full_path() + '"',
-  ],
-  dependencies: libgit_dependencies,
-  include_directories: libgit_include_directories,
-)
+libgit_sources += version_def_h
 
 libgit = declare_dependency(
   link_with: static_library('git',
     sources: libgit_sources,
-    c_args: libgit_c_args,
-    link_with: libgit_version_library,
+    c_args: libgit_c_args + [
+      '-DGIT_VERSION_H="' + version_def_h.full_path() + '"',
+    ],
     dependencies: libgit_dependencies,
     include_directories: libgit_include_directories,
   ),
-- 
2.48.1.741.g8a9f3a5cdc.dirty
Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 8 of 14 in “meson: cleanups, improvements, smallish fixes”
  1. 00/13 meson: cleanups, improvements, smallish fixesPatrick Steinhardt, Feb 26, 2025
  2. 01/13 meson: fix exec path with enabled runtime prefixPatrick Steinhardt, Feb 26, 2025
  3. 03/13 meson: inline the static 'git' libraryPatrick Steinhardt, Feb 26, 2025
  4. 02/13 meson: fix OpenSSL fallback when not explicitly requiredPatrick Steinhardt, Feb 26, 2025
  5. 04/13 meson: simplify use of the common-main libraryPatrick Steinhardt, Feb 26, 2025
  6. 05/13 meson: introduce `libgit_curl` dependencyPatrick Steinhardt, Feb 26, 2025
  7. 06/13 meson: stop linking libcurl into all executablesPatrick Steinhardt, Feb 26, 2025
  8. 07/13 meson: drop separate version libraryPatrick Steinhardt, Feb 26, 2025
  9. 08/13 meson: improve PATH handlingPatrick Steinhardt, Feb 26, 2025
  10. 09/13 meson: improve handling of `sane_tool_path` optionPatrick Steinhardt, Feb 26, 2025
  11. 10/13 meson: prevent finding sed(1) in a loopPatrick Steinhardt, Feb 26, 2025
  12. 12/13 meson: consistently use custom program paths to resolve programsPatrick Steinhardt, Feb 26, 2025
  13. 11/13 meson: fix overwritten `git` variablePatrick Steinhardt, Feb 26, 2025
  14. 13/13 gitlab-ci: restrict maximum number of link jobs on WindowsPatrick Steinhardt, Feb 26, 2025

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.