Subject: [PATCH 1/4] gnu: Add rust-cpuprofiler-0.0.4.

  • Done
  • quality assurance status badge
Details
2 participants
  • Efraim Flashner
  • phodina
Owner
unassigned
Submitted by
phodina
Severity
normal
P
P
phodina wrote on 14 Oct 2021 00:07
(name . guix-patches@gnu.org)(address . guix-patches@gnu.org)
z5j7TKb8VrWU9lXZ7vQfuQqPDC8KK9CJECAEKOu76TomEMrzKlXqeGIxxazbhfty5UwM3IPIaIspta3OggHKqYX38hG64suNvbhyehsKGYI=@protonmail.com
Hi,

these patches add tool similar to i3status, polybar, etc which is used in WM like i3 or sway to display the contents of the bars.

This one is written in Rust and can be used under Wayland and X11. Therefore I placed it into the rust-apps.scm rather than wm.scm. But I'm open to critical review :-)

Petr

Toggle snippet (50 lines)
* gnu/packages/crates-io.scm (rust-cpuprofiler-0.0.4): New variable.

diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 089b9f456c..5fb7bd9e69 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -46,6 +46,7 @@
#:use-module (gnu packages admin)
#:use-module (gnu packages cmake)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages cpp)
#:use-module (gnu packages crates-graphics)
#:use-module (gnu packages crates-gtk)
#:use-module (gnu packages crypto)
@@ -10461,6 +10462,32 @@ to the @code{is_x86_feature_detected!} macro.")
to @code{is_x86_feature_detected}.")
(license (list license:expat license:asl2.0))))

