[serialization][test] failures in serialization causing regressions

Hi, The regression matrix in develop of Boost.Geometry contains many new compilation failures due to: 1) : D:\t08\run\boost_root\boost/serialization/array.hpp(25) : error C2039: 'array' : is not a member of 'std' 2): ../boost/numeric/ublas/storage.hpp: In member function ???void boost::numeric::ublas::unbounded_array<T, ALLOC>::serialize(Archive&, unsigned int)???: ../boost/numeric/ublas/storage.hpp:331:18: error: ???make_array??? is not a member of ???boost::serialization??? ar & serialization::make_array(data_, s);and a The master is still OK. Can this be solved? Regards, Barend

The boost serialization library test suite uses Boost.Filesystem in order to build and run it's tests. Turns out that the tests under mngw fail to build with the following message: In file included from ..\libs\serialization\test\test_tools.hpp:10, from ..\libs\serialization\test\test_binary.cpp:24: ../boost/filesystem/operations.hpp:21:5: #error Configuration not supported: Boost.Filesystem V3 and later requires std::wstring support In file included from ../boost/filesystem/operations.hpp:24, So it seems that Boost.Filesystem requires support for wstring and mngw doesn't support it - so the serialization library tests can't run. Does anyone have any ideas for an expedient way to work around this? Robert Ramey

On 11/17/2016 11:18 AM, Robert Ramey wrote:
The boost serialization library test suite uses Boost.Filesystem in order to build and run it's tests. Turns out that the tests under mngw fail to build with the following message:
In file included from ..\libs\serialization\test\test_tools.hpp:10, from ..\libs\serialization\test\test_binary.cpp:24: ../boost/filesystem/operations.hpp:21:5: #error Configuration not supported: Boost.Filesystem V3 and later requires std::wstring support In file included from ../boost/filesystem/operations.hpp:24,
So it seems that Boost.Filesystem requires support for wstring and mngw doesn't support it - so the serialization library tests can't run.
Why do you think mingw/gcc on Windows does not support std::wstring ? I would be very surprised if that were the case unless you were testing a very, very old version of mingw/gcc.
Does anyone have any ideas for an expedient way to work around this?
Robert Ramey

On 11/17/16 10:52 AM, Edward Diener wrote:
Why do you think mingw/gcc on Windows does not support std::wstring ? I would be very surprised if that were the case unless you were testing a very, very old version of mingw/gcc.
When I look at the test matrix at http://www.boost.org/development/tests/develop/developer/serialization.html all the gcc-mngw versions are failing. I checked the first one which happened to be gcc 3.4 and that was the message. I mistakenly assumed that all the failures were due to the same issue. So I see you're right here. So the library is failing to build for all mngw platforms. Unfortunately, the test matrix truncates the error messages due to a large number of warnings on that plaform before any actual error message is displayed. This makes it impossible to make the library work on this plaform. This an ongoing problem which I've complained before - alas without getting anyone to take action. Robert Ramey

