Thanks for reworking the patch, there however is still one error
popping up when ptests distro feature is enabled

https://snips.sh/f/bftvz4ANO6

This patch fixes it, but I would like to see if this warning is
already fixed or can be fixed.

https://snips.sh/f/pRVar8hlif

On Wed, Mar 27, 2024 at 4:07 PM Peter Marko via lists.openembedded.org
<peter.marko=siemens....@lists.openembedded.org> wrote:
>
> From: Peter Marko <peter.ma...@siemens.com>
>
> 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.
>
> Signed-off-by: Peter Marko <peter.ma...@siemens.com>
> ---
> v2: adapt conditional ptest clauses per review comments
> v3: fix clang build
>
>  .../include/ptest-packagelists-meta-oe.inc    |   1 +
>  .../packagegroups/packagegroup-meta-oe.bb     |   1 +
>  ...0001-Fix-initialization-in-test-1140.patch | 113 ++++++++++++++++++
>  .../0002-Fix-gcc-build-problem.patch          |  82 +++++++++++++
>  ...eck_cxx_compiler_flag-to-cmake-3.0.2.patch |  53 ++++++++
>  .../microsoft-gsl/microsoft-gsl/run-ptest     |   4 +
>  .../microsoft-gsl/microsoft-gsl_4.0.0.bb      |  43 +++++++
>  7 files changed, 297 insertions(+)
>  create mode 100644 
> meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0001-Fix-initialization-in-test-1140.patch
>  create mode 100644 
> meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0002-Fix-gcc-build-problem.patch
>  create mode 100644 
> meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0003-Adapt-check_cxx_compiler_flag-to-cmake-3.0.2.patch
>  create mode 100644 
> meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/run-ptest
>  create mode 100644 
> meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl_4.0.0.bb
>
> diff --git a/meta-oe/conf/include/ptest-packagelists-meta-oe.inc 
> b/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
> index fadec1221..70e5dad08 100644
> --- a/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
> +++ b/meta-oe/conf/include/ptest-packagelists-meta-oe.inc
> @@ -27,6 +27,7 @@ PTESTS_FAST_META_OE = "\
>      libxml++-5.0 \
>      libyang \
>      lmdb \
> +    microsoft-gsl \
>      minicoredumper \
>      neon \
>      nlohmann-json \
> diff --git a/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb 
> b/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
> index 6e2012dae..bc15373b6 100644
> --- a/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
> +++ b/meta-oe/recipes-core/packagegroups/packagegroup-meta-oe.bb
> @@ -310,6 +310,7 @@ RDEPENDS:packagegroup-meta-oe-devtools ="\
>      yasm \
>      json-schema-validator \
>      poke \
> +    microsoft-gsl \
>  "
>  RDEPENDS:packagegroup-meta-oe-devtools:append:x86 = " cpuid msr-tools pahole 
> pmtools"
>  RDEPENDS:packagegroup-meta-oe-devtools:append:x86-64 = " cpuid msr-tools 
> pahole pcimem pmtools"
> 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
> new file mode 100644
> index 000000000..84a585d3c
> --- /dev/null
> +++ 
> b/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0001-Fix-initialization-in-test-1140.patch
> @@ -0,0 +1,113 @@
> +From 1b4d42ca2e97061042ec44a0b34ceb176c78c7e1 Mon Sep 17 00:00:00 2001
> +From: d-winsor <dan...@microsoft.com>
> +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 <peter.ma...@siemens.com>
> +---
> + 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<ElementType, Extent> 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<T, extent> 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
> new file mode 100644
> index 000000000..2f7542c62
> --- /dev/null
> +++ 
> b/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0002-Fix-gcc-build-problem.patch
> @@ -0,0 +1,82 @@
> +From aa4fd1f57794964640005900c2b47af1a0940b7b Mon Sep 17 00:00:00 2001
> +From: Werner Henze <w.he...@avm.de>
> +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 <peter.ma...@siemens.com>
> +---
> + 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<ElementType, Extent> 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<T, extent> 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
> new file mode 100644
> index 000000000..ed057f524
> --- /dev/null
> +++ 
> b/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/0003-Adapt-check_cxx_compiler_flag-to-cmake-3.0.2.patch
> @@ -0,0 +1,53 @@
> +From 85e1c38bcf84bd4e2ce63ef74f0cfa1f5e92261e Mon Sep 17 00:00:00 2001
> +From: Peter Marko <peter.ma...@siemens.com>
> +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 <peter.ma...@siemens.com>
> +---
> + 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/run-ptest 
> b/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/run-ptest
> new file mode 100644
> index 000000000..2d5bdf4ff
> --- /dev/null
> +++ b/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl/run-ptest
> @@ -0,0 +1,4 @@
> +#!/bin/sh
> +
> +gsl_tests && echo "PASS: gsl_tests" || echo "FAIL: gsl_tests"
> +gsl_noexcept_tests && echo "PASS: gsl_noexcept_tests" || echo "FAIL: 
> gsl_noexcept_tests"
> 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
> new file mode 100644
> index 000000000..7fc31486f
> --- /dev/null
> +++ b/meta-oe/recipes-devtools/microsoft-gsl/microsoft-gsl_4.0.0.bb
> @@ -0,0 +1,43 @@
> +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"
> +
> +S = "${WORKDIR}/git"
> +
> +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"
> +
> +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"
> --
> 2.30.2
>
>
> 
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#109651): 
https://lists.openembedded.org/g/openembedded-devel/message/109651
Mute This Topic: https://lists.openembedded.org/mt/105187719/21656
Group Owner: openembedded-devel+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to