On 7/5/2016 9:59 AM, Ken Brown wrote:
On 7/3/2016 10:02 AM, Ken Brown wrote:
This script has a couple of problems. First, it doesn't take dependency
loops into account. For example, if package p requires q and q requires
p, then both will be marked as non-root. Second, if the mirror was used
for both an x86 and x86_64 installation, it always uses the x86
setup.ini, regardless of the current architecture.
The second problem is easy to fix. I think you can fix the first
problem by using the dependency order computed by setup and recorded in
/var/log/setup.log.full:
$ grep "Dependency order" /var/log/setup.log.full
Dependency order of packages: base-cygwin cygwin libdbus1_3 libiconv2
libintl8 libffi6 libpcre1 liblzma5 libgcc1 libstdc++6 terminfo...
You should only mark a package as a non-root if it is required by a
package that occurs later in the list.
Sorry, this isn't quite right, at least if your goal is to produce a
minimal set of roots. [It will, however, produce a set of roots that is
not necessarily minimal.] To get a minimal set you would have to find
the strongly-connected components of the dependency graph. [This is
what is done internally by setup.exe in order to compute the dependency
order.] Then when a package is marked as a non-root, all packages in
the same component should also be marked as non-root.
Ken
--
Problem reports: http://cygwin.com/problems.html
FAQ: http://cygwin.com/faq/
Documentation: http://cygwin.com/docs.html
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple