While installing 32 bit gstreamer package and 64 bit gstreamer package to
one rootfs, package management (dnf) reported a conflict failure
|Error: Transaction test error:
|  file /usr/share/gir-1.0/Gst-1.0.gir conflicts between attempted installs of
gstreamer1.0-dev-1.26.7-r0.wr2500.corei7_64 and 
lib32-gstreamer1.0-dev-1.26.7-r0.wr2500.corei7_32

Due to upstream commit [1], the size of padding differs between 32 bit
arch and 64 bit arch
...
|typedef struct {
|  /* < private > */
|  gpointer pointer;
|#if GLIB_SIZEOF_VOID_P == 8
|  guint8 padding[8];
|#elif GLIB_SIZEOF_VOID_P == 4
|  guint8 padding[12];
|#else
|  #error "Only 32 bit and 64 bit pointers supported currently"
|#endif
|} GstIdStr;
...

It made the generated Gst-1.0.gir be different for 32 bit and 64 bit packages,
Install Gst-1.0.gir to ${libdir} which splits 32 bit and 64 bit libraries

Submit a patch to upstream to add meson option (gir_dir_prefix) to override 
default
gir install location (datadir). When multilib is enabled, install .gir files to
${libdir} other than ${datadir}

[1] 
https://gitlab.freedesktop.org/-/commit/0ee18781f9b210129da23a85236266bf84bafa83#f9880c83c8bdc4d61ac7d51a4a212f602cad5d86_0_39

Signed-off-by: Hongxu Jia <[email protected]>
---
 ...ir_prefix-option-to-override-gir-def.patch | 149 ++++++++++++++++++
 .../gstreamer/gstreamer1.0_1.26.7.bb          |   3 +
 2 files changed, 152 insertions(+)
 create mode 100644 
meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-meson-Add-gir_dir_prefix-option-to-override-gir-def.patch

diff --git 
a/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-meson-Add-gir_dir_prefix-option-to-override-gir-def.patch
 
