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 |
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 --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() {