aboutsummaryrefslogtreecommitdiff
path: root/doc/faq/general.html.part
blob: 729ab11a40d6e6b95dcf8409dfbba380b52595a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<!-- vim: set tw=120 ft=html sw=4 sts=4 et : -->

<h1>FAQ: General Questions</h1>

<ul>
    <li><a href="general.html#ihaveaquestion">I have an Unanswered Question</a></li>
    <li><a href="general.html#why">Why not fix Portage?</a></li>
    <li><a href="general.html#cplusplus">Why C++?</a></li>
    <li><a href="general.html#butcplusplusis">But C++ is ...</a></li>
    <li><a href="general.html#contribute">Contributing</a></li>
    <li><a href="general.html#compilers">Known compiler issues</a></li>
</ul>

<h2 id="ihaveaquestion">I have an Unanswered Question</h2>

<p>If you've checked the documentation, and your question really isn't answered,
you should ask it in one of these places:</p>

<ul>
    <li>The <code>#paludis</code> channel on <code>irc.freenode.net</code></li>
    <li>The <a href="../overview/contact.html">paludis-user mailing list</a></li>
    <li>The <a href="http://paludis.pioto.org/trac/">bug tracker</a> will probably
    also be useful</li>
</ul>

<p>You are encouraged to submit an entry for this document once your question
has been answered.</p>

<h2 id="why">Why not fix Portage?</h2>

<p>The Portage codebase is too broken to be fixed. It is a huge mess of
spaghetti procedural code with no underlying design. It relies upon weird
quirks in its own behaviour all over the place, so any change is liable to
cause huge breakage in seemingly unrelated areas. It is almost entirely
undocumented, and the internal names are perverse and often do not reflect what
the code now does.</p>

<h2 id="cplusplus">Why C++?</h2>

<p>Because we don't have the time or the manpower to write it in C.</p>

<h2 id="butcplusplusis">But C++ is ...</h2>

<p>No it isn't. Whoever told you that was either trolling or ignorant.</p>

<h2 id="contribute">Contributing</h2>

<p>Contributions to Paludis are welcome:</p>

<ul>
    <li>Patches can be submitted via <a
        href="http://paludis.pioto.org/trac/">trac</a>. It's best to
    discuss ideas before spending too much time on the code, because we don't
    have any qualms about rejecting things we think are a bad idea.</li>

    <li>We could probably use some more documentation. Again, ask first.</li>

    <li>Translations aren't currently possible. We don't have anything against
    internationalisation in principle, but as we're not gettextised it'll be a
    fair bit of effort.</li>

    <li>We don't need or desire assistance with hosting etc. at present.</li>
</ul>

<h2 id="compilers">Known compiler issues</h2>

<p>The primary supported compiler for building Paludis is GCC, version
4.1 or later; 3.4 can be used on most platforms if the Boost library
is installed.  Some versions of GCC, and some compiler flags, are
known to have problems (these are all GCC's fault):</p>

<ul>
    <li>GCC 3.4.6 on the x86_64 architecture segfaults while building
    Paludis.</li>

    <li>GCC 4.1.1 segfaults while building Paludis.</li>

    <li>GCC 4.2.2 fails with an internal error while building Paludis
    if the <code>-g</code> compiler flag is used.</li>

    <li>The <code>-O3</code> compiler flag causes linker errors when
    building some versions of Paludis (note that the Gentoo and
    paludis-overlay ebuilds remove this flag automatically).</li>

    <li>The <code>-Os</code> compiler flag has been known to cause GCC
    to miscompile Paludis at least on x86_64, and possibly others
    (note that the Gentoo and paludis-overlay ebuilds remove this flag
    automatically).</li>

    <li>The <code>-O0</code> flag (or equivalently, absense of
    any <code>-O</code>x flag) has been known to cause GCC to
    miscompile Paludis in the past at least on x86_64.</li>
</ul>

<p>Recent (version 10.1) ICC will sometimes work. 10.1.008 has correctly compiled Paludis
on x86_64, but only with most compiler optimisations disabled. With <code>-xT</code> (and
probably others) the compiler will die with an internal error or a floating point
exception; even without any non-standard optimisations turned on, ICC produces
code that is measurably faster than GCC.</p>

<p>ConceptGCC has been known to work -- Paludis makes limited use of concepts where compiler
support is available. Note that ConceptGCC isn't ABI compatible with GCC, so you'll need
all of the link dependencies built using ConceptGCC rather than GCC too.</p>