From patchwork Fri May 21 04:08:24 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Raghav Gururajan X-Patchwork-Id: 29440 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 9215427BC81; Fri, 21 May 2021 05:10:09 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS, T_DKIM_INVALID,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.2 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id ED8E227BC78 for ; Fri, 21 May 2021 05:10:08 +0100 (BST) Received: from localhost ([::1]:36478 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1ljwUC-0005uT-64 for patchwork@mira.cbaines.net; Fri, 21 May 2021 00:10:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:41328) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1ljwU6-0005uL-3T for guix-patches@gnu.org; Fri, 21 May 2021 00:10:02 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:52220) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1ljwU5-0000bF-RU for guix-patches@gnu.org; Fri, 21 May 2021 00:10:01 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1ljwU5-0007pB-MD for guix-patches@gnu.org; Fri, 21 May 2021 00:10:01 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#48554] [PATCH wip-gnome v1] gnu: Add gtk. References: In-Reply-To: Resent-From: Raghav Gururajan Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 21 May 2021 04:10:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 48554 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: To: 48554@debbugs.gnu.org Cc: Raghav Gururajan Received: via spool by 48554-submit@debbugs.gnu.org id=B48554.162157014229991 (code B ref 48554); Fri, 21 May 2021 04:10:01 +0000 Received: (at 48554) by debbugs.gnu.org; 21 May 2021 04:09:02 +0000 Received: from localhost ([127.0.0.1]:35532 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ljwT7-0007nU-JD for submit@debbugs.gnu.org; Fri, 21 May 2021 00:09:02 -0400 Received: from out1.migadu.com ([91.121.223.63]:55286) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ljwT5-0007nF-F9 for 48554@debbugs.gnu.org; Fri, 21 May 2021 00:09:00 -0400 X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raghavgururajan.name; s=key1; t=1621570137; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=tN2IGu11SGUN9KsAsX2IG6Y+v+2KUsiaMwZjYyQcLjA=; b=g2GozEqelq1y3XU62aSl2mgIFYgX4/jYk6Wc8o1mSuG47CY/QYwIAzDPphOdbIcHmeC6rZ Ojsw6K7YF03+TyEv/SFFsJb8EAZmx76Ly33DbU8hx1nmVuQ2wYMvRRZjzI5PerfSaEvVyo IU6OJesvlUtwHWMOQnydERzYojQtIdVjOOLNlT+b9r/Z2DqNe/VT4aDuDM5YjVoiTBbbZv FHW2ftAsrm2KvxeKaP3pFL91AQVoEbQ+lklEBG7b9vp8bonO0h9MXjii6d3ssu/QFNDtfQ Q56UrPMsFGyP0UpDFBBYaAIIkMz/9QyE85hDsMEqA4QjfGufjpw6sfl5NwQkBg== Date: Fri, 21 May 2021 00:08:24 -0400 Message-Id: <20210521040824.10938-1-rg@raghavgururajan.name> MIME-Version: 1.0 X-Migadu-Flow: FLOW_OUT X-Migadu-Auth-User: rg@raghavgururajan.name X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" Reply-to: Raghav Gururajan X-ACL-Warn: , Raghav Gururajan via Guix-patches X-Patchwork-Original-From: Raghav Gururajan via Guix-patches via From: Raghav Gururajan X-getmail-retrieved-from-mailbox: Patches * gnu/packages/gtk.scm (gtk): New variable. * gnu/packages/patches/gtk4-honor-GUIX_GTK4_PATH.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + gnu/packages/gtk.scm | 133 ++++++++++++++++++ .../patches/gtk4-honor-GUIX_GTK4_PATH.patch | 51 +++++++ 3 files changed, 185 insertions(+) create mode 100644 gnu/packages/patches/gtk4-honor-GUIX_GTK4_PATH.patch diff --git a/gnu/local.mk b/gnu/local.mk index 49bdd12d58..353a931cef 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1179,6 +1179,7 @@ dist_patch_DATA = \ %D%/packages/patches/gtk2-theme-paths.patch \ %D%/packages/patches/gtk3-respect-GUIX_GTK3_PATH.patch \ %D%/packages/patches/gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch \ + %D%/packages/patches/gtk4-honor-GUIX_GTK4_PATH.patch \ %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \ %D%/packages/patches/gtksourceview-2-add-default-directory.patch \ %D%/packages/patches/gvfs-add-support-for-libplist-2.2.patch \ diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index f52294b6e2..526c2ac50d 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -90,11 +90,13 @@ #:use-module (gnu packages pretty-print) #:use-module (gnu packages profiling) #:use-module (gnu packages python) + #:use-module (gnu packages python-build) #:use-module (gnu packages python-xyz) #:use-module (gnu packages guile) #:use-module (gnu packages guile-xyz) #:use-module (gnu packages cups) #:use-module (gnu packages version-control) + #:use-module (gnu packages vulkan) #:use-module (gnu packages web) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) @@ -832,6 +834,137 @@ is part of the GNOME accessibility project.") (license license:lgpl2.1+) (home-page "https://wiki.gnome.org/Accessibility/"))) +(define-public gtk + (package + (name "gtk") + (version "4.2.1") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/" name "/" + (version-major+minor version) "/" + name "-" version ".tar.xz")) + (sha256 + (base32 "1rh9fd5axf79pmd93hb2fmmflic5swcvqvq6vqghlgz4bmvnjc82")) + (patches + (search-patches "gtk4-honor-GUIX_GTK4_PATH.patch")))) + (build-system meson-build-system) + (outputs '("out" "doc")) + (arguments + `(#:meson ,meson-0.55 + #:tests? #f ; FIXME + #:configure-flags + (list + "-Dbroadway-backend=true" ; for broadway display-backend + "-Dcloudproviders=enabled" ; for cloud-providers support + ;;"-Dsysprof=enabled" ; for tracing support + "-Dtracker=enabled" ; for filechooser search support + "-Dcolord=enabled" ; for color printing support + "-Dgtk_doc=true" + "-Dman-pages=true") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-docs + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "docs" + (substitute* (find-files "." "\\.xml$") + (("http://www.oasis-open.org/docbook/xml/4.3/") + (string-append (assoc-ref inputs "docbook-xml") + "/xml/dtd/docbook/")))) + #t)) + (add-before 'check 'pre-check + (lambda _ + ;; Tests require a running X server. + (system "Xvfb :1 +extension GLX &") + (setenv "DISPLAY" ":1") + ;; Tests write to $HOME. + (setenv "HOME" (getcwd)) + ;; Tests look for $XDG_RUNTIME_DIR. + (setenv "XDG_RUNTIME_DIR" (getcwd)) + ;; For missing '/etc/machine-id'. + (setenv "DBUS_FATAL_WARNINGS" "0") + #t)) + (add-after 'install 'move-doc + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (assoc-ref outputs "doc"))) + (mkdir-p (string-append doc "/share/doc")) + (rename-file + (string-append out "/share/doc") + (string-append doc "/share/doc"))) + #t))))) + (native-inputs + `(("docbook-xml" ,docbook-xml-4.3) + ("docbook-xsl" ,docbook-xsl) + ("gettext" ,gettext-minimal) + ("glib:bin" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) ; for building introspection data + ("gtk-doc" ,gtk-doc) ; for building documentation + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ;;; These python modules are required for building documentation. + ("python-jinja2" ,python-jinja2) + ("python-markdown" ,python-markdown) + ("python-markupsafe" ,python-markupsafe) + ("python-pygments" ,python-pygments) + ("python-toml" ,python-toml) + ("python-typogrify" ,python-typogrify) + ("sassc" ,sassc) ; for building themes + ("vapigen" ,vala) + ("xsltproc" ,libxslt) ; for building man-pages + ("xorg-server" ,xorg-server-for-tests))) + (inputs + `(("cloudproviders" ,libcloudproviders) ; for clould-providers support + ("colord" ,colord) ; for color printing support + ("cups" ,cups) ; for CUPS print-backend + ;;("ffmpeg" ,ffmpeg) ; for ffmpeg media-backend + ("fribidi" ,fribidi) + ;;("gstreamer" ,gstreamer) ; for gstreamer media-backend + ("harfbuzz" ,harfbuzz) + ("iso-codes" ,iso-codes) + ("json-glib" ,json-glib) + ("librsvg" ,librsvg) + ("python" ,python) + ("rest" ,rest) + ;;("sysprof" ,sysprof) ; for tracing support + ("tracker" ,tracker))) ; for filechooser search support + (propagated-inputs + ;;; Following dependencies are referenced in .pc files. + `(("cairo" ,cairo) + ("epoxy" ,libepoxy) + ("fontconfig" ,fontconfig) + ("gdk-pixbuf" ,gdk-pixbuf+svg) + ("glib" ,glib) + ("graphene" ,graphene) + ("pango" ,pango) + ("vulkan" ,vulkan-loader) ; for vulkan graphics API support + ("vulkan-headers" ,vulkan-headers) + ("wayland" ,wayland) ; for wayland display-backend + ("wayland-protocols" ,wayland-protocols) + ("x11" ,libx11) ; for x11 display-backend + ("xcomposite" ,libxcomposite) + ("xcursor" ,libxcursor) + ("xdamage" ,libxdamage) + ("xext" ,libxext) + ("xfixes" ,libxfixes) + ("xi" ,libxi) + ("xinerama" ,libxinerama) ; for xinerama support + ("xkbcommon" ,libxkbcommon) + ("xrandr" ,libxrandr) + ("xrender" ,libxrender))) + (native-search-paths + (list + (search-path-specification + (variable "GUIX_GTK4_PATH") + (files '("lib/gtk-4.0"))))) + (search-paths native-search-paths) + (home-page "https://www.gtk.org/") + (synopsis "Cross-platform widget toolkit") + (description "GTK is a multi-platform toolkit for creating graphical user +interfaces. Offering a complete set of widgets, GTK is suitable for projects +ranging from small one-off tools to complete application suites.") + (license license:lgpl2.1+))) + (define-public gtk+-2 (package (name "gtk+") diff --git a/gnu/packages/patches/gtk4-honor-GUIX_GTK4_PATH.patch b/gnu/packages/patches/gtk4-honor-GUIX_GTK4_PATH.patch new file mode 100644 index 0000000000..4a60023bf7 --- /dev/null +++ b/gnu/packages/patches/gtk4-honor-GUIX_GTK4_PATH.patch @@ -0,0 +1,51 @@ +From 889294a93fc6464c2c2919bc47f6fd85ec823363 Mon Sep 17 00:00:00 2001 +From: Raghav Gururajan +Date: Tue, 18 May 2021 19:57:00 -0400 +Subject: [PATCH] [PATCH]: Honor GUIX_GTK4_PATH. + +This patch makes GTK look for additional modules in a list of directories +specified by the environment variable "GUIX_GTK4_PATH". This can be used +instead of "GTK_PATH" to make GTK find modules that are incompatible with +other major versions of GTK. +--- + gtk/gtkmodules.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/gtk/gtkmodules.c b/gtk/gtkmodules.c +index aace5dcbc9..193b6a02e9 100644 +--- a/gtk/gtkmodules.c ++++ b/gtk/gtkmodules.c +@@ -105,6 +105,7 @@ static char ** + get_module_path (void) + { + const char *module_path_env; ++ const gchar *module_guix_gtk4_path_env; + const char *exe_prefix; + char *module_path; + char *default_dir; +@@ -114,6 +115,7 @@ get_module_path (void) + return result; + + module_path_env = g_getenv ("GTK_PATH"); ++ module_guix_gtk4_path_env = g_getenv ("GUIX_GTK4_PATH"); + exe_prefix = g_getenv ("GTK_EXE_PREFIX"); + + if (exe_prefix) +@@ -121,7 +123,13 @@ get_module_path (void) + else + default_dir = g_build_filename (_gtk_get_libdir (), "gtk-4.0", NULL); + +- if (module_path_env) ++ if (module_guix_gtk4_path_env && module_path_env) ++ module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S, ++ module_guix_gtk4_path_env, module_path_env, default_dir, NULL); ++ else if (module_guix_gtk4_path_env) ++ module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S, ++ module_guix_gtk4_path_env, default_dir, NULL); ++ else if (module_path_env) + module_path = g_build_path (G_SEARCHPATH_SEPARATOR_S, + module_path_env, default_dir, NULL); + else +-- +2.31.1 +