So the library is failing to build for all mngw platforms. Unfortunately, the test matrix truncates the error messages due to a large number of warnings on that plaform before any actual error message is displayed. This makes it impossible to make the library work on this plaform. This an ongoing problem which I've complained before - alas without getting anyone to take action.
I'm pretty sure I've posted these before, but here are the serialization build/linker errors I see locally: gcc.link.dll ..\..\..\bin.v2\libs\serialization\build\gcc-mingw-5.3.0s11\debug\libboost_serialization-mgw53-d-1_62.dll.a ..\..\..\bin.v2\libs\serialization\build\gcc-mingw-5.3.0s11\debug\binary_iarchive.o: In function `boost::serialization::singleton<boost::archive::detail::extra_ detail::map<boost::archive::binary_iarchive> >::get_mutable_instance()': M:\data\boost\boost\libs\serialization\test/../../../boost/serialization/singleton.hpp:131: undefined reference to `__imp__ZN5boost13serialization16singleton_module9is_lockedEv' ..\..\..\bin.v2\libs\serialization\build\gcc-mingw-5.3.0s11\debug\binary_oarchive.o: In function `boost::serialization::singleton<boost::archive::detail::extra_detail::map<boost::archive::binary_oarchive>
::get_mutable_instance()': M:\data\boost\boost\libs\serialization\test/../../../boost/serialization/singleton.hpp:131: undefined reference to `__imp__ZN5boost13serialization16singleton_module9is_lockedEv' ..\..\..\bin.v2\libs\serialization\build\gcc-mingw-5.3.0s11\debug\polymorphic_iarchive.o: In function `boost::serialization::singleton<boost::archive::detail::extra_detail::map<boost::archive::polymorphic_iarchive> ::get_mutable_instance() ': M:\data\boost\boost\libs\serialization\test/../../../boost/serialization/singleton.hpp:131: undefined reference to `__imp__ZN5boost13serialization16singleton_module9is_lockedEv' ..\..\..\bin.v2\libs\serialization\build\gcc-mingw-5.3.0s11\debug\polymorphic_oarchive.o: In function `boost::serialization::singleton<boost::archive::detail::extra_detail::map<boost::archive::polymorphic_oarchive> ::get_mutable_instance()': M:\data\boost\boost\libs\serialization\test/../../../boost/serialization/singleton.hpp:131: undefined reference to `__imp__ZN5boost13serialization16singleton_module9is_lockedEv' ..\..\..\bin.v2\libs\serialization\build\gcc-mingw-5.3.0s11\debug\text_iarchive.o: In function `boost::serialization::singleton<boost::archive::detail::extra_detail::map<boost::archive::text_iarchive> ::get_mutable_instance()': M:\data\boost\boost\libs\serialization\test/../../../boost/serialization/singleton.hpp:131: undefined reference to `__imp__ZN5boost13serialization16singleton_module9is_lockedEv' ..\..\..\bin.v2\libs\serialization\build\gcc-mingw-5.3.0s11\debug\text_oarchive.o:M:\data\boost\boost\libs\serialization\test/../../../boost/serialization/singleton.hpp:131: more undefined references to `__imp__ZN5boost13serialization16singleton_module9is_lockedEv' follow
collect2.exe: error: ld returned 1 exit status
John.

On 11/17/16 11:45 AM, John Maddock wrote:
So the library is failing to build for all mngw platforms. Unfortunately, the test matrix truncates the error messages due to a large number of warnings on that plaform before any actual error message is displayed. This makes it impossible to make the library work on this plaform. This an ongoing problem which I've complained before - alas without getting anyone to take action.
I'm pretty sure I've posted these before, but here are the serialization build/linker errors I see locally:
OK - thanks, I'll into it. What I would really like to see is the test matrix program not truncate the messages so we could see this stuff. Robert Ramey

On 17 Nov 2016, at 20:45, John Maddock <jz.maddock@googlemail.com> wrote:
I'm pretty sure I've posted these before, but here are the serialization build/linker errors I see locally:
For completeness I’ll also post the reason for this problem again: The problem is that "BOOST_SERIALIZATION_DECL" expands to "__attribute__((__dllimport__))" in "singleton.hpp" when it is included from files that don't define "BOOST_SERIALIZATION_SOURCE" e.g. "binary_iarchive.cpp”. Thomas

On 11/17/16 9:27 PM, Thomas Trummer wrote:
On 17 Nov 2016, at 20:45, John Maddock <jz.maddock@googlemail.com> wrote:
I'm pretty sure I've posted these before, but here are the serialization build/linker errors I see locally:
For completeness I’ll also post the reason for this problem again:
The problem is that "BOOST_SERIALIZATION_DECL" expands to "__attribute__((__dllimport__))" in "singleton.hpp" when it is included from files that don't define "BOOST_SERIALIZATION_SOURCE" e.g. "binary_iarchive.cpp”.
How is that a problem? Isn't that what's it's supposed to do? Note that this isn't failing for any other windows platforms. After I posted that message, I found that it ony applied to mngw 3.4. Other versions of mngw (4.x) don't display errors because the test matrix truncates the error messages. Or the library fails to build and the test matrix doesn't display any error messages at all. The test matrix "platform" http://www.boost.org/development/tests/develop/igaztanaga-develop-gcc-6-1c++... doesn't reveal whether this is a build of a shared or static library. So it's impossible to see what's happening here. Don't get the impression that I don't appreciate the extra input, but I really need a definitive solution in the test system itself. Robert Ramey
Thomas
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

On 18/11/2016 18:55, Robert Ramey wrote:
I'm pretty sure I've posted these before, but here are the serialization build/linker errors I see locally:
For completeness I’ll also post the reason for this problem again:
The problem is that "BOOST_SERIALIZATION_DECL" expands to "__attribute__((__dllimport__))" in "singleton.hpp" when it is included from files that don't define "BOOST_SERIALIZATION_SOURCE" e.g. "binary_iarchive.cpp”.
How is that a problem? Isn't that what's it's supposed to do? Note that this isn't failing for any other windows platforms.
It's correct if they're being linked to separate DLL files. Looking at the jamfile, that doesn't appear to be the case; and it's not correct if they end up in the same binary. binary_iarchive.cpp does define BOOST_ARCHIVE_SOURCE; perhaps these were originally intended to live in separate compiled libraries?

On 11/18/2016 12:55 AM, Robert Ramey wrote:
On 11/17/16 9:27 PM, Thomas Trummer wrote:
On 17 Nov 2016, at 20:45, John Maddock <jz.maddock@googlemail.com> wrote:
I'm pretty sure I've posted these before, but here are the serialization build/linker errors I see locally:
For completeness I’ll also post the reason for this problem again:
The problem is that "BOOST_SERIALIZATION_DECL" expands to "__attribute__((__dllimport__))" in "singleton.hpp" when it is included from files that don't define "BOOST_SERIALIZATION_SOURCE" e.g. "binary_iarchive.cpp”.
How is that a problem? Isn't that what's it's supposed to do? Note that this isn't failing for any other windows platforms.
After I posted that message, I found that it ony applied to mngw 3.4.
Other versions of mngw (4.x) don't display errors because the test matrix truncates the error messages. Or the library fails to build and the test matrix doesn't display any error messages at all.
The test matrix "platform" http://www.boost.org/development/tests/develop/igaztanaga-develop-gcc-6-1c++... doesn't reveal whether this is a build of a shared or static library. So it's impossible to see what's happening here.
Don't get the impression that I don't appreciate the extra input, but I really need a definitive solution in the test system itself.
I have fixed this problem using mingw(-64)/gcc on Windows with PR https://github.com/boostorg/serialization/pull/51. There is still a problem with the wide character serialization library build with mingw(-64)/gcc on Windows revolving around visibility and exporting of codecvt_null<wchar_t> functionality. The latter problem does not occur with gcc on Linux.
Robert Ramey
Thomas
participants (6)
-
Barend Gehrels
-
Edward Diener
-
Gavin Lambert
-
John Maddock
-
Robert Ramey
-
Thomas Trummer