[MacPorts] #36719: gcc47: static c++ standard library (libstdc++.a) not built

MacPorts noreply at macports.org
Thu Oct 25 10:04:31 PDT 2012


#36719: gcc47: static c++ standard library (libstdc++.a) not built
---------------------+------------------------
  Reporter:  bach@…  |      Owner:  jeremyhu@…
      Type:  defect  |     Status:  assigned
  Priority:  Normal  |  Milestone:
 Component:  ports   |    Version:  2.1.2
Resolution:          |   Keywords:
      Port:  gcc47   |
---------------------+------------------------

Comment (by jeremyhu@…):

 Replying to [comment:4 bach@…]:
 > Replying to [comment:3 jeremyhu@…]:
 > > What makes you think you need this?
 >
 > I'm the author of a scientific command line software
 (http://sourceforge.net/projects/mira-assembler/) which is a royal pain to
 get all needed components for (because some are pretty recent and not
 installed everywhere), be it for compile time or for for run-time: gcc >=
 4.6, BOOST >= 1.49, zlib >=1.27, google perftools and a couple of others.
 >
 > Users are often biologists with minimal computer skills, often without
 installation / root rights on the corresponding machines which in turn
 might be old installations >=5 years lacking needed libraries. Being able
 to provide people with a single binary they can drop even into their home
 directory without messing with the system (or environment variables like
 DYLD_*, LD_*) turned out over the years to be the simplest solution with
 the least hurdles for them and the least amount of hand holding support by
 me.

 Yeah, I can understand that, but it should be just as straight forward to
 give them a bundle.

 > Main development and run environments of the software is general Unix
 (Linux main, but also Solaris) and the build system is autotools +
 libtools. If there is a **simple** way on Mac to provide the software I am
 willing to try and adapt the build environment, but prime directive is
 that it needs to integrate with autotools/libtools and be easy for the
 user (as described above).

 I don't see why that would be a problem here.

 > [[br]]
 > > Yeah, I thought about providing it, but that will lead to more bugs
 than it fixes.
 >
 > What kind of bugs would these be? I am aware of some ABI hickups in the
 4.7 line (slist most notably) but would be interested to learn what other
 problems could arise.
 >
 > Would switching back to gcc 4.6 help, is a static libstdc++ present
 there?

 The main reason we did this was to unify the libstdc++ offered out of
 MacPorts to avoid conflicts when users mixed binaries built with different
 compilers.  Previously, if you built an executable with code that was from
 gcc46 and gcc45, there would be issues as objects crossed between the C++
 runtimes of those two compilers.  Now, there is one C++ runtime shared by
 all the gcc4X compilers.

 It could be problematic if a library statically linked against libstdc++
 and the executable using that library linked against a
 different/incompatible libstdc++.

 As you're doing this just for your end executable, that should be safe,
 but I worry about it being misused elsewhere.

 You can "fix" this issue for yourself by editing the gcc47 Portfile to not
 delete libstdc++.a in its post-destroot phase.  ie change this:
 {{{
 eval file delete [glob ${destroot}${prefix}/lib/*{a,py}]
 }}}
 to this:
 {{{
 eval file delete [glob ${destroot}${prefix}/lib/*py]
 }}}

-- 
Ticket URL: <https://trac.macports.org/ticket/36719#comment:5>
MacPorts <http://www.macports.org/>
Ports system for Mac OS


More information about the macports-tickets mailing list