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