Skip to content
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

coreclr fails to compile on Musl #1882

Closed
PureTryOut opened this issue Nov 13, 2020 · 6 comments
Closed

coreclr fails to compile on Musl #1882

PureTryOut opened this issue Nov 13, 2020 · 6 comments

Comments

@PureTryOut
Copy link

Splitting off from #1868, please read there for more context.

On an Alpine Linux edge system using Musl, dotnet currently fails to compile coreclr.

  In file included from /home/bart/Documents/Git/alpine/aports/testing/dotnet/src/source-build-b4d00c370e0a592c26040c74349273c0389509d4/artifacts/src/coreclr.d989459717cbce34262060c4b8b949185033e379/src/pal/src/misc/tracepointprovider.cpp:19:
  In file included from /home/bart/Documents/Git/alpine/aports/testing/dotnet/src/source-build-b4d00c370e0a592c26040c74349273c0389509d4/artifacts/src/coreclr.d989459717cbce34262060c4b8b949185033e379/src/pal/src/include/pal/palinternal.h:620:
  In file included from /usr/bin/../lib/gcc/x86_64-alpine-linux-musl/10.2.1/../../../../include/c++/10.2.1/stdlib.h:30:
  /usr/include/stdlib.h:23:11: error: 'atoll' is missing exception specification 'throw()'
  long long atoll (const char *);
            ^
  /home/bart/Documents/Git/alpine/aports/testing/dotnet/src/source-build-b4d00c370e0a592c26040c74349273c0389509d4/artifacts/src/coreclr.d989459717cbce34262060c4b8b949185033e379/src/pal/inc/pal.h:4224:33: note: previous declaration is here
  PALIMPORT long long int __cdecl atoll(const char *) THROW_DECL;
                                  ^
  1 error generated.
  make[2]: *** [src/pal/src/CMakeFiles/tracepointprovider.dir/build.make:82: src/pal/src/CMakeFiles/tracepointprovider.dir/misc/tracepointprovider.cpp.o] Error 1
  make[1]: *** [CMakeFiles/Makefile2:2362: src/pal/src/CMakeFiles/tracepointprovider.dir/all] Error 2
  make: *** [Makefile:149: all] Error 2
  Failed to build CoreCLR component.
  
  'coreclr-portable' failed during build.
  See '/home/bart/Documents/Git/alpine/aports/testing/dotnet/src/source-build-b4d00c370e0a592c26040c74349273c0389509d4/artifacts/logs/coreclr-portable.log' for more information.
  'coreclr' failed during build.
  'corefx' failed during build.
  'msbuild' failed during build.
  'known-good' failed during build.

Build FAILED.

This is using Clang 10.0.1 and Musl 1.2.2.

@dagood
Copy link
Member

dagood commented Nov 19, 2020

Triage notes: @PureTryOut are you able to build the dotnet/coreclr (or dotnet/runtime) repo without source-build involved? We think it would be best to try to repro this with a standalone clone and report the problem as a dotnet/runtime issue because they're most familiar with this build.

@crummel, you mentioned remembering this being because of a specific Clang version difference or mismatch, can you try to find that and post here? @dseefeld mentioned we build with Clang 9 in CI currently.

@omajid
Copy link
Member

omajid commented Nov 19, 2020

I got pretty much the exact opposite error a while back which I fixed via dotnet/coreclr#28045:

 In file included from /home/omajid/devel/dotnet/coreclr/src/ToolBox/SOS/Strike/strike.cpp:116:
 In file included from /home/omajid/devel/dotnet/coreclr/src/vm/hillclimbing.h:19:
 In file included from /home/omajid/devel/dotnet/coreclr/src/inc/complex.h:16:
 In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/10/../../../../include/c++/10/math.h:36:
 In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/10/../../../../include/c++/10/cmath:45:
 In file included from /usr/include/math.h:290:
 /usr/include/bits/mathcalls.h:53:13: error: exception specification in declaration does not match previous declaration
 __MATHCALL (acos,, (_Mdouble_ __x));
             ^
 /home/omajid/devel/dotnet/coreclr/src/pal/inc/pal.h:4395:26: note: previous declaration is here
 PALIMPORT double __cdecl acos(double);
                          ^

