Buildbot now fails to build wine dependencies

Mojca Miklavec mojca at macports.org
Tue Jul 4 05:11:10 UTC 2017


Hi,

One question: does a clean installation of "gtk3 +quartz" still work
now? It depends on both glib2 and cairo, so I would expect problems or
at least some weird non-determinism.

On 4 July 2017 at 00:36, Rainer Müller <raimue at macports.org> wrote:
> On 2017-07-03 22:26, Mojca Miklavec wrote:
>> The problem is that we loop through all dependencies and install and
>> *uninstall* each individual one of them. This is both inefficient and
>> leads to problems like this one.
>>
>> The problem should be solved if we skip deactivation of dependencies.
>
> We have to do this as we want to build all ports cleanly. Otherwise we
> would not be able to detect missing dependencies.

Ports - yes. But why are we being so picky about dependencies? On the
old buildbot we would only ever run "port install foo". OK, now we
would also upload individual dependencies to the server in case they
were not built before (which they usually should be).

We should at least provide an option to avoid such behaviour on Travis
to make the builds with already limited time frame for the build, more
efficient.

If building individual dependencies cleanly and recursively is
essential, then we need to adapt the algorithm.

I see two options:

(a) Do the installation recursively. We now list all dependencies, but
then install some dependencies (among them A), deactivate them, and
install another dependency (say B which depends on A). Variants for A
might then be wrong. We should keep the dependency list from the first
step and before installing B, install A with original variants and all
other B's dependencies. (Sorry, my sentence is probably super
confusing. What I mean is that we should explicitly install all of
cairo's dependencies before installing cairo, including "glib2 +x11".)

(b) When building cairo, we should check whether the main port was
built with any variants. If the main port was built with +quartz (that
is: once we start supporting building "gtk3 +quartz"), then keep
+quartz when installing cairo. If the main port was not built with
+quartz, only list non-default variants. We can still know which
variants were built with cairo, so we can either put those variants in
the failcache list. Or well ... as it turned out a failed "cairo +x11
+quartz" is not exactly the same as a failed "cairo" with x11 and
cairo being explicit, so two failcaches would be fine.

None of that is straightforward, but if we want to be picky about
proper build order, we should be picky to the very last bit.

Mojca


More information about the macports-dev mailing list