Skip to content

[DO NOT MERGE] Test creating 'fingerprints' dir #3938

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions Sources/Basics/FileSystem+Extensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,6 @@ extension FileSystem {
public var dotSwiftPM: AbsolutePath {
self.homeDirectory.appending(component: ".swiftpm")
}

/// SwiftPM security directory
public var swiftPMSecurityDirectory: AbsolutePath {
self.dotSwiftPM.appending(component: "security")
}
}

// MARK: - cache
Expand Down Expand Up @@ -117,6 +112,19 @@ extension FileSystem {
}
}

// MARK: - security

extension FileSystem {
/// SwiftPM security directory
public var swiftPMSecurityDirectory: AbsolutePath {
self.dotSwiftPM.appending(component: "security")
}

public var swiftPMFingerprintsDirectory: AbsolutePath {
self.swiftPMSecurityDirectory.appending(component: "fingerprints")
}
}

// MARK: - Utilities

extension FileSystem {
Expand Down
24 changes: 12 additions & 12 deletions Sources/Commands/SwiftTool.swift
Original file line number Diff line number Diff line change
Expand Up @@ -641,16 +641,18 @@ public class SwiftTool {
}
}

private func getSharedSecurityDirectory() throws -> AbsolutePath? {
private func getSharedFingerprintsDirectory() throws -> AbsolutePath? {
do {
let fileSystem = localFileSystem
let sharedSecurityDirectory = fileSystem.swiftPMSecurityDirectory
if !fileSystem.exists(sharedSecurityDirectory) {
try fileSystem.createDirectory(sharedSecurityDirectory, recursive: true)
let sharedFingerprintsDirectory = fileSystem.swiftPMFingerprintsDirectory
if !fileSystem.exists(sharedFingerprintsDirectory) {
try fileSystem.createDirectory(sharedFingerprintsDirectory, recursive: true)
}
return sharedSecurityDirectory
// And make sure we can lock the directory (which writes a lock file)
try fileSystem.withLock(on: sharedFingerprintsDirectory, type: .exclusive) { }
return sharedFingerprintsDirectory
} catch {
self.observabilityScope.emit(warning: "Failed creating shared security directory: \(error)")
self.observabilityScope.emit(warning: "Failed creating shared fingerprints directory: \(error)")
return .none
}
}
Expand All @@ -662,22 +664,20 @@ public class SwiftTool {
}

let delegate = ToolWorkspaceDelegate(self.outputStream, logLevel: self.logLevel, observabilityScope: self.observabilityScope)
let provider = GitRepositoryProvider(processSet: processSet)
// FIXME: rdar://86367436
//let sharedSecurityDirectory = try self.getSharedSecurityDirectory()
let sharedSecurityDirectory: AbsolutePath? = nil
let provider = GitRepositoryProvider(processSet: processSet)
let sharedCacheDirectory = try self.getSharedCacheDirectory()
let sharedConfigurationDirectory = try self.getSharedConfigurationDirectory()
let sharedFingerprintsDirectory = try self.getSharedFingerprintsDirectory()
let isXcodeBuildSystemEnabled = self.options.buildSystem == .xcode
let workspace = try Workspace(
fileSystem: localFileSystem,
location: .init(
workingDirectory: buildPath,
editsDirectory: self.editsDirectory(),
resolvedVersionsFile: self.resolvedVersionsFile(),
sharedSecurityDirectory: sharedSecurityDirectory,
sharedCacheDirectory: sharedCacheDirectory,
sharedConfigurationDirectory: sharedConfigurationDirectory
sharedConfigurationDirectory: sharedConfigurationDirectory,
sharedFingerprintsDirectory: sharedFingerprintsDirectory
),
mirrors: self.getMirrorsConfig(sharedConfigurationDirectory: sharedConfigurationDirectory).mirrors,
registries: try self.getRegistriesConfig(sharedConfigurationDirectory: sharedConfigurationDirectory).configuration,
Expand Down
4 changes: 2 additions & 2 deletions Sources/SPMTestSupport/MockWorkspace.swift
Original file line number Diff line number Diff line change
Expand Up @@ -239,9 +239,9 @@ public final class MockWorkspace {
workingDirectory: self.sandbox.appending(component: ".build"),
editsDirectory: self.sandbox.appending(component: "edits"),
resolvedVersionsFile: self.sandbox.appending(component: "Package.resolved"),
sharedSecurityDirectory: self.fileSystem.swiftPMSecurityDirectory,
sharedCacheDirectory: self.fileSystem.swiftPMCacheDirectory,
sharedConfigurationDirectory: self.fileSystem.swiftPMConfigDirectory
sharedConfigurationDirectory: self.fileSystem.swiftPMConfigDirectory,
sharedFingerprintsDirectory: self.fileSystem.swiftPMFingerprintsDirectory
),
mirrors: self.mirrors,
customToolsVersion: self.toolsVersion,
Expand Down
4 changes: 2 additions & 2 deletions Sources/Workspace/Workspace.swift
Original file line number Diff line number Diff line change
Expand Up @@ -417,9 +417,9 @@ public class Workspace {
workingDirectory: dataPath,
editsDirectory: editablesPath,
resolvedVersionsFile: pinsFile,
sharedSecurityDirectory: fileSystem.swiftPMSecurityDirectory,
sharedCacheDirectory: cachePath,
sharedConfigurationDirectory: nil // legacy
sharedConfigurationDirectory: nil, // legacy
sharedFingerprintsDirectory: fileSystem.swiftPMFingerprintsDirectory
),
mirrors: config?.mirrors,
authorizationProvider: netrcFilePath.map {
Expand Down
23 changes: 9 additions & 14 deletions Sources/Workspace/WorkspaceConfiguration.swift
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@ extension Workspace {

/// Path to the Package.resolved file.
public var resolvedVersionsFile: AbsolutePath

/// Path to the shared security directory
public var sharedSecurityDirectory: AbsolutePath?

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

/// Path to the shared configuration directory
public var sharedConfigurationDirectory: AbsolutePath?

/// Path to the shared fingerprints directory
public var sharedFingerprintsDirectory: AbsolutePath?

/// Path to the repositories clones.
public var repositoriesDirectory: AbsolutePath {
Expand All @@ -59,11 +59,6 @@ extension Workspace {
public var artifactsDirectory: AbsolutePath {
self.workingDirectory.appending(component: "artifacts")
}

/// Path to the shared fingerprints directory.
public var sharedFingerprintsDirectory: AbsolutePath? {
self.sharedSecurityDirectory.map { $0.appending(component: "fingerprints") }
}

/// Path to the shared repositories cache.
public var sharedRepositoriesCacheDirectory: AbsolutePath? {
Expand Down Expand Up @@ -96,23 +91,23 @@ extension Workspace {
/// - workingDirectory: Path to working directory for this workspace.
/// - editsDirectory: Path to store the editable versions of dependencies.
/// - resolvedVersionsFile: Path to the Package.resolved file.
/// - sharedSecurityDirectory: Path to the shared security directory.
/// - sharedCacheDirectory: Path to the shared cache directory.
/// - sharedConfigurationDirectory: Path to the shared configuration directory.
/// - sharedFingerprintsDirectory: Path to the shared fingerprints directory.
public init(
workingDirectory: AbsolutePath,
editsDirectory: AbsolutePath,
resolvedVersionsFile: AbsolutePath,
sharedSecurityDirectory: AbsolutePath?,
sharedCacheDirectory: AbsolutePath?,
sharedConfigurationDirectory: AbsolutePath?
sharedConfigurationDirectory: AbsolutePath?,
sharedFingerprintsDirectory: AbsolutePath?
) {
self.workingDirectory = workingDirectory
self.editsDirectory = editsDirectory
self.resolvedVersionsFile = resolvedVersionsFile
self.sharedSecurityDirectory = sharedSecurityDirectory
self.sharedCacheDirectory = sharedCacheDirectory
self.sharedConfigurationDirectory = sharedConfigurationDirectory
self.sharedFingerprintsDirectory = sharedFingerprintsDirectory
}

/// Create a new workspace location.
Expand All @@ -124,9 +119,9 @@ extension Workspace {
workingDirectory: DefaultLocations.workingDirectory(forRootPackage: rootPath),
editsDirectory: DefaultLocations.editsDirectory(forRootPackage: rootPath),
resolvedVersionsFile: DefaultLocations.resolvedVersionsFile(forRootPackage: rootPath),
sharedSecurityDirectory: fileSystem.swiftPMSecurityDirectory,
sharedCacheDirectory: fileSystem.swiftPMCacheDirectory,
sharedConfigurationDirectory: fileSystem.swiftPMConfigDirectory
sharedConfigurationDirectory: fileSystem.swiftPMConfigDirectory,
sharedFingerprintsDirectory: fileSystem.swiftPMFingerprintsDirectory
)
}
}
Expand Down