b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-meson-Add-gir_dir_prefix-option-to-override-gir-def.patch
new file mode 100644
index 0000000000..506e33c61f
--- /dev/null
+++ 
b/meta/recipes-multimedia/gstreamer/gstreamer1.0/0001-meson-Add-gir_dir_prefix-option-to-override-gir-def.patch
@@ -0,0 +1,149 @@
+From 6fb2149fc5c7b1805c138a52990305a4f53170fa Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <[email protected]>
+Date: Thu, 11 Dec 2025 18:38:24 -0800
+Subject: [PATCH] meson: Add gir_dir_prefix option to override gir default
+ location
+
+Originally, the .gir files would always get installed into the default
+location (datadir).
+
+This commit adds meson option (gir_dir_prefix) to override it as intermediate
+prefix for gir installation under ${prefix}, such as
+
+  $ meson setup -Dgir_dir_prefix=lib64
+
+The .gir files are installed to /usr/lib64/gir-1.0
+
+  Installing gst/Gst-1.0.gir to /usr/lib64/gir-1.0
+
+Upstream-Status: Submitted 
[https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/10363]
+
+Signed-off-by: Hongxu Jia <[email protected]>
+---
+ gst/meson.build                 |  1 +
+ libs/gst/base/meson.build       |  1 +
+ libs/gst/check/meson.build      |  1 +
+ libs/gst/controller/meson.build |  1 +
+ libs/gst/net/meson.build        |  1 +
+ meson.build                     | 23 ++++++++++++++++++++++-
+ meson_options.txt               |  3 +++
+ 7 files changed, 30 insertions(+), 1 deletion(-)
+
+diff --git a/gst/meson.build b/gst/meson.build
+index c69a6dc..ebe673d 100644
+--- a/gst/meson.build
++++ b/gst/meson.build
+@@ -322,6 +322,7 @@ if build_gir
+     'export_packages' : pkg_name,
+     'includes' : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0' ],
+     'install' : true,
++    'install_dir_gir': gst_girdir,
+     'extra_args' : gst_gir_extra_args,
+   }
+   library_def += {'gir': [gir]}
+diff --git a/libs/gst/base/meson.build b/libs/gst/base/meson.build
+index b7aca73..2fb0590 100644
+--- a/libs/gst/base/meson.build
++++ b/libs/gst/base/meson.build
+@@ -89,6 +89,7 @@ if build_gir
+     'include_directories' : [configinc, libsinc, privinc],
+     'includes' : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0', 'Gst-1.0'],
+     'install' : true,
++    'install_dir_gir': gst_girdir,
+     'extra_args' : gst_gir_extra_args,
+   }
+ 
+diff --git a/libs/gst/check/meson.build b/libs/gst/check/meson.build
+index 679a15d..e934526 100644
+--- a/libs/gst/check/meson.build
++++ b/libs/gst/check/meson.build
+@@ -86,6 +86,7 @@ if build_gir
+     'include_directories' : [configinc, libsinc, privinc],
+     'includes' : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0', 'Gst-1.0'],
+     'install' : true,
++    'install_dir_gir': gst_girdir,
+     'extra_args' : gst_gir_extra_args,
+   }
+   library_def += {'gir': [gir]}
+diff --git a/libs/gst/controller/meson.build b/libs/gst/controller/meson.build
+index 9d38af8..411b951 100644
+--- a/libs/gst/controller/meson.build
++++ b/libs/gst/controller/meson.build
+@@ -81,6 +81,7 @@ if build_gir
+     'include_directories' : [configinc, libsinc, privinc],
+     'includes' : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0', 'Gst-1.0'],
+     'install' : true,
++    'install_dir_gir': gst_girdir,
+     'extra_args' : gst_gir_extra_args,
+   }
+   library_def += {'gir': [gir]}
+diff --git a/libs/gst/net/meson.build b/libs/gst/net/meson.build
+index 60ed92c..b81139e 100644
+--- a/libs/gst/net/meson.build
++++ b/libs/gst/net/meson.build
+@@ -67,6 +67,7 @@ if build_gir
+     'include_directories' : [configinc, libsinc],
+     'includes' : ['GLib-2.0', 'GObject-2.0', 'GModule-2.0', 'Gio-2.0', 
'Gst-1.0'],
+     'install' : true,
++    'install_dir_gir': gst_girdir,
+     'extra_args' : gst_gir_extra_args,
+   }
+   library_def += {'gir': [gir]}
+diff --git a/meson.build b/meson.build
+index e2127f6..7ecfc2d 100644
+--- a/meson.build
++++ b/meson.build
+@@ -629,6 +629,27 @@ if static_build
+   gst_c_args += ['-DGST_STATIC_COMPILATION']
+ endif
+ 
++gir_dir_prefix = get_option('gir_dir_prefix')
++if gir_dir_prefix == '' or gir_dir_prefix == get_option('datadir')
++  gir_dir_prefix = get_option('datadir')
++  gir_dir_pc_prefix = '${datadir}'
++else
++  gir_dir_pc_prefix = '${prefix}' / gir_dir_prefix
++endif
++
++# This is effectively the GIR XML format major version
++gir_suffix = 'gir-1.0'
++
++gst_girdir = prefix / gir_dir_prefix / gir_suffix
++
++
++if build_gir
++  gst_c_args += [
++    '-DGIR_SUFFIX="@0@"'.format(gir_suffix),
++    '-DGIR_DIR="@0@"'.format(gst_girdir),
++  ]
++endif
++
+ # Used in gst/parse/meson.build and below
+ python3 = import('python').find_installation()
+ 
+@@ -680,7 +701,7 @@ pkgconfig_variables = [
+   'exec_prefix=${prefix}',
+   'toolsdir=${exec_prefix}/bin',
+   'pluginsdir=${libdir}/gstreamer-1.0',
+-  'girdir=${datadir}/gir-1.0',
++  'girdir=' + gir_dir_pc_prefix / gir_suffix,
+   'typelibdir=${libdir}/girepository-1.0',
+   'pluginscannerdir=${libexecdir}/gstreamer-1.0'
+ ]
+diff --git a/meson_options.txt b/meson_options.txt
+index 78af552..97c03c6 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -32,6 +32,9 @@ option('examples', type : 'feature', value : 'auto', yield : 
true)
+ option('tests', type : 'feature', value : 'auto', yield : true)
+ option('benchmarks', type : 'feature', value : 'auto', yield : true)
+ option('tools', type : 'feature', value : 'auto', yield : true)
++option('gir_dir_prefix',
++       type: 'string',
++       description: 'Intermediate prefix for gir installation under 
${prefix}')
+ option('introspection', type : 'feature', value : 'auto', yield : true, 
description : 'Generate gobject-introspection bindings')
+ option('nls', type : 'feature', value : 'auto', yield: true, description : 
'Enable native language support (translations)')
+ option('extra-checks', type : 'feature', value : 'enabled', yield : true, 
description : 'Enable extra runtime checks')
+-- 
+2.34.1
+
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.7.bb 
b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.7.bb
index 444165a869..88b1af0796 100644
--- a/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.7.bb
+++ b/meta/recipes-multimedia/gstreamer/gstreamer1.0_1.26.7.bb
@@ -21,6 +21,7 @@ SRC_URI = 
"https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-${PV}.tar.x
            file://0002-tests-add-support-for-install-the-tests.patch \
            file://0003-tests-use-a-dictionaries-for-environment.patch \
            
file://0004-tests-add-helper-script-to-run-the-installed_tests.patch \
+           
file://0001-meson-Add-gir_dir_prefix-option-to-override-gir-def.patch \
            "
 SRC_URI[sha256sum] = 
"18a5e214114dc501407697dd458514bba62cadd5414c60f793cf70141a4d0bb3"
 
@@ -56,6 +57,8 @@ EXTRA_OEMESON += " \
     ${@gettext_oemeson(d)} \
 "
 
+EXTRA_OEMESON:append:class-target = " ${@'-Dgir_dir_prefix=${baselib}' if 
d.getVar('MULTILIBS') else ''}"
+
 GIR_MESON_ENABLE_FLAG = "enabled"
 GIR_MESON_DISABLE_FLAG = "disabled"
 
-- 
2.34.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#227590): 
https://lists.openembedded.org/g/openembedded-core/message/227590
Mute This Topic: https://lists.openembedded.org/mt/116745751/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to