diff mbox series

[meta-oe,v2,1/2] nlohmann-json: Add ptest support

Message ID 20231110115241.3613778-1-mingli.yu@windriver.com
State Under Review
Headers show
Series [meta-oe,v2,1/2] nlohmann-json: Add ptest support | expand

Commit Message

Yu, Mingli Nov. 10, 2023, 11:52 a.m. UTC
From: Mingli Yu <mingli.yu@windriver.com>

* Backport 2 patches [1] [2] to fix the build failure under tests dir.

* Fetch the test data during do_fetch phase to avoid internet access
during test as some tests need test data.
 # ./run-ptest
PASS: test-algorithms_cpp11
PASS: test-allocator_cpp11
PASS: test-alt-string_cpp11
PASS: test-assert_macro_cpp11
PASS: test-binary_formats_cpp11
[snip]
PASS: test-unicode5_cpp11
PASS: test-user_defined_input_cpp11
PASS: test-windows_h_cpp11
PASS: test-wstring_cpp11

[1] https://github.com/nlohmann/json/commit/6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee
[2] https://github.com/nlohmann/json/commit/660d0b58565073975d6f5d94365d6cbf150a4cf8

Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
---
 ...tors-define-missing-rebind-type-3895.patch | 61 +++++++++++++++++++
 ...tors2-use-std-ranges-equals-for-rang.patch | 31 ++++++++++
 .../nlohmann-json/files/run-ptest             | 12 ++++
 .../nlohmann-json/nlohmann-json_3.11.2.bb     | 22 ++++++-
 4 files changed, 123 insertions(+), 3 deletions(-)
 create mode 100644 meta-oe/recipes-devtools/nlohmann-json/files/0001-custom-allocators-define-missing-rebind-type-3895.patch
 create mode 100644 meta-oe/recipes-devtools/nlohmann-json/files/0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch
 create mode 100755 meta-oe/recipes-devtools/nlohmann-json/files/run-ptest

Comments

Khem Raj Nov. 17, 2023, 12:47 a.m. UTC | #1
its failing on AB with

stdio: ERROR: nlohmann-json-3.11.2-r0 do_package_qa: QA Issue:
/usr/lib/nlohmann-json/ptest/json_test_data/.git/hooks/update.sample
contained in package nlohmann-json-ptest requires /usr/bin/sh, but no
providers found in RDEPENDS:nlohmann-json-ptest? [file-rdeps]

see
https://autobuilder.yoctoproject.org/typhoon/#/builders/88/builds/3348/steps/14/logs/errors

