[swift-build-dev] Swift Package Manager - Support for downloading/installing external dependencies that a Swift Package may have

Ricardo N Olivieri ricardo.olivieri at us.ibm.com
Mon Feb 1 21:12:51 CST 2016

Thanks Max again for your response.

I see what you are saying about having SPM fail the build and output 
suggested commands to install the missing system-packages (as opposed to 
having SPM perform system-package installations).

We are still wondering if we could have a solution built into SPM that 
would not required any manual intervention from a human. For instance, 
would implementing something like the following be in the plans for SPM 
(this is somewhat similar to the original option #1 we shared previously)?

Swift Packages can specify dependencies on other libraries that are not 
Swift Packages (such as C libraries). The Swift Package Manager could then 
"parse" this metadata, download the C code for that external dependency 
(say, from the its GitHub repo), compile it, and make it available to 
other Swift Packages through the module.modulemap file. The metadata could 
be part of the Packages.swift file or a new file for specifying 
dependencies that are not Swift Packages.

Your thoughts?

   Ricardo Olivieri
   Software Engineer

From:   Max Howell <max.howell at apple.com>
To:     Ricardo N Olivieri/Austin/IBM at IBMUS
Cc:     swift-build-dev at swift.org, Samuel Kallner <KALLNER at il.ibm.com>, 
Daniel Firsht/Austin/IBM at IBMUS, Andrew M Trice/Washington/IBM at IBMUS, 
Robert F Dickerson/Austin/IBM at IBMUS
Date:   01/28/2016 01:08 PM
Subject:        Re: [swift-build-dev] Swift Package Manager - Support for 
downloading/installing external dependencies that a Swift Package may have
Sent by:        max.howell at apple.com

Thanks Max for your answer. To your point, thinking about it more, it's 
probably not a great idea to have SPM execute arbitrary scripts.

It is good news to hear that something similar to option #1 could be 
implemented and that there are plans to provide something as part of SPM 
that can take of installing/downloading external [non-Swift package] 
dependencies that a Swift Package may depend on.

Does providing this functionality in SPM have a high priority? Any other 
details about the plans for this feature that could be shared at this 

High-ish. There are gaping holes in SwiftPM that are currently higher 

This ticket should wait for my up-coming proposal that will improve 
module-map-packages IMO. Then we can put this in there and implement it at 
the same time.

IMO it should work like Homebrew’s caveats. If the build fails it outputs 
suggested commands to install the missing system-packages, then the user 
can type those commands in if they so choose.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-build-dev/attachments/20160201/63e87b26/attachment.html>

More information about the swift-build-dev mailing list