postinstall: fontconfig abnormal exit

Ken Brown kbrown@cornell.edu
Sat Sep 12 12:56:24 GMT 2020


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


More information about the Cygwin mailing list