[oe] [meta-oe][PATCH] catch2: new package

Bartosz Golaszewski brgl at bgdev.pl
Mon Oct 15 14:50:03 UTC 2018


czw., 11 paź 2018 o 16:32 akuster808 <akuster808 at gmail.com> napisał(a):
>
>
>
> On 10/11/2018 02:08 AM, Bartosz Golaszewski wrote:
> > From: Bartosz Golaszewski <bgolaszewski at baylibre.com>
> >
> > Add a recipe for the catch2 testing framework. There's a bug upstream
> > which makes it impossible to build with gcc7 so include a patch.
> >
> > Signed-off-by: Bartosz Golaszewski <bgolaszewski at baylibre.com>
> > ---
> >  .../0001-internal-fix-build-in-GCC-7.patch    | 35 +++++++++++++++++++
> >  meta-oe/recipes-test/catch2/catch2_2.4.1.bb   | 25 +++++++++++++
> >  2 files changed, 60 insertions(+)
> >  create mode 100644 meta-oe/recipes-test/catch2/catch2/0001-internal-fix-build-in-GCC-7.patch
> >  create mode 100644 meta-oe/recipes-test/catch2/catch2_2.4.1.bb
> >
> > diff --git a/meta-oe/recipes-test/catch2/catch2/0001-internal-fix-build-in-GCC-7.patch b/meta-oe/recipes-test/catch2/catch2/0001-internal-fix-build-in-GCC-7.patch
> > new file mode 100644
> > index 000000000..606398afa
> > --- /dev/null
> > +++ b/meta-oe/recipes-test/catch2/catch2/0001-internal-fix-build-in-GCC-7.patch
> > @@ -0,0 +1,35 @@
> > +From 857bf7e83db330682a4c722d0b57be1e4481f4e2 Mon Sep 17 00:00:00 2001
> > +From: Bartosz Golaszewski <bgolaszewski at baylibre.com>
> > +Date: Thu, 11 Oct 2018 09:44:24 +0200
> > +Subject: [PATCH] internal: fix build in GCC 7
> > +
> > +The following error is emitted by gcc 7:
> > +
> > +include/internal/catch_tostring.cpp:217:21: error: comparison is always true due to limited range of data type [-Werror=type-limits]
> > +|      } else if ('\0' <= value && value < ' ') {
> > +|                 ~~~~~^~~~~~~~
> > +| cc1plus: all warnings being treated as errors
> > +
> > +We can drop the first part of the if.
>
> Please add the "Upstream-Status:" bits
>
> please review
> https://www.openembedded.org/wiki/Commit_Patch_Message_Guidelines
> > +
> > +Signed-off-by: Bartosz Golaszewski <bgolaszewski at baylibre.com>
> > +---
> > + include/internal/catch_tostring.cpp | 2 +-
> > + 1 file changed, 1 insertion(+), 1 deletion(-)
> > +
> > +diff --git a/include/internal/catch_tostring.cpp b/include/internal/catch_tostring.cpp
> > +index 4e0c027d..59cc8dec 100644
> > +--- a/include/internal/catch_tostring.cpp
> > ++++ b/include/internal/catch_tostring.cpp
> > +@@ -214,7 +214,7 @@ std::string StringMaker<char>::convert(char value) {
> > +         return "'\\n'";
> > +     } else if (value == '\t') {
> > +         return "'\\t'";
> > +-    } else if ('\0' <= value && value < ' ') {
> > ++    } else if (value < ' ') {
> > +         return ::Catch::Detail::stringify(static_cast<unsigned int>(value));
> > +     } else {
> > +         char chstr[] = "' '";
> > +--
> > +2.19.1
> > +
> > diff --git a/meta-oe/recipes-test/catch2/catch2_2.4.1.bb b/meta-oe/recipes-test/catch2/catch2_2.4.1.bb
> > new file mode 100644
> > index 000000000..ba14a362c
> > --- /dev/null
> > +++ b/meta-oe/recipes-test/catch2/catch2_2.4.1.bb
> > @@ -0,0 +1,25 @@
> > +DESCRIPTION = "A modern, C++-native, header-only, test framework for unit-tests, \
> > +TDD and BDD - using C++11, C++14, C++17 and later."
> > +AUTHOR = "Phil Nash, Martin Horenovsky and others"
> > +HOMEPAGE = "https://github.com/catchorg/Catch2"
> > +LICENSE = "BSL-1.0"
> > +LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e4224ccaecb14d942c71d31bef20d78c"
> > +
> > +SRC_URI = "git://github.com/catchorg/Catch2.git \
> > +           file://0001-internal-fix-build-in-GCC-7.patch"
> > +SRCREV = "9e1bdca4667295fcb16265eae00efa8423f07007"
> > +
> > +S = "${WORKDIR}/git"
> > +
> > +DEPENDS = "python-native"
> Don't need this if you inherit python3native

If I don't do it, cmake fails with the following message:

| DEBUG: Executing shell function do_configure
| -- The CXX compiler identification is GNU 8.2.0
| -- Check for working CXX compiler:
/<snip!>/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/catch2/2.4.1-r0/recipe-sysroot-native/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++
| -- Check for working CXX compiler:
/<snip!>/build/tmp/work/cortexa8hf-neon-poky-linux-gnueabi/catch2/2.4.1-r0/recipe-sysroot-native/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-g++
-- works
| -- Detecting CXX compiler ABI info
| -- Detecting CXX compiler ABI info - done
| -- Detecting CXX compile features
| -- Detecting CXX compile features - done
| -- Could NOT find PythonInterp (missing: PYTHON_EXECUTABLE)
| CMake Error at CMakeLists.txt:43 (message):
|   Python not found, but required for tests
|
|
| -- Configuring incomplete, errors occurred!

Seems that other cmake based projects do the same in their recipes.

Bart

> > +
> > +inherit cmake python3native
> > +
> > +# Header-only library
> > +ALLOW_EMPTY_${PN} = "1"
> > +
> > +do_install_append() {
> > +    rm ${D}/usr/share/Catch2/lldbinit
> > +    rm ${D}/usr/share/Catch2/gdbinit
> > +    rmdir ${D}/usr/share/Catch2/
>
> Please use the variable "datadir" instead of hard coding.
>
> - armin
> > +}
>



More information about the Openembedded-devel mailing list