Subject: [PATCH v2] Add fwupd

From: phodina <[email-masked]>
Date: Sun, 14 Aug 2022 21:44:07 +0000

Hi,

here's updated patch for fwupd.

I attempted to add also Gnome GUI but for some reason the pkgconfig in meson is not detecting the fwupd even though that when ran manually it finds it.

Here's the error:

Found pkg-config: /gnu/store/2b3blhwbag1ial0dhxw7wh4zjxl0cqpk-pkg-config-0.29.2/bin/pkg-config (0.29.2)
Run-time dependency gtk4 found: YES 4.6.6
Run-time dependency gio-2.0 found: YES 2.70.2
Did not find CMake 'cmake'
Found CMake: NO
Run-time dependency fwupd found: NO (tried pkgconfig and cmake)
Looking for a fallback subproject for the dependency fwupd

../source/meson.build:81:0: ERROR: Git program not found, cannot download fwupd.wrap via git.

A full log can be found at /tmp/guix-build-gnome-firmware-42.2.drv-0/build/meson-logs/meson-log.txterror: in phase 'configure': uncaught exception:

And here's the search result (I sourced the environment first):

/tmp/guix-build-gnome-firmware-42.2.drv-0/source$ pkg-config --list-all | grep fwupd
fwupdplugin fwupdplugin - library for plugins to use to interact with fwupd daemonfwupd fwupd - fwupd is a system daemon for installing device firmware

FIY Same error happens when I attempt to build the libaccounts-qt for KDE updates.[1][2]

[1] https://gitlab.com/accounts-sso/libaccounts-qt/-/issues/5
[2] https://issues.guix.gnu.org/50862#38

From 8dfbeb7c730211680d05a3e02e960e96172cb38a Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Sun, 14 Aug 2022 22:31:46 +0200
Subject: [PATCH v2 2/2] gnu: Add gnome-firmware.

* gnu/packages/gnome.scm (gnome-firmware): New variable.

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 291bd8c3ac..200800a534 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -72,6 +72,7 @@
 ;;; Copyright © 2022 Leo Nikkilä <[email-masked]>
 ;;; Copyright © 2022 Rene Saavedra <[email-masked]>
 ;;; Copyright © 2022 Alexandros Theodotou <[email-masked]>
+;;; Copyright © 2022 Petr Hodina <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -123,6 +124,7 @@ (define-module (gnu packages gnome)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages fonts)
   #:use-module (gnu packages file-systems)
+  #:use-module (gnu packages firmware)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages freedesktop)
   #:use-module (gnu packages game-development)
@@ -1266,6 +1268,32 @@ (define-public gnome-color-manager
    (home-page "https://gitlab.gnome.org/GNOME/gnome-color-manager")
    (license license:gpl2+)))
 
