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

[PATCH 4/8] git-compat-util: move include of "compat/zlib.h" into "git-zlib.h"

From
Patrick Steinhardt <ps@pks.im>
Date
Jan 10, 2025, 12:55 UTC
Message-ID
<20250110-b4-pks-compat-drop-uncompress2-v1-4-965d0022a74d@pks.im>
In-Reply-To
<20250110-b4-pks-compat-drop-uncompress2-v1-0-965d0022a74d@pks.im>

We include "compat/zlib.h" in "git-compat-util.h", which is unnecessarily broad given that we only have a small handful of files that use the zlib library. Move the header into "git-zlib.h" instead and adapt users of zlib to include that header.

One exception is the reftable library, as we don't want to use the Git-specific wrapper of zlib there, so we include "compat/zlib.h" instead. Furthermore, we move the include into "reftable/system.h" so that users of the library other than Git can wire up zlib themselves.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
 archive.c         | 1 +
 config.c          | 1 +
 csum-file.c       | 3 ++-
 environment.c     | 1 +
 git-compat-util.h | 2 --
 git-zlib.h        | 2 ++
 reftable/block.c  | 1 -
 reftable/system.h | 1 +
 8 files changed, 8 insertions(+), 4 deletions(-)
diff --git a/archive.c b/archive.c
index b9c200cba618ebc642859f2b3c58731157ed0eba..8be4e7ac8db50c7ae019ad12099362d9d392e194 100644
--- a/archive.c
+++ b/archive.c
@@ -7,6 +7,7 @@
 #include "convert.h"
 #include "environment.h"
 #include "gettext.h"
+#include "git-zlib.h"
 #include "hex.h"
 #include "object-name.h"
 #include "path.h"
diff --git a/config.c b/config.c
index 50f2d17b39944626172953475a07a56a9d618740..36f76fafe53ee755c4f18d9ea398b5dbe9a614fe 100644
--- a/config.c
+++ b/config.c
@@ -19,6 +19,7 @@
 #include "convert.h"
 #include "environment.h"
 #include "gettext.h"
+#include "git-zlib.h"
 #include "ident.h"
 #include "repository.h"
 #include "lockfile.h"
diff --git a/csum-file.c b/csum-file.c
index 5716016e12eec8c35f6495141fb2fcc250732803..78e04356d3ae9eb592f580fff204b28961934c0b 100644
--- a/csum-file.c
+++ b/csum-file.c
@@ -11,9 +11,10 @@
 #define USE_THE_REPOSITORY_VARIABLE
 
 #include "git-compat-util.h"
-#include "progress.h"
 #include "csum-file.h"
+#include "git-zlib.h"
 #include "hash.h"
