[duckdb] Sanitize (#48180)

This commit is contained in:
Kai Pastor 2025-11-11 03:05:38 +01:00 committed by GitHub
parent 02d67a2af9
commit 37b6d58a23
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
14 changed files with 445 additions and 64 deletions

View File

@ -1,16 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1300ab8..038c03b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1277,7 +1277,10 @@ endif()
# Load extensions passed through cmake config var
foreach(EXT IN LISTS BUILD_EXTENSIONS)
if(NOT "${EXT}" STREQUAL "")
- if (EXISTS "${EXTENSION_CONFIG_BASE_DIR}/${EXT}.cmake")
+ if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/extension/${EXT}/extension_config.cmake")
+ # out-of-tree extension
+ include("${CMAKE_CURRENT_SOURCE_DIR}/extension/${EXT}/extension_config.cmake")
+ elseif (EXISTS "${EXTENSION_CONFIG_BASE_DIR}/${EXT}.cmake")
# out-of-tree extension: load cmake file
include("${EXTENSION_CONFIG_BASE_DIR}/${EXT}.cmake")
else()

View File

@ -0,0 +1,15 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 981de80..65aa1da 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -35,6 +35,10 @@ target_link_libraries(${EXTENSION_NAME} EXPAT::EXPAT MINIZIP::minizip-ng
target_link_libraries(${LOADABLE_EXTENSION_NAME} EXPAT::EXPAT
MINIZIP::minizip-ng ZLIB::ZLIB)
+set_target_properties(${LOADABLE_EXTENSION_NAME} PROPERTIES EXCLUDE_FROM_ALL 1)
+if(BUILD_SHARED_LIBS)
+ return()
+endif()
install(
TARGETS ${EXTENSION_NAME}
EXPORT "${DUCKDB_EXPORT_SET}"

View File

@ -0,0 +1,15 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 40a19e8..8b75d40 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -49,6 +49,10 @@ else()
endif()
+set_target_properties(httpfs_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1)
+if(BUILD_SHARED_LIBS)
+ return()
+endif()
install(
TARGETS httpfs_extension
EXPORT "${DUCKDB_EXPORT_SET}"

View File

@ -0,0 +1,206 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4e9d498..70414b4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -410,7 +410,6 @@ option(EXTENSION_STATIC_BUILD
FALSE)
if(WIN32 OR ZOS)
- set(EXTENSION_STATIC_BUILD TRUE)
add_definitions(-D_SILENCE_ALL_MS_EXT_DEPRECATION_WARNINGS=1)
endif()
@@ -857,6 +856,7 @@ if (NOT EXTENSION_CONFIG_BUILD AND NOT ${EXTENSION_TESTS_ONLY} AND NOT CLANG_TID
message(STATUS "Extensions will be deployed to: ${LOCAL_EXTENSION_REPO_DIR}")
endif()
endif()
+set_target_properties(duckdb_local_extension_repo PROPERTIES EXCLUDE_FROM_ALL 1)
function(build_loadable_extension_directory NAME ABI_TYPE OUTPUT_DIRECTORY EXTENSION_VERSION CAPI_VERSION PARAMETERS)
set(TARGET_NAME ${NAME}_loadable_extension)
@@ -875,6 +875,8 @@ function(build_loadable_extension_directory NAME ABI_TYPE OUTPUT_DIRECTORY EXTEN
if(EMSCRIPTEN)
add_library(${TARGET_NAME} STATIC ${FILES})
+ elseif(WIN32)
+ add_library(${TARGET_NAME} MODULE ${FILES})
else()
add_library(${TARGET_NAME} SHARED ${FILES})
endif()
diff --git a/DuckDBConfig.cmake.in b/DuckDBConfig.cmake.in
index 7c5ce31..dcf5ada 100644
--- a/DuckDBConfig.cmake.in
+++ b/DuckDBConfig.cmake.in
@@ -9,6 +9,22 @@ find_dependency(Threads)
if(NOT @WITH_INTERNAL_ICU@)
find_dependency(ICU COMPONENTS i18n uc data)
endif()
+if(NOT "@BUILD_SHARED_LIBS@")
+ set(z_vcpkg_duckdb_extensions_names "@DUCKDB_EXTENSION_NAMES@")
+ if("excel" IN_LIST z_vcpkg_duckdb_extensions_names)
+ find_dependency(EXPAT)
+ find_dependency(ZLIB)
+ find_dependency(minizip-ng CONFIG)
+ endif()
+ if("httpfs" IN_LIST z_vcpkg_duckdb_extensions_names)
+ find_dependency(CURL)
+ find_dependency(OpenSSL)
+ if(MINGW)
+ find_dependency(ZLIB)
+ endif()
+ endif()
+ unset(z_vcpkg_duckdb_extensions_names)
+endif()
# Compute paths
get_filename_component(DuckDB_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
@@ -18,7 +34,7 @@ if(NOT TARGET duckdb AND NOT DuckDB_BINARY_DIR)
include("${DuckDB_CMAKE_DIR}/DuckDBExports.cmake")
endif()
-if(DuckDB_USE_STATIC_LIBS)
+if(NOT "@BUILD_SHARED_LIBS@")
set(DuckDB_LIBRARIES duckdb_static)
else()
set(DuckDB_LIBRARIES duckdb)
diff --git a/extension/autocomplete/CMakeLists.txt b/extension/autocomplete/CMakeLists.txt
index 544e65a..a8e1e43 100644
--- a/extension/autocomplete/CMakeLists.txt
+++ b/extension/autocomplete/CMakeLists.txt
@@ -13,6 +13,10 @@ set(PARAMETERS "-warnings")
build_loadable_extension(autocomplete ${PARAMETERS}
${AUTOCOMPLETE_EXTENSION_FILES})
+set_target_properties(autocomplete_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1)
+if(BUILD_SHARED_LIBS)
+ return()
+endif()
install(
TARGETS autocomplete_extension
EXPORT "${DUCKDB_EXPORT_SET}"
diff --git a/extension/core_functions/CMakeLists.txt b/extension/core_functions/CMakeLists.txt
index c97cd77..0827683 100644
--- a/extension/core_functions/CMakeLists.txt
+++ b/extension/core_functions/CMakeLists.txt
@@ -14,6 +14,10 @@ set(PARAMETERS "-warnings")
build_loadable_extension(core_functions ${PARAMETERS} ${CORE_FUNCTION_FILES})
target_link_libraries(core_functions_loadable_extension duckdb_skiplistlib)
+set_target_properties(core_functions_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1)
+if(BUILD_SHARED_LIBS)
+ return()
+endif()
install(
TARGETS core_functions_extension
EXPORT "${DUCKDB_EXPORT_SET}"
diff --git a/extension/icu/CMakeLists.txt b/extension/icu/CMakeLists.txt
index a5bb58a..8edff2b 100644
--- a/extension/icu/CMakeLists.txt
+++ b/extension/icu/CMakeLists.txt
@@ -42,6 +42,11 @@ build_loadable_extension(icu ${PARAMETERS} ${ICU_EXTENSION_FILES})
if(NOT WITH_INTERNAL_ICU)
target_link_libraries(icu_loadable_extension ICU::i18n ICU::uc ICU::data)
endif()
+
+set_target_properties(icu_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1)
+if(BUILD_SHARED_LIBS)
+ return()
+endif()
install(
TARGETS icu_extension
EXPORT "${DUCKDB_EXPORT_SET}"
diff --git a/extension/jemalloc/CMakeLists.txt b/extension/jemalloc/CMakeLists.txt
index 38be497..75cb8fb 100644
--- a/extension/jemalloc/CMakeLists.txt
+++ b/extension/jemalloc/CMakeLists.txt
@@ -12,6 +12,9 @@ set(JEMALLOC_EXTENSION_FILES jemalloc_extension.cpp ${JEMALLOC_OBJECT_FILES})
build_static_extension(jemalloc ${JEMALLOC_EXTENSION_FILES})
# we do not do build_loadable_extension here because jemalloc is static-only
+if(BUILD_SHARED_LIBS)
+ return()
+endif()
install(
TARGETS jemalloc_extension
EXPORT "${DUCKDB_EXPORT_SET}"
diff --git a/extension/json/CMakeLists.txt b/extension/json/CMakeLists.txt
index 80b4af4..81055de 100644
--- a/extension/json/CMakeLists.txt
+++ b/extension/json/CMakeLists.txt
@@ -41,6 +41,10 @@ set(PARAMETERS "-warnings")
build_loadable_extension(json ${PARAMETERS} ${JSON_EXTENSION_FILES})
target_link_libraries(json_loadable_extension duckdb_yyjson)
+set_target_properties(json_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1)
+if(BUILD_SHARED_LIBS)
+ return()
+endif()
install(
TARGETS json_extension
EXPORT "${DUCKDB_EXPORT_SET}"
diff --git a/extension/parquet/CMakeLists.txt b/extension/parquet/CMakeLists.txt
index a8335d8..ef2ea3f 100644
--- a/extension/parquet/CMakeLists.txt
+++ b/extension/parquet/CMakeLists.txt
@@ -82,6 +82,10 @@ set(PARAMETERS "-warnings")
build_loadable_extension(parquet ${PARAMETERS} ${PARQUET_EXTENSION_FILES})
target_link_libraries(parquet_loadable_extension duckdb_mbedtls duckdb_zstd)
+set_target_properties(parquet_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1)
+if(BUILD_SHARED_LIBS)
+ return()
+endif()
install(
TARGETS parquet_extension
EXPORT "${DUCKDB_EXPORT_SET}"
diff --git a/extension/tpcds/CMakeLists.txt b/extension/tpcds/CMakeLists.txt
index 6ec4cb8..db51141 100644
--- a/extension/tpcds/CMakeLists.txt
+++ b/extension/tpcds/CMakeLists.txt
@@ -11,6 +11,10 @@ set(PARAMETERS "-warnings")
build_loadable_extension(tpcds ${PARAMETERS} tpcds_extension.cpp
${DSDGEN_OBJECT_FILES})
+set_target_properties(tpcds_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1)
+if(BUILD_SHARED_LIBS)
+ return()
+endif()
install(
TARGETS tpcds_extension
EXPORT "${DUCKDB_EXPORT_SET}"
diff --git a/extension/tpch/CMakeLists.txt b/extension/tpch/CMakeLists.txt
index 46dcb12..46b9950 100644
--- a/extension/tpch/CMakeLists.txt
+++ b/extension/tpch/CMakeLists.txt
@@ -11,6 +11,10 @@ set(PARAMETERS "-warnings")
build_loadable_extension(tpch ${PARAMETERS} tpch_extension.cpp
${DBGEN_OBJECT_FILES})
+set_target_properties(tpch_loadable_extension PROPERTIES EXCLUDE_FROM_ALL 1)
+if(BUILD_SHARED_LIBS)
+ return()
+endif()
install(
TARGETS tpch_extension
EXPORT "${DUCKDB_EXPORT_SET}"
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 1915e92..83da5f4 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -172,8 +172,15 @@ else()
endif()
+if(BUILD_SHARED_LIBS)
+ set(INSTALL_TARGET duckdb)
+ set_target_properties(duckdb_static PROPERTIES EXCLUDE_FROM_ALL 1)
+else()
+ set(INSTALL_TARGET duckdb_static)
+ set_target_properties(duckdb PROPERTIES EXCLUDE_FROM_ALL 1)
+endif()
install(
- TARGETS duckdb duckdb_static
+ TARGETS ${INSTALL_TARGET}
EXPORT "${DUCKDB_EXPORT_SET}"
LIBRARY DESTINATION "${INSTALL_LIB_DIR}"
ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"

View File

@ -5,26 +5,36 @@ vcpkg_from_github(
SHA512 4965071888bfd791ddc81ed9eb53cedcd0248b159e6db3492bf5d17557b0f7516aed0840408ff46a06e9a0989a42d7b2a7452fdaf619c8ca44de43e5d1c338b8
HEAD_REF main
PATCHES
extensions.patch
library-linkage.diff
)
# Remove vendored dependencies which are not properly namespaced
# Remove vendored dependencies which are optional or not properly namespaced
file(REMOVE_RECURSE
"${SOURCE_PATH}/extension/third_party/icu"
"${SOURCE_PATH}/third_party/catch"
"${SOURCE_PATH}/third_party/imdb"
"${SOURCE_PATH}/third_party/snowball"
"${SOURCE_PATH}/third_party/tpce-tool"
)
set(extension_dirs "")
if("excel" IN_LIST FEATURES)
vcpkg_from_github(
OUT_SOURCE_PATH DUCKDB_EXCCEL_SOURCE_PATH
OUT_SOURCE_PATH DUCKDB_EXCEL_SOURCE_PATH
REPO duckdb/duckdb-excel
REF 8504be9ec8183e4082141f9359b53a64d3a440b7
SHA512 295bfe67c2902c09b584bee623dee7db69aad272a00e6bd4038ec65e2d8a977d1ace7261af8f67863c2fae709acc414e290e40f0bad43bae679c0a8639a0d6b5
HEAD_REF main
PATCHES
library-linkage-excel.diff
)
file(RENAME "${DUCKDB_EXCCEL_SOURCE_PATH}" "${SOURCE_PATH}/extension/excel")
list(APPEND extension_dirs "${DUCKDB_EXCEL_SOURCE_PATH}")
file(WRITE "${SOURCE_PATH}/.github/config/extensions/excel.cmake" "
duckdb_extension_load(excel
SOURCE_DIR \"${DUCKDB_EXCEL_SOURCE_PATH}\"
INCLUDE_DIR \"${DUCKDB_EXCEL_SOURCE_PATH}/src/excel/include\"
)
")
endif()
if("httpfs" IN_LIST FEATURES)
@ -34,71 +44,123 @@ if("httpfs" IN_LIST FEATURES)
REF 0989823e43554e8a00b31959a853e29ab9bd07f9
SHA512 71461d522aa5338df81931f937ed538b453b274d22e91ad7e0f1a92e4437a29cc869a0f5be3bd5a9abf0045dfd4681a787923ee32374be471483909c0a60a21f
HEAD_REF main
PATCHES
library-linkage-httpfs.diff
)
file(RENAME "${DUCKDB_HTTPFS_SOURCE_PATH}" "${SOURCE_PATH}/extension/httpfs")
list(APPEND extension_dirs "${DUCKDB_HTTPFS_SOURCE_PATH}")
file(WRITE "${SOURCE_PATH}/.github/config/extensions/httpfs.cmake" "
duckdb_extension_load(httpfs
SOURCE_DIR \"${DUCKDB_HTTPFS_SOURCE_PATH}\"
INCLUDE_DIR \"${DUCKDB_HTTPFS_SOURCE_PATH}/extension/httpfs/include\"
)
")
endif()
if("iceberg" IN_LIST FEATURES)
vcpkg_from_github(
OUT_SOURCE_PATH DUCKDB_HTTPFS_SOURCE_PATH
OUT_SOURCE_PATH DUCKDB_ICEBERG_SOURCE_PATH
REPO duckdb/duckdb-iceberg
REF 6b636bff44aeeccf6f6d5b54de6edf280274beea
SHA512 f8ce593117dd5423fd5445b6fa6c1f3b11ee7c8a2fdb988c3c0208a59d5ed980b941116866f7cb1d0597662e98c03687da071cbc5617c71086eb112621e31748
HEAD_REF main
)
file(RENAME "${DUCKDB_HTTPFS_SOURCE_PATH}" "${SOURCE_PATH}/extension/iceberg")
list(APPEND extension_dirs "${DUCKDB_ICEBERG_SOURCE_PATH}")
file(WRITE "${SOURCE_PATH}/.github/config/extensions/iceberg.cmake" "
duckdb_extension_load(iceberg
SOURCE_DIR \"${DUCKDB_ICEBERG_SOURCE_PATH}\"
INCLUDE_DIR \"${DUCKDB_ICEBERG_SOURCE_PATH}/src/include\"
)
")
endif()
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" DUCKDB_BUILD_STATIC)
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" DUCKDB_BUILD_DYNAMIC)
set(BUILD_EXTENSIONS "${FEATURES}")
list(FILTER BUILD_EXTENSIONS INCLUDE REGEX "^(autocomplete|excel|httpfs|icu|json|tpcds|tpch)\$")
set(EXTENSION_LIST "autocomplete;excel;httpfs;icu;json;tpcds;tpch")
set(BUILD_EXTENSIONS "")
foreach(EXT ${EXTENSION_LIST})
if(${EXT} IN_LIST FEATURES)
list(APPEND BUILD_EXTENSIONS ${EXT})
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" EXTENSION_STATIC_BUILD)
if(VCPKG_CROSSCOMPILING AND NOT DEFINED DUCKDB_EXPLICIT_PLATFORM)
set(DUCKDB_EXPLICIT_PLATFORM "")
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
set(DUCKDB_EXPLICIT_PLATFORM "arm64")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
set(DUCKDB_EXPLICIT_PLATFORM "amd64")
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
set(DUCKDB_EXPLICIT_PLATFORM "i686")
endif()
if(DUCKDB_EXPLICIT_PLATFORM)
if(VCPKG_TARGET_IS_ANDROID)
string(APPEND DUCKDB_EXPLICIT_PLATFORM "-linux_android")
elseif(VCPKG_TARGET_IS_FREEBSD)
string(APPEND DUCKDB_EXPLICIT_PLATFORM "-freebsd")
elseif(VCPKG_TARGET_IS_LINUX)
string(APPEND DUCKDB_EXPLICIT_PLATFORM "-linux")
elseif(VCPKG_TARGET_IS_OSX)
string(APPEND DUCKDB_EXPLICIT_PLATFORM "-osx")
elseif(VCPKG_TARGET_IS_WINDOWS)
string(APPEND DUCKDB_EXPLICIT_PLATFORM "-windows")
if(VCPKG_TARGET_IS_MINGW)
string(APPEND DUCKDB_EXPLICIT_PLATFORM "_mingw")
endif()
elseif()
set(DUCKDB_EXPLICIT_PLATFORM "") # unknown. override in triplet file.
endif()
endif()
endforeach()
if(NOT "${BUILD_EXTENSIONS}" STREQUAL "")
set(BUILD_EXTENSIONS_FLAG "-DBUILD_EXTENSIONS='${BUILD_EXTENSIONS}'")
endif()
vcpkg_cmake_configure(
SOURCE_PATH ${SOURCE_PATH}
OPTIONS
-DOVERRIDE_GIT_DESCRIBE=v${VERSION}-0-g0123456789
-DDUCKDB_EXPLICIT_PLATFORM=${DUCKDB_EXPLICIT_PLATFORM}
-DDUCKDB_EXPLICIT_VERSION=v${VERSION}
-DBUILD_UNITTESTS=OFF
"-DBUILD_EXTENSIONS=${BUILD_EXTENSIONS}"
-DBUILD_SHELL=FALSE
"${BUILD_EXTENSIONS_FLAG}"
-DENABLE_EXTENSION_AUTOLOADING=1
-DBUILD_UNITTESTS=OFF
-DCMAKE_JOB_POOL_LINK=console # Serialize linking to avoid OOM
-DENABLE_EXTENSION_AUTOINSTALL=1
-DWITH_INTERNAL_ICU=OFF
-DENABLE_EXTENSION_AUTOLOADING=1
-DENABLE_SANITIZER=OFF
-DENABLE_THREAD_SANITIZER=OFF
-DENABLE_UBSAN=OFF
"-DEXTENSION_CONFIG_BASE_DIR=${SOURCE_PATH}/OUT_OF_TREE"
"-DEXTENSION_STATIC_BUILD=${EXTENSION_STATIC_BUILD}"
"-DINSTALL_CMAKE_DIR:STRING=share/${PORT}"
-DWITH_INTERNAL_ICU=OFF
)
vcpkg_cmake_install()
vcpkg_cmake_config_fixup()
if(EXISTS "${CURRENT_PACKAGES_DIR}/CMake")
vcpkg_cmake_config_fixup(CONFIG_PATH CMake)
elseif(EXISTS "${CURRENT_PACKAGES_DIR}/lib/cmake/DuckDB")
vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/DuckDB")
elseif(EXISTS "${CURRENT_PACKAGES_DIR}/lib/cmake/${PORT}")
vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/${PORT}")
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
foreach(path IN ITEMS duckdb.h duckdb/common/winapi.hpp)
vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/${path}" "#ifdef DUCKDB_STATIC_BUILD" "#if 1")
endforeach()
endif()
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/bin" "${CURRENT_PACKAGES_DIR}/debug/bin")
endif()
file(REMOVE_RECURSE
"${CURRENT_PACKAGES_DIR}/include/duckdb/main/capi/header_generation"
)
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
# empty dirs
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/duckdb/main/capi/header_generation")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/include/duckdb/storage/serialization")
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
set(third_party_licenses "")
file(COPY_FILE "${SOURCE_PATH}/third_party/thrift/thrift/LICENSE" "${SOURCE_PATH}/third_party/thrift/LICENSE")
file(GLOB third_party_files "${SOURCE_PATH}/third_party/*")
foreach(maybe_directory IN LISTS extension_dirs third_party_files)
if(IS_DIRECTORY "${maybe_directory}")
cmake_path(GET maybe_directory FILENAME package)
set(license_file "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/## ${package} license")
file(COPY_FILE "${maybe_directory}/LICENSE" "${license_file}")
list(APPEND third_party_licenses "${license_file}")
endif()
endforeach()
vcpkg_install_copyright(
COMMENT [[
Duckdb contains copyies of many third-party packages which are subject to
separate license terms.
]]
FILE_LIST
"${SOURCE_PATH}/LICENSE"
${third_party_licenses}
)

View File

@ -1,4 +1,4 @@
The package DuckDB provides CMake targets:
duckdb provides CMake targets:
find_package(DuckDB CONFIG REQUIRED)
target_link_libraries(main PRIVATE $<IF:$<TARGET_EXISTS:duckdb>,duckdb,duckdb_static>)
find_package(DuckDB CONFIG REQUIRED)
target_link_libraries(main PRIVATE $<IF:$<TARGET_EXISTS:duckdb>,duckdb,duckdb_static>)

View File

@ -1,10 +1,11 @@
{
"name": "duckdb",
"version": "1.4.1",
"port-version": 1,
"description": "High-performance in-process analytical database system",
"homepage": "https://duckdb.org",
"license": "MIT",
"supports": "!(uwp | android | (windows & arm64))",
"license": null,
"supports": "!uwp",
"dependencies": [
{
"name": "vcpkg-cmake",
@ -23,14 +24,24 @@
"description": "Statically link the excel extension into DuckDB",
"dependencies": [
"expat",
"minizip-ng"
{
"name": "minizip-ng",
"default-features": false
}
]
},
"httpfs": {
"description": "Statically link the httpfs extension into DuckDB",
"dependencies": [
"curl",
"openssl"
{
"name": "curl",
"default-features": false
},
"openssl",
{
"name": "zlib",
"platform": "mingw"
}
]
},
"iceberg": {

View File

@ -945,6 +945,19 @@ vcpkg-ci-curl:x64-windows-static-md=pass
vcpkg-ci-curl:x64-windows-static=pass
vcpkg-ci-curl:x64-windows=pass
vcpkg-ci-curl:x86-windows=pass
vcpkg-ci-duckdb:arm-neon-android=pass
vcpkg-ci-duckdb:arm64-android=pass
vcpkg-ci-duckdb:arm64-osx=pass
vcpkg-ci-duckdb:arm64-windows-static-md=pass
vcpkg-ci-duckdb:arm64-windows=pass
vcpkg-ci-duckdb:x64-android=pass
vcpkg-ci-duckdb:x64-linux=pass
vcpkg-ci-duckdb:x64-osx=pass
vcpkg-ci-duckdb:x64-windows-release=pass
vcpkg-ci-duckdb:x64-windows-static-md=pass
vcpkg-ci-duckdb:x64-windows-static=pass
vcpkg-ci-duckdb:x64-windows=pass
vcpkg-ci-duckdb:x86-windows=pass
vcpkg-ci-ffmpeg:arm-neon-android=pass
vcpkg-ci-ffmpeg:arm64-android=pass
vcpkg-ci-ffmpeg:arm64-osx=pass

View File

@ -1 +1,21 @@
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
vcpkg_cmake_configure(
SOURCE_PATH "${CURRENT_PORT_DIR}/project"
)
vcpkg_cmake_install()
if(NOT VCPKG_CROSSCOMPILING)
if(CMAKE_HOST_WIN32)
vcpkg_host_path_list(PREPEND ENV{PATH} "${CURRENT_INSTALLED_DIR}/bin")
elseif(CMAKE_HOST_APPLE)
vcpkg_host_path_list(PREPEND ENV{DYLD_LIBRARY_PATH} "${CURRENT_INSTALLED_DIR}/lib")
else()
vcpkg_host_path_list(PREPEND ENV{LD_LIBRARY_PATH} "${CURRENT_INSTALLED_DIR}/lib")
endif()
vcpkg_execute_required_process(
COMMAND "${CURRENT_PACKAGES_DIR}/bin/${PORT}/main"
WORKING_DIRECTORY "${CURRENT_BUILDTREES_DIR}"
LOGNAME release-test
)
endif()

View File

@ -0,0 +1,13 @@
cmake_minimum_required(VERSION 3.16)
project(duckdb-test C CXX)
add_executable(main main.c)
find_package(DuckDB CONFIG REQUIRED)
if(BUILD_SHARED_LIBS)
add_library(imported::duckdb ALIAS duckdb)
else()
add_library(imported::duckdb ALIAS duckdb_static)
endif()
target_link_libraries(main PRIVATE imported::duckdb)
install(TARGETS main RUNTIME DESTINATION bin/vcpkg-ci-duckdb)

View File

@ -0,0 +1,33 @@
#include <stdio.h>
#include <duckdb.h>
int main()
{
duckdb_database db;
if (duckdb_open(NULL, &db) == DuckDBError) {
printf("open failed\n");
return 1;
}
duckdb_connection con;
if (duckdb_connect(db, &con) == DuckDBError) {
printf("connect failed\n");
return 2;
}
const char* query_icu =
"LOAD icu;"
"SELECT current_localtime();"
"PRAGMA collations;"
"SELECT list(collname) FROM pragma_collations();"
;
duckdb_result result;
if (duckdb_query(con, query_icu, &result) == DuckDBError) {
printf("icu query failed: %s\n", duckdb_result_error(&result));
return 3;
}
else {
printf("success\n");
}
duckdb_disconnect(&con);
duckdb_close(&db);
return 0;
}

View File

@ -1,6 +1,6 @@
{
"name": "vcpkg-ci-duckdb",
"version": "0.0.1",
"version-string": "ci",
"description": "Test the icu feature",
"license": "BSD-3-Clause",
"dependencies": [
@ -9,6 +9,10 @@
"features": [
"icu"
]
},
{
"name": "vcpkg-cmake",
"host": true
}
]
}

View File

@ -2558,7 +2558,7 @@
},
"duckdb": {
"baseline": "1.4.1",
"port-version": 0
"port-version": 1
},
"duckx": {
"baseline": "1.2.2",

View File

@ -1,5 +1,10 @@
{
"versions": [
{
"git-tree": "15682ca51a866ca6a25748b525a2880f02d69d8d",
"version": "1.4.1",
"port-version": 1
},
{
"git-tree": "e6c697b0852430ffdff41e631a0ccd9144dc6845",
"version": "1.4.1",