<div dir="ltr">I would personally be very interested in seeing a prototype of this, even if just to explore how it could work.<div><br></div><div>I do still think we shouldn&#39;t tackle the Hypervisor portion directly (you would basically need to reimplement Docker for Mac to do this, as best I can tell), but should rely on some other service to provide the ability to bring up the XPC service you mention.</div><div><br></div><div>If it was me, I would probably start by assuming there is a VM somewhere than can run the same version of swift-build, and build up the ability for one swift-build to be able to talk to that remote one.</div><div><br></div><div> - Daniel</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 16, 2016 at 4:56 AM, Jason Kristian via swift-build-dev <span dir="ltr">&lt;<a href="mailto:swift-build-dev@swift.org" target="_blank">swift-build-dev@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 2016-08-16 21:54, Jason Kristian wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I agree there are tool&#39;s out there now to run linux and maybe adding<br>
to package manager is not the way to go I was just giving example on<br>
one method to configure. The main Idea is to be able to test and build<br>
on os x. Now using a vm that is not run on top or docker or vmware ,<br>
virtual box etc gives a more seamless usage experience.<br>
<br>
The way I see it working is via a XCP process that can startup a vm<br>
using HyperVisor framework and when running the current folder can be<br>
mounted to the VM. this would let you build / run / test .<br>
<br>
Now going a bit off topic Xcode developer could build on top of this<br>
to integrate  with Xcode (i know that not a swift-build-dev product or<br>
concern).<br>
<br>
Im happy to start a proof of concept that this could work only if the<br>
community would be interested in a feature like this.<br>
<br>
What I&#39;m trying to overcome is the time taken daily where I&#39;m creating<br>
docker images starting all the time and not able to run test with out<br>
setting up a vm.<br>
I might be given a project to look at only to see they have different<br>
Docker image so Im then having to download that image to run the<br>
project.<br>
<br>
Option 2 - is a quicker option like you said but that is not the issue<br>
I was trying to overcome , not just cross compiling but to be able<br>
have a project that I can just build and run while at the same time I<br>
have a IOS target that is running and calling code in the Linux target<br>
while being able test.<br>
<br>
Now maybe I&#39;m under estimating the work that is required to archive<br>
this but what I see this working like will be much loved feature.<br>
<br>
So please comment. The more opinion&#39;s the better.<br>
<br>
<br>
<br>
<br>
<br>
<br>
On 2016-08-16 03:00, <a href="mailto:swift-build-dev-request@swift.org" target="_blank">swift-build-dev-request@swift.<wbr>org</a> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Send swift-build-dev mailing list submissions to<br>
        <a href="mailto:swift-build-dev@swift.org" target="_blank">swift-build-dev@swift.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://lists.swift.org/mailman/listinfo/swift-build-dev" rel="noreferrer" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-build-dev</a><br>
or, via email, send a message with subject or body &#39;help&#39; to<br>
        <a href="mailto:swift-build-dev-request@swift.org" target="_blank">swift-build-dev-request@swift.<wbr>org</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:swift-build-dev-owner@swift.org" target="_blank">swift-build-dev-owner@swift.or<wbr>g</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than &quot;Re: Contents of swift-build-dev digest...&quot;<br>
<br>
<br>
Today&#39;s Topics:<br>
<br>
   1. Re: Build Linux app on Mac Os X (Daniel Dunbar)<br>