It looks like glibc has throw in the function declaration but musl doesn't?

Agreed that this should be sorted out in dotnet/runtime repo first.

@PureTryOut
Copy link
Author

are you able to build the dotnet/coreclr (or dotnet/runtime) repo without source-build involved?

I seem to not be able to no, I've reported an issue there. dotnet/runtime#44988

@PureTryOut
Copy link
Author

So that particular issue has now been fixed. Now I wonder how I can make source-build use that particular fix. I'd be fine with building git master of dotnet/runtime for now, but I'm not sure how to do that through source-build 🤔

@omajid
Copy link
Member

omajid commented Nov 30, 2020

Now I wonder how I can make source-build use that particular fix.

You can git format-patch -1 <sha of commit> in the runtime repo and put the generated patch in patches/runtime/. source-build applies all patches in patches/$REPO/ when building $REPO.

@PureTryOut
Copy link
Author

Ah cool, that is useful. Sadly the patch doesn't apply on the release/3.1 branch (as I expected), so I'm building master for now.

However, Darc seems to segfault now.

[00:33:41.18] Running Darc command: '/home/bart/Documents/Git/source-build/.dotnet/dotnet /home/bart/Documents/Git/source-build/.dotnet/tools/.store/microsoft.dotnet.darc/1.1.0-beta.19568.2/microsoft.dotnet.darc/1.1.0-beta.19568.2/tools/netcoreapp3.0/any/Microsoft.DotNet.Darc.dll clone  --git-dir-folder /home/bart/Documents/Git/source-build/.git/modules/src/ --include-toolset --ignore-repos ";https://dev.azure.com/dnceng/internal/_git/dotnet-optimization;https://dev.azure.com/devdiv/DevDiv/_git/DotNet-Trusted;https://devdiv.visualstudio.com/DevDiv/_git/DotNet-Trusted;https://dnceng@dev.azure.com/dnceng/internal/_git/dotnet-optimization;https://dev.azure.com/dnceng/internal/_git/dotnet-core-setup;https://github.com/dotnet/source-build-reference-packages" --debug --azdev-pat bogus --github-pat bogus --depth 0' from working dir /home/bart/Documents/Git/source-build/
  info: Microsoft.DotNet.Darc.Operations.Operation[0]
        Getting a collection of dependencies from 'eng/Version.Details.xml' in repo '/home/bart/Documents/Git/source-build'...
  info: Microsoft.DotNet.Darc.Operations.Operation[0]
        Reading 'eng/Version.Details.xml' in repo '/home/bart/Documents/Git/source-build' and branch ''...
  info: Microsoft.DotNet.Darc.Operations.Operation[0]
        Reading 'eng/Version.Details.xml' from repo '/home/bart/Documents/Git/source-build' and branch '' succeeded!
  dbug: Microsoft.DotNet.Darc.Operations.Operation[0]
        Skipping ignored repo https://github.com/dotnet/source-build-reference-packages (at f041a764460c12af7a3e5ff539a1c411a5262fd3)
  info: Microsoft.DotNet.Darc.Operations.Operation[0]
        Found 28 local dependencies.  Starting deep clone...
  dbug: Microsoft.DotNet.Darc.Operations.Operation[0]
        Starting master copy for https://github.com/dotnet/arcade in /home/bart/Documents/Git/source-build/artifacts/src/arcade with .gitdir /home/bart/Documents/Git/source-build/.git/modules/src/arcade.git
  dbug: Microsoft.DotNet.Darc.Operations.Operation[0]
        Master .gitdir /home/bart/Documents/Git/source-build/.git/modules/src/arcade.git does not exist
  info: Microsoft.DotNet.Darc.Operations.Operation[0]
        Cloning master copy of https://github.com/dotnet/arcade into /home/bart/Documents/Git/source-build/artifacts/src/arcade with .gitdir path /home/bart/Documents/Git/source-build/.git/modules/src/arcade.git
  dbug: Microsoft.DotNet.Darc.Operations.Operation[0]
        Cloning https://github.com/dotnet/arcade to /home/bart/Documents/Git/source-build/artifacts/src/arcade
  Segmentation fault
