Remove accidental dependency on NIOFileSystem #298
Merged
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.
swift-nio's public export of NIOFileSystem was removed in 2.86.1: apple/swift-nio#3370
NIOFileSystem was not yet supposed to be public, but _NIOFileSystem depended on it as a public import. This made it possible for
containerization
to see theNIOFileSystem
package by accident.Replacing the use of
NIOFileSystem
by_NIOFileSystem
, as used elsewhere, fixes the problem.Why does CI currently pass?
The change in
swift-nio
does not currently causecontainerization
's CI to fail becausePackage.resolved
pinsswift-nio
to 2.83.0, before the change was made. New versions of upstream dependencies will not be tested untilPackage.resolved
is explicitly updated.When containerization is built as a dependency of a end-user project, its
Package.resolved
file is ignored. Instead, the dependency constraints from containerization's Package.swift file are combined with those of the project and any other library dependencies, so SwiftPM or Xcode can find a set of mutually compatible packages. This can lead to new versions of containerization's upstream dependencies being used, even though those versions have never been tested in CI.The build failure can be demonstrated by creating a new package which depends on
containerization
but does not constrain package versions: