From 1414f174a9d7649ef482da556b4b859652226673 Mon Sep 17 00:00:00 2001 From: Alper Ak Date: Wed, 9 Jul 2025 23:41:54 +0300 Subject: microsoft-gsl: Upgrade 4.0.0 -> 4.2.0 to allow CMake 4+ compatibility - Drop patches because already fixed in newer version - Fix compile error when compiled with Clang: assertion_tests.cpp:40:1: error: use of the 'maybe_unused' attribute is a C++17 extension [-Werror,-Wc++17-attribute-extensions] 40 | TEST(assertion_tests, expects) | ^ According to the upstream recommendation, passing the -DGSL_CXX_STANDARD=17 flag to CMake resolves the problem. This patch applies the suggested workaround until a more permanent solution is provided from upstream. Upstream discussion -> https://github.com/microsoft/GSL/issues/1178 Changelog: https://github.com/microsoft/GSL/compare/v4.0.0...v4.2.0 https://github.com/microsoft/GSL/releases/tag/v4.2.0 https://github.com/microsoft/GSL/releases/tag/v4.1.0 Fix: | CMake Error at tests/CMakeLists.txt:1 (cmake_minimum_required): | Compatibility with CMake < 3.5 has been removed from CMake. | | Update the VERSION argument value. Or, use the ... syntax | to tell CMake that the project requires at least but has been updated | to work with policies introduced by or earlier. | | Or, add -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to try configuring anyway. | | | -- Configuring incomplete, errors occurred! Signed-off-by: Alper Ak Signed-off-by: Khem Raj --- .../0001-Fix-initialization-in-test-1140.patch | 113 --------------------- .../microsoft-gsl/0002-Fix-gcc-build-problem.patch | 82 --------------- ...pt-check_cxx_compiler_flag-to-cmake-3.0.2.patch | 53 ---------- .../microsoft-gsl/microsoft-gsl_4.0.0.bb | 49 --------- .../microsoft-gsl/microsoft-gsl_4.2.0.bb | 47 +++++++++ 5 files changed, 47 insertions(+), 297 deletions(-) delete mode 100644 meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0001-Fix-initialization-in-test-1140.patch delete mode 100644 meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0002-Fix-gcc-build-problem.patch delete mode 100644 meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0003-Adapt-check_cxx_compiler_flag-to-cmake-3.0.2.patch delete mode 100644 meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl_4.0.0.bb create mode 100644 meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl_4.2.0.bb diff --git a/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0001-Fix-initialization-in-test-1140.patch b/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0001-Fix-initialization-in-test-1140.patch deleted file mode 100644 index 84a585d3c5..0000000000 --- a/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0001-Fix-initialization-in-test-1140.patch +++ /dev/null @@ -1,113 +0,0 @@ -From 1b4d42ca2e97061042ec44a0b34ceb176c78c7e1 Mon Sep 17 00:00:00 2001 -From: d-winsor -Date: Mon, 26 Feb 2024 13:17:12 -0800 -Subject: [PATCH] Fix initialization in test (#1140) - -* Suppress unsafe-buffer-usage - -Upstream-Status: Backport [https://github.com/microsoft/GSL/commit/1b4d42ca2e97061042ec44a0b34ceb176c78c7e1] - -Signed-off-by: Peter Marko ---- - include/gsl/span | 10 ++++++++++ - include/gsl/util | 10 ++++++++++ - tests/CMakeLists.txt | 10 ++++++++++ - tests/span_tests.cpp | 2 +- - 4 files changed, 31 insertions(+), 1 deletion(-) - -diff --git a/include/gsl/span b/include/gsl/span -index cc8a7b9..d254e4d 100644 ---- a/include/gsl/span -+++ b/include/gsl/span -@@ -58,6 +58,12 @@ - #pragma GCC diagnostic ignored "-Wsign-conversion" - #endif - -+// Turn off clang unsafe buffer warnings as all accessed are guarded by runtime checks -+#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage") -+#pragma clang diagnostic push -+#pragma clang diagnostic ignored "-Wunsafe-buffer-usage" -+#endif // defined(__clang__) && __has_warning("-Wunsafe-buffer-usage") -+ - namespace gsl - { - -@@ -818,4 +824,8 @@ as_writable_bytes(span s) noexcept - #pragma GCC diagnostic pop - #endif // __GNUC__ > 6 - -+#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage") -+#pragma clang diagnostic pop -+#endif -+ - #endif // GSL_SPAN_H -diff --git a/include/gsl/util b/include/gsl/util -index a215bad..11735a8 100644 ---- a/include/gsl/util -+++ b/include/gsl/util -@@ -39,6 +39,12 @@ - - #endif // _MSC_VER - -+// Turn off clang unsafe buffer warnings as all accessed are guarded by runtime checks -+#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage") -+#pragma clang diagnostic push -+#pragma clang diagnostic ignored "-Wunsafe-buffer-usage" -+#endif // defined(__clang__) && __has_warning("-Wunsafe-buffer-usage") -+ - #if defined(__cplusplus) && (__cplusplus >= 201703L) - #define GSL_NODISCARD [[nodiscard]] - #else -@@ -157,4 +163,8 @@ constexpr auto at(std::span sp, const index i) -> decltype(sp[sp.size - - #endif // _MSC_VER - -+#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage") -+#pragma clang diagnostic pop -+#endif -+ - #endif // GSL_UTIL_H -diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt -index cab4e56..20de9e1 100644 ---- a/tests/CMakeLists.txt -+++ b/tests/CMakeLists.txt -@@ -167,6 +167,11 @@ else() - > - ) - endif(MSVC) -+check_cxx_compiler_flag("-Wno-unsafe-buffer-usage" WARN_UNSAFE_BUFFER) -+if (WARN_UNSAFE_BUFFER) -+ # This test uses very greedy heuristics such as "no pointer arithmetic on raw buffer" -+ target_compile_options(gsl_tests_config INTERFACE "-Wno-unsafe-buffer-usage") -+endif() - - # for tests to find the gtest header - target_include_directories(gsl_tests_config SYSTEM INTERFACE -@@ -267,6 +272,11 @@ else() - > - ) - endif(MSVC) -+check_cxx_compiler_flag("-Wno-unsafe-buffer-usage" WARN_UNSAFE_BUFFER) -+if (WARN_UNSAFE_BUFFER) -+ # This test uses very greedy heuristics such as "no pointer arithmetic on raw buffer" -+ target_compile_options(gsl_tests_config_noexcept INTERFACE "-Wno-unsafe-buffer-usage") -+endif() - - add_executable(gsl_noexcept_tests no_exception_ensure_tests.cpp) - target_link_libraries(gsl_noexcept_tests -diff --git a/tests/span_tests.cpp b/tests/span_tests.cpp -index 33ccf56..3c1dfe5 100644 ---- a/tests/span_tests.cpp -+++ b/tests/span_tests.cpp -@@ -330,7 +330,7 @@ TEST(span_test, from_array_constructor) - EXPECT_TRUE(s.data() == std::addressof(arr2d[0])); - } - -- int arr3d[2][3][2] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; -+ int arr3d[2][3][2] = { { {1, 2}, {3, 4}, {5, 6} }, { {7, 8}, {9, 10}, {11, 12} } }; - - #ifdef CONFIRM_COMPILATION_ERRORS - { --- -2.30.2 - diff --git a/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0002-Fix-gcc-build-problem.patch b/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0002-Fix-gcc-build-problem.patch deleted file mode 100644 index 2f7542c62c..0000000000 --- a/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0002-Fix-gcc-build-problem.patch +++ /dev/null @@ -1,82 +0,0 @@ -From aa4fd1f57794964640005900c2b47af1a0940b7b Mon Sep 17 00:00:00 2001 -From: Werner Henze -Date: Fri, 1 Mar 2024 15:53:50 +0100 -Subject: [PATCH] Fix gcc build problem - -Closes issue #1148 by fixing problems introduced in PR #1140. - -Upstream-Status: Submitted [https://github.com/microsoft/GSL/pull/1149] - -Signed-off-by: Peter Marko ---- - include/gsl/span | 12 ++++++++---- - include/gsl/util | 12 ++++++++---- - 2 files changed, 16 insertions(+), 8 deletions(-) - -diff --git a/include/gsl/span b/include/gsl/span -index 0de2932..d2ef9f7 100644 ---- a/include/gsl/span -+++ b/include/gsl/span -@@ -59,10 +59,12 @@ - #endif - - // Turn off clang unsafe buffer warnings as all accessed are guarded by runtime checks --#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage") -+#if defined(__clang__) -+#if __has_warning("-Wunsafe-buffer-usage") - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wunsafe-buffer-usage" --#endif // defined(__clang__) && __has_warning("-Wunsafe-buffer-usage") -+#endif // __has_warning("-Wunsafe-buffer-usage") -+#endif // defined(__clang__) - - namespace gsl - { -@@ -824,8 +826,10 @@ as_writable_bytes(span s) noexcept - #pragma GCC diagnostic pop - #endif // __GNUC__ > 6 - --#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage") -+#if defined(__clang__) -+#if __has_warning("-Wunsafe-buffer-usage") - #pragma clang diagnostic pop --#endif -+#endif // __has_warning("-Wunsafe-buffer-usage") -+#endif // defined(__clang__) - - #endif // GSL_SPAN_H -diff --git a/include/gsl/util b/include/gsl/util -index b853017..26b2f5f 100644 ---- a/include/gsl/util -+++ b/include/gsl/util -@@ -40,10 +40,12 @@ - #endif // _MSC_VER - - // Turn off clang unsafe buffer warnings as all accessed are guarded by runtime checks --#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage") -+#if defined(__clang__) -+#if __has_warning("-Wunsafe-buffer-usage") - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wunsafe-buffer-usage" --#endif // defined(__clang__) && __has_warning("-Wunsafe-buffer-usage") -+#endif // __has_warning("-Wunsafe-buffer-usage") -+#endif // defined(__clang__) - - #if defined(__cplusplus) && (__cplusplus >= 201703L) - #define GSL_NODISCARD [[nodiscard]] -@@ -163,8 +165,10 @@ constexpr auto at(std::span sp, const index i) -> decltype(sp[sp.size - - #endif // _MSC_VER - --#if defined(__clang__) && __has_warning("-Wunsafe-buffer-usage") -+#if defined(__clang__) -+#if __has_warning("-Wunsafe-buffer-usage") - #pragma clang diagnostic pop --#endif -+#endif // __has_warning("-Wunsafe-buffer-usage") -+#endif // defined(__clang__) - - #endif // GSL_UTIL_H --- -2.30.2 - diff --git a/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0003-Adapt-check_cxx_compiler_flag-to-cmake-3.0.2.patch b/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0003-Adapt-check_cxx_compiler_flag-to-cmake-3.0.2.patch deleted file mode 100644 index ed057f5243..0000000000 --- a/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0003-Adapt-check_cxx_compiler_flag-to-cmake-3.0.2.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 85e1c38bcf84bd4e2ce63ef74f0cfa1f5e92261e Mon Sep 17 00:00:00 2001 -From: Peter Marko -Date: Wed, 27 Mar 2024 23:46:31 +0100 -Subject: [PATCH] Adapt check_cxx_compiler_flag to cmake 3.0.2 - -Backporting commits which are upgrading cmake_minimum_required and -include check_cxx_compiler_flag have too many additional changes. - -Let's just do a simple adaptation of our backported patch so -it works with older cmake version instead. - -This can be safely removed when recipe version is upgraded. - -Upstream-Status: Inappropriate - -Signed-off-by: Peter Marko ---- - tests/CMakeLists.txt | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt -index 20de9e1..54c3ac5 100644 ---- a/tests/CMakeLists.txt -+++ b/tests/CMakeLists.txt -@@ -5,6 +5,7 @@ enable_testing() # again, for support standalone testing - - include(FindPkgConfig) - include(ExternalProject) -+include(CheckCXXCompilerFlag) - - # will make visual studio generated project group files - set_property(GLOBAL PROPERTY USE_FOLDERS ON) -@@ -167,7 +168,7 @@ else() - > - ) - endif(MSVC) --check_cxx_compiler_flag("-Wno-unsafe-buffer-usage" WARN_UNSAFE_BUFFER) -+CHECK_CXX_COMPILER_FLAG("-Wno-unsafe-buffer-usage" WARN_UNSAFE_BUFFER) - if (WARN_UNSAFE_BUFFER) - # This test uses very greedy heuristics such as "no pointer arithmetic on raw buffer" - target_compile_options(gsl_tests_config INTERFACE "-Wno-unsafe-buffer-usage") -@@ -272,7 +273,7 @@ else() - > - ) - endif(MSVC) --check_cxx_compiler_flag("-Wno-unsafe-buffer-usage" WARN_UNSAFE_BUFFER) -+CHECK_CXX_COMPILER_FLAG("-Wno-unsafe-buffer-usage" WARN_UNSAFE_BUFFER) - if (WARN_UNSAFE_BUFFER) - # This test uses very greedy heuristics such as "no pointer arithmetic on raw buffer" - target_compile_options(gsl_tests_config_noexcept INTERFACE "-Wno-unsafe-buffer-usage") --- -2.30.2 - diff --git a/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl_4.0.0.bb b/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl_4.0.0.bb deleted file mode 100644 index 2fbbf8f06a..0000000000 --- a/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl_4.0.0.bb +++ /dev/null @@ -1,49 +0,0 @@ -SUMMARY = "GSL: Guidelines Support Library" -DESCRIPTION = "The Guidelines Support Library (GSL) contains functions \ - and types that are suggested for use by the C++ Core Guidelines \ - maintained by the Standard C++ Foundation. \ - This repo contains Microsoft's implementation of GSL." -HOMEPAGE = "https://github.com/microsoft/GSL" - -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE;md5=363055e71e77071107ba2bb9a54bd9a7" - -SRC_URI = "git://github.com/microsoft/GSL.git;protocol=https;branch=main \ - file://run-ptest \ - file://0001-Fix-initialization-in-test-1140.patch \ - file://0002-Fix-gcc-build-problem.patch \ - file://0003-Adapt-check_cxx_compiler_flag-to-cmake-3.0.2.patch \ -" -SRCREV = "a3534567187d2edc428efd3f13466ff75fe5805c" - - -inherit cmake pkgconfig ptest - -# this is header-only library -ALLOW_EMPTY:${PN} = "1" - -PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'ptest','', d)}" -PACKAGECONFIG[ptest] = "-DGSL_TEST=ON,-DGSL_TEST=OFF,googletest" - -# clang disagrees with https://github.com/google/googletest/pull/3457 -CXXFLAGS:append:toolchain-clang = " -Wno-error=switch-default" -# Disable disabled-macro-expansion warning as error as its seen on musl -CXXFLAGS:append:toolchain-clang:libc-musl = " -Wno-error=disabled-macro-expansion" - -do_install_ptest() { - install -d ${D}${bindir} - install -m 0755 ${B}/tests/gsl_tests ${D}${bindir} - install -m 0755 ${B}/tests/gsl_noexcept_tests ${D}${bindir} -} - -FILES:${PN}-ptest = "${bindir}/gsl*_tests" - -# there is already other gsl recipe, so recipe name does not match the real component name -CVE_PRODUCT = "microsoft:gsl" - -BBCLASSEXTEND = "native nativesdk" - -# This one is reproducible only on 32bit arm MACHINEs (didn't see it with qemux86 or qemux86-64 builds) -# http://errors.yoctoproject.org/Errors/Details/766976/ -# lib32-microsoft-gsl/4.0.0/git/tests/span_tests.cpp:1275:34: error: value computed is not used [-Werror=unused-value] -CXXFLAGS += "-Wno-error=unused-value" diff --git a/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl_4.2.0.bb b/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl_4.2.0.bb new file mode 100644 index 0000000000..16a0af334d --- /dev/null +++ b/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl_4.2.0.bb @@ -0,0 +1,47 @@ +SUMMARY = "GSL: Guidelines Support Library" +DESCRIPTION = "The Guidelines Support Library (GSL) contains functions \ + and types that are suggested for use by the C++ Core Guidelines \ + maintained by the Standard C++ Foundation. \ + This repo contains Microsoft's implementation of GSL." +HOMEPAGE = "https://github.com/microsoft/GSL" + +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://LICENSE;md5=363055e71e77071107ba2bb9a54bd9a7" + +SRC_URI = "git://github.com/microsoft/GSL.git;protocol=https;branch=main \ + file://run-ptest \ +" +SRCREV = "2828399820ef4928cc89b65605dca5dc68efca6e" + +inherit cmake pkgconfig ptest + +EXTRA_OECMAKE += "-DGSL_CXX_STANDARD=17" + +# this is header-only library +ALLOW_EMPTY:${PN} = "1" + +PACKAGECONFIG ??= "${@bb.utils.contains('PTEST_ENABLED', '1', 'ptest','', d)}" +PACKAGECONFIG[ptest] = "-DGSL_TEST=ON,-DGSL_TEST=OFF,googletest" + +# clang disagrees with https://github.com/google/googletest/pull/3457 +CXXFLAGS:append:toolchain-clang = " -Wno-error=switch-default" +# Disable disabled-macro-expansion warning as error as its seen on musl +CXXFLAGS:append:toolchain-clang:libc-musl = " -Wno-error=disabled-macro-expansion" + +do_install_ptest() { + install -d ${D}${bindir} + install -m 0755 ${B}/tests/gsl_tests ${D}${bindir} + install -m 0755 ${B}/tests/gsl_noexcept_tests ${D}${bindir} +} + +FILES:${PN}-ptest = "${bindir}/gsl*_tests" + +# there is already other gsl recipe, so recipe name does not match the real component name +CVE_PRODUCT = "microsoft:gsl" + +BBCLASSEXTEND = "native nativesdk" + +# This one is reproducible only on 32bit arm MACHINEs (didn't see it with qemux86 or qemux86-64 builds) +# http://errors.yoctoproject.org/Errors/Details/766976/ +# lib32-microsoft-gsl/4.0.0/git/tests/span_tests.cpp:1275:34: error: value computed is not used [-Werror=unused-value] +CXXFLAGS += "-Wno-error=unused-value" -- cgit v1.2.3-54-g00ecf