This is the mail archive of the
cygwin-apps
mailing list for the Cygwin project.
Re: New Setup for Cygwin 1.7 on cygwin.com
On Mon, Aug 25, 2008 at 12:26:02PM +0200, Corinna Vinschen wrote:
>On Aug 22 11:09, Corinna Vinschen wrote:
>> On Aug 22 01:58, Brian Dessent wrote:
>> > Corinna Vinschen wrote:
>> >
>> > > Why didn't upset pick up the change?
>> >
>> > Perhaps it has to do with the design of upset being incremental, i.e.
>> > taking the current setup-2.ini as input and applying updates to it
>> > rather than generating it from whole each time. It might be confused
>> > upon not seeing a "requires:" at all in the .hint and so it leaves the
>> > existing "requires:" in the .ini unchanged. If this is the case then
>> > listing an explicit empty "requires:" in the .hint would probably work
>>
>> I tried that and it helped.
>
>Still no go. I checked setup-2.ini and it looks almost correct now.
>Still, the order in setup is screwed:
>
>warning: LOG: 1 Dependency order of packages: libintl3 texinfo
>_update-info-dir gawk tzcode libiconv2 coreutils terminfo libncurses8
>libreadline6 bash base-cygwin base-passwd cygwin libintl8 alternatives
>ash findutils sed base-files libbz2_1 bzip2 libpopt0 cygutils groff
>gzip termcap libpcre0 less man cygwin-doc editrights grep ipc-utils
>login rebase run tar which
>
>I checked the requirements again and tried to do my own hand-crafted
>dependency ordering with the least set of depending packages.
>
>base-cygwin : NO requires
>base-passwd : base-cygwin
>cygwin : base-passwd base-cygwin
>libiconv2 : cygwin
>libintl8 : cygwin libiconv2
>libreadline6 : cygwin libncurses8
>bash : cygwin libintl8 libreadline6 (NO _update-info-dir)
>libintl3 : cygwin libiconv2
>gawk : bash cygwin libintl8 _update-info-dir
>tzcode : cygwin bash gawk
>coreutils : bash cygwin libiconv2 libintl8 tzcode _update-info-dir
>terminfo : bash coreutils
>libncurses8 : cygwin terminfo
>texinfo : cygwin libiconv2 libintl3 libncurses8 (NO _update-info-dir)
>_update-info-dir: texinfo bash
>
>As you can see, there are four loops:
>
> bash -> libreadline6 -> libncurses8 -> terminfo -> bash
>
> bash -> libreadline6 -> libncurses8 -> terminfo -> coreutils -> bash
>
> _update-info-dir -> texinfo -> libncurses8 -> terminfo
> -> coreutils -> _update-info-dir
>
> _update-info-dir -> texinfo -> libncurses8 -> terminfo
> -> coreutils -> tzcode -> gawk -> _update-info-dir
>
>The crucial package here is apparently terminfo. The dependency
>to bash and coreutils is based on a really tiny script which tries
>to create a symlink /usr/lib/terminfo pointing to /usr/share/terminfo.
>If the terminfo package would bring this symlink right in the tar
>file, the postinstall script could go away, and the dependencies
>to bash and coreutils with it. If terminfo doesn't depend on bash
>and coreutils, the dependency order would be changed to:
>
>base-cygwin : NO requires
>terminfo : NO requires
>base-passwd : base-cygwin
>cygwin : base-passwd base-cygwin
>libncurses8 : cygwin terminfo
>libiconv2 : cygwin
>libintl8 : cygwin libiconv2
>libreadline6 : cygwin libncurses8
>bash : cygwin libintl8 libreadline6 (NO _update-info-dir)
>libintl3 : cygwin libiconv2
>texinfo : cygwin libiconv2 libintl3 libncurses8 (NO _update-info-dir)
>_update-info-dir: texinfo bash
>gawk : bash cygwin libintl8 _update-info-dir
>tzcode : cygwin bash gawk
>coreutils : bash cygwin libiconv2 libintl8 tzcode _update-info-dir
>
>which is a neat tree without loops.
>
>I'm nevertheless wondering about the dependency algorithm in setup.
>From a "common sense" perspective, one would expect that the fact that
>all packages depend on cygwin should have *some* effect. The above
>result looks rather unstable. I'm under the impression the algorithm
>isn't quite complete.
It looks that way.
Making tweaks by removing valid dependencies in the hopes of improving
things is not going to be a win in the long run. We seem to be in a
situation that is only solvable by changing setup.exe.
cgf