I’m trying to pack MSBuildStructuredLog
tool using buildDotnetModule
. Some of its native dependencies (namely libSkiaSharp.so
) are coming from nuget
packages and they are placed alongside executable. Is there a way to pass these libraries to buildDotnetModule.runtimeDeps
so they can be linked properly?
My derivation:
{ lib
, buildDotnetModule
, dotnetCorePackages
, fetchFromGitHub
, zlib
, openssl
, libX11
, libICE
, libSM
}:
buildDotnetModule rec {
pname = "MSBuildStructuredLog";
version = "2.1.745";
src = fetchFromGitHub {
owner = "KirillOsenkov";
repo = pname;
rev = "v${version}";
sha256 = "sha256-4iMTFqpXmZaB+RR0c4ObY36rwjfJEdQlsqmNRA+4S+o=";
};
selfContainedBuild = true;
projectFile = "src/StructuredLogViewer.Avalonia/StructuredLogViewer.Avalonia.csproj";
nugetDeps = ./deps.nix;
runtimeDeps = [
zlib
openssl
libX11
libICE
libSM
#this doesn't work -> "$out/bin/"
];
dotnetFlags = [
"--runtime linux-x64"
];
dotnetbuildFlags = [
"-c Release"
];
dotnetPackFlags = [
"--runtime linux-x64"
"-p:PublishNativeAot=True"
];
meta = with lib; {
homepage = "https://msbuildlog.com/";
description = "MSBuild log viewer";
license = licenses.mit;
maintainers = with maintainers; [ anpin ];
platforms = [ "x86_64-linux" ];
};
}
The error I’m currently getting on startup
Unhandled exception. System.TypeInitializationException: The type initializer for 'SkiaSharp.SKImageInfo' threw an exception.
---> System.DllNotFoundException: Unable to load shared library 'libSkiaSharp' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibSkiaSharp: cannot open shared object file: No such file or directory
at SkiaSharp.SkiaApi.sk_colortype_get_default_8888()
at SkiaSharp.SKImageInfo..cctor()
--- End of inner exception stack trace ---
at Avalonia.Skia.PlatformRenderInterface..ctor(ISkiaGpu skiaGpu, Nullable`1 maxResourceBytes) in /_/src/Skia/Avalonia.Skia/PlatformRenderInterface.cs:line 27
at Avalonia.Skia.SkiaPlatform.Initialize(SkiaOptions options) in /_/src/Skia/Avalonia.Skia/SkiaPlatform.cs:line 20
at Avalonia.SkiaApplicationExtensions.<>c__0`1.<UseSkia>b__0_0() in /_/src/Skia/Avalonia.Skia/SkiaApplicationExtensions.cs:line 20
at Avalonia.Controls.AppBuilderBase`1.Setup() in /_/src/Avalonia.Controls/AppBuilderBase.cs:line 304
at Avalonia.Controls.AppBuilderBase`1.SetupWithLifetime(IApplicationLifetime lifetime) in /_/src/Avalonia.Controls/AppBuilderBase.cs:line 179
at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode) in /_/src/Avalonia.Controls/ApplicationLifetimes/ClassicDesktopStyleApplicationLifetime.cs:line 208
at StructuredLogViewer.Avalonia.Program.Main(String[] args) in /build/source/src/StructuredLogViewer.Avalonia/Program.cs:line 9
[1] 609185 IOT instruction (core dumped) StructuredLogViewer.Avalonia
Build result bin
folder
ls /nix/store/6ihpm58rvp7ry9bp3glqsivrnhm3czvv-MSBuildStructuredLog-2.1.745/bin
createdump libmscordbi.so
libclrjit.so libSkiaSharp.so
libcoreclr.so libSystem.Globalization.Native.so
libcoreclrtraceptprovider.so libSystem.IO.Compression.Native.so
libdbgshim.so libSystem.Native.so
libHarfBuzzSharp.so libSystem.Net.Security.Native.so
libhostfxr.so libSystem.Security.Cryptography.Native.OpenSsl.so
libhostpolicy.so StructuredLogViewer.Avalonia
libmscordaccore.so