mirror of
https://github.com/uroni/hs5.git
synced 2025-10-26 11:17:18 +00:00
Use duckdb custom port
This commit is contained in:
parent
ab2b76af91
commit
c86b432469
@ -27,31 +27,6 @@ set(APIGEN_SCHEMAS
|
||||
SessionCheckResp # Must be last
|
||||
)
|
||||
|
||||
# Checkout https://github.com/duckdb/duckdb-ui at revision 6cbef805772b2cc974b86ab01da3906a0d365fdb into subdir duckdb-ui, don't run CMake on it
|
||||
set(DUCKDB_UI_REVISION "6cbef805772b2cc974b86ab01da3906a0d365fdb")
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
duckdb-ui
|
||||
GIT_REPOSITORY https://github.com/duckdb/duckdb-ui.git
|
||||
GIT_TAG ${DUCKDB_UI_REVISION}
|
||||
SOURCE_DIR ${CMAKE_SOURCE_DIR}/duckdb-ui
|
||||
SOURCE_SUBDIR "does-not-exist"
|
||||
)
|
||||
FetchContent_MakeAvailable(duckdb-ui)
|
||||
|
||||
|
||||
set(DUCKDB_SRCS "duckdb-ui/src/event_dispatcher.cpp"
|
||||
"duckdb-ui/src/http_server.cpp"
|
||||
"duckdb-ui/src/settings.cpp"
|
||||
"duckdb-ui/src/state.cpp"
|
||||
"duckdb-ui/src/ui_extension.cpp"
|
||||
"duckdb-ui/src/watcher.cpp"
|
||||
"duckdb-ui/src/utils/encoding.cpp"
|
||||
"duckdb-ui/src/utils/env.cpp"
|
||||
"duckdb-ui/src/utils/helpers.cpp"
|
||||
"duckdb-ui/src/utils/md_helpers.cpp"
|
||||
"duckdb-ui/src/utils/serialization.cpp"
|
||||
)
|
||||
|
||||
add_custom_target(apigen)
|
||||
foreach(SCHEMA ${APIGEN_SCHEMAS})
|
||||
@ -127,7 +102,7 @@ add_executable(hs5
|
||||
wwwgen/www_files.cpp
|
||||
src/DuckDbFs.cpp
|
||||
${SCHEMA_SOURCES}
|
||||
${DUCKDB_SRCS})
|
||||
)
|
||||
|
||||
set_property(TARGET hs5 PROPERTY CXX_STANDARD 20)
|
||||
|
||||
@ -151,11 +126,7 @@ find_path(TCLAP_INCLUDE_DIRS "tclap/Arg.h")
|
||||
target_include_directories(hs5 PRIVATE ${TCLAP_INCLUDE_DIRS})
|
||||
target_link_libraries(hs5 PRIVATE $<IF:$<TARGET_EXISTS:zstd::libzstd_shared>,zstd::libzstd_shared,zstd::libzstd_static> Folly::folly Folly::folly_deps Folly::follybenchmark Folly::folly_test_util
|
||||
proxygen::proxygen proxygen::proxygencurl proxygen::proxygenhttpserver expat::expat unofficial-sodium::sodium SqliteCppGen::SqliteCppGen nlohmann_json::nlohmann_json fmt::fmt
|
||||
$<IF:$<TARGET_EXISTS:duckdb>,duckdb,duckdb_static>)
|
||||
|
||||
# DuckDB UI
|
||||
target_compile_definitions(hs5 PRIVATE UI_EXTENSION_SEQ_NUM="1" UI_EXTENSION_GIT_SHA="${DUCKDB_UI_REVISION}")
|
||||
target_include_directories(hs5 PRIVATE ${CMAKE_SOURCE_DIR}/duckdb-ui/src/include ${CMAKE_SOURCE_DIR}/duckdb-ui/third_party/httplib)
|
||||
$<IF:$<TARGET_EXISTS:duckdb>,duckdb,duckdb_static> )
|
||||
|
||||
target_compile_features(hs5 PUBLIC cxx_std_20)
|
||||
|
||||
|
||||
25
custom-ports/duckdb-custom/excel-libname.patch
Normal file
25
custom-ports/duckdb-custom/excel-libname.patch
Normal file
@ -0,0 +1,25 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 981de80..64e6298 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -13,7 +13,7 @@ if (EMSCRIPTEN)
|
||||
endif()
|
||||
|
||||
# Dependencies from VCPKG
|
||||
-find_package(EXPAT REQUIRED)
|
||||
+find_package(expat REQUIRED)
|
||||
find_package(ZLIB REQUIRED)
|
||||
find_package(minizip-ng CONFIG REQUIRED)
|
||||
|
||||
@@ -30,9 +30,9 @@ set(PARAMETERS "-warnings")
|
||||
build_loadable_extension(${TARGET_NAME} ${PARAMETERS} ${EXTENSION_SOURCES}
|
||||
${NUMFORMAT_OBJECT_FILES})
|
||||
|
||||
-target_link_libraries(${EXTENSION_NAME} EXPAT::EXPAT MINIZIP::minizip-ng
|
||||
+target_link_libraries(${EXTENSION_NAME} expat::expat MINIZIP::minizip-ng
|
||||
ZLIB::ZLIB)
|
||||
-target_link_libraries(${LOADABLE_EXTENSION_NAME} EXPAT::EXPAT
|
||||
+target_link_libraries(${LOADABLE_EXTENSION_NAME} expat::expat
|
||||
MINIZIP::minizip-ng ZLIB::ZLIB)
|
||||
|
||||
install(
|
||||
54
custom-ports/duckdb-custom/extensions.patch
Normal file
54
custom-ports/duckdb-custom/extensions.patch
Normal file
@ -0,0 +1,54 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index a8c5ecd0a4..9450804eb5 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -1295,7 +1295,29 @@ endforeach()
|
||||
# Load extensions passed through cmake config var
|
||||
foreach(EXT IN LISTS BUILD_EXTENSIONS)
|
||||
if(NOT "${EXT}" STREQUAL "")
|
||||
- duckdb_extension_load(${EXT})
|
||||
+ if("${EXT}" STREQUAL "httpfs")
|
||||
+ duckdb_extension_load(${EXT}
|
||||
+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/extension/httpfs
|
||||
+ INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/extension/httpfs/extension/httpfs/include
|
||||
+ )
|
||||
+ elseif("${EXT}" STREQUAL "excel")
|
||||
+ duckdb_extension_load(${EXT}
|
||||
+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/extension/excel
|
||||
+ INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/extension/excel/src/excel/include
|
||||
+ )
|
||||
+ elseif("${EXT}" STREQUAL "ui")
|
||||
+ duckdb_extension_load(${EXT}
|
||||
+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/extension/ui
|
||||
+ INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/extension/ui/src/include
|
||||
+ )
|
||||
+ elseif("${EXT}" STREQUAL "ducklake")
|
||||
+ duckdb_extension_load(${EXT}
|
||||
+ SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/extension/ducklake
|
||||
+ INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/extension/ducklake/src/include
|
||||
+ )
|
||||
+ else()
|
||||
+ duckdb_extension_load(${EXT})
|
||||
+ endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
diff --git a/DuckDBConfig.cmake.in b/DuckDBConfig.cmake.in
|
||||
index 7c5ce31106..efb9ec3c5a 100644
|
||||
--- a/DuckDBConfig.cmake.in
|
||||
+++ b/DuckDBConfig.cmake.in
|
||||
@@ -10,6 +10,14 @@ if(NOT @WITH_INTERNAL_ICU@)
|
||||
find_dependency(ICU COMPONENTS i18n uc data)
|
||||
endif()
|
||||
|
||||
+set(EXTENSION_LIST "@BUILD_EXTENSIONS@")
|
||||
+list(FIND EXTENSION_LIST "excel" EXCEL_INDEX)
|
||||
+
|
||||
+if(EXCEL_INDEX GREATER_EQUAL 0)
|
||||
+ find_dependency(expat CONFIG)
|
||||
+ find_dependency(minizip-ng CONFIG)
|
||||
+endif()
|
||||
+
|
||||
# Compute paths
|
||||
get_filename_component(DuckDB_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
set(DuckDB_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@")
|
||||
117
custom-ports/duckdb-custom/portfile.cmake
Normal file
117
custom-ports/duckdb-custom/portfile.cmake
Normal file
@ -0,0 +1,117 @@
|
||||
vcpkg_from_github(
|
||||
OUT_SOURCE_PATH SOURCE_PATH
|
||||
REPO duckdb/duckdb
|
||||
REF v${VERSION}
|
||||
SHA512 8e725d94cfd81989d4f6d206728188e5b290ce3a7f71d89adc6beed91957f965180d34d69d9099d04e35fc402b389de56184875397b29286789bd9c5655595c5
|
||||
HEAD_REF main
|
||||
PATCHES
|
||||
extensions.patch
|
||||
)
|
||||
|
||||
# Remove vendored dependencies which are not properly namespaced
|
||||
file(REMOVE_RECURSE
|
||||
"${SOURCE_PATH}/third_party/catch"
|
||||
"${SOURCE_PATH}/third_party/imdb"
|
||||
"${SOURCE_PATH}/third_party/snowball"
|
||||
"${SOURCE_PATH}/third_party/tpce-tool"
|
||||
)
|
||||
|
||||
if("excel" IN_LIST FEATURES)
|
||||
vcpkg_from_github(
|
||||
OUT_SOURCE_PATH DUCKDB_EXCCEL_SOURCE_PATH
|
||||
REPO duckdb/duckdb-excel
|
||||
REF 0f1df3b14ad6458b90b52c5f625b409a44648c05
|
||||
SHA512 9a2ea6e14438aaeda812fe52156401b44293cd25ddede2b79753ca67f1a57e72e54aabb41d811e44444686de1f5b45d367aa5ebb7ded5991a6db8650edf05416
|
||||
HEAD_REF main
|
||||
PATCHES
|
||||
excel-libname.patch
|
||||
)
|
||||
file(RENAME "${DUCKDB_EXCCEL_SOURCE_PATH}" "${SOURCE_PATH}/extension/excel")
|
||||
endif()
|
||||
|
||||
if("httpfs" IN_LIST FEATURES)
|
||||
vcpkg_from_github(
|
||||
OUT_SOURCE_PATH DUCKDB_HTTPFS_SOURCE_PATH
|
||||
REPO duckdb/duckdb_httpfs
|
||||
REF b17b647ea893c3dd9c7e57f66d249aa48e3d4c3f
|
||||
SHA512 4c8f70e6cfa482b9ebea955f0c63a1a738f4daa6ebba54171ef17a756b84aa051fd6b888fe86c38d1078ee23e39a3678fedeab35f1da84a80f52192753c5ad3b
|
||||
HEAD_REF main
|
||||
)
|
||||
file(RENAME "${DUCKDB_HTTPFS_SOURCE_PATH}" "${SOURCE_PATH}/extension/httpfs")
|
||||
endif()
|
||||
|
||||
if("ui" IN_LIST FEATURES)
|
||||
vcpkg_from_github(
|
||||
OUT_SOURCE_PATH DUCKDB_UI_SOURCE_PATH
|
||||
REPO duckdb/duckdb-ui
|
||||
REF aab29c57f4133873f9ce70cdc3a34b0f5ab989b4
|
||||
SHA512 a20b6a21701eafeba46acba376d7cf1d218e1534d710915eac4eef44e08f453ce2543dc0b12bcd642e81efece376145538728373cebdae20baadc8b09508a16b
|
||||
HEAD_REF main
|
||||
)
|
||||
file(RENAME "${DUCKDB_UI_SOURCE_PATH}" "${SOURCE_PATH}/extension/ui")
|
||||
endif()
|
||||
|
||||
if("ducklake" IN_LIST FEATURES)
|
||||
vcpkg_from_github(
|
||||
OUT_SOURCE_PATH DUCKDB_LAKE_SOURCE_PATH
|
||||
REPO duckdb/ducklake
|
||||
REF 6865d6951569a34bd992be894e08be5af6af0a85
|
||||
SHA512 321f54aef0126dccd9fec6e16bf746649bc967630c8a5877c543efd7fc25c3568668e63d50ae02bfdf88ce9546ebae3c661eb94a94ab814a0299ef097272a457
|
||||
HEAD_REF main
|
||||
)
|
||||
file(RENAME "${DUCKDB_LAKE_SOURCE_PATH}" "${SOURCE_PATH}/extension/ducklake")
|
||||
endif()
|
||||
|
||||
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" DUCKDB_BUILD_STATIC)
|
||||
string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" DUCKDB_BUILD_DYNAMIC)
|
||||
|
||||
set(EXTENSION_LIST "autocomplete;excel;httpfs;icu;json;tpcds;tpch;ui;ducklake")
|
||||
set(BUILD_EXTENSIONS "")
|
||||
foreach(EXT ${EXTENSION_LIST})
|
||||
if(${EXT} IN_LIST FEATURES)
|
||||
list(APPEND BUILD_EXTENSIONS ${EXT})
|
||||
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}
|
||||
-DDUCKDB_EXPLICIT_VERSION=v${VERSION}
|
||||
-DBUILD_UNITTESTS=OFF
|
||||
-DBUILD_SHELL=FALSE
|
||||
"${BUILD_EXTENSIONS_FLAG}"
|
||||
-DENABLE_EXTENSION_AUTOLOADING=1
|
||||
-DENABLE_EXTENSION_AUTOINSTALL=1
|
||||
-DWITH_INTERNAL_ICU=OFF
|
||||
-DENABLE_SANITIZER=OFF
|
||||
-DENABLE_THREAD_SANITIZER=OFF
|
||||
-DENABLE_UBSAN=OFF
|
||||
)
|
||||
|
||||
vcpkg_cmake_install()
|
||||
|
||||
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}")
|
||||
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")
|
||||
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")
|
||||
4
custom-ports/duckdb-custom/usage
Normal file
4
custom-ports/duckdb-custom/usage
Normal file
@ -0,0 +1,4 @@
|
||||
The package DuckDB provides CMake targets:
|
||||
|
||||
find_package(DuckDB CONFIG REQUIRED)
|
||||
target_link_libraries(main PRIVATE $<IF:$<TARGET_EXISTS:duckdb>,duckdb,duckdb_static>)
|
||||
60
custom-ports/duckdb-custom/vcpkg.json
Normal file
60
custom-ports/duckdb-custom/vcpkg.json
Normal file
@ -0,0 +1,60 @@
|
||||
{
|
||||
"name": "duckdb-custom",
|
||||
"version": "1.3.2",
|
||||
"description": "High-performance in-process analytical database system",
|
||||
"homepage": "https://duckdb.org",
|
||||
"license": "MIT",
|
||||
"supports": "!(uwp | android | (windows & arm64))",
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "vcpkg-cmake",
|
||||
"host": true
|
||||
},
|
||||
{
|
||||
"name": "vcpkg-cmake-config",
|
||||
"host": true
|
||||
}
|
||||
],
|
||||
"features": {
|
||||
"autocomplete": {
|
||||
"description": "Statically link the autocomplete extension into DuckDB"
|
||||
},
|
||||
"excel": {
|
||||
"description": "Statically link the excel extension into DuckDB",
|
||||
"dependencies": [
|
||||
"expat",
|
||||
"minizip-ng"
|
||||
]
|
||||
},
|
||||
"httpfs": {
|
||||
"description": "Statically link the httpfs extension into DuckDB",
|
||||
"dependencies": [
|
||||
"openssl"
|
||||
]
|
||||
},
|
||||
"icu": {
|
||||
"description": "Statically link the icu extension into DuckDB",
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "icu",
|
||||
"default-features": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"json": {
|
||||
"description": "Statically link the json extension into DuckDB"
|
||||
},
|
||||
"tpcds": {
|
||||
"description": "Statically link the tpcds extension into DuckDB"
|
||||
},
|
||||
"tpch": {
|
||||
"description": "Statically link the tpch extension into DuckDB"
|
||||
},
|
||||
"ui": {
|
||||
"description": "Statically link the duckdb-ui extension into DuckDB"
|
||||
},
|
||||
"ducklake": {
|
||||
"description": "Statically link the ducklake extension into DuckDB"
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -219,7 +219,7 @@ bool DuckDbFs::ListFiles(const std::string &directory, const std::function<void(
|
||||
}
|
||||
|
||||
for (const auto &file : glob_res) {
|
||||
callback(file, false);
|
||||
callback(file.path, false);
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -287,7 +287,7 @@ ParsedHs5Url DuckDbFs::Hs5UrlParse(std::string url)
|
||||
return {prefix, bucket, key};
|
||||
}
|
||||
|
||||
duckdb::vector<std::string> DuckDbFs::Glob(const std::string &glob_pattern, duckdb::FileOpener *opener)
|
||||
duckdb::vector<duckdb::OpenFileInfo> DuckDbFs::Glob(const std::string &glob_pattern, duckdb::FileOpener *opener)
|
||||
{
|
||||
const auto parsedUrl = Hs5UrlParse(glob_pattern);
|
||||
|
||||
@ -320,7 +320,7 @@ duckdb::vector<std::string> DuckDbFs::Glob(const std::string &glob_pattern, duck
|
||||
|
||||
std::string lastOutputKeyStr;
|
||||
|
||||
duckdb::vector<std::string> ret;
|
||||
duckdb::vector<duckdb::OpenFileInfo> ret;
|
||||
|
||||
while(true)
|
||||
{
|
||||
|
||||
@ -86,7 +86,7 @@ public:
|
||||
duckdb::FileOpener *opener) override;
|
||||
|
||||
|
||||
duckdb::vector<std::string> Glob(const std::string &glob_pattern, duckdb::FileOpener *opener) override;
|
||||
duckdb::vector<duckdb::OpenFileInfo> Glob(const std::string &glob_pattern, duckdb::FileOpener *opener) override;
|
||||
|
||||
static ParsedHs5Url Hs5UrlParse(std::string url);
|
||||
|
||||
|
||||
@ -32,7 +32,6 @@
|
||||
#include "config.h"
|
||||
#include "StaticHandler.h"
|
||||
#include "DuckDbFs.h"
|
||||
#include "ui_extension.hpp"
|
||||
|
||||
duckdb::DuckDB& getDuckDb()
|
||||
{
|
||||
@ -234,8 +233,6 @@ int realMain(int argc, char* argv[])
|
||||
auto& fs =(getDuckDb().instance)->GetFileSystem();
|
||||
fs.RegisterSubSystem(duckdb::make_uniq<DuckDbFs>(sfs, FLAGS_bucket_versioning));
|
||||
|
||||
getDuckDb().LoadExtension<duckdb::UiExtension>();
|
||||
|
||||
auto res = con.Query("SET ui_local_port = "+std::to_string(FLAGS_duckdb_port));
|
||||
if(res->HasError())
|
||||
{
|
||||
|
||||
@ -15,7 +15,9 @@
|
||||
"fmt",
|
||||
"argon2",
|
||||
"tclap",
|
||||
"duckdb"
|
||||
|
||||
{
|
||||
"name": "duckdb-custom",
|
||||
"features": ["autocomplete", "excel", "httpfs", "icu", "json", "tpcds", "tpch","ui","ducklake"]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user