Skip to content

Commit 07c4650

Browse files
committed
Test creating 'fingerprints' dir
Motivation: Source compat test continues to fail even with #3928: ``` "You don’t have permission to save the file “fingerprints” in the folder “security” ``` https://ci.swift.org/job/swift-PR-source-compat-suite/5709/artifact/ Not sure how/why, but it seems like `security` directory is created just fine but not the `fingerprints` sub directory (`fingerprints` is a directory not a file, and the code add a file to the `fingerprints` dir for each downloaded package). Modifications: Test creating `fingerprints` directory instead of `security`, and if that fails, disable TOFU feature.
1 parent 0a66149 commit 07c4650

File tree

5 files changed

+36
-35
lines changed

5 files changed

+36
-35
lines changed

Sources/Basics/FileSystem+Extensions.swift

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,6 @@ extension FileSystem {
2020
public var dotSwiftPM: AbsolutePath {
2121
self.homeDirectory.appending(component: ".swiftpm")
2222
}
23-
24-
/// SwiftPM security directory
25-
public var swiftPMSecurityDirectory: AbsolutePath {
26-
self.dotSwiftPM.appending(component: "security")
27-
}
2823
}
2924

3025
// MARK: - cache
@@ -117,6 +112,19 @@ extension FileSystem {
117112
}
118113
}
119114

115+
// MARK: - security
116+
117+
extension FileSystem {
118+
/// SwiftPM security directory
119+
public var swiftPMSecurityDirectory: AbsolutePath {
120+
self.dotSwiftPM.appending(component: "security")
121+
}
122+
123+
public var swiftPMFingerprintsDirectory: AbsolutePath {
124+
self.swiftPMSecurityDirectory.appending(component: "fingerprints")
125+
}
126+
}
127+
120128
// MARK: - Utilities
121129

122130
extension FileSystem {

Sources/Commands/SwiftTool.swift

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -641,16 +641,16 @@ public class SwiftTool {
641641
}
642642
}
643643