+(define-public gnome-firmware
+  (package
+   (name "gnome-firmware")
+   (version "42.2")
+   (source (origin
+            (method git-fetch)
+            (uri (git-reference
+			(url "https://gitlab.gnome.org/World/gnome-firmware")
+			(commit version)))
+            (sha256
+             (base32
+              "0p9fyqy3d5x6ap2ixw0wabmpdpzh7sdspaxl4f6qxx1sfnapci1g"))))
+   (build-system meson-build-system)
+   (arguments
+    (list #:glib-or-gtk? #t))
+   (native-inputs
+    (list `(,glib "bin")
+      `(,gtk "bin")
+      pkg-config))
+   (inputs
+    (list fwupd gtk))
+   (synopsis "Manage firmware on devices")
+   (description "")
+   (home-page "https://gitlab.gnome.org/World/gnome-firmware")
+   (license license:gpl2+)))
+
 (define-public gnome-online-miners
   (package
     (name "gnome-online-miners")
-- 
2.37.0

From d5bb4d798b40d91119d54077514d70234f6f3818 Mon Sep 17 00:00:00 2001
From: Petr Hodina <[email-masked]>
Date: Tue, 4 Jan 2022 06:58:51 +0100
Subject: [PATCH v2 1/2] gnu: Add fwupd.

* gnu/packages/firmware.scm (fwupd): New variable.

diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm
index a258af30bf..a29f3d2b6a 100644
--- a/gnu/packages/firmware.scm
+++ b/gnu/packages/firmware.scm
@@ -36,21 +36,43 @@ (define-module (gnu packages firmware)
   #:use-module (guix build-system meson)
   #:use-module (gnu packages)
   #:use-module (gnu packages admin)
+  #:use-module (gnu packages autotools)
   #:use-module (gnu packages assembly)
+  #:use-module (gnu packages backup)
   #:use-module (gnu packages base)
+  #:use-module (gnu packages bash)
   #:use-module (gnu packages bison)
+  #:use-module (gnu packages check)
   #:use-module (gnu packages cmake)
-  #:use-module (gnu packages curl)
+  #:use-module (gnu packages compression)
   #:use-module (gnu packages cross-base)
+  #:use-module (gnu packages curl)
+  #:use-module (gnu packages efi)
+  #:use-module (gnu packages elf)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
+  #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages gtk)
+  #:use-module (gnu packages hardware)
   #:use-module (gnu packages libusb)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages man)
+  #:use-module (gnu packages mingw)
+  #:use-module (gnu packages package-management)
   #:use-module (gnu packages perl)
+  #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages polkit)
+  #:use-module (gnu packages protobuf)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages pkg-config))
+  #:use-module (gnu packages python-xyz)
+  #:use-module (gnu packages sqlite)
+  #:use-module (gnu packages tls)
+  #:use-module (gnu packages version-control)
+  #:use-module (gnu packages web)
+  #:use-module (gnu packages xml))
 
 (define-public ath9k-htc-firmware
   (package
@@ -168,6 +190,89 @@ (define-public b43-tools
 driver.")
       (license license:gpl2))))
 
+(define-public fwupd
+  (package
+    (name "fwupd")
+    (version "1.8.3")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/fwupd/fwupd")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "02jf052qj1nl47ppqrgz3s9qapq4pajgkf6lbj5rxr5sshlrw44n"))))
+    (build-system meson-build-system)
+    (arguments
+     (list #:configure-flags #~(list "--wrap-mode=nofallback"
+                                     "-Dsystemd=false"
+                                     (string-append "-Defi_os_dir="
+                                                    #$gnu-efi "/lib")
+                                     "-Defi_binary=false"
+                                     (string-append "-Dudevdir="
+                                                    #$output "/lib/udev")
+                                     "--localstatedir=/var"
+                                     (string-append "--libexecdir="
+                                                    #$output "/libexec")
+                                     "-Dsupported_build=true")
+           #:glib-or-gtk? #t ;To wrap binaries and/or compile schemas
+           #:phases #~(modify-phases %standard-phases
+                        (add-after 'unpack 'make-source-writable
+                          (lambda _
+                            (for-each make-file-writable
+                                      (find-files "."))
+                            (substitute* "src/fu-self-test.c"
+                              (("/bin/sh")
+                               (which "sh")))))
+                        (add-before 'build 'setup-home
+                          (lambda _
+                            (setenv "HOME" "/tmp")))
+                        (add-before 'install 'no-polkit-magic
+                          (lambda _
+                            (setenv "PKEXEC_UID" "something"))))))
+    (native-inputs (list gobject-introspection
+                         python-pygobject
+                         python-pillow
+                         python-pycairo
+                         python
+                         pkg-config
+                         vala
+                         gtk-doc
+                         which
+                         umockdev
+                         `(,glib "bin")
+                         help2man
+                         gettext-minimal))
+    (inputs (list bash-completion
+                  glib
+                  libgudev
+                  libxmlb
+                  gusb
+                  sqlite
+                  libarchive
+                  libjcat
+                  json-glib
+                  curl
+                  polkit
+                  eudev
+                  gcab
+                  gnutls
+                  libelf
+                  tpm2-tss
+                  cairo
+                  efivar
+                  pango
+                  protobuf-c
+                  mingw-w64-tools
+                  libsmbios
+                  gnu-efi))
+    (home-page "https://fwupd.org/")
+    (synopsis "A simple daemon to allow session software to update firmware")
+    (description "This package aims to make updating firmware on Linux
+automatic, safe and reliable.")
+    (license license:lgpl2.1+)))
+
 (define-public openfwwf-firmware
   (package
     (name "openfwwf-firmware")
-- 
2.37.0