fsprojects / Paket

A dependency manager for .NET with support for NuGet packages and Git repositories.
https://fsprojects.github.io/Paket/
MIT License
2.01k stars 520 forks source link

Paket install crash with latest version #3520

Open sergii-s opened 5 years ago

sergii-s commented 5 years ago

Description

Paket install command crashes when using "min" stategy

Repro steps

  1. Use paket dependencies file :
    
    source https://www.nuget.org/api/v2
    strategy: min

nuget prometheus-net 2.1.0 nuget SSH.NET 2016.1.0


2. paket install

### Expected behavior

Install success

### Actual behavior

Paket throws exception :

Sharp.Core.FSharpFunc2<Paket.ResolverStrategy, Microsoft.FSharp.Core.FSharpFunc2<Paket.PackageResolver/GetPackageVersionsParameters, Microsoft.FSharp.Collections.FSharpList1<System.Tuple2<Paket.SemVerInfo, Microsoft.FSharp.Collections.FSharpList1<Paket.PackageSources/PackageSource>>>>>,Microsoft.FSharp.Core.FSharpFunc2<Paket.PackageResolver/GetPackageDetailsParameters, Microsoft.FSharp.Control.FSharpAsync1<Paket.PackageResolver/PackageDetails>>,Microsoft.FSharp.Collections.FSharpSet1<Paket.Domain/PackageName>,Paket.PackageResolver/ResolverRequestQueue,int,System.TimeSpan,System.Collections.Concurrent.ConcurrentDictionary2<System.Tuple3<Microsoft.FSharp.Collections.FSharpList1<Paket.PackageSources/PackageSource>, Paket.Domain/PackageName, Paket.SemVerInfo>, Paket.PackageResolver/ResolverTaskMemory1<Paket.PackageResolver/PackageDetails>>,Microsoft.FSharp.Core.FSharpFunc2<Paket.PackageResolver/GetPackageDetailsParameters, Paket.PackageResolver/PackageDetails>,System.Collections.Concurrent.ConcurrentDictionary2<System.Tuple2<Microsoft.FSharp.Collections.FSharpList1<Paket.PackageSources/PackageSource>, Paket.Domain/PackageName>, Paket.PackageResolver/ResolverTaskMemory1<System.Collections.Generic.IEnumerable1<System.Tuple2<Paket.SemVerInfo, Microsoft.FSharp.Collections.FSharpList1<Paket.PackageSources/PackageSource>>>>>,Microsoft.FSharp.Core.FSharpOption1<Paket.Domain/PackageFilter>,System.Collections.Generic.IDictionary2<Paket.Domain/PackageName, Paket.Requirements/PackageRequirement>,Microsoft.FSharp.Collections.FSharpSet1<Paket.Domain/PackageName>,System.DateTime,Paket.PackageResolver/Stage,Paket.PackageResolver/StackPack,System.Collections.Generic.IEnumerable1<Paket.PackageResolver/VersionCache>,Paket.PackageResolver/StepFlags) [0x004ac] in <4fc78e384d7f43a99722756d21071cbc>:0 ... at StartupCode$Paket-Core>.$DependenciesFile/resolveGroup@222-1<b_REF.Invoke (Paket.Domain/GroupName,b_REF) [0x000ff] in <4fc78e384d7f43a99722756d21071cbc>:0 at Microsoft.FSharp.Collections.MapTreeModule.mapiOpt<a_REF, b_REF, c_REF> (Microsoft.FSharp.Core.OptimizedClosures/FSharpFunc3<a_REF, b_REF, c_REF>,Microsoft.FSharp.Collections.MapTree2<a_REF, b_REF>) [0x00029] in <4fc78e384d7f43a99722756d21071cbc>:0 at Microsoft.FSharp.Collections.FSharpMap2<TKey_REF, TValue_REF>.Map<b_REF> (Microsoft.FSharp.Core.FSharpFunc2<TKey_REF, Microsoft.FSharp.Core.FSharpFunc2<TValue_REF, b_REF>>) [0x00013] in <4fc78e384d7f43a99722756d21071cbc>:0 at Microsoft.FSharp.Collections.MapModule.Map<TKey_REF, T_REF, TResult_REF> (Microsoft.FSharp.Core.FSharpFunc2<TKey_REF, Microsoft.FSharp.Core.FSharpFunc2<T_REF, TResult_REF>>,Microsoft.FSharp.Collections.FSharpMap2<TKey_REF, T_REF>) [0x00000] in <4fc78e384d7f43a99722756d21071cbc>:0 at Paket.UpdateProcess.selectiveUpdate (bool,Microsoft.FSharp.Core.FSharpFunc2<Paket.ModuleResolver/Origin, Microsoft.FSharp.Core.FSharpFunc2<string, Microsoft.FSharp.Core.FSharpFunc2<string, Microsoft.FSharp.Core.FSharpFunc2<Paket.ModuleResolver/VersionRestriction, Microsoft.FSharp.Core.FSharpFunc2<Microsoft.FSharp.Core.FSharpOption1, string>>>>>,Microsoft.FSharp.Core.FSharpFunc2<Paket.PackageResolver/GetPackageVersionsParameters, Microsoft.FSharp.Control.FSharpAsync1<System.Collections.Generic.IEnumerable1<System.Tuple2<Paket.SemVerInfo, Microsoft.FSharp.Collections.FSharpList1<Paket.PackageSources/PackageSource>>>>>,Microsoft.FSharp.Core.FSharpFunc2<Paket.PackageResolver/GetPackageDetailsParameters, Microsoft.FSharp.Control.FSharpAsync1<Paket.PackageResolver/PackageDetails>>,Microsoft.FSharp.Core.FSharpFunc2<Microsoft.FSharp.Core.FSharpOption1<Paket.Utils/PackagesFolderGroupConfig>, Microsoft.FSharp.Core.FSharpFunc2<Paket.Domain/GroupName, Microsoft.FSharp.Core.FSharpFunc2<Paket.PackageResolver/ResolvedPackage, Microsoft.FSharp.Core.FSharpOption1>>>,Paket.LockFile,Paket.DependenciesFile,Paket.PackageResolver/UpdateMode,Paket.SemVerUpdateMode) [0x00330] in <4fc78e384d7f43a99722756d21071cbc>:0 at Paket.UpdateProcess.SelectiveUpdate (Paket.DependenciesFile,Microsoft.FSharp.Core.FSharpOption1<string>,Paket.PackageResolver/UpdateMode,Paket.SemVerUpdateMode,bool) [0x000e6] in <4fc78e384d7f43a99722756d21071cbc>:0 at Paket.UpdateProcess.SmartInstall (Paket.DependenciesFile,Paket.PackageResolver/UpdateMode,Paket.UpdaterOptions) [0x00001] in <4fc78e384d7f43a99722756d21071cbc>:0 at <StartupCode$Paket-Core>.$PublicAPI/Install@267.Invoke (Microsoft.FSharp.Core.Unit) [0x0002e] in <4fc78e384d7f43a99722756d21071cbc>:0 at Paket.Utils.RunInLockedAccessMode<a_REF> (string,Microsoft.FSharp.Core.FSharpFunc2<Microsoft.FSharp.Core.Unit, a_REF>) [0x0004f] in <4fc78e384d7f43a99722756d21071cbc>:0 at Paket.Dependencies.Install (Paket.InstallerOptions) [0x0001d] in <4fc78e384d7f43a99722756d21071cbc>:0 at Paket.Dependencies.Install (bool,bool,bool,bool,bool,Paket.SemVerUpdateMode,bool,bool,Microsoft.FSharp.Collections.FSharpList1<string>,Microsoft.FSharp.Collections.FSharpList1,Microsoft.FSharp.Core.FSharpOption1<string>) [0x0006e] in <4fc78e384d7f43a99722756d21071cbc>:0 at Paket.Program/main@902-5.Invoke (Microsoft.FSharp.Core.Unit) [0x00021] in <4fc78e384d7f43a99722756d21071cbc>:0 at Paket.Program.processWithValidationEx$cont@42<a_REF> (bool,Microsoft.FSharp.Core.FSharpFunc2<a_REF, Microsoft.FSharp.Core.Unit>,a_REF,Microsoft.FSharp.Core.Unit) [0x00002] in <4fc78e384d7f43a99722756d21071cbc>:0 at Paket.Program.processWithValidationEx (Microsoft.FSharp.Core.FSharpFunc2<a_REF, Microsoft.FSharp.Core.Unit>,bool,Microsoft.FSharp.Core.FSharpFunc2<a_REF, bool>,Microsoft.FSharp.Core.FSharpFunc`2<a_REF, Microsoft.FSharp.Core.Unit>,a_REF) [0x00067] in <4fc78e384d7f43a99722756d21071cbc>:0 at Paket.Program.main () [0x000f0] in <4fc78e384d7f43a99722756d21071cbc>:0 at <StartupCode$paket>.$Paket.Program.main@ () [0x00012] in <4fc78e384d7f43a99722756d21071cbc>:0 at (wrapper runtime-invoke) object.runtime_invoke_void (object,intptr,intptr,intptr) [0x0004c] in <04750267503a43e5929c1d1ba19daf3e>:0



### Known workarounds

It would be great if someone can suggest one. 
forki commented 5 years ago

you wrote "with latest version". did this ever work with paket? It looks like both package versions are incompatible

sergii-s commented 5 years ago

I don't know If it work with some other version of paket. It was to precise which version i'm using. I've tried all releases since 5.194.2 and none of them worked.

If they are incompatible then in MAX strategy this shouldn't work as well ? But if I change strategy to max it works fine.

forki commented 5 years ago

ok looked at it. The problem is the gigantic search space here which arises because one lib needs the 4.1 system libs and the other one 4.3. Paket has a hard time to find that when it try with min strategy. Workaround is to reduce the search space manually:

source https://www.nuget.org/api/v2
strategy: min

nuget System.IO >= 4.3
nuget System.Globalization >= 4.3
nuget System.Linq >= 4.3
nuget System.Linq.Expressions >= 4.3
nuget System.Reflection.Extensions >= 4.3
nuget System.Text.RegularExpressions >= 4.3
nuget System.Xml.XmlDocument >= 4.3
nuget System.Diagnostics.Tools >= 4.3
nuget System.Net.Sockets >= 4.3
nuget System.Security.Cryptography.Algorithms >= 4.3
nuget System.Threading.Timer >= 4.3  

nuget prometheus-net 2.1.0
nuget SSH.NET 2016.1.0
sergii-s commented 5 years ago

Ok, thank you for workaround and explanation !