tech-pkg archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: pkgsrc frozen for 2017Q2
On 06/29/17 09:23, Greg Troxel wrote:
It's not really that googletest is broken. It's that the combination of
C++ not being a single stable language
C++ not having a stable ABI
people using old compilers
how the mk/ framework is
people not setting a global GCC_REQD
is broken. So it's not clear that googletest should be "fixed".
I wasn't implying that the googletest package is the problem. By
"broken", I simply mean
that it doesn't build. I'm for the most elegant solution to the problem.
At some point pkgsrc got GCC_REQD, and my memory is that it was about
avoiding versions with bugs that tripped on particular packages. Then
c++11 happened, and packages started using it before non-c++11 compilers
faded away. This hasn't yet been dealt with in a fully organized
manner.
I think it's wrong to have each package that uses c++11 also have to
encode GCC_REQD, from an abstraction viewpoint.
I fully agree with this and would rather see a systemic solution than
one that
modifies a lot of packages.
There is also the point that for soundness, all c++ programs on a
machine must be compiled with the same compiler. (Actually, each
dependency tree must be compiled with the same compiler, but I don't
think there are any non-trivial situations where the more complicated
rule is a net win. Do you believe that this notion is incorrect? I ask
because you are pursuing a path (adding GCC_REQD to individual programs)
that leads to this problem.
I'm not pursuing that path, in fact I'm hoping to avoid it.
In your case, as I understand it, you are wanting to use code that is in
a new language on an operating system that intentionally has old
software. This mixing of old and new, in my view, basically does not
work. But, with pkgsrc, you can use a new compiler for pkgsrc, and have
a new world of pkgsrc and the old world of base, more or less
disconnected from each other (the multi-tree approach above).
I think we should be removing GCC_REQD from packages when the only
reason is to force a compiler with c++11 or c++14. GCC_REQD would then
become unusual.
Have you tried putting GCC_REQD in your mk.conf, and rebuilding
everything? What's wrong with that approach for you? That's a
serious question, because one of the paths forward is to essentially put
that in the platform file for systems with old compilers. (Here, I'm
defining old by "fails to build a non-trivial number of packages that
need c++11".) The other path is to add in GCC_REQD=4.8 (or 6) for all
packages with c++ (not c++11, but any c++, to avoid ABI mixing). I
think it's a serious question whether people are better off:
1) using old system gcc for C and newish pkgsrc gcc for C++
2) using newish pkgsrc gcc for everything
In favor of 1 is that if you don't want to build C++, you are spared
building a compiler. In favor of 2 is that it probably avoids a bunch
of fairly minor, hard to track down problems that we don't know about.
In asking you if you've tried GCC_REQD=4.8 in mk.conf, I'm basically
asking you to be a test case for option 2, and if that hurts. Given
that you want to build C++ stuff, you have to build the compiler anyway,
so it seems like it wouldn't be a problem.
I would prefer to use a newer GCC for everything, if it's not too
painful. There are no HPC sites that can avoid installing newer
compilers and many would prefer to use newer compilers for C and Fortran
as well. As long as the GCC packages work on CentOS, we would prefer to
use them.
Thanks,
JB
--
Earth is a beta site.
Home |
Main Index |
Thread Index |
Old Index