[OE-core] [PATCH v1] postinst-intercepts: check tool presence in intercept hooks

Sinan Kaya Okaya at kernel.org
Wed Jun 26 17:33:57 UTC 2019


Here is my investigation:

The intercepts are executed on QEMU during cross-compilation using
qemu-wrapper.

I see that the tools were built for the native architecture but
of course they do not exist on the target image and I have no
interest in pulling fonts and such into my image to make bitbake
happy.

DEBUG: Collected intercepts:
  poky/scripts/postinst-intercepts/update_font_cache
  poky/scripts/postinst-intercepts/update_gio_module_cache
  poky/scripts/postinst-intercepts/update_gtk_immodules_cache
  poky/scripts/postinst-intercepts/update_icon_cache
  poky/scripts/postinst-intercepts/update_pixbuf_cache
  poky/scripts/postinst-intercepts/update_udev_hwdb

I also see that other intercepts are doing the same folder/executable
checks.

What is so special about these?


On 6/26/2019 4:59 AM, Alexander Kanavin wrote:
> Yes, this looks suspicious to me as well. If the tools are absent you
> need to investigate why they are absent; skipping the tools execution is
> just sweeping the problem under the carpet, not fixing it.
> 
> Alex
> 
> On Wed, 26 Jun 2019 at 04:15, ChenQi <Qi.Chen at windriver.com
> <mailto:Qi.Chen at windriver.com>> wrote:
> 
>     Under which circumstances will the tools be absent?
>     And why do you check the existence of files for some the the existence
>     of directories for others?
> 
>     Best Regards,
>     Chen Qi
> 
>     On 06/26/2019 06:13 AM, Sinan Kaya wrote:
>     > do_rootfs: The postinstall intercept hook 'update_udev_hwdb'
>     > do_rootfs: The postinstall intercept hook
>     'update_gio_module_cache' failed
>     > do_rootfs: The postinstall intercept hook 'update_icon_cache' failed
>     > do_rootfs: The postinstall intercept hook 'update_icon_cache' failed
>     >
>     > Signed-off-by: Sinan Kaya <okaya at kernel.org <mailto:okaya at kernel.org>>
>     > ---
>     >   scripts/postinst-intercepts/update_font_cache    |  6 ++++--
>     >   .../postinst-intercepts/update_gio_module_cache  | 10 +++++++---
>     >   scripts/postinst-intercepts/update_icon_cache    | 16
>     +++++++++-------
>     >   scripts/postinst-intercepts/update_pixbuf_cache  |  5 ++++-
>     >   scripts/postinst-intercepts/update_udev_hwdb     |  6 ++++--
>     >   5 files changed, 28 insertions(+), 15 deletions(-)
>     >
>     > diff --git a/scripts/postinst-intercepts/update_font_cache
>     b/scripts/postinst-intercepts/update_font_cache
>     > index 3053c7065f4..954acbb41b2 100644
>     > --- a/scripts/postinst-intercepts/update_font_cache
>     > +++ b/scripts/postinst-intercepts/update_font_cache
>     > @@ -5,5 +5,7 @@
>     >   
>     >   set -e
>     >   
>     > -PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D -E
>     ${fontconfigcacheenv} $D${libexecdir}/${binprefix}fc-cache
>     --sysroot=$D --system-only ${fontconfigcacheparams}
>     > -chown -R root:root $D${fontconfigcachedir}
>     > +if [ -f $D${libexecdir}/${binprefix}fc-cache ]; then
>     > +     PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D -E
>     ${fontconfigcacheenv} $D${libexecdir}/${binprefix}fc-cache
>     --sysroot=$D --system-only ${fontconfigcacheparams}
>     > +     chown -R root:root $D${fontconfigcachedir}
>     > +fi
>     > diff --git a/scripts/postinst-intercepts/update_gio_module_cache
>     b/scripts/postinst-intercepts/update_gio_module_cache
>     > index c87fa85db9e..e8483cb0bf5 100644
>     > --- a/scripts/postinst-intercepts/update_gio_module_cache
>     > +++ b/scripts/postinst-intercepts/update_gio_module_cache
>     > @@ -5,7 +5,11 @@
>     >   
>     >   set -e
>     >   
>     > -PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D
>     $D${libexecdir}/${binprefix}gio-querymodules $D${libdir}/gio/modules/
>     > +if [ -f $D${libexecdir}/${binprefix}gio-querymodules ]; then
>     > +
>     > +     PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D
>     $D${libexecdir}/${binprefix}gio-querymodules $D${libdir}/gio/modules/
>     > +
>     > +     [ ! -e $D${libdir}/gio/modules/giomodule.cache ] ||
>     > +             chown root:root $D${libdir}/gio/modules/giomodule.cache
>     > +fi
>     >   
>     > -[ ! -e $D${libdir}/gio/modules/giomodule.cache ] ||
>     > -     chown root:root $D${libdir}/gio/modules/giomodule.cache
>     > diff --git a/scripts/postinst-intercepts/update_icon_cache
>     b/scripts/postinst-intercepts/update_icon_cache
>     > index 212209a9daf..a67ff7ef970 100644
>     > --- a/scripts/postinst-intercepts/update_icon_cache
>     > +++ b/scripts/postinst-intercepts/update_icon_cache
>     > @@ -5,12 +5,14 @@
>     >   
>     >   set -e
>     >   
>     > -# update native pixbuf loaders
>     >
>     -$STAGING_DIR_NATIVE/${libdir_native}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders
>     --update-cache
>     > +if [ -d $STAGING_DIR_NATIVE/${libdir_native}/gdk-pixbuf-2.0 ]; then
>     > +     # update native pixbuf loaders
>     > +   
>      $STAGING_DIR_NATIVE/${libdir_native}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders
>     --update-cache
>     >   
>     > -for icondir in $D/usr/share/icons/*/ ; do
>     > -    if [ -d $icondir ] ; then
>     > -        gtk-update-icon-cache -fqt  $icondir
>     > -    fi
>     > -done
>     > +     for icondir in $D/usr/share/icons/*/ ; do
>     > +         if [ -d $icondir ] ; then
>     > +             gtk-update-icon-cache -fqt  $icondir
>     > +         fi
>     > +     done
>     > +fi
>     >   
>     > diff --git a/scripts/postinst-intercepts/update_pixbuf_cache
>     b/scripts/postinst-intercepts/update_pixbuf_cache
>     > index ea12814474e..166422e5c37 100644
>     > --- a/scripts/postinst-intercepts/update_pixbuf_cache
>     > +++ b/scripts/postinst-intercepts/update_pixbuf_cache
>     > @@ -8,6 +8,9 @@ set -e
>     >   export
>     GDK_PIXBUF_MODULEDIR=$D${libdir}/gdk-pixbuf-2.0/2.10.0/loaders
>     >   export GDK_PIXBUF_FATAL_LOADER=1
>     >   
>     > -PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D
>     $D${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders \
>     > +if [ -d $D${libdir}/gdk-pixbuf-2.0 ]; then
>     > +     PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D
>     $D${libdir}/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders \
>     >       >$GDK_PIXBUF_MODULEDIR/../loaders.cache && \
>     >       sed -i -e "s:$D::g" $GDK_PIXBUF_MODULEDIR/../loaders.cache
>     > +fi
>     > +
>     > diff --git a/scripts/postinst-intercepts/update_udev_hwdb
>     b/scripts/postinst-intercepts/update_udev_hwdb
>     > index c4fb2bffcbf..7b6e38338f3 100644
>     > --- a/scripts/postinst-intercepts/update_udev_hwdb
>     > +++ b/scripts/postinst-intercepts/update_udev_hwdb
>     > @@ -5,5 +5,7 @@
>     >   
>     >   set -e
>     >   
>     > -PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D
>     $D${libexecdir}/${binprefix}udevadm hwdb --update --root $D
>     > -chown root:root $D${sysconfdir}/udev/hwdb.bin
>     > +if [ -d $D/lib/udev/hwdb.d ]; then
>     > +     PSEUDO_UNLOAD=1 ${binprefix}qemuwrapper -L $D
>     $D${libexecdir}/${binprefix}udevadm hwdb --update --root $D
>     > +     chown root:root $D${sysconfdir}/udev/hwdb.bin
>     > +fi
> 
> 
>     -- 
>     _______________________________________________
>     Openembedded-core mailing list
>     Openembedded-core at lists.openembedded.org
>     <mailto:Openembedded-core at lists.openembedded.org>
>     http://lists.openembedded.org/mailman/listinfo/openembedded-core
> 



More information about the Openembedded-core mailing list