<div dir="ltr">I think it would be fine to have a --dependencies or --dependencies-only flag, and bypass the local sources as much as possible.<div><br></div><div>I&#39;m not sure exactly how useful it would be yet, but I wouldn&#39;t object to a PR for it as long as it was a maintainable addition (e.g. we need to make sure it handles the upcoming changes w.r.t. products API w/ additional work).</div><div><br></div><div> - Daniel</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 27, 2017 at 6:05 AM, Ankit Aggarwal 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"><div style="word-wrap:break-word">Hi,<div><br></div><div>I think this makes sense and is very useful. The fetch part does sound like a bug and should be an easy fix (hopefully).</div><div><br></div><div>Instead of preset we could add a flag to swift build for e.g. --dependencies or --deps-only. This would automatically give you all the other build options.</div><div>$ swift build --deps-only</div><div><br></div><div>This might be a bit tricky to do but should be possible by only reading the product target dependencies in the root manifest. What do others think?</div><div><br></div><div><div><div><blockquote type="cite"><div><div class="h5"><div>On 27-Jan-2017, at 6:48 PM, swizzlr via swift-build-dev &lt;<a href="mailto:swift-build-dev@swift.org" target="_blank">swift-build-dev@swift.org</a>&gt; wrote:</div><br class="m_-8074511892219894387Apple-interchange-newline"></div></div><div><div><div class="h5"><div style="word-wrap:break-word"><div>Sometimes it is desirable to run a sequence of commands and cache the output of those commands as a filesystem snapshot in CI. This is especially relevant to swift packages, where compilation times are relatively long, but the dependencies don’t change often.</div><div><br></div><div>In particular, Docker users will often do something like so (though this can be applied to Travis and other CI solutions).</div><div><br></div><div><div>FROM swift</div><div><br></div><div>WORKDIR /code</div><div><br></div><div>COPY Package.swift /code/</div><div>RUN swift build -c release # This fails because of point 2, below</div></div><div># Changes to `Sources` will not trigger refetch or recompilation of dependencies</div><div><div>COPY ./Sources /code/Sources</div><div>RUN swift build -c release</div><div>EXPOSE 8000</div><div>CMD .build/release/App</div></div><div><br></div><div>Unfortunately, the above fails in certain scenarios:</div><div><br></div>1. `swift package fetch` will break if the target source layout doesn’t match. This bug is described in <a href="https://bugs.swift.org/browse/SR-3756" target="_blank">https://bugs.swift.org/<wbr>browse/SR-3756</a><div>2. `swift build` will correctly fail if it cannot find sources matching the source layout described in Package.swift. This is a feature, not a bug.</div><div><br></div><div>I propose making this workflow easier with `swift package preheat` – a command which will fetch ONLY dependencies specified in Package.swift, and optionally (with the option —build) compile those dependencies, but not the main Package.</div><div><br></div><div>This would also be great for bootstrapping a project with a lot of dependencies, or with deps that have long compilation times.</div><div><br></div><div>This command should also support specifying a build configuration, so that we can cache both debug and release builds at the same time to accelerate development iteration.</div><div><br></div><div>Are there any comments, concerns, objections or +1s to this?</div><div><br></div><div>Tom<br><div><br></div></div></div></div></div>______________________________<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" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-build-<wbr>dev</a><br></div></blockquote></div><br></div></div></div><br>______________________________<wbr>_________________<br>
swift-build-dev mailing list<br>
<a href="mailto:swift-build-dev@swift.org">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/<wbr>mailman/listinfo/swift-build-<wbr>dev</a><br>
<br></blockquote></div><br></div>