Skip to content

Commit 93585dd

Browse files
neonichuartemcm
authored andcommitted
Do not store products in resolved file (swiftlang#2792)
We can safely make the assumption that any dependency in the resolved file was required.
1 parent d23e5ba commit 93585dd

File tree

7 files changed

+18
-30
lines changed

7 files changed

+18
-30
lines changed

Sources/PackageGraph/PinsStore.swift

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,12 @@ public final class PinsStore {
2323
/// The pinned state.
2424
public let state: CheckoutState
2525

26-
/// The product filter applied by the pin.
27-
public let productFilter: ProductFilter
28-
2926
public init(
3027
packageRef: PackageReference,
31-
state: CheckoutState,
32-
productFilter: ProductFilter
28+
state: CheckoutState
3329
) {
3430
self.packageRef = packageRef
3531
self.state = state
36-
self.productFilter = productFilter
3732
}
3833
}
3934

@@ -88,13 +83,11 @@ public final class PinsStore {
8883
/// - state: The state to pin at.
8984
public func pin(
9085
packageRef: PackageReference,
91-
state: CheckoutState,
92-
productFilter: ProductFilter
86+
state: CheckoutState
9387
) {
9488
pinsMap[packageRef.identity] = Pin(
9589
packageRef: packageRef,
96-
state: state,
97-
productFilter: productFilter
90+
state: state
9891
)
9992
}
10093

@@ -117,7 +110,7 @@ public final class PinsStore {
117110
public func createConstraints() -> [RepositoryPackageConstraint] {
118111
return pins.map({ pin in
119112
return RepositoryPackageConstraint(
120-
container: pin.packageRef, requirement: pin.state.requirement(), products: pin.productFilter)
113+
container: pin.packageRef, requirement: pin.state.requirement(), products: .everything)
121114
})
122115
}
123116
}
@@ -159,16 +152,14 @@ extension PinsStore.Pin: JSONMappable, JSONSerializable, Equatable {
159152
let ref = PackageReference(identity: identity, path: url)
160153
self.packageRef = name.flatMap(ref.with(newName:)) ?? ref
161154
self.state = try json.get("state")
162-
self.productFilter = try json.get("products")
163155
}
164156

165157
/// Convert the pin to JSON.
166158
public func toJSON() -> JSON {
167159
return .init([
168160
"package": packageRef.name.toJSON(),
169161
"repositoryURL": packageRef.path,
170-
"state": state,
171-
"products": productFilter,
162+
"state": state
172163
])
173164
}
174165
}

