Message ID | 1454191379-2800-1-git-send-email-bernd.kuhls@t-online.de |
---|---|
State | Superseded |
Headers | show |
Bernd, On Sat, 30 Jan 2016 23:02:59 +0100, Bernd Kuhls wrote: > Fixes > http://autobuild.buildroot.net/results/fde/fdefe50f4a1ff0888105feedbabab186ab6294cb/ > http://autobuild.buildroot.net/results/f49/f49dc42d81a3abf5515ef68940037e34caee6a1e/ > and others > > Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> > --- > package/boost/0006-uclibc-no-fenv.patch | 39 +++++++++++++++++++++++++++++++++ > 1 file changed, 39 insertions(+) > create mode 100644 package/boost/0006-uclibc-no-fenv.patch Thanks a lot for looking into the boost issue. I have some question below. > +diff -uNr boost_1_60_0.org/boost/test/execution_monitor.hpp boost_1_60_0/boost/test/execution_monitor.hpp > +--- boost_1_60_0.org/boost/test/execution_monitor.hpp 2015-12-06 09:50:28.000000000 +0100 > ++++ boost_1_60_0/boost/test/execution_monitor.hpp 2016-01-30 22:55:36.000000000 +0100 > +@@ -484,7 +484,7 @@ > + BOOST_FPE_UNDERFLOW = EM_UNDERFLOW|EM_DENORMAL, > + > + BOOST_FPE_ALL = MCW_EM, > +-#elif defined(BOOST_NO_FENV_H) || defined(BOOST_CLANG) > ++#elif defined(BOOST_NO_FENV_H) || defined(BOOST_CLANG) || defined(__UCLIBC__) Boost already checks for the availability of fenv functionality, and should set BOOST_NO_FENV_H if fenv functionality is not there. Do you have any idea why the check doesn't work ? We shouldn't have to add this defined(__UCLIBC__) thing, since Boost should have detected that uClibc doesn't provide a complete fenv implementation, and define BOOST_NO_FENV_H. I've tried to go through the Boost mechanism that does this test, but it is really not conventional, so I couldn't so far figure out how it was all working. Thanks! Thomas
Hi Thomas, Am Sun, 31 Jan 2016 08:37:49 +0100 schrieb Thomas Petazzoni: > Boost already checks for the availability of fenv functionality, and > should set BOOST_NO_FENV_H if fenv functionality is not there. [...] > Do you have any idea why the check doesn't work ? No. > I've tried to go through the Boost mechanism that does this test, but > it is really not conventional, so I couldn't so far figure out how it > was all working. Let's see what the result of the upstream bug report[1] will be. Until then we can try this new fix: http://patchwork.ozlabs.org/patch/579807/ or, alternatively, we can disable BR2_PACKAGE_BOOST_TEST for BR2_TOOLCHAIN_USES_UCLIBC=y. At least this will make to autobuilders happy ;) Regards, Bernd [1] https://svn.boost.org/trac/boost/ticket/11756
diff --git a/package/boost/0006-uclibc-no-fenv.patch b/package/boost/0006-uclibc-no-fenv.patch new file mode 100644 index 0000000..88cd440 --- /dev/null +++ b/package/boost/0006-uclibc-no-fenv.patch @@ -0,0 +1,39 @@ +Fix build with uClibc + +Our config does not enable UCLIBC_HAS_FENV which breaks the build. + +Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> + +diff -uNr boost_1_60_0.org/boost/test/execution_monitor.hpp boost_1_60_0/boost/test/execution_monitor.hpp +--- boost_1_60_0.org/boost/test/execution_monitor.hpp 2015-12-06 09:50:28.000000000 +0100 ++++ boost_1_60_0/boost/test/execution_monitor.hpp 2016-01-30 22:55:36.000000000 +0100 +@@ -484,7 +484,7 @@ + BOOST_FPE_UNDERFLOW = EM_UNDERFLOW|EM_DENORMAL, + + BOOST_FPE_ALL = MCW_EM, +-#elif defined(BOOST_NO_FENV_H) || defined(BOOST_CLANG) ++#elif defined(BOOST_NO_FENV_H) || defined(BOOST_CLANG) || defined(__UCLIBC__) + BOOST_FPE_ALL = 1, + #else + BOOST_FPE_DIVBYZERO = FE_DIVBYZERO, +diff -uNr boost_1_60_0.org/boost/test/impl/execution_monitor.ipp boost_1_60_0/boost/test/impl/execution_monitor.ipp +--- boost_1_60_0.org/boost/test/impl/execution_monitor.ipp 2015-12-06 09:50:28.000000000 +0100 ++++ boost_1_60_0/boost/test/impl/execution_monitor.ipp 2016-01-30 22:56:53.000000000 +0100 +@@ -1379,7 +1379,7 @@ + #endif + + return ~old_cw & BOOST_FPE_ALL; +-#elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && !defined(BOOST_NO_FENV_H) ++#elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && !defined(BOOST_NO_FENV_H) && !defined(__UCLIBC__) + ::feclearexcept(BOOST_FPE_ALL); + int res = ::feenableexcept( mask ); + return res == -1 ? (unsigned)BOOST_FPE_INV : (unsigned)res; +@@ -1416,7 +1416,7 @@ + #endif + + return ~old_cw & BOOST_FPE_ALL; +-#elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && !defined(BOOST_NO_FENV_H) ++#elif defined(__GLIBC__) && defined(__USE_GNU) && !defined(BOOST_CLANG) && !defined(BOOST_NO_FENV_H) && !defined(__UCLIBC__) + ::feclearexcept(BOOST_FPE_ALL); + int res = ::fedisableexcept( mask ); + return res == -1 ? (unsigned)BOOST_FPE_INV : (unsigned)res;
Fixes http://autobuild.buildroot.net/results/fde/fdefe50f4a1ff0888105feedbabab186ab6294cb/ http://autobuild.buildroot.net/results/f49/f49dc42d81a3abf5515ef68940037e34caee6a1e/ and others Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> --- package/boost/0006-uclibc-no-fenv.patch | 39 +++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 package/boost/0006-uclibc-no-fenv.patch