<div dir="ltr"><div dir="ltr"><div>> Otherwise MacPorts could just run Artifactory or something to cache and serve dependencies and all would be good.</div><div><br></div>Having MacPorts run asset servers or repositories for all the different languages and frameworks out there (like running Artifactory) would be immensely unsustainable.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Dec 18, 2020 at 3:39 AM Nils Breunese <<a href="mailto:nils@breun.nl">nils@breun.nl</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">Ryan Schmidt <<a href="mailto:ryandesign@macports.org" target="_blank">ryandesign@macports.org</a>> wrote:<br>
<br>
> A build system that forces fetching from a specific upstream server reduces our ability to build on older systems, since that specific server might have https requirements that older system can't meet. We need to be able to mirror files on our servers so that older MacPorts clients can download from them.<br>
> <br>
> Tying us to a specific upstream server also ties us to the reliability of that server. If it goes down, we go down, and users flood us with bug reports about it. We don't want that.<br>
<br>
It’s really too bad that even a lot of modern build tools do not have the concept of proxyable, cachable) repositories for dependencies. For instance for builds that use Maven repositories (Maven, Gradle and some other build tools in the Java ecosystem) you can set up your own proxy which fetches dependencies when first requested from upstream, stores them for future use and lets you control HTTPS settings, availability, etc. This all works because dependencies are not identified by a full URL. I believe NPM repositories will let you do the same thing for the JavaScript ecosystem.<br>
<br>
The pain comes when build tools don’t use a proxyable, cachable repository concept (Go, etc.). Otherwise MacPorts could just run Artifactory or something to cache and serve dependencies and all would be good. Currently MacPorts is bolting this concept onto build tools that don’t have it, and that is indeed daunting and cumbersome.<br>
<br>
Nils.<br>
</blockquote></div>