-
-
Notifications
You must be signed in to change notification settings - Fork 50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP: Switch to devtoolset-4 #22
Conversation
OK with me as an interim solution. |
Does devtoolset-4 avoid issues w/ the gcc 5 ABI (for example, a |
@wesm My understanding is that behavior can be controlled by a compile-time flag, details at https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html |
Sure, but what is the default? On Mon, Jul 18, 2016, 11:55 Irwin Zaid notifications@github.com wrote:
|
@msarahan Default is the new ABI, old ABI is available via |
That's about the compiler generally not the devtoolset. I would figure since they are trying to allow things to just work on CentOS 6, they would configure the compiler to use the old ABI. Though I can't find a ref ATM. If it is forcing the ABI to the new version, we may have found the controversial point with this interim solution. How do you feel about |
@jakirkham And, yeah, I can't find the old one being the default either. |
See this PR ( #23 ) for the |
If this breaks compatibility with older packages it will probably requires that conda-forge recompile a number of packages. This can be done but I think a choice like this should be discussed during a conda-forge meeting. Additional a few tests cases could be examined how the ABI incompatibility would exhibit itself to users. |
👍 Hence PR ( #23 ). If we provide that flag This all being said, we will need to have this discussion eventually because we are discussing adding a
My understanding is they made some changes to
Agreed. |
Small follow on to this, it appears that the docs for the devtoolset (already linked above) say it uses the old ABI for the time being. "libstdc++ now has full support for the C++11 standard with the exception of the new implementations of the std::string and std::list classes because the Red Hat Developer Toolset 4.1 version of GCC uses the old ABI." The issues they are discussing with c++11 and c++14 are about how they will likely change to the newer ABI in a future release. Because of the gcc ABI change, they can't guarantee the binaries built now will be compatible with binaries built with a later major release of devtoolset for C++ 11 and 14. That aside, gcc 4.9 should be good enough for libdynd for the time being, so that's fine too. |
What section was it? I seem to be directed to the legal notice. Though I'm on my phone so that could be part of the problem. |
The part warning about future ABI incompatibilities is "C++ ABI." The clarification about which ABI is used by default is in the section "Changes Since Red Hat Developer Toolset 3.1." |
One potential concern with devtoolset 4 is that it's gcc 5.3 whereas Continuum's libgcc package only comes from gcc 5.2. It seems like it would be an easy fix to the libgcc package there though. |
I'd like to revisit this. Given that the docs: https://access.redhat.com/documentation/en-US/Red_Hat_Developer_Toolset/4/html-single/User_Guide/index.html#sect-GCC-CPP-Compatibility state that the old ABI is used with devtoolset-4. I'm pretty certain that devtoolset-4 would be completely compatible. libgcc should not be an issue because the devtoolset does its squirrelly partial static linking. I recommend that this PR be merged, and that #23 be closed. |
PS, the section of the docs that convinced me:
|
9e1cf30
to
ddbdee3
Compare
That doesn't say anything about C++11 though. Presumably things built with C++11 would be broken by the ABI change. Though I don't know as I'm still unclear. |
@ncoghlan, we are a bit confused about the default C++ ABI used by devtoolset-4 and whether it is using the C++11 ABI breaks made in GCC 5.x by default or not. We would really appreciate if you could advise us as to how to proceed. Would using devtoolset-3 be a safer option? Can we use devtoolset-4 safely somehow? Note we are using devtoolset-2 currently. Thanks. |
I read the devtoolset-4 docs the same way @msarahan does: they use You may run into trouble with folks wanting to use The issue there is that |
conda-forge is using a CentOS 6 base for its Docker container so any wheels which were built would likely not meet the I would like to see the suggestion to move to devtoolset-4 submitted as a conda-forge enhancement proposal so that the technical merits and challenges can be examined. |
OK, if you're already using a CentOS 6 base, then I don't foresee any new problems arising from switching to devtoolset-4 as your build chain. For the wheel side of things (assuming you eventually decide to go that way), even when |
Where should we note our interest in a CentOS 6 based |
To be honest, I would almost rather wait and see how |
Closing this out as we will be moving to Anaconda's new compilers after moving to |
This PR proposes that we switch to devtoolset-4. It is needed to package
libdynd
. The devtoolset provides C++14 support andgcc
5.2.1. Just like devtoolset-2, we will still be able to ship to any CentOS 6 machine without needing to include standard system libraries. There is no change to our GLIBC compatibility. In the long run, it sounds like we want to packagegcc
. However, this should hold us over until then.cc @msarahan @jjhelmus @pelson @ocefpaf @izaid