How to make sure that one port gets updated before another? (MinGW)
Ryan Schmidt
ryandesign at macports.org
Sat Oct 27 18:06:29 UTC 2018
On Oct 27, 2018, at 12:53, Mojca Miklavec wrote:
> On Fri, 26 Oct 2018 at 23:26, Joshua Root wrote:
>
>> If dependencies didn't get upgraded before their dependents, there would
>> be a lot of serious problems. Since we don't see that,
>
> Except ... hmmm ...
> https://trac.macports.org/ticket/57457
> Travis CI: Sometimes declared dependencies aren't installed
> ?
That's a problem I've only ever seen on Travis CI; I can't explain why since I haven't attempted to understand what we're doing on Travis.
>> let's assume
>> something else is going on here. Is there an actual circular dependency?
>
> That's why I came up to ask for someone's help.
>
> For the port x86_64-w64-mingw32-crt there is
> depends_build bin:x86_64-w64-mingw32-gcc:x86_64-w64-mingw32-gcc-bootstrap
> which is satisfied by either of these:
> - x86_64-w64-mingw32-gcc-bootstrap
> - x86_64-w64-mingw32-gcc-nothreads
> - x86_64-w64-mingw32-gcc
>
> For the port x86_64-w64-mingw32-winpthreads there is now
> depends_build \
> path:x86_64-w64-mingw32/lib/libgcc_s.a:x86_64-w64-mingw32-gcc-nothreads
> \
> port:x86_64-w64-mingw32-crt
> where the first dependency is satisfied by either of the two:
> - x86_64-w64-mingw32-gcc-nothreads
> - x86_64-w64-mingw32-gcc
>
> Further, the port x86_64-w64-mingw32-gcc-nothreads depends on:
> depends_lib port:x86_64-w64-mingw32-crt
> depends_build bin:x86_64-w64-mingw32-gcc:x86_64-w64-mingw32-gcc-bootstrap
> and the port x86_64-w64-mingw32-gcc depends on
> depends_lib
> port:x86_64-w64-mingw32-crt \
> port:x86_64-w64-mingw32-winpthreads
> depends_build \
> path:x86_64-w64-mingw32/lib/libgcc_s.a:x86_64-w64-mingw32-gcc-nothreads
>
> At the time of updating both of these ports are deactivated:
> x86_64-w64-mingw32-gcc-bootstrap
> x86_64-w64-mingw32-gcc-nothreads
> and only
> x86_64-w64-mingw32-gcc
> is activated.
>
> So in theory crt and winpthreads are runtime dependencies of gcc,
> while gcc could in theory be considered a *build* dependency of both
> crt and winpthreads. I don't know whether that counts as a dependency
> cycle or not. But gcc is up to date.
Then yes, in that situation (where x86_64-w64-mingw32-gcc is active) there are two dependency cycles:
x86_64-w64-mingw32-crt depends on x86_64-w64-mingw32-gcc
x86_64-w64-mingw32-gcc depends on x86_64-w64-mingw32-crt
x86_64-w64-mingw32-winpthreads depends on x86_64-w64-mingw32-gcc
x86_64-w64-mingw32-gcc depends on x86_64-w64-mingw32-winpthreads
MacPorts does not support dependency cycles. I don't think there's any code in MacPorts for detecting dependency cycles, so MacPorts behavior when there is a dependency cycle is undefined. Portfile authors must ensure no dependency cycles exist.
More information about the macports-dev
mailing list