This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Setup 2.774 texlive postinstall takes 10+ hours)


On Nov 13 10:46, Ken Brown wrote:
> On 11/13/2014 9:18 AM, Corinna Vinschen wrote:
> >Ok, now after a collegue of mine informed me about the existence of
> >tsort (*blush*), I could finally produce some more info about loops
> >in our dependencies.  I wrote a simple script:
> >
> >awk '/^@ /{ left=$2; }
> >      /^requires: /{ for (i=2; i<=NF; ++i) print left " " $i; }
> >     ' < setup.ini | tsort
> >
> >It found the following dependency loops which have to be fixed.
> >Most notably are the dep loops of _autorebase and _update-info-dir,
> >which we'll fix ASAP.
> >
> >   GConf2 -> libgconf2_4 -> gconf-desktop-schemas -> GConf2
> >
> >   xf86-video-dummy -> xorg-server -> xf86-video-dummy
> >
> >   xf86-video-nested -> xorg-server -> xf86-video-nested
> >
> >   texlive -> texlive-collection-basic -> texlive
> >
> >   libautotrace3 -> libMagickCore5 -> libautotrace3
> >
> >   libgeoclue0 -> geoclue -> libgeoclue0
> >
> >   shared-mime-info -> libglib2.0_0 -> shared-mime-info
> >
> >   libatspi0 -> at-spi2-core -> libatspi0
> >
> >   libfam0 -> gamin -> libglib2.0_0 -> libfam0
> >
> >   gsettings-desktop-schemas -> libglib2.0_0 -> gsettings-desktop-schemas
> >
> >   libdbus1_3 -> dbus -> libdbus1_3
> >
> >   php-Archive_Tar -> php-PEAR -> php-Archive_Tar
> >
> >   autogen -> libopts-devel -> autogen
> >
> >   python-libxslt -> python-libxml2 -> python-libxslt
> >
> >   libopenldap2_4_2 -> libsasl2_3 -> libopenldap2_4_2
> >
> >   perl-Mozilla-CA -> perl-IO-Socket-SSL -> perl-Mozilla-CA
> >
> >   rubygems -> ruby-io-console -> ruby -> rubygems
> >
> >   ruby-rake -> rubygems -> ruby-rake
> >
> >   ruby-rdoc -> rubygems -> ruby-rdoc
> >
> >   ruby-rdoc -> rubygems -> ruby-io-console -> ruby -> ruby-rdoc
> >
> >   mingw64-i686-runtime -> mingw64-i686-gcc-core -> mingw64-i686-runtime
> >
> >   mingw64-x86_64-runtime -> mingw64-x86_64-gcc-core -> mingw64-x86_64-runtime
> >
> >   tesseract-ocr-eng -> tesseract-ocr -> tesseract-ocr-eng
> >
> >   openmpi -> libopenmpi -> openmpi
> >

Update:  All loops concerning _autorebase and _update-info-dir are
gone now.  This should help a lot.

> Many of the dependency loops are harmless.  If two packages A and B are
> involved in a loop, and if they both provide postinstall scripts, then you
> can't be sure which script will run first.  So we only have to worry about
> those loops in which the order is important.

Right, but the maintainer should certainly have a look.

> The real problem here is that the "requires" line in setup.ini is being used
> for two unrelated purposes.  The first one is to make sure that if package A
> requires package B in order to run properly, and if A is chosen for install,
> then so is B.  For this purpose, loops are not only harmless, they're
> sometimes necessary.  For example, the dependency loop between texlive and
> texlive-collection-basic is completely appropriate.  How else can we make
> sure that if one is chosen, then so is the other?

In theory one could argue that the package split is not in the best
interest of things...

> The second purpose is to determine the order of running postinstall scripts,
> and this is where loops are bad.  We need to rethink how postinstall order
> is determined.  What about just adding a provision for specifying
> postinstall dependencies, independent of the current "requires" line?

This needs support by the upset perl script as well as Setup.  It
would sure be nice, but *basically* the requires also defines an 
order of postinstall scripts.  If no dangerous loops occur.  For
the time being we should probably run my tiny awk|tsort script once
a week or so :}

> We've
> already discussed a couple of situations where this would be useful:
> 
> * base-cygwin needs to run first;
> * autorebase should be run as early as possible.

Right.  This *should* be taken care of by the dependency order.  There
was a really bad bug in setup.ini.  Originally the _autobase package
depended on rebase, bash and cygwin.  Despite removing the requires:
line from _autobase'es setup.hint file, setup.ini still kept this
line in all the time :-P

I added an empty "requires:" line to _autobase/setup.hint, and the new
setup.ini does not contain these old requirements anymore.

What we really need short-term is some perl guru fixing upset.  Is
anybody feeling up to the task?

> A third one concerns texlive.  I could greatly speed up the texlive
> postinstall scripts if I had a package (maybe called "_texlive_post") that
> provided a script to be run after all other texlive scripts.
> 
> There's one final idea I'd like to throw out, possibly as an alternative to
> Achim's perpetual postinstall scripts: It would be useful to be able to
> specify that a certain package (such as _autorebase, or my proposed
> _texlive_post) should always be selected for *reinstall* whenever a package
> that depends on it is installed.
> 
> Ken
> 
> P.S. If there is support for any of my suggestions, I'll do all I can to
> help with the implementation.

Yes, please!  I don't know how often I repeated this in the past.  If
you feel like improving Cygwin one way or the other by providing code or
documentation, to Cygwin itself or its infrastructure, please feel free.
Yes, sometimes you'll struggle against my unwillingness or, more often
than not, laziness, but I'm really open to improvements if they come
with patches.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

Attachment: pgpeKF3WZsEOw.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]