guix-devel
[Top][All Lists]
Advanced

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

Re: gcc: build all languages at once?


From: Sarah Morgensen
Subject: Re: gcc: build all languages at once?
Date: Fri, 10 Sep 2021 12:59:39 -0700

Hi Ludo,

Ludovic Courtès <ludo@gnu.org> writes:

> Hi Sarah,
>
> Sarah Morgensen <iskarian@mgsn.dev> skribis:
>
>> I notice that out of GCC's supported languages (ada, c, c++, d, fortran,
>> go, jit, lto, objc, obj-c++) we currently build all except ada, and five
>> of them (d, fortran, go, objc, and obj-c++) are built separately.  Most
>> of GCC's build time is spent bootstrapping and building the actual
>> compiler, rather than building the frontends, so we would save a lot of
>> build time by building them all together.
>
> Yes, but at the expense of the build time of the main GCC package and of
> its size.

Its size shouldn't change, as the other languages should be entirely in
separate packages or outputs.  The build time... yeah, that could be
harsh, especially on slower arches.

>> We could also possibly reuse the 'core' parts of GCC between language
>> frontends, saving some space.  (This is what distros seem to do.)
>
> That’d be ideal, but I’m not sure it’s feasible.  It’s feasible for FHS
> distros that “just” need to shuffle files around in various binary
> packages, but here we’d have to have several outputs or something, and
> most likely they’d refer to one another.

Good point.  I hadn't considered this.

>> What do you all think?
>
> There’s definitely room for improvement in this area, but it’s not clear
> to me what can be done within the constraints that we have, in
> particular the closure size of gcc (gcc:lib in particular) and having a
> reasonably small set of dependencies for ‘gcc-final’.  I suppose
> experimentation could tell us which approach to follow!

I did some research, and it looks like the Debian GCC build scripts do a
lot of what I am looking for.  They allow building languages and
libraries separately [0], and wow is it complicated!  It looks the gist
is liberal application of --disable-*, especially --disable-bootstrap.

Doing something like this (with each language still built separately,
but without bootstrapping again or building unnecessary libraries)
should be feasible in Guix... with a fair amount of effort.  I'm sure I
don't have the familiarity with GCC to do anything but trial-and-error,
so if anyone else wants to tackle this, have at it :)

[0] https://salsa.debian.org/toolchain-team/gcc/-/blob/master/debian/rules2

--
Sarah



reply via email to

[Prev in Thread] Current Thread [Next in Thread]