Boost logo

Boost Users :

Subject: Re: [Boost-users] [filesystem] Strange problems on Cygwin with 1.36.0
From: Boris (boriss_at_[hidden])
Date: 2008-09-17 05:53:03


On Wed, 17 Sep 2008 03:09:50 +0200, Steven Watanabe <watanabesj_at_[hidden]>
wrote:

> AMDG
>
> Boris wrote:
>> unknown location(0): fatal error in "test_find_param":
>> std::runtime_error: boost::filesystem::equivalent: No such file or
>> directory:
>> "\home\Boris\boost_1_36_0\libs\process\test\..\..\..\bin.v2\libs\process\test\gcc-3.4.4\debug\link-static\runtime-link-static\helpers.exe",
>> "\home\Boris\boost_1_36_0\libs\process\test\..\..\..\bin.v2\libs\process\test\gcc-3.4.4\debug\link-static\runtime-link-static\helpers.exe"
>> Both strings are exactly the same and contain valid Cygwin paths. Is
>> Boost.Filesystem broken on Cygwin?
>
> Do the filesystem regressions pass?

With 'bjam.exe cxxflags=-DBOOST_POSIX_API -q' I get this error:

testing.capture-output
../../../bin.v2/libs/filesystem/test/operations_test.test/gcc-3.4.4/debug/link-static/operations_test.run
/bin/sh: line 4: 1216 Aborted (core dumped)
"../../../bin.v2/libs/filesystem/test/operations_test.test/gcc-3.4.4/debug/link-static/operations_test.exe"
>
"../../../bin.v2/libs/filesystem/test/operations_test.test/gcc-3.4.4/debug/link-static/operations_test.output"
2>&1
====== BEGIN OUTPUT ======
API is POSIX
operations_test.cpp(287): test fs::initial_path<fs::path>().is_complete()
failed in function: 'int test_main(int, char**)'
operations_test.cpp(288): test fs::current_path<fs::path>().is_complete()
failed in function: 'int test_main(int, char**)'
assertion "base.is_complete() && (ph.is_complete() || !ph.has_root_name())
&& "boost::filesystem::complete() precondition not met"" failed: file
"../../../boost/filesystem/operations.hpp", line 573

initial_path<path>().string() is
   "/home/Boris/boost_1_36_0/libs/filesystem/test"

initial_path<fs::path>().file_string() is
   "\home\Boris\boost_1_36_0\libs\filesystem\test"

EXIT STATUS: 134
====== END OUTPUT ======

I'm not sure if it makes any difference that I'm using the POSIX API on
Cygwin? I built all Boost libraries with BOOST_POSIX_API defined which I
think is not the default on Cygwin?

> Shouldn't that use forward slashes, "/home/Boris/..."?

You are right, it should. :) However just like in the output of the test
case above it's Boost.Filesystem which turns the slashes around. In the
test cases which I had to modify for Cygwin I even used
cygwin_win32_to_posix_path_list() to make sure that all paths I pass to
Boost.Filesystem functions are POSIX paths (that's why a == b returns
true).

Boris


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net