Re: [Boost-bugs] [Boost C++ Libraries] #7440: boost::filesystem compile error on solaris 10

Subject: Re: [Boost-bugs] [Boost C++ Libraries] #7440: boost::filesystem compile error on solaris 10
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2013-03-05 14:46:10


#7440: boost::filesystem compile error on solaris 10
------------------------------------------------+---------------------------
  Reporter: aleksandar.vukajlovic@… | Owner: bemandawes
      Type: Bugs | Status: new
 Milestone: To Be Determined | Component: filesystem
   Version: Boost 1.51.0 | Severity: Problem
Resolution: | Keywords:
------------------------------------------------+---------------------------

Comment (by Derek Beatty <dbeatty@…>):

 No, and I don't have gcc 4.7.2 easily available. I built on Solaris 10
 with Oracle Solaris Studio 12 update 3, which is Oracle's latest compiler
 for Solaris. The compilation fails because in that case `__SUNPRO_CC` is
 defined as `0x5200` but `fchmodat` is not available on Solaris 10.
 However, `fchmodat` is available on Solaris 11. We can't tell for sure
 what will be in future versions of Solaris, but my guess is that
 `fchmodat` will stay, as I doubt Oracle would break the Solaris Binary
 Guarantee.

 So, how to fix this? I think Oracle's toolchain is probably what most
 people prefer on Solaris but Boost needs to work regardless of choice of
 compiler.

 Also, it would be good to fix this correctly, or at least as correctly as
 we can with the efffort we can spare. With gcc, there's no way to test
 the version of Solaris, so only thing we can test easily, is whether
 `__sun` is defined. (The harder way would be to delve into `configure`
 magic and test there whether `fchmodat` is available, but I've never done
 something like that myself.)

 So, assuming we don't go the `configure` route, if `__SUNPRO_CC` is
 defined, then if `__SunOS_5_10` is defined we're on Solaris 10 so we don't
 have `fchmodat`, and otherwise we do have `fchmodat`. But if
 `__SUNPRO_CC` is not defined, then if `__sun` is defined we're on Solaris,
 of unknown version, so we have to assume we don't have `fchmodat`.

 Does that make sense?

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/7440#comment:4>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:12 UTC