diff mbox series

[oe-core,RFC] glib-2.0: revert gir-gio-unix-split

Message ID 20250912061728.5365-1-f_l_k@t-online.de
State New
Headers show
Series [oe-core,RFC] glib-2.0: revert gir-gio-unix-split | expand

Commit Message

Markus Volk Sept. 12, 2025, 6:17 a.m. UTC
This commit removes backward compatibility introspection from Gio-2.0
causing gnome-shell 48 to fail.

Undo the changes until switching to gnome 49

Signed-off-by: Markus Volk <f_l_k@t-online.de>
---
 ...-branch-gir-gio-unix-split-into-main.patch | 816 ++++++++++++++++++
 meta/recipes-core/glib-2.0/glib.inc           |   1 +
 2 files changed, 817 insertions(+)
 create mode 100644 meta/recipes-core/glib-2.0/files/0001-Revert-Merge-branch-gir-gio-unix-split-into-main.patch

Comments

Gyorgy Sarvari Sept. 12, 2025, 8:20 a.m. UTC | #1
I think you meant this for the oe-core ML

On 9/12/25 08:17, Markus Volk via lists.openembedded.org wrote:
> This commit removes backward compatibility introspection from Gio-2.0
> causing gnome-shell 48 to fail.
>
> Undo the changes until switching to gnome 49
>
> Signed-off-by: Markus Volk <f_l_k@t-online.de>
> ---
>  ...-branch-gir-gio-unix-split-into-main.patch | 816 ++++++++++++++++++
>  meta/recipes-core/glib-2.0/glib.inc           |   1 +
>  2 files changed, 817 insertions(+)
>  create mode 100644 meta/recipes-core/glib-2.0/files/0001-Revert-Merge-branch-gir-gio-unix-split-into-main.patch
>
> diff --git a/meta/recipes-core/glib-2.0/files/0001-Revert-Merge-branch-gir-gio-unix-split-into-main.patch b/meta/recipes-core/glib-2.0/files/0001-Revert-Merge-branch-gir-gio-unix-split-into-main.patch
> new file mode 100644
> index 0000000000..80680651a2
> --- /dev/null
> +++ b/meta/recipes-core/glib-2.0/files/0001-Revert-Merge-branch-gir-gio-unix-split-into-main.patch
> @@ -0,0 +1,816 @@
> +From fa119f74ebce3d44546c73584541be9ec1c6c2d0 Mon Sep 17 00:00:00 2001
> +From: Markus Volk <f_l_k@t-online.de>
> +Date: Thu, 11 Sep 2025 19:59:44 +0200
> +Subject: [PATCH] Revert "Merge branch 'gir-gio-unix-split' into 'main'"
> +
> +This reverts commit cb074a65c79a3b4ae4f3ae0e36775af46bcc8009, reversing
> +changes made to 0a017b39c2b085ddfede105584193b453a66909a.
> +
> +Upstream-Status: Inappropriate
> +---
> + gio/gdesktopappinfo.c                  |  95 +++++++++++------------
> + gio/gunixmounts.c                      |  45 ++++++-----
> + girepository/girepository.c            | 101 ++++---------------------
> + girepository/introspection/meson.build |  21 +++++
> + girepository/tests/callable-info.c     |  30 --------
> + girepository/tests/repository.c        |   6 +-
> + girepository/tests/test-common.h       |   5 ++
> + 7 files changed, 112 insertions(+), 191 deletions(-)
> +
> +diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
> +index 1e5a752ac..0c3038c17 100644
> +--- a/gio/gdesktopappinfo.c
> ++++ b/gio/gdesktopappinfo.c
> +@@ -1795,7 +1795,7 @@ g_desktop_app_info_class_init (GDesktopAppInfoClass *klass)
> +   /**
> +    * GDesktopAppInfo:filename:
> +    *
> +-   * The origin filename of this [class@GioUnix.DesktopAppInfo]
> ++   * The origin filename of this [class@Gio.DesktopAppInfo]
> +    */
> +   g_object_class_install_property (gobject_class,
> +                                    PROP_FILENAME,
> +@@ -2084,9 +2084,9 @@ g_desktop_app_info_load_file (GDesktopAppInfo *self)
> +  * g_desktop_app_info_new_from_keyfile:
> +  * @key_file: an opened [type@GLib.KeyFile]
> +  *
> +- * Creates a new [class@GioUnix.DesktopAppInfo].
> ++ * Creates a new [class@Gio.DesktopAppInfo].
> +  *
> +- * Returns: (nullable): a new [class@GioUnix.DesktopAppInfo] or `NULL` on error.
> ++ * Returns: (nullable): a new [class@Gio.DesktopAppInfo] or `NULL` on error.
> +  *
> +  * Since: 2.18
> +  **/
> +@@ -2113,9 +2113,9 @@ g_desktop_app_info_new_from_keyfile (GKeyFile *key_file)
> +  * @filename: (type filename): the path of a desktop file, in the GLib
> +  *      filename encoding
> +  *
> +- * Creates a new [class@GioUnix.DesktopAppInfo].
> ++ * Creates a new [class@Gio.DesktopAppInfo].
> +  *
> +- * Returns: (nullable): a new [class@GioUnix.DesktopAppInfo] or `NULL` on error.
> ++ * Returns: (nullable): a new [class@Gio.DesktopAppInfo] or `NULL` on error.
> +  **/
> + GDesktopAppInfo *
> + g_desktop_app_info_new_from_filename (const char *filename)
> +@@ -2135,7 +2135,7 @@ g_desktop_app_info_new_from_filename (const char *filename)
> +  * g_desktop_app_info_new:
> +  * @desktop_id: the desktop file ID
> +  *
> +- * Creates a new [class@GioUnix.DesktopAppInfo] based on a desktop file ID.
> ++ * Creates a new [class@Gio.DesktopAppInfo] based on a desktop file ID.
> +  *
> +  * A desktop file ID is the basename of the desktop file, including the
> +  * `.desktop` extension. GIO is looking for a desktop file with this name
> +@@ -2147,7 +2147,7 @@ g_desktop_app_info_new_from_filename (const char *filename)
> +  * (i.e. a desktop ID of `kde-foo.desktop` will match
> +  * `/usr/share/applications/kde/foo.desktop`).
> +  *
> +- * Returns: (nullable): a new [class@GioUnix.DesktopAppInfo], or `NULL` if no
> ++ * Returns: (nullable): a new [class@Gio.DesktopAppInfo], or `NULL` if no
> +  *    desktop file with that ID exists.
> +  */
> + GDesktopAppInfo *
> +@@ -2266,7 +2266,7 @@ g_desktop_app_info_get_display_name (GAppInfo *appinfo)
> + 
> + /**
> +  * g_desktop_app_info_get_is_hidden:
> +- * @info: a [class@GioUnix.DesktopAppInfo].
> ++ * @info: a [class@Gio.DesktopAppInfo].
> +  *
> +  * A desktop file is hidden if the
> +  * [`Hidden` key](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-hidden)
> +@@ -2282,13 +2282,11 @@ g_desktop_app_info_get_is_hidden (GDesktopAppInfo *info)
> + 
> + /**
> +  * g_desktop_app_info_get_filename:
> +- * @info: a [class@GioUnix.DesktopAppInfo]
> ++ * @info: a [class@Gio.DesktopAppInfo]
> +  *
> +- * When @info was created from a known filename, return it.
> +- *
> +- * In some situations such as a [class@GioUnix.DesktopAppInfo] returned
> +- * from [ctor@GioUnix.DesktopAppInfo.new_from_keyfile], this function
> +- * will return `NULL`.
> ++ * When @info was created from a known filename, return it.  In some
> ++ * situations such as a [class@Gio.DesktopAppInfo] returned from
> ++ * [ctor@Gio.DesktopAppInfo.new_from_keyfile], this function will return `NULL`.
> +  *
> +  * Returns: (nullable) (type filename): The full path to the file for @info,
> +  *   or `NULL` if not known.
> +@@ -2334,7 +2332,7 @@ g_desktop_app_info_get_icon (GAppInfo *appinfo)
> + 
> + /**
> +  * g_desktop_app_info_get_categories:
> +- * @info: a [class@GioUnix.DesktopAppInfo]
> ++ * @info: a [class@Gio.DesktopAppInfo]
> +  *
> +  * Gets the categories from the desktop file.
> +  *
> +@@ -2351,7 +2349,7 @@ g_desktop_app_info_get_categories (GDesktopAppInfo *info)
> + 
> + /**
> +  * g_desktop_app_info_get_keywords:
> +- * @info: a [class@GioUnix.DesktopAppInfo]
> ++ * @info: a [class@Gio.DesktopAppInfo]
> +  *
> +  * Gets the keywords from the desktop file.
> +  *
> +@@ -2368,7 +2366,7 @@ g_desktop_app_info_get_keywords (GDesktopAppInfo *info)
> + 
> + /**
> +  * g_desktop_app_info_get_generic_name:
> +- * @info: a [class@GioUnix.DesktopAppInfo]
> ++ * @info: a [class@Gio.DesktopAppInfo]
> +  *
> +  * Gets the generic name from the desktop file.
> +  *
> +@@ -2383,7 +2381,7 @@ g_desktop_app_info_get_generic_name (GDesktopAppInfo *info)
> + 
> + /**
> +  * g_desktop_app_info_get_nodisplay:
> +- * @info: a [class@GioUnix.DesktopAppInfo]
> ++ * @info: a [class@Gio.DesktopAppInfo]
> +  *
> +  * Gets the value of the
> +  * [`NoDisplay` key](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-nodisplay)
> +@@ -2402,7 +2400,7 @@ g_desktop_app_info_get_nodisplay (GDesktopAppInfo *info)
> + 
> + /**
> +  * g_desktop_app_info_get_show_in:
> +- * @info: a [class@GioUnix.DesktopAppInfo]
> ++ * @info: a [class@Gio.DesktopAppInfo]
> +  * @desktop_env: (nullable): a string specifying a desktop name
> +  *
> +  * Checks if the application info should be shown in menus that list available
> +@@ -3571,7 +3569,7 @@ g_desktop_app_info_launch (GAppInfo           *appinfo,
> + 
> + /**
> +  * g_desktop_app_info_launch_uris_as_manager_with_fds:
> +- * @appinfo: a [class@GioUnix.DesktopAppInfo]
> ++ * @appinfo: a [class@Gio.DesktopAppInfo]
> +  * @uris: (element-type utf8): List of URIs
> +  * @launch_context: (nullable): a [class@Gio.AppLaunchContext]
> +  * @spawn_flags: [flags@GLib.SpawnFlags], used for each process
> +@@ -3585,9 +3583,9 @@ g_desktop_app_info_launch (GAppInfo           *appinfo,
> +  * @stderr_fd: file descriptor to use for child’s stderr, or `-1`
> +  * @error: return location for a #GError, or `NULL`
> +  *
> +- * Equivalent to [method@GioUnix.DesktopAppInfo.launch_uris_as_manager] but
> +- * allows you to pass in file descriptors for the stdin, stdout and stderr
> +- * streams of the launched process.
> ++ * Equivalent to [method@Gio.DesktopAppInfo.launch_uris_as_manager] but allows
> ++ * you to pass in file descriptors for the stdin, stdout and stderr streams
> ++ * of the launched process.
> +  *
> +  * If application launching occurs via some non-spawn mechanism (e.g. D-Bus
> +  * activation) then @stdin_fd, @stdout_fd and @stderr_fd are ignored.
> +@@ -3626,7 +3624,7 @@ g_desktop_app_info_launch_uris_as_manager_with_fds (GDesktopAppInfo            *
> + 
> + /**
> +  * g_desktop_app_info_launch_uris_as_manager:
> +- * @appinfo: a [class@GioUnix.DesktopAppInfo]
> ++ * @appinfo: a [class@Gio.DesktopAppInfo]
> +  * @uris: (element-type utf8): List of URIs
> +  * @launch_context: (nullable): a [class@Gio.AppLaunchContext]
> +  * @spawn_flags: [flags@GLib.SpawnFlags], used for each process
> +@@ -3688,7 +3686,7 @@ g_desktop_app_info_launch_uris_as_manager (GDesktopAppInfo            *appinfo,
> +  * Sets the name of the desktop that the application is running in.
> +  *
> +  * This is used by [method@Gio.AppInfo.should_show] and
> +- * [method@GioUnix.DesktopAppInfo.get_show_in] to evaluate the
> ++ * [method@Gio.DesktopAppInfo.get_show_in] to evaluate the
> +  * [`OnlyShowIn`](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-onlyshowin)
> +  * and [`NotShowIn`](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-notshowin)
> +  * keys.
> +@@ -4701,7 +4699,7 @@ g_app_info_get_default_for_uri_scheme_impl (const char *uri_scheme)
> +  * the `Implements` line of the desktop file of the application.
> +  *
> +  * Returns: (element-type GDesktopAppInfo) (transfer full): a list of
> +- *   [class@GioUnix.DesktopAppInfo] objects.
> ++ *   [class@Gio.DesktopAppInfo] objects.
> +  *
> +  * Since: 2.42
> +  **/
> +@@ -4754,12 +4752,11 @@ g_desktop_app_info_get_implementations (const gchar *interface)
> +  * any time.
> +  *
> +  * None of the search results are subjected to the normal validation
> +- * checks performed by [ctor@GioUnix.DesktopAppInfo.new] (for example,
> +- * checking that the executable referenced by a result exists), and so it is
> +- * possible for [ctor@GioUnix.DesktopAppInfo.new] to return `NULL` when passed
> +- * an app ID returned by this function. It is expected that calling code will
> +- * do this when subsequently creating a [class@GioUnix.DesktopAppInfo] for
> +- * each result.
> ++ * checks performed by [ctor@Gio.DesktopAppInfo.new] (for example, checking that
> ++ * the executable referenced by a result exists), and so it is possible for
> ++ * [ctor@Gio.DesktopAppInfo.new] to return `NULL` when passed an app ID returned
> ++ * by this function. It is expected that calling code will do this when
> ++ * subsequently creating a [class@Gio.DesktopAppInfo] for each result.
> +  *
> +  * Returns: (array zero-terminated=1) (element-type GStrv) (transfer full): a
> +  *   list of strvs.  Free each item with [func@GLib.strfreev] and free the outer
> +@@ -4885,7 +4882,7 @@ g_app_info_get_all_impl (void)
> +  * #GDesktopAppInfoLookup is an opaque data structure and can only be accessed
> +  * using the following functions.
> +  *
> +- * Deprecated: 2.28: The [iface@GioUnix.DesktopAppInfoLookup] interface is
> ++ * Deprecated: 2.28: The [iface@Gio.DesktopAppInfoLookup] interface is
> +  *   deprecated and unused by GIO.
> +  **/
> + 
> +@@ -4903,14 +4900,14 @@ g_desktop_app_info_lookup_default_init (GDesktopAppInfoLookupInterface *iface)
> + 
> + /**
> +  * g_desktop_app_info_lookup_get_default_for_uri_scheme:
> +- * @lookup: a [iface@GioUnix.DesktopAppInfoLookup]
> ++ * @lookup: a [iface@Gio.DesktopAppInfoLookup]
> +  * @uri_scheme: a string containing a URI scheme.
> +  *
> +  * Gets the default application for launching applications
> +- * using this URI scheme for a particular [iface@GioUnix.DesktopAppInfoLookup]
> ++ * using this URI scheme for a particular [iface@Gio.DesktopAppInfoLookup]
> +  * implementation.
> +  *
> +- * The [iface@GioUnix.DesktopAppInfoLookup] interface and this function is used
> ++ * The [iface@Gio.DesktopAppInfoLookup] interface and this function is used
> +  * to implement [func@Gio.AppInfo.get_default_for_uri_scheme] backends
> +  * in a GIO module. There is no reason for applications to use it
> +  * directly. Applications should use
> +@@ -4919,7 +4916,7 @@ g_desktop_app_info_lookup_default_init (GDesktopAppInfoLookupInterface *iface)
> +  * Returns: (transfer full) (nullable): [iface@Gio.AppInfo] for given
> +  *   @uri_scheme or `NULL` on error.
> +  *
> +- * Deprecated: 2.28: The [iface@GioUnix.DesktopAppInfoLookup] interface is
> ++ * Deprecated: 2.28: The [iface@Gio.DesktopAppInfoLookup] interface is
> +  *   deprecated and unused by GIO.
> +  */
> + GAppInfo *
> +@@ -4941,7 +4938,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
> + 
> + /**
> +  * g_desktop_app_info_get_startup_wm_class:
> +- * @info: a [class@GioUnix.DesktopAppInfo] that supports startup notify
> ++ * @info: a [class@Gio.DesktopAppInfo] that supports startup notify
> +  *
> +  * Retrieves the `StartupWMClass` field from @info. This represents the
> +  * `WM_CLASS` property of the main window of the application, if launched
> +@@ -4962,7 +4959,7 @@ g_desktop_app_info_get_startup_wm_class (GDesktopAppInfo *info)
> + 
> + /**
> +  * g_desktop_app_info_get_string:
> +- * @info: a [class@GioUnix.DesktopAppInfo]
> ++ * @info: a [class@Gio.DesktopAppInfo]
> +  * @key: the key to look up
> +  *
> +  * Looks up a string value in the keyfile backing @info.
> +@@ -4986,7 +4983,7 @@ g_desktop_app_info_get_string (GDesktopAppInfo *info,
> + 
> + /**
> +  * g_desktop_app_info_get_locale_string:
> +- * @info: a [class@GioUnix.DesktopAppInfo]
> ++ * @info: a [class@Gio.DesktopAppInfo]
> +  * @key: the key to look up
> +  *
> +  * Looks up a localized string value in the keyfile backing @info
> +@@ -5013,7 +5010,7 @@ g_desktop_app_info_get_locale_string (GDesktopAppInfo *info,
> + 
> + /**
> +  * g_desktop_app_info_get_boolean:
> +- * @info: a [class@GioUnix.DesktopAppInfo]
> ++ * @info: a [class@Gio.DesktopAppInfo]
> +  * @key: the key to look up
> +  *
> +  * Looks up a boolean value in the keyfile backing @info.
> +@@ -5036,7 +5033,7 @@ g_desktop_app_info_get_boolean (GDesktopAppInfo *info,
> + 
> + /**
> +  * g_desktop_app_info_get_string_list:
> +- * @info: a [class@GioUnix.DesktopAppInfo]
> ++ * @info: a [class@Gio.DesktopAppInfo]
> +  * @key: the key to look up
> +  * @length: (out) (optional): return location for the number of returned
> +  *   strings, or `NULL`
> +@@ -5064,7 +5061,7 @@ g_desktop_app_info_get_string_list (GDesktopAppInfo *info,
> + 
> + /**
> +  * g_desktop_app_info_has_key:
> +- * @info: a [class@GioUnix.DesktopAppInfo]
> ++ * @info: a [class@Gio.DesktopAppInfo]
> +  * @key: the key to look up
> +  *
> +  * Returns whether @key exists in the `Desktop Entry` group
> +@@ -5088,7 +5085,7 @@ g_desktop_app_info_has_key (GDesktopAppInfo *info,
> + 
> + /**
> +  * g_desktop_app_info_list_actions:
> +- * @info: a [class@GioUnix.DesktopAppInfo]
> ++ * @info: a [class@Gio.DesktopAppInfo]
> +  *
> +  * Returns the list of
> +  * [‘additional application actions’](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s11.html)
> +@@ -5125,9 +5122,9 @@ app_info_has_action (GDesktopAppInfo *info,
> + 
> + /**
> +  * g_desktop_app_info_get_action_name:
> +- * @info: a [class@GioUnix.DesktopAppInfo]
> ++ * @info: a [class@Gio.DesktopAppInfo]
> +  * @action_name: the name of the action as from
> +- *   [method@GioUnix.DesktopAppInfo.list_actions]
> ++ *   [method@Gio.DesktopAppInfo.list_actions]
> +  *
> +  * Gets the user-visible display name of the
> +  * [‘additional application actions’](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s11.html)
> +@@ -5168,15 +5165,15 @@ g_desktop_app_info_get_action_name (GDesktopAppInfo *info,
> + 
> + /**
> +  * g_desktop_app_info_launch_action:
> +- * @info: a [class@GioUnix.DesktopAppInfo]
> ++ * @info: a [class@Gio.DesktopAppInfo]
> +  * @action_name: the name of the action as from
> +- *   [method@GioUnix.DesktopAppInfo.list_actions]
> ++ *   [method@Gio.DesktopAppInfo.list_actions]
> +  * @launch_context: (nullable): a [class@Gio.AppLaunchContext]
> +  *
> +  * Activates the named application action.
> +  *
> +  * You may only call this function on action names that were
> +- * returned from [method@GioUnix.DesktopAppInfo.list_actions].
> ++ * returned from [method@Gio.DesktopAppInfo.list_actions].
> +  *
> +  * Note that if the main entry of the desktop file indicates that the
> +  * application supports startup notification, and @launch_context is
> +diff --git a/gio/gunixmounts.c b/gio/gunixmounts.c
> +index 54edc57ed..009d6855f 100644
> +--- a/gio/gunixmounts.c
> ++++ b/gio/gunixmounts.c
> +@@ -1867,7 +1867,7 @@ g_unix_mount_entries_get (guint64 *time_read)
> +  * @n_entries_out: (optional) (out caller-allocates): return location for the
> +  *   number of mount entries returned
> +  *
> +- * Gets an array of [struct@GioUnix.MountEntry]s containing the Unix mounts
> ++ * Gets an array of [struct@Gio.UnixMountEntry]s containing the Unix mounts
> +  * listed in @table_path.
> +  *
> +  * This is a generalized version of [func@GioUnix.mount_entries_get], mainly
> +@@ -1899,7 +1899,7 @@ g_unix_mounts_get_from_file (const char *table_path,
> +  * @n_entries_out: (optional) (out caller-allocates): return location for the
> +  *   number of mount entries returned
> +  *
> +- * Gets an array of [struct@GioUnix.MountEntry]s containing the Unix mounts
> ++ * Gets an array of [struct@Gio.UnixMountEntry]s containing the Unix mounts
> +  * listed in @table_path.
> +  *
> +  * This is a generalized version of [func@GioUnix.mount_entries_get], mainly
> +@@ -2126,7 +2126,7 @@ g_unix_mount_points_get (guint64 *time_read)
> +  * @n_points_out: (optional) (out caller-allocates): return location for the
> +  *   number of mount points returned
> +  *
> +- * Gets an array of [struct@GioUnix.MountPoint]s containing the Unix mount
> ++ * Gets an array of [struct@Gio.UnixMountPoint]s containing the Unix mount
> +  * points listed in @table_path.
> +  *
> +  * This is a generalized version of [func@GioUnix.mount_points_get], mainly
> +@@ -2722,7 +2722,7 @@ g_unix_mount_monitor_new (void)
> +  * 
> +  * Frees a Unix mount.
> +  *
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.free] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.free] instead.
> +  */
> + void
> + g_unix_mount_free (GUnixMountEntry *mount_entry)
> +@@ -2759,7 +2759,7 @@ g_unix_mount_entry_free (GUnixMountEntry *mount_entry)
> +  *
> +  * Returns: (transfer full): a new [struct@GioUnix.MountEntry]
> +  * Since: 2.54
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.copy] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.copy] instead.
> +  */
> + GUnixMountEntry *
> + g_unix_mount_copy (GUnixMountEntry *mount_entry)
> +@@ -2850,7 +2850,7 @@ g_unix_mount_point_copy (GUnixMountPoint *mount_point)
> +  * 
> +  * Returns: `1`, `0` or `-1` if @mount1 is greater than, equal to,
> +  *    or less than @mount2, respectively
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.compare] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.compare] instead.
> +  */
> + gint
> + g_unix_mount_compare (GUnixMountEntry *mount1,
> +@@ -2912,7 +2912,7 @@ g_unix_mount_entry_compare (GUnixMountEntry *mount1,
> +  * Gets the mount path for a Unix mount.
> +  * 
> +  * Returns: (type filename): the mount path for @mount_entry
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.get_mount_path] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.get_mount_path] instead.
> +  */
> + const gchar *
> + g_unix_mount_get_mount_path (GUnixMountEntry *mount_entry)
> +@@ -2944,7 +2944,7 @@ g_unix_mount_entry_get_mount_path (GUnixMountEntry *mount_entry)
> +  * Gets the device path for a Unix mount.
> +  * 
> +  * Returns: (type filename): a string containing the device path
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.get_device_path] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.get_device_path] instead.
> +  */
> + const gchar *
> + g_unix_mount_get_device_path (GUnixMountEntry *mount_entry)
> +@@ -2973,9 +2973,8 @@ g_unix_mount_entry_get_device_path (GUnixMountEntry *mount_entry)
> +  * g_unix_mount_get_root_path:
> +  * @mount_entry: a [struct@GioUnix.MountEntry]
> +  * 
> +- * Gets the root of the mount within the filesystem.
> +- *
> +- * This is useful e.g. for mounts created by bind operation, or btrfs subvolumes.
> ++ * Gets the root of the mount within the filesystem. This is useful e.g. for
> ++ * mounts created by bind operation, or btrfs subvolumes.
> +  * 
> +  * For example, the root path is equal to `/` for a mount created by
> +  * `mount /dev/sda1 /mnt/foo` and `/bar` for
> +@@ -2983,7 +2982,7 @@ g_unix_mount_entry_get_device_path (GUnixMountEntry *mount_entry)
> +  *
> +  * Returns: (nullable): a string containing the root, or `NULL` if not supported
> +  * Since: 2.60
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.get_root_path] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.get_root_path] instead.
> +  */
> + const gchar *
> + g_unix_mount_get_root_path (GUnixMountEntry *mount_entry)
> +@@ -3020,7 +3019,7 @@ g_unix_mount_entry_get_root_path (GUnixMountEntry *mount_entry)
> +  * Gets the filesystem type for the Unix mount.
> +  * 
> +  * Returns: a string containing the file system type
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.get_fs_type] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.get_fs_type] instead.
> +  */
> + const gchar *
> + g_unix_mount_get_fs_type (GUnixMountEntry *mount_entry)
> +@@ -3053,13 +3052,13 @@ g_unix_mount_entry_get_fs_type (GUnixMountEntry *mount_entry)
> +  * 
> +  * For example: `rw,relatime,seclabel,data=ordered`.
> +  * 
> +- * This is similar to [method@GioUnix.MountPoint.get_options], but it takes
> ++ * This is similar to [func@GioUnix.MountPoint.get_options], but it takes
> +  * a [struct@GioUnix.MountEntry] as an argument.
> +  *
> +  * Returns: (nullable): a string containing the options, or `NULL` if not
> +  *    available.
> +  * Since: 2.58
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.get_options] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.get_options] instead.
> +  */
> + const gchar *
> + g_unix_mount_get_options (GUnixMountEntry *mount_entry)
> +@@ -3075,7 +3074,7 @@ g_unix_mount_get_options (GUnixMountEntry *mount_entry)
> +  *
> +  * For example: `rw,relatime,seclabel,data=ordered`.
> +  *
> +- * This is similar to [method@GioUnix.MountPoint.get_options], but it takes
> ++ * This is similar to [func@GioUnix.MountPoint.get_options], but it takes
> +  * a [struct@GioUnix.MountEntry] as an argument.
> +  *
> +  * Returns: (nullable): a string containing the options, or `NULL` if not
> +@@ -3097,7 +3096,7 @@ g_unix_mount_entry_get_options (GUnixMountEntry *mount_entry)
> +  * Checks if a Unix mount is mounted read only.
> +  * 
> +  * Returns: true if @mount_entry is read only; false otherwise
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.is_readonly] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.is_readonly] instead.
> +  */
> + gboolean
> + g_unix_mount_is_readonly (GUnixMountEntry *mount_entry)
> +@@ -3136,7 +3135,7 @@ g_unix_mount_entry_is_readonly (GUnixMountEntry *mount_entry)
> +  * file system types and device paths are ignored.
> +  *
> +  * Returns: true if the Unix mount is for a system path; false otherwise
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.is_system_internal] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.is_system_internal] instead.
> +  */
> + gboolean
> + g_unix_mount_is_system_internal (GUnixMountEntry *mount_entry)
> +@@ -3528,7 +3527,7 @@ type_to_icon (GUnixMountType type, gboolean is_mount_point, gboolean use_symboli
> +  * The result is a translated string.
> +  *
> +  * Returns: (transfer full): a newly allocated translated string
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.guess_name] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.guess_name] instead.
> +  */
> + gchar *
> + g_unix_mount_guess_name (GUnixMountEntry *mount_entry)
> +@@ -3567,7 +3566,7 @@ g_unix_mount_entry_guess_name (GUnixMountEntry *mount_entry)
> +  * Guesses the icon of a Unix mount entry.
> +  *
> +  * Returns: (transfer full): a [iface@Gio.Icon]
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.guess_icon] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.guess_icon] instead.
> +  */
> + GIcon *
> + g_unix_mount_guess_icon (GUnixMountEntry *mount_entry)
> +@@ -3598,7 +3597,7 @@ g_unix_mount_entry_guess_icon (GUnixMountEntry *mount_entry)
> +  *
> +  * Returns: (transfer full): a [iface@Gio.Icon]
> +  * Since: 2.34
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.guess_symbolic_icon] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.guess_symbolic_icon] instead.
> +  */
> + GIcon *
> + g_unix_mount_guess_symbolic_icon (GUnixMountEntry *mount_entry)
> +@@ -3680,7 +3679,7 @@ g_unix_mount_point_guess_symbolic_icon (GUnixMountPoint *mount_point)
> +  * Guesses whether a Unix mount entry can be ejected.
> +  *
> +  * Returns: true if @mount_entry is deemed to be ejectable; false otherwise
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.guess_can_eject] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.guess_can_eject] instead.
> +  */
> + gboolean
> + g_unix_mount_guess_can_eject (GUnixMountEntry *mount_entry)
> +@@ -3717,7 +3716,7 @@ g_unix_mount_entry_guess_can_eject (GUnixMountEntry *mount_entry)
> +  * Guesses whether a Unix mount entry should be displayed in the UI.
> +  *
> +  * Returns: true if @mount_entry is deemed to be displayable; false otherwise
> +- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.guess_should_display] instead.
> ++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.guess_should_display] instead.
> +  */
> + gboolean
> + g_unix_mount_guess_should_display (GUnixMountEntry *mount_entry)
> +diff --git a/girepository/girepository.c b/girepository/girepository.c
> +index 1c816d1de..ebcd3d236 100644
> +--- a/girepository/girepository.c
> ++++ b/girepository/girepository.c
> +@@ -135,15 +135,6 @@ struct _GIRepository
> + 
> + G_DEFINE_TYPE (GIRepository, gi_repository, G_TYPE_OBJECT);
> + 
> +-static GITypelib *
> +-require_internal (GIRepository           *repository,
> +-                  const char             *namespace,
> +-                  const char             *version,
> +-                  GIRepositoryLoadFlags   flags,
> +-                  const char * const     *search_paths,
> +-                  size_t                  n_search_paths,
> +-                  GError                **error);
> +-
> + #ifdef G_PLATFORM_WIN32
> + #include <windows.h>
> + 
> +@@ -605,10 +596,6 @@ load_dependencies_recurse (GIRepository *repository,
> +     {
> +       int i;
> + 
> +-      const char * const *search_path =
> +-        (const char * const *) repository->typelib_search_path->pdata;
> +-      gsize search_path_len = repository->typelib_search_path->len;
> +-
> +       for (i = 0; dependencies[i]; i++)
> +         {
> +           char *dependency = dependencies[i];
> +@@ -621,9 +608,8 @@ load_dependencies_recurse (GIRepository *repository,
> +           dependency_namespace = g_strndup (dependency, (size_t) (last_dash - dependency));
> +           dependency_version = last_dash+1;
> + 
> +-          if (!require_internal (repository, dependency_namespace, dependency_version,
> +-                                 0, search_path, search_path_len,
> +-                                 error))
> ++          if (!gi_repository_require (repository, dependency_namespace, dependency_version,
> ++                                      0, error))
> +             {
> +               g_free (dependency_namespace);
> +               g_strfreev (dependencies);
> +@@ -663,7 +649,7 @@ static const char *
> + register_internal (GIRepository *repository,
> +                    const char   *source,
> +                    gboolean      lazy,
> +-                   GITypelib    *typelib,
> ++                   GITypelib     *typelib,
> +                    GError      **error)
> + {
> +   Header *header;
> +@@ -2026,54 +2012,6 @@ require_internal (GIRepository           *repository,
> +   return ret;
> + }
> + 
> +-static GITypelib *
> +-require_internal_with_platform_data (GIRepository           *repository,
> +-                                     const char             *namespace,
> +-                                     const char             *version,
> +-                                     GIRepositoryLoadFlags   flags,
> +-                                     const char * const     *search_paths,
> +-                                     size_t                  search_paths_len,
> +-                                     GError                **error)
> +-{
> +-  GITypelib *typelib;
> +-
> +-  typelib = require_internal (repository, namespace, version, flags,
> +-                              search_paths, search_paths_len,
> +-                              error);
> +-  if (!typelib)
> +-    return NULL;
> +-
> +-#if defined (G_OS_UNIX) || defined (G_OS_WIN32)
> +-  /* Backward compatibility hack: if we're loading Gio-2.0, we automatically
> +-   * load the platform specific introspection data that used to exist inside
> +-   * Gio-2.0
> +-   */
> +-  if (g_str_equal (namespace, "Gio") &&
> +-      (!version || g_str_equal (version, "2.0")))
> +-    {
> +-      GError *local_error = NULL;
> +-      const char *platform_namespace;
> +-
> +-#  if defined (G_OS_UNIX)
> +-      platform_namespace = "GioUnix";
> +-#  elif defined (G_OS_WIN32)
> +-      platform_namespace = "GioWin32";
> +-#  endif /* defined (G_OS_LINUX) */
> +-
> +-      if (!require_internal (repository, platform_namespace, version, flags,
> +-                             search_paths, search_paths_len,
> +-                             &local_error))
> +-        {
> +-          g_critical ("Unable to load platform-specific GIO introspection data: %s",
> +-                      local_error->message);
> +-          g_error_free (local_error);
> +-        }
> +-    }
> +-#endif /* defined(G_OS_UNIX) || defined(G_OS_WIN32) */
> +-
> +-  return typelib;
> +-}
> +-
> + /**
> +  * gi_repository_require:
> +  * @repository: A #GIRepository
> +@@ -2094,24 +2032,19 @@ require_internal_with_platform_data (GIRepository           *repository,
> +  * Since: 2.80
> +  */
> + GITypelib *
> +-gi_repository_require (GIRepository           *repository,
> +-                       const char             *namespace,
> +-                       const char             *version,
> +-                       GIRepositoryLoadFlags   flags,
> +-                       GError                **error)
> ++gi_repository_require (GIRepository  *repository,
> ++                       const char    *namespace,
> ++                       const char    *version,
> ++                       GIRepositoryLoadFlags flags,
> ++                       GError       **error)
> + {
> +-  const char * const *search_paths;
> +-  size_t search_paths_len;
> +-
> +-  g_return_val_if_fail (GI_IS_REPOSITORY (repository), NULL);
> +-  g_return_val_if_fail (namespace != NULL, NULL);
> ++  GITypelib *typelib;
> + 
> +-  search_paths = (const char * const *) repository->typelib_search_path->pdata;
> +-  search_paths_len = repository->typelib_search_path->len;
> ++  typelib = require_internal (repository, namespace, version, flags,
> ++                              (const char * const *) repository->typelib_search_path->pdata,
> ++                              repository->typelib_search_path->len, error);
> + 
> +-  return require_internal_with_platform_data (repository, namespace, version, flags,
> +-                                              search_paths, search_paths_len,
> +-                                              error);
> ++  return typelib;
> + }
> + 
> + /**
> +@@ -2145,12 +2078,8 @@ gi_repository_require_private (GIRepository           *repository,
> + {
> +   const char * const search_path[] = { typelib_dir, NULL };
> + 
> +-  g_return_val_if_fail (GI_IS_REPOSITORY (repository), NULL);
> +-  g_return_val_if_fail (namespace != NULL, NULL);
> +-
> +-  return require_internal_with_platform_data (repository, namespace, version, flags,
> +-                                              search_path, 1,
> +-                                              error);
> ++  return require_internal (repository, namespace, version, flags,
> ++                           search_path, 1, error);
> + }
> + 
> + static gboolean
> +diff --git a/girepository/introspection/meson.build b/girepository/introspection/meson.build
> +index 2c2a36c8f..a846a764c 100644
> +--- a/girepository/introspection/meson.build
> ++++ b/girepository/introspection/meson.build
> +@@ -234,6 +234,27 @@ gio_gir_args = [
> +   '--symbol-prefix=gio',
> + ]
> + 
> ++# For API compatibility reasons, Gio-2.0.gir needs to contain the platform
> ++# specific APIs which are also present in the (newer) GioUnix-2.0.gir and
> ++# GioWin32-2.0.gir repositories.
> ++# See https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3892#note_2001361
> ++# These can be dropped when GIO next breaks API (i.e. with Gio-3.0.gir).
> ++if host_system == 'windows'
> ++  gio_gir_sources += [ gio_win32_include_headers, win32_sources ]
> ++  foreach h: gio_win32_include_headers
> ++    gio_gir_args += '--c-include=gio/' + fs.name(h)
> ++  endforeach
> ++  gio_gir_packages += 'gio-windows-2.0'
> ++  gio_gir_args += '--pkg=gio-windows-2.0'
> ++else
> ++  gio_gir_sources += [ gio_unix_include_headers, unix_sources ]
> ++  foreach h: gio_unix_include_headers
> ++    gio_gir_args += '--c-include=gio/' + fs.name(h)
> ++  endforeach
> ++  gio_gir_packages += 'gio-unix-2.0'
> ++  gio_gir_args += '--pkg=gio-unix-2.0'
> ++endif
> ++
> + gio_gir = gnome.generate_gir(libgio,
> +   sources: gio_gir_sources,
> +   namespace: 'Gio',
> +diff --git a/girepository/tests/callable-info.c b/girepository/tests/callable-info.c
> +index 973a54703..69fd5e940 100644
> +--- a/girepository/tests/callable-info.c
> ++++ b/girepository/tests/callable-info.c
> +@@ -210,32 +210,6 @@ test_callable_info_static_vfunc (RepositoryFixture *fx,
> +   gi_base_info_unref ((GIBaseInfo *) vfunc_info);
> + }
> + 
> +-#ifdef G_OS_UNIX
> +-static void
> +-test_callable_info_platform_unix_is_method (RepositoryFixture *fx,
> +-                                            const void *unused)
> +-{
> +-  GIBaseInfo *info;
> +-  GIFunctionInfo *func_info;
> +-
> +-  g_test_message ("Checking DesktopAppInfo in Gio");
> +-  info = gi_repository_find_by_name (fx->repository, "Gio", "DesktopAppInfo");
> +-  g_assert_null (info);
> +-
> +-  g_test_message ("Checking DesktopAppInfo in GioUnix");
> +-  info = gi_repository_find_by_name (fx->repository, "GioUnix", "DesktopAppInfo");
> +-  g_assert_nonnull (info);
> +-
> +-  /* Must provide Gio.DesktopAppInfo methods */
> +-  func_info = gi_object_info_find_method (GI_OBJECT_INFO (info), "has_key");
> +-  g_assert_true (gi_callable_info_is_method (GI_CALLABLE_INFO (func_info)));
> +-  g_assert_nonnull (func_info);
> +-  g_clear_pointer (&func_info, gi_base_info_unref);
> +-
> +-  gi_base_info_unref (info);
> +-}
> +-#endif
> +-
> + int
> + main (int argc, char **argv)
> + {
> +@@ -247,9 +221,5 @@ main (int argc, char **argv)
> +   ADD_REPOSITORY_TEST ("/callable-info/static-method", test_callable_info_static_method, &typelib_load_spec_gio);
> +   ADD_REPOSITORY_TEST ("/callable-info/static-vfunc", test_callable_info_static_vfunc, &typelib_load_spec_gio);
> + 
> +-#ifdef G_OS_UNIX
> +-  ADD_REPOSITORY_TEST ("/callable-info/platform/unix/is-method", test_callable_info_platform_unix_is_method, &typelib_load_spec_gio);
> +-#endif
> +-
> +   return g_test_run ();
> + }
> +diff --git a/girepository/tests/repository.c b/girepository/tests/repository.c
> +index ca33d9541..cbc21ed30 100644
> +--- a/girepository/tests/repository.c
> ++++ b/girepository/tests/repository.c
> +@@ -926,7 +926,7 @@ main (int   argc,
> +   ADD_REPOSITORY_TEST ("/repository/constructor-return-type", test_repository_constructor_return_type, &typelib_load_spec_gobject);
> +   ADD_REPOSITORY_TEST ("/repository/enum-info-c-identifier", test_repository_enum_info_c_identifier, &typelib_load_spec_glib);
> +   ADD_REPOSITORY_TEST ("/repository/enum-info-static-methods", test_repository_enum_info_static_methods, &typelib_load_spec_glib);
> +-  ADD_REPOSITORY_TEST ("/repository/error-quark", test_repository_error_quark, &typelib_load_spec_gio);
> ++  ADD_REPOSITORY_TEST ("/repository/error-quark", test_repository_error_quark, &typelib_load_spec_gio_platform);
> +   ADD_REPOSITORY_TEST ("/repository/flags-info-c-identifier", test_repository_flags_info_c_identifier, &typelib_load_spec_gobject);
> +   ADD_REPOSITORY_TEST ("/repository/fundamental-ref-func", test_repository_fundamental_ref_func, &typelib_load_spec_gobject);
> +   ADD_REPOSITORY_TEST ("/repository/instance-method-ownership-transfer", test_repository_instance_method_ownership_transfer, &typelib_load_spec_gio);
> +@@ -936,8 +936,8 @@ main (int   argc,
> +   ADD_REPOSITORY_TEST ("/repository/vfunc-info-with-no-invoker", test_repository_vfunc_info_with_no_invoker, &typelib_load_spec_gobject);
> +   ADD_REPOSITORY_TEST ("/repository/vfunc-info-with-invoker-on-interface", test_repository_vfunc_info_with_invoker_on_interface, &typelib_load_spec_gio);
> +   ADD_REPOSITORY_TEST ("/repository/vfunc-info-with-invoker-on-object", test_repository_vfunc_info_with_invoker_on_object, &typelib_load_spec_gio);
> +-  ADD_REPOSITORY_TEST ("/repository/find-by-gtype", test_repository_find_by_gtype, &typelib_load_spec_gio);
> +-  ADD_REPOSITORY_TEST ("/repository/loaded-namespaces", test_repository_loaded_namespaces, &typelib_load_spec_gio);
> ++  ADD_REPOSITORY_TEST ("/repository/find-by-gtype", test_repository_find_by_gtype, &typelib_load_spec_gio_platform);
> ++  ADD_REPOSITORY_TEST ("/repository/loaded-namespaces", test_repository_loaded_namespaces, &typelib_load_spec_gio_platform);
> +   g_test_add_func ("/repository/dup_default", test_repository_dup_default);
> + 
> +   return g_test_run ();
> +diff --git a/girepository/tests/test-common.h b/girepository/tests/test-common.h
> +index 9d31998d1..e7340c64b 100644
> +--- a/girepository/tests/test-common.h
> ++++ b/girepository/tests/test-common.h
> +@@ -36,6 +36,11 @@ typedef struct
> + static const TypelibLoadSpec typelib_load_spec_glib = { "GLib", "2.0" };
> + static const TypelibLoadSpec typelib_load_spec_gobject = { "GObject", "2.0" };
> + static const TypelibLoadSpec typelib_load_spec_gio = { "Gio", "2.0" };
> ++#if defined(G_OS_UNIX)
> ++static const TypelibLoadSpec typelib_load_spec_gio_platform = { "GioUnix", "2.0" };
> ++#elif defined(G_OS_WIN32)
> ++static const TypelibLoadSpec typelib_load_spec_gio_platform = { "GioWin32", "2.0" };
> ++#endif
> + 
> + void repository_init (int *argc,
> +                       char **argv[]);
> +-- 
> +2.50.1
> +
> diff --git a/meta/recipes-core/glib-2.0/glib.inc b/meta/recipes-core/glib-2.0/glib.inc
> index f9cb3417ec..9344230525 100644
> --- a/meta/recipes-core/glib-2.0/glib.inc
> +++ b/meta/recipes-core/glib-2.0/glib.inc
> @@ -231,6 +231,7 @@ SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
>             file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \
>             file://0010-Do-not-hardcode-python-path-into-various-tools.patch \
>             file://skip-timeout.patch \
> +           file://0001-Revert-Merge-branch-gir-gio-unix-split-into-main.patch \
>             "
>  SRC_URI:append:class-native = " file://relocate-modules.patch \
>                                  file://0001-meson.build-do-not-enable-pidfd-features-on-native-g.patch \
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#119374): https://lists.openembedded.org/g/openembedded-devel/message/119374
> Mute This Topic: https://lists.openembedded.org/mt/115202145/6084445
> Group Owner: openembedded-devel+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [skandigraun@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Markus Volk Sept. 12, 2025, 2:03 p.m. UTC | #2
On Fri, Sep 12 2025 at 10:20:14 +02:00:00, Gyorgy Sarvari 
<skandigraun@gmail.com> wrote:
> I think you meant this for the oe-core ML

Made that mistake yesterday and replicated today from clipboard ;)
Thanks
diff mbox series

Patch

diff --git a/meta/recipes-core/glib-2.0/files/0001-Revert-Merge-branch-gir-gio-unix-split-into-main.patch b/meta/recipes-core/glib-2.0/files/0001-Revert-Merge-branch-gir-gio-unix-split-into-main.patch
new file mode 100644
index 0000000000..80680651a2
--- /dev/null
+++ b/meta/recipes-core/glib-2.0/files/0001-Revert-Merge-branch-gir-gio-unix-split-into-main.patch
@@ -0,0 +1,816 @@ 
+From fa119f74ebce3d44546c73584541be9ec1c6c2d0 Mon Sep 17 00:00:00 2001
+From: Markus Volk <f_l_k@t-online.de>
+Date: Thu, 11 Sep 2025 19:59:44 +0200
+Subject: [PATCH] Revert "Merge branch 'gir-gio-unix-split' into 'main'"
+
+This reverts commit cb074a65c79a3b4ae4f3ae0e36775af46bcc8009, reversing
+changes made to 0a017b39c2b085ddfede105584193b453a66909a.
+
+Upstream-Status: Inappropriate
+---
+ gio/gdesktopappinfo.c                  |  95 +++++++++++------------
+ gio/gunixmounts.c                      |  45 ++++++-----
+ girepository/girepository.c            | 101 ++++---------------------
+ girepository/introspection/meson.build |  21 +++++
+ girepository/tests/callable-info.c     |  30 --------
+ girepository/tests/repository.c        |   6 +-
+ girepository/tests/test-common.h       |   5 ++
+ 7 files changed, 112 insertions(+), 191 deletions(-)
+
+diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
+index 1e5a752ac..0c3038c17 100644
+--- a/gio/gdesktopappinfo.c
++++ b/gio/gdesktopappinfo.c
+@@ -1795,7 +1795,7 @@ g_desktop_app_info_class_init (GDesktopAppInfoClass *klass)
+   /**
+    * GDesktopAppInfo:filename:
+    *
+-   * The origin filename of this [class@GioUnix.DesktopAppInfo]
++   * The origin filename of this [class@Gio.DesktopAppInfo]
+    */
+   g_object_class_install_property (gobject_class,
+                                    PROP_FILENAME,
+@@ -2084,9 +2084,9 @@ g_desktop_app_info_load_file (GDesktopAppInfo *self)
+  * g_desktop_app_info_new_from_keyfile:
+  * @key_file: an opened [type@GLib.KeyFile]
+  *
+- * Creates a new [class@GioUnix.DesktopAppInfo].
++ * Creates a new [class@Gio.DesktopAppInfo].
+  *
+- * Returns: (nullable): a new [class@GioUnix.DesktopAppInfo] or `NULL` on error.
++ * Returns: (nullable): a new [class@Gio.DesktopAppInfo] or `NULL` on error.
+  *
+  * Since: 2.18
+  **/
+@@ -2113,9 +2113,9 @@ g_desktop_app_info_new_from_keyfile (GKeyFile *key_file)
+  * @filename: (type filename): the path of a desktop file, in the GLib
+  *      filename encoding
+  *
+- * Creates a new [class@GioUnix.DesktopAppInfo].
++ * Creates a new [class@Gio.DesktopAppInfo].
+  *
+- * Returns: (nullable): a new [class@GioUnix.DesktopAppInfo] or `NULL` on error.
++ * Returns: (nullable): a new [class@Gio.DesktopAppInfo] or `NULL` on error.
+  **/
+ GDesktopAppInfo *
+ g_desktop_app_info_new_from_filename (const char *filename)
+@@ -2135,7 +2135,7 @@ g_desktop_app_info_new_from_filename (const char *filename)
+  * g_desktop_app_info_new:
+  * @desktop_id: the desktop file ID
+  *
+- * Creates a new [class@GioUnix.DesktopAppInfo] based on a desktop file ID.
++ * Creates a new [class@Gio.DesktopAppInfo] based on a desktop file ID.
+  *
+  * A desktop file ID is the basename of the desktop file, including the
+  * `.desktop` extension. GIO is looking for a desktop file with this name
+@@ -2147,7 +2147,7 @@ g_desktop_app_info_new_from_filename (const char *filename)
+  * (i.e. a desktop ID of `kde-foo.desktop` will match
+  * `/usr/share/applications/kde/foo.desktop`).
+  *
+- * Returns: (nullable): a new [class@GioUnix.DesktopAppInfo], or `NULL` if no
++ * Returns: (nullable): a new [class@Gio.DesktopAppInfo], or `NULL` if no
+  *    desktop file with that ID exists.
+  */
+ GDesktopAppInfo *
+@@ -2266,7 +2266,7 @@ g_desktop_app_info_get_display_name (GAppInfo *appinfo)
+ 
+ /**
+  * g_desktop_app_info_get_is_hidden:
+- * @info: a [class@GioUnix.DesktopAppInfo].
++ * @info: a [class@Gio.DesktopAppInfo].
+  *
+  * A desktop file is hidden if the
+  * [`Hidden` key](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-hidden)
+@@ -2282,13 +2282,11 @@ g_desktop_app_info_get_is_hidden (GDesktopAppInfo *info)
+ 
+ /**
+  * g_desktop_app_info_get_filename:
+- * @info: a [class@GioUnix.DesktopAppInfo]
++ * @info: a [class@Gio.DesktopAppInfo]
+  *
+- * When @info was created from a known filename, return it.
+- *
+- * In some situations such as a [class@GioUnix.DesktopAppInfo] returned
+- * from [ctor@GioUnix.DesktopAppInfo.new_from_keyfile], this function
+- * will return `NULL`.
++ * When @info was created from a known filename, return it.  In some
++ * situations such as a [class@Gio.DesktopAppInfo] returned from
++ * [ctor@Gio.DesktopAppInfo.new_from_keyfile], this function will return `NULL`.
+  *
+  * Returns: (nullable) (type filename): The full path to the file for @info,
+  *   or `NULL` if not known.
+@@ -2334,7 +2332,7 @@ g_desktop_app_info_get_icon (GAppInfo *appinfo)
+ 
+ /**
+  * g_desktop_app_info_get_categories:
+- * @info: a [class@GioUnix.DesktopAppInfo]
++ * @info: a [class@Gio.DesktopAppInfo]
+  *
+  * Gets the categories from the desktop file.
+  *
+@@ -2351,7 +2349,7 @@ g_desktop_app_info_get_categories (GDesktopAppInfo *info)
+ 
+ /**
+  * g_desktop_app_info_get_keywords:
+- * @info: a [class@GioUnix.DesktopAppInfo]
++ * @info: a [class@Gio.DesktopAppInfo]
+  *
+  * Gets the keywords from the desktop file.
+  *
+@@ -2368,7 +2366,7 @@ g_desktop_app_info_get_keywords (GDesktopAppInfo *info)
+ 
+ /**
+  * g_desktop_app_info_get_generic_name:
+- * @info: a [class@GioUnix.DesktopAppInfo]
++ * @info: a [class@Gio.DesktopAppInfo]
+  *
+  * Gets the generic name from the desktop file.
+  *
+@@ -2383,7 +2381,7 @@ g_desktop_app_info_get_generic_name (GDesktopAppInfo *info)
+ 
+ /**
+  * g_desktop_app_info_get_nodisplay:
+- * @info: a [class@GioUnix.DesktopAppInfo]
++ * @info: a [class@Gio.DesktopAppInfo]
+  *
+  * Gets the value of the
+  * [`NoDisplay` key](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-nodisplay)
+@@ -2402,7 +2400,7 @@ g_desktop_app_info_get_nodisplay (GDesktopAppInfo *info)
+ 
+ /**
+  * g_desktop_app_info_get_show_in:
+- * @info: a [class@GioUnix.DesktopAppInfo]
++ * @info: a [class@Gio.DesktopAppInfo]
+  * @desktop_env: (nullable): a string specifying a desktop name
+  *
+  * Checks if the application info should be shown in menus that list available
+@@ -3571,7 +3569,7 @@ g_desktop_app_info_launch (GAppInfo           *appinfo,
+ 
+ /**
+  * g_desktop_app_info_launch_uris_as_manager_with_fds:
+- * @appinfo: a [class@GioUnix.DesktopAppInfo]
++ * @appinfo: a [class@Gio.DesktopAppInfo]
+  * @uris: (element-type utf8): List of URIs
+  * @launch_context: (nullable): a [class@Gio.AppLaunchContext]
+  * @spawn_flags: [flags@GLib.SpawnFlags], used for each process
+@@ -3585,9 +3583,9 @@ g_desktop_app_info_launch (GAppInfo           *appinfo,
+  * @stderr_fd: file descriptor to use for child’s stderr, or `-1`
+  * @error: return location for a #GError, or `NULL`
+  *
+- * Equivalent to [method@GioUnix.DesktopAppInfo.launch_uris_as_manager] but
+- * allows you to pass in file descriptors for the stdin, stdout and stderr
+- * streams of the launched process.
++ * Equivalent to [method@Gio.DesktopAppInfo.launch_uris_as_manager] but allows
++ * you to pass in file descriptors for the stdin, stdout and stderr streams
++ * of the launched process.
+  *
+  * If application launching occurs via some non-spawn mechanism (e.g. D-Bus
+  * activation) then @stdin_fd, @stdout_fd and @stderr_fd are ignored.
+@@ -3626,7 +3624,7 @@ g_desktop_app_info_launch_uris_as_manager_with_fds (GDesktopAppInfo            *
+ 
+ /**
+  * g_desktop_app_info_launch_uris_as_manager:
+- * @appinfo: a [class@GioUnix.DesktopAppInfo]
++ * @appinfo: a [class@Gio.DesktopAppInfo]
+  * @uris: (element-type utf8): List of URIs
+  * @launch_context: (nullable): a [class@Gio.AppLaunchContext]
+  * @spawn_flags: [flags@GLib.SpawnFlags], used for each process
+@@ -3688,7 +3686,7 @@ g_desktop_app_info_launch_uris_as_manager (GDesktopAppInfo            *appinfo,
+  * Sets the name of the desktop that the application is running in.
+  *
+  * This is used by [method@Gio.AppInfo.should_show] and
+- * [method@GioUnix.DesktopAppInfo.get_show_in] to evaluate the
++ * [method@Gio.DesktopAppInfo.get_show_in] to evaluate the
+  * [`OnlyShowIn`](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-onlyshowin)
+  * and [`NotShowIn`](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s06.html#key-notshowin)
+  * keys.
+@@ -4701,7 +4699,7 @@ g_app_info_get_default_for_uri_scheme_impl (const char *uri_scheme)
+  * the `Implements` line of the desktop file of the application.
+  *
+  * Returns: (element-type GDesktopAppInfo) (transfer full): a list of
+- *   [class@GioUnix.DesktopAppInfo] objects.
++ *   [class@Gio.DesktopAppInfo] objects.
+  *
+  * Since: 2.42
+  **/
+@@ -4754,12 +4752,11 @@ g_desktop_app_info_get_implementations (const gchar *interface)
+  * any time.
+  *
+  * None of the search results are subjected to the normal validation
+- * checks performed by [ctor@GioUnix.DesktopAppInfo.new] (for example,
+- * checking that the executable referenced by a result exists), and so it is
+- * possible for [ctor@GioUnix.DesktopAppInfo.new] to return `NULL` when passed
+- * an app ID returned by this function. It is expected that calling code will
+- * do this when subsequently creating a [class@GioUnix.DesktopAppInfo] for
+- * each result.
++ * checks performed by [ctor@Gio.DesktopAppInfo.new] (for example, checking that
++ * the executable referenced by a result exists), and so it is possible for
++ * [ctor@Gio.DesktopAppInfo.new] to return `NULL` when passed an app ID returned
++ * by this function. It is expected that calling code will do this when
++ * subsequently creating a [class@Gio.DesktopAppInfo] for each result.
+  *
+  * Returns: (array zero-terminated=1) (element-type GStrv) (transfer full): a
+  *   list of strvs.  Free each item with [func@GLib.strfreev] and free the outer
+@@ -4885,7 +4882,7 @@ g_app_info_get_all_impl (void)
+  * #GDesktopAppInfoLookup is an opaque data structure and can only be accessed
+  * using the following functions.
+  *
+- * Deprecated: 2.28: The [iface@GioUnix.DesktopAppInfoLookup] interface is
++ * Deprecated: 2.28: The [iface@Gio.DesktopAppInfoLookup] interface is
+  *   deprecated and unused by GIO.
+  **/
+ 
+@@ -4903,14 +4900,14 @@ g_desktop_app_info_lookup_default_init (GDesktopAppInfoLookupInterface *iface)
+ 
+ /**
+  * g_desktop_app_info_lookup_get_default_for_uri_scheme:
+- * @lookup: a [iface@GioUnix.DesktopAppInfoLookup]
++ * @lookup: a [iface@Gio.DesktopAppInfoLookup]
+  * @uri_scheme: a string containing a URI scheme.
+  *
+  * Gets the default application for launching applications
+- * using this URI scheme for a particular [iface@GioUnix.DesktopAppInfoLookup]
++ * using this URI scheme for a particular [iface@Gio.DesktopAppInfoLookup]
+  * implementation.
+  *
+- * The [iface@GioUnix.DesktopAppInfoLookup] interface and this function is used
++ * The [iface@Gio.DesktopAppInfoLookup] interface and this function is used
+  * to implement [func@Gio.AppInfo.get_default_for_uri_scheme] backends
+  * in a GIO module. There is no reason for applications to use it
+  * directly. Applications should use
+@@ -4919,7 +4916,7 @@ g_desktop_app_info_lookup_default_init (GDesktopAppInfoLookupInterface *iface)
+  * Returns: (transfer full) (nullable): [iface@Gio.AppInfo] for given
+  *   @uri_scheme or `NULL` on error.
+  *
+- * Deprecated: 2.28: The [iface@GioUnix.DesktopAppInfoLookup] interface is
++ * Deprecated: 2.28: The [iface@Gio.DesktopAppInfoLookup] interface is
+  *   deprecated and unused by GIO.
+  */
+ GAppInfo *
+@@ -4941,7 +4938,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
+ 
+ /**
+  * g_desktop_app_info_get_startup_wm_class:
+- * @info: a [class@GioUnix.DesktopAppInfo] that supports startup notify
++ * @info: a [class@Gio.DesktopAppInfo] that supports startup notify
+  *
+  * Retrieves the `StartupWMClass` field from @info. This represents the
+  * `WM_CLASS` property of the main window of the application, if launched
+@@ -4962,7 +4959,7 @@ g_desktop_app_info_get_startup_wm_class (GDesktopAppInfo *info)
+ 
+ /**
+  * g_desktop_app_info_get_string:
+- * @info: a [class@GioUnix.DesktopAppInfo]
++ * @info: a [class@Gio.DesktopAppInfo]
+  * @key: the key to look up
+  *
+  * Looks up a string value in the keyfile backing @info.
+@@ -4986,7 +4983,7 @@ g_desktop_app_info_get_string (GDesktopAppInfo *info,
+ 
+ /**
+  * g_desktop_app_info_get_locale_string:
+- * @info: a [class@GioUnix.DesktopAppInfo]
++ * @info: a [class@Gio.DesktopAppInfo]
+  * @key: the key to look up
+  *
+  * Looks up a localized string value in the keyfile backing @info
+@@ -5013,7 +5010,7 @@ g_desktop_app_info_get_locale_string (GDesktopAppInfo *info,
+ 
+ /**
+  * g_desktop_app_info_get_boolean:
+- * @info: a [class@GioUnix.DesktopAppInfo]
++ * @info: a [class@Gio.DesktopAppInfo]
+  * @key: the key to look up
+  *
+  * Looks up a boolean value in the keyfile backing @info.
+@@ -5036,7 +5033,7 @@ g_desktop_app_info_get_boolean (GDesktopAppInfo *info,
+ 
+ /**
+  * g_desktop_app_info_get_string_list:
+- * @info: a [class@GioUnix.DesktopAppInfo]
++ * @info: a [class@Gio.DesktopAppInfo]
+  * @key: the key to look up
+  * @length: (out) (optional): return location for the number of returned
+  *   strings, or `NULL`
+@@ -5064,7 +5061,7 @@ g_desktop_app_info_get_string_list (GDesktopAppInfo *info,
+ 
+ /**
+  * g_desktop_app_info_has_key:
+- * @info: a [class@GioUnix.DesktopAppInfo]
++ * @info: a [class@Gio.DesktopAppInfo]
+  * @key: the key to look up
+  *
+  * Returns whether @key exists in the `Desktop Entry` group
+@@ -5088,7 +5085,7 @@ g_desktop_app_info_has_key (GDesktopAppInfo *info,
+ 
+ /**
+  * g_desktop_app_info_list_actions:
+- * @info: a [class@GioUnix.DesktopAppInfo]
++ * @info: a [class@Gio.DesktopAppInfo]
+  *
+  * Returns the list of
+  * [‘additional application actions’](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s11.html)
+@@ -5125,9 +5122,9 @@ app_info_has_action (GDesktopAppInfo *info,
+ 
+ /**
+  * g_desktop_app_info_get_action_name:
+- * @info: a [class@GioUnix.DesktopAppInfo]
++ * @info: a [class@Gio.DesktopAppInfo]
+  * @action_name: the name of the action as from
+- *   [method@GioUnix.DesktopAppInfo.list_actions]
++ *   [method@Gio.DesktopAppInfo.list_actions]
+  *
+  * Gets the user-visible display name of the
+  * [‘additional application actions’](https://specifications.freedesktop.org/desktop-entry-spec/latest/ar01s11.html)
+@@ -5168,15 +5165,15 @@ g_desktop_app_info_get_action_name (GDesktopAppInfo *info,
+ 
+ /**
+  * g_desktop_app_info_launch_action:
+- * @info: a [class@GioUnix.DesktopAppInfo]
++ * @info: a [class@Gio.DesktopAppInfo]
+  * @action_name: the name of the action as from
+- *   [method@GioUnix.DesktopAppInfo.list_actions]
++ *   [method@Gio.DesktopAppInfo.list_actions]
+  * @launch_context: (nullable): a [class@Gio.AppLaunchContext]
+  *
+  * Activates the named application action.
+  *
+  * You may only call this function on action names that were
+- * returned from [method@GioUnix.DesktopAppInfo.list_actions].
++ * returned from [method@Gio.DesktopAppInfo.list_actions].
+  *
+  * Note that if the main entry of the desktop file indicates that the
+  * application supports startup notification, and @launch_context is
+diff --git a/gio/gunixmounts.c b/gio/gunixmounts.c
+index 54edc57ed..009d6855f 100644
+--- a/gio/gunixmounts.c
++++ b/gio/gunixmounts.c
+@@ -1867,7 +1867,7 @@ g_unix_mount_entries_get (guint64 *time_read)
+  * @n_entries_out: (optional) (out caller-allocates): return location for the
+  *   number of mount entries returned
+  *
+- * Gets an array of [struct@GioUnix.MountEntry]s containing the Unix mounts
++ * Gets an array of [struct@Gio.UnixMountEntry]s containing the Unix mounts
+  * listed in @table_path.
+  *
+  * This is a generalized version of [func@GioUnix.mount_entries_get], mainly
+@@ -1899,7 +1899,7 @@ g_unix_mounts_get_from_file (const char *table_path,
+  * @n_entries_out: (optional) (out caller-allocates): return location for the
+  *   number of mount entries returned
+  *
+- * Gets an array of [struct@GioUnix.MountEntry]s containing the Unix mounts
++ * Gets an array of [struct@Gio.UnixMountEntry]s containing the Unix mounts
+  * listed in @table_path.
+  *
+  * This is a generalized version of [func@GioUnix.mount_entries_get], mainly
+@@ -2126,7 +2126,7 @@ g_unix_mount_points_get (guint64 *time_read)
+  * @n_points_out: (optional) (out caller-allocates): return location for the
+  *   number of mount points returned
+  *
+- * Gets an array of [struct@GioUnix.MountPoint]s containing the Unix mount
++ * Gets an array of [struct@Gio.UnixMountPoint]s containing the Unix mount
+  * points listed in @table_path.
+  *
+  * This is a generalized version of [func@GioUnix.mount_points_get], mainly
+@@ -2722,7 +2722,7 @@ g_unix_mount_monitor_new (void)
+  * 
+  * Frees a Unix mount.
+  *
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.free] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.free] instead.
+  */
+ void
+ g_unix_mount_free (GUnixMountEntry *mount_entry)
+@@ -2759,7 +2759,7 @@ g_unix_mount_entry_free (GUnixMountEntry *mount_entry)
+  *
+  * Returns: (transfer full): a new [struct@GioUnix.MountEntry]
+  * Since: 2.54
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.copy] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.copy] instead.
+  */
+ GUnixMountEntry *
+ g_unix_mount_copy (GUnixMountEntry *mount_entry)
+@@ -2850,7 +2850,7 @@ g_unix_mount_point_copy (GUnixMountPoint *mount_point)
+  * 
+  * Returns: `1`, `0` or `-1` if @mount1 is greater than, equal to,
+  *    or less than @mount2, respectively
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.compare] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.compare] instead.
+  */
+ gint
+ g_unix_mount_compare (GUnixMountEntry *mount1,
+@@ -2912,7 +2912,7 @@ g_unix_mount_entry_compare (GUnixMountEntry *mount1,
+  * Gets the mount path for a Unix mount.
+  * 
+  * Returns: (type filename): the mount path for @mount_entry
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.get_mount_path] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.get_mount_path] instead.
+  */
+ const gchar *
+ g_unix_mount_get_mount_path (GUnixMountEntry *mount_entry)
+@@ -2944,7 +2944,7 @@ g_unix_mount_entry_get_mount_path (GUnixMountEntry *mount_entry)
+  * Gets the device path for a Unix mount.
+  * 
+  * Returns: (type filename): a string containing the device path
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.get_device_path] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.get_device_path] instead.
+  */
+ const gchar *
+ g_unix_mount_get_device_path (GUnixMountEntry *mount_entry)
+@@ -2973,9 +2973,8 @@ g_unix_mount_entry_get_device_path (GUnixMountEntry *mount_entry)
+  * g_unix_mount_get_root_path:
+  * @mount_entry: a [struct@GioUnix.MountEntry]
+  * 
+- * Gets the root of the mount within the filesystem.
+- *
+- * This is useful e.g. for mounts created by bind operation, or btrfs subvolumes.
++ * Gets the root of the mount within the filesystem. This is useful e.g. for
++ * mounts created by bind operation, or btrfs subvolumes.
+  * 
+  * For example, the root path is equal to `/` for a mount created by
+  * `mount /dev/sda1 /mnt/foo` and `/bar` for
+@@ -2983,7 +2982,7 @@ g_unix_mount_entry_get_device_path (GUnixMountEntry *mount_entry)
+  *
+  * Returns: (nullable): a string containing the root, or `NULL` if not supported
+  * Since: 2.60
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.get_root_path] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.get_root_path] instead.
+  */
+ const gchar *
+ g_unix_mount_get_root_path (GUnixMountEntry *mount_entry)
+@@ -3020,7 +3019,7 @@ g_unix_mount_entry_get_root_path (GUnixMountEntry *mount_entry)
+  * Gets the filesystem type for the Unix mount.
+  * 
+  * Returns: a string containing the file system type
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.get_fs_type] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.get_fs_type] instead.
+  */
+ const gchar *
+ g_unix_mount_get_fs_type (GUnixMountEntry *mount_entry)
+@@ -3053,13 +3052,13 @@ g_unix_mount_entry_get_fs_type (GUnixMountEntry *mount_entry)
+  * 
+  * For example: `rw,relatime,seclabel,data=ordered`.
+  * 
+- * This is similar to [method@GioUnix.MountPoint.get_options], but it takes
++ * This is similar to [func@GioUnix.MountPoint.get_options], but it takes
+  * a [struct@GioUnix.MountEntry] as an argument.
+  *
+  * Returns: (nullable): a string containing the options, or `NULL` if not
+  *    available.
+  * Since: 2.58
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.get_options] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.get_options] instead.
+  */
+ const gchar *
+ g_unix_mount_get_options (GUnixMountEntry *mount_entry)
+@@ -3075,7 +3074,7 @@ g_unix_mount_get_options (GUnixMountEntry *mount_entry)
+  *
+  * For example: `rw,relatime,seclabel,data=ordered`.
+  *
+- * This is similar to [method@GioUnix.MountPoint.get_options], but it takes
++ * This is similar to [func@GioUnix.MountPoint.get_options], but it takes
+  * a [struct@GioUnix.MountEntry] as an argument.
+  *
+  * Returns: (nullable): a string containing the options, or `NULL` if not
+@@ -3097,7 +3096,7 @@ g_unix_mount_entry_get_options (GUnixMountEntry *mount_entry)
+  * Checks if a Unix mount is mounted read only.
+  * 
+  * Returns: true if @mount_entry is read only; false otherwise
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.is_readonly] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.is_readonly] instead.
+  */
+ gboolean
+ g_unix_mount_is_readonly (GUnixMountEntry *mount_entry)
+@@ -3136,7 +3135,7 @@ g_unix_mount_entry_is_readonly (GUnixMountEntry *mount_entry)
+  * file system types and device paths are ignored.
+  *
+  * Returns: true if the Unix mount is for a system path; false otherwise
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.is_system_internal] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.is_system_internal] instead.
+  */
+ gboolean
+ g_unix_mount_is_system_internal (GUnixMountEntry *mount_entry)
+@@ -3528,7 +3527,7 @@ type_to_icon (GUnixMountType type, gboolean is_mount_point, gboolean use_symboli
+  * The result is a translated string.
+  *
+  * Returns: (transfer full): a newly allocated translated string
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.guess_name] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.guess_name] instead.
+  */
+ gchar *
+ g_unix_mount_guess_name (GUnixMountEntry *mount_entry)
+@@ -3567,7 +3566,7 @@ g_unix_mount_entry_guess_name (GUnixMountEntry *mount_entry)
+  * Guesses the icon of a Unix mount entry.
+  *
+  * Returns: (transfer full): a [iface@Gio.Icon]
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.guess_icon] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.guess_icon] instead.
+  */
+ GIcon *
+ g_unix_mount_guess_icon (GUnixMountEntry *mount_entry)
+@@ -3598,7 +3597,7 @@ g_unix_mount_entry_guess_icon (GUnixMountEntry *mount_entry)
+  *
+  * Returns: (transfer full): a [iface@Gio.Icon]
+  * Since: 2.34
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.guess_symbolic_icon] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.guess_symbolic_icon] instead.
+  */
+ GIcon *
+ g_unix_mount_guess_symbolic_icon (GUnixMountEntry *mount_entry)
+@@ -3680,7 +3679,7 @@ g_unix_mount_point_guess_symbolic_icon (GUnixMountPoint *mount_point)
+  * Guesses whether a Unix mount entry can be ejected.
+  *
+  * Returns: true if @mount_entry is deemed to be ejectable; false otherwise
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.guess_can_eject] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.guess_can_eject] instead.
+  */
+ gboolean
+ g_unix_mount_guess_can_eject (GUnixMountEntry *mount_entry)
+@@ -3717,7 +3716,7 @@ g_unix_mount_entry_guess_can_eject (GUnixMountEntry *mount_entry)
+  * Guesses whether a Unix mount entry should be displayed in the UI.
+  *
+  * Returns: true if @mount_entry is deemed to be displayable; false otherwise
+- * Deprecated: 2.84: Use [method@GioUnix.MountEntry.guess_should_display] instead.
++ * Deprecated: 2.84: Use [func@GioUnix.MountEntry.guess_should_display] instead.
+  */
+ gboolean
+ g_unix_mount_guess_should_display (GUnixMountEntry *mount_entry)
+diff --git a/girepository/girepository.c b/girepository/girepository.c
+index 1c816d1de..ebcd3d236 100644
+--- a/girepository/girepository.c
++++ b/girepository/girepository.c
+@@ -135,15 +135,6 @@ struct _GIRepository
+ 
+ G_DEFINE_TYPE (GIRepository, gi_repository, G_TYPE_OBJECT);
+ 
+-static GITypelib *
+-require_internal (GIRepository           *repository,
+-                  const char             *namespace,
+-                  const char             *version,
+-                  GIRepositoryLoadFlags   flags,
+-                  const char * const     *search_paths,
+-                  size_t                  n_search_paths,
+-                  GError                **error);
+-
+ #ifdef G_PLATFORM_WIN32
+ #include <windows.h>
+ 
+@@ -605,10 +596,6 @@ load_dependencies_recurse (GIRepository *repository,
+     {
+       int i;
+ 
+-      const char * const *search_path =
+-        (const char * const *) repository->typelib_search_path->pdata;
+-      gsize search_path_len = repository->typelib_search_path->len;
+-
+       for (i = 0; dependencies[i]; i++)
+         {
+           char *dependency = dependencies[i];
+@@ -621,9 +608,8 @@ load_dependencies_recurse (GIRepository *repository,
+           dependency_namespace = g_strndup (dependency, (size_t) (last_dash - dependency));
+           dependency_version = last_dash+1;
+ 
+-          if (!require_internal (repository, dependency_namespace, dependency_version,
+-                                 0, search_path, search_path_len,
+-                                 error))
++          if (!gi_repository_require (repository, dependency_namespace, dependency_version,
++                                      0, error))
+             {
+               g_free (dependency_namespace);
+               g_strfreev (dependencies);
+@@ -663,7 +649,7 @@ static const char *
+ register_internal (GIRepository *repository,
+                    const char   *source,
+                    gboolean      lazy,
+-                   GITypelib    *typelib,
++                   GITypelib     *typelib,
+                    GError      **error)
+ {
+   Header *header;
+@@ -2026,54 +2012,6 @@ require_internal (GIRepository           *repository,
+   return ret;
+ }
+ 
+-static GITypelib *
+-require_internal_with_platform_data (GIRepository           *repository,
+-                                     const char             *namespace,
+-                                     const char             *version,
+-                                     GIRepositoryLoadFlags   flags,
+-                                     const char * const     *search_paths,
+-                                     size_t                  search_paths_len,
+-                                     GError                **error)
+-{
+-  GITypelib *typelib;
+-
+-  typelib = require_internal (repository, namespace, version, flags,
+-                              search_paths, search_paths_len,
+-                              error);
+-  if (!typelib)
+-    return NULL;
+-
+-#if defined (G_OS_UNIX) || defined (G_OS_WIN32)
+-  /* Backward compatibility hack: if we're loading Gio-2.0, we automatically
+-   * load the platform specific introspection data that used to exist inside
+-   * Gio-2.0
+-   */
+-  if (g_str_equal (namespace, "Gio") &&
+-      (!version || g_str_equal (version, "2.0")))
+-    {
+-      GError *local_error = NULL;
+-      const char *platform_namespace;
+-
+-#  if defined (G_OS_UNIX)
+-      platform_namespace = "GioUnix";
+-#  elif defined (G_OS_WIN32)
+-      platform_namespace = "GioWin32";
+-#  endif /* defined (G_OS_LINUX) */
+-
+-      if (!require_internal (repository, platform_namespace, version, flags,
+-                             search_paths, search_paths_len,
+-                             &local_error))
+-        {
+-          g_critical ("Unable to load platform-specific GIO introspection data: %s",
+-                      local_error->message);
+-          g_error_free (local_error);
+-        }
+-    }
+-#endif /* defined(G_OS_UNIX) || defined(G_OS_WIN32) */
+-
+-  return typelib;
+-}
+-
+ /**
+  * gi_repository_require:
+  * @repository: A #GIRepository
+@@ -2094,24 +2032,19 @@ require_internal_with_platform_data (GIRepository           *repository,
+  * Since: 2.80
+  */
+ GITypelib *
+-gi_repository_require (GIRepository           *repository,
+-                       const char             *namespace,
+-                       const char             *version,
+-                       GIRepositoryLoadFlags   flags,
+-                       GError                **error)
++gi_repository_require (GIRepository  *repository,
++                       const char    *namespace,
++                       const char    *version,
++                       GIRepositoryLoadFlags flags,
++                       GError       **error)
+ {
+-  const char * const *search_paths;
+-  size_t search_paths_len;
+-
+-  g_return_val_if_fail (GI_IS_REPOSITORY (repository), NULL);
+-  g_return_val_if_fail (namespace != NULL, NULL);
++  GITypelib *typelib;
+ 
+-  search_paths = (const char * const *) repository->typelib_search_path->pdata;
+-  search_paths_len = repository->typelib_search_path->len;
++  typelib = require_internal (repository, namespace, version, flags,
++                              (const char * const *) repository->typelib_search_path->pdata,
++                              repository->typelib_search_path->len, error);
+ 
+-  return require_internal_with_platform_data (repository, namespace, version, flags,
+-                                              search_paths, search_paths_len,
+-                                              error);
++  return typelib;
+ }
+ 
+ /**
+@@ -2145,12 +2078,8 @@ gi_repository_require_private (GIRepository           *repository,
+ {
+   const char * const search_path[] = { typelib_dir, NULL };
+ 
+-  g_return_val_if_fail (GI_IS_REPOSITORY (repository), NULL);
+-  g_return_val_if_fail (namespace != NULL, NULL);
+-
+-  return require_internal_with_platform_data (repository, namespace, version, flags,
+-                                              search_path, 1,
+-                                              error);
++  return require_internal (repository, namespace, version, flags,
++                           search_path, 1, error);
+ }
+ 
+ static gboolean
+diff --git a/girepository/introspection/meson.build b/girepository/introspection/meson.build
+index 2c2a36c8f..a846a764c 100644
+--- a/girepository/introspection/meson.build
++++ b/girepository/introspection/meson.build
+@@ -234,6 +234,27 @@ gio_gir_args = [
+   '--symbol-prefix=gio',
+ ]
+ 
++# For API compatibility reasons, Gio-2.0.gir needs to contain the platform
++# specific APIs which are also present in the (newer) GioUnix-2.0.gir and
++# GioWin32-2.0.gir repositories.
++# See https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3892#note_2001361
++# These can be dropped when GIO next breaks API (i.e. with Gio-3.0.gir).
++if host_system == 'windows'
++  gio_gir_sources += [ gio_win32_include_headers, win32_sources ]
++  foreach h: gio_win32_include_headers
++    gio_gir_args += '--c-include=gio/' + fs.name(h)
++  endforeach
++  gio_gir_packages += 'gio-windows-2.0'
++  gio_gir_args += '--pkg=gio-windows-2.0'
++else
++  gio_gir_sources += [ gio_unix_include_headers, unix_sources ]
++  foreach h: gio_unix_include_headers
++    gio_gir_args += '--c-include=gio/' + fs.name(h)
++  endforeach
++  gio_gir_packages += 'gio-unix-2.0'
++  gio_gir_args += '--pkg=gio-unix-2.0'
++endif
++
+ gio_gir = gnome.generate_gir(libgio,
+   sources: gio_gir_sources,
+   namespace: 'Gio',
+diff --git a/girepository/tests/callable-info.c b/girepository/tests/callable-info.c
+index 973a54703..69fd5e940 100644
+--- a/girepository/tests/callable-info.c
++++ b/girepository/tests/callable-info.c
+@@ -210,32 +210,6 @@ test_callable_info_static_vfunc (RepositoryFixture *fx,
+   gi_base_info_unref ((GIBaseInfo *) vfunc_info);
+ }
+ 
+-#ifdef G_OS_UNIX
+-static void
+-test_callable_info_platform_unix_is_method (RepositoryFixture *fx,
+-                                            const void *unused)
+-{
+-  GIBaseInfo *info;
+-  GIFunctionInfo *func_info;
+-
+-  g_test_message ("Checking DesktopAppInfo in Gio");
+-  info = gi_repository_find_by_name (fx->repository, "Gio", "DesktopAppInfo");
+-  g_assert_null (info);
+-
+-  g_test_message ("Checking DesktopAppInfo in GioUnix");
+-  info = gi_repository_find_by_name (fx->repository, "GioUnix", "DesktopAppInfo");
+-  g_assert_nonnull (info);
+-
+-  /* Must provide Gio.DesktopAppInfo methods */
+-  func_info = gi_object_info_find_method (GI_OBJECT_INFO (info), "has_key");
+-  g_assert_true (gi_callable_info_is_method (GI_CALLABLE_INFO (func_info)));
+-  g_assert_nonnull (func_info);
+-  g_clear_pointer (&func_info, gi_base_info_unref);
+-
+-  gi_base_info_unref (info);
+-}
+-#endif
+-
+ int
+ main (int argc, char **argv)
+ {
+@@ -247,9 +221,5 @@ main (int argc, char **argv)
+   ADD_REPOSITORY_TEST ("/callable-info/static-method", test_callable_info_static_method, &typelib_load_spec_gio);
+   ADD_REPOSITORY_TEST ("/callable-info/static-vfunc", test_callable_info_static_vfunc, &typelib_load_spec_gio);
+ 
+-#ifdef G_OS_UNIX
+-  ADD_REPOSITORY_TEST ("/callable-info/platform/unix/is-method", test_callable_info_platform_unix_is_method, &typelib_load_spec_gio);
+-#endif
+-
+   return g_test_run ();
+ }
+diff --git a/girepository/tests/repository.c b/girepository/tests/repository.c
+index ca33d9541..cbc21ed30 100644
+--- a/girepository/tests/repository.c
++++ b/girepository/tests/repository.c
+@@ -926,7 +926,7 @@ main (int   argc,
+   ADD_REPOSITORY_TEST ("/repository/constructor-return-type", test_repository_constructor_return_type, &typelib_load_spec_gobject);
+   ADD_REPOSITORY_TEST ("/repository/enum-info-c-identifier", test_repository_enum_info_c_identifier, &typelib_load_spec_glib);
+   ADD_REPOSITORY_TEST ("/repository/enum-info-static-methods", test_repository_enum_info_static_methods, &typelib_load_spec_glib);
+-  ADD_REPOSITORY_TEST ("/repository/error-quark", test_repository_error_quark, &typelib_load_spec_gio);
++  ADD_REPOSITORY_TEST ("/repository/error-quark", test_repository_error_quark, &typelib_load_spec_gio_platform);
+   ADD_REPOSITORY_TEST ("/repository/flags-info-c-identifier", test_repository_flags_info_c_identifier, &typelib_load_spec_gobject);
+   ADD_REPOSITORY_TEST ("/repository/fundamental-ref-func", test_repository_fundamental_ref_func, &typelib_load_spec_gobject);
+   ADD_REPOSITORY_TEST ("/repository/instance-method-ownership-transfer", test_repository_instance_method_ownership_transfer, &typelib_load_spec_gio);
+@@ -936,8 +936,8 @@ main (int   argc,
+   ADD_REPOSITORY_TEST ("/repository/vfunc-info-with-no-invoker", test_repository_vfunc_info_with_no_invoker, &typelib_load_spec_gobject);
+   ADD_REPOSITORY_TEST ("/repository/vfunc-info-with-invoker-on-interface", test_repository_vfunc_info_with_invoker_on_interface, &typelib_load_spec_gio);
+   ADD_REPOSITORY_TEST ("/repository/vfunc-info-with-invoker-on-object", test_repository_vfunc_info_with_invoker_on_object, &typelib_load_spec_gio);
+-  ADD_REPOSITORY_TEST ("/repository/find-by-gtype", test_repository_find_by_gtype, &typelib_load_spec_gio);
+-  ADD_REPOSITORY_TEST ("/repository/loaded-namespaces", test_repository_loaded_namespaces, &typelib_load_spec_gio);
++  ADD_REPOSITORY_TEST ("/repository/find-by-gtype", test_repository_find_by_gtype, &typelib_load_spec_gio_platform);
++  ADD_REPOSITORY_TEST ("/repository/loaded-namespaces", test_repository_loaded_namespaces, &typelib_load_spec_gio_platform);
+   g_test_add_func ("/repository/dup_default", test_repository_dup_default);
+ 
+   return g_test_run ();
+diff --git a/girepository/tests/test-common.h b/girepository/tests/test-common.h
+index 9d31998d1..e7340c64b 100644
+--- a/girepository/tests/test-common.h
++++ b/girepository/tests/test-common.h
+@@ -36,6 +36,11 @@ typedef struct
+ static const TypelibLoadSpec typelib_load_spec_glib = { "GLib", "2.0" };
+ static const TypelibLoadSpec typelib_load_spec_gobject = { "GObject", "2.0" };
+ static const TypelibLoadSpec typelib_load_spec_gio = { "Gio", "2.0" };
++#if defined(G_OS_UNIX)
++static const TypelibLoadSpec typelib_load_spec_gio_platform = { "GioUnix", "2.0" };
++#elif defined(G_OS_WIN32)
++static const TypelibLoadSpec typelib_load_spec_gio_platform = { "GioWin32", "2.0" };
++#endif
+ 
+ void repository_init (int *argc,
+                       char **argv[]);
+-- 
+2.50.1
+
diff --git a/meta/recipes-core/glib-2.0/glib.inc b/meta/recipes-core/glib-2.0/glib.inc
index f9cb3417ec..9344230525 100644
--- a/meta/recipes-core/glib-2.0/glib.inc
+++ b/meta/recipes-core/glib-2.0/glib.inc
@@ -231,6 +231,7 @@  SRC_URI = "${GNOME_MIRROR}/glib/${SHRT_VER}/glib-${PV}.tar.xz \
            file://0001-gio-tests-resources.c-comment-out-a-build-host-only-.patch \
            file://0010-Do-not-hardcode-python-path-into-various-tools.patch \
            file://skip-timeout.patch \
+           file://0001-Revert-Merge-branch-gir-gio-unix-split-into-main.patch \
            "
 SRC_URI:append:class-native = " file://relocate-modules.patch \
                                 file://0001-meson.build-do-not-enable-pidfd-features-on-native-g.patch \