port "cask" -- installing prebuilt binaries
Fred Wright
fw at fwright.net
Tue Aug 4 20:35:28 UTC 2020
On Wed, 29 Jul 2020, Daniel J. Luke wrote:
> On Jul 29, 2020, at 9:30 PM, Fred Wright <fw at fwright.net> wrote:
[...]
>> Personally, I'd prefer the MacPorts approach if it were less stingy
>> with the binary archives. Ideally, one should be *able* to build from
>> source, but not be *required* to do so.
>
> How is it stingy? We have binary archives for everything that the
> buildbots can build that the licenses allow us to distribute, right?
Aside from the usual issues with non-default variants and certain old OS
versions, the main problem seems to be what appears to be an overly strict
interpretation of "distributable".
As a random example, consider ffmpeg. The license for ffmpeg shows as
GPL-2+. Although GPL prohibits binary-only distributions at the "meta
level", it does *not* demand that sources be bundled with the binaries.
It simply says that if they're not, there has to be clear information
available to the user on how to obtain the sources. It doesn't even
demand a working build procedure, just the sources. It might get a bit
fuzzy in cases where the sources are patched, in which case it's not 100%
clear that providing the original source plus the patches is adequate, or
whether it's necessary to provide the actual patched sources (though the
two are certainly morally equivalent), but in any case, MacPorts clearly
does both. Anyone can get the upstream source archive(s) via "port
fetch", get the sources in tree form via "port extract", and get the
patched sources via "port patch". I don't see how this fails to meet the
GPL requirements for any MacPorts user.
Now if one were to be really paranoid, one might consider that providing
binaries on servers that are accessible by means other than MacPorts could
constitute a GPL violation, due to not having the "clear path to sources"
that MacPorts provides. But if that's a concern, it could be easily
addressed by including a README.sources file in every directory on the
archive servers, either pointing to the corresponding source on a distfile
mirror (or directly upstream if necessary), or perhaps just pointing to
the MacPorts homepage.
And to pick a random sub-example, Debian offers ffmpeg as a binary
package.
> port, by default, will use the binary archives unless you tell it to
> build from source instead.
BTW, on an only mildly related note, I've seen a number of cases lately
where it successfully fetches a binary archive and than fails to fetch the
corresponding checksum file. It seems that it gets only one chance to do
this, and only from the same mirror where it fetched the archive. It's
become common for me to need a "cleanup pass" after doing "upgrade
outdated" across my VMs, where I manually retry the failed upgrades.
On Tue, 4 Aug 2020, Ruben Di Battista wrote:
> There's is one compelling need for having "binary only" install, and that
> is for the port "osxfuse", that is currently broken for 10.14+.
>
> There was a discussion about it on the Github project about the choice of
> making it close closed source... Nonetheless it would be useful to have it
> in order to provide things like fuse file systems and so on.
Hmm, I hadn't heard about that, but I don't run 10.14+ other than for
testing.
I was involved in fixing some osxfuse bugs right around the time that
10.10 came out, making kext signature checking mandatory. On 10.9, it
warns you about an unsigned kext, but you can tell it to proceed. The fix
at the time (for the relevant OS versions) was to have MacPorts fetch the
binary distribution and extract the signed prebuilt kext from it, while
building the rest from sources. This is done starting with 10.9, to avoid
the dialog box, even though it's not strictly necessary until 10.10+.
It sounds like some more tightening of the security noose has caused
additional problems for osxfuse.
On Tue, 4 Aug 2020, Ruben Di Battista wrote:
> So my take here is to not provide pre-built binaries packages if not
> strictly unavoidable, like for the osxfuse project (since it was open
> source before).
Huh? Are you suggesting *disallowing* the use of precompiled binaries?
That would be crazy.
The amount of both human and computer time that's wasted rebuilding the
same binaries from the same sources with the same options is humongous.
Another thing that's often overlooked is that installing precompiled
binaries, especially when signed, is more secure than building from
sources. This is because the attack surface of the tools required to
install binaries is far smaller than the attack surface of the toolchains
needed to build them. If you think this is purely hypothetical, consider
the early Unix hack that implemented a backdoor that didn't appear in any
source code.
> One of the reasons I chose Macports for is the fact it builds its own tree
> from source and it ships basically open source only software.
Anyone is free to configure it to do that. I suppose there could be a
strict source-only option that flatly refuses to install any port that
can't be completely built from source, but I doubt that many people would
use it.
Fred Wright
More information about the macports-dev
mailing list