Opened 9 years ago

Closed 9 years ago

#48026 closed defect (invalid)

boost @ 1.58.0 filesystem.exists() function fails with g++ 5.1.0

Reported by: chris.jonesey@… Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version: 2.3.3
Keywords: Cc:
Port: boost

Description (last modified by larryv (Lawrence Velázquez))

In the attached test case the filesystem.exists() function always returns false with g++ and works correctly with clang++.

% port -v
MacPorts 2.3.3

% clang++ --version
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.1.0
Thread model: posix


% g++ --version
g++ (MacPorts gcc5 5.1.0_0) 5.1.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


% ./test_filesystem.clang.macport_boost ./test_filesystem.clang.macport_boost
The file './test_filesystem.clang.macport_boost' exists!

% ./test_filesystem.gcc.macport_boost ./test_filesystem.gcc.macport_boost
The file './test_filesystem.gcc.macport_boost' DOES NOT exist.

Attachments (1)

test_filesystem.cc (710 bytes) - added by chris.jonesey@… 9 years ago.

Download all attachments as: .zip

Change History (4)

Changed 9 years ago by chris.jonesey@…

Attachment: test_filesystem.cc added

comment:1 Changed 9 years ago by chris.jonesey@…

Cc: chris.jonesey@… added

Cc Me!

comment:2 Changed 9 years ago by larryv (Lawrence Velázquez)

Cc: chris.jonesey@… removed
Description: modified (diff)
Owner: changed from macports-tickets@… to ryandesign@…

comment:3 Changed 9 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: invalid
Status: newclosed

You cannot use more than one C++ library and share data between them.

You are using boost from MacPorts which (in OS X 10.9 and later) uses libc++, and are compiling your own program using a MacPorts build of FSF g++ which uses libstdc++, and are linking it with boost, and trying to share data with it.

You must compile your program using the same compiler used to compile boost: that is, on recent OS X, clang++.

An alternative is to compile your own version of boost, outside of MacPorts, using (MacPorts or other build of FSF) g++; then you must also compile your program linked with boost with (MacPorts or other build of FSF) g++.

Note: See TracTickets for help on using tickets.