I meant from my manifest, but your solution sounds wonderful.
Let me know if there is any way I can help.
I set up some local clones to get a head start on adjusting my own code.
In case it is helpful, these are the changes I have had to make so far:
-
Branch from
swift-5.0-RELEASE
in bothswift-llbuild
andswift-package-manager
. -
Update
swift-llbuild
’s manifest tools version to 5.0. -
Add
linkerSettings: [.linkedLibrary("ncurses")]
toswift-llbuild
’sllvmSupport
target. -
Add
linkerSettings: [.linkedLibrary("sqlite3")]
toswift-llbuild
’sllbuildCore
andllbuildCoreTests
targets. -
Tag a semantic version in
swift-llbuild
. -
Point
swift-package-manager
atswift-llbuild
’s new semver. -
Tag a semantic version in
swift-package-manager
.
After that they will compile as dependencies both in the Package Manager and in generated Xcode projects without any tinkering.
I still have to update my own code to account for the API changes before I can run tests to know if everything is actually working properly or if additional steps are still necessary.
There are two things I am still unsure about:
-
The example
xconfig
inswift-package-manager
also makes reference to a-DSWIFT_PACKAGE
C flag. It did not appear to be necessary (yet), but I am unaware of its intended effect. -
The Game of Life example in
swift-llbuild
has an extra-Xlinker -ltinfo
flag on Linux and skips the-Xlinker -lncurses
used on macOS. I don’t have Swift 5.0 on my Linux machine to test it yet. Since theswift-package-manager
repository makes no mention of it, I am wondering how significant it is.
All (my client’s) tests pass on macOS with the above set‐up. I do not know about Linux.
Linux tests pass too with the above adjustments. -ltinfo
appears not to be necessary, and -lncurses
caused no issues.
Any progress towards tagged semantic versions? Is there any way I can help? @Aciid
I couldn't get to it on Friday but will try to do it very soon.
Opened a PR to llbuild for updating the manifest file: Update manifest to tools version 5 by aciidb0mb3r · Pull Request #465 · apple/swift-llbuild · GitHub
I see it has been merged. Is it possible to cherry‐pick it into the Swift 5 branch or some new branch and tag it with a semantic version?
In the meantime, I have copied the modules’ source directly into my package as a temporary workaround. I am still hoping it can be resolved soon though, because clients will run into module name conflicts if they try to depend on multiple packages using the same workaround.