Subject: [bug#38994] [PATCH core-updates] gnu: glib: Fix g_app_info_get_default_for_type.

From: Marius Bakke <[email-masked]>
Date: Mon, 13 Jan 2020 22:50:24 +0100

Danny Milosavljevic <[email-masked]> writes:

> Fixes <https://bugs.gnu.org/38524>.
> Reported by Reza Alizadeh Majd <[email-masked]>.
>
> * gnu/packages/glib.scm (glib)[arguments]<#:phases>[patch-gio-launch-desktop]:
> New phase.
> [move-executables]: Modify.
> ---
>  gnu/packages/glib.scm | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
>
> diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
> index 369bd373ac..9551509a53 100644
> --- a/gnu/packages/glib.scm
> +++ b/gnu/packages/glib.scm
> @@ -213,6 +213,15 @@ shared NFS home directories.")
>                   (string-append "command_line = g_strdup_printf (\""
>                                  dbus "/bin/dbus-launch")))
>                #t)))
> +        (add-after 'unpack 'patch-gio-launch-desktop
> +          (lambda* (#:key outputs #:allow-other-keys)
> +            (let ((out (assoc-ref outputs "out")))
> +              ;; See also <https://gitlab.gnome.org/GNOME/glib/issues/1633>
> +              ;; for another future fix.
> +              (substitute* "gio/gdesktopappinfo.c"
> +               (("gio-launch-desktop")
> +                (string-append out "/bin/gio-launch-desktop")))
> +              #t)))
>          (add-before 'build 'pre-build
>            (lambda* (#:key inputs outputs #:allow-other-keys)
>              ;; For tests/gdatetime.c.
> @@ -321,6 +330,13 @@ shared NFS home directories.")
>                (mkdir-p bin)
>                (rename-file (string-append out "/bin")
>                             (string-append bin "/bin"))
> +              ;; This one is an implementation detail of glib.
> +              ;; It is wrong that that's in "/bin" in the first place,
> +              ;; but that's what upstream does right now.
> +              ;; See <https://gitlab.gnome.org/GNOME/glib/issues/1633>.
> +              (mkdir (string-append out "/bin"))
> +              (rename-file (string-append bin "/bin/gio-launch-desktop")
> +                           (string-append out "/bin/gio-launch-desktop"))

It is moved to "out" to avoid a circular reference between "bin" and
"out", right?  IMO we might as well "beat upstream to it" here and use
$out/libexec, since nothing else is supposed to depend on it.

LGTM with that change.