<br>
<br>
------------------------------<wbr>------------------------------<wbr>----------<br>
<br>
Message: 1<br>
Date: Sun, 14 Aug 2016 20:09:26 -0700<br>
From: Daniel Dunbar &lt;<a href="mailto:daniel_dunbar@apple.com" target="_blank">daniel_dunbar@apple.com</a>&gt;<br>
To: <a href="mailto:jasonk@apps4u.com.au" target="_blank">jasonk@apps4u.com.au</a><br>
Cc: &quot;<a href="mailto:swift-build-dev@swift.org" target="_blank">swift-build-dev@swift.org</a>&quot; &lt;<a href="mailto:swift-build-dev@swift.org" target="_blank">swift-build-dev@swift.org</a>&gt;<br>
Subject: Re: [swift-build-dev] Build Linux app on Mac Os X<br>
Message-ID: &lt;<a href="mailto:06EF389C-408D-4CD4-85E8-1D78DA5ECA04@apple.com" target="_blank">06EF389C-408D-4CD4-85E8-1D78D<wbr>A5ECA04@apple.com</a>&gt;<br>
Content-Type: text/plain; charset=&quot;utf-8&quot;<br>
<br>
I think this proposal is a little more complicated than necessary.<br>
<br>
Using Hypervisor directly doesn&#39;t really seem in the realm of the<br>
package manager to do, especially when there are nicely packaged tools<br>
like Docker for Mac which basically handle all of that.<br>
<br>
I can imagine an interesting feature where the package manager had the<br>
ability to compile for Linux in one of two ways:<br>
<br>
1. The approach described, using some kind of virtualization to be<br>
able to actually execute the build on Linux. This would have the<br>
advantage that the tests and executables could also be run. However,<br>
this would also be rather complicated and I&#39;m not sure it is<br>
ultimately the right place to solve this problem.<br>
<br>
2. We could support cross-compiling to Linux. This would fit clearly<br>
in our feature set, and would also be a lot easier to make robust and<br>
with a good user experience. However, this wouldn&#39;t help with the<br>
ability to run tests...<br>
<br>
In either case, I don&#39;t know of anyone actively trying to tackle<br>
features in these areas...<br>
<br>
 - Daniel<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On Aug 13, 2016, at 5:46 PM, apps4u via swift-build-dev &lt;<a href="mailto:swift-build-dev@swift.org" target="_blank">swift-build-dev@swift.org</a>&gt; wrote:<br>
<br>
HI I submited a proposal to the Swift Mailing list when it a build feature. So Ive inclued the original message but Im going to rewrite so I could be a bit more clear.<br>
<br>
<br>
I have a propoal of using the new Hypervisor.framework to enable Swift Linux build&#39;s on Os X. So at the monment there is a need to use 3rd party tools (VM, Docker) to run a linux kernel on Os x to build Swift Liunx server app&#39;s. Now I was thinking that with the release of Hypervisor.framework that this could now be achive in a clean and transparent way.<br>
<br>
So the main idea is to have the abilty to create a linux target but when building and running instead of running on the Mac kernel a small liunx kernel can be started as a headless background process and the app would build and run within that vm.  So the folder to the project could be mounted with in the Linux vm. Hypervisor.framework is perfect for this sort of enbeding. It could be inbeded as a XPC proecess so that  Linux VM would be used for all project&#39;s.<br>
 The target should be able to be configured by user to pick if it runs on OS X or Linux.<br>
