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 <[email protected]> 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
