unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: phodina via Guix-patches via <guix-patches@gnu.org>
To: Florian <florhizome@posteo.net>
Cc: "59683@debbugs.gnu.org" <59683@debbugs.gnu.org>,
	"Ludovic Courtès" <ludo@gnu.org>
Subject: [bug#59683] [PATCH] gnu: Add bolt
Date: Tue, 20 Dec 2022 20:51:48 +0000	[thread overview]
Message-ID: <jI9EAfYg5RiNAMU10wE9DdvQs3NbO-I_5Mv1f8xZUgOLdCSXjN8WdTa4eVRzb1QIoJkz1nO1FY0RwvWS8NGd4uZjUvwIY9QuRzcruoWVIwY=@protonmail.com> (raw)
In-Reply-To: <87y1r2m2fy.fsf@posteo.net>

[-- Attachment #1: Type: text/plain, Size: 1701 bytes --]

I've tried to simplify the service.

However, for some reason the client boltctl does not work. It is restarted under different PID and the service does not fail.

$ boltctl list
boltctl: error: could not create client: Error calling StartServiceByName for org.freedesktop.bolt: Failed to activate service 'org.freedesktop.bolt': timed out (service_start_timeout=25000ms)

$ ps aux | grep boltd
root     20923  0.0  0.0 230592  6744 ?        Dsl  21:24   0:00 /gnu/store/fhngddf8yfqsby06mwjbs99s1s83jh68-bolt-0.9.4/libexec/boltd
pethod   20935  0.0  0.0   6528  1864 pts/6    S+   21:24   0:00 grep --color=auto boltd
$ ps aux | grep boltd
root     22821  0.0  0.0 230592  6492 ?        Ssl  21:33   0:00 /gnu/store/fhngddf8yfqsby06mwjbs99s1s83jh68-bolt-0.9.4/libexec/boltd
pethod   22979  0.0  0.0   6516  1988 pts/6    S+   21:33   0:00 grep --color=auto boltd
$ ps aux | grep boltd
root     22980  0.0  0.0 230592  8672 ?        Dsl  21:33   0:00 /gnu/store/fhngddf8yfqsby06mwjbs99s1s83jh68-bolt-0.9.4/libexec/boltd
pethod   23102  0.0  0.0   6504  1988 pts/6    S+   21:33   0:00 grep --color=auto boltd

$ ls /var/log/bolt*
ls: cannot access '/var/log/bolt*': No such file or directory

Here's a standalone file which I currently use for testing, will put it back to Guix repo.

Second attached file is the daemon running by launching it manually. For some reason it stops.

I'll also add the paragraph with description.

Also the service has to run with higher priviledges [1].

As this service reuqires HW does it make sense to write test? Maybe to check if it is launched, right?

1 https://github.com/gicmo/bolt/blob/master/data/bolt.service.in#L25

----
Petr

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: bolt.scm --]
[-- Type: text/x-scheme; name=bolt.scm, Size: 4774 bytes --]

;;; GNU Guix --- Functional package management for GNU
;;;
;;; 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 (bolt)
  #:use-module (gnu services)
  #:use-module (gnu services base)
  #:use-module (gnu services configuration)
  #:use-module (gnu services linux)
  #:use-module (gnu services shepherd)
  #:use-module (gnu services dbus)
  #:use-module (gnu services admin)
  #:use-module (gnu system shadow)
  #:use-module (gnu system pam)
  #:use-module ((gnu system file-systems)
                #:select (file-system-mapping))
  #:use-module (gnu packages admin)
  #:use-module (gnu packages base)
  #:use-module (gnu packages bash)
  #:use-module (gnu packages cluster)
  #:use-module (gnu packages connman)
  #:use-module (gnu packages freedesktop)
  #:use-module (gnu packages linux)
  #:use-module (gnu packages firmware)
  #:use-module (nongnu packages firmware)
  #:use-module (gnu packages tor)
  #:use-module (gnu packages usb-modeswitch)
  #:use-module (gnu packages messaging)
  #:use-module (gnu packages networking)
  #:use-module (gnu packages ntp)
  #:use-module (gnu packages gnome)
  #:use-module (gnu packages ipfs)
  #:use-module (gnu build linux-container)
  #:use-module (guix gexp)
  #:use-module (guix records)
  #:use-module (guix modules)
  #:use-module (guix packages)
  #:use-module (guix deprecation)
  #:use-module (guix diagnostics)
  #:use-module (guix i18n)
  #:use-module (rnrs enums)
  #:use-module (srfi srfi-1)
  #:use-module (srfi srfi-9)
  #:use-module (srfi srfi-26)
  #:use-module (srfi srfi-43)
  #:use-module (ice-9 match)
  #:use-module (json)
  #:export (bolt-configuration bolt-configuration? bolt-service-type))

;;
;;; Thunderbolt daemon.
;;;

(define-record-type* <bolt-configuration> bolt-configuration
                     make-bolt-configuration
  bolt-configuration?
  (package
    bolt-configuration-package ;package
    (default bolt)))

(define (bolt-shepherd-service config)
  (list (shepherd-service (documentation "Thunderbolt daemon")
                          (provision '(bolt))
                          (requirement '(dbus-system udev))
                          (start #~(make-forkexec-constructor '(#$(file-append
                                                                   (bolt-configuration-package
                                                                    config)
                                                                   "/libexec/boltd")
                                                                "-v")
                                    #:log-file "/var/log/bolt.log"))
                          (stop #~(make-kill-destructor)))))

(define %bolt-activation
  #~(begin
      (use-modules (guix build utils))
      (mkdir-p "/var/lib/boltd/")))

(define (bolt-dbus-service config)
  (list (wrapped-dbus-service (bolt-configuration-package config)
                              "libexec/boltd"
                              `(("BOLT_CONF_FILE_NAME" ,(file-append (bolt-configuration-package
                                                                      config)
                                                         "/share/dbus-1/interfaces/org.freedesktop.bolt.xml"))))))
(define bolt-service-type
  (service-type (name 'boltd)
                (description
                 "Thunderbolt daemon manages the devices attached to the Thunderbolt
interface.")
                (extensions (list (service-extension udev-service-type
                                                     (compose list
                                                      bolt-configuration-package))
                                  (service-extension dbus-root-service-type
                                                     bolt-dbus-service)
                                  (service-extension activation-service-type
                                                     (const %bolt-activation))
                                  (service-extension
                                   shepherd-root-service-type
                                   bolt-shepherd-service)))
                (default-value (bolt-configuration))))

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: boltd.log --]
[-- Type: text/x-log; name=boltd.log, Size: 6203 bytes --]

sudo -E /gnu/store/fhngddf8yfqsby06mwjbs99s1s83jh68-bolt-0.9.4/libexec/boltd -v
Password:
21:48:06 bolt 0.9.4 starting up.
21:48:06 session id is 494c9e5eabb3603dc834c96614eefaaf
21:48:06 dbus: got the bus [org.freedesktop.bolt]
21:48:06 dbus: installed prop: Version -> version [native]
21:48:06 dbus: installed prop: Probing -> probing [native]
21:48:06 dbus: installed prop: DefaultPolicy -> default-policy [enum-as-string]
21:48:06 dbus: installed prop: SecurityLevel -> security-level [enum-as-string]
21:48:06 dbus: installed prop: AuthMode -> auth-mode [flags-as-string]
21:48:06 dbus: installed prop: PowerState -> power-state [enum-as-string]
21:48:06 dbus: installed prop: Generation -> generation [native]
21:48:06 manager: initializing store
21:48:06 _g_io_module_get_default: Found default implementation local (GLocalVfs) for ‘gio-vfs’
21:48:06 store: located at: /var/lib/boltd
21:48:06 store: needs init: no
21:48:06 config: loading user config
21:48:06 bouncer: initializing polkit
21:48:06 udev: initializing udev
21:48:06 store: loading domains
21:48:06 [c2010000-0082-domain?          ] store: loading domain
21:48:06 dbus: installed prop: Uid -> uid [native]
21:48:06 dbus: installed prop: Id -> id [native]
21:48:06 dbus: installed prop: SysfsPath -> syspath [native]
21:48:06 dbus: installed prop: SecurityLevel -> security [enum-as-string]
21:48:06 dbus: installed prop: BootACL -> bootacl [native]
21:48:06 dbus: installed prop: IOMMU -> iommu [native]
21:48:06 journal: opened for 'c2010000-0082'; size: 0 bytes
21:48:06 journal: fresh: yes, fd: 8
21:48:06 [c2010000-0082-domain?          ] domain: registered (bootacl: 16/16)
21:48:06 store: loading devices
21:48:06 [c2010000-0082                  ] store: loading device
21:48:06 dbus: installed prop: Uid -> uid [native]
21:48:06 dbus: installed prop: Name -> name [native]
21:48:06 dbus: installed prop: Vendor -> vendor [native]
21:48:06 dbus: installed prop: Generation -> generation [native]
21:48:06 dbus: installed prop: Type -> type [enum-as-string]
21:48:06 dbus: installed prop: Status -> status [enum-as-string]
21:48:06 dbus: installed prop: AuthFlags -> authflags [flags-as-string]
21:48:06 dbus: installed prop: Parent -> parent [native]
21:48:06 dbus: installed prop: SysfsPath -> sysfs-path [native]
21:48:06 dbus: installed prop: Domain -> domain [object-as-string]
21:48:06 dbus: installed prop: ConnectTime -> conntime [native]
21:48:06 dbus: installed prop: AuthorizeTime -> authtime [native]
21:48:06 dbus: installed prop: LinkSpeed -> linkspeed [native]
21:48:06 dbus: installed prop: Stored -> stored [native]
21:48:06 dbus: installed prop: Policy -> policy [enum-as-string]
21:48:06 dbus: installed prop: Key -> key [enum-as-string]
21:48:06 dbus: installed prop: StoreTime -> storetime [native]
21:48:06 dbus: installed prop: Label -> label [native]
21:48:06 dbus: +adjusted prop: wireconv: LinkSpeed [linkspeed-as-variant]
21:48:06 global 'generation' set to '3'
21:48:06 dbus: installed prop: Supported -> supported [native]
21:48:06 dbus: installed prop: State -> state [enum-as-string]
21:48:06 dbus: installed prop: Timeout -> timeout [native]
21:48:06 power: state located at: /run/boltd/power
21:48:06 power: force power support: yes
21:48:06 udev: found 1 domain
21:48:06 udev: enumerating devices
21:48:06 probing: adding /sys/devices/pci0000:00/0000:00:1c.0/0000:03:00.0 to roots
21:48:13 [c2010000-0082-domain0          ] bootacl: synchronizing journal
21:48:13 [c2010000-0082-domain0          ] bootacl: journal contains 0 entries
21:48:18 [c2010000-0082-domain0          ] bootacl: acl unchanged, not updating
21:48:18 security level set to 'user'
21:48:18 [c2010000-0082-domain0          ] connected: as domain0 [user] (/sys/devices/pci0000:00/0000:00:1c.0/0000:03:00.0/0000:04:00.0/0000:05:00.0/domain0)
21:48:18 [c2010000-0082-Precision 15 5550] status changed: disconnected -> authorized
21:48:18 [c2010000-0082-Precision 15 5550] generation: updated to: 3
21:48:18 [c2010000-0082-Precision 15 5550] parent is (null)...
21:48:18 [c2010000-0082-Precision 15 5550] connected: authorized (/sys/devices/pci0000:00/0000:00:1c.0/0000:03:00.0/0000:04:00.0/0000:05:00.0/domain0/0-0)
21:48:18 store: store is up to date
21:48:18 status: STATUS=authmode: enabled, force-power: unset [sent: no]
21:48:18 dbus: registered object at /org/freedesktop/bolt
21:48:18 dbus: prop object-path change ignored
21:48:18 dbus: prop exported change ignored
21:48:18 dbus: registered object at /org/freedesktop/bolt
21:48:18 dbus: prop object-path change ignored
21:48:18 dbus: prop exported change ignored
21:48:18 dbus: generated object path: /org/freedesktop/bolt/domains/c2010000_0082_841e_032a_348f1ae2e102
21:48:18 dbus: registered object at /org/freedesktop/bolt/domains/c2010000_0082_841e_032a_348f1ae2e102
21:48:18 dbus: prop object-path change ignored
21:48:18 dbus: prop exported change ignored
21:48:18 [c2010000-0082-domain0          ] dbus: exported domain at /org/freedesktop/bolt/domains/c2010000_0082_841e_032a_348f1ae2e102
21:48:18 dbus: generated object path: /org/freedesktop/bolt/devices/c2010000_0082_841e_032a_348f1ae2e102
21:48:18 dbus: registered object at /org/freedesktop/bolt/devices/c2010000_0082_841e_032a_348f1ae2e102
21:48:18 dbus: prop object-path change ignored
21:48:18 dbus: prop exported change ignored
21:48:18 [c2010000-0082-Precision 15 5550] dbus: exported device at /org/freedesktop/bolt/devices/c2010000_0082...
21:48:18 udev: change (thunderbolt/thunderbolt_domain) /sys/devices/pci0000:00/0000:00:1c.0/0000:03:00.0/0000:04:00.0/0000:05:00.0/domain0
21:48:29 [c2010000-0082-domain0          ] bootacl: acl unchanged, not updating
21:48:29 udev: change (thunderbolt/thunderbolt_domain) /sys/devices/pci0000:00/0000:00:1c.0/0000:03:00.0/0000:04:00.0/0000:05:00.0/domain0
21:48:34 [c2010000-0082-domain0          ] bootacl: acl unchanged, not updating
21:48:34 dbus: name lost; shutting down...
21:48:34 dbus: unregistered object at /org/freedesktop/bolt/devices/c2010000_0082_841e_032a_348f1ae2e102: yes
21:48:34 dbus: unregistered object at /org/freedesktop/bolt: yes
21:48:34 dbus: unregistered object at /org/freedesktop/bolt: yes
21:48:34 shutdown complete

  reply	other threads:[~2022-12-20 20:53 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-29 15:32 [bug#59683] [PATCH] gnu: Add bolt florhizome
2022-12-13 12:52 ` [bug#59683] Bolt package phodina via Guix-patches via
2022-12-14 11:24   ` [bug#59683] [PATCH] gnu: Add bolt Ludovic Courtès
2022-12-20 17:04     ` Florian
2022-12-20 20:51       ` phodina via Guix-patches via [this message]
2022-12-25 16:22         ` Ludovic Courtès
2022-12-25 17:33           ` phodina via Guix-patches via
2023-01-16 13:36     ` bug#59683: " Maxim Cournoyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='jI9EAfYg5RiNAMU10wE9DdvQs3NbO-I_5Mv1f8xZUgOLdCSXjN8WdTa4eVRzb1QIoJkz1nO1FY0RwvWS8NGd4uZjUvwIY9QuRzcruoWVIwY=@protonmail.com' \
    --to=guix-patches@gnu.org \
    --cc=59683@debbugs.gnu.org \
    --cc=florhizome@posteo.net \
    --cc=ludo@gnu.org \
    --cc=phodina@protonmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).