diff options
author | Alyssa Ross <hi@alyssa.is> | 2023-06-16 06:56:35 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-06-16 06:56:35 +0000 |
commit | 99fcaeccb89621dd492203ce1f2d551c06f228ed (patch) | |
tree | 41cb730ae07383004789779b0f6e11cb3f4642a3 /nixpkgs/pkgs/development/libraries/gtk | |
parent | 59c5f5ac8682acc13bb22bc29c7cf02f7d75f01f (diff) | |
parent | 75a5ebf473cd60148ba9aec0d219f72e5cf52519 (diff) | |
download | nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.gz nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.bz2 nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.lz nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.xz nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.tar.zst nixlib-99fcaeccb89621dd492203ce1f2d551c06f228ed.zip |
Merge branch 'nixos-unstable' of https://github.com/NixOS/nixpkgs
Conflicts: nixpkgs/nixos/modules/config/console.nix nixpkgs/nixos/modules/services/mail/mailman.nix nixpkgs/nixos/modules/services/mail/public-inbox.nix nixpkgs/nixos/modules/services/mail/rss2email.nix nixpkgs/nixos/modules/services/networking/ssh/sshd.nix nixpkgs/pkgs/applications/networking/instant-messengers/dino/default.nix nixpkgs/pkgs/applications/networking/irc/weechat/default.nix nixpkgs/pkgs/applications/window-managers/sway/default.nix nixpkgs/pkgs/build-support/go/module.nix nixpkgs/pkgs/build-support/rust/build-rust-package/default.nix nixpkgs/pkgs/development/interpreters/python/default.nix nixpkgs/pkgs/development/node-packages/overrides.nix nixpkgs/pkgs/development/tools/b4/default.nix nixpkgs/pkgs/servers/dict/dictd-db.nix nixpkgs/pkgs/servers/mail/public-inbox/default.nix nixpkgs/pkgs/tools/security/pinentry/default.nix nixpkgs/pkgs/tools/text/unoconv/default.nix nixpkgs/pkgs/top-level/all-packages.nix
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/gtk')
5 files changed, 184 insertions, 37 deletions
diff --git a/nixpkgs/pkgs/development/libraries/gtk/2.x.nix b/nixpkgs/pkgs/development/libraries/gtk/2.x.nix index 396366324d3a..4a77afa176a6 100644 --- a/nixpkgs/pkgs/development/libraries/gtk/2.x.nix +++ b/nixpkgs/pkgs/development/libraries/gtk/2.x.nix @@ -1,14 +1,13 @@ { config, lib, substituteAll, stdenv, fetchurl, pkg-config, gettext, glib, atk, pango, cairo, perl, xorg -, gdk-pixbuf, xlibsWrapper, gobject-introspection +, gdk-pixbuf, gobject-introspection , xineramaSupport ? stdenv.isLinux , cupsSupport ? config.gtk2.cups or stdenv.isLinux, cups , gdktarget ? if stdenv.isDarwin then "quartz" else "x11" , AppKit, Cocoa , fetchpatch, buildPackages +, testers }: -with lib; - let gtkCleanImmodulesCache = substituteAll { @@ -19,12 +18,12 @@ let in -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "gtk+"; version = "2.24.33"; src = fetchurl { - url = "mirror://gnome/sources/gtk+/2.24/${pname}-${version}.tar.xz"; + url = "mirror://gnome/sources/gtk+/2.24/${finalAttrs.pname}-${finalAttrs.version}.tar.xz"; sha256 = "rCrHV/WULTGKMRpUsMgLXvKV8pnCpzxjL2v7H/Scxto="; }; @@ -39,37 +38,37 @@ stdenv.mkDerivation rec { ]; - nativeBuildInputs = setupHooks ++ [ perl pkg-config gettext gobject-introspection ]; + nativeBuildInputs = finalAttrs.setupHooks ++ [ + perl pkg-config gettext gobject-introspection + ]; patches = [ ./patches/2.0-immodules.cache.patch ./patches/gtk2-theme-paths.patch - ] ++ optionals stdenv.isDarwin [ - (fetchpatch { - url = "https://bug557780.bugzilla-attachments.gnome.org/attachment.cgi?id=306776"; - sha256 = "0sp8f1r5c4j2nlnbqgv7s7nxa4cfwigvm033hvhb1ld652pjag4r"; - }) + ] ++ lib.optionals stdenv.isDarwin [ + ./patches/2.0-gnome_bugzilla_557780_306776_freeciv_darwin.patch ./patches/2.0-darwin-x11.patch ]; propagatedBuildInputs = with xorg; [ glib cairo pango gdk-pixbuf atk ] - ++ optionals (stdenv.isLinux || stdenv.isDarwin) [ + ++ lib.optionals (stdenv.isLinux || stdenv.isDarwin) [ libXrandr libXrender libXcomposite libXi libXcursor ] - ++ optionals stdenv.isDarwin [ xlibsWrapper libXdamage ] - ++ optional xineramaSupport libXinerama - ++ optionals cupsSupport [ cups ] - ++ optionals stdenv.isDarwin [ AppKit Cocoa ]; + ++ lib.optionals stdenv.isDarwin [ libXdamage ] + ++ lib.optional xineramaSupport libXinerama + ++ lib.optionals cupsSupport [ cups ] + ++ lib.optionals stdenv.isDarwin [ AppKit Cocoa ]; preConfigure = if (lib.versionAtLeast stdenv.hostPlatform.darwinMinVersion "11" && stdenv.isDarwin) then '' MACOSX_DEPLOYMENT_TARGET=10.16 '' else null; configureFlags = [ + "--sysconfdir=/etc" "--with-gdktarget=${gdktarget}" "--with-xinput=yes" - ] ++ optionals stdenv.isDarwin [ + ] ++ lib.optionals stdenv.isDarwin [ "--disable-glibtest" "--disable-introspection" "--disable-visibility" @@ -78,6 +77,10 @@ stdenv.mkDerivation rec { "ac_cv_path_GDK_PIXBUF_CSOURCE=${buildPackages.gdk-pixbuf.dev}/bin/gdk-pixbuf-csource" ]; + installFlags = [ + "sysconfdir=${placeholder "out"}/etc" + ]; + doCheck = false; # needs X11 postInstall = '' @@ -92,13 +95,21 @@ stdenv.mkDerivation rec { $out/bin/gtk-query-immodules-2.0 $out/lib/gtk-2.0/2.10.0/immodules/*.so > $out/lib/gtk-2.0/2.10.0/immodules.cache ''; # workaround for bug of nix-mode for Emacs */ ''; inherit gdktarget; + tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; }; - meta = { + meta = with lib; { description = "A multi-platform toolkit for creating graphical user interfaces"; homepage = "https://www.gtk.org/"; license = licenses.lgpl2Plus; maintainers = with maintainers; [ lovek323 raskin ]; + pkgConfigModules = [ + "gdk-2.0" + "gtk+-2.0" + ] ++ lib.optionals (gdktarget == "x11") [ + "gdk-x11-2.0" + "gtk+-x11-2.0" + ]; platforms = platforms.all; longDescription = '' @@ -113,4 +124,4 @@ stdenv.mkDerivation rec { ''; changelog = "https://gitlab.gnome.org/GNOME/gtk/-/raw/${version}/NEWS"; }; -} +}) diff --git a/nixpkgs/pkgs/development/libraries/gtk/3.x.nix b/nixpkgs/pkgs/development/libraries/gtk/3.x.nix index c06aa9469937..33e4c4464102 100644 --- a/nixpkgs/pkgs/development/libraries/gtk/3.x.nix +++ b/nixpkgs/pkgs/development/libraries/gtk/3.x.nix @@ -8,6 +8,7 @@ , docbook_xml_dtd_43 , gtk-doc , meson +, mesonEmulatorHook , ninja , python3 , makeWrapper @@ -21,6 +22,8 @@ , atk , at-spi2-atk , gobject-introspection +, buildPackages +, withIntrospection ? stdenv.hostPlatform.emulatorAvailable buildPackages , fribidi , xorg , libepoxy @@ -39,13 +42,13 @@ , wayland-protocols , xineramaSupport ? stdenv.isLinux , cupsSupport ? stdenv.isLinux -, withGtkDoc ? stdenv.isLinux && (stdenv.buildPlatform == stdenv.hostPlatform) , cups , AppKit , Cocoa , QuartzCore , broadwaySupport ? true , wayland-scanner +, testers }: let @@ -58,11 +61,11 @@ let in -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "gtk+3"; - version = "3.24.34"; + version = "3.24.37"; - outputs = [ "out" "dev" ] ++ lib.optional withGtkDoc "devdoc"; + outputs = [ "out" "dev" ] ++ lib.optional withIntrospection "devdoc"; outputBin = "dev"; setupHooks = [ @@ -70,9 +73,11 @@ stdenv.mkDerivation rec { gtkCleanImmodulesCache ]; - src = fetchurl { + src = let + inherit (finalAttrs) version; + in fetchurl { url = "mirror://gnome/sources/gtk+/${lib.versions.majorMinor version}/gtk+-${version}.tar.xz"; - sha256 = "sha256-28afkN3IIbjRRB8AN03B2kMjour6kHjmHtvl7u+oUuw="; + sha256 = "sha256-Z0XwtMBTeUFR/Q8OJHSwd8zP9fg+ndG/PTn+n+X7f1c="; }; patches = [ @@ -91,7 +96,6 @@ stdenv.mkDerivation rec { ]; nativeBuildInputs = [ gettext - gobject-introspection makeWrapper meson ninja @@ -99,18 +103,20 @@ stdenv.mkDerivation rec { python3 sassc gdk-pixbuf - ] ++ setupHooks ++ lib.optionals withGtkDoc [ + ] ++ finalAttrs.setupHooks ++ lib.optionals withIntrospection [ + gobject-introspection docbook_xml_dtd_43 docbook-xsl-nons gtk-doc # For xmllint libxml2 + ] ++ lib.optionals (withIntrospection && !stdenv.buildPlatform.canExecute stdenv.hostPlatform) [ + mesonEmulatorHook ] ++ lib.optionals waylandSupport [ wayland-scanner ]; buildInputs = [ - gobject-introspection libxkbcommon (libepoxy.override { inherit x11Support; }) isocodes @@ -134,6 +140,8 @@ stdenv.mkDerivation rec { libSM libXcomposite libXcursor + libXdamage + libXfixes libXi libXrandr libXrender @@ -153,12 +161,13 @@ stdenv.mkDerivation rec { ]; mesonFlags = [ - "-Dgtk_doc=${lib.boolToString withGtkDoc}" + "-Dgtk_doc=${lib.boolToString withIntrospection}" "-Dtests=false" "-Dtracker3=${lib.boolToString trackerSupport}" "-Dbroadway_backend=${lib.boolToString broadwaySupport}" "-Dx11_backend=${lib.boolToString x11Support}" "-Dquartz_backend=${lib.boolToString (stdenv.isDarwin && !x11Support)}" + "-Dintrospection=${lib.boolToString withIntrospection}" ]; doCheck = false; # needs X11 @@ -167,7 +176,7 @@ stdenv.mkDerivation rec { # These are the defines that'd you'd get with --enable-debug=minimum (default). # See: https://developer.gnome.org/gtk3/stable/gtk-building.html#extra-configuration-options - NIX_CFLAGS_COMPILE = "-DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"; + env.NIX_CFLAGS_COMPILE = "-DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"; postPatch = '' # See https://github.com/NixOS/nixpkgs/issues/132259 @@ -211,7 +220,7 @@ stdenv.mkDerivation rec { for program in ''${demos[@]}; do wrapProgram $dev/bin/$program \ - --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:$out/share/gsettings-schemas/${pname}-${version}" + --prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH:$out/share/gsettings-schemas/${finalAttrs.pname}-${finalAttrs.version}" done '' + lib.optionalString stdenv.isDarwin '' # a comment created a cycle between outputs @@ -224,6 +233,7 @@ stdenv.mkDerivation rec { attrPath = "gtk3"; freeze = true; }; + tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; }; meta = with lib; { @@ -241,7 +251,14 @@ stdenv.mkDerivation rec { homepage = "https://www.gtk.org/"; license = licenses.lgpl2Plus; maintainers = with maintainers; [ raskin ] ++ teams.gnome.members; + pkgConfigModules = [ + "gdk-3.0" + "gtk+-3.0" + ] ++ lib.optionals x11Support [ + "gdk-x11-3.0" + "gtk+-x11-3.0" + ]; platforms = platforms.all; changelog = "https://gitlab.gnome.org/GNOME/gtk/-/raw/${version}/NEWS"; }; -} +}) diff --git a/nixpkgs/pkgs/development/libraries/gtk/4.x.nix b/nixpkgs/pkgs/development/libraries/gtk/4.x.nix index fc3e39b02261..be2c5d64843e 100644 --- a/nixpkgs/pkgs/development/libraries/gtk/4.x.nix +++ b/nixpkgs/pkgs/development/libraries/gtk/4.x.nix @@ -2,6 +2,7 @@ , stdenv , substituteAll , fetchurl +, fetchpatch2 , pkg-config , gettext , graphene @@ -42,11 +43,13 @@ , vulkan-headers , wayland , wayland-protocols +, wayland-scanner , xineramaSupport ? stdenv.isLinux , cupsSupport ? stdenv.isLinux , cups , AppKit , Cocoa +, libexecinfo , broadwaySupport ? true }: @@ -62,7 +65,7 @@ in stdenv.mkDerivation rec { pname = "gtk4"; - version = "4.6.6"; + version = "4.10.3"; outputs = [ "out" "dev" ] ++ lib.optionals x11Support [ "devdoc" ]; outputBin = "dev"; @@ -74,9 +77,32 @@ stdenv.mkDerivation rec { src = fetchurl { url = "mirror://gnome/sources/gtk/${lib.versions.majorMinor version}/gtk-${version}.tar.xz"; - sha256 = "e7/k0TVp98KX7UmDSscmPjGLe/EC0ycctGbVlx9ZrnA="; + sha256 = "RUVEGteeN3624KcFAm3HpGiG5GobA020CRKQnagBzqk="; }; + patches = [ + # https://github.com/NixOS/nixpkgs/pull/218143#issuecomment-1501059486 + ./patches/4.0-fix-darwin-build.patch + + # Fix deleting in Nautilus (part of 4.10.4) + # https://gitlab.gnome.org/GNOME/nautilus/-/issues/2945 + (fetchpatch2 { + url = "https://gitlab.gnome.org/GNOME/gtk/-/commit/4f47683710bbb4b56c286c6ee6a5c394fcf2b755.patch"; + sha256 = "fU9SX8MH37ZN6Ffk/YhYmipTC7+uT9JXnWggArWNkqA="; + }) + # Fix border/artifact appearing in applications (part of 4.10.4) + # https://gitlab.gnome.org/GNOME/mutter/-/issues/2805 + # https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6696 + (fetchpatch2 { + url = "https://gitlab.gnome.org/GNOME/gtk/-/commit/b686ce1cb62dba505120e0f1116c516662a06e30.patch"; + sha256 = "0zjY5s+T4CVe3WiowgWE58ruVvqBFUuY2juwBOzMRN4="; + }) + ]; + + depsBuildBuild = [ + pkg-config + ]; + nativeBuildInputs = [ gettext gobject-introspection @@ -88,6 +114,8 @@ stdenv.mkDerivation rec { sassc gi-docgen libxml2 # for xmllint + ] ++ lib.optionals waylandSupport [ + wayland-scanner ] ++ setupHooks; buildInputs = [ @@ -126,6 +154,8 @@ stdenv.mkDerivation rec { cups ] ++ lib.optionals stdenv.isDarwin [ Cocoa + ] ++ lib.optionals stdenv.hostPlatform.isMusl [ + libexecinfo ]; #TODO: colord? @@ -156,7 +186,7 @@ stdenv.mkDerivation rec { "-Dvulkan=enabled" ] ++ lib.optionals (!cupsSupport) [ "-Dprint-cups=disabled" - ] ++ lib.optionals stdenv.isDarwin [ + ] ++ lib.optionals (stdenv.isDarwin && !stdenv.isAarch64) [ "-Dmedia-gstreamer=disabled" # requires gstreamer-gl ] ++ lib.optionals (!x11Support) [ "-Dx11-backend=false" @@ -168,11 +198,14 @@ stdenv.mkDerivation rec { # These are the defines that'd you'd get with --enable-debug=minimum (default). # See: https://developer.gnome.org/gtk3/stable/gtk-building.html#extra-configuration-options - NIX_CFLAGS_COMPILE = "-DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"; + env = { + NIX_CFLAGS_COMPILE = "-DG_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS"; + } // lib.optionalAttrs stdenv.hostPlatform.isMusl { + NIX_LDFLAGS = "-lexecinfo"; + }; postPatch = '' files=( - build-aux/meson/post-install.py build-aux/meson/gen-demo-header.py demos/gtk-demo/geninclude.py gdk/broadway/gen-c-array.py @@ -183,6 +216,7 @@ stdenv.mkDerivation rec { chmod +x ''${files[@]} patchShebangs ''${files[@]} + ''; preInstall = '' diff --git a/nixpkgs/pkgs/development/libraries/gtk/patches/2.0-gnome_bugzilla_557780_306776_freeciv_darwin.patch b/nixpkgs/pkgs/development/libraries/gtk/patches/2.0-gnome_bugzilla_557780_306776_freeciv_darwin.patch new file mode 100644 index 000000000000..3b1c080abf08 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gtk/patches/2.0-gnome_bugzilla_557780_306776_freeciv_darwin.patch @@ -0,0 +1,54 @@ +From 8b822ab0060acdf4217f589411fe71574cbb09c0 Mon Sep 17 00:00:00 2001 +From: Daniel Trebbien <dtrebbien@gmail.com> +Date: Fri, 3 Jul 2015 12:08:18 -0400 +Subject: [PATCH] quartz: Bug 557780 - Missing support for depth == 1 in + gdk_image_new_for_depth() + +When the gtk2 client of Freeciv is started, an assertion failure is seen +immediately and the client stops: +"Gdk:ERROR:gdkimage-quartz.c:325:_gdk_image_new_for_depth: assertion +failed: (depth == 24 || depth == 32)" + +In this case, _gdk_image_new_for_depth() is being called from +_gdk_quartz_image_copy_to_image(). The GdkImage passed to this function +is NULL so a new GdkImage is created. However, the depth of the passed +GdkDrawable is 1 and this is passed directly as the `depth' parameter to +_gdk_image_new_for_depth(), leading to the assertion failure. + +In _gdk_quartz_image_copy_to_image(), rather than directly pass the +GdkDrawable's depth to _gdk_image_new_for_depth(), if the depth is 1, +then create the new GdkImage with depth 24. The case where the depth is +1 is already handled in _gdk_quartz_image_copy_to_image(). + +This allows the Freeciv 2.5.0 gtk2 client to start and play a game. +--- + gdk/quartz/gdkimage-quartz.c | 13 +++++++++---- + 1 file changed, 9 insertions(+), 4 deletions(-) + +diff --git a/gdk/quartz/gdkimage-quartz.c b/gdk/quartz/gdkimage-quartz.c +index 493efba..853ef61 100644 +--- a/gdk/quartz/gdkimage-quartz.c ++++ b/gdk/quartz/gdkimage-quartz.c +@@ -43,10 +43,15 @@ _gdk_quartz_image_copy_to_image (GdkDrawable *drawable, + + screen = gdk_drawable_get_screen (drawable); + if (!image) +- image = _gdk_image_new_for_depth (screen, GDK_IMAGE_FASTEST, NULL, +- width, height, +- gdk_drawable_get_depth (drawable)); +- ++ { ++ gint drawable_depth = gdk_drawable_get_depth (drawable); ++ if (drawable_depth == 1) ++ drawable_depth = 24; ++ image = _gdk_image_new_for_depth (screen, GDK_IMAGE_FASTEST, NULL, ++ width, height, ++ drawable_depth); ++ } ++ + if (GDK_IS_PIXMAP_IMPL_QUARTZ (drawable)) + { + GdkPixmapImplQuartz *pix_impl; +-- +2.3.2 (Apple Git-55) + diff --git a/nixpkgs/pkgs/development/libraries/gtk/patches/4.0-fix-darwin-build.patch b/nixpkgs/pkgs/development/libraries/gtk/patches/4.0-fix-darwin-build.patch new file mode 100644 index 000000000000..01f4377aa0a7 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/gtk/patches/4.0-fix-darwin-build.patch @@ -0,0 +1,31 @@ +diff --git a/gdk/macos/gdkmacospasteboard-private.h b/gdk/macos/gdkmacospasteboard-private.h +index fdeb936..c4b8666 100644 +--- a/gdk/macos/gdkmacospasteboard-private.h ++++ b/gdk/macos/gdkmacospasteboard-private.h +@@ -27,6 +27,10 @@ + + G_BEGIN_DECLS + ++#ifndef AVAILABLE_MAC_OS_X_VERSION_10_13_AND_LATER ++typedef NSString *NSPasteboardType; ++#endif ++ + @interface GdkMacosPasteboardItemDataProvider : NSObject <NSPasteboardItemDataProvider> + { + GdkContentProvider *_contentProvider; +diff --git a/gdk/macos/gdkmacospasteboard.c b/gdk/macos/gdkmacospasteboard.c +index 66b3c9f..b9e0d8a 100644 +--- a/gdk/macos/gdkmacospasteboard.c ++++ b/gdk/macos/gdkmacospasteboard.c +@@ -400,7 +400,11 @@ _gdk_macos_pasteboard_register_drag_types (NSWindow *window) + gdk_content_formats_get_gtypes (formats, &n_gtypes); + + if (n_gtypes) ++#ifdef AVAILABLE_MAC_OS_X_VERSION_10_13_AND_LATER + [ret addObject:NSPasteboardTypeURL]; ++#else ++ [ret addObject:[[NSString alloc] initWithUTF8String:"public.url"]]; ++#endif + + gdk_content_formats_unref (formats); + } |