644-
private func getSharedSecurityDirectory() throws -> AbsolutePath? {
644+
private func getSharedFingerprintsDirectory() throws -> AbsolutePath? {
645645
do {
646646
let fileSystem = localFileSystem
647-
let sharedSecurityDirectory = fileSystem.swiftPMSecurityDirectory
648-
if !fileSystem.exists(sharedSecurityDirectory) {
649-
try fileSystem.createDirectory(sharedSecurityDirectory, recursive: true)
647+
let sharedFingerprintsDirectory = fileSystem.swiftPMFingerprintsDirectory
648+
if !fileSystem.exists(sharedFingerprintsDirectory) {
649+
try fileSystem.createDirectory(sharedFingerprintsDirectory, recursive: true)
650650
}
651-
return sharedSecurityDirectory
651+
return sharedFingerprintsDirectory
652652
} catch {
653-
self.observabilityScope.emit(warning: "Failed creating shared security directory: \(error)")
653+
self.observabilityScope.emit(warning: "Failed creating shared fingerprints directory: \(error)")
654654
return .none
655655
}
656656
}
@@ -662,22 +662,20 @@ public class SwiftTool {
662662
}
663663

664664
let delegate = ToolWorkspaceDelegate(self.outputStream, logLevel: self.logLevel, observabilityScope: self.observabilityScope)
665-
let provider = GitRepositoryProvider(processSet: processSet)
666-
// FIXME: rdar://86367436
667-
//let sharedSecurityDirectory = try self.getSharedSecurityDirectory()
668-
let sharedSecurityDirectory: AbsolutePath? = nil
665+
let provider = GitRepositoryProvider(processSet: processSet)
669666
let sharedCacheDirectory = try self.getSharedCacheDirectory()
670667
let sharedConfigurationDirectory = try self.getSharedConfigurationDirectory()
668+
let sharedFingerprintsDirectory = try self.getSharedFingerprintsDirectory()
671669
let isXcodeBuildSystemEnabled = self.options.buildSystem == .xcode
672670
let workspace = try Workspace(
673671
fileSystem: localFileSystem,
674672
location: .init(
675673
workingDirectory: buildPath,
676674
editsDirectory: self.editsDirectory(),
677675
resolvedVersionsFile: self.resolvedVersionsFile(),
678-
sharedSecurityDirectory: sharedSecurityDirectory,
679676
sharedCacheDirectory: sharedCacheDirectory,
680-
sharedConfigurationDirectory: sharedConfigurationDirectory
677+
sharedConfigurationDirectory: sharedConfigurationDirectory,
678+
sharedFingerprintsDirectory: sharedFingerprintsDirectory
681679
),
682680
mirrors: self.getMirrorsConfig(sharedConfigurationDirectory: sharedConfigurationDirectory).mirrors,
683681
registries: try self.getRegistriesConfig(sharedConfigurationDirectory: sharedConfigurationDirectory).configuration,

Sources/SPMTestSupport/MockWorkspace.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,9 +239,9 @@ public final class MockWorkspace {
239239
workingDirectory: self.sandbox.appending(component: ".build"),
240240
editsDirectory: self.sandbox.appending(component: "edits"),
241241
resolvedVersionsFile: self.sandbox.appending(component: "Package.resolved"),
242-
sharedSecurityDirectory: self.fileSystem.swiftPMSecurityDirectory,
243242
sharedCacheDirectory: self.fileSystem.swiftPMCacheDirectory,
244-
sharedConfigurationDirectory: self.fileSystem.swiftPMConfigDirectory
243+
sharedConfigurationDirectory: self.fileSystem.swiftPMConfigDirectory,
244+
sharedFingerprintsDirectory: self.fileSystem.swiftPMFingerprintsDirectory
245245
),
246246
mirrors: self.mirrors,
247247
customToolsVersion: self.toolsVersion,

Sources/Workspace/Workspace.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -417,9 +417,9 @@ public class Workspace {
417417
workingDirectory: dataPath,
418418
editsDirectory: editablesPath,
419419
resolvedVersionsFile: pinsFile,
420-
sharedSecurityDirectory: fileSystem.swiftPMSecurityDirectory,
421420
sharedCacheDirectory: cachePath,
422-
sharedConfigurationDirectory: nil // legacy
421+
sharedConfigurationDirectory: nil, // legacy
422+
sharedFingerprintsDirectory: fileSystem.swiftPMFingerprintsDirectory
423423
),
424424
mirrors: config?.mirrors,
425425
authorizationProvider: netrcFilePath.map {

Sources/Workspace/WorkspaceConfiguration.swift

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ extension Workspace {
3030

3131
/// Path to the Package.resolved file.
3232
public var resolvedVersionsFile: AbsolutePath
33-
34-
/// Path to the shared security directory
35-
public var sharedSecurityDirectory: AbsolutePath?
3633

3734
/// Path to the shared cache directory
3835
public var sharedCacheDirectory: AbsolutePath?
3936

4037
/// Path to the shared configuration directory
4138
public var sharedConfigurationDirectory: AbsolutePath?
39+
40+
/// Path to the shared fingerprints directory
41+
public var sharedFingerprintsDirectory: AbsolutePath?
4242

4343
/// Path to the repositories clones.
4444
public var repositoriesDirectory: AbsolutePath {
@@ -59,11 +59,6 @@ extension Workspace {
5959
public var artifactsDirectory: AbsolutePath {
6060
self.workingDirectory.appending(component: "artifacts")
6161
}
62-
63-
/// Path to the shared fingerprints directory.
64-
public var sharedFingerprintsDirectory: AbsolutePath? {
65-
self.sharedSecurityDirectory.map { $0.appending(component: "fingerprints") }
66-
}
6762

6863
/// Path to the shared repositories cache.
6964
public var sharedRepositoriesCacheDirectory: AbsolutePath? {
@@ -96,23 +91,23 @@ extension Workspace {
9691
/// - workingDirectory: Path to working directory for this workspace.
9792
/// - editsDirectory: Path to store the editable versions of dependencies.
9893
/// - resolvedVersionsFile: Path to the Package.resolved file.
99-
/// - sharedSecurityDirectory: Path to the shared security directory.
10094
/// - sharedCacheDirectory: Path to the shared cache directory.
10195
/// - sharedConfigurationDirectory: Path to the shared configuration directory.
96+
/// - sharedFingerprintsDirectory: Path to the shared fingerprints directory.
10297
public init(
10398
workingDirectory: AbsolutePath,
10499
editsDirectory: AbsolutePath,
105100
resolvedVersionsFile: AbsolutePath,
106-
sharedSecurityDirectory: AbsolutePath?,
107101
sharedCacheDirectory: AbsolutePath?,
108-
sharedConfigurationDirectory: AbsolutePath?
102+
sharedConfigurationDirectory: AbsolutePath?,
103+
sharedFingerprintsDirectory: AbsolutePath?
109104
) {
110105
self.workingDirectory = workingDirectory
111106
self.editsDirectory = editsDirectory
112107
self.resolvedVersionsFile = resolvedVersionsFile
113-
self.sharedSecurityDirectory = sharedSecurityDirectory
114108
self.sharedCacheDirectory = sharedCacheDirectory
115109
self.sharedConfigurationDirectory = sharedConfigurationDirectory
110+
self.sharedFingerprintsDirectory = sharedFingerprintsDirectory
116111
}
117112

118113
/// Create a new workspace location.
@@ -124,9 +119,9 @@ extension Workspace {
124119
workingDirectory: DefaultLocations.workingDirectory(forRootPackage: rootPath),
125120
editsDirectory: DefaultLocations.editsDirectory(forRootPackage: rootPath),
126121
resolvedVersionsFile: DefaultLocations.resolvedVersionsFile(forRootPackage: rootPath),
127-
sharedSecurityDirectory: fileSystem.swiftPMSecurityDirectory,
128122
sharedCacheDirectory: fileSystem.swiftPMCacheDirectory,
129-
sharedConfigurationDirectory: fileSystem.swiftPMConfigDirectory
123+
sharedConfigurationDirectory: fileSystem.swiftPMConfigDirectory,
124+
sharedFingerprintsDirectory: fileSystem.swiftPMFingerprintsDirectory
130125
)
131126
}
132127
}

0 commit comments

Comments
 (0)