GNU bug report logs - #60699
[PATCH 1/2] gnu: Add fwupd service.

Previous Next

Package: guix-patches;

Reported by: phodina <phodina <at> protonmail.com>

Date: Tue, 10 Jan 2023 01:20:01 UTC

Severity: normal

Tags: moreinfo, patch

To reply to this bug, email your comments to 60699 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#60699; Package guix-patches. (Tue, 10 Jan 2023 01:20:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to phodina <phodina <at> protonmail.com>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Tue, 10 Jan 2023 01:20:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: phodina <phodina <at> protonmail.com>
To: Guix Patches <guix-patches <at> gnu.org>
Cc: Ludovic Courtès <ludo <at> gnu.org>
Subject: [PATCH 1/2] gnu: Add fwupd service.
Date: Tue, 10 Jan 2023 01:19:04 +0000
[Message part 1 (text/plain, inline)]
Hello,

this patch adds the service for the fwupd package (commit 23152ff70f0ed4966d8207846f54c793d7cb4f86).

Also the Gnome Shell provides nice GUI integration as shown in the attached screenshot.

The package in the service configuration is there so users can choose the fwupd they want to use as the
one in Guix upstream does not support non-libre firmware.

----
Petr
[Message part 2 (text/html, inline)]
[0001-gnu-Add-fwupd-service.patch (text/x-patch, attachment)]
[0002-gnu-Add-gnome-firmware.patch (text/x-patch, attachment)]
[Screenshot from 2023-01-09 18-04-00.png (image/png, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#60699; Package guix-patches. (Tue, 10 Jan 2023 10:22:02 GMT) Full text and rfc822 format available.

Message #8 received at 60699 <at> debbugs.gnu.org (full text, mbox):

From: Jelle Licht <jlicht <at> fsfe.org>
To: phodina <phodina <at> protonmail.com>, 60699 <at> debbugs.gnu.org
Cc: Ludovic Courtès <ludo <at> gnu.org>
Subject: Re: [bug#60699] [PATCH 1/2] gnu: Add fwupd service.
Date: Tue, 10 Jan 2023 11:21:49 +0100
Hello Petr,

phodina via Guix-patches via <guix-patches <at> gnu.org> writes:

> Hello,
>
> this patch adds the service for the fwupd package (commit 23152ff70f0ed4966d8207846f54c793d7cb4f86).
>
> Also the Gnome Shell provides nice GUI integration as shown in the attached screenshot.
>
> The package in the service configuration is there so users can choose the fwupd they want to use as the
> one in Guix upstream does not support non-libre firmware.
>
> ----
> Petr
> From 9eba8a2400ad296ed3ee8bc581528cabff969cd5 Mon Sep 17 00:00:00 2001
> From: Petr Hodina <phodina <at> protonmail.com>
> Date: Wed, 7 Sep 2022 07:48:41 +0200
> Subject: [PATCH 1/2] gnu: Add fwupd service.
>
> * gnu/services/firmware.scm (fwupd): New variable.
>
> diff --git a/gnu/services/firmware.scm b/gnu/services/firmware.scm
> new file mode 100644
> index 0000000000..7539c56202
> --- /dev/null
> +++ b/gnu/services/firmware.scm
> @@ -0,0 +1,70 @@
> +;;; GNU Guix --- Functional package management for GNU
> +;;; Copyright ?? 2022 Petr Hodina <phodina <at> protonmail.com>
                 ^
                 Something seems to have gone wrong with the encoding
                 here. Could you try resending it?
                 
> +;;;
> +;;; This file is part of GNU Guix.
> +;;;
> +;;; GNU Guix is free software; you can redistribute it and/or modify it
> +;;; under the terms of the GNU General Public License as published by
> +;;; the Free Software Foundation; either version 3 of the License, or (at
> +;;; your option) any later version.
> +;;;
> +;;; GNU Guix is distributed in the hope that it will be useful, but
> +;;; WITHOUT ANY WARRANTY; without even the implied warranty of
> +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +;;; GNU General Public License for more details.
> +;;;
> +;;; You should have received a copy of the GNU General Public License
> +;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
> +
> +(define-module (gnu services firmware)
> +  #:use-module (guix diagnostics)
> +  #:use-module (guix gexp)
> +  #:use-module (guix records)
> +  #:use-module (guix modules)
> +  #:use-module (guix i18n)
> +  #:use-module (guix ui)
> +  #:use-module (gnu services)
> +  #:use-module (gnu services base)
> +  #:use-module (gnu services shepherd)
> +  #:use-module (gnu packages firmware)
> +  #:use-module (srfi srfi-1)
> +  #:use-module (srfi srfi-26)
> +  #:use-module (srfi srfi-34)
> +  #:use-module (srfi srfi-35)
> +  #:use-module (ice-9 match)
> +  #:export (fwupd-configuration fwupd-service-type))
> +
> +
> +;;;
> +;;; Fwupd daemon.
> +;;;
> +
> +(define-record-type* <fwupd-configuration> fwupd-configuration
> +                     make-fwupd-configuration fwupd-configuration?
> +                     (fwupd fwupd-configuration-fwupd
> +                            (default fwupd)))
> +
> +(define fwupd-activation-service
> +  #~(begin
> +      (use-modules (guix build utils))
> +      (mkdir-p "/var/lib/fwupd")))
> +
> +(define (fwupd-shepherd-service config)
> +  (shepherd-service (documentation "Run the fwupd daemon.")
> +                    (provision '(fwupd))
> +                    (requirement '(dbus-system udev))
> +                    (start #~(make-forkexec-constructor (list (string-append #$fwupd
> +                                                               "/libexec/fwupd/fwupd"))))
> +                    (stop #~(make-kill-destructor))))
> +
> +(define fwupd-service-type
> +  (service-type (name 'fwupd)
> +                (default-value (fwupd-configuration))
> +                (extensions (list (service-extension activation-service-type
> +                                                     (const
> +                                                      fwupd-activation-service))
> +                                  (service-extension
> +                                   shepherd-root-service-type
> +                                   (compose list fwupd-shepherd-service))))
> +                (description
> +                 "Run @command{fwupd}, the Firmware update daemon.")))

Looks great! Does this actually work in practice though? I ran into some
issues trying to run fwupd myself w.r.t. polkit (see
https://issues.guix.gnu.org/60065). Never mind if it actually works for
you though, IWBN if no further tweaks are required to get this to work.

> base-commit: 437718442ca758a3857702cecfe5c80aa5df272b
> -- 
> 2.38.1
>
> From 108b4e57aa1682359195205e8b5679eae81445dd Mon Sep 17 00:00:00 2001
> From: Petr Hodina <phodina <at> protonmail.com>
> Date: Tue, 6 Sep 2022 06:06:26 +0200
> Subject: [PATCH 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 78e65d7400..f9c627b56a 100644
> --- a/gnu/packages/gnome.scm
> +++ b/gnu/packages/gnome.scm
> @@ -123,6 +123,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)
> @@ -2330,6 +2331,41 @@ (define-public gnome-disk-utility
>      (description "Disk management utility for GNOME.")
>      (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
> +           #:configure-flags #~(list "-Dsystemd=false" "-Delogind=true")))
> +    (native-inputs (list desktop-file-utils
> +                         gettext-minimal
> +                         `(,glib "bin")
> +                         `(,gtk "bin")
> +                         help2man
> +                         pkg-config))
> +    (inputs (list gtk fwupd libadwaita libxmlb elogind))
> +    (synopsis "Manage firmware on devices")
'Manage' is a word that does not really with low signal-to-noise
ratio. Would there be a way to rephrase this?

> +    (description
> +     "This package provides integration of firmware manager:
> +   @itemize
> +@item Upgrade, Downgrade, & Reinstall firmware on devices supported by fwupd.
> +@item Unlock locked fwupd devices
> +@item Verify firmware on supported devices
> +@item Display all releases for a fwupd device
Releases of what? What's a fwupd device? 

Thanks for the patches!
- Jelle





Information forwarded to guix-patches <at> gnu.org:
bug#60699; Package guix-patches. (Tue, 10 Jan 2023 12:07:02 GMT) Full text and rfc822 format available.

Message #11 received at 60699 <at> debbugs.gnu.org (full text, mbox):

From: phodina <phodina <at> protonmail.com>
To: Jelle Licht <jlicht <at> fsfe.org>
Cc: Ludovic Courtès <ludo <at> gnu.org>, 60699 <at> debbugs.gnu.org
Subject: Re: [bug#60699] [PATCH 1/2] gnu: Add fwupd service.
Date: Tue, 10 Jan 2023 12:06:18 +0000
[Message part 1 (text/plain, inline)]
Hi Jelle,

I've tested the fwupd on my Asus Zenbook machine - see the attached screenshot.

Without the service running the gnome-firmware or fwupdtool didn't work.

With the service running I get some information about the firmware, EFI... It hasn't been battle tested by updating anything as the firmware there is the latest.

I've also tried adding polkit extension but it seems to run without it in my case. Could you please test the patch if it works also for you, if not we can add it :-)

Check the rewritten synposis for gnome-firmware.


----
Petr

[v2-0002-gnu-Add-gnome-firmware.patch (text/x-patch, attachment)]

Information forwarded to guix-patches <at> gnu.org:
bug#60699; Package guix-patches. (Wed, 11 Jan 2023 14:32:02 GMT) Full text and rfc822 format available.

Message #14 received at 60699 <at> debbugs.gnu.org (full text, mbox):

From: Jelle Licht <jlicht <at> fsfe.org>
To: phodina <phodina <at> protonmail.com>
Cc: Ludovic Courtès <ludo <at> gnu.org>, 60699 <at> debbugs.gnu.org
Subject: Re: [bug#60699] [PATCH 1/2] gnu: Add fwupd service.
Date: Wed, 11 Jan 2023 15:31:24 +0100
phodina <phodina <at> protonmail.com> writes:

> Hi Jelle,
>
> I've tested the fwupd on my Asus Zenbook machine - see the attached screenshot.
>
> Without the service running the gnome-firmware or fwupdtool didn't work.
>
> With the service running I get some information about the firmware, EFI... It hasn't been battle tested by updating anything as the firmware there is the latest.
>
> I've also tried adding polkit extension but it seems to run without it in my case. Could you please test the patch if it works also for you, if not we can add it :-)
>

From my system logs:
--8<---------------cut here---------------start------------->8---
Jan 11 15:17:09 localhost shepherd[1]: [fwupd] 14:17:09:0330 FuMain
another service has claimed the dbus name org.freedesktop.fwupd
Jan 11 15:17:09 localhost shepherd[1]: Respawning fwupd.
--8<---------------cut here---------------end--------------->8---
(and this repeated till shepherd disables the fwupd service).

Note that 'another service has claimed the dbus name' seems to be a
misleading error message:

Running `sudo herd enable fwupd', `sudo herd start fwupd', while paying
attention to the output of `sudo dbus-monitor --system' (/w `guix shell
dbus') in another terminal:

--8<---------------cut here---------------start------------->8---
method call time=1673446874.805907 sender=:1.162 -> destination=org.freedesktop.DBus serial=645 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RequestName
   string "org.freedesktop.fwupd"
   uint32 3
error time=1673446874.805914 sender=org.freedesktop.DBus -> destination=:1.162 error_name=org.freedesktop.DBus.Error.AccessDenied reply_serial=645
   string "Connection ":1.162" is not allowed to own the service "org.freedesktop.fwupd" due to security policies in the configuration file"
--8<---------------cut here---------------end--------------->8---

WDYT about adding a system test that verifies that fwupd can be started?
Then we will know whether it's an anomaly on either of our respective
machines :-). 

Additionally, would you be able to write documentation for the new
service as well?

> Check the rewritten synposis for gnome-firmware.
LGTM.

Thanks!
- Jelle




Added tag(s) moreinfo. Request was from Maxim Cournoyer <maxim.cournoyer <at> gmail.com> to control <at> debbugs.gnu.org. (Tue, 21 Mar 2023 20:25:02 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#60699; Package guix-patches. (Fri, 11 Apr 2025 20:04:02 GMT) Full text and rfc822 format available.

Message #19 received at 60699 <at> debbugs.gnu.org (full text, mbox):

From: Rutherther <rutherther <at> ditigal.xyz>
To: 60699 <at> debbugs.gnu.org
Cc: Jelle Licht <jlicht <at> fsfe.org>, phodina <phodina <at> protonmail.com>,
 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Subject: Re: [PATCH 1/2] gnu: Add fwupd service.
Date: Fri, 11 Apr 2025 22:03:25 +0200
Hello,

I think it doesn't make much sense to make a shepherd service for fwupd.
Fwupd runs through dbus, so it can just be a dbus service. Then dbus
starts it on demand. Currently the package doesn't have the service
file, because it outputs it only when it has elogind in inputs. This
patch https://issues.guix.gnu.org/77752 fixes that. It also fixes check
for missing polkit policykit.

I think that fwupd service should:
- extend dbus root service type with (configurable) fwupd package
- extend polkit service type with (configurable) fwupd package

I will submit service like that in a few days.

For now, this can be used in one's config to make it work properly:
```
(simple-service 'dbus-fwupd
                dbus-root-service-type
                (list fwupd))
(simple-service 'polkit-fwupd
                polkit-service-type
                (list fwupd))
```
Polkit extension is needed only for fwupdmgr, not for fwupdtool,
this is also why fwupdmgr can be used without as non-root,
contrary to fwupdtool that needs root.
Dbus is needed for both for usage of all actions, some actions of
fwupdtool seem to not require it.

Regards,
Rutherther




This bug report was last modified 64 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.