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

Not able to load native library..? #433

Closed
simendsjo opened this issue Jan 25, 2020 · 12 comments · Fixed by #521
Closed

Not able to load native library..? #433

simendsjo opened this issue Jan 25, 2020 · 12 comments · Fixed by #521

Comments

@simendsjo
Copy link

I'm trying to build Bolero, but I'm getting errors pointing at this library. I see several other issues related to loading the unmanaged library, but I'm not sure if this is the same issue.

/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018: The "Nerdbank.GitVersioning.Tasks.GetBuildVersion" task failed unexpectedly. [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018: System.TypeInitializationException: The type initializer for 'LibGit2Sharp.Core.NativeMethods' threw an exception. [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:  ---> System.PlatformNotSupportedException: manjaro-x64 [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at Nerdbank.GitVersioning.RuntimeIdMap.GetNativeLibraryDirectoryName(String runtimeIdentifier) [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at Nerdbank.GitVersioning.GitLoaderContext.GetNativeLibraryDirectory() [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at Nerdbank.GitVersioning.GitLoaderContext.LoadUnmanagedDll(String unmanagedDllName) [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at System.Runtime.Loader.AssemblyLoadContext.ResolveUnmanagedDll(String unmanagedDllName, IntPtr gchManagedAssemblyLoadContext) [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.NativeMethods.git_libgit2_init() [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.NativeMethods.InitializeNativeLibrary() [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.NativeMethods..cctor() [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    --- End of inner exception stack trace --- [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.NativeMethods.git_libgit2_opts(Int32 option, UInt32 level, String path) [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.Core.Proxy.git_libgit2_opts_set_search_path(ConfigurationLevel level, String path) [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at LibGit2Sharp.GlobalSettings.SetConfigSearchPaths(ConfigurationLevel level, String[] paths) [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at Nerdbank.GitVersioning.GitExtensions.OpenGitRepo(String pathUnderGitRepo, Boolean useDefaultConfigSearchPaths) [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at Nerdbank.GitVersioning.VersionOracle.Create(String projectDirectory, String gitRepoDirectory, ICloudBuild cloudBuild, Nullable`1 overrideBuildNumberOffset, String projectPathRelativeToGitRepoRoot) [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]
/home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/Nerdbank.GitVersioning.targets(71,5): error MSB4018:    at Nerdbank.GitVersioning.Tasks.GetBuildVersion.ExecuteInner() [/home/simendsjo/code/Bolero/src/Bolero.Build/Bolero.Build.csproj]

But as I have plenty of libraries lying around, locating a useful one shouldn't be too hard, so maybe I'm on the wrong track.

  • /usr/lib/libgit2.so
  • /home/simendsjo/.nuget/packages/libgit2sharp.nativebinaries/2.0.298/runtimes/linux-x64/native/libgit2-ef5a385.so
  • /home/simendsjo/.nuget/packages/nbgv/3.0.26/tools/netcoreapp2.1/any/runtimes/linux-x64/native/libgit2-572e4d8.so
  • /home/simendsjo/.nuget/packages/nerdbank.gitversioning/3.0.50/build/runtimes/linux-x64/native/libgit2-572e4d8.so
  • /home/simendsjo/.nuget/packages/nerdbank.gitversioning.lkg/1.6.20-beta-gfea83a8c9e/build/lib/linux/x86_64/libgit2-1196807.so
  • /home/simendsjo/.dotnet/tools/.store/nbgv/3.0.50/nbgv/3.0.50/tools/netcoreapp2.1/any/runtimes/linux-x64/native/libgit2-572e4d8.so
@AArnott
Copy link
Collaborator

AArnott commented Jan 25, 2020

Which linux distro are you on?

@simendsjo
Copy link
Author

Which linux distro are you on?

Manjaro, an Arch derivative.

@AArnott
Copy link
Collaborator

AArnott commented Jan 25, 2020

Thanks. Since libgit2 is a native dependency, which depends on libssl which seems to be different for every version of every distro, each version requires work to support. libgit2sharp folks are working on it. The solution (I hope) that's coming is that we're removing the libssl dependency completely so that it's much more distro independent.

@jsteinich
Copy link

I just ran into this on amazon linux 2.

@AArnott
Copy link
Collaborator

AArnott commented Apr 10, 2020

@jsteinich What version of NB.GV are you using?
Is .NET Core supported on "Amazon Linux 2"? I've never heard of it.

@jsteinich
Copy link

I'm using 3.0.48.
Yeah, .Net Core works just fine. It is very similar to RHEL and Cent OS.
I just switched to running in an Ubuntu container, so not a big deal for me.

@AArnott
Copy link
Collaborator

AArnott commented Apr 13, 2020

Can you upgrade from 3.0.48 to 3.1.74? We've made fixes in this area recently.

@jsteinich
Copy link

Getting the same error on 3.1.74

@AArnott
Copy link
Collaborator

AArnott commented Apr 16, 2020

I just noticed this exception in your initial report:

System.PlatformNotSupportedException: manjaro-x64

So I guess we're not even hitting a native image load failure (yet). We simply don't recognize your linux distro from our supported list.

If you want to submit a PR that adds support for it that you've tested, I'll accept that. Otherwise I think we'll have to Won't Fix this, at least till we get the libgit2sharp update that removes the distro-fragile dependency on libssl.

@cdunford
Copy link
Contributor

Basically the same issue on arch:

Unhandled exception. System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.TypeInitializationException: The type initializer for 'LibGit2Sharp.Core.NativeMethods' threw an exception.
 ---> System.PlatformNotSupportedException: arch-x64
   at Nerdbank.GitVersioning.RuntimeIdMap.GetNativeLibraryDirectoryName(String runtimeIdentifier) in D:\a\1\s\src\Nerdbank.GitVersioning.Tasks\RuntimeIdMap.cs:line 73
   at Nerdbank.GitVersioning.GitLoaderContext.GetNativeLibraryDirectory() in D:\a\1\s\src\Nerdbank.GitVersioning.Tasks\GitLoaderContext.cs:line 63
   at Nerdbank.GitVersioning.GitLoaderContext.LoadUnmanagedDll(String unmanagedDllName) in D:\a\1\s\src\Nerdbank.GitVersioning.Tasks\GitLoaderContext.cs:line 41
   at System.Runtime.Loader.AssemblyLoadContext.ResolveUnmanagedDll(String unmanagedDllName, IntPtr gchManagedAssemblyLoadContext)
   at LibGit2Sharp.Core.NativeMethods.git_libgit2_init()
   at LibGit2Sharp.Core.NativeMethods.InitializeNativeLibrary()
   at LibGit2Sharp.Core.NativeMethods..cctor()
   --- End of inner exception stack trace ---
   at LibGit2Sharp.Core.NativeMethods.git_libgit2_opts(Int32 option, UInt32 level, String path)
   at LibGit2Sharp.Core.Proxy.git_libgit2_opts_set_search_path(ConfigurationLevel level, String path)
   at LibGit2Sharp.GlobalSettings.SetConfigSearchPaths(ConfigurationLevel level, String[] paths)
   at Nerdbank.GitVersioning.GitExtensions.OpenGitRepo(String pathUnderGitRepo, Boolean useDefaultConfigSearchPaths)
   at Nerdbank.GitVersioning.Tool.Program.OnGetVersionCommand(String projectPath, String format, String singleVariable, String versionOrRef) in D:\a\1\s\src\nbgv\Program.cs:line 285
   at Nerdbank.GitVersioning.Tool.Program.MainInner(String[] args) in D:\a\1\s\src\nbgv\Program.cs:line 150
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at Nerdbank.GitVersioning.Tool.Program.Main(String[] args) in D:\a\1\s\src\nbgv\Program.cs:line 64

@cdunford
Copy link
Contributor

cdunford commented Oct 8, 2020

@AArnott - is there an issue tracking libgit2sharp removing the libssl dependency somewhere? I did a quick search of their issues and didn't see an obvious one. It also looks like development on that project has slowed.

What is involved in getting a new platform added/supported? I would love to use nbgv on redhat ubi docker images (eg https://catalog.redhat.com/software/containers/detail/5de595fa5a13461646f8bbb0).

@AArnott
Copy link
Collaborator

AArnott commented Oct 8, 2020

@cdunford the libgit2sharp work item is libgit2/libgit2sharp#1618

To get nbgv working on a new linux distro, the first (and main) step is to get libgit2sharp to work on that distro. Once that's done, NB.GV will often "just work" but may sometimes require a line or two change to our linux distro table and/or a libgit2sharp version update.

@AArnott AArnott added this to the v3.4 milestone Nov 24, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants