File: use-system-zstd.patch

package info (click to toggle)
duckdb 1.5.1-2
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 299,196 kB
  • sloc: cpp: 865,414; ansic: 57,292; python: 18,871; sql: 12,663; lisp: 11,751; yacc: 7,412; lex: 1,682; sh: 747; makefile: 558
file content (106 lines) | stat: -rw-r--r-- 3,821 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
Description: Use system zstd and xxhash libraries
 Adds USE_SYSTEM_ZSTD cmake option. When enabled, thin shim headers
 include system zstd.h and xxhash.h inside the duckdb_zstd namespace
 so that existing duckdb_zstd:: references remain valid without
 patching all call sites.
Author: Dominique Belhachemi <domibel@debian.org>
Forwarded: not-needed
Last-Update: 2026-03-27

Index: duckdb/CMakeLists.txt
===================================================================
--- duckdb.orig/CMakeLists.txt
+++ duckdb/CMakeLists.txt
@@ -714,7 +714,12 @@ include_directories(third_party/mbedtls/
 include_directories(third_party/jaro_winkler)
 include_directories(third_party/vergesort)
 include_directories(third_party/yyjson/include)
-include_directories(third_party/zstd/include)
+option(USE_SYSTEM_ZSTD "Use system-provided zstd library" OFF)
+if(USE_SYSTEM_ZSTD)
+  include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/include/shims/zstd)
+else()
+  include_directories(third_party/zstd/include)
+endif()
 
 # todo only regenerate ub file if one of the input files changed hack alert
 function(enable_unity_build UB_SUFFIX SOURCE_VARIABLE_NAME)
@@ -834,7 +839,9 @@ add_third_party(re2)
 add_third_party(skiplist)
 add_third_party(utf8proc)
 add_third_party(yyjson)
-add_third_party(zstd)
+if(NOT USE_SYSTEM_ZSTD)
+  add_third_party(zstd)
+endif()
 
 if(NOT DUCKDB_EXPLICIT_PLATFORM)
   set(VERSION_SOURCES tools/utils/test_platform.cpp)
Index: duckdb/extension/parquet/CMakeLists.txt
===================================================================
--- duckdb.orig/extension/parquet/CMakeLists.txt
+++ duckdb/extension/parquet/CMakeLists.txt
@@ -84,7 +84,15 @@ build_static_extension(parquet ${PARQUET
 set(PARAMETERS "-warnings")
 
 build_loadable_extension(parquet ${PARAMETERS} ${PARQUET_EXTENSION_FILES})
-target_link_libraries(parquet_loadable_extension duckdb_mbedtls duckdb_zstd)
+target_link_libraries(parquet_loadable_extension duckdb_mbedtls)
+if(NOT USE_SYSTEM_ZSTD)
+  target_link_libraries(parquet_loadable_extension duckdb_zstd)
+else()
+  find_package(PkgConfig REQUIRED)
+  pkg_check_modules(libzstd REQUIRED IMPORTED_TARGET libzstd)
+  pkg_check_modules(libxxhash REQUIRED IMPORTED_TARGET libxxhash)
+  target_link_libraries(parquet_loadable_extension PkgConfig::libzstd PkgConfig::libxxhash)
+endif()
 
 install(
   TARGETS parquet_extension
Index: duckdb/src/CMakeLists.txt
===================================================================
--- duckdb.orig/src/CMakeLists.txt
+++ duckdb/src/CMakeLists.txt
@@ -82,8 +82,16 @@ set(DUCKDB_LINK_LIBS
     duckdb_fastpforlib
     duckdb_skiplistlib
     duckdb_mbedtls
-    duckdb_yyjson
-    duckdb_zstd)
+    duckdb_yyjson)
+
+if(USE_SYSTEM_ZSTD)
+  find_package(PkgConfig REQUIRED)
+  pkg_check_modules(libzstd REQUIRED IMPORTED_TARGET libzstd)
+  pkg_check_modules(libxxhash REQUIRED IMPORTED_TARGET libxxhash)
+  list(APPEND DUCKDB_SYSTEM_LIBS PkgConfig::libzstd PkgConfig::libxxhash)
+else()
+  list(APPEND DUCKDB_LINK_LIBS duckdb_zstd)
+endif()
 
 foreach(LINK_LIB ${DUCKDB_LINK_LIBS})
   list(APPEND LINK_OBJECTS $<TARGET_OBJECTS:${LINK_LIB}>)
Index: duckdb/src/include/shims/zstd/zstd.h
===================================================================
--- /dev/null
+++ duckdb/src/include/shims/zstd/zstd.h
@@ -0,0 +1,6 @@
+#pragma once
+#include <stddef.h>
+#include <limits.h>
+namespace duckdb_zstd {
+#include_next <zstd.h>
+} // namespace duckdb_zstd
Index: duckdb/src/include/shims/zstd/zstd/common/xxhash.hpp
===================================================================
--- /dev/null
+++ duckdb/src/include/shims/zstd/zstd/common/xxhash.hpp
@@ -0,0 +1,8 @@
+#pragma once
+#include <stddef.h>
+#include <stdlib.h>
+#include <string.h>
+#include <limits.h>
+namespace duckdb_zstd {
+#include <xxhash.h>
+} // namespace duckdb_zstd