* [bug#71064] [PATCH 1/7] gnu: Add rust-libc-0.2.153.
2024-05-19 12:34 [bug#71064] [PATCH 0/7] Nsncd: Introduce package + nscd service update picnoir
@ 2024-05-19 12:46 ` picnoir
2024-05-19 12:46 ` [bug#71064] [PATCH 2/7] gnu: Add rust-nix-0.28 picnoir
` (6 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: picnoir @ 2024-05-19 12:46 UTC (permalink / raw)
To: 71064; +Cc: Picnoir, Efraim Flashner
From: Picnoir <picnoir@alternativebit.fr>
* gnu/packages/crates-io.scm (rust-libc-0.2.153): New variable. Required by
rust-nix 0.18.
Change-Id: I95c6663b0262f3e893c38ed51c34176144e4f750
---
gnu/packages/crates-io.scm | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index cce3e8b0b1..e8e643589a 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -33597,6 +33597,19 @@ (define-public rust-libc-0.2
(license (list license:expat
license:asl2.0))))
+(define-public rust-libc-0.2.153
+ (package
+ (inherit rust-libc-0.2)
+ (name "rust-libc")
+ (version "0.2.153")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "libc" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1gg7m1ils5dms5miq9fyllrcp0jxnbpgkx71chd2i0lafa8qy6cw"))))))
+
(define-public rust-libc-print-0.1
(package
(name "rust-libc-print")
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [bug#71064] [PATCH 2/7] gnu: Add rust-nix-0.28.
2024-05-19 12:34 [bug#71064] [PATCH 0/7] Nsncd: Introduce package + nscd service update picnoir
2024-05-19 12:46 ` [bug#71064] [PATCH 1/7] gnu: Add rust-libc-0.2.153 picnoir
@ 2024-05-19 12:46 ` picnoir
2024-05-19 12:46 ` [bug#71064] [PATCH 3/7] gnu: Add rust-dns-lookup-2 picnoir
` (5 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: picnoir @ 2024-05-19 12:46 UTC (permalink / raw)
To: 71064; +Cc: Picnoir, Efraim Flashner
From: Picnoir <picnoir@alternativebit.fr>
* gnu/packages/crates-io.scm (rust-nix-0.28): New variable. Required by Nsncd.
Change-Id: I51964d3be9cfb5e78b727a1a9e400fb61e57321f
---
gnu/packages/crates-io.scm | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index e8e643589a..ecae320792 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -41005,6 +41005,37 @@ (define-public rust-nispor-1
(description "Unified interface for Linux network state querying.")
(license license:asl2.0)))
+(define-public rust-nix-0.28
+ (package
+ (name "rust-nix")
+ (version "0.28.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "nix" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1r0rylax4ycx3iqakwjvaa178jrrwiiwghcw95ndzy72zk25c8db"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-bitflags" ,rust-bitflags-2)
+ ("rust-cfg-if" ,rust-cfg-if-1)
+ ("rust-cfg-aliases" ,rust-cfg-aliases-0.1)
+ ("rust-libc" ,rust-libc-0.2.153)
+ ("rust-memoffset" ,rust-memoffset-0.9)
+ ("rust-pin-utils" ,rust-pin-utils-0.1))
+ #:cargo-development-inputs (("rust-assert-impl" ,rust-assert-impl-0.1)
+ ("rust-caps" ,rust-caps-0.5)
+ ("rust-parking-lot" ,rust-parking-lot-0.12)
+ ("rust-rand" ,rust-rand-0.8)
+ ("rust-semver" ,rust-semver-1)
+ ("rust-sysctl" ,rust-sysctl-0.4)
+ ("rust-tempfile" ,rust-tempfile-3))))
+ (home-page "https://github.com/nix-rust/nix")
+ (synopsis "Rust friendly bindings to *nix APIs")
+ (description "Rust friendly bindings to *nix APIs")
+ (license license:expat)))
+
(define-public rust-nix-0.27
(package
(name "rust-nix")
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [bug#71064] [PATCH 3/7] gnu: Add rust-dns-lookup-2.
2024-05-19 12:34 [bug#71064] [PATCH 0/7] Nsncd: Introduce package + nscd service update picnoir
2024-05-19 12:46 ` [bug#71064] [PATCH 1/7] gnu: Add rust-libc-0.2.153 picnoir
2024-05-19 12:46 ` [bug#71064] [PATCH 2/7] gnu: Add rust-nix-0.28 picnoir
@ 2024-05-19 12:46 ` picnoir
2024-05-19 12:46 ` [bug#71064] [PATCH 4/7] gnu: Add rust-temp-env-0.3 picnoir
` (4 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: picnoir @ 2024-05-19 12:46 UTC (permalink / raw)
To: 71064; +Cc: Picnoir, Efraim Flashner
From: Picnoir <picnoir@alternativebit.fr>
* gnu/packages/crates-io.scm (rust-dns-lookup-2): New variable. Required by
Nsncd.
Change-Id: I66a8488c93cc0c119417270db93733424a791069
---
gnu/packages/crates-io.scm | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index ecae320792..1753dc0ac8 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -19942,6 +19942,31 @@ (define-public rust-dns-parser-0.8
not support network, only raw protocol parser.")
(license (list license:expat license:asl2.0))))
+(define-public rust-dns-lookup-2
+ (package
+ (name "rust-dns-lookup")
+ (version "2.0.4")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "dns-lookup" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "1z74n2zij2gahycabm0gkmkyx574h76gwk7sz93yqpr3qa3n0xp5"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-cfg-if" ,rust-cfg-if-1)
+ ("rust-libc" ,rust-libc-0.2)
+ ("rust-socket2" ,rust-socket2-0.5)
+ ("rust-windows-sys" ,rust-windows-sys-0.48))))
+ (home-page "https://github.com/keeperofdakeys/dns-lookup/")
+ (synopsis
+ "A simple dns resolving api, much like rust's unstable api. Also includes getaddrinfo and getnameinfo wrappers for libc variants.")
+ (description
+ "This package provides a simple dns resolving api, much like rust's unstable api.
+ Also includes getaddrinfo and getnameinfo wrappers for libc variants.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-dns-sd-0.1
(package
(name "rust-dns-sd")
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [bug#71064] [PATCH 4/7] gnu: Add rust-temp-env-0.3.
2024-05-19 12:34 [bug#71064] [PATCH 0/7] Nsncd: Introduce package + nscd service update picnoir
` (2 preceding siblings ...)
2024-05-19 12:46 ` [bug#71064] [PATCH 3/7] gnu: Add rust-dns-lookup-2 picnoir
@ 2024-05-19 12:46 ` picnoir
2024-05-19 12:46 ` [bug#71064] [PATCH 5/7] gnu: Add rust-slog-async-2-8 picnoir
` (3 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: picnoir @ 2024-05-19 12:46 UTC (permalink / raw)
To: 71064; +Cc: Picnoir, Efraim Flashner
From: Picnoir <picnoir@alternativebit.fr>
* gnu/packages/crates-io.scm (rust-temp-env-0.3): New variable. Required by
Nsncd.
Change-Id: I0cf5084339b889aa6fdaeeeca7b6be2ffcdcb48c
---
gnu/packages/crates-io.scm | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 1753dc0ac8..2b71e1d588 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -68736,6 +68736,27 @@ (define-public rust-tectonic-xetex-layout-0.2
a C API.")
(license license:expat)))
+(define-public rust-temp-env-0.3
+ (package
+ (name "rust-temp-env")
+ (version "0.3.6")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "temp-env" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "0l7hpkd0nhiy4w70j9xbygl1vjr9ipcfxii164n40iwg0ralhdwn"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-futures" ,rust-futures-0.3)
+ ("rust-parking-lot" ,rust-parking-lot-0.12))
+ #:cargo-development-inputs (("rust-tokio" ,rust-tokio-1))))
+ (home-page "https://github.com/vmx/temp-env")
+ (synopsis "Set environment variables temporarily.")
+ (description "Set environment variables temporarily.")
+ (license (list license:expat license:asl2.0))))
+
(define-public rust-temp-testdir-0.2
(package
(name "rust-temp-testdir")
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [bug#71064] [PATCH 5/7] gnu: Add rust-slog-async-2-8.
2024-05-19 12:34 [bug#71064] [PATCH 0/7] Nsncd: Introduce package + nscd service update picnoir
` (3 preceding siblings ...)
2024-05-19 12:46 ` [bug#71064] [PATCH 4/7] gnu: Add rust-temp-env-0.3 picnoir
@ 2024-05-19 12:46 ` picnoir
2024-05-19 12:46 ` [bug#71064] [PATCH 6/7] gnu: Add nsncd picnoir
` (2 subsequent siblings)
7 siblings, 0 replies; 10+ messages in thread
From: picnoir @ 2024-05-19 12:46 UTC (permalink / raw)
To: 71064; +Cc: Picnoir, Efraim Flashner
From: Picnoir <picnoir@alternativebit.fr>
* gnu/packages/crates-io.scm (rust-slog-async-2-8): New variable. Required by
Nsncd.
Change-Id: I9f1a6041c92760b481acc30c0bddd28330b98b2c
---
gnu/packages/crates-io.scm | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm
index 2b71e1d588..2f574ee255 100644
--- a/gnu/packages/crates-io.scm
+++ b/gnu/packages/crates-io.scm
@@ -62944,6 +62944,28 @@ (define-public rust-slog-async-2
(description "This package provides an asynchronous drain for slog.")
(license (list license:mpl2.0 license:expat license:asl2.0))))
+(define-public rust-slog-async-2-8
+ (package
+ (name "rust-slog-async")
+ (version "2.8.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (crate-uri "slog-async" version))
+ (file-name (string-append name "-" version ".tar.gz"))
+ (sha256
+ (base32 "113b17aw7jx7mr68vwfq2yiv6mb4702hz6a0g587jb4ai67h7j3j"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-inputs (("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5)
+ ("rust-slog" ,rust-slog-2)
+ ("rust-take-mut" ,rust-take-mut-0.2)
+ ("rust-thread-local" ,rust-thread-local-1))))
+ (home-page "https://github.com/slog-rs/slog")
+ (synopsis "Asynchronous drain for slog-rs")
+ (description "Asynchronous drain for slog-rs")
+ (license (list license:mpl2.0 license:expat license:asl2.0))))
+
(define-public rust-slog-kvfilter-0.7
(package
(name "rust-slog-kvfilter")
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [bug#71064] [PATCH 6/7] gnu: Add nsncd.
2024-05-19 12:34 [bug#71064] [PATCH 0/7] Nsncd: Introduce package + nscd service update picnoir
` (4 preceding siblings ...)
2024-05-19 12:46 ` [bug#71064] [PATCH 5/7] gnu: Add rust-slog-async-2-8 picnoir
@ 2024-05-19 12:46 ` picnoir
2024-05-19 12:46 ` [bug#71064] [PATCH 7/7] gnu: services: nscd: add Nsncd optional support picnoir
2024-06-02 18:52 ` [bug#71064] [PATCH 0/7] Nsncd: Introduce package + nscd service update Ludovic Courtès
7 siblings, 0 replies; 10+ messages in thread
From: picnoir @ 2024-05-19 12:46 UTC (permalink / raw)
To: 71064; +Cc: Picnoir
From: Picnoir <picnoir@alternativebit.fr>
* gnu/packages/nss.scm (nsncd): New variable. Introducing Nsncd, a non-caching
alternative of Glibc Nscd.
Change-Id: I18ba7ffbb6fb59c4928829bb98a8da4e6963e587
---
gnu/packages/nss.scm | 44 ++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+)
diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm
index 162e748094..492b5ef3bd 100644
--- a/gnu/packages/nss.scm
+++ b/gnu/packages/nss.scm
@@ -28,6 +28,8 @@ (define-module (gnu packages nss)
#:use-module (guix utils)
#:use-module (guix gexp)
#:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix build-system cargo)
#:use-module (guix build-system gnu)
#:use-module (guix build-system mozilla)
#:use-module ((guix licenses) #:prefix license:)
@@ -35,6 +37,7 @@ (define-module (gnu packages nss)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages check)
+ #:use-module (gnu packages crates-io)
#:use-module (gnu packages compression)
#:use-module (gnu packages perl)
#:use-module (gnu packages sqlite))
@@ -286,3 +289,44 @@ (define-public nss/fixed
;; work around that, set the time to roughly the release date.
(invoke "faketime" "2024-01-23" "./nss/tests/all.sh"))
(format #t "test suite not run~%"))))))))))))
+
+(define-public nsncd
+ (package
+ (name "nsncd")
+ (version "unstable-2024-04-09")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/twosigma/nsncd")
+ (commit "7605e330d5a313a8656e6fcaf1c10cd6b5cdd427")))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1hk8bh2a02nyk3rpzbjx1a2iiz15d0vx3ysa180wmr8gsc9ymph5"))))
+ (build-system cargo-build-system)
+ (arguments
+ `(#:cargo-test-flags
+ '("--"
+ ; These tests fail with the current builder network setup
+ "--skip=ffi::test_gethostbyaddr_r"
+ "--skip=ffi::test_gethostbyname2_r")
+ #:cargo-inputs
+ (("rust-anyhow" ,rust-anyhow-1)
+ ("rust-atoi" ,rust-atoi-2)
+ ("rust-slog" ,rust-slog-2)
+ ("rust-slog-async" ,rust-slog-async-2-8)
+ ("rust-slog-term" ,rust-slog-term-2)
+ ("rust-crossbeam-channel" ,rust-crossbeam-channel-0.5)
+ ("rust-nix" ,rust-nix-0.28)
+ ("rust-num-derive" ,rust-num-derive-0.3)
+ ("rust-num-traits" ,rust-num-traits-0.2)
+ ("rust-sd-notify" ,rust-sd-notify-0.4)
+ ("rust-static-assertions" ,rust-static-assertions-1)
+ ("rust-dns-lookup" ,rust-dns-lookup-2))
+ #:cargo-development-inputs
+ (("rust-criterion" ,rust-criterion-0.5)
+ ("rust-temp-env" ,rust-temp-env-0.3))))
+ (home-page "https://github.com/twosigma/nsncd")
+ (synopsis "The name service non-caching daemon")
+ (description "The name service non-caching daemon")
+ (license (list license:asl2.0))))
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [bug#71064] [PATCH 7/7] gnu: services: nscd: add Nsncd optional support.
2024-05-19 12:34 [bug#71064] [PATCH 0/7] Nsncd: Introduce package + nscd service update picnoir
` (5 preceding siblings ...)
2024-05-19 12:46 ` [bug#71064] [PATCH 6/7] gnu: Add nsncd picnoir
@ 2024-05-19 12:46 ` picnoir
2024-06-02 18:55 ` Ludovic Courtès
2024-06-02 18:52 ` [bug#71064] [PATCH 0/7] Nsncd: Introduce package + nscd service update Ludovic Courtès
7 siblings, 1 reply; 10+ messages in thread
From: picnoir @ 2024-05-19 12:46 UTC (permalink / raw)
To: 71064; +Cc: Picnoir
From: Picnoir <picnoir@alternativebit.fr>
* gnu/services/base.scm (services: nscd: add Nsncd optional support): Add a
new nscd-use-nscd? field in the Nscd configuration record. When set to #t, the
nscd service will use Nsncd in place of the Glibc's Nscd. I'm not 100% sure
adding this to the existing Nscd service is a good idea, it's however the most
convenient option for now. Or is it? :)
Change-Id: I73d03bd149ff005130e1ed2532e1b4b0e3d572f5
---
gnu/services/base.scm | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 85160bd3ab..66306384c0 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -79,6 +79,7 @@ (define-module (gnu services base)
#:select (bcachefs-tools exfat-utils jfsutils zfs))
#:use-module (gnu packages fonts)
#:use-module (gnu packages terminals)
+ #:use-module (gnu packages nss)
#:use-module ((gnu packages wm) #:select (sway))
#:use-module ((gnu build file-systems)
#:select (mount-flags->bit-mask
@@ -1284,6 +1285,8 @@ (define-deprecated (mingetty-service config)
(define-record-type* <nscd-configuration> nscd-configuration
make-nscd-configuration
nscd-configuration?
+ (use-nsncd? nscd-use-nsncd? ;boolean
+ (default #t))
(log-file nscd-configuration-log-file ;string
(default "/var/log/nscd.log"))
(debug-level nscd-debug-level ;integer
@@ -1447,12 +1450,14 @@ (define (nscd-shepherd-service config)
(requirement '(user-processes syslogd))
(start #~(make-forkexec-constructor
- (list #$nscd "-f" #$nscd.conf "--foreground")
+ #$(if (nscd-use-nsncd? config)
+ #~(list #$(file-append nsncd "/bin/nsncd"))
+ #~(list #$nscd "-f" #$nscd.conf "--foreground"))
;; Wait for the PID file. However, the PID file is
;; written before nscd is actually listening on its
;; socket (XXX).
- #:pid-file "/var/run/nscd/nscd.pid"
+ #$@(if (nscd-use-nsncd? config) '() '(#:pid-file "/var/run/nscd/nscd.pid"))
#:environment-variables
(list (string-append "LD_LIBRARY_PATH="
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [bug#71064] [PATCH 7/7] gnu: services: nscd: add Nsncd optional support.
2024-05-19 12:46 ` [bug#71064] [PATCH 7/7] gnu: services: nscd: add Nsncd optional support picnoir
@ 2024-06-02 18:55 ` Ludovic Courtès
0 siblings, 0 replies; 10+ messages in thread
From: Ludovic Courtès @ 2024-06-02 18:55 UTC (permalink / raw)
To: picnoir; +Cc: 71064
Hi,
picnoir@alternativebit.fr skribis:
> From: Picnoir <picnoir@alternativebit.fr>
>
> * gnu/services/base.scm (services: nscd: add Nsncd optional support): Add a
> new nscd-use-nscd? field in the Nscd configuration record. When set to #t, the
> nscd service will use Nsncd in place of the Glibc's Nscd. I'm not 100% sure
> adding this to the existing Nscd service is a good idea, it's however the most
> convenient option for now. Or is it? :)
Well, there needs to be a flag somehow. :-)
Nitpick: could you describe the changes at a syntactic level in the
commit log? I know our conventions aren’t common today, so whoever
commits it can eventually tweak it on your behalf if needed.
> + (use-nsncd? nscd-use-nsncd? ;boolean
> + (default #t))
I’m tempted to make it:
(implementation nscd-implementation (default 'glibc))
And thus 'nsncd would be the other supported value.
Do you think that makes sense?
Anyhow, could you adjust doc/guix.texi to mention the new field?
Apart from that, the patch looks good to me. Could you send an updated
version?
Thanks!
Ludo’.
^ permalink raw reply [flat|nested] 10+ messages in thread
* [bug#71064] [PATCH 0/7] Nsncd: Introduce package + nscd service update
2024-05-19 12:34 [bug#71064] [PATCH 0/7] Nsncd: Introduce package + nscd service update picnoir
` (6 preceding siblings ...)
2024-05-19 12:46 ` [bug#71064] [PATCH 7/7] gnu: services: nscd: add Nsncd optional support picnoir
@ 2024-06-02 18:52 ` Ludovic Courtès
7 siblings, 0 replies; 10+ messages in thread
From: Ludovic Courtès @ 2024-06-02 18:52 UTC (permalink / raw)
To: picnoir; +Cc: 71064
Howdy Picnoir,
Thanks for the patch set! As you write, nsncd is going to be very
useful for Nix and Guix, so this is a much welcome addition.
picnoir@alternativebit.fr skribis:
> gnu: Add rust-libc-0.2.153.
> gnu: Add rust-nix-0.28.
> gnu: Add rust-dns-lookup-2.
> gnu: Add rust-temp-env-0.3.
> gnu: Add rust-slog-async-2-8.
> gnu: Add nsncd.
> gnu: services: nscd: add Nsncd optional support.
I applied everything but the last patch. I took the liberty to tweak
descriptions as per our guidelines¹, adding me as co-author. I also
changed the ‘version’ field of nsncd to remove the “unstable-” prefix.
Let me know if anything’s amiss.
As for the last patch, I’ll comment separately.
Thanks,
Ludo’.
¹ https://guix.gnu.org/manual/devel/en/html_node/Synopses-and-Descriptions.html
^ permalink raw reply [flat|nested] 10+ messages in thread