/home/bart/Documents/Git/source-build/tools-local/init-build.proj(119,5): error MSB3073: The command "/home/bart/Documents/Git/source-build/.dotnet/dotnet /home/bart/Documents/Git/source-build/.dotnet/tools/.store/microsoft.dotnet.darc/1.1.0-beta.19568.2/microsoft.dotnet.darc/1.1.0-beta.19568.2/tools/netcoreapp3.0/any/Microsoft.DotNet.Darc.dll clone  --git-dir-folder /home/bart/Documents/Git/source-build/.git/modules/src/ --include-toolset --ignore-repos ";https://dev.azure.com/dnceng/internal/_git/dotnet-optimization;https://dev.azure.com/devdiv/DevDiv/_git/DotNet-Trusted;https://devdiv.visualstudio.com/DevDiv/_git/DotNet-Trusted;https://dnceng@dev.azure.com/dnceng/internal/_git/dotnet-optimization;https://dev.azure.com/dnceng/internal/_git/dotnet-core-setup;https://github.com/dotnet/source-build-reference-packages" --debug --azdev-pat bogus --github-pat bogus --depth 0 --repos-folder /home/bart/Documents/Git/source-build/artifacts/src/" exited with code 139.

Build FAILED.

/home/bart/Documents/Git/source-build/packages/restored/microsoft.dotnet.arcade.sdk/5.0.0-beta.20426.4/tools/ProjectLayout.props(8,3): warning MSB4011: "/home/bart/Documents/Git/source-build/packages/restored/microsoft.dotnet.arcade.sdk/5.0.0-beta.20426.4/tools/RepoLayout.props" cannot be imported again. It was already imported at "/home/bart/Documents/Git/source-build/packages/restored/microsoft.dotnet.arcade.sdk/5.0.0-beta.20426.4/tools/Build.proj (49,3)". This is most likely a build authoring error. This subsequent import will be ignored. 
/home/bart/Documents/Git/source-build/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/DownloadFileSB.cs(397,35): warning CS0108: 'DownloadFileSB.CustomHttpRequestException.StatusCode' hides inherited member 'HttpRequestException.StatusCode'. Use the new keyword if hiding was intended. [/home/bart/Documents/Git/source-build/tools-local/tasks/Microsoft.DotNet.SourceBuild.Tasks.XPlat/Microsoft.DotNet.SourceBuild.Tasks.XPlat.csproj]
/home/bart/Documents/Git/source-build/tools-local/init-build.proj(119,5): error MSB3073: The command "/home/bart/Documents/Git/source-build/.dotnet/dotnet /home/bart/Documents/Git/source-build/.dotnet/tools/.store/microsoft.dotnet.darc/1.1.0-beta.19568.2/microsoft.dotnet.darc/1.1.0-beta.19568.2/tools/netcoreapp3.0/any/Microsoft.DotNet.Darc.dll clone  --git-dir-folder /home/bart/Documents/Git/source-build/.git/modules/src/ --include-toolset --ignore-repos ";https://dev.azure.com/dnceng/internal/_git/dotnet-optimization;https://dev.azure.com/devdiv/DevDiv/_git/DotNet-Trusted;https://devdiv.visualstudio.com/DevDiv/_git/DotNet-Trusted;https://dnceng@dev.azure.com/dnceng/internal/_git/dotnet-optimization;https://dev.azure.com/dnceng/internal/_git/dotnet-core-setup;https://github.com/dotnet/source-build-reference-packages" --debug --azdev-pat bogus --github-pat bogus --depth 0 --repos-folder /home/bart/Documents/Git/source-build/artifacts/src/" exited with code 139.
    2 Warning(s)
    1 Error(s)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants