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