Преглед на файлове

zeus_expected: add package (#3753)

* zeus_expected: add package

* zeus_expected: change test

* zeus_expected: add patch

* zeus_expected: fix sha256 of patch

* zeus_expected: change test

* zeus_expected: change sha256

* zeus_expected: Move `/Zc:__cplusplus` to `on_install` callback

* zeus_expected: move `/Zc:__cplusplus` to on_test callback
Chi Huu Huynh преди 1 година
родител
ревизия
fec13704da
променени са 2 файла, в които са добавени 70 реда и са изтрити 0 реда
  1. 40 0
      packages/z/zeus_expected/patches/v1.0.0/fix_typename.patch
  2. 30 0
      packages/z/zeus_expected/xmake.lua

+ 40 - 0
packages/z/zeus_expected/patches/v1.0.0/fix_typename.patch

@@ -0,0 +1,40 @@
+diff --git a/include/zeus/expected.hpp b/include/zeus/expected.hpp
+index 50c286f..fa29889 100644
+--- a/include/zeus/expected.hpp
++++ b/include/zeus/expected.hpp
+@@ -1778,7 +1778,7 @@ public:
+     {
+         using U = expected_detail::remove_cvref_t<std::invoke_result_t<F, decltype(std::move(this->m_val))>>;
+         static_assert(expected_detail::is_specialization_v<U, expected>, "U (return type of F) must be specialization of expected");
+-        static_assert(std::is_same_v<U::error_type, E>, "The error type must be the same after calling the F");
++        static_assert(std::is_same_v<typename U::error_type, E>, "The error type must be the same after calling the F");
+ 
+         if (has_value())
+             return std::invoke(std::forward<F>(f), std::move(this->m_val));
+@@ -1790,7 +1790,7 @@ public:
+     {
+         using U = expected_detail::remove_cvref_t<std::invoke_result_t<F, decltype(std::move(this->m_val))>>;
+         static_assert(expected_detail::is_specialization_v<U, expected>, "U (return type of F) must be specialization of expected");
+-        static_assert(std::is_same_v<U::error_type, E>, "The error type must be the same after calling the F");
++        static_assert(std::is_same_v<typename U::error_type, E>, "The error type must be the same after calling the F");
+ 
+         if (has_value())
+             return std::invoke(std::forward<F>(f), std::move(this->m_val));
+@@ -2469,7 +2469,7 @@ public:
+     {
+         using U = expected_detail::remove_cvref_t<std::invoke_result_t<F>>;
+         static_assert(expected_detail::is_specialization_v<U, expected>, "U (return type of F) must be specialization of expected");
+-        static_assert(std::is_same_v<U::error_type, E>, "The error type must be the same after calling the F");
++        static_assert(std::is_same_v<typename U::error_type, E>, "The error type must be the same after calling the F");
+ 
+         if (has_value())
+             return std::invoke(std::forward<F>(f));
+@@ -2481,7 +2481,7 @@ public:
+     {
+         using U = expected_detail::remove_cvref_t<std::invoke_result_t<F>>;
+         static_assert(expected_detail::is_specialization_v<U, expected>, "U (return type of F) must be specialization of expected");
+-        static_assert(std::is_same_v<U::error_type, E>, "The error type must be the same after calling the F");
++        static_assert(std::is_same_v<typename U::error_type, E>, "The error type must be the same after calling the F");
+ 
+         if (has_value())
+             return std::invoke(std::forward<F>(f));

+ 30 - 0
packages/z/zeus_expected/xmake.lua

@@ -0,0 +1,30 @@
+package("zeus_expected")
+    set_kind("library", {headeronly = true})
+    set_homepage("https://github.com/zeus-cpp/expected")
+    set_description("Backporting std::expected to C++17.")
+    set_license("MIT")
+
+    add_urls("https://github.com/zeus-cpp/expected/archive/refs/tags/$(version).tar.gz",
+             "https://github.com/zeus-cpp/expected.git")
+
+    add_versions("v1.0.0", "a0d81798b777f9bfcc1e1e4f3046632067bd8c6071dbfcbec5012a31a5aebc68")
+
+    add_patches("v1.0.0", path.join(os.scriptdir(), "patches", "v1.0.0", "fix_typename.patch"), "710d71f8c765a2937df25a2c52abec24f5f4ef5f43281f6aa01853d0498e2a47")
+
+    on_install(function (package)
+        os.cp("include", package:installdir())
+    end)
+
+    on_test(function (package)
+        local cxflags = {}
+        if package:is_plat("windows") then
+            table.insert(cxflags, "/Zc:__cplusplus")
+        end
+        assert(package:check_cxxsnippets({test = [[
+            #include <zeus/expected.hpp>
+            void test() {
+                zeus::expected<int, int> e1 = 42;
+                zeus::expected<int, int> e2 = zeus::unexpected(42);
+            }
+        ]]}, {configs = {languages = "cxx17", cxflags = cxflags}}))
+    end)