tech-pkg archive

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

Re: bootstrapping a C++ compiler



Edgar Fuß <ef%math.uni-bonn.de@localhost> writes:
> 'm starting a subthread for GCC bootstrapping issues.
>
> EF> -- We need to assure gcc-inplace-math (and -nls) when building GCC as a 
> EF> build dependency, either by making that the default or temporarily 
> EF> overriding the options.
> GT> That is the perhaps controversial point.
> What's controversial about this? Without inplace-math, we install packages 
> providing libraries compiled with a lower GCC version, which renders them 
> unusuable, no?
> Or do you think the nls part is controversial?
I meant that I didn't understand the issues yet and suspected it was
complicated.
>> So do you think we need two versions, the "real" gcc6, and the
>> "bootstrap" gcc6? Two packages from same source? Something else?
> I think the easiest solution would be to make lang/gccX use 
> PKG_OPTIONS.gccX-bootstrap instead of PKG_OPTIONS.gccX if it's being 
> bootstrapped.
This is the crux of what I was worried about.
Right now we have a package, and when you build it you get a certain
behavior. If someone has simply built gcc6, they'll get one thing, but
if the package has been built as a dependency to compile C++, it will be
something else. So I think a package of a given name has to be built
the same way regardless of being used as a build dependency or not.
If we want to have "regular gcc6" and "bootstrap gcc6" with different
names, that ccould be ok, but the question is what people expect from
regular and why.
So maybe you can explain (because at least I am not familiar with the
details):
 gcc-inplace-math is a scheme to make a gcc package have a lot fewer
 dependencies, and in particular it installs fewer packages built with
 the base compiler. That seems good for bootstrap use, even though it
 also means that the gcc package needs rebuilding if those packages
 have fixes (which is bad for non-bootstrap use, sort of). So if this
 is default on, maybe that's ok, and we need to error out if
 bootstrapping and it's off. Is that right?
 nls is about translated messages, which seems useful for users even in
 the bootstrapping case. So disabling that basically means no version
 of gcc built by pkgsrc will have localized messages. I imagine some
 fraction of the other-than en_US speakers won't like that, and
 reasonably so. Do you have a notion of how to meet the no-nls-build
 goal and the needs of people that use the compiler at the same time?
 Some idea other than tow copies?
> The tricky part (it occurs to me) is what "it's being bootstrapped" means.
> I think the answer is "it's the Single Version" (or, regarding C, "one of 
> the two Single Verssions") AND "it's not installed as a package". So, if 
> you like lang/gcc6 (supposing that's one of your Single Versions) with nls, 
> you can build lang/gcc6 with that set of options, which will first build 
> your Single Version with the bootstrap options and then use that to copile 
> the final version.
Which means we split gcc6 into multiple pieces and
 build first part of gcc6
 build other stuff with that gcc6-first
 build rest of gcc6?
that sounds complicated, and not clearly a better plan than buildings a
gcc6-bootstrap that is in /usr/pkg/bootstrap/bin instead of
/usr/pkg/bin.

Attachment: signature.asc
Description: PGP signature



Home | Main Index | Thread Index | Old Index

AltStyle によって変換されたページ (->オリジナル) /