WebKit2-GTK: quartz VS XQuartz

Ryan Schmidt ryandesign at macports.org
Sat May 7 10:20:02 PDT 2016

On May 7, 2016, at 4:51 AM, Andrea Giammarchi wrote:
> I am not sure why there are no pre-built gtk3 +quartz and webkit2-gtk + quartz ports available so, beside which would work better argument, and please note in the GTK ML everyone apparently seems to prefer the Quartz variant, which is indeed the default one via homebrew, it would be very nice to have these two variants pre-built as well, so that mozjs24, ffmpeg, and highlight would be the only slow-down ports after a `port install webkit2-gtk +quartz` operation.
> Thanks in advance for considering it, as a user it would be awesome so I can stop warning Mac Users that having a good looking GTK3 app requires at least one hour via MacPorts due lack of pre-built quartz packages.

Just to answer this small portion of your question: our buildbot setup only builds default variants at this time. On most ports that have it, +quartz is not a default variant, therefore the buildbot does not build them.

This decision probably stems from the fact that it was easier to tell the buildbot to build a single port just once. The decision also probably is influenced by the fact that building more variants would use up more CPU resources on the buildbot servers, and would use up more disk space on the master packages server and all of its mirrors. I'm not saying that this extra burden is definitely too great; it might not be.

If we wanted to build a single port more than once, we would have to tell the buildbot which combinations of variants to try to build, either as a hardcoded list or extracted from each port.

Note that not all variants are either/or choices; many can be combined. This exponentially increases the number of builds that would need to be attempted, if we want to do all combinations of variants. If we consider a port with 1 variant, that's 2 (2^1) builds (1 with the variant, 1 without the variant). If a port has 2 variants, that's 4 (2^2) builds (with no variants; with one variant; with the other variant; with both variants). If a port has 3 variants, that's 8 (2^3) builds. If we take the webkit2-gtk port as an example, it has 6 variants. If none of its variants conflicted, that would be 64 (2^6) builds. Some of its variants do conflict though, so it would actually be fewer builds than that. Still, a single build of webkit2-gtk takes over an hour, so if we were to build all combinations of its variants, a single update of webkit2-gtk would tie up our build servers for days.

Instead of building all combinations of variants, we could decide only to build specific predetermined variants. Here, you've requested +quartz; previously, +universal was requested. That would only be a maximum of 4 builds per port, fewer if the port doesn't have one or both of those variants. That would be much more manageable.

More information about the macports-users mailing list