On 9/12/2020 1:18 AM, Brian Inglis wrote:
On 2020-09-11 15:13, Ken Brown via Cygwin wrote:
On 9/11/2020 4:30 PM, Achim Gratz wrote:
Ken Brown via Cygwin writes:
Unfortunately, this doesn't yet fix the problem with
fontconfig_dtd.sh.  The latter will now succeed if it is run after
libxml2.sh, but not if it is run first.  I'm not aware of any way to
force setup to run one postinstall script before another.

Multiple ways:

1. Make the libxml postinstall script sort lexically before any others
that depend on it.  Obviously this is brittle, but it might work in this
particular instance (autorebase does this).

2.  Make the libxml catalog creation a perpetual postinstall script with
prefix "0p_".  That only works if it doesn't depend on other postinstall
scripts having their work completed.

3. Implement and use the stratified postinstall concept originally
outlined at:
https://sourceware.org/legacy-ml/cygwin-apps/2014-12/msg00148.html

4. Use the package dependency order to order the postinstall script
activation.  With libzypp we should have the correct information, we'd
just need to somehow make the packagemeta iterator use it.  That still
won't work if we have dependency loops.

5. (Try to) Run any failed postinstalls again in setup and bail only if
the number of fails does not decrease from the last iteration.

At the time it was deemed too complicated and so we only use the "end"
strata for the perpetual postinstall scripts.  As said then, there would
need to be some serious discussion on how to coordinate the strata
assignments.

There's no dependency relation between libxml2 and libfontconfig-common, so #4
wouldn't fix the problem.  And some of the other suggestions would require work
on setup.exe that someone would have to do.  The current problem is simple to
fix and shouldn't have to wait for that.

I like your idea of using perpetual postinstall scripts.  I think the way to do
it is probably to make fontconfig_dtd.sh perpetual with prefix "zp_".  That way
if libfontconfig-common is installed without libxml2 but then libxml2 is
installed later, the xmlcatalog command gets run.  We would have to check that
no harm is done if that xmlcatalog command gets run more than once.

As libxml2 supplies /usr/bin/xmlcatalog, that postinstall script should both
conditionally create the catalog and only if just created, also conditionally
add fonts.dtd,

No, the libxml2 postinstall script shouldn't add fonts.dtd. That should be added only when/if fontconfig is installed. So it's an appropriate task for a fontconfig postinstall script.

[TL;DR: We do not want to add more permanent postinstall scripts unless 
essential!

Making fontconfig_dtd.sh perpetual may or may not be essential, but it's the best way I can think of to solve the problem of this bug report. Can you propose a better way?

Permanent postinstall scripts can greatly extend the run time of the Cygwin
Setup program, when fontconfig, man-db, or tex just seem to decide sometimes for
some reason that another whole new world of fonts, man pages, or whatever has
appeared that they have to reprocess,

If you see a perpetual postinstall script doing something time-consuming that you think is unnecessary, please make a bug report.

pushing the Setup run time and service
(cron) downtime to hours

I've never seen this.  Please give details.

Ken
--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to