Skip to content

Commit

Permalink
Always filter framework restrictions - fixes #1182
Browse files Browse the repository at this point in the history
  • Loading branch information
forki committed Oct 31, 2015
1 parent 2934794 commit 49466e7
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 32 deletions.
Expand Up @@ -20,5 +20,5 @@ let ``#140 windsor should resolve framework dependent dependencies``() =
let ``#1182 framework restrictions overwrite each other``() =
let lockFile = update "i001182-framework-restrictions"
let lockFile = lockFile.ToString()
lockFile.Contains("Microsoft.Data.OData (>= 5.6.2) ") |> shouldEqual true
lockFile.Contains("Microsoft.Data.OData (>= 5.6.2)") |> shouldEqual true
lockFile.Contains("framework: winv4.5") |> shouldEqual false
1 change: 1 addition & 0 deletions src/Paket.Core/LockFile.fs
Expand Up @@ -91,6 +91,7 @@ module LockFileSerializer =
let s = v.ToString()
if s = "" then s else "(" + s + ")"

let restrictions = filterRestrictions options.Settings.FrameworkRestrictions restrictions
if List.isEmpty restrictions || restrictions = options.Settings.FrameworkRestrictions then
yield sprintf " %O %s" name versionStr
else
Expand Down
18 changes: 5 additions & 13 deletions src/Paket.Core/PackageResolver.fs
Expand Up @@ -159,11 +159,10 @@ let calcOpenRequirements (exploredPackage:ResolvedPackage,globalFrameworkRestric
let rest = Set.remove dependency stillOpen

dependenciesByName
|> Set.map (fun (n, v, restriction) ->
|> Set.map (fun (n, v, restriction) ->
let newRestrictions =
filterRestrictions restriction exploredPackage.Settings.FrameworkRestrictions
|> filterRestrictions globalFrameworkRestrictions

{ dependency with Name = n
VersionRequirement = v
Parent = Package(dependency.Name, versionToExplore)
Expand Down Expand Up @@ -231,29 +230,22 @@ let Resolve(groupName:GroupName, sources, getVersionsF, getPackageDetailsF, stra
| _ -> tracefn " - %O %A" dependency.Name version

let packageDetails : PackageDetails = getPackageDetailsF sources dependency.Name version
let filteredDependencies = DependencySetFilter.filterByRestrictions newRestrictions packageDetails.DirectDependencies

let settings =
match dependency.Parent with
| DependenciesFile(_) -> dependency.Settings
| Package(_) ->
match rootSettings.TryGetValue packageDetails.Name with
| true, s -> s + dependency.Settings
| _ -> dependency.Settings
|> fun s -> s.AdjustWithSpecialCases packageDetails.Name

let restrictedDependencies =
DependencySetFilter.filterByRestrictions newRestrictions packageDetails.DirectDependencies
|> Set.map (fun (n,v,r) ->
let r' =
filterRestrictions r settings.FrameworkRestrictions
|> filterRestrictions globalFrameworkRestrictions
(n,v,r'))

let explored =
{ Name = packageDetails.Name
Version = version
Dependencies = restrictedDependencies
Dependencies = filteredDependencies
Unlisted = packageDetails.Unlisted
Settings = settings
Settings = settings.AdjustWithSpecialCases packageDetails.Name
Source = packageDetails.Source }
exploredPackages.Add((dependency.Name,version),explored)
explored
Expand Down
4 changes: 2 additions & 2 deletions src/Paket/Paket.fsproj
Expand Up @@ -37,15 +37,15 @@
<StartArguments>update group Build</StartArguments>
<StartArguments>pack output D:\code\paketbug\output</StartArguments>
<StartArguments>install</StartArguments>
<StartArguments>update</StartArguments>
<StartArguments>update --keep-minor</StartArguments>
<StartAction>Project</StartAction>
<StartProgram>paket.exe</StartProgram>
<StartWorkingDirectory>c:\code\Paketkopie</StartWorkingDirectory>
<StartWorkingDirectory>C:\Temp\paket_test\</StartWorkingDirectory>
<StartWorkingDirectory>d:\code\paketkopie</StartWorkingDirectory>
<StartWorkingDirectory>d:\code\paketbug</StartWorkingDirectory>
<StartWorkingDirectory>d:\code\paketrepro</StartWorkingDirectory>
<StartWorkingDirectory>D:\code\Paket\integrationtests\scenarios\i001182-framework-restrictions\temp</StartWorkingDirectory>
<StartWorkingDirectory>D:\code\Paket\integrationtests\scenarios\i001125-update-and-keep-minor\temp</StartWorkingDirectory>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
Expand Down
32 changes: 16 additions & 16 deletions tests/Paket.Tests/Lockfile/GeneratorSpecs.fs
Expand Up @@ -62,14 +62,14 @@ let ``should generate lock file with framework restrictions for packages``() =
specs:
Castle.Windsor (2.1) - framework: net35
Castle.Windsor-log4net (3.3) - framework: net35
Castle.Windsor (>= 2.0) - framework: net35
log4net (>= 1.0) - framework: net35
Castle.Windsor (>= 2.0)
log4net (>= 1.0)
log (1.2) - framework: net35
log4net (1.1) - framework: net35
log (>= 1.0) - framework: net35
log (>= 1.0)
Rx-Core (2.1) - framework: >= net40
Rx-Main (2.0) - framework: >= net40
Rx-Core (>= 2.1) - framework: >= net40"""
Rx-Core (>= 2.1)"""

let cfg = DependenciesFile.FromCode(configWithRestrictions)
ResolveWithGraph(cfg,noSha1,VersionsFromGraphAsSeq graph, PackageDetailsFromGraph graph).[Constants.MainDependencyGroup].ResolvedPackages.GetModelOrFail()
Expand All @@ -90,14 +90,14 @@ let ``should generate lock file with no targets import for packages``() =
specs:
Castle.Windsor (2.1) - import_targets: false, framework: net35
Castle.Windsor-log4net (3.3) - import_targets: false, framework: net35
Castle.Windsor (>= 2.0) - framework: net35
log4net (>= 1.0) - framework: net35
Castle.Windsor (>= 2.0)
log4net (>= 1.0)
log (1.2) - import_targets: false, framework: net35
log4net (1.1) - import_targets: false, framework: net35
log (>= 1.0) - framework: net35
log (>= 1.0)
Rx-Core (2.1) - framework: >= net40
Rx-Main (2.0) - framework: >= net40
Rx-Core (>= 2.1) - framework: >= net40"""
Rx-Core (>= 2.1)"""

let cfg = DependenciesFile.FromCode(configWithNoImport)
ResolveWithGraph(cfg,noSha1,VersionsFromGraphAsSeq graph, PackageDetailsFromGraph graph).[Constants.MainDependencyGroup].ResolvedPackages.GetModelOrFail()
Expand All @@ -117,14 +117,14 @@ let ``should generate lock file with no copy local for packages``() =
specs:
Castle.Windsor (2.1) - copy_local: false, import_targets: false, framework: net35
Castle.Windsor-log4net (3.3) - copy_local: false, import_targets: false, framework: net35
Castle.Windsor (>= 2.0) - framework: net35
log4net (>= 1.0) - framework: net35
Castle.Windsor (>= 2.0)
log4net (>= 1.0)
log (1.2) - copy_local: false, import_targets: false, framework: net35
log4net (1.1) - copy_local: false, import_targets: false, framework: net35
log (>= 1.0) - framework: net35
log (>= 1.0)
Rx-Core (2.1) - framework: >= net40
Rx-Main (2.0) - framework: >= net40
Rx-Core (>= 2.1) - framework: >= net40"""
Rx-Core (>= 2.1)"""
let cfg = DependenciesFile.FromCode(configWithCopyLocal)
ResolveWithGraph(cfg,noSha1,VersionsFromGraphAsSeq graph, PackageDetailsFromGraph graph).[Constants.MainDependencyGroup].ResolvedPackages.GetModelOrFail()
|> LockFileSerializer.serializePackages cfg.Groups.[Constants.MainDependencyGroup].Options
Expand All @@ -144,14 +144,14 @@ let ``should generate lock file with disabled content for packages``() =
specs:
Castle.Windsor (2.1) - framework: net35
Castle.Windsor-log4net (3.3) - framework: net35
Castle.Windsor (>= 2.0) - framework: net35
log4net (>= 1.0) - framework: net35
Castle.Windsor (>= 2.0)
log4net (>= 1.0)
log (1.2) - framework: net35
log4net (1.1) - framework: net35
log (>= 1.0) - framework: net35
log (>= 1.0)
Rx-Core (2.1) - content: none, framework: >= net40
Rx-Main (2.0) - content: none, framework: >= net40
Rx-Core (>= 2.1) - framework: >= net40"""
Rx-Core (>= 2.1)"""
let cfg = DependenciesFile.FromCode(configWithDisabledContent)
ResolveWithGraph(cfg,noSha1,VersionsFromGraphAsSeq graph, PackageDetailsFromGraph graph).[Constants.MainDependencyGroup].ResolvedPackages.GetModelOrFail()
|> LockFileSerializer.serializePackages cfg.Groups.[Constants.MainDependencyGroup].Options
Expand Down

0 comments on commit 49466e7

Please sign in to comment.