Sources/SPMTestSupport/TestWorkspace.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ public final class TestWorkspace {
354354
let pinsStore = try workspace.pinsStore.load()
355355

356356
for (ref, state) in pins {
357-
pinsStore.pin(packageRef: ref, state: state.version, productFilter: state.products)
357+
pinsStore.pin(packageRef: ref, state: state.version)
358358
}
359359

360360
for dependency in managedDependencies {

Sources/Workspace/Workspace.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1541,7 +1541,7 @@ extension Workspace {
15411541
// Clone the required pins.
15421542
for pin in requiredPins {
15431543
diagnostics.wrap {
1544-
_ = try self.clone(package: pin.packageRef, at: pin.state, productFilter: pin.productFilter)
1544+
_ = try self.clone(package: pin.packageRef, at: pin.state, productFilter: .everything)
15451545
}
15461546
}
15471547

Sources/Workspace/misc.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ extension PinsStore {
3737

3838
self.pin(
3939
packageRef: dependency.packageRef,
40-
state: checkoutState,
41-
productFilter: dependency.productFilter)
40+
state: checkoutState)
4241
}
4342
}
4443

Tests/PackageGraphTests/PubgrubTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2120,7 +2120,7 @@ class DependencyGraphBuilder {
21202120
let store = try! PinsStore(pinsFile: AbsolutePath("/tmp/Package.resolved"), fileSystem: fs)
21212121

21222122
for (package, pin) in pins {
2123-
store.pin(packageRef: reference(for: package), state: pin.0, productFilter: pin.1)
2123+
store.pin(packageRef: reference(for: package), state: pin.0)
21242124
}
21252125

21262126
try! store.saveState()

Tests/WorkspaceTests/PinsStoreTests.swift

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ final class PinsStoreTests: XCTestCase {
3333

3434
let state = CheckoutState(revision: revision, version: v1)
3535
let products: ProductFilter = .everything
36-
let pin = PinsStore.Pin(packageRef: fooRef, state: state, productFilter: products)
36+
let pin = PinsStore.Pin(packageRef: fooRef, state: state)
3737
// We should be able to round trip from JSON.
3838
XCTAssertEqual(try PinsStore.Pin(json: pin.toJSON()), pin)
3939

@@ -44,7 +44,7 @@ final class PinsStoreTests: XCTestCase {
4444
XCTAssert(!fs.exists(pinsFile))
4545
XCTAssert(store.pins.map{$0}.isEmpty)
4646

47-
store.pin(packageRef: fooRef, state: state, productFilter: products)
47+
store.pin(packageRef: fooRef, state: state)
4848
try store.saveState()
4949

5050
XCTAssert(fs.exists(pinsFile))
@@ -63,13 +63,12 @@ final class PinsStoreTests: XCTestCase {
6363
}
6464

6565
// We should be able to pin again.
66-
store.pin(packageRef: fooRef, state: state, productFilter: products)
66+
store.pin(packageRef: fooRef, state: state)
6767
store.pin(
6868
packageRef: fooRef,
69-
state: CheckoutState(revision: revision, version: "1.0.2"),
70-
productFilter: .specific(["some", "products"])
69+
state: CheckoutState(revision: revision, version: "1.0.2")
7170
)
72-
store.pin(packageRef: barRef, state: state, productFilter: products)
71+
store.pin(packageRef: barRef, state: state)
7372
try store.saveState()
7473

7574
store = try PinsStore(pinsFile: pinsFile, fileSystem: fs)
@@ -79,8 +78,7 @@ final class PinsStoreTests: XCTestCase {
7978
do {
8079
store.pin(
8180
packageRef: barRef,
82-
state: CheckoutState(revision: revision, branch: "develop"),
83-
productFilter: .specific(["a", "product"])
81+
state: CheckoutState(revision: revision, branch: "develop")
8482
)
8583
try store.saveState()
8684
store = try PinsStore(pinsFile: pinsFile, fileSystem: fs)
@@ -94,7 +92,7 @@ final class PinsStoreTests: XCTestCase {
9492

9593
// Test revision pin.
9694
do {
97-
store.pin(packageRef: barRef, state: CheckoutState(revision: revision), productFilter: .specific(["other", "product"]))
95+
store.pin(packageRef: barRef, state: CheckoutState(revision: revision))
9896
try store.saveState()
9997
store = try PinsStore(pinsFile: pinsFile, fileSystem: fs)
10098

@@ -156,7 +154,7 @@ final class PinsStoreTests: XCTestCase {
156154

157155
let fooRef = PackageReference(identity: "foo", path: "/foo")
158156
let revision = Revision(identifier: "81513c8fd220cf1ed1452b98060cd80d3725c5b7")
159-
store.pin(packageRef: fooRef, state: CheckoutState(revision: revision, version: v1), productFilter: .specific([]))
157+
store.pin(packageRef: fooRef, state: CheckoutState(revision: revision, version: v1))
160158

161159
XCTAssert(!fs.exists(pinsFile))
162160

Tests/WorkspaceTests/WorkspaceTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3608,7 +3608,7 @@ final class WorkspaceTests: XCTestCase {
36083608
let revision = try fooRepo.resolveRevision(tag: "1.0.0")
36093609
let newState = CheckoutState(revision: revision, version: "1.0.0")
36103610

3611-
pinsStore.pin(packageRef: fooPin.packageRef, state: newState, productFilter: .specific(["Foo"]))
3611+
pinsStore.pin(packageRef: fooPin.packageRef, state: newState)
36123612
try pinsStore.saveState()
36133613
}
36143614

0 commit comments

Comments
 (0)