diff mbox series

[v2] gstreamer1.0-dev: Fix install conflict when enable multilib

Message ID 20250417095402.762-1-leimaohui@fujitsu.com
State New
Headers show
Series [v2] gstreamer1.0-dev: Fix install conflict when enable multilib | expand

Commit Message

Maohui Lei (Fujitsu) April 17, 2025, 9:54 a.m. UTC
Error: Transaction test error:
  file /usr/share/gir-1.0/Gst-1.0.gir conflicts between attempted installs of lib32-gstreamer1.0-dev-1.26.0-r0.core2_32 and gstreamer1.0-dev-1.26.0-r0.core2_64

fixed-size differs between 32 bit and 64 bit system

$ diff /mnt/test/build_auh/tmp/work/core2-64-poky-linux/gstreamer1.0/1.26.0/image/usr/share/gir-1.0/Gst-1.0.gir /mnt/test/build_auh/tmp/work/core2-32-pokymllib32-linux/lib32-gstreamer1.0/1.26.0/image/usr/share/gir-1.0/Gst-1.0.gir
31864c31864
<         <array zero-terminated="0" fixed-size="8">
---
>         <array zero-terminated="0" fixed-size="12">

source code:
$ less gstreamer1.0-dev/usr/include/gstreamer-1.0/gst/gstidstr.h
typedef struct {
  /* < private > */
  gpointer pointer;
  guint8 padding[8];
  guint8 padding[12];
  #error "Only 32 bit and 64 bit pointers supported currently"
} GstIdStr;

Signed-off-by: Lei Maohui <leimaohui@fujitsu.com>
---
 meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.0.bb | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Ross Burton April 17, 2025, 10:09 a.m. UTC | #1
On 17 Apr 2025, at 10:54, leimaohui via lists.openembedded.org <leimaohui=fujitsu.com@lists.openembedded.org> wrote:
> 
> Error: Transaction test error:
>  file /usr/share/gir-1.0/Gst-1.0.gir conflicts between attempted installs of lib32-gstreamer1.0-dev-1.26.0-r0.core2_32 and gstreamer1.0-dev-1.26.0-r0.core2_64
> 
> fixed-size differs between 32 bit and 64 bit system

If this file is different on across architectures then it shouldn’t be installed into $datadir, but $libdir.  Abusing multilib_scripts like this is not correct.

Ross
Xinjian Ma (Fujitsu) April 17, 2025, 10:34 a.m. UTC | #2
> -----邮件原件-----
> 发件人: openembedded-core@lists.openembedded.org
> <openembedded-core@lists.openembedded.org> 代表 Ross Burton via
> lists.openembedded.org
> 发送时间: 2025年4月17日 18:09
> 收件人: Lei, Maohui/雷 茂慧 <leimaohui@fujitsu.com>
> 抄送: Jose Quaresma <quaresma.jose@gmail.com>;
> openembedded-core@lists.openembedded.org
> 主题: Re: [OE-core] [PATCH v2] gstreamer1.0-dev: Fix install conflict when
> enable multilib
> 
> On 17 Apr 2025, at 10:54, leimaohui via lists.openembedded.org
> <leimaohui=fujitsu.com@lists.openembedded.org> wrote:
> >
> > Error: Transaction test error:
> >  file /usr/share/gir-1.0/Gst-1.0.gir conflicts between attempted installs of
> lib32-gstreamer1.0-dev-1.26.0-r0.core2_32 and
> gstreamer1.0-dev-1.26.0-r0.core2_64
> >
> > fixed-size differs between 32 bit and 64 bit system
> 
> If this file is different on across architectures then it shouldn’t be installed into
> $datadir, but $libdir.  Abusing multilib_scripts like this is not correct.
But /usr/share/gir-1.0/Gst-1.0.gir do differs across architectures, and it is not in $libdir but $datadir 
if we shouldn't use multilib_scripts, then what we should do in this kind of situation?
> 
> Ross
Ross Burton April 17, 2025, 11:02 a.m. UTC | #3
On 17 Apr 2025, at 11:34, Xinjian Ma (Fujitsu) <maxj.fnst@fujitsu.com> wrote:
>> If this file is different on across architectures then it shouldn’t be installed into
>> $datadir, but $libdir.  Abusing multilib_scripts like this is not correct.
> But /usr/share/gir-1.0/Gst-1.0.gir do differs across architectures, and it is not in $libdir but $datadir 
> if we shouldn't use multilib_scripts, then what we should do in this kind of situation?

Talk to upstream, either it should be in datadir and not contain architecture-specific information, or it should be moved to libdir.

Ross
Maohui Lei (Fujitsu) April 18, 2025, 7:34 a.m. UTC | #4
Hi, Ross

On 17 Apr 2025, at 11:34, Xinjian Ma (Fujitsu) <maxj.fnst@fujitsu.com> wrote:
>> If this file is different on across architectures then it shouldn’t be installed into
>> $datadir, but $libdir.  Abusing multilib_scripts like this is not correct.
> But /usr/share/gir-1.0/Gst-1.0.gir do differs across architectures, and it is not in $libdir but $datadir 
> if we shouldn't use multilib_scripts, then what we should do in this kind of situation?

>Talk to upstream, either it should be in datadir and not contain architecture-specific information, or it should be moved to libdir.

I have created an issue in gstreamer project:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4377
 
and maintainer has replied:
".gir files are in general not platform-independent and there's not much we can do about that."
 
So, seems upstream will not handle this issue...

Best regards
Lei
diff mbox series

Patch

diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.0.bb b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.0.bb
index a908ecd166..5c795ad676 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.0.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.0.bb
@@ -8,7 +8,7 @@  LICENSE = "LGPL-2.1-or-later"
 
 DEPENDS = "glib-2.0 glib-2.0-native libxml2 bison-native flex-native"
 
-inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection ptest-gnome
+inherit meson pkgconfig gettext upstream-version-is-even gobject-introspection ptest-gnome multilib_script
 
 LIC_FILES_CHKSUM = "file://COPYING;md5=69333daa044cb77e486cc36129f7a770 \
                     file://gst/gst.h;beginline=1;endline=21;md5=e059138481205ee2c6fc1c079c016d0d"
@@ -68,6 +68,8 @@  FILES:${PN}-dev += "${libdir}/gstreamer-1.0/*.a ${libdir}/gstreamer-1.0/include"
 FILES:${PN}-bash-completion += "${datadir}/bash-completion/completions/ ${datadir}/bash-completion/helpers/gst*"
 FILES:${PN}-dbg += "${datadir}/gdb ${datadir}/gstreamer-1.0/gdb"
 
+MULTILIB_SCRIPTS:append = " ${PN}-dev:${datadir}/gir-1.0/Gst-1.0.gir"
+
 RDEPENDS:${PN}-ptest:append:libc-glibc = " glibc-gconv-iso8859-5"
 
 CVE_PRODUCT = "gstreamer"