diff options
Diffstat (limited to 'pkgs/development/libraries/glib/default.nix')
-rw-r--r-- | pkgs/development/libraries/glib/default.nix | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/pkgs/development/libraries/glib/default.nix b/pkgs/development/libraries/glib/default.nix index 5a7f49ce94ae1..a60ba9fae6bfd 100644 --- a/pkgs/development/libraries/glib/default.nix +++ b/pkgs/development/libraries/glib/default.nix @@ -2,6 +2,7 @@ , lib , stdenv , fetchurl +, fetchpatch , gettext , meson , ninja @@ -22,7 +23,11 @@ , makeHardcodeGsettingsPatch , testers , gobject-introspection -, withIntrospection ? stdenv.buildPlatform.canExecute stdenv.hostPlatform && lib.meta.availableOn stdenv.hostPlatform gobject-introspection +, mesonEmulatorHook +, withIntrospection ? + stdenv.hostPlatform.emulatorAvailable buildPackages && + lib.meta.availableOn stdenv.hostPlatform gobject-introspection && + stdenv.hostPlatform.isLittleEndian == stdenv.buildPlatform.isLittleEndian }: assert stdenv.isLinux -> util-linuxMinimal != null; @@ -47,20 +52,20 @@ let x11Support = false; }; - librarySuffix = if (stdenv.targetPlatform.extensions.library == ".so") then "2.0.so.0" - else if (stdenv.targetPlatform.extensions.library == ".dylib") then "2.0.0.dylib" - else if (stdenv.targetPlatform.extensions.library == ".a") then "2.0.a" - else if (stdenv.targetPlatform.extensions.library == ".dll") then "2.0-0.dll" + librarySuffix = if (stdenv.hostPlatform.extensions.library == ".so") then "2.0.so.0" + else if (stdenv.hostPlatform.extensions.library == ".dylib") then "2.0.0.dylib" + else if (stdenv.hostPlatform.extensions.library == ".a") then "2.0.a" + else if (stdenv.hostPlatform.extensions.library == ".dll") then "2.0-0.dll" else "2.0-0.lib"; in stdenv.mkDerivation (finalAttrs: { pname = "glib"; - version = "2.80.0"; + version = "2.80.2"; src = fetchurl { url = "mirror://gnome/sources/glib/${lib.versions.majorMinor finalAttrs.version}/glib-${finalAttrs.version}.tar.xz"; - hash = "sha256-giipL5KkEhYLE5rmi2NFvSjyRDSnta8VDr4h/1h6Vh0="; + hash = "sha256-uc+296W9WzEjj9XVbfImst2l6jdhFHW/ifag+UAP6L0="; }; patches = lib.optionals stdenv.isDarwin [ @@ -69,6 +74,15 @@ stdenv.mkDerivation (finalAttrs: { ./quark_init_on_demand.patch ./gobject_init_on_demand.patch ] ++ [ + # Fix double-free & segfault issues on menu and dbus connection action group export failures + # https://gitlab.gnome.org/GNOME/glib/-/merge_requests/4073 + # Remove when version > 2.80.2 + (fetchpatch { + name = "GLib-Fix-memory-problems-on-gmenuexporter-and-gactiongroupexporter-error-paths.patch"; + url = "https://gitlab.gnome.org/GNOME/glib/-/commit/b9490a499a004618c883f180b1081a166ff1a86b.patch"; + hash = "sha256-c6uZ9NEhg26/2RdgjQ4s5ErCDm5HH6T/tfJXTwh/H6o="; + }) + # This patch lets GLib's GDesktopAppInfo API watch and notice changes # to the Nix user and system profiles. That way, the list of available # applications shown by the desktop environment is immediately updated @@ -150,6 +164,8 @@ stdenv.mkDerivation (finalAttrs: { ] ++ lib.optionals withIntrospection [ gi-docgen gobject-introspection' + ] ++ lib.optionals (withIntrospection && !stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ + mesonEmulatorHook ]; propagatedBuildInputs = [ zlib libffi gettext libiconv ]; @@ -233,11 +249,12 @@ stdenv.mkDerivation (finalAttrs: { done # Cannot be in postInstall, otherwise _multioutDocs hook in preFixup will move right back. - moveToOutput "share/doc/glib-2.0" "$devdoc" + moveToOutput "share/doc" "$devdoc" ''; nativeCheckInputs = [ tzdata desktop-file-utils shared-mime-info ]; + # Conditional necessary to break infinite recursion with passthru.tests preCheck = lib.optionalString finalAttrs.finalPackage.doCheck or config.doCheckByDefault or false '' export LD_LIBRARY_PATH="$NIX_BUILD_TOP/glib-${finalAttrs.version}/glib/.libs''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH" export TZDIR="${tzdata}/share/zoneinfo" @@ -262,14 +279,6 @@ stdenv.mkDerivation (finalAttrs: { ln -s $PWD/glib/libglib-${librarySuffix} $out/lib/libglib-${librarySuffix} ''; - checkPhase = '' - runHook preCheck - - meson test --print-errorlogs - - runHook postCheck - ''; - postCheck = '' rm $out/lib/libgobject-${librarySuffix} rm $out/lib/libgio-${librarySuffix} |