dotnet / dotnet-buildtools-prereqs-docker

Used to maintain the Docker images hosted at the mcr.microsoft.com/dotnet-buildtools/prereqs image repository
MIT License
53 stars 99 forks source link

.NET 9.0 images with libc++ don't have all ABI header dependencies available #1036

Closed jkoritzinsky closed 1 month ago

jkoritzinsky commented 1 month ago

To avoid building more than necessary, we tried to copy the libstdc++ cxxabi.h header into the libc++ include tree to enable the one project that uses it (dotnet/runtime's createdump).

I didn't do full validation of the images after making that change, and I missed that there are some dependencies of that header that aren't available.

We can do either of the following options:

I'm inclined to do the second option.

@sbomer what's your preference here?

sbomer commented 1 month ago

I'm fine with either option. Especially if it's just one ABI function then I'm inclined to agree, I'd pick the second option. What extra headers from libstdc++ would be required? Is it all of these?

/crossrootfs/arm/usr/include/arm-linux-gnueabihf/c++/5/bits/cxxabi_tweaks.h
/crossrootfs/arm/usr/include/c++/v1/cxxabi.h
/crossrootfs/arm/usr/include/c++/5/bits/cxxabi_forced.h
/crossrootfs/arm/usr/include/c++/5/cxxabi.h
jkoritzinsky commented 1 month ago

We'd need at least bits/c++-config.h as well (that's the one that the build failed on), and whatever else is included by the include chain.

With this failure and some other failures I'm seeing in CI that I expect to be related, I'm going to revert the stdlib PR and bring it back after having done more validation.

jkoritzinsky commented 1 month ago

Fixed by #1039