pkgsrc-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

pkg/31465: boost-libs compilation takes *extremely* long [with patch]



>Number:         31465
>Category:       pkg
>Synopsis:       boost-libs compilation takes *extremely* long [with >patch]
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    pkg-manager
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Tue Oct 04 15:57:00 +0000 2005
>Originator:     Rhialto
>Release:        NetBSD 2.0.2
>Organization:
>Environment:
System: NetBSD radl.falu.nl 2.0.2 NetBSD 2.0.2 (Radls Doordringend Onjuiste 
Akkoord) #7: Tue Sep 13 16:03:56 CEST 2005 
rhialto%radl.falu.nl@localhost:/usr/src/sys/arch/amd64/compile/RADL amd64
Architecture: x86_64
Machine: amd64
>Description:
        While attempting to build devel/boost-libs with the system's gcc
        (gcc version 3.3.3 (NetBSD nb3 20040520)), I noticed that it
        took near infinite time (I lost patience after about two hours
        of cpu time of an amd64 "3000+") to compile boost/libs/wave/src/-
        instantiate_cpp_literalgrs.cpp. This file does some template
        instantiation (and if I'm reading it right, not even a very
        concrete one at that, so it might be pretty useless).

        When compiling boost-libs with gcc 3.4, I found that compilation
        finishes in finite time.

        However, apparently the C++ ABI changed in an incompatible way
        betwen these g++ versions. If I compiled devel/monotone, which
        uses boost, with the system compiler, any invocation of it
        resulted in an internal error message. With gcc 3.4 it worked
        (or at least did not produce the error message).

        However, requiring all users of boost to use gcc 3.4 seems
        unacceptable to me.

        Fortunately there is a feature-test #define which controls the
        template instantiation. With the attached patch I simply turn it
        off. This may have consequences for users of the "wave" library
        of boost, but that seems less bad than punishing all users.

        Maybe the patch can be improved by making it conditional on the
        compiler version, but I don't know if that is desirable from the
        POLA. 

>How-To-Repeat:
        as above
>Fix:

        A new patch, meta-pkgs/boost/patches/patch-ae :

$NetBSD$

Turn off this feature, since with gcc 3.3.x it takes near infinite
compilation time. 
Another option is to require gcc 3.4 (GCC_REQD += 3.4) but then
all applications linking to boost should also use gcc 3.4.
Apparently there is an incompatible ABI change between them.

--- boost/wave/wave_config.hpp.dist     2005-10-04 16:02:35.000000000 +0200
+++ boost/wave/wave_config.hpp  2005-10-04 16:23:07.000000000 +0200
@@ -259,7 +259,7 @@
 //  To use the grammar inclusion model, uncomment the following 
 //
 #if !defined(BOOST_WAVE_SEPARATE_GRAMMAR_INSTANTIATION)
-#define BOOST_WAVE_SEPARATE_GRAMMAR_INSTANTIATION 1
+#define BOOST_WAVE_SEPARATE_GRAMMAR_INSTANTIATION 0
 #endif
 
 ///////////////////////////////////////////////////////////////////////////////

-Olaf.
-- 
___ Olaf 'Rhialto' Seibert      -- You author it, and I'll reader it.
\X/ rhialto/at/xs4all.nl        -- Cetero censeo "authored" delendum esse.




Home | Main Index | Thread Index | Old Index