tech-pkg archive

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

Re: pkgsrc gcc discussion #3874



Hi jason,

to summarize, we have 2 issues we would like to resolve:

Improve the situation for people who are using RHEL6 and similar, and
start out with a toolchain too old.

In an ideal world, it would be nice if we could provide:
At bootstrap, detect that the toolchain is too old (binutils, gcc)
  -> If so, and unless disabled, attempt to build pkgsrc GCC and binutils
     Provide a message saying this can be disabled.
     Provide the ability to disable this on a per-OS basis
     -> on success, use this exclusively.
     -> on failure, continue normally, provide a warning

I'm assuming GCC 5 or 6 is a good choice now, but we should probably
decide when it is OK to change this number eventually.

Proposed cutoff:
- GCC <4.8

That would be cool but I haven't looked at how we do bootstrap or even
tried to use pkgsrc binutils.

Additional cool points: if we can provide a binary bootstrap kit doing
the above, for platforms where obtaining a toolchain is non-trivial like
ChromeOS.


-----------------------------------------------------------------------
And, completely unrelated to the above, the logic we have for GCC_REQD
is inappropriate for anything but leaf packages. We must continually use
a newer GCC for anything down the dependency tree, or risk loading the
wrong libstdc++ and fail at runtime.

I've provided a diff that ensures the newest GCC is used whenever we
link a library that uses a newest GCC, I want to come up with nicer
names for it and then modify the entire tree to match it.

I've stated that the previous diff I provided was too magical, which is
because it didn't behave in a reproducible way*. The new diff does, and
is predictable.

Additionally, now with correct GCC_REQD handling, we can make the
connection:
C++11 -> GCC >= 4.8, and then not need to explicitly specify it a second
time unless a newer version is necessary.



* the previous suggestion was 'pick the newest compiler that is
  installed', so when you installed a newer one, you will suddenly see
  different problems to before.


Home | Main Index | Thread Index | Old Index