Message ID | 1514014802-23736-2-git-send-email-heyleke@gmail.com |
---|---|
State | Changes Requested |
Headers | show |
Series | Opentracing-cpp: new package | expand |
Hello, On Sat, 23 Dec 2017 08:40:01 +0100, Jan Heylen wrote: > From: Jan Heylen <jan.heylen@nokia.com> > > Signed-off-by: Jan Heylen <jan.heylen@nokia.com> The commit title should be: opentracing-cpp: new package > package/Config.in | 1 + > package/opentracing-cpp/Config.in | 11 +++++++++++ > package/opentracing-cpp/opentracing-cpp.hash | 3 +++ > package/opentracing-cpp/opentracing-cpp.mk | 14 ++++++++++++++ Please add an entry in the DEVELOPERS file for this package. > diff --git a/package/opentracing-cpp/Config.in b/package/opentracing-cpp/Config.in > new file mode 100644 > index 0000000..3f6f1ad > --- /dev/null > +++ b/package/opentracing-cpp/Config.in > @@ -0,0 +1,11 @@ > +config BR2_PACKAGE_OPENTRACING_CPP > + bool "opentracing-cpp" > + depends on BR2_INSTALL_LIBSTDCPP > + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 > + help > + OpenTracing API for C++ > + > + http://opentracing.io > + > +comment "opentracing-cpp needs a toolchain w/ C++" > + depends on !BR2_INSTALL_LIBSTDCPP You forgot to include in the comment the gcc >= 4.8 dependency. Also, this package doesn't build with the following defconfig: BR2_arm=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2017.11-rc1.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y BR2_INIT_NONE=y BR2_SYSTEM_BIN_SH_NONE=y # BR2_PACKAGE_BUSYBOX is not set BR2_PACKAGE_OPENTRACING_CPP=y # BR2_TARGET_ROOTFS_TAR is not set It fails with: >>> opentracing-cpp v1.2.0 Building PATH="/home/thomas/projets/buildroot/output/host/bin:/home/thomas/projets/buildroot/output/host/sbin:/usr/local/bin:/usr/bin:/bin:/home/thomas/.rvm/bin:/usr/local/sbin:/usr/sbin:/home/thomas/.rvm/bin:/home/thomas/sys/bin:/home/thomas/.gem/ruby/2.1.0/bin:/home/thomas/.rvm/bin" /usr/bin/make -j5 -C /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/ Scanning dependencies of target opentracing [ 25%] Building CXX object CMakeFiles/opentracing.dir/src/tracer.cpp.o [ 75%] Building CXX object CMakeFiles/opentracing.dir/src/propagation.cpp.o [ 75%] Building CXX object CMakeFiles/opentracing.dir/src/noop.cpp.o In file included from /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/util.h:13:0, from /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/propagation.h:5, from /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/tracer.h:4, from /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/noop.h:4, from /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/src/noop.cpp:1: /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_party/include/opentracing/expected/expected.hpp:230:24: error: ‘exception_ptr’ is not a member of ‘std’ class unexpected_type< std::exception_ptr > ^ /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_party/include/opentracing/expected/expected.hpp:230:24: error: ‘exception_ptr’ is not a member of ‘std’ /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_party/include/opentracing/expected/expected.hpp:230:43: error: template argument 1 is invalid class unexpected_type< std::exception_ptr > ^ and many more of such errors. Could you verify with ./utils/test-pkg that your package builds properly? Thanks a lot! Thomas
Thanks, I'll check it out. On 30 Dec 2017 22:46, "Thomas Petazzoni" < thomas.petazzoni@free-electrons.com> wrote: > Hello, > > On Sat, 23 Dec 2017 08:40:01 +0100, Jan Heylen wrote: > > From: Jan Heylen <jan.heylen@nokia.com> > > > > Signed-off-by: Jan Heylen <jan.heylen@nokia.com> > > The commit title should be: > > opentracing-cpp: new package > > > > package/Config.in | 1 + > > package/opentracing-cpp/Config.in | 11 +++++++++++ > > package/opentracing-cpp/opentracing-cpp.hash | 3 +++ > > package/opentracing-cpp/opentracing-cpp.mk | 14 ++++++++++++++ > > Please add an entry in the DEVELOPERS file for this package. > > > diff --git a/package/opentracing-cpp/Config.in > b/package/opentracing-cpp/Config.in > > new file mode 100644 > > index 0000000..3f6f1ad > > --- /dev/null > > +++ b/package/opentracing-cpp/Config.in > > @@ -0,0 +1,11 @@ > > +config BR2_PACKAGE_OPENTRACING_CPP > > + bool "opentracing-cpp" > > + depends on BR2_INSTALL_LIBSTDCPP > > + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 > > + help > > + OpenTracing API for C++ > > + > > + http://opentracing.io > > + > > +comment "opentracing-cpp needs a toolchain w/ C++" > > + depends on !BR2_INSTALL_LIBSTDCPP > > You forgot to include in the comment the gcc >= 4.8 dependency. > > Also, this package doesn't build with the following defconfig: > > BR2_arm=y > BR2_TOOLCHAIN_EXTERNAL=y > BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y > BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y > BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/ > toolchains/tarballs/br-arm-full-2017.11-rc1.tar.bz2" > BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y > BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y > BR2_TOOLCHAIN_EXTERNAL_LOCALE=y > # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set > BR2_TOOLCHAIN_EXTERNAL_CXX=y > BR2_INIT_NONE=y > BR2_SYSTEM_BIN_SH_NONE=y > # BR2_PACKAGE_BUSYBOX is not set > BR2_PACKAGE_OPENTRACING_CPP=y > # BR2_TARGET_ROOTFS_TAR is not set > > It fails with: > > >>> opentracing-cpp v1.2.0 Building > PATH="/home/thomas/projets/buildroot/output/host/bin:/ > home/thomas/projets/buildroot/output/host/sbin:/usr/local/ > bin:/usr/bin:/bin:/home/thomas/.rvm/bin:/usr/local/ > sbin:/usr/sbin:/home/thomas/.rvm/bin:/home/thomas/sys/bin:/ > home/thomas/.gem/ruby/2.1.0/bin:/home/thomas/.rvm/bin" /usr/bin/make > -j5 -C /home/thomas/projets/buildroot/output/build/ > opentracing-cpp-v1.2.0/ > Scanning dependencies of target opentracing > [ 25%] Building CXX object CMakeFiles/opentracing.dir/src/tracer.cpp.o > [ 75%] Building CXX object CMakeFiles/opentracing.dir/ > src/propagation.cpp.o > [ 75%] Building CXX object CMakeFiles/opentracing.dir/src/noop.cpp.o > In file included from /home/thomas/projets/buildroot/output/build/ > opentracing-cpp-v1.2.0/include/opentracing/util.h:13:0, > from /home/thomas/projets/buildroot/output/build/ > opentracing-cpp-v1.2.0/include/opentracing/propagation.h:5, > from /home/thomas/projets/buildroot/output/build/ > opentracing-cpp-v1.2.0/include/opentracing/tracer.h:4, > from /home/thomas/projets/buildroot/output/build/ > opentracing-cpp-v1.2.0/include/opentracing/noop.h:4, > from /home/thomas/projets/buildroot/output/build/ > opentracing-cpp-v1.2.0/src/noop.cpp:1: > /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_ > party/include/opentracing/expected/expected.hpp:230:24: error: > ‘exception_ptr’ is not a member of ‘std’ > class unexpected_type< std::exception_ptr > > ^ > /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_ > party/include/opentracing/expected/expected.hpp:230:24: error: > ‘exception_ptr’ is not a member of ‘std’ > /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_ > party/include/opentracing/expected/expected.hpp:230:43: error: template > argument 1 is invalid > class unexpected_type< std::exception_ptr > > ^ > and many more of such errors. > > Could you verify with ./utils/test-pkg that your package builds > properly? > > Thanks a lot! > > Thomas > -- > Thomas Petazzoni, CTO, Free Electrons > Embedded Linux and Kernel engineering > http://free-electrons.com > <div dir="auto">Thanks, I'll check it out. </div><div class="gmail_extra"><br><div class="gmail_quote">On 30 Dec 2017 22:46, "Thomas Petazzoni" <<a href="mailto:thomas.petazzoni@free-electrons.com">thomas.petazzoni@free-electrons.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br> <br> On Sat, 23 Dec 2017 08:40:01 +0100, Jan Heylen wrote:<br> > From: Jan Heylen <<a href="mailto:jan.heylen@nokia.com">jan.heylen@nokia.com</a>><br> ><br> > Signed-off-by: Jan Heylen <<a href="mailto:jan.heylen@nokia.com">jan.heylen@nokia.com</a>><br> <br> The commit title should be:<br> <br> opentracing-cpp: new package<br> <br> <br> > package/Config.in | 1 +<br> > package/opentracing-cpp/<wbr>Config.in | 11 +++++++++++<br> > package/opentracing-cpp/<wbr>opentracing-cpp.hash | 3 +++<br> > package/opentracing-cpp/<a href="http://opentracing-cpp.mk" rel="noreferrer" target="_blank">opentr<wbr>acing-cpp.mk</a> | 14 ++++++++++++++<br> <br> Please add an entry in the DEVELOPERS file for this package.<br> <br> > diff --git a/package/opentracing-cpp/<wbr>Config.in b/package/opentracing-cpp/<wbr>Config.in<br> > new file mode 100644<br> > index 0000000..3f6f1ad<br> > --- /dev/null<br> > +++ b/package/opentracing-cpp/<wbr>Config.in<br> > @@ -0,0 +1,11 @@<br> > +config BR2_PACKAGE_OPENTRACING_CPP<br> > + bool "opentracing-cpp"<br> > + depends on BR2_INSTALL_LIBSTDCPP<br> > + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11<br> > + help<br> > + OpenTracing API for C++<br> > +<br> > + <a href="http://opentracing.io" rel="noreferrer" target="_blank">http://opentracing.io</a><br> > +<br> > +comment "opentracing-cpp needs a toolchain w/ C++"<br> > + depends on !BR2_INSTALL_LIBSTDCPP<br> <br> You forgot to include in the comment the gcc >= 4.8 dependency.<br> <br> Also, this package doesn't build with the following defconfig:<br> <br> BR2_arm=y<br> BR2_TOOLCHAIN_EXTERNAL=y<br> BR2_TOOLCHAIN_EXTERNAL_CUSTOM=<wbr>y<br> BR2_TOOLCHAIN_EXTERNAL_<wbr>DOWNLOAD=y<br> BR2_TOOLCHAIN_EXTERNAL_URL="<a href="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2017.11-rc1.tar.bz2" rel="noreferrer" target="_blank">ht<wbr>tp://autobuild.buildroot.org/<wbr>toolchains/tarballs/br-arm-<wbr>full-2017.11-rc1.tar.bz2</a>"<br> BR2_TOOLCHAIN_EXTERNAL_GCC_4_<wbr>9=y<br> BR2_TOOLCHAIN_EXTERNAL_<wbr>HEADERS_3_10=y<br> BR2_TOOLCHAIN_EXTERNAL_LOCALE=<wbr>y<br> # BR2_TOOLCHAIN_EXTERNAL_HAS_<wbr>THREADS_DEBUG is not set<br> BR2_TOOLCHAIN_EXTERNAL_CXX=y<br> BR2_INIT_NONE=y<br> BR2_SYSTEM_BIN_SH_NONE=y<br> # BR2_PACKAGE_BUSYBOX is not set<br> BR2_PACKAGE_OPENTRACING_CPP=y<br> # BR2_TARGET_ROOTFS_TAR is not set<br> <br> It fails with:<br> <br> >>> opentracing-cpp v1.2.0 Building<br> PATH="/home/thomas/projets/<wbr>buildroot/output/host/bin:/<wbr>home/thomas/projets/buildroot/<wbr>output/host/sbin:/usr/local/<wbr>bin:/usr/bin:/bin:/home/<wbr>thomas/.rvm/bin:/usr/local/<wbr>sbin:/usr/sbin:/home/thomas/.<wbr>rvm/bin:/home/thomas/sys/bin:/<wbr>home/thomas/.gem/ruby/2.1.0/<wbr>bin:/home/thomas/.rvm/bin" /usr/bin/make -j5 -C /home/thomas/projets/<wbr>buildroot/output/build/<wbr>opentracing-cpp-v1.2.0/<br> Scanning dependencies of target opentracing<br> [ 25%] Building CXX object CMakeFiles/opentracing.dir/<wbr>src/tracer.cpp.o<br> [ 75%] Building CXX object CMakeFiles/opentracing.dir/<wbr>src/propagation.cpp.o<br> [ 75%] Building CXX object CMakeFiles/opentracing.dir/<wbr>src/noop.cpp.o<br> In file included from /home/thomas/projets/<wbr>buildroot/output/build/<wbr>opentracing-cpp-v1.2.0/<wbr>include/opentracing/util.h:13:<wbr>0,<br> from /home/thomas/projets/<wbr>buildroot/output/build/<wbr>opentracing-cpp-v1.2.0/<wbr>include/opentracing/<wbr>propagation.h:5,<br> from /home/thomas/projets/<wbr>buildroot/output/build/<wbr>opentracing-cpp-v1.2.0/<wbr>include/opentracing/tracer.h:<wbr>4,<br> from /home/thomas/projets/<wbr>buildroot/output/build/<wbr>opentracing-cpp-v1.2.0/<wbr>include/opentracing/noop.h:4,<br> from /home/thomas/projets/<wbr>buildroot/output/build/<wbr>opentracing-cpp-v1.2.0/src/<wbr>noop.cpp:1:<br> /home/thomas/projets/<wbr>buildroot/output/build/<wbr>opentracing-cpp-v1.2.0/3rd_<wbr>party/include/opentracing/<wbr>expected/expected.hpp:230:24: error: ‘exception_ptr’ is not a member of ‘std’<br> class unexpected_type< std::exception_ptr ><br> ^<br> /home/thomas/projets/<wbr>buildroot/output/build/<wbr>opentracing-cpp-v1.2.0/3rd_<wbr>party/include/opentracing/<wbr>expected/expected.hpp:230:24: error: ‘exception_ptr’ is not a member of ‘std’<br> /home/thomas/projets/<wbr>buildroot/output/build/<wbr>opentracing-cpp-v1.2.0/3rd_<wbr>party/include/opentracing/<wbr>expected/expected.hpp:230:43: error: template argument 1 is invalid<br> class unexpected_type< std::exception_ptr ><br> ^<br> and many more of such errors.<br> <br> Could you verify with ./utils/test-pkg that your package builds<br> properly?<br> <br> Thanks a lot!<br> <br> Thomas<br> --<br> Thomas Petazzoni, CTO, Free Electrons<br> Embedded Linux and Kernel engineering<br> <a href="http://free-electrons.com" rel="noreferrer" target="_blank">http://free-electrons.com</a><br> </blockquote></div></div>
Thomas, all, The issue it a bit more complex than I anticipated, it looks like for armv5 architecture(s), opentracing-cpp hits the following issue: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58938 "std::exception_ptr is missing on architectures with incomplete atomic int support" which comes down to: #if (__cplusplus >= 201103L) && (ATOMIC_INT_LOCK_FREE > 1) #include <bits/exception_ptr.h> #include <bits/nested_exception.h> #endif Also related to ATOMIC_INT_LOCK_FREE ==1 for armv5, is the following: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=727621 " According the debian bug report [1], it is not possible to use std::future on armv5 targetting toolchains. This is because libstdc++ will only enable std::future if ATOMIC_INT_LOCK_FREE > 1. There is no LDREX for armv5 and older, so this definition is set to ATOMIC_INT_LOCK_FREE when compiling for ARMv4t or ARMv5. " Now, for std::exception_ptr, it got fixed to work withouth atomic support in libstdc++ begin of 2017, so I currently assume only gcc 6.4 (and maybe 5.5) includes that fix. So now: I wonder what the best options are: * remembering the libatomic story from a while ago: is there a chance I can get it fixed by some dependency on libatomic or so? I don't think so, but I could be wrong. * Do I need to remove support for armv5 architectures * or a construction that armv5 requires a very recent gcc version (seems fixed in gcc 6.4). any comment? br, Jan On Sat, Dec 30, 2017 at 10:49 PM, Jan Heylen <heyleke@gmail.com> wrote: > Thanks, I'll check it out. > > On 30 Dec 2017 22:46, "Thomas Petazzoni" > <thomas.petazzoni@free-electrons.com> wrote: >> >> Hello, >> >> On Sat, 23 Dec 2017 08:40:01 +0100, Jan Heylen wrote: >> > From: Jan Heylen <jan.heylen@nokia.com> >> > >> > Signed-off-by: Jan Heylen <jan.heylen@nokia.com> >> >> The commit title should be: >> >> opentracing-cpp: new package >> >> >> > package/Config.in | 1 + >> > package/opentracing-cpp/Config.in | 11 +++++++++++ >> > package/opentracing-cpp/opentracing-cpp.hash | 3 +++ >> > package/opentracing-cpp/opentracing-cpp.mk | 14 ++++++++++++++ >> >> Please add an entry in the DEVELOPERS file for this package. >> >> > diff --git a/package/opentracing-cpp/Config.in >> > b/package/opentracing-cpp/Config.in >> > new file mode 100644 >> > index 0000000..3f6f1ad >> > --- /dev/null >> > +++ b/package/opentracing-cpp/Config.in >> > @@ -0,0 +1,11 @@ >> > +config BR2_PACKAGE_OPENTRACING_CPP >> > + bool "opentracing-cpp" >> > + depends on BR2_INSTALL_LIBSTDCPP >> > + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 >> > + help >> > + OpenTracing API for C++ >> > + >> > + http://opentracing.io >> > + >> > +comment "opentracing-cpp needs a toolchain w/ C++" >> > + depends on !BR2_INSTALL_LIBSTDCPP >> >> You forgot to include in the comment the gcc >= 4.8 dependency. >> >> Also, this package doesn't build with the following defconfig: >> >> BR2_arm=y >> BR2_TOOLCHAIN_EXTERNAL=y >> BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y >> BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y >> >> BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2017.11-rc1.tar.bz2" >> BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y >> BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y >> BR2_TOOLCHAIN_EXTERNAL_LOCALE=y >> # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set >> BR2_TOOLCHAIN_EXTERNAL_CXX=y >> BR2_INIT_NONE=y >> BR2_SYSTEM_BIN_SH_NONE=y >> # BR2_PACKAGE_BUSYBOX is not set >> BR2_PACKAGE_OPENTRACING_CPP=y >> # BR2_TARGET_ROOTFS_TAR is not set >> >> It fails with: >> >> >>> opentracing-cpp v1.2.0 Building >> >> PATH="/home/thomas/projets/buildroot/output/host/bin:/home/thomas/projets/buildroot/output/host/sbin:/usr/local/bin:/usr/bin:/bin:/home/thomas/.rvm/bin:/usr/local/sbin:/usr/sbin:/home/thomas/.rvm/bin:/home/thomas/sys/bin:/home/thomas/.gem/ruby/2.1.0/bin:/home/thomas/.rvm/bin" >> /usr/bin/make -j5 -C >> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/ >> Scanning dependencies of target opentracing >> [ 25%] Building CXX object CMakeFiles/opentracing.dir/src/tracer.cpp.o >> [ 75%] Building CXX object >> CMakeFiles/opentracing.dir/src/propagation.cpp.o >> [ 75%] Building CXX object CMakeFiles/opentracing.dir/src/noop.cpp.o >> In file included from >> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/util.h:13:0, >> from >> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/propagation.h:5, >> from >> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/tracer.h:4, >> from >> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/noop.h:4, >> from >> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/src/noop.cpp:1: >> >> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_party/include/opentracing/expected/expected.hpp:230:24: >> error: ‘exception_ptr’ is not a member of ‘std’ >> class unexpected_type< std::exception_ptr > >> ^ >> >> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_party/include/opentracing/expected/expected.hpp:230:24: >> error: ‘exception_ptr’ is not a member of ‘std’ >> >> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_party/include/opentracing/expected/expected.hpp:230:43: >> error: template argument 1 is invalid >> class unexpected_type< std::exception_ptr > >> ^ >> and many more of such errors. >> >> Could you verify with ./utils/test-pkg that your package builds >> properly? >> >> Thanks a lot! >> >> Thomas >> -- >> Thomas Petazzoni, CTO, Free Electrons >> Embedded Linux and Kernel engineering >> http://free-electrons.com
I assume it is this one: (package/mongodb/Config.in) config BR2_PACKAGE_MONGODB_ARCH_SUPPORTS bool # ARM needs LDREX/STREX, so ARMv6+ default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 # ARM needs LDREX/STREX: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dht0008a/ch01s02s01.html only question remains if we need to add an OR for gcc 6.4 in case of std::execption_ptr usage. br, Jan On Sun, Dec 31, 2017 at 10:23 AM, Jan Heylen <heyleke@gmail.com> wrote: > Thomas, all, > > The issue it a bit more complex than I anticipated, > > it looks like for armv5 architecture(s), opentracing-cpp hits the > following issue: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58938 > > "std::exception_ptr is missing on architectures with incomplete atomic > int support" > > which comes down to: > > #if (__cplusplus >= 201103L) && (ATOMIC_INT_LOCK_FREE > 1) > #include <bits/exception_ptr.h> > #include <bits/nested_exception.h> > #endif > > Also related to ATOMIC_INT_LOCK_FREE ==1 for armv5, is the following: > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=727621 > > " > According the debian bug report [1], it is not possible to use std::future > on armv5 targetting toolchains. This is because libstdc++ will only enable > std::future if ATOMIC_INT_LOCK_FREE > 1. There is no LDREX for armv5 and > older, so this definition is set to ATOMIC_INT_LOCK_FREE when compiling for > ARMv4t or ARMv5. > " > > Now, for std::exception_ptr, it got fixed to work withouth atomic > support in libstdc++ begin of 2017, so I currently assume only gcc 6.4 > (and maybe 5.5) includes that fix. > > So now: I wonder what the best options are: > * remembering the libatomic story from a while ago: is there a chance > I can get it fixed by some dependency on libatomic or so? I don't > think so, but I could be wrong. > * Do I need to remove support for armv5 architectures > * or a construction that armv5 requires a very recent gcc version > (seems fixed in gcc 6.4). > > any comment? > > br, > > Jan > > On Sat, Dec 30, 2017 at 10:49 PM, Jan Heylen <heyleke@gmail.com> wrote: >> Thanks, I'll check it out. >> >> On 30 Dec 2017 22:46, "Thomas Petazzoni" >> <thomas.petazzoni@free-electrons.com> wrote: >>> >>> Hello, >>> >>> On Sat, 23 Dec 2017 08:40:01 +0100, Jan Heylen wrote: >>> > From: Jan Heylen <jan.heylen@nokia.com> >>> > >>> > Signed-off-by: Jan Heylen <jan.heylen@nokia.com> >>> >>> The commit title should be: >>> >>> opentracing-cpp: new package >>> >>> >>> > package/Config.in | 1 + >>> > package/opentracing-cpp/Config.in | 11 +++++++++++ >>> > package/opentracing-cpp/opentracing-cpp.hash | 3 +++ >>> > package/opentracing-cpp/opentracing-cpp.mk | 14 ++++++++++++++ >>> >>> Please add an entry in the DEVELOPERS file for this package. >>> >>> > diff --git a/package/opentracing-cpp/Config.in >>> > b/package/opentracing-cpp/Config.in >>> > new file mode 100644 >>> > index 0000000..3f6f1ad >>> > --- /dev/null >>> > +++ b/package/opentracing-cpp/Config.in >>> > @@ -0,0 +1,11 @@ >>> > +config BR2_PACKAGE_OPENTRACING_CPP >>> > + bool "opentracing-cpp" >>> > + depends on BR2_INSTALL_LIBSTDCPP >>> > + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 >>> > + help >>> > + OpenTracing API for C++ >>> > + >>> > + http://opentracing.io >>> > + >>> > +comment "opentracing-cpp needs a toolchain w/ C++" >>> > + depends on !BR2_INSTALL_LIBSTDCPP >>> >>> You forgot to include in the comment the gcc >= 4.8 dependency. >>> >>> Also, this package doesn't build with the following defconfig: >>> >>> BR2_arm=y >>> BR2_TOOLCHAIN_EXTERNAL=y >>> BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y >>> BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y >>> >>> BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2017.11-rc1.tar.bz2" >>> BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y >>> BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y >>> BR2_TOOLCHAIN_EXTERNAL_LOCALE=y >>> # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set >>> BR2_TOOLCHAIN_EXTERNAL_CXX=y >>> BR2_INIT_NONE=y >>> BR2_SYSTEM_BIN_SH_NONE=y >>> # BR2_PACKAGE_BUSYBOX is not set >>> BR2_PACKAGE_OPENTRACING_CPP=y >>> # BR2_TARGET_ROOTFS_TAR is not set >>> >>> It fails with: >>> >>> >>> opentracing-cpp v1.2.0 Building >>> >>> PATH="/home/thomas/projets/buildroot/output/host/bin:/home/thomas/projets/buildroot/output/host/sbin:/usr/local/bin:/usr/bin:/bin:/home/thomas/.rvm/bin:/usr/local/sbin:/usr/sbin:/home/thomas/.rvm/bin:/home/thomas/sys/bin:/home/thomas/.gem/ruby/2.1.0/bin:/home/thomas/.rvm/bin" >>> /usr/bin/make -j5 -C >>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/ >>> Scanning dependencies of target opentracing >>> [ 25%] Building CXX object CMakeFiles/opentracing.dir/src/tracer.cpp.o >>> [ 75%] Building CXX object >>> CMakeFiles/opentracing.dir/src/propagation.cpp.o >>> [ 75%] Building CXX object CMakeFiles/opentracing.dir/src/noop.cpp.o >>> In file included from >>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/util.h:13:0, >>> from >>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/propagation.h:5, >>> from >>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/tracer.h:4, >>> from >>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/noop.h:4, >>> from >>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/src/noop.cpp:1: >>> >>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_party/include/opentracing/expected/expected.hpp:230:24: >>> error: ‘exception_ptr’ is not a member of ‘std’ >>> class unexpected_type< std::exception_ptr > >>> ^ >>> >>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_party/include/opentracing/expected/expected.hpp:230:24: >>> error: ‘exception_ptr’ is not a member of ‘std’ >>> >>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_party/include/opentracing/expected/expected.hpp:230:43: >>> error: template argument 1 is invalid >>> class unexpected_type< std::exception_ptr > >>> ^ >>> and many more of such errors. >>> >>> Could you verify with ./utils/test-pkg that your package builds >>> properly? >>> >>> Thanks a lot! >>> >>> Thomas >>> -- >>> Thomas Petazzoni, CTO, Free Electrons >>> Embedded Linux and Kernel engineering >>> http://free-electrons.com
I found that this issue has actually a feature in buildroot: BR2_TOOLCHAIN_HAS_GCC_BUG_64735 I'll dig some deeper into that and propose a new version of the patch. br, Jan On Sun, Dec 31, 2017 at 11:46 AM, Jan Heylen <heyleke@gmail.com> wrote: > I assume it is this one: (package/mongodb/Config.in) > > config BR2_PACKAGE_MONGODB_ARCH_SUPPORTS > bool > # ARM needs LDREX/STREX, so ARMv6+ > default y if BR2_arm && !BR2_ARM_CPU_ARMV4 && !BR2_ARM_CPU_ARMV5 > > # ARM needs LDREX/STREX: > http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dht0008a/ch01s02s01.html > > only question remains if we need to add an OR for gcc 6.4 in case of > std::execption_ptr usage. > > br, > > Jan > > On Sun, Dec 31, 2017 at 10:23 AM, Jan Heylen <heyleke@gmail.com> wrote: >> Thomas, all, >> >> The issue it a bit more complex than I anticipated, >> >> it looks like for armv5 architecture(s), opentracing-cpp hits the >> following issue: >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58938 >> >> "std::exception_ptr is missing on architectures with incomplete atomic >> int support" >> >> which comes down to: >> >> #if (__cplusplus >= 201103L) && (ATOMIC_INT_LOCK_FREE > 1) >> #include <bits/exception_ptr.h> >> #include <bits/nested_exception.h> >> #endif >> >> Also related to ATOMIC_INT_LOCK_FREE ==1 for armv5, is the following: >> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=727621 >> >> " >> According the debian bug report [1], it is not possible to use std::future >> on armv5 targetting toolchains. This is because libstdc++ will only enable >> std::future if ATOMIC_INT_LOCK_FREE > 1. There is no LDREX for armv5 and >> older, so this definition is set to ATOMIC_INT_LOCK_FREE when compiling for >> ARMv4t or ARMv5. >> " >> >> Now, for std::exception_ptr, it got fixed to work withouth atomic >> support in libstdc++ begin of 2017, so I currently assume only gcc 6.4 >> (and maybe 5.5) includes that fix. >> >> So now: I wonder what the best options are: >> * remembering the libatomic story from a while ago: is there a chance >> I can get it fixed by some dependency on libatomic or so? I don't >> think so, but I could be wrong. >> * Do I need to remove support for armv5 architectures >> * or a construction that armv5 requires a very recent gcc version >> (seems fixed in gcc 6.4). >> >> any comment? >> >> br, >> >> Jan >> >> On Sat, Dec 30, 2017 at 10:49 PM, Jan Heylen <heyleke@gmail.com> wrote: >>> Thanks, I'll check it out. >>> >>> On 30 Dec 2017 22:46, "Thomas Petazzoni" >>> <thomas.petazzoni@free-electrons.com> wrote: >>>> >>>> Hello, >>>> >>>> On Sat, 23 Dec 2017 08:40:01 +0100, Jan Heylen wrote: >>>> > From: Jan Heylen <jan.heylen@nokia.com> >>>> > >>>> > Signed-off-by: Jan Heylen <jan.heylen@nokia.com> >>>> >>>> The commit title should be: >>>> >>>> opentracing-cpp: new package >>>> >>>> >>>> > package/Config.in | 1 + >>>> > package/opentracing-cpp/Config.in | 11 +++++++++++ >>>> > package/opentracing-cpp/opentracing-cpp.hash | 3 +++ >>>> > package/opentracing-cpp/opentracing-cpp.mk | 14 ++++++++++++++ >>>> >>>> Please add an entry in the DEVELOPERS file for this package. >>>> >>>> > diff --git a/package/opentracing-cpp/Config.in >>>> > b/package/opentracing-cpp/Config.in >>>> > new file mode 100644 >>>> > index 0000000..3f6f1ad >>>> > --- /dev/null >>>> > +++ b/package/opentracing-cpp/Config.in >>>> > @@ -0,0 +1,11 @@ >>>> > +config BR2_PACKAGE_OPENTRACING_CPP >>>> > + bool "opentracing-cpp" >>>> > + depends on BR2_INSTALL_LIBSTDCPP >>>> > + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 >>>> > + help >>>> > + OpenTracing API for C++ >>>> > + >>>> > + http://opentracing.io >>>> > + >>>> > +comment "opentracing-cpp needs a toolchain w/ C++" >>>> > + depends on !BR2_INSTALL_LIBSTDCPP >>>> >>>> You forgot to include in the comment the gcc >= 4.8 dependency. >>>> >>>> Also, this package doesn't build with the following defconfig: >>>> >>>> BR2_arm=y >>>> BR2_TOOLCHAIN_EXTERNAL=y >>>> BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y >>>> BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y >>>> >>>> BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2017.11-rc1.tar.bz2" >>>> BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y >>>> BR2_TOOLCHAIN_EXTERNAL_HEADERS_3_10=y >>>> BR2_TOOLCHAIN_EXTERNAL_LOCALE=y >>>> # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set >>>> BR2_TOOLCHAIN_EXTERNAL_CXX=y >>>> BR2_INIT_NONE=y >>>> BR2_SYSTEM_BIN_SH_NONE=y >>>> # BR2_PACKAGE_BUSYBOX is not set >>>> BR2_PACKAGE_OPENTRACING_CPP=y >>>> # BR2_TARGET_ROOTFS_TAR is not set >>>> >>>> It fails with: >>>> >>>> >>> opentracing-cpp v1.2.0 Building >>>> >>>> PATH="/home/thomas/projets/buildroot/output/host/bin:/home/thomas/projets/buildroot/output/host/sbin:/usr/local/bin:/usr/bin:/bin:/home/thomas/.rvm/bin:/usr/local/sbin:/usr/sbin:/home/thomas/.rvm/bin:/home/thomas/sys/bin:/home/thomas/.gem/ruby/2.1.0/bin:/home/thomas/.rvm/bin" >>>> /usr/bin/make -j5 -C >>>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/ >>>> Scanning dependencies of target opentracing >>>> [ 25%] Building CXX object CMakeFiles/opentracing.dir/src/tracer.cpp.o >>>> [ 75%] Building CXX object >>>> CMakeFiles/opentracing.dir/src/propagation.cpp.o >>>> [ 75%] Building CXX object CMakeFiles/opentracing.dir/src/noop.cpp.o >>>> In file included from >>>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/util.h:13:0, >>>> from >>>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/propagation.h:5, >>>> from >>>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/tracer.h:4, >>>> from >>>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/include/opentracing/noop.h:4, >>>> from >>>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/src/noop.cpp:1: >>>> >>>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_party/include/opentracing/expected/expected.hpp:230:24: >>>> error: ‘exception_ptr’ is not a member of ‘std’ >>>> class unexpected_type< std::exception_ptr > >>>> ^ >>>> >>>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_party/include/opentracing/expected/expected.hpp:230:24: >>>> error: ‘exception_ptr’ is not a member of ‘std’ >>>> >>>> /home/thomas/projets/buildroot/output/build/opentracing-cpp-v1.2.0/3rd_party/include/opentracing/expected/expected.hpp:230:43: >>>> error: template argument 1 is invalid >>>> class unexpected_type< std::exception_ptr > >>>> ^ >>>> and many more of such errors. >>>> >>>> Could you verify with ./utils/test-pkg that your package builds >>>> properly? >>>> >>>> Thanks a lot! >>>> >>>> Thomas >>>> -- >>>> Thomas Petazzoni, CTO, Free Electrons >>>> Embedded Linux and Kernel engineering >>>> http://free-electrons.com
Hello, On Sun, 31 Dec 2017 14:23:06 +0100, Jan Heylen wrote: > I found that this issue has actually a feature in buildroot: > > BR2_TOOLCHAIN_HAS_GCC_BUG_64735 > > I'll dig some deeper into that and propose a new version of the patch. Indeed! I forgot about this one. So just make your package depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735. Could you resubmit, taking into account this issue, and the few other comments that I made ? Thanks a lot! Thomas
Will do, thanks! I tested it already. Need to squash the commits and resubmit. But first some festivities to handle. So my best wishes and you'll see the patch in 2018 ;-) Also m68k coldfire doesn't seem to handle it correctly. So I'll depend on that one too. Br, Jan On 31 Dec 2017 5:10 pm, "Thomas Petazzoni" < thomas.petazzoni@free-electrons.com> wrote: Hello, On Sun, 31 Dec 2017 14:23:06 +0100, Jan Heylen wrote: > I found that this issue has actually a feature in buildroot: > > BR2_TOOLCHAIN_HAS_GCC_BUG_64735 > > I'll dig some deeper into that and propose a new version of the patch. Indeed! I forgot about this one. So just make your package depends on !BR2_TOOLCHAIN_HAS_GCC_BUG_64735. Could you resubmit, taking into account this issue, and the few other comments that I made ? Thanks a lot! Thomas -- Thomas Petazzoni, CTO, Free Electrons Embedded Linux and Kernel engineering http://free-electrons.com <div dir="auto"><div>Will do, thanks! I tested it already. Need to squash the commits and resubmit. But first some festivities to handle. So my best wishes and you'll see the patch in 2018 ;-)</div><div dir="auto"><br></div><div dir="auto">Also m68k coldfire doesn't seem to handle it correctly. So I'll depend on that one too.</div><div dir="auto"><br></div><div dir="auto">Br,</div><div dir="auto"><br></div><div dir="auto">Jan<br><div class="gmail_extra" dir="auto"><br><div class="gmail_quote">On 31 Dec 2017 5:10 pm, "Thomas Petazzoni" <<a href="mailto:thomas.petazzoni@free-electrons.com">thomas.petazzoni@free-electrons.com</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello,<br> <div class="quoted-text"><br> On Sun, 31 Dec 2017 14:23:06 +0100, Jan Heylen wrote:<br> > I found that this issue has actually a feature in buildroot:<br> ><br> > BR2_TOOLCHAIN_HAS_GCC_BUG_<wbr>64735<br> ><br> > I'll dig some deeper into that and propose a new version of the patch.<br> <br> </div>Indeed! I forgot about this one. So just make your package depends<br> on !BR2_TOOLCHAIN_HAS_GCC_BUG_<wbr>64735.<br> <br> Could you resubmit, taking into account this issue, and the few other<br> comments that I made ?<br> <div class="elided-text"><br> Thanks a lot!<br> <br> Thomas<br> --<br> Thomas Petazzoni, CTO, Free Electrons<br> Embedded Linux and Kernel engineering<br> <a href="http://free-electrons.com" rel="noreferrer" target="_blank">http://free-electrons.com</a><br> </div></blockquote></div><br></div></div></div>
diff --git a/package/Config.in b/package/Config.in index bd39a37..1150a3f 100644 --- a/package/Config.in +++ b/package/Config.in @@ -1288,6 +1288,7 @@ menu "Logging" source "package/log4cplus/Config.in" source "package/log4cpp/Config.in" source "package/log4cxx/Config.in" + source "package/opentracing-cpp/Config.in" source "package/zlog/Config.in" endmenu diff --git a/package/opentracing-cpp/Config.in b/package/opentracing-cpp/Config.in new file mode 100644 index 0000000..3f6f1ad --- /dev/null +++ b/package/opentracing-cpp/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_OPENTRACING_CPP + bool "opentracing-cpp" + depends on BR2_INSTALL_LIBSTDCPP + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # C++11 + help + OpenTracing API for C++ + + http://opentracing.io + +comment "opentracing-cpp needs a toolchain w/ C++" + depends on !BR2_INSTALL_LIBSTDCPP diff --git a/package/opentracing-cpp/opentracing-cpp.hash b/package/opentracing-cpp/opentracing-cpp.hash new file mode 100644 index 0000000..d25dbaf --- /dev/null +++ b/package/opentracing-cpp/opentracing-cpp.hash @@ -0,0 +1,3 @@ +# Locally calculated +sha256 c77041cb2f147ac81b2b0702abfced5565a9cebc318d045c060a4c3e074009ee opentracing-cpp-v1.2.0.tar.gz +sha256 b80bffcfee825a69645f7ca97ddba48714031ea5c845198d184714d5490798b6 COPYING diff --git a/package/opentracing-cpp/opentracing-cpp.mk b/package/opentracing-cpp/opentracing-cpp.mk new file mode 100644 index 0000000..f1748ef --- /dev/null +++ b/package/opentracing-cpp/opentracing-cpp.mk @@ -0,0 +1,14 @@ +################################################################################ +# +# opentracing-cpp +# +################################################################################ + +OPENTRACING_CPP_VERSION = v1.2.0 +OPENTRACING_CPP_SITE = $(call github,opentracing,opentracing-cpp,$(OPENTRACING_CPP_VERSION)) +OPENTRACING_CPP_LICENSE = MIT +OPENTRACING_CPP_LICENSE_FILES = COPYING + +OPENTRACING_CPP_INSTALL_STAGING = YES + +$(eval $(cmake-package))