conda-forge / compilers-feedstock

A conda-smithy repository for compilers.
BSD 3-Clause "New" or "Revised" License
9 stars 17 forks source link

Conda forge packages built against libgcc-ng >=12 and libstdcxx-ng >=12 #48

Closed Jaynor closed 2 years ago

Jaynor commented 2 years ago

Solution to issue cannot be found in the documentation.

Issue

It looks like packages that were built after mid-May of 2022 depend on libgcc-ng >=12 and libstdcxx-ng >=12 (For example numpy==1.22.4) However, the latest gcc_linux-64 and gxx_linux-64 on Conda-forge is 11.2.0. Now, my team is facing issues/conflicts with the GCC version and other new packages. Do you guys have plans to release GCC>=12 anytime soon?

Installed packages

N/A

Environment info

N/A
isuruf commented 2 years ago

Can you give a reproducer for issues/conflicts?

isuruf commented 2 years ago

It should be possible to install gcc_linux-64=11 alongside libgcc-ng=12 and libstdcxx-ng. So it's puzzling to me how there can be conflicts.

I opened https://github.com/conda-forge/ctng-compiler-activation-feedstock/pull/79 to update gcc_linux-64 to 12.1.0

Jaynor commented 2 years ago

The issue is not obvious on the surface, but it has an underline issue. I can create an environment with numpy=1.22.4(along with libgcc-ng >=12 and libstdcxx-ng >=12)with gcc_linux-64=11.2.0. However, library and compiler mismatch can create issues with our C++ native packages with other Python packages.

isuruf commented 2 years ago

Ok. I'll be interested to know what the library and compiler mismatch are and if we can mitigate that. I believe Ubuntu/debian does the same with gcc=11 being the default and libstdcxx=12.

Hopefully the above PR can fix the issue for you.

mattgodbolt commented 2 years ago

... I believe Ubuntu/debian does the same with gcc=11 being the default and libstdcxx=12.

Hi! Maybe's it's a bit of superstition on my part, but having debugged enough cross-library woes I'm super sensitive to any kind of system library mismatch. I know C++ is famous for never wanting to break ABI, but pragmatically I've had issues before (notably; things like one .so throwing an exception caught in another...). Maybe it's ok but we've always tried to have a consistent set of libraries and compilers. This post post seems to say it's ok, so perhaps this is all a storm in a teacup.

That said: if we can have a gcc-12 package that activates and lets us build our own code easily against gcc 12, then even better :)

isuruf commented 2 years ago

Updated in https://github.com/conda-forge/ctng-compiler-activation-feedstock/pull/79. gcc_linux-64=12 should be available in around 2 hours.