GCC include files conundrum.
Craig Rodrigues
rodrigc at crodrigues.org
Sun Mar 14 17:38:19 PST 2004
On Sun, Mar 14, 2004 at 07:55:18PM -0500, David Gilbert wrote:
> I attempted to argue that audio/tclmidi wasn't broken... and the ports
> maintainer fired back with
>
> http://bento.freebsd.org/errorlogs/i386-5-latest/tclmidi-3.1.log
>
> Now... I started investigating this and found that this was all due to
> some differences in C++ over the years.
> So what's the solution?
Pick up a contemporary C++ book and learn about Standard C++ (which became
an ISO standard in 1998). strstream is deprecated in Appendix D
of the standard. I recommend a book such as "The C++ Programming
Language, 3rd ed." by Bjarne Stroustrup.
gcc 3.x supports Standard C++ more aggressively than earlier
gcc versions, which can be painful. The GCC developers (more specifically
libstdc++ developers) are more interested in supporting Standard
C++, and are not too interested in maintaining backwards compatibility
with deprecated headers such as strstream.h. This is a bit of a problem
for software that depends on these older libraries.
You have a few options:
(1) Learn enough C++ so that you can apply the necessary patches
to fix audio/tclmidi so that it compiles with
Standard C++ headers (such as <sstream>).
(2) gcc 3.3 has /usr/include/c++/3.3/backward/strstream, so you may
want to try #include <backward/sstream> an see if that works,
but chances are if it doesn't work, you will be out of luck,
since it is a deprecated header that the GCC developers
are not too interested in supporting.
(3) In the Makefile for the audio/tclmidi port, mark it as broken
on FreeBSD 5.x:
.if ${OSVERSION} > 500000
BROKEN= "Does not build on 5.x"
.endif
--
Craig Rodrigues
http://crodrigues.org
rodrigc at crodrigues.org
More information about the freebsd-hackers
mailing list