Thanks, this looks fine.

Alex

On Fri, 12 Dec 2025 at 14:39, hongxu via lists.openembedded.org
<[email protected]> wrote:
>
> 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 (#227592): 
https://lists.openembedded.org/g/openembedded-core/message/227592
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