Skip to content

Commit ac87a9f

Browse files
committed
keeping direct depednencies distinct from external locks
1 parent 23bbd05 commit ac87a9f

3 files changed

Lines changed: 20 additions & 9 deletions

File tree

‎src/Paket.Core/Dependencies/PackageResolver.fs‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,9 @@ module ResolutionRaw =
209209
match req.Parent with
210210
| DependenciesFile _ ->
211211
sprintf " - Dependencies file requested package %O: %s%s%s" req.Name vr pr tp
212+
| DependenciesLock(_,path) ->
213+
let lock = try IO.Path.GetFileName(path) with | ex -> path
214+
sprintf " - External \"%s\" requested package %O: %s%s%s" lock req.Name vr pr tp
212215
| Package (parentName,version,_) ->
213216
sprintf " - %O %O requested package %O: %s%s%s" parentName version req.Name vr pr tp
214217

@@ -479,7 +482,7 @@ let private explorePackageConfig (getPackageDetailsBlock:PackageDetailsSyncFunc)
479482

480483
let settings =
481484
match dependency.Parent with
482-
| DependenciesFile _ -> dependency.Settings
485+
| DependenciesFile _ | DependenciesLock _ -> dependency.Settings
483486
| Package _ ->
484487
match pkgConfig.RootDependencies.TryGetValue packageDetails.Name with
485488
| true, r -> r.Settings + dependency.Settings
@@ -938,8 +941,9 @@ let Resolve (getVersionsRaw : PackageVersionsFunc, getPreferredVersionsRaw : Pre
938941
rootDependencies
939942
|> Seq.choose (fun r ->
940943
match r.Parent with
941-
| PackageRequirementSource.DependenciesFile _ when (r.Kind = PackageRequirementKind.DotnetCliTool) ->
942-
Some r.Name
944+
| PackageRequirementSource.DependenciesFile _ | PackageRequirementSource.DependenciesLock _
945+
when (r.Kind = PackageRequirementKind.DotnetCliTool) ->
946+
Some r.Name
943947
| _ -> None)
944948
|> Set.ofSeq
945949

‎src/Paket.Core/PaketConfigFiles/DependenciesFile.fs‎

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -258,24 +258,29 @@ type DependenciesFile(fileName,groups:Map<GroupName,DependenciesGroup>, textRepr
258258
folder.Create()
259259
let fileName = Path.Combine(folder.FullName,"paket.lock")
260260
client.DownloadFile(x,fileName)
261-
LockFile.LoadFrom fileName
261+
x, LockFile.LoadFrom fileName
262262
else
263263
let fi = try FileInfo x with | exn -> failwithf "The external lock file %s that was referenced in group %O has invalid path. Message: %s" x group.Name exn.Message
264264
if not (File.Exists fi.FullName) then
265265
failwithf "The external lock file %s that was referenced in group %O does not exist." fi.FullName group.Name
266-
LockFile.LoadFrom fi.FullName)
267-
|> Seq.collect (fun lockFile ->
266+
x, LockFile.LoadFrom fi.FullName)
267+
|> Seq.collect (fun (lockName, lockFile) ->
268268
match lockFile.Groups |> Map.tryFind group.Name with
269269
| None -> Seq.empty
270270
| Some externalGroup ->
271271
externalGroup.Resolution
272272
|> Seq.map (fun kv ->
273273
let p = kv.Value
274274
{ Name = p.Name
275-
VersionRequirement = VersionRequirement.VersionRequirement(VersionRange.Specific p.Version,if p.Version.PreRelease = None then PreReleaseStatus.No else PreReleaseStatus.All)
275+
VersionRequirement =
276+
VersionRequirement.VersionRequirement(
277+
VersionRange.Specific p.Version,
278+
match p.Version.PreRelease with
279+
| Some pre -> PreReleaseStatus.All // common dependencies must be present in the same paket.lock anyway
280+
| None -> PreReleaseStatus.No )
276281
ResolverStrategyForDirectDependencies = Some ResolverStrategy.Max
277282
ResolverStrategyForTransitives = Some ResolverStrategy.Max
278-
Parent = PackageRequirementSource.DependenciesFile(fileName,0)
283+
Parent = PackageRequirementSource.DependenciesLock(fileName,lockName)
279284
Graph = Set.empty
280285
Sources = group.Sources
281286
Kind = PackageRequirementKind.Package

‎src/Paket.Core/Versioning/Requirements.fs‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1071,15 +1071,17 @@ type RemoteFileInstallSettings =
10711071

10721072
type PackageRequirementSource =
10731073
| DependenciesFile of string * int
1074+
| DependenciesLock of string * string
10741075
| Package of PackageName * SemVerInfo * PackageSource
10751076
member this.IsRootRequirement() =
10761077
match this with
1077-
| DependenciesFile _ -> true
1078+
| DependenciesFile _ | DependenciesLock _ -> true
10781079
| _ -> false
10791080

10801081
override this.ToString() =
10811082
match this with
10821083
| DependenciesFile(x,_) -> x
1084+
| DependenciesLock(_,x) -> x
10831085
| Package(name,version,_) ->
10841086
sprintf "%O %O" name version
10851087

0 commit comments

Comments
 (0)