postinstall: fontconfig abnormal exit

Brian Inglis Brian.Inglis@SystematicSw.ab.ca
Sat Sep 12 05:18:43 GMT 2020


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, as those scripts are run on each upgrade, although as the add
actually replaces the fonts.dtd entry, no harm should be done by repetition.

-- 
Take care. Thanks, Brian Inglis, Calgary, Alberta, Canada

This email may be disturbing to some readers as it contains
too much technical detail. Reader discretion is advised.
[Data in IEC units and prefixes, physical quantities in SI.]


[TL;DR: We do not want to add more permanent postinstall scripts unless essential!
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, pushing the Setup run time and service
(cron) downtime to hours if you don't notice, terminate the postinstall, and
rerun in the background.
I've had to deinstall packages by playing with the Setup dependency solver
results, just to eliminate their permanent postinstall scripts that often cause
extended delays.
It's not as if run Setup frequently, or take anything down if I can help it, and
prefer to wait until I have 10s of MB of package upgrades to apply to make it
worthwhile to shut down services, mainly right before restarting to allowing
that month's Windows updates to be applied once they are deemed safe to go.]



More information about the Cygwin mailing list