Skip to content
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

Implement --checksum option on swift sdk install #7722

Merged
merged 7 commits into from
Jul 27, 2024

Conversation

MaxDesiatov
Copy link
Contributor

@MaxDesiatov MaxDesiatov commented Jun 27, 2024

Motivation:

This option was specified in the corresponding proposal for Swift SDKs:

For Swift SDKs installed from remote URLs an additional --checksum option is required, through which users of a Swift SDK can specify a checksum provided by a publisher of the SDK. The latter can produce a checksum by running swift package compute-checksum command (introduced in SE-0272) with the Swift SDK bundle archive as an argument.

Modifications:

Added isFileSupported method on Archiver to unify archive extensions matching logic between swift package compute-checksum and swift sdk install.

Refactored checksum computation logic into static func checksum on Workspace.BinaryArtifactsManager to also unify it between the two commands.

Added error and output handling for checksums in func SwiftSDKBundleStore.installIfValid, updated corresponding unit tests.

Result:

Resolves rdar://130590711

This option [was specified in the corresponding proposal for Swift SDKs](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0387-cross-compilation-destinations.md#swift-sdk-installation-and-configuration):

> For Swift SDKs installed from remote URLs an additional `--checksum` option is required, through which users of a Swift SDK can specify a checksum provided by a publisher of the SDK. The latter can produce a checksum by running `swift package compute-checksum command` (introduced in [SE-0272](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0272-swiftpm-binary-dependencies.md)) with the Swift SDK bundle archive as an argument.
@MaxDesiatov
Copy link
Contributor Author

@swift-ci test

@MaxDesiatov
Copy link
Contributor Author

@swift-ci test windows

1 similar comment
@kateinoigakukun
Copy link
Member

@swift-ci test windows

Co-authored-by: Alastair Houghton <ahoughton@apple.com>
@MaxDesiatov MaxDesiatov requested a review from al45tair June 28, 2024 12:01
@MaxDesiatov
Copy link
Contributor Author

@swift-ci test

@MaxDesiatov
Copy link
Contributor Author

@swift-ci test windows

MaxDesiatov added a commit that referenced this pull request Jul 3, 2024
This feature [was specified in the corresponding proposal for Swift
SDKs](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0387-cross-compilation-destinations.md#swift-sdk-installation-and-configuration):

> For Swift SDKs installed from remote URLs an additional `--checksum`
option is required, through which users of a Swift SDK can specify a
checksum provided by a publisher of the SDK. The latter can produce a
checksum by running `swift package compute-checksum` command (introduced
in
[SE-0272](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0272-swiftpm-binary-dependencies.md))
with the Swift SDK bundle archive as an argument.

Currently, `swift package compute-checksum` is unable to handle
`.tar.gz` bundles, which is a commonly used format for Swift SDKs. We're
fixing that here by adding correct and unified handling for archive
extensions.

This change is isolated to the `swift package compute-checksum`
subcommand. The `--checksum` option is added in a subsequent PR:
#7722.
MaxDesiatov added a commit that referenced this pull request Jul 3, 2024
Cherry-pick of
#7748.

**Explanation**: This feature [was specified in the corresponding
proposal for Swift
SDKs](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0387-cross-compilation-destinations.md#swift-sdk-installation-and-configuration):

> For Swift SDKs installed from remote URLs an additional `--checksum`
option is required, through which users of a Swift SDK can specify a
checksum provided by a publisher of the SDK. The latter can produce a
checksum by running `swift package compute-checksum` command (introduced
in
[SE-0272](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0272-swiftpm-binary-dependencies.md))
with the Swift SDK bundle archive as an argument.

Currently, `swift package compute-checksum` is unable to handle
`.tar.gz` bundles, which is a commonly used format for Swift SDKs. We're
fixing that here by adding correct and unified handling for archive
extensions.

This change is isolated to the `swift package compute-checksum`
subcommand. The `--checksum` option is added in a subsequent PR:
#7722.

**Scope**: Isolated to `swift package compute-checksum` subcommand.
**Risk**: Low, no existing behavior is 
**Testing**: Automated test cases modified/added and passing in a
subsequent PR:
#7723
**Issue**: rdar://130590711
**Reviewer**: @bnbarham
@MaxDesiatov
Copy link
Contributor Author

@swift-ci test

@MaxDesiatov
Copy link
Contributor Author

@swift-ci test windows

…o maxd/checksum-swift-sdk

# Conflicts:
#	Tests/PackageModelTests/SwiftSDKBundleTests.swift
@MaxDesiatov
Copy link
Contributor Author

@swift-ci test

@MaxDesiatov
Copy link
Contributor Author

@swift-ci test windows

…package-manager into maxd/checksum-swift-sdk

# Conflicts:
#	Tests/PackageModelTests/SwiftSDKBundleTests.swift
@MaxDesiatov
Copy link
Contributor Author

@swift-ci test

@MaxDesiatov MaxDesiatov enabled auto-merge (squash) July 26, 2024 16:15
@MaxDesiatov
Copy link
Contributor Author

@swift-ci test windows

@MaxDesiatov
Copy link
Contributor Author

MaxDesiatov commented Jul 26, 2024

CI failure looks unrelated:

/Users/ec2-user/jenkins/workspace/swift-package-manager-PR-macos-smoke-test/branch-main/
sourcekit-lsp/Sources/SourceKitLSP/Rename.swift:625:40: 
error: type 'Symbol' does not conform to the 'Sendable' protocol

MaxDesiatov added a commit that referenced this pull request Jul 26, 2024
Cherry-pick of
#7722.

**Explanation**: This option [was specified in the corresponding
proposal for Swift
SDKs](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0387-cross-compilation-destinations.md#swift-sdk-installation-and-configuration):

> For Swift SDKs installed from remote URLs an additional `--checksum`
option is required, through which users of a Swift SDK can specify a
checksum provided by a publisher of the SDK. The latter can produce a
checksum by running `swift package compute-checksum command` (introduced
in
[SE-0272](https://github.com/swiftlang/swift-evolution/blob/main/proposals/0272-swiftpm-binary-dependencies.md))
with the Swift SDK bundle archive as an argument.

**Scope**: the change is isolated to `swift sdk install` and `swift
package compute-checksum` subcommands.
**Risk**: low due to isolation to only two rarely used subcommands with
corresponding automated test cases provided.
**Testing**: updated existing test cases.
**Issue**: rdar://130590711
**Reviewer**: @bnbarham
@MaxDesiatov
Copy link
Contributor Author

@swift-ci test

@MaxDesiatov MaxDesiatov merged commit a2aa745 into main Jul 27, 2024
5 checks passed
@MaxDesiatov MaxDesiatov deleted the maxd/checksum-swift-sdk branch July 27, 2024 04:18
MaxDesiatov added a commit that referenced this pull request Sep 3, 2024
…` item

`CHANGELOG.md` had a broken link. Additionally, `swift sdk install --checksum` change introduced in #7722 seems to be changelog-worthy, but was previously missing.
MaxDesiatov added a commit that referenced this pull request Sep 4, 2024
…7935)

`CHANGELOG.md` had a broken link. Additionally, `swift sdk install --checksum` change introduced in #7722 seems to be changelog-worthy, but was previously missing.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants