From 5d5f1e65a50028e0192257c842bbc6e6036f8b04 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 19 Mar 2025 15:58:51 +0100 Subject: [PATCH 01/12] duckdb: enhance platform-specific precompiled package handling --- packages/d/duckdb/xmake.lua | 102 ++++++++++++++++++++++++++++-------- 1 file changed, 80 insertions(+), 22 deletions(-) diff --git a/packages/d/duckdb/xmake.lua b/packages/d/duckdb/xmake.lua index caf8ede19b0..5c00845796e 100644 --- a/packages/d/duckdb/xmake.lua +++ b/packages/d/duckdb/xmake.lua @@ -3,35 +3,93 @@ package("duckdb") set_description("DuckDB is an in-process SQL OLAP Database Management System") set_license("MIT") - add_urls("https://github.com/duckdb/duckdb/releases/download/$(version)/libduckdb-src.zip", - "https://github.com/duckdb/duckdb.git") - add_versions("v1.2.1", "c7f21c12039e951dbb74e064ba218a4ca8b4b0a612d40c62d95a858ecaf2fb53") - add_versions("v1.1.3", "66beec9f299c56f508fec3d647faa86a596d39b2d4e26bd6991b29d07b818f83") - add_versions("v1.1.2", "8b30ec65addfe423fc18f8403bd958953d01a3193ec8b3bc2e43073433d94e47") - add_versions("v1.1.1", "48f1ca566ae0f73fb536aec22d599917f47c26ea7ae300380e7ae3f39e29af4d") - add_versions("v1.0.0", "482c7f090cac4408eed5b02708b6a54168c1875c2c6d8042d8344edee3f70eb7") - add_versions("v0.10.3", "f22ed5058188c81886dfdda80c6c46b7df2ed0a623a348c78ac8372451c84497") - add_versions("v0.10.2", "6bab203dc2e10432edbefda7be7043f73f17c8898ba81ce3aa2319e7e2d5af10") - add_versions("v0.10.1", "70ec6ffefd9a04bf9fcdc1a4949611f9633f10f0e3b9cead1425b926a54d0f89") - add_versions("v0.10.0", "385e27aa67712813e4a07389465c4c5c45c431d97cddd35713b8a306d2a86f2d") + on_source(function(package) + local precompiled = false + if package:is_plat("windows") then + if package:is_arch("x64", "x86_64") then + precompiled = true + package:add("urls", "https://github.com/duckdb/duckdb/releases/download/$(version)/libduckdb-windows-amd64.zip") + package:add("versions", "v1.2.1", "c977230a701d6b274fe63166868c8e2bc4ec23cf42c44f08f22bdcd8ed4a8e31") + elseif package:is_arch("arm64") then + precompiled = true + package:add("urls", "https://github.com/duckdb/duckdb/releases/download/$(version)/libduckdb-windows-arm64.zip") + package:add("versions", "v1.2.1", "de02a9e3e64b41ea7844aa04ad7e72519ca131327e739cd344a6ba476fb31c0f") + end + elseif package:is_plat("linux") then + if package:config("shared") then + if package:is_arch("x64", "x86_64") then + precompiled = true + package:add("urls", "https://github.com/duckdb/duckdb/releases/download/$(version)/libduckdb-linux-amd64.zip") + package:add("versions", "v1.2.1", "8dda081c84ef1da07f19f953ca95e1c6db9b6851e357444a751ad45be8a14d36") + elseif package:is_arch("arm64") then + precompiled = true + package:add("urls", "https://github.com/duckdb/duckdb/releases/download/$(version)/libduckdb-linux-arm64.zip") + package:add("versions", "v1.2.1", "b1fc7c892414fdc286a7d99cd374634deb586e0fcccc87cb84a2b52272f93bfd") + end + elseif package:config("static") then + if package:is_arch("x64", "x86_64") then + precompiled = true + package:add("urls", "https://github.com/duckdb/duckdb/releases/download/$(version)/static-lib-linux-amd64.zip") + package:add("versions", "v1.2.1", "be614d4b36621bce1da8ad545fd0fc46c6094232ce5fe8a135bf69455110bfa1") + elseif package:is_arch("arm64") then + precompiled = true + package:add("urls", "https://github.com/duckdb/duckdb/releases/download/$(version)/static-lib-linux-arm64.zip") + package:add("versions", "v1.2.1", "ab5d43238972cfb7ae1852f8890103a056d09ff5ce60623a8515729c49e1d6c0") + end + end + elseif package:is_plat("macos") then + if package:config("shared") then + precompiled = true + package:add("urls", "https://github.com/duckdb/duckdb/releases/download/$(version)/libduckdb-osx-universal.zip") + package:add("versions", "v1.2.1", "5045ad331e6e738ba4d2299e8726f200be82f6da961f208973f48df7a4532ce1") + elseif package:config("static") then + if package:is_arch("x64", "x86_64") then + precompiled = true + package:add("urls", "https://github.com/duckdb/duckdb/releases/download/$(version)/static-lib-osx-amd64.zip") + package:add("versions", "v1.2.1", "be614d4b36621bce1da8ad545fd0fc46c6094232ce5fe8a135bf69455110bfa1") + elseif package:is_arch("arm64") then + precompiled = true + package:add("urls", "https://github.com/duckdb/duckdb/releases/download/$(version)/static-lib-osx-arm64.zip") + package:add("versions", "v1.2.1", "ab5d43238972cfb7ae1852f8890103a056d09ff5ce60623a8515729c49e1d6c0") + end + end + end - on_install("macosx", "linux", function (package) - io.writefile("xmake.lua", [[ - add_rules("mode.debug", "mode.release") - set_languages("c++17") - target("duckdb") - set_kind("$(kind)") - add_files("duckdb.cpp") - add_headerfiles("duckdb.hpp", "duckdb.h") - ]]) - import("package.tools.xmake").install(package) + if not precompiled then + package:add("urls", "https://github.com/duckdb/duckdb/releases/download/$(version)/libduckdb-src.zip", + "https://github.com/duckdb/duckdb.git") + package:add("versions", "v1.2.1", "c7f21c12039e951dbb74e064ba218a4ca8b4b0a612d40c62d95a858ecaf2fb53") + package:add("versions", "v1.1.3", "66beec9f299c56f508fec3d647faa86a596d39b2d4e26bd6991b29d07b818f83") + package:add("versions", "v1.1.2", "8b30ec65addfe423fc18f8403bd958953d01a3193ec8b3bc2e43073433d94e47") + package:add("versions", "v1.1.1", "48f1ca566ae0f73fb536aec22d599917f47c26ea7ae300380e7ae3f39e29af4d") + package:add("versions", "v1.0.0", "482c7f090cac4408eed5b02708b6a54168c1875c2c6d8042d8344edee3f70eb7") + package:add("versions", "v0.10.3", "f22ed5058188c81886dfdda80c6c46b7df2ed0a623a348c78ac8372451c84497") + package:add("versions", "v0.10.2", "6bab203dc2e10432edbefda7be7043f73f17c8898ba81ce3aa2319e7e2d5af10") + package:add("versions", "v0.10.1", "70ec6ffefd9a04bf9fcdc1a4949611f9633f10f0e3b9cead1425b926a54d0f89") + package:add("versions", "v0.10.0", "385e27aa67712813e4a07389465c4c5c45c431d97cddd35713b8a306d2a86f2d") + end + package:data_set("precompiled", precompiled) + end) + + on_install(function (package) + if package:data("precompiled") then + os.trycp("*.dll", package:installdir("lib")) + os.trycp("*.lib", package:installdir("lib")) + os.trycp("*.a", package:installdir("lib")) + os.trycp("*.dylib", package:installdir("lib")) + os.trycp("*.so", package:installdir("lib")) + os.trycp("*.h", package:installdir("include")) + os.trycp("*.hpp", package:installdir("include")) + return + end + import("package.tools.cmake").install(package) end) on_test(function (package) assert(package:check_cxxsnippets({test = [[ #include "duckdb.hpp" using namespace duckdb; - + void test() { DuckDB db(nullptr); Connection con(db); From 49e941451ee97e8b64c734cacb8d485115788912 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 19 Mar 2025 16:06:15 +0100 Subject: [PATCH 02/12] duckdb: update platform identifier from macos to macosx --- packages/d/duckdb/xmake.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/d/duckdb/xmake.lua b/packages/d/duckdb/xmake.lua index 5c00845796e..1367b8f89aa 100644 --- a/packages/d/duckdb/xmake.lua +++ b/packages/d/duckdb/xmake.lua @@ -37,7 +37,7 @@ package("duckdb") package:add("versions", "v1.2.1", "ab5d43238972cfb7ae1852f8890103a056d09ff5ce60623a8515729c49e1d6c0") end end - elseif package:is_plat("macos") then + elseif package:is_plat("macosx") then if package:config("shared") then precompiled = true package:add("urls", "https://github.com/duckdb/duckdb/releases/download/$(version)/libduckdb-osx-universal.zip") @@ -71,7 +71,7 @@ package("duckdb") package:data_set("precompiled", precompiled) end) - on_install(function (package) + on_install("windows", "macosx", "linux", function (package) if package:data("precompiled") then os.trycp("*.dll", package:installdir("lib")) os.trycp("*.lib", package:installdir("lib")) From 398684d3e1b05e22f8a9c8baae09f04889ca06e1 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 19 Mar 2025 16:10:07 +0100 Subject: [PATCH 03/12] duckdb: add CMake dependency for non precompiled packages --- packages/d/duckdb/xmake.lua | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/d/duckdb/xmake.lua b/packages/d/duckdb/xmake.lua index 1367b8f89aa..350e81318f5 100644 --- a/packages/d/duckdb/xmake.lua +++ b/packages/d/duckdb/xmake.lua @@ -71,6 +71,12 @@ package("duckdb") package:data_set("precompiled", precompiled) end) + on_load("windows", "macosx", "linux", function (package) + if package:data("precompiled") then + package:add("deps", "cmake") + end + end) + on_install("windows", "macosx", "linux", function (package) if package:data("precompiled") then os.trycp("*.dll", package:installdir("lib")) From 381baf5e84c2fe4a37a57b30b9245a931d35ccea Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 19 Mar 2025 16:17:26 +0100 Subject: [PATCH 04/12] duckdb: update download URL for source packages --- packages/d/duckdb/xmake.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/d/duckdb/xmake.lua b/packages/d/duckdb/xmake.lua index 350e81318f5..1ddaa44b5c6 100644 --- a/packages/d/duckdb/xmake.lua +++ b/packages/d/duckdb/xmake.lua @@ -56,7 +56,7 @@ package("duckdb") end if not precompiled then - package:add("urls", "https://github.com/duckdb/duckdb/releases/download/$(version)/libduckdb-src.zip", + package:add("urls", "https://github.com/duckdb/duckdb/archive/refs/tags/($version).zip", "https://github.com/duckdb/duckdb.git") package:add("versions", "v1.2.1", "c7f21c12039e951dbb74e064ba218a4ca8b4b0a612d40c62d95a858ecaf2fb53") package:add("versions", "v1.1.3", "66beec9f299c56f508fec3d647faa86a596d39b2d4e26bd6991b29d07b818f83") From 4b53f6643c539b20d645d622774ea35d6e5b8ca9 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 19 Mar 2025 16:19:51 +0100 Subject: [PATCH 05/12] duckdb: fix typo --- packages/d/duckdb/xmake.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/d/duckdb/xmake.lua b/packages/d/duckdb/xmake.lua index 1ddaa44b5c6..6f58c93fe02 100644 --- a/packages/d/duckdb/xmake.lua +++ b/packages/d/duckdb/xmake.lua @@ -56,7 +56,7 @@ package("duckdb") end if not precompiled then - package:add("urls", "https://github.com/duckdb/duckdb/archive/refs/tags/($version).zip", + package:add("urls", "https://github.com/duckdb/duckdb/archive/refs/tags/$(version).zip", "https://github.com/duckdb/duckdb.git") package:add("versions", "v1.2.1", "c7f21c12039e951dbb74e064ba218a4ca8b4b0a612d40c62d95a858ecaf2fb53") package:add("versions", "v1.1.3", "66beec9f299c56f508fec3d647faa86a596d39b2d4e26bd6991b29d07b818f83") From dbe44c8e31a5904767f843f6a1c0301308ed090b Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 19 Mar 2025 16:27:42 +0100 Subject: [PATCH 06/12] duckdb: update version hashes --- packages/d/duckdb/xmake.lua | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/d/duckdb/xmake.lua b/packages/d/duckdb/xmake.lua index 6f58c93fe02..b71b8d7a6fe 100644 --- a/packages/d/duckdb/xmake.lua +++ b/packages/d/duckdb/xmake.lua @@ -58,15 +58,15 @@ package("duckdb") if not precompiled then package:add("urls", "https://github.com/duckdb/duckdb/archive/refs/tags/$(version).zip", "https://github.com/duckdb/duckdb.git") - package:add("versions", "v1.2.1", "c7f21c12039e951dbb74e064ba218a4ca8b4b0a612d40c62d95a858ecaf2fb53") - package:add("versions", "v1.1.3", "66beec9f299c56f508fec3d647faa86a596d39b2d4e26bd6991b29d07b818f83") - package:add("versions", "v1.1.2", "8b30ec65addfe423fc18f8403bd958953d01a3193ec8b3bc2e43073433d94e47") - package:add("versions", "v1.1.1", "48f1ca566ae0f73fb536aec22d599917f47c26ea7ae300380e7ae3f39e29af4d") - package:add("versions", "v1.0.0", "482c7f090cac4408eed5b02708b6a54168c1875c2c6d8042d8344edee3f70eb7") - package:add("versions", "v0.10.3", "f22ed5058188c81886dfdda80c6c46b7df2ed0a623a348c78ac8372451c84497") - package:add("versions", "v0.10.2", "6bab203dc2e10432edbefda7be7043f73f17c8898ba81ce3aa2319e7e2d5af10") - package:add("versions", "v0.10.1", "70ec6ffefd9a04bf9fcdc1a4949611f9633f10f0e3b9cead1425b926a54d0f89") - package:add("versions", "v0.10.0", "385e27aa67712813e4a07389465c4c5c45c431d97cddd35713b8a306d2a86f2d") + package:add("versions", "v1.2.1", "8d17ce47dc16c8e3dde41a09916eb63034cb19dd2c6bd71b90372261a43b8b71") + package:add("versions", "v1.1.3", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") + package:add("versions", "v1.1.2", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855") + package:add("versions", "v1.1.1", "cedf308dca577d2c5e44b34948529cb0ce932da27cd54ed611c926d49473c732") + package:add("versions", "v1.0.0", "6b8b410745dd763058af727ae45a37b34c22418c866dd3df94cbb3a0bc622992") + package:add("versions", "v0.10.3", "9e7372f2b23cada55200e07da407f2c3c261f9aaeb364b8e0908f0682bf3a895") + package:add("versions", "v0.10.2", "309af78e1ad8326841454bcd7203bb04ee8ca8279de3f6357a8a3e4c94842989") + package:add("versions", "v0.10.1", "1da8dbe3c984f82ff35cb40982e9605fd4670681e6f9ee44931facc41c782c58") + package:add("versions", "v0.10.0", "9162e6ef0fc53cdfe4b9ded5c4c3260a4cd8e2d812a953d2d8bd0b9afdb5e09c") end package:data_set("precompiled", precompiled) end) From cc79053161596429989a69bd2c8763585e4369d7 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 19 Mar 2025 16:30:21 +0100 Subject: [PATCH 07/12] duckdb: fix dependency condition for CMake --- packages/d/duckdb/xmake.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/d/duckdb/xmake.lua b/packages/d/duckdb/xmake.lua index b71b8d7a6fe..4715e1c2e46 100644 --- a/packages/d/duckdb/xmake.lua +++ b/packages/d/duckdb/xmake.lua @@ -72,7 +72,7 @@ package("duckdb") end) on_load("windows", "macosx", "linux", function (package) - if package:data("precompiled") then + if not package:data("precompiled") then package:add("deps", "cmake") end end) From 8c61807d82fd271faa9b2cfb3a0bff9e87d4d7e5 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 19 Mar 2025 16:45:31 +0100 Subject: [PATCH 08/12] duckdb: enhance CMake installation with configurable build options --- packages/d/duckdb/xmake.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/d/duckdb/xmake.lua b/packages/d/duckdb/xmake.lua index 4715e1c2e46..e950a59668f 100644 --- a/packages/d/duckdb/xmake.lua +++ b/packages/d/duckdb/xmake.lua @@ -88,7 +88,12 @@ package("duckdb") os.trycp("*.hpp", package:installdir("include")) return end - import("package.tools.cmake").install(package) + + local configs = {} + table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release")) + table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF")) + + import("package.tools.cmake").install(package, configs) end) on_test(function (package) From 46da45ec950a298a5c341d7197a8ffdaefd5ddd2 Mon Sep 17 00:00:00 2001 From: Arthur Date: Wed, 19 Mar 2025 17:12:08 +0100 Subject: [PATCH 09/12] duckdb: update on_test function --- packages/d/duckdb/xmake.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/d/duckdb/xmake.lua b/packages/d/duckdb/xmake.lua index e950a59668f..cdac11d4eb4 100644 --- a/packages/d/duckdb/xmake.lua +++ b/packages/d/duckdb/xmake.lua @@ -96,7 +96,7 @@ package("duckdb") import("package.tools.cmake").install(package, configs) end) - on_test(function (package) + on_test("windows", "macosx", "linux", function (package) assert(package:check_cxxsnippets({test = [[ #include "duckdb.hpp" using namespace duckdb; From 49606a644692683c7e7aa1273207972a8cdc35ad Mon Sep 17 00:00:00 2001 From: Arthur Vasseur Date: Wed, 19 Mar 2025 20:20:36 +0100 Subject: [PATCH 10/12] refactor xmake.lua to simplify platform-specific hooks and correct C++ language version --- packages/d/duckdb/xmake.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/d/duckdb/xmake.lua b/packages/d/duckdb/xmake.lua index cdac11d4eb4..48e34e8b694 100644 --- a/packages/d/duckdb/xmake.lua +++ b/packages/d/duckdb/xmake.lua @@ -71,13 +71,13 @@ package("duckdb") package:data_set("precompiled", precompiled) end) - on_load("windows", "macosx", "linux", function (package) + on_load(function (package) if not package:data("precompiled") then package:add("deps", "cmake") end end) - on_install("windows", "macosx", "linux", function (package) + on_install(function (package) if package:data("precompiled") then os.trycp("*.dll", package:installdir("lib")) os.trycp("*.lib", package:installdir("lib")) @@ -96,7 +96,7 @@ package("duckdb") import("package.tools.cmake").install(package, configs) end) - on_test("windows", "macosx", "linux", function (package) + on_test(function (package) assert(package:check_cxxsnippets({test = [[ #include "duckdb.hpp" using namespace duckdb; @@ -105,5 +105,5 @@ package("duckdb") DuckDB db(nullptr); Connection con(db); } - ]]}, {configs = {languages = "cxx17"}})) + ]]}, {configs = {languages = "c++17"}})) end) From e438e36f345b4e2a28a73bff9fbe759830958213 Mon Sep 17 00:00:00 2001 From: Arthur Vasseur Date: Wed, 19 Mar 2025 21:28:51 +0100 Subject: [PATCH 11/12] duckdb: add configuration options for static build and disable unit tests and shell --- packages/d/duckdb/xmake.lua | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/d/duckdb/xmake.lua b/packages/d/duckdb/xmake.lua index 48e34e8b694..48de2ce8805 100644 --- a/packages/d/duckdb/xmake.lua +++ b/packages/d/duckdb/xmake.lua @@ -92,7 +92,10 @@ package("duckdb") local configs = {} table.insert(configs, "-DCMAKE_BUILD_TYPE=" .. (package:debug() and "Debug" or "Release")) table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF")) - + table.insert(configs, "-DEXTENSION_STATIC_BUILD=" .. (package:config("shared") and "ON" or "OFF")) + table.insert(configs, "-DBUILD_UNITTESTS=0") + table.insert(configs, "-DBUILD_SHELL=0") + import("package.tools.cmake").install(package, configs) end) From cce20b57614ce4d859f032d0cce2b4f357176f4e Mon Sep 17 00:00:00 2001 From: Arthur Vasseur Date: Wed, 19 Mar 2025 21:43:33 +0100 Subject: [PATCH 12/12] duckdb: using "windows", "macosx", "linux" others platforms are experimentals --- packages/d/duckdb/xmake.lua | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/d/duckdb/xmake.lua b/packages/d/duckdb/xmake.lua index 48de2ce8805..223da60f12c 100644 --- a/packages/d/duckdb/xmake.lua +++ b/packages/d/duckdb/xmake.lua @@ -3,7 +3,7 @@ package("duckdb") set_description("DuckDB is an in-process SQL OLAP Database Management System") set_license("MIT") - on_source(function(package) + on_source("windows", "macosx", "linux", function(package) local precompiled = false if package:is_plat("windows") then if package:is_arch("x64", "x86_64") then @@ -71,13 +71,13 @@ package("duckdb") package:data_set("precompiled", precompiled) end) - on_load(function (package) + on_load("windows", "macosx", "linux", function (package) if not package:data("precompiled") then package:add("deps", "cmake") end end) - on_install(function (package) + on_install("windows", "macosx", "linux", function (package) if package:data("precompiled") then os.trycp("*.dll", package:installdir("lib")) os.trycp("*.lib", package:installdir("lib")) @@ -95,11 +95,11 @@ package("duckdb") table.insert(configs, "-DEXTENSION_STATIC_BUILD=" .. (package:config("shared") and "ON" or "OFF")) table.insert(configs, "-DBUILD_UNITTESTS=0") table.insert(configs, "-DBUILD_SHELL=0") - + import("package.tools.cmake").install(package, configs) end) - on_test(function (package) + on_test("windows", "macosx", "linux", function (package) assert(package:check_cxxsnippets({test = [[ #include "duckdb.hpp" using namespace duckdb;