Corinna Vinschen wrote: >> I thought the whole point was to install cygwin first. How can you run base >> packages first in a new install when there is no cygwin1.dll? > > The installation order doesn't matter. Only the order in which scripts > run matters. And I don't see another way how to make sure that the > base-* scripts always run first.
Well, what we have is a dependency-group. You want cygwin, base-* installed at the same time. Then you want the base-* postinstall scripts to run. Maybe a meta-package? cygwin : no dependencies base-* : depends on cygwin cygwin-meta : depends on cygwin, base-* everything else, that currently depends on cygwin, depends instead on cygwin-meta. ====> revision for less ripple: what we now call the 'cygwin' package gets renamed to 'cygwin-core' base-*: depend on cygwin-core the new 'cygwin' package is now a meta-package with dependencies on cygwin-core and base-*. everything else continues to depend on cygwin, as before. The drawback to this plan is: cygcheck -cd cygwin will report the version number of the meta-package, which will probably be 1.0, and will hardly ever change. This doesn't solve the loop back to cygwin/bash with base-*: base-passwd, setup.hint: requries: cygwin bash NOTE: uses coreutils (cp, rm, chmod) and sed, but does not include them in its requires:. base-files, setup.hint requries: cygwin bash findutils sed NOTE: uses coreutils, diffutils (uname, [, ln, /bin/echo, /bin/touch, /bin/cp, /bin/cmp, /bin/rm ) but does not include them in its requires:. FWIW, does NOT seem to use sed or findutils! bash: requires cygwin libintl8 libreadline6 libintl8: requires cygwin libiconv2 libreadline6: requires cygwin libncurses8 libiconv2: requries cygwin libncurses8: requires cygwin terminfo terminfo: requires bash coreutils NOTE: the only reason this pulls in coreutils is because the postinstall script does this: (cd ${libdir}; rm -f terminfo ; ln -fs ../share/terminfo terminfo ; ) which (a) I need to change to make an absolute link, instead of a relative one, and (b) is it really necessary? Must we have a /usr/lib/terminfo/ path? <--- HERE ---> coreutils: requires bash crypt cygwin libiconv2 libintl8 tzcode crypt: cygwin tzcode: cygwin bash gawk gawk: bash cygwin libintl8 findutils: requires: bash coreutils cygwin libintl8 sed: requires: bash cygwin libintl3 libiconv2 libintl3: requires: cygwin libiconv2 diffutils: requires: bash cygwin libintl2 libiconv2 libintl2: requires: cygwin libiconv2 But I think it would solve the script execution order issue. Also, if we (a) removed terminfo's postinstall script and coreutils dependency (b) removed the useless findutils and sed dependnecy of base-files then the dependency chain of (base-* + cygwin-core == new cygwin meta package) would stop at HERE. This scheme would then rely on the Base category to ensure that coreutils, findutils, diffutils, sed, and all their dependencies are all properly installed, which should be safe enough. Better, in the group above HERE, the following are true; (a) DLL packages don't typically have postinstall scripts (b) terminfo won't have a postinstall script [1] (c) leaving only bash, and base-* postinstall (1) but since bash dep on cygwin (meta), which would dep on cygwin-core (no postinstall), and base-*, but base-* dep on bash... still leaves a cycle. Hmm...what if we deliberatly drop the bash dependency from base-*, relying on the Base category to ensure it gets installed? Then, there are no loops at all (in the cygwin meta group): base-passwd --> cygwin-core <-- base-files ^ ^ ^ \ | / \ | / -----cygwin----- ^ | bash, coreutils, etc... -- Chuck [1] alternatively, if we DO need a /usr/lib/terminfo symlink, then we can keep the postinstall script but deliberately drop the dependency on coreutils (relying on Base category). Then, we still guarantee base-* scripts go first, because terminfo would depend on bash