Skip to content

Make building runtime easier on RHEL #123010

Description

@vcsjones

If you follow our workflow instructions on RedHat EL 9 or 10, the build is not going to work. It will fail with something like:

/home/vcsjones/.nuget/packages/microsoft.net.compilers.toolset/5.3.0-1.25619.109/tasks/netcore/Microsoft.CSharp.Core.targets(84,5): \ 
error : Unhandled exception. Interop+Crypto+OpenSslCryptographicException: error:03000098:digital envelope routines::invalid digest [/home/vcsjones/Projects/runtime/src/libraries/System.Private.CoreLib/gen/System.Private.CoreLib.Generators.csproj]

This is because RedHat, and some similar flavors like CentOS Stream disable RSA+SHA-1 digital signature algorithms in their OpenSSL. This algorithm is required for Strong Name signing assemblies.

This can be worked around by passing in FullAssemblySigningSupported=false as a build property, like so:

./build.sh -rc release -s clr+libs /p:FullAssemblySigningSupported=false

But this has a number of drawbacks.

  1. This is not documented anywhere in this repository.
  2. It needs to be supplied to every-single invocation of dotnet build. Practically that means adding /p:FullAssemblySigningSupported=false everywhere.

I think we can improve this, with some possible options being:

  1. At least document FullAssemblySigningSupported is required on certain Linux distributions.
  2. Automatically set FullAssemblySigningSupported=false on Linux distributions that require it for local dev environments. I believe we do that for source builds.

Regardless, it seems unfortunate that the runtime build fails in an inscrutable way on RedHat / CentOS. Fedora might be affected as well.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

Relationships

None yet

Development

No branches or pull requests

Issue actions