Message ID | 20250422025127.605-1-leimaohui@fujitsu.com |
---|---|
State | New |
Headers | show |
Series | gstreamer1.0-dev: Fix install conflict when enable multilib | expand |
On 22 Apr 2025, at 03:51, Lei Maohui <leimaohui@fujitsu.com> 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 > > $ 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"> > > The issue that "/usr/share is a architecture-independent location but contains architecture-dependent file", is > a "long-known problem with gobject-introspection. You'll probably find an issue or three from 10 years ago about that" > according to https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4377 > > We can found issue reported years ago, gstreamer community will not handle this issue for now > https://gitlab.gnome.org/GNOME/gobject-introspection/-/issues?search=multiarch And I still reject this as being an inappropriate workaround: you shouldn’t have to use update-alternatives to build something unless desperately needed. Following the search you provided we come across https://gitlab.gnome.org/GNOME/gobject-introspection/-/issues/323 for the general issue and the accepted MR https://gitlab.gnome.org/GNOME/gobject-introspection/-/merge_requests/63 that was filed by Kang Kai from Wind River. This is not the solution. Putting the .gir into $libdir is the answer. See, for example, the Debian G-I policy: https://salsa.debian.org/gnome-team/gobject-introspection/-/blob/debian/latest/debian/policy.txt?ref_type=heads. The interesting question is why Debian doesn’t feel the need to do this. Ross
On 22 Apr 2025, at 03:51, Lei Maohui <leimaohui@fujitsu.com> 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 Also what exact configuration are you replicating this in, and what is the surrounding type that contains the differing size? I can’t replicate with qemux86 vs qemux86-64: $ ls core2-*/gstreamer1.0/*/image/usr/share/gir-1.0/Gst-1.0.gir core2-32-poky-linux/gstreamer1.0/1.24.12/image/usr/share/gir-1.0/Gst-1.0.gir core2-64-poky-linux/gstreamer1.0/1.24.12/image/usr/share/gir-1.0/Gst-1.0.gir $ diff core2-*/gstreamer1.0/*/image/usr/share/gir-1.0/Gst-1.0.gir $ Ross
> -----邮件原件----- > 发件人: openembedded-core@lists.openembedded.org > <openembedded-core@lists.openembedded.org> 代表 Ross Burton via > lists.openembedded.org > 发送时间: 2025年4月22日 19:17 > 收件人: Lei, Maohui/雷 茂慧 <leimaohui@fujitsu.com> > 抄送: openembedded-core@lists.openembedded.org > 主题: Re: [OE-core] [PATCH] gstreamer1.0-dev: Fix install conflict when enable > multilib > > On 22 Apr 2025, at 03:51, Lei Maohui <leimaohui@fujitsu.com> 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 > > Also what exact configuration are you replicating this in, and what is the > surrounding type that contains the differing size? I can’t replicate with > qemux86 vs qemux86-64: > > $ ls core2-*/gstreamer1.0/*/image/usr/share/gir-1.0/Gst-1.0.gir > core2-32-poky-linux/gstreamer1.0/1.24.12/image/usr/share/gir-1.0/Gst-1.0. > gir > core2-64-poky-linux/gstreamer1.0/1.24.12/image/usr/share/gir-1.0/Gst-1.0. > gir > > $ diff core2-*/gstreamer1.0/*/image/usr/share/gir-1.0/Gst-1.0.gir > $ I will work on this patch on behalf of my colleague from now reproduce steps: 1. Add in local.conf the following lines: MACHINE ?= "qemux86-64" require conf/multilib.conf MULTILIBS ?= "multilib:lib32" DEFAULTTUNE:virtclass-multilib-lib32 ?= "core2-32" 2. add lib32-gstreamer1.0-dev gstreamer1.0-dev to core-image-minimal.bb IMAGE_INSTALL = "packagegroup-core-boot ${CORE_IMAGE_EXTRA_INSTALL} lib32-gstreamer1.0-dev gstreamer1.0-dev " 3. $ bitbake core-image-minimal Liu Yiding > > Ross
> -----邮件原件----- > 发件人: openembedded-core@lists.openembedded.org > <openembedded-core@lists.openembedded.org> 代表 Ross Burton via > lists.openembedded.org > 发送时间: 2025年4月22日 18:45 > 收件人: Lei, Maohui/雷 茂慧 <leimaohui@fujitsu.com> > 抄送: openembedded-core@lists.openembedded.org > 主题: Re: [OE-core] [PATCH] gstreamer1.0-dev: Fix install conflict when enable > multilib > > On 22 Apr 2025, at 03:51, Lei Maohui <leimaohui@fujitsu.com> 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 > > > > $ diff > > /mnt/test/build_auh/tmp/work/core2-64-poky-linux/gstreamer1.0/1.26.0/i > > mage/usr/share/gir-1.0/Gst-1.0.gir > > /mnt/test/build_auh/tmp/work/core2-32-pokymllib32-linux/lib32-gstreame > > r1.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"> > > > > The issue that "/usr/share is a architecture-independent location but > > contains architecture-dependent file", is a "long-known problem with > gobject-introspection. You'll probably find an issue or three from 10 years ago > about that" > > according to > > https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4377 > > > > We can found issue reported years ago, gstreamer community will not > > handle this issue for now > > https://gitlab.gnome.org/GNOME/gobject-introspection/-/issues?search=m > > ultiarch > > And I still reject this as being an inappropriate workaround: you shouldn’t have to > use update-alternatives to build something unless desperately needed. > > Following the search you provided we come across > https://gitlab.gnome.org/GNOME/gobject-introspection/-/issues/323 for the > general issue and the accepted MR > https://gitlab.gnome.org/GNOME/gobject-introspection/-/merge_requests/63 > that was filed by Kang Kai from Wind River. > > This is not the solution. Putting the .gir into $libdir is the answer. See, for > example, the Debian G-I policy: > https://salsa.debian.org/gnome-team/gobject-introspection/-/blob/debian/lates > t/debian/policy.txt?ref_type=heads. > > The interesting question is why Debian doesn’t feel the need to do this. Yesterday, I spent several hours trying to install GIR files into libdir instead of datadir. However, it seems this is not a straightforward task. I sought help from the GStreamer community here: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4383 According to the owner's response: "This is not going to work as gobject-introspection (and meson) expect it to be installed in /usr/share. This has to be fixed in gobject-introspection first." I realize this isn’t something that I can easily accomplish, sorry. Liu Yiding > > Ross
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"