ai-traders / liget

NuGet server and cache running on kestrel in docker
MIT License
216 stars 29 forks source link

Unable to build using dojo. Getting e_sqlite3 error #54

Open Dunge opened 1 year ago

Dunge commented 1 year ago

I forked the project and followed the build guideline in the readme to install dojo and launch ./tasks.sh all.

I first had an error about the dotnet image that changed repositories. I then edited the Dockerfile from microsoft/dotnet:2.1.4-aspnetcore-runtime-stretch-slim to mcr.microsoft.com/dotnet/aspnet:2.1.30-stretch-slim (also tried mcr.microsoft.com/dotnet/aspnet:2.1-stretch-slim, there's no 2.1.4 version) as explained here.

Everything build but the tests fails because the program does not launch, having an error with sqlite not publishing the binaries that seemed to be common back in the days, but I can't find a proper solution to fix it.

    LiGet.Tests.NuGetClientIntegrationTest.IndexIncludesAtLeastOnePackageBaseAddressEntry(indexEndpoint: "cache/v3/index.json") [FAIL]
      System.TypeInitializationException : The type initializer for 'Microsoft.Data.Sqlite.SqliteConnection' threw an exception.
      ---- System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.
      -------- System.DllNotFoundException : Unable to load shared library 'e_sqlite3' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: libe_sqlite3: cannot open shared object file: No such file or directory
      Stack Trace:
           at Microsoft.Data.Sqlite.SqliteConnection..ctor(String connectionString)
           at Microsoft.EntityFrameworkCore.Sqlite.Storage.Internal.SqliteRelationalConnection.CreateDbConnection()
           at Microsoft.EntityFrameworkCore.Internal.LazyRef`1.get_Value()
           at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected)
           at Microsoft.EntityFrameworkCore.Sqlite.Storage.Internal.SqliteRelationalConnection.Open(Boolean errorsExpected)
           at Microsoft.EntityFrameworkCore.Sqlite.Storage.Internal.SqliteDatabaseCreator.Exists()
           at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
           at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
        /dojo/work/tests/LiGet.Tests/TestServerBuilder.cs(143,0): at LiGet.Tests.TestServerBuilder.Build()
        /dojo/work/tests/LiGet.Tests/NuGetClientIntegrationTest.cs(65,0): at LiGet.Tests.NuGetClientIntegrationTest..ctor(ITestOutputHelper helper)
        ----- Inner 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 Microsoft.Data.Sqlite.Utilities.BundleInitializer.Initialize()
           at Microsoft.Data.Sqlite.SqliteConnection..cctor()
        ----- Inner Stack Trace -----
           at SQLitePCL.SQLite3Provider_e_sqlite3.NativeMethods.sqlite3_libversion_number()
           at SQLitePCL.SQLite3Provider_e_sqlite3.SQLitePCL.ISQLite3Provider.sqlite3_libversion_number()
           at SQLitePCL.raw.SetProvider(ISQLite3Provider imp)

Anyone have an idea how to fix this? Should I edit the dojo files too?