Alex,

From: Alexander Kanavin <alex.kana...@gmail.com>
Sent: Tuesday, February 8, 2022 11:59 AM
To: Bryan Evenson <beven...@melinkcorp.com>
Cc: Patches and discussions about the oe-core layer 
<openembedded-core@lists.openembedded.org>
Subject: Re: [OE-core] gio-querymodules: error while loading shared libraries: 
libffi.so.6: cannot open shared object file

On Tue, 8 Feb 2022 at 16:25, Bryan Evenson 
<beven...@melinkcorp.com<mailto:beven...@melinkcorp.com>> wrote:
I traced back and I see the gio-querymodules call is inserted in the postrm by 
gio-module-class.bbclass.  Based on the commit notes, the postrm and postinst 
steps are an optimization and are not required to succeed.  Therefore I'd argue 
this should fail gracefully; just because we haven't yet seen this fail during 
minor upgrade attempts doesn't mean it can't.  I'd propose changing the line:

    ${libexecdir}/${MLPREFIX}gio-querymodules ${libdir}/gio/modules/

in gio-module-cache.bbclass to:

    ${libexecdir}/${MLPREFIX}gio-querymodules ${libdir}/gio/modules/ || true

I tested this change and it fixed my upgrade issue.  I still saw the error 
message but libglib-2.0 completed its upgrade successfully.  If you don't see 
any issues with this change, I'll send a patch out later today.

This change will mask all failures that happen for any reason, not just the one 
you saw, so I am not going to accept it. The correct fix is to figure out what 
would be the correct order of updating and why opkg isn't able to perform the 
mass-update in that order.

Alex

As best I can tell, this is breaking because libffi upgraded from libffi6 to 
libffi7.  The old version of glib-2.0 depends on libffi6 and the new version of 
glib-2.0 depends on libffi7.  Opkg starts to upgrade glib-2.0, but it first 
upgrades the dependent packages.  This removes libffi6 and installs libffi7.  
Then, the postrm script runs for glib-2.0 using the old binaries.  The 
gio-querymodules call then fails because it tries to load libffi6 which no 
longer exists.  Even if I was able to defer upgrading libffi from libffi6 to 
libffi7 until after glib-2.0 upgrades, I’d then run into a similar problem with 
the postinst script.  In that case, gio-querymodules would fail because it 
would try to load libffi7 which would not be installed yet.

I understand that you don’t want errors to go through undetected.  Would an 
appropriate error message, such as:

    ${libexecdir}/${MLPREFIX}gio-querymodules ${libdir}/gio/modules/ || echo 
“GIO module caching failed.  You may need to manually update the GIO module 
cache.”

Work for you?

Thanks,
Bryan
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#161525): 
https://lists.openembedded.org/g/openembedded-core/message/161525
Mute This Topic: https://lists.openembedded.org/mt/88979156/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to