Swift 4.2 + SwiftPM package? (Edit: Swift 5.0)

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:

  1. Branch from swift-5.0-RELEASE in both swift-llbuild and swift-package-manager.

  2. Update swift-llbuild’s manifest tools version to 5.0.

  3. Add linkerSettings: [.linkedLibrary("ncurses")] to swift-llbuild’s llvmSupport target.

  4. Add linkerSettings: [.linkedLibrary("sqlite3")] to swift-llbuild’s llbuildCore and llbuildCoreTests targets.

  5. Tag a semantic version in swift-llbuild.

  6. Point swift-package-manager at swift-llbuild’s new semver.

  7. 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:

  1. The example xconfig in swift-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.

  2. 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 the swift-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.