<div dir="auto">Sometimes the release tarball will come with the submodule source <a href="https://github.com/macports/macports-ports/pull/9612#issuecomment-756376258">https://github.com/macports/macports-ports/pull/9612#issuecomment-756376258</a> but this probably depends on the project.</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Jan 7, 2021, 07:09  <<a href="mailto:janosch1@mailbox.org">janosch1@mailbox.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space"><div><div dir="auto" style="text-align:start;text-indent:0px;word-wrap:break-word;line-break:after-white-space"><div><br></div></div></div><div><blockquote type="cite">Just some comments on the port:<br><br>Line 13 (name) is not necessary because github.setup sets the name (second argument).<br><br>Does the build {} step actually download deps with Carthage? (I am fairly certain it does). This should be avoided even if it is difficult. If Carthage is downloading dependencies, then a fully offline installation is impossible with this port (think of users who suddenly have poor network conditions who still have distfiles on their machine and need to reinstall). For Rust and Go ports, we set the Portfile to download everything in the fetch phase and then build a compatible environment. This allows offline installation and avoids potential security issues. I have a Portfile that does a similar thing for an Xcode project with submodules: <a href="https://github.com/Tatsh/ports/blob/master/aqua/Fanny/Portfile#L17" target="_blank" rel="noreferrer">https://github.com/Tatsh/ports/blob/master/aqua/Fanny/Portfile#L17</a><br><br>You can do that, or you can make a separate port for each dependency (or subports in your port to keep it all in one file). My mas port uses separate ports for dependencies and depends on Commandant, which would normally come via Carthage: <a href="https://github.com/Tatsh/ports/blob/master/sysutils/mas/Portfile" target="_blank" rel="noreferrer">https://github.com/Tatsh/ports/blob/master/sysutils/mas/Portfile</a>, Commandant: <a href="https://github.com/Tatsh/ports/blob/master/devel/Commandant/Portfile" target="_blank" rel="noreferrer">https://github.com/Tatsh/ports/blob/master/devel/Commandant/Portfile</a><br><br><br>The fetch.type git should be removed as you should set the submodules to be downloaded in the fetch phase (and remove post-fetch phase). See <a href="https://github.com/Tatsh/ports/blob/master/aqua/Fanny/Portfile#L17" target="_blank" rel="noreferrer">https://github.com/Tatsh/ports/blob/master/aqua/Fanny/Portfile#L17</a> for an example. Then in the pre-configure or some other phase (post-extract is probably most appropriate), move the other extracted contents to the appropriate place in the source.<br></blockquote></div><br><div>Thanks for the review. I will try to create separate ports for all dependencies currently fetched by carthage and also implement your other suggestions.</div><div><br></div><div>Your comment about the git submodules is a bit surprising to me because I got that part straight from the macports guide: <a href="https://guide.macports.org/index.html#reference.portgroup.github.submodule" target="_blank" rel="noreferrer">https://guide.macports.org/index.html#reference.portgroup.github.submodule</a>. So is fetching the submodule „manually“ considered the better approach? Should we update the guide?</div><div><br></div><div>I will update the PR as soon as I have created port files for all dependencies - that may take a while though.</div><div><br></div><div>—</div><div>Janosch</div><div><br></div><div> </div><div><br></div><div><br></div></div></blockquote></div>