-
Notifications
You must be signed in to change notification settings - Fork 1.4k
6.2 merge main #8608
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
Open
dschaefer2
wants to merge
97
commits into
swiftlang:release/6.2
Choose a base branch
from
dschaefer2:6.2-merge-main
base: release/6.2
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
6.2 merge main #8608
+12,826
−5,899
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…g#8449) ### Motivation: Some of the `SwiftBuildSupport/PIFBuilder.swift` encoding/decoding code was using unsafe string keys. This replaces with proper typesafe keys. This part of the ground work to support the new PIF builder in `SwiftBuildSupport` (i.e., rdar://147527170). ### Modifications: When conforming to `Codable`, replace string keys with `enum` based keys instead. ### Result: The resulting code is a tad safer and easier to understand :-) Tracked by rdar://148546582.
…wiftlang#8441) ### Motivation: The goal is to adopt the new `SwiftBuild.ProjectModel` API. This new API provides a *typesafer* and *modern* way of building PIFs programmatically. This continues the work I started in PR swiftlang#8405, introducing now our new PIF builder for packages. ### Modifications: Replaces all `SwiftBuild.PIF` (aka, `SWBProjectModel.PIF`) API usage, in `PackagePIFBuilder`, with the new `SwiftBuild.ProjectModel` API instead. ### Result: `PackagePIFBuilder` is now modernized... but still not actually used. This will come in my next pull request. Tracked by rdar://147526957.
Some tests in Tests/SourceControlTests are passing on Windows since upgrading the Git Version in the associated docker image, which was completd in https://github.com/swiftlang/swift-docker/pulls/452 Enable the tests that are skipped. Relates to: swiftlang#8433 rdar://148248105
…swiftlang#8462) This updates and clarifies the [Version-specific Manifest Selection](https://github.com/swiftlang/swift-package-manager/blob/main/Documentation/Usage.md#version-specific-manifest-selection) section of the usage documentation to clarify the behavior when having either newer or older tools versions. ### Motivation: In general, when using the versioned manifest feature, it's preferable to have the unversioned `Package.swift` represent the newest-supported tools version, and only use version-specific manifest files for older versions. This provides a better workflow because it allows you to more easily drop support for older versions when ready (by avoiding the need to modify the unversioned file), among other benefits. ### Modifications: - "Reverse" the example shown in this documentation by having the unversioned file be newest. - Modernize the version numbers shown in examples. - Fix some non-inclusive language usages. - Add a footnote with some helpful historical context, and giving a recommendation.
Enable WorkspaceTests on Windows that, for some reason, previously failed. Relates: swiftlang#8433 rdar://148248105
Enable additional tests on Windows host platform - Enable a few `AsyncProcessTests` - Enable the lone skipped test in `EnvironmentTests` - Enable the only skipped test in `Tests/SourceKitLSPAPITests/SourceKitLSPAPITests.swift` - Enable the only skipped test in `Tests/BuildTests/BuildSystemDelegateTests.swift` - Enable the lone skipped test in `Tests/BuildTests/LLBuildManifestBuilderTests.swift` - Replace usages of `fixwin` with `AbsolutePath.pathString` Related to: swiftlang#8433 rdar://148248105
Remove hardcoded WASI sysroot path derivation just for wasi-sysroot embedded in toolchains ### Motivation: The previous implementation assumed there is $TOOLCHAIN_ROOT/share/wasi-sysroot when `--triple wasm32-unknown-wasi` is passed, but this is no longer the case with the [deprecation of the Wasm toolchain installation](swiftwasm/swift#5604) in favor of Swift SDKs. Due to this unnecessary branch, when `--triple wasm32-unknown-wasi` is passed together with `--swift-sdk`, `--swift-sdk` is just ignored: swiftlang#8465 ### Modifications: This change removes the hardcoded path derivation for the WASI sysroot from the `SwiftSDK.deriveTargetSwiftSDK` method. ### Result: When `--triple wasm32-unknown-wasi` is passed without `--swift-sdk`, no user visible change and they will keep getting the following: ``` error: emit-module command failed with exit code 1 (use -v to see invocation) <unknown>:0: warning: libc not found for 'wasm32-unknown-wasi'; C stdlib may be unavailable <unknown>:0: error: unable to load standard library for target 'wasm32-unknown-wasi' ``` When `--triple wasm32-unknown-wasi` is passed together with `--swift-sdk`, `--triple` is ignored and `--swift-sdk` is respected.
Until swiftlang#8223 is fixed copy some helpers from `IntergrationTests/Source/IntegrationTests` to `Test/_InternalTestSupport` so we can re-use the functionality. Related to: swiftlang#8433 rdar://148248105
…8472) We were including flags to hook up modulemaps and include files to C library dependencies in macros and plugin tools through to the modules that depend on those. This adds the capability to prune the depth first searches through the dependencies to ensure these are skipped when crossing macro and plugin boundaries.
Until swiftlang#8223 is fixed copy some helpers from `IntergrationTests/Source/IntegrationTests` to `Test/_InternalTestSupport` so we can re-use the functionality. Related to: swiftlang#8433 rdar://148248105 Test with: swiftlang/swift#80717
Fixed up incorrect wording: 1. Wasm is not an acronym, thus it's not uppercased [per the spec](https://webassembly.github.io/spec/core/intro/introduction.html#wasm). 2. Existing Swift SDKs support only WASI, while WASI-less Wasm modules can be created with Embedded Swift and Swift SDKs are not needed for that.
### Motivation: Ensure swiftpm bootstraps successfully to fully build an OpenBSD toolchain. ### Modifications: * Add the nobtcfi linker flag to the bootstrap script for OpenBSD. This is unconditional for now since swiftpm uses Concurrency liberally and this triggers #80059, so swiftpm only builds on the configuration where BTCFI is disabled. We can revisit some of that perhaps later. * Ensure SPMSQLite3 builds with the correct link library search path flag in CMakeLists.txt. * Update Package.swift conditionals for SPMSQLite3. ### Result: swiftpm successfully builds and bootstraps on OpenBSD.
The TestCommandTests fail on Linux due to a common linker problem with swift build build system, which is the missing 'main' symbol problem. This is described further detail in swiftlang#8439. Provide the link in the skip messages and remove the TODO tags since the investigation is complete and the reason for the failures is now known. Update the common test case logic so that it dumps the command execution stdout and stderr in the case of failure to help diagnose these result.xml failures immediately in the logs.
### Motivation: Pull request swiftlang#8476 was breaking SwiftPM builds in Xcode (i.e., the _package resolution_ step): <img src="https://github.com/user-attachments/assets/2424e52c-1198-45c2-aa82-68c73ef5e9d6" width=600/> ### Modifications: This reverts commit 1d48e0a.
Split the SerializedJSONTests into tests that pass and fail on Windows Related: swiftlang#8433 rdar://148248105
### Motivation: This improves a bit the error/warning output when building with the new `--build-system swiftbuild`. This was the current output: ```shell warning: unknown Enabling the Swift language feature 'MemberImportVisibility' is recommended; set 'SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES' [] error: path("/Users/pmattos/Development/SampleProjects/SamplePackages/PackageAccessCLI/Sources/ExampleApp/main.swift", fileLocation: Optional(SwiftBuild.SwiftBuildMessage.DiagnosticInfo.Location.FileLocation.textual(line: 6, column: Optional(5)))) cannot find 'bar' in scope [] ``` ...and this is the improved one: ```shell warning: Enabling the Swift language feature 'MemberImportVisibility' is recommended; set 'SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES' error: /Users/pmattos/Development/SampleProjects/SamplePackages/PackageAccessCLI/Sources/ExampleApp/main.swift:5:5 cannot find 'foo2' in scope ``` Eventually, we should consider adopting the error output style from the `--build-system native` instead, i.e.: ```shell /Users/pmattos/Development/SampleProjects/SamplePackages/PackageAccessCLI/Sources/ExampleApp/main.swift:5:5: error: cannot find 'foo2' in scope 3 | print("Hello, world!") 4 | 5 | _ = foo2() | `- error: cannot find 'foo2' in scope 6 | _ = bar() 7 | ``` ### Modifications: These formatting changes are strictly local to the new `SwiftBuildSupport` target. ### Result: Slightly better error formatting :-)
The Swift toolchain installation on swift.org indicate to use swiftly to install the toolchain on macOS and Linux. Update the CONTRIBUTING.md file to refer to swiftly for toolchain management.
I had mucked with the fix to finish some testing and forgot to put the fix back. And the test didn't properly catch that. Fixing both.
…ystem (swiftlang#8421) - this also fixes -enable-library-evolution when used as a unsafeFlags Closes: swiftlang#8337 ### Modifications: sets SWIFT_EMIT_MODULE_INTERFACE build setting when option is set ### Result: the build option will include the .swftinertface files in the module folder
This PR adds support for the `--attachments-path` CLI argument on `swift test` as approved in [ST-0009](https://github.com/swiftlang/swift-evolution/blob/main/proposals/testing/0009-attachments.md). We will maintain support for the older `--experimental-attachments-path` version through Swift 6.2. The implementation of this option is held entirely in Swift Testing at this time, so no actual code is needed to support it, we just need to make sure Swift Argument Parser doesn't complain about it. Resolves rdar://147753584. @plemarquand has integration tests but they're blocked on a newer toolchain; unit testing of this argument exists in the Swift Testing repo.
### Motivation: When running tests ensure the *test fixtures* we copy over to temporary directories don't carry over any previous build information. ### Modifications: When copying packages from `/Fixtures/**` we now ensure we delete any `.build` or `.swiftpm` directories, if any.
Reverts swiftlang#8498 Broke swift-foundation build.
### Motivation: Switch from the legacy PIF builder in `SwiftBuildSupport` to the new one, introduced by PR swiftlang#8405. The new PIF builder (i.e., `SwiftBuildSupport/PackagePIFBuilder*.swift`) is the exact same we use in Xcode. ### Modifications: Replaces the old PIF builder (i.e., `SwiftBuildSupport/PIF.swift` and `SwiftBuildSupport/PIFBuilder.swift` ) with the new one (i.e., `SwiftBuildSupport/PackagePIFBuilder*.swift`). ### Result: The new PIF builder now fully replaces the legacy PIF builder. In particular, all these Swift Build tests are passing (i.e., same as before this PR): * BuildPlanSwiftBuildTests * APIDiffSwiftBuildTests * BuildCommandSwiftBuildTests * PackageCommandSwiftBuildTests * RunCommandSwiftBuildTests * TestCommandSwiftBuildTests I also improved the PIF logging too. Try the `--very-verbose` option to see what I mean :-) Tracked by rdar://147527170.
### Motivation: Reduce noise from solvable warnings. ### Modifications: We should `throw XCTSkip("...")` but `try XCTSkipIf(true, "...")`. The BuildCommandTests was mixing both (i.e., `try XCTSkip("...")`), making the test a nop actually.
This encodes our indentation size and line ending preferences and such. This is an exact copy of the .editorconfig in swift-build, which uses the same conventions.
We are seeing hangs in swift test on Windows. Instead of build-using-self using the underlying toolchain, build swift-test and use that for the tests. When we make improvements to it to fix the underlying problem, we will be able to take advantage of that fix right away.
…plying fix-its (swiftlang#8585) ### Motivation: This is part of the [migration tooling](swiftlang/swift-evolution#2673) initiative for Swift features. ### Modifications: For now, this API accepts a collection of `.dia` files, deserializes them, and applies fix-its in place. Eventually, it is expected to serve the upcoming `swift fixit` and `swift migrate` subcommands and support various filtering options, as well as a stateful, interactive workflow similar to `git add --patch`.
…wiftlang#8582) Guard a test in ManifestSourceGenerationTest based on the compiler version, and annotate skipped tests with a GitHub issue. Also, enable the two Workspace Traits tests that were added after swiftlang#8569 was merged. Relates to: swiftlang#8433 Issue: rdar://148248105
381f46d
to
875bf5f
Compare
Convert the following test suites to Swift Testing - Tests/BasicsTests/ByteStringExtensionsTests.swift - Tests/BasicsTests/ConcurrencyHelpersTests.swift - Tests/BasicsTests/DictionaryTest.swift - Tests/BasicsTests/DispatchTimeTests.swift - Tests/BasicsTests/NetrcTests.swift - Tests/BasicsTests/TripleTests.swift Also, remove the phony and sample Swift Testing tests, which were used to ensure we don't regress.
### Motivation: Helps with applying only certain fix-its i.e. for features in migration mode or concurrency. ### Modifications: - Add `categories: Set<String>` parameter to `SwiftFixIt` initializers that is defaulted to `[]`. ### Result: `swift migrate` can use this to filter based on the feature categories to avoid applying unrelated fix-its.
Convert the Tests/SwiftBuildCoreTests/*.swift, and Tests/_InternalTestSupport/Misc.swift to Swift Testing.
Normalizes the structure of abstracts and the help content for commands ### Motivation: The results from `--help` commands were inconsistent over the past years of organic growth. ### Modifications: All command `help` and `abstracts` strings now use sentence casing and punctuation. --------- Co-authored-by: Bri Peticca <[email protected]>
### Motivation: `swift package migrate` could be used to migrate whole package or its individual targets to use the given feature(s) that support migration mode. This is paired with Swift compiler changes to add `:migration` mode to upcoming/experimental features. ### Modifications: - `UserToolchain` gained an ability to list features supported by the Swift compiler. - Implementation of the `add-setting` package command has been slightly refactored to allow use of manifest modification logic without having to call the command itself. - `ModuleBuildDescription` protocol can now list diagnostic files - Added SwiftMigratedCommand that accepts targets (optional) and features, performs a build and uses the newly added `SwiftFixIt` API to apply fix-its and `AddSwiftSetting` API to enable features. ### Result: SwiftPM gained a new command `swift package migrate --targets <target,...> --to-feature <feature> [--to-feature <...>]`
swiftlang#8629) …e selected features ### Motivation: Use new ability of `SwiftFixIt` to filter by category, to make sure that the command only applies fix-its that are related to the selected features and nothing else. ### Modifications: - `swift package migrate` - Add an argument to `SwiftFixIt` API that lists all of the features selected by the user. ### Result: Even if there are other warnings with a single fix-it the command is not going to apply them i.e. for `var` -> `let` or `<name>` to `_`.
Convert `BasicsTests/Environemnt/*.swift`, `BasicsTests/Graph/*.swift` and a couple other in BasicsTests to Swift Testing
### Motivation: This follows on from my work to convert the registry code to `async` methods. ### Modifications: Switch to using async methods when loading manifests, converting synchronous code to the simpler async equivalents and converting sync API calls to their synchronous versions. ### Result: This resolves several warnings and FIXMEs, makes the code easier to read and generally implements concurrency in a more idiomatic way.
Continue to test conversion to Swift Testing. - Tests/BasicsTests/HTTPClientTests.swift - Tests/BasicsTests/SQLiteBackedCacheTests.swift - Tests/BuildTests/BuildPlanTraversalTests.swift - Tests/BuildTests/LLBuildManifestBuilderTests.swift - Tests/BuildTests/SwiftCompilerOutputParserTests.swift - Tests/BuildTests/WindowsBuildPlanTests.swift - Tests/_AsyncFileSystemTests/AsyncFileSystemTests.swift
### Motivation: Just a minor cleanup in `SwiftBuildSupport/SwiftBuildSystem.swift` file. ### Modifications: Move the `extension PIFBuilderParameters` helper to `PIFBuilder.swift` instead.
…ang#8612) Add more context for validation errors for target properties. ### Motivation: I came across a post https://forums.swift.org/t/getting-error-on-package-resolve/75419 which reports the error message to be not clear. I thought I could clarify the message. ``` error: 'xerr': target 'Penny' contains a value for disallowed property 'settings' ``` ### Modifications: I've updated the message for the error, so it includes more details to narrow down what is the culprit: - highlight that the property depends on the target type - show the value of the property, so that there's a hint what line in the Package.swift lead to the error (for example, linkerSettings or cxxSettings) ### Result: Before: ``` error: 'xerr': target 'Penny' contains a value for disallowed property 'settings' ``` After: ``` error: 'xerr': target 'Penny' is assigned a property 'settings' which is not accepted for the binary target type. The current value of the property has the following representation: [PackageModel.TargetBuildSettingDescription.Setting( tool: PackageModel.TargetBuildSettingDescription.Tool.linker, kind: PackageModel.TargetBuildSettingDescription.Kind.linkedFramework("AVFoundation"), condition: nil)]. ```
…g#8638) ### Motivation: Swift SDK artifact bundle for WASI now supports both embedded and non-embedded modes. Majority of their content is overlapping, thus to avoid duplication they live in the same source tree. Currently, SwiftPM requires that Swift SDKs are located in separate directories, with `swift-sdk.json` metadata at the root of each directory. ### Modification: SwiftPM can now parse Swift SDK metadata that points directly to metadata JSON files instead of their root directories. ### Result: We can avoid changing file system layout in the artifact bundles for WASI and just place sibling "nonembedded.json" and "embedded.json" Swift SDK metadata files in the same directory in their existing layout. The change is transparent to Swift SDK users and is an optional and incremental addition for Swift SDK authors.
Sourcekit-lsp was a consumer of SwiftPM and the project moved to 6.1. Update SwiftPM to the same version.
To get the prebuilts feature out in time for 6.1, the bulk of the work was done on the release/6.1 branch. Cherry pick those changes to the main branch to get 6.2 caught up. This is a manual cherry pick so it's going to be a bit hard to follow. I did a diff between main and release/6.1 and copied all the changes I made there.
875bf5f
to
eb26f4c
Compare
@swift-ci please test linux |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Merge 879236b from main.