[filesystem] 1.36.0 regression tests fail on Solaris with Sun C++ 5.9

When I run the regression tests for Boost.Filesystem on Solaris with Sun C++ 5.9 I get this error: sun.compile.c++ ../../../bin.v2/libs/filesystem/build/sun/debug/link-static/operations.o "../../../libs/filesystem/src/operations.cpp", line 1060: Error: Cannot use std::pair<boost::system::error_code, int> to initialize std::pair<boost::system::error_code, unsigned long long>. "../../../libs/filesystem/src/operations.cpp", line 1062: Error: Cannot use std::pair<boost::system::error_code, int> to initialize std::pair<boost::system::error_code, unsigned long long>. "../../../libs/filesystem/src/operations.cpp", line 1096: Error: Cannot use std::pair<boost::system::error_code, int> to initialize std::pair<boost::system::error_code, long>. 3 Error(s) detected. "CC" +d -g -DBOOST_ALL_NO_LIB=1 -DBOOST_All_STATIC_LINK=1 -DBOOST_SYSTEM_STATIC_LINK=1 -I"../../.." -c -o "../../../bin.v2/libs/filesystem/build/sun/debug/link-static/operations.o" "../../../libs/filesystem/src/operations.cpp" Is this a known problem? Boris

On Thu, Sep 18, 2008 at 2:45 AM, Boris <boriss@web.de> wrote:
When I run the regression tests for Boost.Filesystem on Solaris with Sun C++ 5.9 I get this error:
sun.compile.c++ ../../../bin.v2/libs/filesystem/build/sun/debug/link-static/operations.o "../../../libs/filesystem/src/operations.cpp", line 1060: Error: Cannot use std::pair<boost::system::error_code, int> to initialize std::pair<boost::system::error_code, unsigned long long>. "../../../libs/filesystem/src/operations.cpp", line 1062: Error: Cannot use std::pair<boost::system::error_code, int> to initialize std::pair<boost::system::error_code, unsigned long long>. "../../../libs/filesystem/src/operations.cpp", line 1096: Error: Cannot use std::pair<boost::system::error_code, int> to initialize std::pair<boost::system::error_code, long>. 3 Error(s) detected.
"CC" +d -g -DBOOST_ALL_NO_LIB=1 -DBOOST_All_STATIC_LINK=1 -DBOOST_SYSTEM_STATIC_LINK=1 -I"../../.." -c -o "../../../bin.v2/libs/filesystem/build/sun/debug/link-static/operations.o" "../../../libs/filesystem/src/operations.cpp"
Is this a known problem?
The -library=stlport4 command line option are missed. Boost library should be built and used with this option. -- Simon Atanasyan

On Thu, 18 Sep 2008 09:50:39 +0200, Simon Atanasyan <atanasyan@gmail.com> wrote:
[...]The -library=stlport4 command line option are missed. Boost library should be built and used with this option.
Thanks, I tried 'bjam --toolset=sun stdlib=sun-stlport -q' which worked! What I don't understand though is why Boost hasn't been configured accordingly for Solaris to use STLport automatically? It's some time ago that I built the Boost libraries on Solaris (last version was 1.34.1 I think) so this bit me again. :-/ Boris

Hi, i wrote my own file device to get large file support on windows without the system caching the file. now, when i use this device with boost::iostreams::stream or stream_buffer all read and write access is buffered (default 4096). i found the suggestion to create the stream or stream_buffer with a buffer size of 0, but then the access to the read or write function of the device are always for 1 byte. what can i do to get real unbuffered access to the device. another problem. i use the device with the default buffer size of 4096. and access it like follows: boost::iostreams::stream<mydevice> ifile; char* buf = new char[3200]; for (int i = 0; i < 100; ++i) { ifile.seekg(32 * i, std::ios_base::beg); ifile.read(buf, 32); } now with the first read the buffer of 4096byte is filled up. then i seek 32 byte into the file and the next read operation AGAIN reads from the device? why buffer when this case it not caught? i am using boost 1.35. regards -chris -- Christopher Lux | | Bauhaus-Universität Weimar | faculty of media - virtual reality systems group

Boris wrote:
On Thu, 18 Sep 2008 09:50:39 +0200, Simon Atanasyan <atanasyan@gmail.com> wrote:
[...]The -library=stlport4 command line option are missed. Boost library should be built and used with this option.
Thanks, I tried 'bjam --toolset=sun stdlib=sun-stlport -q' which worked! What I don't understand though is why Boost hasn't been configured accordingly for Solaris to use STLport automatically?
Should it? I think that sun experts (Hi Simon!) told that it changes ABI, and old code does not use stlport, so having sun-stlport as default stdlib is not good idea. Of course, I probably totally misremember things; we can probably make stdlib=sun-stlport the default, at least when building C++ Boost itself. - Volodya

On Thu, Sep 18, 2008 at 6:23 PM, Vladimir Prus <vladimir@codesourcery.com> wrote:
Boris wrote:
On Thu, 18 Sep 2008 09:50:39 +0200, Simon Atanasyan <atanasyan@gmail.com> wrote:
[...]The -library=stlport4 command line option are missed. Boost library should be built and used with this option.
Thanks, I tried 'bjam --toolset=sun stdlib=sun-stlport -q' which worked! What I don't understand though is why Boost hasn't been configured accordingly for Solaris to use STLport automatically?
Should it? I think that sun experts (Hi Simon!) told that it changes ABI, and old code does not use stlport, so having sun-stlport as default stdlib is not good idea. Of course, I probably totally misremember things; we can probably make stdlib=sun-stlport the default, at least when building C++ Boost itself.
I do not know is stdlib=sun-stlport enable by default but it is the only chance to use Boost with Sun C++. libCstd does not and will not conform the C++ standard so it is not compatible to Boost. At now libCstd is default for Sun C++ due compatibility reasons. We (at Sun) consider to change this in the future Sun C++ release. Phew, that's all :) -- Simon Atanasyan

On Thu, 18 Sep 2008 16:23:20 +0200, Vladimir Prus <vladimir@codesourcery.com> wrote:
Boris wrote:
On Thu, 18 Sep 2008 09:50:39 +0200, Simon Atanasyan <atanasyan@gmail.com> wrote:
[...]The -library=stlport4 command line option are missed. Boost library should be built and used with this option.
Thanks, I tried 'bjam --toolset=sun stdlib=sun-stlport -q' which worked! What I don't understand though is why Boost hasn't been configured accordingly for Solaris to use STLport automatically?
Should it? I think that sun experts (Hi Simon!) told that it changes ABI, and old code does not use stlport, so having sun-stlport as default stdlib is not good idea. Of course, I probably totally misremember things; we can probably make stdlib=sun-stlport the default, at least when building C++ Boost itself.
I vote yes. :) I managed to build Boost 1.36.0 on Solaris with both g++ 3.4.6 and Sun C++ 5.9 but only after doing this: => For g++ I had to put this line into ~/user-config.jam: using gcc : : : <linker-type>sun ; Without this line you'll get linker errors as g++ seems to use the wrong linker. Building with g++ also only works with cxxflags=-mcpu=ultrasparc: ./bjam --toolset=gcc cxxflags=-mcpu=ultrasparc But this must only be set of course if Solaris is used on a Sparc machine. => For Sun C++ I had to invoke bjam with: ./bjam --toolset=sun stdlib=sun-stlport Here stdlib=sun-stlport should be the default. I think that's all. I hope I didn't confuse anything as I played around with so many command line options. Boris
participants (4)
-
Boris
-
Christopher Lux
-
Simon Atanasyan
-
Vladimir Prus