unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [bug#74120] [PATCH] gnu: Add rust-speakersafetyd-1.
@ 2024-10-30 19:41 Roman Scherer
  2024-11-03 20:48 ` Nicolas Graves via Guix-patches via
  2024-11-06 17:08 ` [bug#74120] [PATCH v2] " Roman Scherer
  0 siblings, 2 replies; 4+ messages in thread
From: Roman Scherer @ 2024-10-30 19:41 UTC (permalink / raw)
  To: 74120; +Cc: Roman Scherer, Efraim Flashner

* gnu/packages/crates-io.scm (rust-speakersafetyd-1): New variable.

Change-Id: I02eb6e0c23fd04cff86b67ed30e8867af07a724b
---
 gnu/packages/crates-io.scm | 55 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index c08ccd29fd..83b543f552 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -73271,6 +73271,61 @@ (define-public rust-sourcemap-6
     (description "This package provides basic sourcemap handling for Rust.")
     (license license:bsd-3)))
 
+(define-public rust-speakersafetyd-1
+  (package
+    (name "rust-speakersafetyd")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "speakersafetyd" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1dvyj194niz5i4rldsqvjmz8j7df9w9qpvf9rwg3vsnzc2mjh0zg"))))
+    (build-system cargo-build-system)
+    (arguments
+     `(#:cargo-inputs (("rust-alsa" ,rust-alsa-0.8)
+                       ("rust-chrono" ,rust-chrono-0.4)
+                       ("rust-clap" ,rust-clap-4)
+                       ("rust-clap-verbosity-flag" ,rust-clap-verbosity-flag-2)
+                       ("rust-configparser" ,rust-configparser-3)
+                       ("rust-json" ,rust-json-0.12)
+                       ("rust-libc" ,rust-libc-0.2)
+                       ("rust-log" ,rust-log-0.4)
+                       ("rust-signal-hook" ,rust-signal-hook-0.3)
+                       ("rust-simple-logger" ,rust-simple-logger-1))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'fix-paths
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "src/main.rs"
+               (("share/speakersafetyd") "share")
+               (("/usr/local") (assoc-ref outputs "out")))))
+         (add-after 'unpack 'remove-systemd-udev-rules
+           (lambda _
+             (substitute* "95-speakersafetyd.rules"
+               ((".*SYSTEMD_WANTS.*") ""))))
+         (add-after 'install 'install-conf
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((target (string-append (assoc-ref outputs "out") "/share")))
+               (copy-recursively "conf" target))))
+         (add-after 'install 'install-udev-rules
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let ((out (assoc-ref outputs "out")))
+               (mkdir-p (string-append out "/lib/udev/rules.d"))
+               (copy-file "95-speakersafetyd.rules"
+                          (string-append out
+                                         "/lib/udev/rules.d/"
+                                         "95-speakersafetyd.rules"))))))))
+    (inputs (list alsa-lib))
+    (native-inputs (list pkg-config))
+    (home-page "https://github.com/AsahiLinux/speakersafetyd/")
+    (synopsis "Speaker protection daemon")
+    (description "Speakersafetyd is a userspace daemon written in Rust that
+implements an analogue of the Texas Instruments Smart Amp speaker protection
+model.")
+    (license license:expat)))
+
 (define-public rust-special-0.8
   (package
     (name "rust-special")

base-commit: d6f775c30c6f47e174f6110d1089edc6315600e4
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [bug#74120] [PATCH] gnu: Add rust-speakersafetyd-1.
  2024-10-30 19:41 [bug#74120] [PATCH] gnu: Add rust-speakersafetyd-1 Roman Scherer
@ 2024-11-03 20:48 ` Nicolas Graves via Guix-patches via
  2024-11-06 17:15   ` Roman Scherer
  2024-11-06 17:08 ` [bug#74120] [PATCH v2] " Roman Scherer
  1 sibling, 1 reply; 4+ messages in thread
From: Nicolas Graves via Guix-patches via @ 2024-11-03 20:48 UTC (permalink / raw)
  To: Roman Scherer, 74120; +Cc: Roman Scherer, Efraim Flashner

Hi Roman,

Just so you know, you can probably use gexpressions for the phases, this
would make it easier to read.

Can you resend a revised patch?  Thanks!

-- 
Best regards,
Nicolas Graves




^ permalink raw reply	[flat|nested] 4+ messages in thread

* [bug#74120] [PATCH v2] gnu: Add rust-speakersafetyd-1.
  2024-10-30 19:41 [bug#74120] [PATCH] gnu: Add rust-speakersafetyd-1 Roman Scherer
  2024-11-03 20:48 ` Nicolas Graves via Guix-patches via
@ 2024-11-06 17:08 ` Roman Scherer
  1 sibling, 0 replies; 4+ messages in thread
From: Roman Scherer @ 2024-11-06 17:08 UTC (permalink / raw)
  To: 74120; +Cc: Roman Scherer, Efraim Flashner

* gnu/packages/crates-io.scm (rust-speakersafetyd-1): New variable.

Change-Id: I02eb6e0c23fd04cff86b67ed30e8867af07a724b
---
 gnu/packages/crates-io.scm | 52 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 52 insertions(+)

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index c08ccd29fd..22b28e0845 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -73271,6 +73271,58 @@ (define-public rust-sourcemap-6
     (description "This package provides basic sourcemap handling for Rust.")
     (license license:bsd-3)))
 
+(define-public rust-speakersafetyd-1
+  (package
+    (name "rust-speakersafetyd")
+    (version "1.0.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (crate-uri "speakersafetyd" version))
+       (file-name (string-append name "-" version ".tar.gz"))
+       (sha256
+        (base32 "1dvyj194niz5i4rldsqvjmz8j7df9w9qpvf9rwg3vsnzc2mjh0zg"))))
+    (build-system cargo-build-system)
+    (arguments
+     (list
+      #:cargo-inputs `(("rust-alsa" ,rust-alsa-0.8)
+                       ("rust-chrono" ,rust-chrono-0.4)
+                       ("rust-clap" ,rust-clap-4)
+                       ("rust-clap-verbosity-flag" ,rust-clap-verbosity-flag-2)
+                       ("rust-configparser" ,rust-configparser-3)
+                       ("rust-json" ,rust-json-0.12)
+                       ("rust-libc" ,rust-libc-0.2)
+                       ("rust-log" ,rust-log-0.4)
+                       ("rust-signal-hook" ,rust-signal-hook-0.3)
+                       ("rust-simple-logger" ,rust-simple-logger-1))
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'fix-paths
+            (lambda _
+              (substitute* "src/main.rs"
+                (("/usr/local") #$output))))
+          (add-after 'unpack 'remove-systemd-udev-rules
+            (lambda _
+              (substitute* "95-speakersafetyd.rules"
+                ((".*SYSTEMD_WANTS.*") ""))))
+          (add-after 'install 'install-data
+            (lambda _
+              (setenv "BINDIR" (string-append #$output "/bin"))
+              (setenv "UNITDIR" (string-append #$output "/lib/systemd/system"))
+              (setenv "UDEVDIR" (string-append #$output "/lib/udev/rules.d"))
+              (setenv "TMPFILESDIR" (string-append #$output "/usr/lib/tmpfiles.d"))
+              (setenv "SHAREDIR" (string-append #$output "/usr/share"))
+              (setenv "VARDIR" (string-append #$output "/var"))
+              (invoke "make" "install-data"))))))
+    (inputs (list alsa-lib))
+    (native-inputs (list pkg-config))
+    (home-page "https://github.com/AsahiLinux/speakersafetyd/")
+    (synopsis "Speaker protection daemon")
+    (description "Speakersafetyd is a userspace daemon written in Rust that
+implements an analogue of the Texas Instruments Smart Amp speaker protection
+model.")
+    (license license:expat)))
+
 (define-public rust-special-0.8
   (package
     (name "rust-special")

base-commit: 54f82bcf22178d89140a131332a9e036ac386657
-- 
2.46.0





^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [bug#74120] [PATCH] gnu: Add rust-speakersafetyd-1.
  2024-11-03 20:48 ` Nicolas Graves via Guix-patches via
@ 2024-11-06 17:15   ` Roman Scherer
  0 siblings, 0 replies; 4+ messages in thread
From: Roman Scherer @ 2024-11-06 17:15 UTC (permalink / raw)
  To: Nicolas Graves; +Cc: Roman Scherer, 74120, Efraim Flashner

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

Nicolas Graves <ngraves@ngraves.fr> writes:

Hi Nicolas,

thanks for the review. I sent a v2 where I now use g-expressions and use
the install-data target from the Makefile to install files.

I tested this with this speakersafteyd service which I'm going to send
soon as well. I paste it here to maybe double check the paths I plan to
use in the service.

----------------------------------------------------------------------

(define-module (asahi guix services speakersafetyd)
  #:use-module (asahi guix packages crates-io)
  #:use-module (gnu services base)
  #:use-module (gnu services shepherd)
  #:use-module (gnu services)
  #:use-module (guix gexp)
  #:use-module (guix records)
  #:export (speakersafetyd-service-type))

(define-record-type* <speakersafetyd-configuration>
  speakersafetyd-configuration
  make-speakersafetyd-configuration
  speakersafetyd-configuration?
  (config-path speakersafetyd-configuration-config-path
               (default "/usr/share/speakersafetyd"))
  (blackbox speakersafetyd-configuration-blackbox
            (default "/var/lib/speakersafetyd/blackbox"))
  (max-reduction speakersafetyd-configuration-max-reduction
                 (default 7))
  (package speakersafetyd-configuration-package
           (default rust-speakersafetyd-1)))

(define (speakersafetyd-shepherd-service config)
  (let ((blackbox (speakersafetyd-configuration-blackbox config))
        (config-path (speakersafetyd-configuration-config-path config))
        (max-reduction (speakersafetyd-configuration-max-reduction config))
        (package (speakersafetyd-configuration-package config)))
    (list (shepherd-service
           (documentation "Speaker saftey daemon")
           (provision '(speakersafetyd))
           (requirement '(udev))
           (start #~(make-forkexec-constructor
                     (list #$(file-append package "/bin/speakersafetyd")
                           "--config-path" #$(file-append package config-path)
                           "--blackbox-path" #$blackbox
                           "--max-reduction" (number->string #$max-reduction))))
           (stop #~(make-kill-destructor))))))

(define speakersafetyd-service-type
  (service-type
   (name 'speakersafetyd)
   (description "Speaker saftey daemon")
   (extensions
    (list (service-extension
           profile-service-type
           (compose list speakersafetyd-configuration-package))
          (service-extension
           shepherd-root-service-type
           speakersafetyd-shepherd-service)
          (service-extension
           udev-service-type
           (compose list speakersafetyd-configuration-package))))
   (default-value (speakersafetyd-configuration))))

----------------------------------------------------------------------

Could you have another look, please?

Thanks, Roman.

> Hi Roman,
>
> Just so you know, you can probably use gexpressions for the phases, this
> would make it easier to read.
>
> Can you resend a revised patch?  Thanks!

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 519 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2024-11-06 17:17 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-30 19:41 [bug#74120] [PATCH] gnu: Add rust-speakersafetyd-1 Roman Scherer
2024-11-03 20:48 ` Nicolas Graves via Guix-patches via
2024-11-06 17:15   ` Roman Scherer
2024-11-06 17:08 ` [bug#74120] [PATCH v2] " Roman Scherer

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).