This is the mail archive of the
mailing list for the Cygwin project.
Re: New Setup for Cygwin 1.7 on cygwin.com
Corinna Vinschen wrote:
> How in the world can cygwin and the base-cygwin/base-passwd packages be
> so far from the root in the dependency tree? Why is libintl3 in the list
> but libintl8 isn't? Is the dependecy mechanism really reliable?
Essentially, because the Cygwin package depends on _update_info_dir.
That brings in a dependency on texinfo, which brings in libiconv2,
libintl3, libncurses8. libncurses8 brings in terminfo which brings in
bash and coreutils which brings in tzcode which brings in gawk. And
that's pretty much the list of things that run before base-cygwin:
libintl3 texinfo _update-info-dir gawk tzcode libiconv2 coreutils
terminfo libncurses8 libreadline6 bash
You have to remember that the topological ordering code throws out an
edge when it detects a loop. So if it's looking at the dependencies of
FOO to figure out what to run before FOO's postinstall and it finds a
package that depends on FOO it's going to just silently discard that
edge because there's nothing meaningful it can do with it. If it
didn't, it would just recurse forever on the loops. So it doesn't
matter that practically all of the above also depend on 'cygwin', which
would logically mean 'cygwin' should come before them. But that logic
just leads to infinite recursion; setup has to consider only one edge in
the loop and it chooses whichever one it saw first.
Can we special-case upset not to add _update-info-dir to the Cygwin