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] -=-=-=-=-=-=-=-=-=-=-=-