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-RELEASEin bothswift-llbuildandswift-package-manager. -
Update
swift-llbuild’s manifest tools version to 5.0. -
Add
linkerSettings: [.linkedLibrary("ncurses")]toswift-llbuild’sllvmSupporttarget. -
Add
linkerSettings: [.linkedLibrary("sqlite3")]toswift-llbuild’sllbuildCoreandllbuildCoreTeststargets. -
Tag a semantic version in
swift-llbuild. -
Point
swift-package-manageratswift-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
xconfiginswift-package-manageralso makes reference to a-DSWIFT_PACKAGEC flag. It did not appear to be necessary (yet), but I am unaware of its intended effect. -
The Game of Life example in
swift-llbuildhas an extra-Xlinker -ltinfoflag on Linux and skips the-Xlinker -lncursesused on macOS. I don’t have Swift 5.0 on my Linux machine to test it yet. Since theswift-package-managerrepository 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.