Skip to content

Implement --checksum option on swift sdk install#7722

Merged
MaxDesiatov merged 7 commits into
mainfrom
maxd/checksum-swift-sdk
Jul 27, 2024
Merged

Implement --checksum option on swift sdk install#7722
MaxDesiatov merged 7 commits into
mainfrom
maxd/checksum-swift-sdk

Conversation

@MaxDesiatov

@MaxDesiatov MaxDesiatov commented Jun 27, 2024

Copy link
Copy Markdown
Contributor

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
Copy Markdown
Contributor Author

@swift-ci test

@MaxDesiatov

Copy link
Copy Markdown
Contributor Author

@swift-ci test windows

1 similar comment
@kateinoigakukun

Copy link
Copy Markdown
Member

@swift-ci test windows

Comment thread Sources/PackageModel/SwiftSDKs/SwiftSDK.swift Outdated
Co-authored-by: Alastair Houghton <ahoughton@apple.com>
@MaxDesiatov MaxDesiatov requested a review from al45tair June 28, 2024 12:01
@MaxDesiatov

Copy link
Copy Markdown
Contributor Author

@swift-ci test

@MaxDesiatov

Copy link
Copy Markdown
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
Copy Markdown
Contributor Author

@swift-ci test

@MaxDesiatov

Copy link
Copy Markdown
Contributor Author

@swift-ci test windows

…o maxd/checksum-swift-sdk

# Conflicts:
#	Tests/PackageModelTests/SwiftSDKBundleTests.swift
@MaxDesiatov

Copy link
Copy Markdown
Contributor Author

@swift-ci test

@MaxDesiatov

Copy link
Copy Markdown
Contributor Author

@swift-ci test windows

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

# Conflicts:
#	Tests/PackageModelTests/SwiftSDKBundleTests.swift
@MaxDesiatov

Copy link
Copy Markdown
Contributor Author

@swift-ci test

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

Copy link
Copy Markdown
Contributor Author

@swift-ci test windows

@MaxDesiatov

MaxDesiatov commented Jul 26, 2024

Copy link
Copy Markdown
Contributor Author

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
Copy Markdown
Contributor Author

@swift-ci test

@MaxDesiatov MaxDesiatov merged commit a2aa745 into main Jul 27, 2024
@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