X-Recipient: archive-cygwin AT delorie DOT com DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:subject:message-id:reply-to :references:mime-version:content-type:in-reply-to; q=dns; s= default; b=ex9WwbDK45RY6i8L04SeF9dZ0/I+XgLunqb9hFfV2F8zUMtF+0mOd jthtQ+omYSWOVpzeUca+BjhLmtxDeCAHYTNMThceoLj288B5S0NOJmJUIj8ArfM7 yxV4iamJIeVR5EBWfI5SiZnmhb2lA8RUL55qRBdBtilS7DKXV4Qe+0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:from:to:subject:message-id:reply-to :references:mime-version:content-type:in-reply-to; s=default; bh=Qjo20MBf7C0T4uOkGgfx0uZ4kJk=; b=H7yb7zDDb+/Oik1/hpdiRw+mimNG FcnkDNugvDinQn6TgAt/5psvUqhd1GzEhI532qla1fwcF91DSduiat/w+IAiAuMx pFBbOf3z7sTezIX9+Z8prY9o2bFb7lBjpeZ+vhjwW9b2mXsgnXm7t1jJXrlogxLO PCKo5icaMNaqwKI= Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-5.9 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.2 X-HELO: calimero.vinschen.de Date: Thu, 13 Nov 2014 17:18:30 +0100 From: Corinna Vinschen To: cygwin AT cygwin DOT com Subject: Re: Setup 2.774 texlive postinstall takes 10+ hours) Message-ID: <20141113161830.GL2782@calimero.vinschen.de> Reply-To: cygwin AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com References: <1414708038168-112334 DOT post AT n5 DOT nabble DOT com> <54567198 DOT 8000504 AT cornell DOT edu> <20141103102515 DOT GS14051 AT calimero DOT vinschen DOT de> <87a948kvpw DOT fsf AT Rainer DOT invalid> <20141104085958 DOT GA4932 AT calimero DOT vinschen DOT de> <54618F4C DOT 6000107 AT cygwin DOT com> <546191B0 DOT 4050808 AT cygwin DOT com> <20141111115343 DOT GQ2782 AT calimero DOT vinschen DOT de> <20141113141804 DOT GK2782 AT calimero DOT vinschen DOT de> <5464D258 DOT 5010906 AT cornell DOT edu> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="cFq0usrlMbRL+LaE" Content-Disposition: inline In-Reply-To: <5464D258.5010906@cornell.edu> User-Agent: Mutt/1.5.23 (2014-03-12) --cFq0usrlMbRL+LaE Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable 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=3D$2; } > > /^requires: /{ for (i=3D2; i<=3DNF; ++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-r= untime > > > > 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 u= sed > for two unrelated purposes. The first one is to make sure that if packag= e A > requires package B in order to run properly, and if A is chosen for insta= ll, > 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 scrip= ts, > 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=20 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: >=20 > * 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. >=20 > 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 packa= ge > that depends on it is installed. >=20 > Ken >=20 > 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 --=20 Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat --cFq0usrlMbRL+LaE Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJUZNnWAAoJEPU2Bp2uRE+geXIQAIpyGB+yLaR/SbU6OrPr23iy ywkQZDBbOJx5quanGRzEA/JyHOX3rMgYcWVTKVnDVbm2V6XRqsGANws+VixiRzXY 6d67PdY0TGHywN20vIXnavCTev7zTLLrTI8+bnrIjbVmuGnhXzRUH0jpZ/dFIQdE RneHCI7FB+9dXPOz11+INh9vZlS9LnR/QlkuVSxQ5uYPOC8QnnvZRatl7ak0h+9W 7FWPQJHPidhJcHDr66g8lvcQbdT5HfqOtpj4Hsiv+CHA5f/kZmtSJ3DQaPQtap0Z wDUPQz5QQBtZamc8X0MzDqx/5kgpMmo5rqxLZvRKt2RLNHI2v7Mmp4FfXuBzXPc6 3tXDgqQCPmu86s333oa/eLBB25THC+faEmrID3WN5t0svuA1koC0ZzLD3CPMZK6J mDED8lOgp9S//b0vopzrhi1Kt+PcL5ddCIWA/P+t7jd0c3ktqOuXlVQMNQXq1dcq EhsON3qddNG6eAeQ9jX0uI0tALrhGxuaaDmUzYkOFLGKzObxbNY9vkAMzb+m9mYN VxoCb/yWgtrTS+m9agMmeg7AQ9OGfbLJFtvFwTojAvysYJMnVarg1nAGafUTdDxU WGejMPIcOzdHhISLofv8l9cNAqlL5v1v5vPa+znnI7g24GViNPCRMexaHD2iIUBK fPA7YHcYqQR3TfDLzShV =XWRF -----END PGP SIGNATURE----- --cFq0usrlMbRL+LaE--