On Fri, Nov 10, 2023 at 3:52 AM Yu, Mingli <mingli.yu@eng.windriver.com> wrote:
>
> From: Mingli Yu <mingli.yu@windriver.com>
>
> * Backport 2 patches [1] [2] to fix the build failure under tests dir.
>
> * Fetch the test data during do_fetch phase to avoid internet access
> during test as some tests need test data.
>  # ./run-ptest
> PASS: test-algorithms_cpp11
> PASS: test-allocator_cpp11
> PASS: test-alt-string_cpp11
> PASS: test-assert_macro_cpp11
> PASS: test-binary_formats_cpp11
> [snip]
> PASS: test-unicode5_cpp11
> PASS: test-user_defined_input_cpp11
> PASS: test-windows_h_cpp11
> PASS: test-wstring_cpp11
>
> [1] https://github.com/nlohmann/json/commit/6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee
> [2] https://github.com/nlohmann/json/commit/660d0b58565073975d6f5d94365d6cbf150a4cf8
>
> Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> ---
>  ...tors-define-missing-rebind-type-3895.patch | 61 +++++++++++++++++++
>  ...tors2-use-std-ranges-equals-for-rang.patch | 31 ++++++++++
>  .../nlohmann-json/files/run-ptest             | 12 ++++
>  .../nlohmann-json/nlohmann-json_3.11.2.bb     | 22 ++++++-
>  4 files changed, 123 insertions(+), 3 deletions(-)
>  create mode 100644 meta-oe/recipes-devtools/nlohmann-json/files/0001-custom-allocators-define-missing-rebind-type-3895.patch
>  create mode 100644 meta-oe/recipes-devtools/nlohmann-json/files/0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch
>  create mode 100755 meta-oe/recipes-devtools/nlohmann-json/files/run-ptest
>
> diff --git a/meta-oe/recipes-devtools/nlohmann-json/files/0001-custom-allocators-define-missing-rebind-type-3895.patch b/meta-oe/recipes-devtools/nlohmann-json/files/0001-custom-allocators-define-missing-rebind-type-3895.patch
> new file mode 100644
> index 000000000..d964586c1
> --- /dev/null
> +++ b/meta-oe/recipes-devtools/nlohmann-json/files/0001-custom-allocators-define-missing-rebind-type-3895.patch
> @@ -0,0 +1,61 @@
> +From 6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee Mon Sep 17 00:00:00 2001
> +From: Sergei Trofimovich <slyich@gmail.com>
> +Date: Wed, 8 Mar 2023 11:31:56 +0000
> +Subject: [PATCH] custom allocators: define missing 'rebind' type (#3895)
> +
> +Upstream-Status: Backport [https://github.com/nlohmann/json/commit/6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee]
> +
> +Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> +---
> + tests/src/unit-allocator.cpp   | 9 +++++++++
> + tests/src/unit-regression2.cpp | 9 +++++++++
> + 2 files changed, 18 insertions(+)
> +
> +diff --git a/tests/src/unit-allocator.cpp b/tests/src/unit-allocator.cpp
> +index 76e3b03f..f2e63552 100644
> +--- a/tests/src/unit-allocator.cpp
> ++++ b/tests/src/unit-allocator.cpp
> +@@ -20,11 +20,20 @@ struct bad_allocator : std::allocator<T>
> + {
> +     using std::allocator<T>::allocator;
> +
> ++    bad_allocator() = default;
> ++    template<class U> bad_allocator(const bad_allocator<U>& /*unused*/) { }
> ++
> +     template<class... Args>
> +     void construct(T* /*unused*/, Args&& ... /*unused*/)
> +     {
> +         throw std::bad_alloc();
> +     }
> ++
> ++    template <class U>
> ++    struct rebind
> ++    {
> ++        using other = bad_allocator<U>;
> ++    };
> + };
> + } // namespace
> +
> +diff --git a/tests/src/unit-regression2.cpp b/tests/src/unit-regression2.cpp
> +index 2bb9b32e..dbafb436 100644
> +--- a/tests/src/unit-regression2.cpp
> ++++ b/tests/src/unit-regression2.cpp
> +@@ -189,6 +189,15 @@ class my_allocator : public std::allocator<T>
> + {
> +   public:
> +     using std::allocator<T>::allocator;
> ++
> ++    my_allocator() = default;
> ++    template<class U> my_allocator(const my_allocator<U>& /*unused*/) { }
> ++
> ++    template <class U>
> ++    struct rebind
> ++    {
> ++        using other = my_allocator<U>;
> ++    };
> + };
> +
> + /////////////////////////////////////////////////////////////////////
> +--
> +2.25.1
> +
> diff --git a/meta-oe/recipes-devtools/nlohmann-json/files/0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch b/meta-oe/recipes-devtools/nlohmann-json/files/0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch
> new file mode 100644
> index 000000000..463912e4b
> --- /dev/null
> +++ b/meta-oe/recipes-devtools/nlohmann-json/files/0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch
> @@ -0,0 +1,31 @@
> +From 660d0b58565073975d6f5d94365d6cbf150a4cf8 Mon Sep 17 00:00:00 2001
> +From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= <arsen@aarsen.me>
> +Date: Sun, 5 Mar 2023 14:11:22 +0100
> +Subject: [PATCH] tests/unit-iterators2: use std::ranges::equals for range
> + comparisons (#3950)
> +
> +Closes https://github.com/nlohmann/json/issues/3927
> +
> +Upstream-Status: Backport [https://github.com/nlohmann/json/commit/660d0b58565073975d6f5d94365d6cbf150a4cf8]
> +
> +Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> +---
> + tests/src/unit-iterators2.cpp | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/tests/src/unit-iterators2.cpp b/tests/src/unit-iterators2.cpp
> +index 27926084..72a5d9dc 100644
> +--- a/tests/src/unit-iterators2.cpp
> ++++ b/tests/src/unit-iterators2.cpp
> +@@ -943,7 +943,7 @@ TEST_CASE("iterators 2")
> +                 json j_expected{5, 4, 3, 2, 1};
> +
> +                 auto reversed = j | std::views::reverse;
> +-                CHECK(reversed == j_expected);
> ++                CHECK(std::ranges::equal(reversed, j_expected));
> +             }
> +
> +             SECTION("transform")
> +--
> +2.25.1
> +
> diff --git a/meta-oe/recipes-devtools/nlohmann-json/files/run-ptest b/meta-oe/recipes-devtools/nlohmann-json/files/run-ptest
> new file mode 100755
> index 000000000..2f00267d5
> --- /dev/null
> +++ b/meta-oe/recipes-devtools/nlohmann-json/files/run-ptest
> @@ -0,0 +1,12 @@
> +#!/bin/sh
> +
> +cd tests
> +for atest in test-* ; do
> +    rm -rf tests.log
> +    ./${atest} > tests.log 2>&1
> +    if [ $? = 0 ] ; then
> +        echo "PASS: ${atest}"
> +    else
> +        echo "FAIL: ${atest}"
> +    fi
> +done
> diff --git a/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.11.2.bb b/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.11.2.bb
> index 74e40942a..694d632cb 100644
> --- a/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.11.2.bb
> +++ b/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.11.2.bb
> @@ -7,22 +7,38 @@ LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=f969127d7b7ed0a8a63c2bbeae002588"
>  CVE_PRODUCT = "json-for-modern-cpp"
>
>  SRC_URI = "git://github.com/nlohmann/json.git;branch=develop;protocol=https \
> -           "
> +           git://github.com/nlohmann/json_test_data.git;destsuffix=git/json_test_data;name=json-test-data;branch=master;protocol=https \
> +           file://0001-custom-allocators-define-missing-rebind-type-3895.patch \
> +           file://0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch \
> +           file://run-ptest \
> +"
>
>  SRCREV = "bc889afb4c5bf1c0d8ee29ef35eaaf4c8bef8a5d"
> +SRCREV_json-test-data = "a1375cea09d27cc1c4cadb8d00470375b421ac37"
> +
> +SRCREV_FORMAT = "json-test-data"
>
>  S = "${WORKDIR}/git"
>
> -inherit cmake
> +inherit cmake ptest
>
> -EXTRA_OECMAKE += "-DJSON_BuildTests=OFF"
> +EXTRA_OECMAKE += "${@bb.utils.contains('PTEST_ENABLED', '1', '-DJSON_BuildTests=ON -DJSON_TestDataDirectory=${PTEST_PATH}/json_test_data', '-DJSON_BuildTests=OFF', d)}"
>
>  # nlohmann-json is a header only C++ library, so the main package will be empty.
>  ALLOW_EMPTY:${PN} = "1"
>  RDEPENDS:${PN}-dev = ""
> +RDEPENDS:${PN}-ptest = "perl"
>
>  BBCLASSEXTEND = "native nativesdk"
>
> +
> +do_install_ptest () {
> +    install -d ${D}${PTEST_PATH}/tests
> +    cp -r ${S}/json_test_data/ ${D}${PTEST_PATH}/
> +    cp -r ${B}/tests/test-* ${D}${PTEST_PATH}/tests
> +}
> +
> +
>  # other packages commonly reference the file directly as "json.hpp"
>  # create symlink to allow this usage
>  do_install:append() {
> --
> 2.25.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#106543): https://lists.openembedded.org/g/openembedded-devel/message/106543
> Mute This Topic: https://lists.openembedded.org/mt/102504904/1997914
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
diff mbox series

Patch

diff --git a/meta-oe/recipes-devtools/nlohmann-json/files/0001-custom-allocators-define-missing-rebind-type-3895.patch b/meta-oe/recipes-devtools/nlohmann-json/files/0001-custom-allocators-define-missing-rebind-type-3895.patch
new file mode 100644
index 000000000..d964586c1
--- /dev/null
+++ b/meta-oe/recipes-devtools/nlohmann-json/files/0001-custom-allocators-define-missing-rebind-type-3895.patch
@@ -0,0 +1,61 @@ 
+From 6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <slyich@gmail.com>
+Date: Wed, 8 Mar 2023 11:31:56 +0000
+Subject: [PATCH] custom allocators: define missing 'rebind' type (#3895)
+
+Upstream-Status: Backport [https://github.com/nlohmann/json/commit/6cec5aefc97ad219b6fd5a4132f88f7c8f6800ee]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ tests/src/unit-allocator.cpp   | 9 +++++++++
+ tests/src/unit-regression2.cpp | 9 +++++++++
+ 2 files changed, 18 insertions(+)
+
+diff --git a/tests/src/unit-allocator.cpp b/tests/src/unit-allocator.cpp
+index 76e3b03f..f2e63552 100644
+--- a/tests/src/unit-allocator.cpp
++++ b/tests/src/unit-allocator.cpp
+@@ -20,11 +20,20 @@ struct bad_allocator : std::allocator<T>
+ {
+     using std::allocator<T>::allocator;
+ 
++    bad_allocator() = default;
++    template<class U> bad_allocator(const bad_allocator<U>& /*unused*/) { }
++
+     template<class... Args>
+     void construct(T* /*unused*/, Args&& ... /*unused*/)
+     {
+         throw std::bad_alloc();
+     }
++
++    template <class U>
++    struct rebind
++    {
++        using other = bad_allocator<U>;
++    };
+ };
+ } // namespace
+ 
+diff --git a/tests/src/unit-regression2.cpp b/tests/src/unit-regression2.cpp
+index 2bb9b32e..dbafb436 100644
+--- a/tests/src/unit-regression2.cpp
++++ b/tests/src/unit-regression2.cpp
+@@ -189,6 +189,15 @@ class my_allocator : public std::allocator<T>
+ {
+   public:
+     using std::allocator<T>::allocator;
++
++    my_allocator() = default;
++    template<class U> my_allocator(const my_allocator<U>& /*unused*/) { }
++
++    template <class U>
++    struct rebind
++    {
++        using other = my_allocator<U>;
++    };
+ };
+ 
+ /////////////////////////////////////////////////////////////////////
+-- 
+2.25.1
+
diff --git a/meta-oe/recipes-devtools/nlohmann-json/files/0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch b/meta-oe/recipes-devtools/nlohmann-json/files/0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch
new file mode 100644
index 000000000..463912e4b
--- /dev/null
+++ b/meta-oe/recipes-devtools/nlohmann-json/files/0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch
@@ -0,0 +1,31 @@ 
+From 660d0b58565073975d6f5d94365d6cbf150a4cf8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Arsen=20Arsenovi=C4=87?= <arsen@aarsen.me>
+Date: Sun, 5 Mar 2023 14:11:22 +0100
+Subject: [PATCH] tests/unit-iterators2: use std::ranges::equals for range
+ comparisons (#3950)
+
+Closes https://github.com/nlohmann/json/issues/3927
+
+Upstream-Status: Backport [https://github.com/nlohmann/json/commit/660d0b58565073975d6f5d94365d6cbf150a4cf8]
+
+Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
+---
+ tests/src/unit-iterators2.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/src/unit-iterators2.cpp b/tests/src/unit-iterators2.cpp
+index 27926084..72a5d9dc 100644
+--- a/tests/src/unit-iterators2.cpp
++++ b/tests/src/unit-iterators2.cpp
+@@ -943,7 +943,7 @@ TEST_CASE("iterators 2")
+                 json j_expected{5, 4, 3, 2, 1};
+ 
+                 auto reversed = j | std::views::reverse;
+-                CHECK(reversed == j_expected);
++                CHECK(std::ranges::equal(reversed, j_expected));
+             }
+ 
+             SECTION("transform")
+-- 
+2.25.1
+
diff --git a/meta-oe/recipes-devtools/nlohmann-json/files/run-ptest b/meta-oe/recipes-devtools/nlohmann-json/files/run-ptest
new file mode 100755
index 000000000..2f00267d5
--- /dev/null
+++ b/meta-oe/recipes-devtools/nlohmann-json/files/run-ptest
@@ -0,0 +1,12 @@ 
+#!/bin/sh
+
+cd tests
+for atest in test-* ; do
+    rm -rf tests.log
+    ./${atest} > tests.log 2>&1
+    if [ $? = 0 ] ; then
+        echo "PASS: ${atest}"
+    else
+        echo "FAIL: ${atest}"
+    fi
+done
diff --git a/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.11.2.bb b/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.11.2.bb
index 74e40942a..694d632cb 100644
--- a/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.11.2.bb
+++ b/meta-oe/recipes-devtools/nlohmann-json/nlohmann-json_3.11.2.bb
@@ -7,22 +7,38 @@  LIC_FILES_CHKSUM = "file://LICENSE.MIT;md5=f969127d7b7ed0a8a63c2bbeae002588"
 CVE_PRODUCT = "json-for-modern-cpp"
 
 SRC_URI = "git://github.com/nlohmann/json.git;branch=develop;protocol=https \
-           "
+           git://github.com/nlohmann/json_test_data.git;destsuffix=git/json_test_data;name=json-test-data;branch=master;protocol=https \
+           file://0001-custom-allocators-define-missing-rebind-type-3895.patch \
+           file://0001-tests-unit-iterators2-use-std-ranges-equals-for-rang.patch \
+           file://run-ptest \
+"
 
 SRCREV = "bc889afb4c5bf1c0d8ee29ef35eaaf4c8bef8a5d"
+SRCREV_json-test-data = "a1375cea09d27cc1c4cadb8d00470375b421ac37"
+
+SRCREV_FORMAT = "json-test-data"
 
 S = "${WORKDIR}/git"
 
-inherit cmake
+inherit cmake ptest
 
-EXTRA_OECMAKE += "-DJSON_BuildTests=OFF"
+EXTRA_OECMAKE += "${@bb.utils.contains('PTEST_ENABLED', '1', '-DJSON_BuildTests=ON -DJSON_TestDataDirectory=${PTEST_PATH}/json_test_data', '-DJSON_BuildTests=OFF', d)}"
 
 # nlohmann-json is a header only C++ library, so the main package will be empty.
 ALLOW_EMPTY:${PN} = "1"
 RDEPENDS:${PN}-dev = ""
+RDEPENDS:${PN}-ptest = "perl"
 
 BBCLASSEXTEND = "native nativesdk"
 
+
+do_install_ptest () {
+    install -d ${D}${PTEST_PATH}/tests
+    cp -r ${S}/json_test_data/ ${D}${PTEST_PATH}/
+    cp -r ${B}/tests/test-* ${D}${PTEST_PATH}/tests
+}
+
+
 # other packages commonly reference the file directly as "json.hpp"
 # create symlink to allow this usage
 do_install:append() {