<br>
This could Also be tied into the Package Manager where there could be a option to set the packages target runtime.<br>
<br>
Also to start with I don&#39;t think this would need to be under full user control, What I mean by that I would not let the user pick the Linux OS or packages that are installed etc. I think the Linux os should include a common set of software eg: CURL, OpenSSL , etc. just the common set of software.<br>
<br>
or if people think otherwise that it could have full user control of Linux OS and installed Software.<br>
<br>
But My thought is to keep it simple and small so its as fast as possiable and at the end of the Day user should always Test on the Production OS which can be done using the current method&#39;s of running Linux on a VM or Cloud provider or Container.<br>
<br>
I think that this would make the developer experance even better and add a valuable feature to Swift Package Manager.<br>
<br>
<br>
Now Where I made the mistake in the other post to bring up XCode how this could then enable Builld/Run/Debug of a Linux target. I only brought that up to explain the current process which requires docker or some vm software to be setup and some build scripts to get it to work which is a bit of effort for each project.<br>
<br>
<br>
<br>
------------------------------<wbr>------------------------------<wbr>------------------------------<wbr>-------------<br>
------------------------------<wbr>------------------------------<wbr>------------------------------<wbr>-------------<br>
FROM SWIFT MAILING LIST<br>
------------------------------<wbr>------------------------------<wbr>------------------------------<wbr>-------------<br>
------------------------------<wbr>------------------------------<wbr>------------------------------<wbr>-------------<br>
<br>
Sorry I just noticed the Swift Build mailing list . would that be a better place . Now Xcode would not need to be inclued as that&#39;s a apple product so Im was just using a example on how it could be use the Main feature request is to have Swift build use Hypervisor.Framework to work with Swift build to be able to build a Linux project on Os X with out having to create your own VM or container to run a linux kernel.<br>
<br>
So Im going to send this to the Swift Build Mailing list.<br>
<br>
August 14 2016 10:17 AM, &quot;Félix Cloutier&quot; &lt;<a href="mailto:felixcca@yahoo.ca" target="_blank">felixcca@yahoo.ca</a> &lt;mailto:%22F%C3%A9lix%20Clouti<wbr>er%22%20&lt;<a href="mailto:felixcca@yahoo.ca" target="_blank">felixcca@yahoo.ca</a>&gt;&gt;&gt; wrote:<br>
The swift-evolution mailing list is about the language itself, Xcode is independent. I don&#39;t know where you could try to push that suggestion.<br>
<br>
Félix<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Le 13 août 2016 à 16:40:42, apps4u via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a> &lt;mailto:<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.<wbr>org</a>&gt;&gt; a écrit :<br>
I have a Proposal but I&#39;m not sure if Its the right place to propose but as it has to do with building Swift So I&#39;m going to submit here. So Please let me know if that is not the place to propose this feature. As it includes Xcode.<br>
<br>
<br>
Ok So this is a proposal for being able to build swift for linux on Mac Os X in Xcode just like a native target.<br>
<br>
With the release of Hypervisor.framework It would be good if from within Xcode I can create a project with a Linux Target and when clicking Build and run it create a VM running a small linux Kernel using Hypervisor.framework.<br>
By using Hypervisor.framework it would be better integrated into the tools as it has a small foot print. The idea would be to have the VM downloaded before a build. The linux VM should be small and only have the required software to test a server and using the hypervisor.framework the project build folder can be attached to the vm at build time so the working with different projects at the same time would not require lots of VM.<br>
<br>
Now I know that this would be best if integrated into Xcode and this is the Swift Language mailing list but Swift build is part of the Language.<br>
<br>
This could also be used to debugging. Now Its possible now to use Docker to run a linux vm and have a shared folder for your project and some scripts to kick off the build. But it take time to setup per project and is not the Experience i would expect in Xcode.<br>
<br>
Now My first thought when I found out about Hypervisor.framework that the reason it was created was to add linux targets to Xcode.<br>
<br>
<br>
<br>
<br>
______________________________<wbr>_________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a> &lt;mailto:<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.<wbr>org</a>&gt;<br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-evolution</a> &lt;<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailm<wbr>an/listinfo/swift-evolution</a>&gt;__<wbr>______________________________<wbr>_______________<br>
</blockquote>
swift-build-dev mailing list<br>
<a href="mailto:swift-build-dev@swift.org" target="_blank">swift-build-dev@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-build-dev" rel="noreferrer" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-build-dev</a><br>
</blockquote>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL:<br>
&lt;<a href="https://lists.swift.org/pipermail/swift-build-dev/attachments/20160814/aaadc163/attachment-0001.html" rel="noreferrer" target="_blank">https://lists.swift.org/piper<wbr>mail/swift-build-dev/attachmen<wbr>ts/20160814/aaadc163/attachmen<wbr>t-0001.html</a>&gt;<br>
<br>
------------------------------<br>
<br>
______________________________<wbr>_________________<br>
swift-build-dev mailing list<br>
<a href="mailto:swift-build-dev@swift.org" target="_blank">swift-build-dev@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-build-dev" rel="noreferrer" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-build-dev</a><br>
<br>
<br>
End of swift-build-dev Digest, Vol 9, Issue 5<br>
******************************<wbr>***************<span class="HOEnZb"><font color="#888888"><br>
</font></span></blockquote></blockquote><span class="HOEnZb"><font color="#888888">
<br>
-- <br>
Jason Kristian | Director | APPS 4 U PTY LTD.<br>
ph: <a href="tel:%2B61%20075699%208109" value="+61756998109" target="_blank">+61 075699 8109</a><br>
mob: <a href="tel:%2B61%200411%20389%20392" value="+61411389392" target="_blank">+61 0411 389 392</a><br>
e: Jason Kristian<br>
______________________________<wbr>_________________<br>
swift-build-dev mailing list<br>
<a href="mailto:swift-build-dev@swift.org" target="_blank">swift-build-dev@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-build-dev" rel="noreferrer" target="_blank">https://lists.swift.org/mailma<wbr>n/listinfo/swift-build-dev</a><br>
</font></span></blockquote></div><br></div>