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