+#include "progress.h"
 
 static void verify_buffer_or_die(struct hashfile *f,
 				 const void *buf,
diff --git a/environment.c b/environment.c
index 8389a272700eac7e07710b6899eb045c7df4f69a..e5b361bb5de4c69246098d0d458b567836d174f4 100644
--- a/environment.c
+++ b/environment.c
@@ -16,6 +16,7 @@
 #include "convert.h"
 #include "environment.h"
 #include "gettext.h"
+#include "git-zlib.h"
 #include "repository.h"
 #include "config.h"
 #include "refs.h"
diff --git a/git-compat-util.h b/git-compat-util.h
index 1ca26713221ba0270818ac61b6940f03cdf8b460..fb25fbf503cd3e4cfc9bf14c30dcc66951175c4e 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -1537,8 +1537,6 @@ int cmd_main(int, const char **);
 int common_exit(const char *file, int line, int code);
 #define exit(code) exit(common_exit(__FILE__, __LINE__, (code)))
 
-#include "compat/zlib-compat.h"
-
 /*
  * This include must come after system headers, since it introduces macros that
  * replace system names.
diff --git a/git-zlib.h b/git-zlib.h
index d8a670aff9fbc476b37e6848a178aec98325d19d..1e8d9aabcb4cb239bdf529926be60b56496e0d4f 100644
--- a/git-zlib.h
+++ b/git-zlib.h
@@ -1,6 +1,8 @@
 #ifndef GIT_ZLIB_H
 #define GIT_ZLIB_H
 
+#include "compat/zlib-compat.h"
+
 typedef struct git_zstream {
 	z_stream z;
 	unsigned long avail_in;
diff --git a/reftable/block.c b/reftable/block.c
index bc9b07963448e613ae14d2c4194b48764718290d..38e3081c614ab2240ce0d988db26f2f4f12b17a1 100644
--- a/reftable/block.c
+++ b/reftable/block.c
@@ -13,7 +13,6 @@ license that can be found in the LICENSE file or at
 #include "record.h"
 #include "reftable-error.h"
 #include "system.h"
-#include "compat/zlib-compat.h"
 
 int header_size(int version)
 {
diff --git a/reftable/system.h b/reftable/system.h
index 5274eca1d05b18bdadef9f991ff79fa83f3363e4..f194a3868634ce7806a85518ebe561a50f5a3ac0 100644
--- a/reftable/system.h
+++ b/reftable/system.h
@@ -14,6 +14,7 @@ license that can be found in the LICENSE file or at
 #define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "git-compat-util.h"
+#include "compat/zlib-compat.h"
 
 /*
  * An implementation-specific temporary file. By making this specific to the
-- 
2.48.0.rc2.279.g1de40edade.dirty
Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 5 of 56 in “compat/zlib: allow use of zlib-ng as backend”
  1. 0/8 compat/zlib: allow use of zlib-ng as backendPatrick Steinhardt, Jan 10, 2025
  2. 1/8 compat: drop `uncompress2()` compatibility shimPatrick Steinhardt, Jan 10, 2025
  3. 2/8 git-compat-util: drop `z_const` definePatrick Steinhardt, Jan 10, 2025
  4. 3/8 compat: introduce new "zlib.h" headerPatrick Steinhardt, Jan 10, 2025
  5. 4/8 git-compat-util: move include of "compat/zlib.h" into "git-zlib.h"Patrick Steinhardt, Jan 10, 2025
  6. 5/8 compat/zlib: provide `deflateBound()` shim centrallyPatrick Steinhardt, Jan 10, 2025
  7. 7/8 git-zlib: cast away potential constness of `next_in` pointerPatrick Steinhardt, Jan 10, 2025
  8. 6/8 compat/zlib: provide stubs for `deflateSetHeader()`Patrick Steinhardt, Jan 10, 2025
  9. 8/8 compat/zlib: allow use of zlib-ng as backendPatrick Steinhardt, Jan 10, 2025
  10. Taylor BlauJan 10, 2025
  11. Patrick SteinhardtJan 13, 2025
  12. 00/10 compat/zlib: allow use of zlib-ng as backendPatrick Steinhardt, Jan 14, 2025
  13. 01/10 compat: drop `uncompress2()` compatibility shimPatrick Steinhardt, Jan 14, 2025
  14. 02/10 git-compat-util: drop `z_const` definePatrick Steinhardt, Jan 14, 2025
  15. 03/10 compat: introduce new "zlib.h" headerPatrick Steinhardt, Jan 14, 2025
  16. Karthik NayakJan 15, 2025
  17. Patrick SteinhardtJan 15, 2025
  18. Karthik NayakJan 16, 2025
  19. 04/10 git-compat-util: move include of "compat/zlib.h" into "git-zlib.h"Patrick Steinhardt, Jan 14, 2025
  20. 05/10 compat/zlib: provide `deflateBound()` shim centrallyPatrick Steinhardt, Jan 14, 2025
  21. 06/10 compat/zlib: provide stubs for `deflateSetHeader()`Patrick Steinhardt, Jan 14, 2025
  22. Karthik NayakJan 15, 2025
  23. 07/10 git-zlib: cast away potential constness of `next_in` pointerPatrick Steinhardt, Jan 14, 2025
  24. Karthik NayakJan 15, 2025
  25. 08/10 compat/zlib: allow use of zlib-ng as backendPatrick Steinhardt, Jan 14, 2025
  26. 09/10 ci: switch linux-musl to use MesonPatrick Steinhardt, Jan 14, 2025
  27. Karthik NayakJan 15, 2025
  28. Patrick SteinhardtJan 15, 2025
  29. Karthik NayakJan 16, 2025
  30. 10/10 ci: make "linux-musl" job use zlib-ngPatrick Steinhardt, Jan 14, 2025
  31. Junio C HamanoJan 14, 2025
  32. Junio C HamanoJan 14, 2025
  33. Patrick SteinhardtJan 15, 2025
  34. Konstantin RyabitsevJan 15, 2025
  35. Junio C HamanoJan 15, 2025
  36. Patrick SteinhardtJan 15, 2025
  37. Konstantin RyabitsevJan 16, 2025
  38. Patrick SteinhardtJan 15, 2025
  39. Karthik NayakJan 16, 2025
  40. 00/10 compat/zlib: allow use of zlib-ng as backendPatrick Steinhardt, Jan 16, 2025
  41. 02/10 git-compat-util: drop `z_const` definePatrick Steinhardt, Jan 16, 2025
  42. 01/10 compat: drop `uncompress2()` compatibility shimPatrick Steinhardt, Jan 16, 2025
  43. 03/10 compat: introduce new "zlib.h" headerPatrick Steinhardt, Jan 16, 2025
  44. 04/10 git-compat-util: move include of "compat/zlib.h" into "git-zlib.h"Patrick Steinhardt, Jan 16, 2025
  45. 05/10 compat/zlib: provide `deflateBound()` shim centrallyPatrick Steinhardt, Jan 16, 2025
  46. 06/10 compat/zlib: provide stubs for `deflateSetHeader()`Patrick Steinhardt, Jan 16, 2025
  47. Justin ToblerJan 27, 2025
  48. Patrick SteinhardtJan 28, 2025
  49. 07/10 git-zlib: cast away potential constness of `next_in` pointerPatrick Steinhardt, Jan 16, 2025
  50. Justin ToblerJan 27, 2025
  51. Patrick SteinhardtJan 28, 2025
  52. 08/10 compat/zlib: allow use of zlib-ng as backendPatrick Steinhardt, Jan 16, 2025
  53. 09/10 ci: switch linux-musl to use MesonPatrick Steinhardt, Jan 16, 2025
  54. 10/10 ci: make "linux-musl" job use zlib-ngPatrick Steinhardt, Jan 16, 2025
  55. Karthik NayakJan 17, 2025
  56. Patrick SteinhardtJan 17, 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.