+(define-public rust-cpuprofiler-0.0.4
+ (package
+ (name "rust-cpuprofiler")
+ (version "0.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "cpuprofiler" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "0az588yyl9r13w4k7xfdh5ckfaq52fwpjry2q2hblazxpjflgy23"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs
+ (("rust-error-chain" ,rust-error-chain-0.12)
+ ("rust-lazy-static" ,rust-lazy-static-1)
+ ("rust-pkg-config" ,rust-pkg-config-0.3))))
+ (inputs `(("gperftools" ,gperftools)))
+ (home-page
+ "https://github.com/AtheMathmo/cpuprofiler")
+ (synopsis "Bindings to google's cpu profiler")
+ (description "Bindings to google's cpu profiler")
+ (license license:bsd-2)))
+
(define-public rust-crates-index-0.13
(package
(name "rust-crates-index")
--
2.33.0
P
P
phodina wrote on 14 Oct 2021 00:10
Subject: [PATCH 2/4] gnu: Add rust-libpulse-sys-1.
(name . 51193@debbugs.gnu.org)(address . 51193@debbugs.gnu.org)
n3hNWGWRnKhwRmBklOGKgVcs9Rs7Xz6JH2bDvGM0nmX-Z8iRW5njAsezSPJVsQynafdYsOLrbeKXnhgXabekU1WtBVaz0tMRXupIahJcVXE=@protonmail.com
* gnu/packages/crates-io.scm (rust-libpulse-sys-1): New variable.

Toggle diff (53 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 5fb7bd9e69..c5703804df 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -64,6 +64,7 @@
#:use-module (gnu packages nettle)
#:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages rust)
#:use-module (gnu packages rust-apps)
@@ -25284,6 +25285,40 @@ file.
@end itemize")
(license license:gpl2+)))

+
+(define-public rust-libpulse-sys-1
+ (package
+ (name "rust-libpulse-sys")
+ (version "1.18.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "libpulse-sys" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "10msfr8f951v86ag0fl2bsm4a3siq2r7hz9bqhhg7i234s1yj5yg"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:skip-build? #t
+ #:cargo-inputs
+ (("rust-libc" ,rust-libc-0.2)
+ ("rust-num-derive" ,rust-num-derive-0.3)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-pkg-config" ,rust-pkg-config-0.3)
+ ("rust-winapi" ,rust-winapi-0.3))))
+ (native-inputs `(("pkg-config" ,pkg-config)))
+ (inputs `(("pulseaudio" ,pulseaudio)))
+ (home-page
+ "https://github.com/jnqnfe/pulse-binding-rust")
+ (synopsis
+ "FFI bindings for the PulseAudio")
+ (description
+ "This package provides FFI bindings for the PulseAudio libpulse system
+library.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-libsqlite3-sys-0.22
(package
(name "rust-libsqlite3-sys")
--
2.33.0
P
P
phodina wrote on 14 Oct 2021 00:11
Subject: [PATCH 3/4] gnu: Add rust-libpulse-binding-2.
(address . 51193@debbugs.gnu.org)
cEKxLQHSkoQionfKbuWgVP82V_adgN5M3F6hyhrXbpd8UDm2HaJAmMMtE_e7rmbkqKtccpnCvaCyUgy0_aRF1vCVyNjKgiuyTlvg-hsayHc=@protonmail.com
* gnu/packages/crates-io.scm (rust-libpulse-binding-2): New variable.

Toggle diff (49 lines)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index c5703804df..67aa8f04da 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -25285,6 +25285,44 @@ file.
@end itemize")
(license license:gpl2+)))

+;; https://github.com/jnqnfe/pulse-binding-rust/blob/c788a8069f455f864d2ba5f0aa5f62e6648dfd26/pulse-sys/build.rs
+;; fix location of pulseaudio
+(define-public rust-libpulse-binding-2
+ (package
+ (name "rust-libpulse-binding")
+ (version "2.23.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "libpulse-binding" version))
+ (file-name
+ (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32
+ "1qx85j489mmad9cvw5k71271l3qy4s8a5qq8a9wac6cfi4viz5fv"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs
+ (("rust-bitflags" ,rust-bitflags-1)
+ ("rust-libc" ,rust-libc-0.2)
+ ("rust-libpulse-sys" ,rust-libpulse-sys-1)
+ ("rust-num-derive" ,rust-num-derive-0.3)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-winapi" ,rust-winapi-0.3))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'check 'set-HOME
+ (lambda _ (setenv "HOME" "/tmp") #t)))))
+ (native-inputs `(("pkg-config" ,pkg-config)))
+ (inputs `(("pulseaudio" ,pulseaudio)))
+ (home-page
+ "https://github.com/jnqnfe/pulse-binding-rust")
+ (synopsis
+ "Binding for the PulseAudio libpulse library")
+ (description
+ "This package provides a Rust language binding for the PulseAudio libpulse
+library.")
+ (license (list license:expat license:asl2.0))))

(define-public rust-libpulse-sys-1
(package
--
2.33.0
P
P
phodina wrote on 14 Oct 2021 00:11
Subject: [PATCH 4/4] gnu: Add i3status-rust.
(address . 51193@debbugs.gnu.org)
zCX2XGMerxh7_5Wp17Mgfvbsd6_OuubDCZmODa9WGt3YjT_62519ZkPAQyhGtKtEE4I5h3mta60AQ3X29a6WBTFSVgdUFvQ7JVYsGlKzWP4=@protonmail.com
* gnu/packages/rust-apps.scm (i3status-rust): New variable.
* gnu/packages/patches/i3status-rust-enable-unstable-features.patch: New file.

Toggle diff (135 lines)
diff --git a/gnu/packages/patches/i3status-rust-enable-unstable-features.patch b/gnu/packages/patches/i3status-rust-enable-unstable-features.patch
new file mode 100644
index 0000000000..edbbef7534
--- /dev/null
+++ b/gnu/packages/patches/i3status-rust-enable-unstable-features.patch
@@ -0,0 +1,20 @@
+From 3006390c0058f06c255d9850327163aebcdc3b40 Mon Sep 17 00:00:00 2001
+From: Petr Hodina <phodina@protonmail.com>
+Date: Mon, 11 Oct 2021 22:35:39 +0200
+Subject: [PATCH] Enable unstable features.
+
+
+diff --git a/src/main.rs b/src/main.rs
+index d9e964b..820e22e 100644
+--- a/src/main.rs
++++ b/src/main.rs
+@@ -1,3 +1,6 @@
++#![feature(bool_to_option)]
++#![feature(clamp)]
++
+ #[macro_use]
+ mod de;
+ #[macro_use]
+--
+2.33.0
+
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index 27cd57de8b..39bfc9fba2 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -12,6 +12,7 @@
;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2021 Alexandru-Sergiu Marton <brown121407@posteo.ro>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -34,6 +35,7 @@
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix packages)
+ #:use-module (guix utils)
#:use-module (gnu packages admin)
#:use-module (gnu packages compression)
#:use-module (gnu packages crates-io)
@@ -41,12 +43,14 @@
#:use-module (gnu packages curl)
#:use-module (gnu packages documentation)
#:use-module (gnu packages fontutils)
+ #:use-module (gnu packages glib)
#:use-module (gnu packages gtk)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages linux)
#:use-module (gnu packages ssh)
#:use-module (gnu packages pcre)
#:use-module (gnu packages pkg-config)
+ #:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages rust)
#:use-module (gnu packages tls)
@@ -440,6 +444,73 @@ characters, ASCII whitespace characters, other ASCII characters and non-ASCII.")
"This package provides a command-line benchmarking tool.")
(license (list license:expat license:asl2.0))))

+(define-public i3status-rust
+ (package
+ (name "i3status-rust")
+ (version "0.20.1")
+ (source (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/greshake/i3status-rust")
+ (commit (string-append "v" version))))
+ (file-name (string-append name "-" version))
+ (patches (search-patches "i3status-rust-enable-unstable-features.patch"))
+ (sha256
+ (base32
+ "00gzm3g297s9bfp13vnb623p7dfac3g6cdhz2b3lc6l0kmnnqs1s"))))
+ (build-system cargo-build-system)
+ (native-inputs `(("pkg-config" ,pkg-config)))
+ (inputs `(("dbus" ,dbus)
+ ("pulseaudio" ,pulseaudio)
+ ("zlib" ,zlib)
+ ("openssl" ,openssl)
+ ("curl" ,curl)))
+ (arguments
+ `(#:features '("pulseaudio" "libpulse-binding")
+ #:cargo-inputs
+ (("rust-chrono" ,rust-chrono-0.4)
+ ("rust-chrono-tz" ,rust-chrono-tz-0.5)
+ ("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5)
+ ("rust-curl" ,rust-curl-0.4) ("rust-dbus" ,rust-dbus-0.9)
+ ("rust-dbus-tree" ,rust-dbus-tree-0.9)
+ ("rust-lazy-static" ,rust-lazy-static-1)
+ ("rust-nix" ,rust-nix-0.20)
+ ("rust-nl80211" ,rust-nl80211-0.0.2)
+ ("rust-serde" ,rust-serde-1)
+ ("rust-serde-derive" ,rust-serde-derive-1)
+ ("rust-serde-json" ,rust-serde-json-1)
+ ("rust-signal-hook" ,rust-signal-hook-0.3)
+ ("rust-swayipc" ,rust-swayipc-2)
+ ("rust-toml" ,rust-toml-0.5)
+ ("rust-cpuprofiler" ,rust-cpuprofiler-0.0.4)
+ ("rust-inotify" ,rust-inotify-0.9)
+ ("rust-libpulse-binding" ,rust-libpulse-binding-2)
+ ("rust-maildir" ,rust-maildir-0.5)
+ ("rust-notmuch" ,rust-notmuch-0.6)
+ ("rust-progress" ,rust-progress-0.2)
+ ("rust-assert-fs" ,rust-assert-fs-1))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-resources-path
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((resources (string-append %output "/share")))
+ (substitute* "src/util.rs" (("/usr/share/i3status-rust") resources)))))
+ (add-after 'install 'install-resources
+ (lambda* (#:key outputs #:allow-other-keys)
+ (copy-recursively "files" (string-append %output "/share"))#t))
+ (add-after 'unpack 'enable-unstable-features
+ (lambda _
+ (setenv "RUSTC_BOOTSTRAP" "1")
+ #t)))))
+ (synopsis "i3status, written in pure Rust")
+ (description "i3status-rs is a feature-rich and resource-friendly replacement
+for i3status, written in pure Rust. It provides a way to display 'blocks' of
+system information (time, battery status, volume, etc) on the i3 bar. It is also
+compatible with sway.")
+ (home-page "https://github.com/greshake/i3status-rust")
+ (license license:gpl3)))
+
(define-public ripgrep
(package
(name "ripgrep")
--
2.33.0
E
E
Efraim Flashner wrote on 8 Nov 2021 09:55
Re: [bug#51193] Subject: [PATCH 1/4] gnu: Add rust-cpuprofiler-0.0.4.
(address . 51193-done@debbugs.gnu.org)
YYjmEj+8MSAWSwiw@3900XT
I pushed these patches and forgot to close the bug. Patches pushed!

--
Efraim Flashner <efraim@flashner.co.il> ????? ?????
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmGI5hIACgkQQarn3Mo9
g1FI+g/+MDLwsr+rDn/EGNDf5PKxSNM7UDmDur9nOqy44cQ0n783cn5SqxuXZHf5
aqyf4Ierzkv/nDYyQIVwg83L6+HlQZ/21TKrcCL3+DKF/8rEEknxYbSU4ucJov4i
0MiPxmZ1jD05lBeb0EZQq7GdWjgGbCyjEVX6BBiNQprlFf6K4FLolmWNteT0mT/C
dakAbDMYZ2cY3c7lhwM5AyUDYEBFCXpDFKCZhd0320VQZ1kfpASC0x0pQdpBTfRz
aO0KP6ZpZ5DKw2fOd6hlluUV/JhK/O3Lwy5LtiG861oIirxp+CvvJAV/+ZCAC7tp
arVZti5Ene/Kvq1CRa+yWSlBqqHMpU5SSeHG3uUfpAevIk4mpK0YrGoSBErKE3e3
+bgkaWC+2wiJmf9/9TgpARTI5icueuo5bBnyeLSl6/kffuc7NIQiLwGjGcZA2VN5
eKRE0GgN4t9bJtVEKrPE68V8c5ROpRnHtkNoqroImQrOKERy4CzqocZRJTANBdH8
L4KtZkhXlRaSUs+7mHAQ8qsK4g/f7oJXfSu7Vz8NcS4w4STHUei7+O5Q16/VqaLx
UcF9i5Qz9ueEOKFhimYfQdPxnrLuJRCSabuYnEkp4ItYCWja1HtXiGecUzW7NAoz
DGZXZXv5J7c+Ja9h09YohK6vRK0GqA0+NRERMX3WxupXuD54n9Q=
=2DAd
-----END PGP SIGNATURE-----


Closed
P
P
phodina wrote on 8 Nov 2021 18:34
[PATCH] gnu: Update i3status-rust.
(address . 51193@debbugs.gnu.org)
Qg7Xh9MHcgV-KB8IjAuXMBiaurI57CCZOpRU0a9ZviCieM7pukcmh-1Vgz3nMiuJU8vXYjtaLdH5ANpvRjouklanKWqkrnTr4nsiHkDaxw8=@protonmail.com
Hi Efraim,

Thanks for upstreaming.

Unfortunately I discovered some missing inputs when using full config file, not just dummy (only time and disks).

Also checked the source code and the Rust code invokes commands. This looks like it would need also wrap-program, right?

Here's a list:

* gnu/packages/rust-apps (i3status-rust)[inputs]: Add alsa-utils and setxkbmap.

----8<----------cut here--------->8---
Toggle diff (49 lines)
diff --git a/gnu/packages/rust-apps.scm b/gnu/packages/rust-apps.scm
index be60f3f376..2f05b313d6 100644
--- a/gnu/packages/rust-apps.scm
+++ b/gnu/packages/rust-apps.scm
@@ -55,7 +55,8 @@ (define-module (gnu packages rust-apps)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages rust)
#:use-module (gnu packages tls)
- #:use-module (gnu packages version-control))
+ #:use-module (gnu packages version-control)
+ #:use-module (gnu packages xorg))

(define-public agate
(package
@@ -450,23 +451,25 @@ (define-public i3status-rust
(name "i3status-rust")
(version "0.20.1")
(source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/greshake/i3status-rust")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (patches (search-patches "i3status-rust-enable-unstable-features.patch"))
- (sha256
- (base32 "00gzm3g297s9bfp13vnb623p7dfac3g6cdhz2b3lc6l0kmnnqs1s"))))
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/greshake/i3status-rust")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (patches (search-patches "i3status-rust-enable-unstable-features.patch"))
+ (sha256
+ (base32 "00gzm3g297s9bfp13vnb623p7dfac3g6cdhz2b3lc6l0kmnnqs1s"))))
(build-system cargo-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("curl" ,curl)
+ ("alsa-utils" ,alsa-utils)
("dbus" ,dbus)
("pulseaudio" ,pulseaudio)
("openssl" ,openssl)
+ ("setxkbmap" ,setxkbmap)
("zlib" ,zlib)))
(arguments
`(#:features '("pulseaudio" "libpulse-binding")
--
2.33.1
?