You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is it reproducible with SwiftPM command-line tools: swift build, swift test, swift package etc?
Confirmed reproduction steps with SwiftPM CLI. The description text must include reproduction steps with either of command-line SwiftPM commands, swift build, swift test, swift package etc.
Description
The conditions under which this issue occurs are complex, but we were able to create a project that reproduces it. You can reproduce it with the following repository:
$ git clone https://github.com/omochi/swift-deps-rebuild-bug
$ cd swift-deps-rebuild-bug
$ ./repro.bash
If a link error appears at the end of the script execution, the issue has occurred.
Below, the repository structure and the script’s process are explained.
This project consists of two packages:
the AppPackage package, which implements the main application,
and the ToyboxPackage package, which is referenced as a dependency via a local relative path.
Initially, AppPackage can be built with $ swift build.
Next, add b: Int = 0 as an argument to ToyboxCore.toyDebug.
Since this is a source-compatible change, it is expected that AppPackage can be built again without modification using $ swift build.
However, in practice, a link error occurs as shown below:
error: link command failed with exit code 1 (use -v to see invocation)
Undefined symbols for architecture arm64:
"ToyboxCore.toyDebug(a: Swift.Int) -> ()", referenced from:
AppModule.App.main() -> () in App.swift.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
error: fatalError
[9/14] Linking app
In this state, you cannot proceed without performing $ swift package clean.
In a practical setting, this breaks incremental builds and forces a rebuild of thousands of files, which is very inconvenient.
Expected behavior
In an originally buildable project, after making source-compatible changes, running $ swift build again should succeed.
Actual behavior
Link errors may occur.
Steps to reproduce
$ git clone https://github.com/omochi/swift-deps-rebuild-bug
$ cd swift-deps-rebuild-bug
$ ./repro.bash
Swift Package Manager version/commit hash
Swift Package Manager - Swift 5.10.0-dev
Swift & OS version (output of swift --version ; uname -a)
swift-driver version: 1.90.11.1 Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
Target: arm64-apple-macosx14.0
Darwin omochi-mbp.local 23.5.0 Darwin Kernel Version 23.5.0: Wed May 1 20:14:38 PDT 2024; root:xnu-10063.121.3~5/RELEASE_ARM64_T6020 arm64
The text was updated successfully, but these errors were encountered:
Is it reproducible with SwiftPM command-line tools:
swift build
,swift test
,swift package
etc?swift build
,swift test
,swift package
etc.Description
The conditions under which this issue occurs are complex, but we were able to create a project that reproduces it. You can reproduce it with the following repository:
https://github.com/omochi/swift-deps-rebuild-bug
Follow these steps to reproduce the issue:
$ git clone https://github.com/omochi/swift-deps-rebuild-bug $ cd swift-deps-rebuild-bug $ ./repro.bash
If a link error appears at the end of the script execution, the issue has occurred.
Below, the repository structure and the script’s process are explained.
This project consists of two packages:
the
AppPackage
package, which implements the main application,and the
ToyboxPackage
package, which is referenced as a dependency via a local relative path.Initially,
AppPackage
can be built with$ swift build
.Next, add
b: Int = 0
as an argument toToyboxCore.toyDebug
.Since this is a source-compatible change, it is expected that
AppPackage
can be built again without modification using$ swift build
.However, in practice, a link error occurs as shown below:
In this state, you cannot proceed without performing
$ swift package clean
.In a practical setting, this breaks incremental builds and forces a rebuild of thousands of files, which is very inconvenient.
Expected behavior
In an originally buildable project, after making source-compatible changes, running
$ swift build
again should succeed.Actual behavior
Link errors may occur.
Steps to reproduce
$ git clone https://github.com/omochi/swift-deps-rebuild-bug $ cd swift-deps-rebuild-bug $ ./repro.bash
Swift Package Manager version/commit hash
Swift Package Manager - Swift 5.10.0-dev
Swift & OS version (output of
swift --version ; uname -a
)swift-driver version: 1.90.11.1 Apple Swift version 5.10 (swiftlang-5.10.0.13 clang-1500.3.9.4)
Target: arm64-apple-macosx14.0
Darwin omochi-mbp.local 23.5.0 Darwin Kernel Version 23.5.0: Wed May 1 20:14:38 PDT 2024; root:xnu-10063.121.3~5/RELEASE_ARM64_T6020 arm64
The text was updated successfully, but these errors were encountered: