From patchwork Thu Mar 11 22:07:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leo Prikler X-Patchwork-Id: 27646 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 8968927BC51; Thu, 11 Mar 2021 22:12:36 +0000 (GMT) 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_H3,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 C012C27BC50 for ; Thu, 11 Mar 2021 22:12:33 +0000 (GMT) Received: from localhost ([::1]:45588 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lKTXk-0000PA-Uj for patchwork@mira.cbaines.net; Thu, 11 Mar 2021 17:12:32 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:33036) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lKTWK-00071i-NV for guix-patches@gnu.org; Thu, 11 Mar 2021 17:11:04 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:43720) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1lKTWK-0000Va-CC for guix-patches@gnu.org; Thu, 11 Mar 2021 17:11:04 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1lKTWK-0005vl-7n for guix-patches@gnu.org; Thu, 11 Mar 2021 17:11:04 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#44492] [PATCH v4 47/47] gnu: Add fractal. Resent-From: Leo Prikler Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Thu, 11 Mar 2021 22:11:04 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 44492 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: moreinfo To: 44492@debbugs.gnu.org Received: via spool by 44492-submit@debbugs.gnu.org id=B44492.161550064222723 (code B ref 44492); Thu, 11 Mar 2021 22:11:04 +0000 Received: (at 44492) by debbugs.gnu.org; 11 Mar 2021 22:10:42 +0000 Received: from localhost ([127.0.0.1]:55260 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lKTVq-0005uH-5O for submit@debbugs.gnu.org; Thu, 11 Mar 2021 17:10:42 -0500 Received: from mailrelay.tugraz.at ([129.27.2.202]:52670) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lKTVl-0005ts-Ry for 44492@debbugs.gnu.org; Thu, 11 Mar 2021 17:10:30 -0500 Received: from localhost.localdomain (217-149-164-20.nat.highway.telekom.at [217.149.164.20]) by mailrelay.tugraz.at (Postfix) with ESMTPSA id 4DxNRk6Q0wz3xQG for <44492@debbugs.gnu.org>; Thu, 11 Mar 2021 23:10:26 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tugraz.at; s=mailrelay; t=1615500626; bh=YmMTiz6nKKuCWXm0GQKKxJW0PUkidKDrjbR/0AhX9BM=; h=From:To:Subject:Date:In-Reply-To:References; b=CT+1I8HeST/frAMHuzcdVC1Mm5nHzNpzQMftPqjpqviyQabBmlaRH8zZz85Tkx5ap u4tRFKOjZU8HWRRupZPsVx7xnySAO7K7FN2koDWgPGTn3a+BOgbcyaqq5o8V1NNIiI XsmMC3Bhz883uxj0aaDEV+BP/sLEiRn915tNVaJ4= From: Leo Prikler Date: Thu, 11 Mar 2021 23:07:56 +0100 Message-Id: <20210311220756.23132-47-leo.prikler@student.tugraz.at> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210311220756.23132-1-leo.prikler@student.tugraz.at> References: <20210311220756.23132-1-leo.prikler@student.tugraz.at> MIME-Version: 1.0 X-TUG-Backscatter-control: bt4lQm5Tva3SBgCuw0EnZw X-Scanned-By: MIMEDefang 2.74 on 129.27.10.117 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" X-getmail-retrieved-from-mailbox: Patches * gnu/packages/patches/fractal-switch-from-failure-to-anyhow.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it here. * gnu/packages/gnome.scm (fractal): New variable. --- gnu/local.mk | 1 + gnu/packages/gnome.scm | 142 ++++++++++++++++- ...ractal-switch-from-failure-to-anyhow.patch | 143 ++++++++++++++++++ 3 files changed, 285 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/fractal-switch-from-failure-to-anyhow.patch diff --git a/gnu/local.mk b/gnu/local.mk index b879131131..b121dcfb94 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -999,6 +999,7 @@ dist_patch_DATA = \ %D%/packages/patches/fontconfig-hurd-path-max.patch \ %D%/packages/patches/fpc-reproducibility.patch \ %D%/packages/patches/fplll-std-fenv.patch \ + %D%/packages/patches/fractal-switch-from-failure-to-anyhow.patch \ %D%/packages/patches/freedink-engine-fix-sdl-hints.patch \ %D%/packages/patches/freebayes-devendor-deps.patch \ %D%/packages/patches/freeimage-unbundle.patch \ diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 5c6d247471..9c1cb17805 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -12103,7 +12103,6 @@ editing environment for translation issues within the GNU gettext/GNOME desktop world.") (license license:gpl3+))) - (define-public ocrfeeder (package (name "ocrfeeder") @@ -12166,3 +12165,144 @@ world.") (description "OCRFeeder is a complete Optical Character Recognition and Document Analysis and Recognition program.") (license license:gpl3+))) + +(define-public fractal + (package + (name "fractal") + (version "4.4.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.gnome.org/GNOME/fractal") + (commit version))) + (file-name (string-append "fractal-" version)) + (sha256 + (base32 + "1v2aw41gfmixki6g7j7mcav7i7qkn17k7zndvvfv08rgsrvma8qd")) + (patches + (search-patches + "fractal-switch-from-failure-to-anyhow.patch")))) + (build-system cargo-build-system) + (arguments + `(#:imported-modules + (,@%cargo-build-system-modules + ,@%meson-build-system-modules) + #:modules + ((guix build cargo-build-system) + (guix build utils) + ((guix build meson-build-system) #:prefix meson:)) + #:cargo-inputs + (("rust-anyhow" ,rust-anyhow-1) + ("rust-comrak" ,rust-comrak-0.7) + ("rust-directories" ,rust-directories-2) + ("rust-dirs" ,rust-dirs-2) + ("rust-either" ,rust-either-1) + ("rust-fragile" ,rust-fragile-1) + ("rust-gdk" ,rust-gdk-0.12) + ("rust-gdk-pixbuf" ,rust-gdk-pixbuf-0.8) + ("rust-gettext" ,rust-gettext-rs-0.4) + ("rust-glib" ,rust-glib-0.9) + ("rust-gio" ,rust-gio-0.8) + ("rust-gspell" ,rust-gspell-0.4) + ("rust-gstreamer" ,rust-gstreamer-0.15) + ("rust-gstreamer-pbutils" ,rust-gstreamer-pbutils-0.15) + ("rust-gstreamer-player" ,rust-gstreamer-player-0.15) + ("rust-gtk" ,rust-gtk-0.8) + ("rust-html2pango" ,rust-html2pango-0.3) + ("rust-letter-avatar" ,rust-letter-avatar-for-fractal) + ("rust-libhandy" ,rust-libhandy-0.5) + ("rust-loggerv" ,rust-loggerv-0.7) + ("rust-md5" ,rust-md5-0.7) + ("rust-mdl" ,rust-mdl-1) + ("rust-rand" ,rust-rand-0.7) + ("rust-regex" ,rust-regex-1) + ("rust-reqwest" ,rust-reqwest-0.10) + ("rust-ruma-identifiers" ,rust-ruma-identifiers-0.17) + ("rust-serde" ,rust-serde-1) + ("rust-secret-service" ,rust-secret-service-1) + ("rust-sourceview4" ,rust-sourceview4-for-fractal)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-cargo + (lambda* (#:key vendor-dir #:allow-other-keys) + (substitute* "fractal-gtk/Cargo.toml" + (("git = .*") "") + ;; rust-gettext-rs + (("branch = \"no-gettext\"") "version = \"0.4.0\"") + ;; rust-sourceview4 + (("rev = \"fa8819fa7ecbe56f44d951656d3825f468915754\"") + "version = \"0.2.0\"") + ;; rust-either + (("rev = \"60c99bc0723491e2dfd42bbe9b485c5f9323e96b\"") + "version = \"1.6.0\"") + (("\"serde_untagged\"") "\"serde\"")) + (substitute* + (map + (lambda (dir) (string-append dir "/Cargo.toml")) + (find-files vendor-dir "system-deps.*" #:directories? #t)) + (("0.0.10") ,(package-version rust-version-compare-0.0))) + (substitute* "meson.build" + (("'Cargo.lock',") "")) + (substitute* "scripts/cargo.sh" + (("export CARGO_HOME=.*" all) + (string-append all "\ +mkdir -p $CARGO_HOME +cp $1/.cargo/config $CARGO_HOME +"))) + + #t)) + (add-after 'unpack 'skip-gtk-update-icon-cache + (lambda _ + (substitute* "scripts/meson_post_install.py" + (("gtk-update-icon-cache") (which "true"))) + #t)) + (add-after 'configure 'configure-harder + (lambda* (#:key vendor-dir inputs #:allow-other-keys) + (for-each + (lambda (d) + (copy-recursively + (string-append (assoc-ref inputs "rust-sourceview4") "/" d) + (string-append vendor-dir "/rust-" d "-0.2.0"))) + '("sourceview4" "sourceview4-sys")) + (delete-file-recursively + (car (find-files vendor-dir "fractal.*" #:directories? #t))) + #t)) + (add-after 'patch-cargo-checksums 'really-configure + (lambda args + (apply (assoc-ref meson:%standard-phases 'configure) + #:build-type "release" + #:configure-flags '() + args))) + (replace 'build (assoc-ref meson:%standard-phases 'build)) + (replace 'check + (lambda args + ((assoc-ref meson:%standard-phases 'check) + #:test-target "test" + #:parallel-tests? #t + #:tests? #t))) + (replace 'install (assoc-ref meson:%standard-phases 'install))))) + (native-inputs + `(("glib:bin" ,glib "bin") + ("gettext" ,gettext-minimal) + ("meson" ,meson-for-build) + ("ninja" ,ninja) + ("pkg-config" ,pkg-config))) + (inputs + `(("atk" ,atk) + ("cairo" ,cairo) + ("glib" ,glib) + ("gspell" ,gspell) + ("gst-editing-services" ,gst-editing-services) + ("gstreamer" ,gstreamer) + ("gst-plugins-base" ,gst-plugins-base) + ("gst-plugins-bad" ,gst-plugins-bad) + ("gtk+" ,gtk+) + ("gtksourceview" ,gtksourceview) + ("libhandy" ,libhandy-0.0) + ("openssl" ,openssl))) + (synopsis "Matrix messaging app for GNOME") + (description "Fractal is a Matrix messaging app for GNOME written in Rust. +Its interface is optimized for collaboration in large groups, such as free +software projects.") + (home-page "https://wiki.gnome.org/Apps/Fractal") + (license license:gpl3))) diff --git a/gnu/packages/patches/fractal-switch-from-failure-to-anyhow.patch b/gnu/packages/patches/fractal-switch-from-failure-to-anyhow.patch new file mode 100644 index 0000000000..6b830ecf94 --- /dev/null +++ b/gnu/packages/patches/fractal-switch-from-failure-to-anyhow.patch @@ -0,0 +1,143 @@ +From e4ca9dc5c0f4401f350338e4cd9b0734db9371bf Mon Sep 17 00:00:00 2001 +From: Yuki Okushi +Date: Thu, 13 Aug 2020 14:41:50 +0900 +Subject: [PATCH] Switch from failure to anyhow + +--- + Cargo.lock | 8 +++++++- + fractal-gtk/Cargo.toml | 2 +- + fractal-gtk/src/appop/attach.rs | 2 +- + fractal-gtk/src/cache/mod.rs | 2 +- + fractal-gtk/src/cache/state.rs | 7 +++---- + fractal-gtk/src/util.rs | 8 ++++---- + 6 files changed, 17 insertions(+), 12 deletions(-) + +diff --git a/Cargo.lock b/Cargo.lock +index c0b5e5e2..f26d9787 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -88,6 +88,12 @@ dependencies = [ + "winapi 0.3.9", + ] + ++[[package]] ++name = "anyhow" ++version = "1.0.32" ++source = "registry+https://github.com/rust-lang/crates.io-index" ++checksum = "6b602bfe940d21c130f3895acd65221e8a61270debe89d628b9cb4e3ccb8569b" ++ + [[package]] + name = "arrayref" + version = "0.3.6" +@@ -580,6 +586,7 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + name = "fractal-gtk" + version = "4.4.0" + dependencies = [ ++ "anyhow", + "cairo-rs", + "chrono", + "clap", +@@ -587,7 +594,6 @@ dependencies = [ + "directories", + "dirs", + "either 1.5.99", +- "failure", + "fractal-matrix-api", + "fragile", + "gdk", +diff --git a/fractal-gtk/Cargo.toml b/fractal-gtk/Cargo.toml +index 960f64b5..e1c6a33d 100644 +--- a/fractal-gtk/Cargo.toml ++++ b/fractal-gtk/Cargo.toml +@@ -6,11 +6,11 @@ workspace = "../" + edition = "2018" + + [dependencies] ++anyhow = "1.0.32" + clap = "2.33.0" + comrak = "0.7.0" + directories = "2.0.2" + dirs = "2.0.2" +-failure = "0.1.6" + fragile = "1.0.0" + gspell = "0.4.0" + gdk = "0.12.1" +diff --git a/fractal-gtk/src/appop/attach.rs b/fractal-gtk/src/appop/attach.rs +index 3f0813aa..3b5bff4c 100644 +--- a/fractal-gtk/src/appop/attach.rs ++++ b/fractal-gtk/src/appop/attach.rs +@@ -6,7 +6,7 @@ use std::io::prelude::*; + use std::path::PathBuf; + use std::sync::{Arc, Mutex}; + +-use failure::Error; ++use anyhow::Error; + + use gtk::prelude::*; + +diff --git a/fractal-gtk/src/cache/mod.rs b/fractal-gtk/src/cache/mod.rs +index 76942866..8943eac6 100644 +--- a/fractal-gtk/src/cache/mod.rs ++++ b/fractal-gtk/src/cache/mod.rs +@@ -12,7 +12,7 @@ use std::thread; + + use crate::types::Room; + use crate::types::RoomList; +-use failure::Error; ++use anyhow::Error; + use fractal_api::identifiers::{DeviceId, UserId}; + use std::collections::HashMap; + use std::hash::Hash; +diff --git a/fractal-gtk/src/cache/state.rs b/fractal-gtk/src/cache/state.rs +index 7cb5372a..0e62c59b 100644 +--- a/fractal-gtk/src/cache/state.rs ++++ b/fractal-gtk/src/cache/state.rs +@@ -4,8 +4,7 @@ use mdl::Model; + use mdl::Store; + use serde::{Deserialize, Serialize}; + +-use failure::err_msg; +-use failure::Error; ++use anyhow::{anyhow, Error}; + + use std::cell::RefCell; + use std::fs::remove_dir_all; +@@ -127,8 +126,8 @@ impl FCache { + guard.take(); + + let fname = cache_dir_path(None, "cache.mdl") +- .or_else(|_| Err(err_msg("Can't remove cache file")))?; +- remove_dir_all(fname).or_else(|_| Err(err_msg("Can't remove cache file"))) ++ .or_else(|_| Err(anyhow!("Can't remove cache file")))?; ++ remove_dir_all(fname).or_else(|_| Err(anyhow!("Can't remove cache file"))) + } + + #[allow(dead_code)] +diff --git a/fractal-gtk/src/util.rs b/fractal-gtk/src/util.rs +index 764a8e8e..b2feb12c 100644 +--- a/fractal-gtk/src/util.rs ++++ b/fractal-gtk/src/util.rs +@@ -1,6 +1,6 @@ + use crate::globals::CACHE_PATH; +-use failure::format_err; +-use failure::Error as FailError; ++use anyhow::anyhow; ++use anyhow::Error as AnyhowError; + use gdk::prelude::*; + use gdk_pixbuf::Pixbuf; + use gio::{Settings, SettingsExt, SettingsSchemaSource}; +@@ -21,9 +21,9 @@ pub fn cache_dir_path(dir: Option<&str>, name: &str) -> Result + Ok(path.join(name)) + } + +-pub fn get_pixbuf_data(pb: &Pixbuf) -> Result, FailError> { ++pub fn get_pixbuf_data(pb: &Pixbuf) -> Result, AnyhowError> { + let image = cairo::ImageSurface::create(cairo::Format::ARgb32, pb.get_width(), pb.get_height()) +- .or_else(|_| Err(format_err!("Cairo Error")))?; ++ .or_else(|_| Err(anyhow!("Cairo Error")))?; + + let g = cairo::Context::new(&image); + g.set_source_pixbuf(pb, 0.0, 0.0); +-- +2.30.1 +