* [bug#49494] [PATCH 2/7] gnu: Add go-github-com-dustin-go-humanize.
2021-07-09 16:19 ` [bug#49494] [PATCH 1/7] gnu: Add go-github-com-davecgh-go-xdr Arun Isaac
@ 2021-07-09 16:19 ` Arun Isaac
2021-07-09 16:19 ` [bug#49494] [PATCH 3/7] gnu: Add go-lukechampine-com-blake3 Arun Isaac
` (4 subsequent siblings)
5 siblings, 0 replies; 20+ messages in thread
From: Arun Isaac @ 2021-07-09 16:19 UTC (permalink / raw)
To: 49494; +Cc: Arun Isaac
* gnu/packages/golang.scm (go-github-com-dustin-go-humanize): New variable.
---
gnu/packages/golang.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index cbce7bec41..972989c84f 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -8249,3 +8249,27 @@ Go.")
the External Data Representation (XDR) standard protocol as specified in RFC
4506 (obsoletes RFC 1832 and RFC 1014) in pure Go.")
(license license:isc)))
+
+(define-public go-github-com-dustin-go-humanize
+ (package
+ (name "go-github-com-dustin-go-humanize")
+ (version "1.0.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/dustin/go-humanize")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1kqf1kavdyvjk7f8kx62pnm7fbypn9z1vbf8v2qdh3y7z7a0cbl3"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/dustin/go-humanize"))
+ (home-page "https://github.com/dustin/go-humanize")
+ (synopsis "Humane unit formatter")
+ (description "@code{go-humanize} provides formatters for units to human
+friendly sizes. It converts boring ugly numbers to human-friendly strings and
+back.")
+ (license license:expat)))
--
2.32.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH 3/7] gnu: Add go-lukechampine-com-blake3.
2021-07-09 16:19 ` [bug#49494] [PATCH 1/7] gnu: Add go-github-com-davecgh-go-xdr Arun Isaac
2021-07-09 16:19 ` [bug#49494] [PATCH 2/7] gnu: Add go-github-com-dustin-go-humanize Arun Isaac
@ 2021-07-09 16:19 ` Arun Isaac
2021-07-09 16:19 ` [bug#49494] [PATCH 4/7] gnu: Add go-golang-org-x-term Arun Isaac
` (3 subsequent siblings)
5 siblings, 0 replies; 20+ messages in thread
From: Arun Isaac @ 2021-07-09 16:19 UTC (permalink / raw)
To: 49494; +Cc: Arun Isaac
* gnu/packages/golang.scm (go-lukechampine-com-blake3): New variable.
---
gnu/packages/golang.scm | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 972989c84f..8eb93b9456 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -8273,3 +8273,30 @@ the External Data Representation (XDR) standard protocol as specified in RFC
friendly sizes. It converts boring ugly numbers to human-friendly strings and
back.")
(license license:expat)))
+
+(define-public go-lukechampine-com-blake3
+ (package
+ (name "go-lukechampine-com-blake3")
+ (version "1.1.5")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/lukechampine/blake3")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1yxdwp8dpnnq2wbwsxlkbq570i99sc6781y39czjxi9jh9z5nw55"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "lukechampine.com/blake3"))
+ (propagated-inputs
+ `(("go-github-com-klauspost-cpuid" ,go-github-com-klauspost-cpuid)))
+ (home-page "https://pkg.go.dev/lukechampine.com/blake3")
+ (synopsis "Implementation of the BLAKE3 cryptographic hash function")
+ (description "@code{blake3} implements the BLAKE3 cryptographic hash
+function. In addition to the pure-Go implementation, this package also
+contains AVX-512 and AVX2 routines (generated by avo) that greatly increase
+performance for large inputs and outputs.")
+ (license license:expat)))
--
2.32.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH 4/7] gnu: Add go-golang-org-x-term.
2021-07-09 16:19 ` [bug#49494] [PATCH 1/7] gnu: Add go-github-com-davecgh-go-xdr Arun Isaac
2021-07-09 16:19 ` [bug#49494] [PATCH 2/7] gnu: Add go-github-com-dustin-go-humanize Arun Isaac
2021-07-09 16:19 ` [bug#49494] [PATCH 3/7] gnu: Add go-lukechampine-com-blake3 Arun Isaac
@ 2021-07-09 16:19 ` Arun Isaac
2021-07-09 16:19 ` [bug#49494] [PATCH 5/7] gnu: Add go-github-com-flynn-noise Arun Isaac
` (2 subsequent siblings)
5 siblings, 0 replies; 20+ messages in thread
From: Arun Isaac @ 2021-07-09 16:19 UTC (permalink / raw)
To: 49494; +Cc: Arun Isaac
* gnu/packages/golang.scm (go-golang-org-x-term): New variable.
---
gnu/packages/golang.scm | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 8eb93b9456..673d206713 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -8300,3 +8300,27 @@ function. In addition to the pure-Go implementation, this package also
contains AVX-512 and AVX2 routines (generated by avo) that greatly increase
performance for large inputs and outputs.")
(license license:expat)))
+
+(define-public go-golang-org-x-term
+ (package
+ (name "go-golang-org-x-term")
+ (version "0.0.0-20210615171337-6886f2dfbf5b")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://go.googlesource.com/term")
+ (commit (go-version->git-ref version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0661w7dp2ak1k4ii90v6chw2x8a6g4sc5j0ba58qlplaj4k5l0xs"))))
+ (build-system go-build-system)
+ (arguments '(#:import-path "golang.org/x/term"))
+ (propagated-inputs
+ `(("go-golang-org-x-sys" ,go-golang-org-x-sys)))
+ (home-page "https://pkg.go.dev/golang.org/x/term")
+ (synopsis "Go terminal/console support")
+ (description "@code{term} provides support functions for dealing with
+terminals, as commonly found on Unix systems.")
+ (license license:bsd-3)))
--
2.32.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH 5/7] gnu: Add go-github-com-flynn-noise.
2021-07-09 16:19 ` [bug#49494] [PATCH 1/7] gnu: Add go-github-com-davecgh-go-xdr Arun Isaac
` (2 preceding siblings ...)
2021-07-09 16:19 ` [bug#49494] [PATCH 4/7] gnu: Add go-golang-org-x-term Arun Isaac
@ 2021-07-09 16:19 ` Arun Isaac
2021-07-09 16:19 ` [bug#49494] [PATCH 6/7] gnu: Add go-github-com-klauspost-compress Arun Isaac
2021-07-09 16:19 ` [bug#49494] [PATCH 7/7] gnu: " Arun Isaac
5 siblings, 0 replies; 20+ messages in thread
From: Arun Isaac @ 2021-07-09 16:19 UTC (permalink / raw)
To: 49494; +Cc: Arun Isaac
* gnu/packages/golang.scm (go-github-com-flynn-noise): New variable.
---
gnu/packages/golang.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 673d206713..5a7f27bc91 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -8324,3 +8324,31 @@ performance for large inputs and outputs.")
(description "@code{term} provides support functions for dealing with
terminals, as commonly found on Unix systems.")
(license license:bsd-3)))
+
+(define-public go-github-com-flynn-noise
+ (package
+ (name "go-github-com-flynn-noise")
+ (version "1.0.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/flynn/noise")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1j6phxyqx06wcqxjpin696fkp85s76qcp3i2f7fv6q2fb6618f6y"))))
+ (build-system go-build-system)
+ (arguments
+ '(#:import-path "github.com/flynn/noise"))
+ (propagated-inputs
+ `(("go-gopkg-in-check-v1" ,go-gopkg-in-check-v1)
+ ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)))
+ (home-page "https://github.com/flynn/noise")
+ (synopsis "Go implementation of the Noise protocol framework")
+ (description "@code{noise} implements the Noise protocol framework. Noise
+is a low-level framework for building crypto protocols. Noise protocols
+support mutual and optional authentication, identity hiding, forward secrecy,
+zero round-trip encryption, and other advanced features.")
+ (license license:bsd-3)))
--
2.32.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH 6/7] gnu: Add go-github-com-klauspost-compress.
2021-07-09 16:19 ` [bug#49494] [PATCH 1/7] gnu: Add go-github-com-davecgh-go-xdr Arun Isaac
` (3 preceding siblings ...)
2021-07-09 16:19 ` [bug#49494] [PATCH 5/7] gnu: Add go-github-com-flynn-noise Arun Isaac
@ 2021-07-09 16:19 ` Arun Isaac
2021-07-22 23:38 ` [bug#49494] [PATCH 0/7] Add nncp Sarah Morgensen
2021-07-09 16:19 ` [bug#49494] [PATCH 7/7] gnu: " Arun Isaac
5 siblings, 1 reply; 20+ messages in thread
From: Arun Isaac @ 2021-07-09 16:19 UTC (permalink / raw)
To: 49494; +Cc: Arun Isaac
* gnu/packages/golang.scm (go-github-com-klauspost-compress): New variable.
---
gnu/packages/golang.scm | 37 +++++++++++++++++++++++++++++++++++++
1 file changed, 37 insertions(+)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 5a7f27bc91..ef54e15afc 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -67,6 +67,7 @@
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
+ #:use-module (gnu packages syncthing)
#:use-module (gnu packages terminals)
#:use-module (gnu packages textutils)
#:use-module (gnu packages tls)
@@ -8352,3 +8353,39 @@ is a low-level framework for building crypto protocols. Noise protocols
support mutual and optional authentication, identity hiding, forward secrecy,
zero round-trip encryption, and other advanced features.")
(license license:bsd-3)))
+
+(define-public go-github-com-klauspost-compress
+ (package
+ (name "go-github-com-klauspost-compress")
+ (version "1.13.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/klauspost/compress")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "0ydnf9rizlhm8rilh14674qqx272sbwbkjx06xn9pqvy6mmn2r3r"))))
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "github.com/klauspost/compress"
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'reset-gzip-timestamps 'fix-permissions
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Provide write permissions on gzip files so that
+ ;; reset-gzip-timestamps has sufficient permissions.
+ (for-each (lambda (file)
+ (chmod file #o644))
+ (find-files (assoc-ref outputs "out")
+ (lambda (file stat)
+ (and (eq? 'regular (stat:type stat))
+ (string-suffix? ".gz" file))))))))))
+ (propagated-inputs
+ `(("go-github-com-golang-snappy" ,go-github-com-golang-snappy)))
+ (home-page "https://github.com/klauspost/compress")
+ (synopsis "Go compression library")
+ (description "@code{compress} provides various compression algorithms.")
+ (license license:bsd-3)))
--
2.32.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH 0/7] Add nncp
2021-07-09 16:19 ` [bug#49494] [PATCH 6/7] gnu: Add go-github-com-klauspost-compress Arun Isaac
@ 2021-07-22 23:38 ` Sarah Morgensen
0 siblings, 0 replies; 20+ messages in thread
From: Sarah Morgensen @ 2021-07-22 23:38 UTC (permalink / raw)
To: Arun Isaac; +Cc: 49494
Hi,
Thanks for your patches.
Arun Isaac <arunisaac@systemreboot.net> writes:
> * gnu/packages/golang.scm (go-github-com-klauspost-compress): New variable.
> ---
> gnu/packages/golang.scm | 37 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 37 insertions(+)
>
> diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
> index 5a7f27bc91..ef54e15afc 100644
> --- a/gnu/packages/golang.scm
> +++ b/gnu/packages/golang.scm
> @@ -67,6 +67,7 @@
> #:use-module (gnu packages perl)
> #:use-module (gnu packages pkg-config)
> #:use-module (gnu packages pulseaudio)
> + #:use-module (gnu packages syncthing)
> #:use-module (gnu packages terminals)
> #:use-module (gnu packages textutils)
> #:use-module (gnu packages tls)
> @@ -8352,3 +8353,39 @@ is a low-level framework for building crypto protocols. Noise protocols
> support mutual and optional authentication, identity hiding, forward secrecy,
> zero round-trip encryption, and other advanced features.")
> (license license:bsd-3)))
> +
> +(define-public go-github-com-klauspost-compress
> + (package
> + (name "go-github-com-klauspost-compress")
> + (version "1.13.1")
> + (source
> + (origin
> + (method git-fetch)
> + (uri (git-reference
> + (url "https://github.com/klauspost/compress")
> + (commit (string-append "v" version))))
> + (file-name (git-file-name name version))
> + (sha256
> + (base32
> + "0ydnf9rizlhm8rilh14674qqx272sbwbkjx06xn9pqvy6mmn2r3r"))))
> + (build-system go-build-system)
> + (arguments
> + `(#:import-path "github.com/klauspost/compress"
> + #:phases
> + (modify-phases %standard-phases
> + (add-before 'reset-gzip-timestamps 'fix-permissions
> + (lambda* (#:key outputs #:allow-other-keys)
> + ;; Provide write permissions on gzip files so that
> + ;; reset-gzip-timestamps has sufficient permissions.
> + (for-each (lambda (file)
> + (chmod file #o644))
> + (find-files (assoc-ref outputs "out")
> + (lambda (file stat)
> + (and (eq? 'regular (stat:type stat))
> + (string-suffix? ".gz" file))))))))))
You can simplify this with the Guix built-in MAKE-FILE-WRITABLE and
taking advantage of the facts that FIND-FILES can take a regex as PRED
and does not follow symlinks or return directories by default:
(for-each make-file-writable
(find-files (assoc-ref outputs "out") ".*\\.t?gz$"))
> + (propagated-inputs
> + `(("go-github-com-golang-snappy" ,go-github-com-golang-snappy)))
> + (home-page "https://github.com/klauspost/compress")
> + (synopsis "Go compression library")
> + (description "@code{compress} provides various compression algorithms.")
> + (license license:bsd-3)))
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH 7/7] gnu: Add nncp.
2021-07-09 16:19 ` [bug#49494] [PATCH 1/7] gnu: Add go-github-com-davecgh-go-xdr Arun Isaac
` (4 preceding siblings ...)
2021-07-09 16:19 ` [bug#49494] [PATCH 6/7] gnu: Add go-github-com-klauspost-compress Arun Isaac
@ 2021-07-09 16:19 ` Arun Isaac
2021-07-23 1:22 ` [bug#49494] [PATCH 0/7] " Sarah Morgensen
5 siblings, 1 reply; 20+ messages in thread
From: Arun Isaac @ 2021-07-09 16:19 UTC (permalink / raw)
To: 49494; +Cc: Arun Isaac
* gnu/packages/uucp.scm (nncp): New variable.
---
gnu/packages/uucp.scm | 99 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 99 insertions(+)
diff --git a/gnu/packages/uucp.scm b/gnu/packages/uucp.scm
index 1bb4fdb975..2d4d1ae8d0 100644
--- a/gnu/packages/uucp.scm
+++ b/gnu/packages/uucp.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -17,6 +18,8 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages uucp)
+ #:use-module (gnu packages golang)
+ #:use-module (gnu packages texinfo)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
@@ -54,3 +57,99 @@
set of utilities for remotely transferring files, email and net news
between computers.")
(license gpl2+)))
+
+(define-public nncp
+ (package
+ (name "nncp")
+ (version "7.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://www.nncpgo.org/download/nncp-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "0xsh5zc6i8nbcsi06r65lpp26hz2zb4vh0pzbkivdd69hrxvknvh"))
+ (modules '((ice-9 ftw)
+ (guix build utils)))
+ (snippet
+ '(begin
+ ;; Unbundle dependencies.
+ ;; TODO: go.cypherpunks.ru was down at the time of
+ ;; packaging. Unbundle go.cypherpunks dependencies as well once it
+ ;; comes back online.
+ (for-each (lambda (file)
+ (unless (member file (list "." ".." "go.cypherpunks.ru"))
+ (delete-file-recursively (string-append "src/vendor/" file))))
+ (scandir "src/vendor"))
+ ;; Delete built documentation.
+ (delete-file "doc/nncp.info")
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; tests fail
+ #:modules ((guix build gnu-build-system)
+ ((guix build go-build-system) #:prefix go:)
+ (guix build union)
+ (guix build utils))
+ #:imported-modules (,@%gnu-build-system-modules
+ (guix build union)
+ (guix build go-build-system))
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'unpack 'setup-go-environment
+ (assoc-ref go:%standard-phases 'setup-go-environment))
+ (add-after 'unpack 'go-unpack
+ (lambda* (#:key source #:allow-other-keys)
+ ;; Copy source to GOPATH.
+ (copy-recursively "src" "../src/go.cypherpunks.ru/nncp/v7")
+ ;; Move bundled dependencies to GOPATH.
+ (for-each (lambda (dependency)
+ (rename-file (string-append "src/vendor/go.cypherpunks.ru/"
+ dependency)
+ (string-append "../src/go.cypherpunks.ru/"
+ dependency)))
+ (list "balloon" "recfile"))
+ ;; Delete empty bundled dependencies directory.
+ (delete-file-recursively "src/vendor")))
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Set output directories.
+ (let ((out (assoc-ref outputs "out")))
+ (setenv "BINDIR" (string-append out "/bin"))
+ (setenv "INFODIR" (string-append out "/share/info"))
+ (setenv "DOCDIR" (string-append out "/share/doc/nncp")))
+ ;; Remove module flags.
+ (substitute* (list "bin/default.do" "test.do")
+ ((" -mod=vendor") "")
+ ((" -m") "")))))))
+ (inputs
+ `(("go" ,go)))
+ (native-inputs
+ `(("texinfo" ,texinfo)))
+ (propagated-inputs
+ `(("go-github-com-davecgh-go-xdr" ,go-github-com-davecgh-go-xdr)
+ ("go-github-com-dustin-go-humanize" ,go-github-com-dustin-go-humanize)
+ ("go-github-com-flynn-noise" ,go-github-com-flynn-noise)
+ ("go-github-com-gorhill-cronexpr" ,go-github-com-gorhill-cronexpr)
+ ("go-github-com-hjson-hjson-go" ,go-github-com-hjson-hjson-go)
+ ("go-github-com-klauspost-compress" ,go-github-com-klauspost-compress)
+ ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
+ ("go-golang-org-x-net" ,go-golang-org-x-net)
+ ("go-golang-org-x-term" ,go-golang-org-x-term)
+ ("go-lukechampine-com-blake3" ,go-lukechampine-com-blake3)))
+ (home-page "http://www.nncpgo.org/")
+ (synopsis "Store and forward utilities")
+ (description "NNCP (Node to Node copy) is a collection of utilities
+simplifying secure store-and-forward files, mail and command exchanging.
+These utilities are intended to help build up small size (dozens of nodes)
+ad-hoc friend-to-friend (F2F) statically routed darknet delay-tolerant
+networks for fire-and-forget secure reliable files, file requests, Internet
+mail and commands transmission. All packets are integrity checked, end-to-end
+encrypted, explicitly authenticated by known participants public keys. Onion
+encryption is applied to relayed packets. Each node acts both as a client and
+server, can use push and poll behaviour model. Multicasting areas, offline
+sneakernet/floppynet, dead drops, sequential and append-only CD-ROM/tape
+storages, air-gapped computers and online TCP daemon with full-duplex
+resumable data transmission exists are all supported.")
+ (license gpl3)))
--
2.32.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH 0/7] Add nncp
2021-07-09 16:19 ` [bug#49494] [PATCH 7/7] gnu: " Arun Isaac
@ 2021-07-23 1:22 ` Sarah Morgensen
2021-08-01 20:16 ` Arun Isaac
0 siblings, 1 reply; 20+ messages in thread
From: Sarah Morgensen @ 2021-07-23 1:22 UTC (permalink / raw)
To: Arun Isaac; +Cc: 49494
Hi,
I have a few suggestions for this one as well.
Arun Isaac <arunisaac@systemreboot.net> writes:
> * gnu/packages/uucp.scm (nncp): New variable.
> ---
> gnu/packages/uucp.scm | 99 +++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 99 insertions(+)
>
> diff --git a/gnu/packages/uucp.scm b/gnu/packages/uucp.scm
> index 1bb4fdb975..2d4d1ae8d0 100644
> --- a/gnu/packages/uucp.scm
> +++ b/gnu/packages/uucp.scm
> @@ -1,5 +1,6 @@
> ;;; GNU Guix --- Functional package management for GNU
> ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
> +;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -17,6 +18,8 @@
> ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
>
> (define-module (gnu packages uucp)
> + #:use-module (gnu packages golang)
> + #:use-module (gnu packages texinfo)
> #:use-module (guix licenses)
> #:use-module (guix packages)
> #:use-module (guix download)
> @@ -54,3 +57,99 @@
> set of utilities for remotely transferring files, email and net news
> between computers.")
> (license gpl2+)))
> +
> +(define-public nncp
> + (package
> + (name "nncp")
> + (version "7.2.0")
> + (source
> + (origin
> + (method url-fetch)
> + (uri (string-append "http://www.nncpgo.org/download/nncp-"
> + version ".tar.xz"))
> + (sha256
> + (base32
> + "0xsh5zc6i8nbcsi06r65lpp26hz2zb4vh0pzbkivdd69hrxvknvh"))
> + (modules '((ice-9 ftw)
> + (guix build utils)))
> + (snippet
> + '(begin
> + ;; Unbundle dependencies.
> + ;; TODO: go.cypherpunks.ru was down at the time of
> + ;; packaging. Unbundle go.cypherpunks dependencies as well once it
> + ;; comes back online.
> + (for-each (lambda (file)
> + (unless (member file (list "." ".." "go.cypherpunks.ru"))
> + (delete-file-recursively (string-append "src/vendor/" file))))
> + (scandir "src/vendor"))
> + ;; Delete built documentation.
> + (delete-file "doc/nncp.info")
> + #t))))
> + (build-system gnu-build-system)
> + (arguments
> + `(#:tests? #f ; tests fail
It is not a good idea to just disable tests without knowing why they
fail (and leaving a comment explaining why).
> + #:modules ((guix build gnu-build-system)
> + ((guix build go-build-system) #:prefix go:)
> + (guix build union)
^ this module isn't necessary
> + (guix build utils))
> + #:imported-modules (,@%gnu-build-system-modules
> + (guix build union)
> + (guix build go-build-system))
This can probably just be
#:imported-modules ,%go-build-system-modules
> + #:phases
> + (modify-phases %standard-phases
> + (add-before 'unpack 'setup-go-environment
> + (assoc-ref go:%standard-phases 'setup-go-environment))
> + (add-after 'unpack 'go-unpack
> + (lambda* (#:key source #:allow-other-keys)
> + ;; Copy source to GOPATH.
> + (copy-recursively "src" "../src/go.cypherpunks.ru/nncp/v7")
> + ;; Move bundled dependencies to GOPATH.
> + (for-each (lambda (dependency)
> + (rename-file (string-append "src/vendor/go.cypherpunks.ru/"
> + dependency)
> + (string-append "../src/go.cypherpunks.ru/"
> + dependency)))
> + (list "balloon" "recfile"))
> + ;; Delete empty bundled dependencies directory.
> + (delete-file-recursively "src/vendor")))
> + (replace 'configure
> + (lambda* (#:key outputs #:allow-other-keys)
> + ;; Set output directories.
> + (let ((out (assoc-ref outputs "out")))
> + (setenv "BINDIR" (string-append out "/bin"))
> + (setenv "INFODIR" (string-append out "/share/info"))
> + (setenv "DOCDIR" (string-append out "/share/doc/nncp")))
Consider perhaps:
(setenv "DOCDIR" (string-append out "/share/doc/nncp"
,(package-version this-package)))
Does CFGPATH need to be set?
> + ;; Remove module flags.
> + (substitute* (list "bin/default.do" "test.do")
> + ((" -mod=vendor") "")
> + ((" -m") "")))))))
I took a quick look at the source and it looks like you'll also need:
(substitute* '("src/toss_test.go" "src/pipe.go")
(("/bin/sh") (which "sh")))
(substitute* "src/toss_test.go"
(("; cat") (string-append "; " (which "cat"))))
Which also makes the tests succeed.
> + (inputs
> + `(("go" ,go)))
> + (native-inputs
> + `(("texinfo" ,texinfo)))
> + (propagated-inputs
> + `(("go-github-com-davecgh-go-xdr" ,go-github-com-davecgh-go-xdr)
> + ("go-github-com-dustin-go-humanize" ,go-github-com-dustin-go-humanize)
> + ("go-github-com-flynn-noise" ,go-github-com-flynn-noise)
> + ("go-github-com-gorhill-cronexpr" ,go-github-com-gorhill-cronexpr)
> + ("go-github-com-hjson-hjson-go" ,go-github-com-hjson-hjson-go)
> + ("go-github-com-klauspost-compress" ,go-github-com-klauspost-compress)
> + ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
> + ("go-golang-org-x-net" ,go-golang-org-x-net)
> + ("go-golang-org-x-term" ,go-golang-org-x-term)
> + ("go-lukechampine-com-blake3" ,go-lukechampine-com-blake3)))
Since this is an end-user package, these can be regular inputs.
I also notice that nncp can use `sendmail`; should `sendmail` be an
input as well?
> + (home-page "http://www.nncpgo.org/")
> + (synopsis "Store and forward utilities")
> + (description "NNCP (Node to Node copy) is a collection of utilities
> +simplifying secure store-and-forward files, mail and command exchanging.
> +These utilities are intended to help build up small size (dozens of nodes)
> +ad-hoc friend-to-friend (F2F) statically routed darknet delay-tolerant
> +networks for fire-and-forget secure reliable files, file requests, Internet
> +mail and commands transmission. All packets are integrity checked, end-to-end
> +encrypted, explicitly authenticated by known participants public keys. Onion
> +encryption is applied to relayed packets. Each node acts both as a client and
> +server, can use push and poll behaviour model. Multicasting areas, offline
> +sneakernet/floppynet, dead drops, sequential and append-only CD-ROM/tape
> +storages, air-gapped computers and online TCP daemon with full-duplex
> +resumable data transmission exists are all supported.")
> + (license gpl3)))
This package is also retaining references to the Go compiler package;
re-adding this phase from go-build-system fixes that:
(add-after 'install 'remove-go-references
(assoc-ref go:%standard-phases 'remove-go-references))
--
Sarah
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH 0/7] Add nncp
2021-07-23 1:22 ` [bug#49494] [PATCH 0/7] " Sarah Morgensen
@ 2021-08-01 20:16 ` Arun Isaac
2021-08-01 20:19 ` [bug#49494] [PATCH v2] gnu: " Arun Isaac
2021-08-02 5:54 ` [bug#49494] [PATCH 0/7] " Sarah Morgensen
0 siblings, 2 replies; 20+ messages in thread
From: Arun Isaac @ 2021-08-01 20:16 UTC (permalink / raw)
To: Sarah Morgensen; +Cc: 49494
[-- Attachment #1: Type: text/plain, Size: 3823 bytes --]
Hi Sarah,
I have pushed patches 1-6 to master after implementing your suggestion
for patch 6 (klauspost-compress). I'm sending a WIP v2 of patch 7 (nncp)
in a following email. The tests are failing despite implementing your
suggestion. Any help in that regard would be much appreciated.
>> +(define-public nncp
>> + (package
>> + (name "nncp")
>> + (version "7.2.0")
In patch v2, I have updated to the latest version 7.5.0.
>> + (build-system gnu-build-system)
>> + (arguments
>> + `(#:tests? #f ; tests fail
>
> It is not a good idea to just disable tests without knowing why they
> fail (and leaving a comment explaining why).
True, I agree.
>> + #:modules ((guix build gnu-build-system)
>> + ((guix build go-build-system) #:prefix go:)
>> + (guix build union)
> ^ this module isn't necessary
>
[...]
>> + (guix build utils))
>> + #:imported-modules (,@%gnu-build-system-modules
>> + (guix build union)
>> + (guix build go-build-system))
>
> This can probably just be
> #:imported-modules ,%go-build-system-modules
Good catch! Implemented both suggestions.
>> + (setenv "BINDIR" (string-append out "/bin"))
>> + (setenv "INFODIR" (string-append out "/share/info"))
>> + (setenv "DOCDIR" (string-append out "/share/doc/nncp")))
>
> Consider perhaps:
> (setenv "DOCDIR" (string-append out "/share/doc/nncp"
> ,(package-version this-package)))
I've removed the version number from DOCDIR since that's what most
packages are doing. Even the configure phase of the gnu-build-system
does not put the version number in docdir. Only the
install-license-files of the gnu-build-system puts the version number
in, and that's probably a bug.
> Does CFGPATH need to be set?
I have now set CFGPATH TO /etc/nncp.hjson.
> I took a quick look at the source and it looks like you'll also need:
>
> (substitute* '("src/toss_test.go" "src/pipe.go")
> (("/bin/sh") (which "sh")))
> (substitute* "src/toss_test.go"
> (("; cat") (string-append "; " (which "cat"))))
>
> Which also makes the tests succeed.
Good catch, but tests still don't succeed (at least on my machine).
>> + (inputs
>> + `(("go" ,go)))
I have moved go to native-inputs.
>> + (native-inputs
>> + `(("texinfo" ,texinfo)))
>> + (propagated-inputs
>> + `(("go-github-com-davecgh-go-xdr" ,go-github-com-davecgh-go-xdr)
>> + ("go-github-com-dustin-go-humanize" ,go-github-com-dustin-go-humanize)
>> + ("go-github-com-flynn-noise" ,go-github-com-flynn-noise)
>> + ("go-github-com-gorhill-cronexpr" ,go-github-com-gorhill-cronexpr)
>> + ("go-github-com-hjson-hjson-go" ,go-github-com-hjson-hjson-go)
>> + ("go-github-com-klauspost-compress" ,go-github-com-klauspost-compress)
>> + ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
>> + ("go-golang-org-x-net" ,go-golang-org-x-net)
>> + ("go-golang-org-x-term" ,go-golang-org-x-term)
>> + ("go-lukechampine-com-blake3" ,go-lukechampine-com-blake3)))
>
> Since this is an end-user package, these can be regular inputs.
Done!
> I also notice that nncp can use `sendmail`; should `sendmail` be an
> input as well?
I think sendmail need not be an input. There are many sendmail
compatible implementations and we can leave it up to the user to install
one in their profile and configure nncp accordingly.
> This package is also retaining references to the Go compiler package;
> re-adding this phase from go-build-system fixes that:
>
> (add-after 'install 'remove-go-references
> (assoc-ref go:%standard-phases 'remove-go-references))
Done!
Thanks,
Arun
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 524 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH v2] gnu: Add nncp.
2021-08-01 20:16 ` Arun Isaac
@ 2021-08-01 20:19 ` Arun Isaac
2021-08-02 5:54 ` [bug#49494] [PATCH 0/7] " Sarah Morgensen
1 sibling, 0 replies; 20+ messages in thread
From: Arun Isaac @ 2021-08-01 20:19 UTC (permalink / raw)
To: Sarah Morgensen; +Cc: Arun Isaac, 49494
* gnu/packages/uucp.scm (nncp): New variable.
---
gnu/packages/uucp.scm | 110 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 109 insertions(+), 1 deletion(-)
diff --git a/gnu/packages/uucp.scm b/gnu/packages/uucp.scm
index 1bb4fdb975..efc6665111 100644
--- a/gnu/packages/uucp.scm
+++ b/gnu/packages/uucp.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -17,10 +18,13 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages uucp)
+ #:use-module (gnu packages golang)
+ #:use-module (gnu packages texinfo)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
- #:use-module (guix build-system gnu))
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system go))
(define-public uucp
(package
@@ -54,3 +58,107 @@
set of utilities for remotely transferring files, email and net news
between computers.")
(license gpl2+)))
+
+(define-public nncp
+ (package
+ (name "nncp")
+ (version "7.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://www.nncpgo.org/download/nncp-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "1r1zgj7gpkdmdm3wf31m0xi8y313kzd4dbyp4r4y8khnp32jvn8l"))
+ (modules '((ice-9 ftw)
+ (guix build utils)))
+ (snippet
+ '(begin
+ ;; Unbundle dependencies.
+ ;; TODO: go.cypherpunks.ru was down at the time of
+ ;; packaging. Unbundle go.cypherpunks dependencies as well once it
+ ;; comes back online.
+ (for-each (lambda (file)
+ (unless (member file (list "." ".." "go.cypherpunks.ru"))
+ (delete-file-recursively (string-append "src/vendor/" file))))
+ (scandir "src/vendor"))
+ ;; Delete built documentation.
+ (delete-file "doc/nncp.info")
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:modules ((guix build gnu-build-system)
+ ((guix build go-build-system) #:prefix go:)
+ (guix build utils))
+ #:imported-modules ,%go-build-system-modules
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'unpack 'setup-go-environment
+ (assoc-ref go:%standard-phases 'setup-go-environment))
+ (add-after 'unpack 'go-unpack
+ (lambda* (#:key source #:allow-other-keys)
+ ;; Copy source to GOPATH.
+ (copy-recursively "src" "../src/go.cypherpunks.ru/nncp/v7")
+ ;; Move bundled dependencies to GOPATH.
+ (for-each (lambda (dependency)
+ (rename-file (string-append "src/vendor/go.cypherpunks.ru/"
+ dependency)
+ (string-append "../src/go.cypherpunks.ru/"
+ dependency)))
+ (list "balloon" "recfile"))
+ ;; Delete empty bundled dependencies directory.
+ (delete-file-recursively "src/vendor")))
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ ;; Set configuration path.
+ (setenv "CFGPATH" "/etc/nncp.hjson")
+ ;; Set output directories.
+ (setenv "BINDIR" (string-append out "/bin"))
+ (setenv "INFODIR" (string-append out "/share/info"))
+ (setenv "DOCDIR" (string-append out "/share/doc/nncp")))
+ ;; Set absolute store paths to sh and cat.
+ (substitute* (list "src/pipe.go" "src/toss_test.go")
+ (("/bin/sh") (which "sh")))
+ (substitute* "src/toss_test.go"
+ (("; cat") (string-append "; " (which "cat"))))
+ ;; Remove module flags.
+ (substitute* (list "bin/default.do" "bin/hjson-cli.do" "test.do")
+ ((" -mod=vendor") "")
+ ((" -m") ""))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "contrib/do" "-c" "test"))))
+ (add-after 'install 'remove-go-references
+ (assoc-ref go:%standard-phases 'remove-go-references)))))
+ (inputs
+ `(("go-github-com-davecgh-go-xdr" ,go-github-com-davecgh-go-xdr)
+ ("go-github-com-dustin-go-humanize" ,go-github-com-dustin-go-humanize)
+ ("go-github-com-flynn-noise" ,go-github-com-flynn-noise)
+ ("go-github-com-gorhill-cronexpr" ,go-github-com-gorhill-cronexpr)
+ ("go-github-com-hjson-hjson-go" ,go-github-com-hjson-hjson-go)
+ ("go-github-com-klauspost-compress" ,go-github-com-klauspost-compress)
+ ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
+ ("go-golang-org-x-net" ,go-golang-org-x-net)
+ ("go-golang-org-x-term" ,go-golang-org-x-term)
+ ("go-lukechampine-com-blake3" ,go-lukechampine-com-blake3)))
+ (native-inputs
+ `(("go" ,go)
+ ("texinfo" ,texinfo)))
+ (home-page "http://www.nncpgo.org/")
+ (synopsis "Store and forward utilities")
+ (description "NNCP (Node to Node copy) is a collection of utilities
+simplifying secure store-and-forward files, mail and command exchanging.
+These utilities are intended to help build up small size (dozens of nodes)
+ad-hoc friend-to-friend (F2F) statically routed darknet delay-tolerant
+networks for fire-and-forget secure reliable files, file requests, Internet
+mail and commands transmission. All packets are integrity checked, end-to-end
+encrypted, explicitly authenticated by known participants public keys. Onion
+encryption is applied to relayed packets. Each node acts both as a client and
+server, can use push and poll behaviour model. Multicasting areas, offline
+sneakernet/floppynet, dead drops, sequential and append-only CD-ROM/tape
+storages, air-gapped computers and online TCP daemon with full-duplex
+resumable data transmission exists are all supported.")
+ (license gpl3)))
--
2.32.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH 0/7] Add nncp
2021-08-01 20:16 ` Arun Isaac
2021-08-01 20:19 ` [bug#49494] [PATCH v2] gnu: " Arun Isaac
@ 2021-08-02 5:54 ` Sarah Morgensen
2021-08-02 17:10 ` Arun Isaac
1 sibling, 1 reply; 20+ messages in thread
From: Sarah Morgensen @ 2021-08-02 5:54 UTC (permalink / raw)
To: Arun Isaac; +Cc: 49494
Hi,
Arun Isaac <arunisaac@systemreboot.net> writes:
> Hi Sarah,
>
> I have pushed patches 1-6 to master after implementing your suggestion
> for patch 6 (klauspost-compress). I'm sending a WIP v2 of patch 7 (nncp)
> in a following email. The tests are failing despite implementing your
> suggestion. Any help in that regard would be much appreciated.
Your patch applies on master (fba107e), builds, and passes tests for me;
I'm on x86-64. What's your platform?
[...]
> I've removed the version number from DOCDIR since that's what most
> packages are doing. Even the configure phase of the gnu-build-system
> does not put the version number in docdir. Only the
> install-license-files of the gnu-build-system puts the version number
> in, and that's probably a bug.
Hmm, something to investigate.
>
>> Does CFGPATH need to be set?
>
> I have now set CFGPATH TO /etc/nncp.hjson.
When I run any of the executables, I get:
main.go:73: Error during initialization: stat /usr/local/etc/nncp.hjson:
no such file or directory
[...]
>> I also notice that nncp can use `sendmail`; should `sendmail` be an
>> input as well?
>
> I think sendmail need not be an input. There are many sendmail
> compatible implementations and we can leave it up to the user to install
> one in their profile and configure nncp accordingly.
Makes sense.
> Thanks,
> Arun
Glad to be of help :)
--
Sarah
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH 0/7] Add nncp
2021-08-02 5:54 ` [bug#49494] [PATCH 0/7] " Sarah Morgensen
@ 2021-08-02 17:10 ` Arun Isaac
2021-08-02 18:33 ` Arun Isaac
0 siblings, 1 reply; 20+ messages in thread
From: Arun Isaac @ 2021-08-02 17:10 UTC (permalink / raw)
To: Sarah Morgensen; +Cc: 49494
[-- Attachment #1.1: Type: text/plain, Size: 1168 bytes --]
Hi Sarah,
> Your patch applies on master (fba107e), builds, and passes tests for me;
> I'm on x86-64. What's your platform?
I'm on x86_64 too. I tried on master eb46c6c5c8. I have attached the
complete build log. The tests seem to have timed out after 10
minutes. Could it be something to do with memory usage? I have 4 GB of
RAM.
>> I've removed the version number from DOCDIR since that's what most
>> packages are doing. Even the configure phase of the gnu-build-system
>> does not put the version number in docdir. Only the
>> install-license-files of the gnu-build-system puts the version number
>> in, and that's probably a bug.
>
> Hmm, something to investigate.
Yes, a patch would be welcome. :-)
>>> Does CFGPATH need to be set?
>>
>> I have now set CFGPATH TO /etc/nncp.hjson.
>
> When I run any of the executables, I get:
>
> main.go:73: Error during initialization: stat /usr/local/etc/nncp.hjson:
> no such file or directory
I couldn't reproduce this error message. Which command are you running?
But, I do see that the output of say `nncp-xfer` lists
/usr/local/etc/nncp.hjson as the default configuration path. I will
investigate.
Thanks!
Arun
[-- Attachment #1.2: nncp-test-failure.gz --]
[-- Type: application/octet-stream, Size: 182168 bytes --]
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 524 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH 0/7] Add nncp
2021-08-02 17:10 ` Arun Isaac
@ 2021-08-02 18:33 ` Arun Isaac
2021-08-02 18:40 ` Sarah Morgensen
0 siblings, 1 reply; 20+ messages in thread
From: Arun Isaac @ 2021-08-02 18:33 UTC (permalink / raw)
To: Sarah Morgensen; +Cc: 49494
[-- Attachment #1: Type: text/plain, Size: 1028 bytes --]
Hi Sarah,
>> Your patch applies on master (fba107e), builds, and passes tests for me;
>> I'm on x86-64. What's your platform?
>
> I'm on x86_64 too. I tried on master eb46c6c5c8. I have attached the
> complete build log. The tests seem to have timed out after 10
> minutes. Could it be something to do with memory usage? I have 4 GB of
> RAM.
I set up a tmpfs file system at /tmp. And, curiously, now the package
builds successfully. No idea why this is happening, though.
>>>> Does CFGPATH need to be set?
>>>
>>> I have now set CFGPATH TO /etc/nncp.hjson.
>>
>> When I run any of the executables, I get:
>>
>> main.go:73: Error during initialization: stat /usr/local/etc/nncp.hjson:
>> no such file or directory
>
> I couldn't reproduce this error message. Which command are you running?
> But, I do see that the output of say `nncp-xfer` lists
> /usr/local/etc/nncp.hjson as the default configuration path. I will
> investigate.
That leaves only the CFGPATH issue. I'll figure it out and send a v3
patch.
Regards,
Arun
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 524 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH 0/7] Add nncp
2021-08-02 18:33 ` Arun Isaac
@ 2021-08-02 18:40 ` Sarah Morgensen
2021-08-03 20:12 ` Arun Isaac
2021-08-03 20:16 ` [bug#49494] [PATCH v3] gnu: " Arun Isaac
0 siblings, 2 replies; 20+ messages in thread
From: Sarah Morgensen @ 2021-08-02 18:40 UTC (permalink / raw)
To: Arun Isaac; +Cc: 49494
Hi Arun,
Arun Isaac <arunisaac@systemreboot.net> writes:
> Hi Sarah,
>
>>> Your patch applies on master (fba107e), builds, and passes tests for me;
>>> I'm on x86-64. What's your platform?
>>
>> I'm on x86_64 too. I tried on master eb46c6c5c8. I have attached the
>> complete build log. The tests seem to have timed out after 10
>> minutes. Could it be something to do with memory usage? I have 4 GB of
>> RAM.
>
> I set up a tmpfs file system at /tmp. And, curiously, now the package
> builds successfully. No idea why this is happening, though.
I actually just figured this out as well. You're on a rotational disk,
aren't you? Since nncp makes heavy use of the spool file (which I think
it mocks in /tmp for testing), I think that's why your tests are taking
so long and timing out. Tests complete for me on a SSD in ~40s. (All the
error messages are red herrings; they're expected errors.) If this is
the case, it might be worth it to increase the test timeout for those
who use --no-substitutes.
>
>>>>> Does CFGPATH need to be set?
>>>>
>>>> I have now set CFGPATH TO /etc/nncp.hjson.
>>>
>>> When I run any of the executables, I get:
>>>
>>> main.go:73: Error during initialization: stat /usr/local/etc/nncp.hjson:
>>> no such file or directory
>>
>> I couldn't reproduce this error message. Which command are you running?
>> But, I do see that the output of say `nncp-xfer` lists
>> /usr/local/etc/nncp.hjson as the default configuration path. I will
>> investigate.
Apologies, I got the error with `nncp-stat` and `nncp-check`.
>
> That leaves only the CFGPATH issue. I'll figure it out and send a v3
> patch.
>
> Regards,
> Arun
--
Sarah
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH 0/7] Add nncp
2021-08-02 18:40 ` Sarah Morgensen
@ 2021-08-03 20:12 ` Arun Isaac
2021-08-03 20:16 ` [bug#49494] [PATCH v3] gnu: " Arun Isaac
1 sibling, 0 replies; 20+ messages in thread
From: Arun Isaac @ 2021-08-03 20:12 UTC (permalink / raw)
To: Sarah Morgensen; +Cc: 49494
[-- Attachment #1: Type: text/plain, Size: 1353 bytes --]
Hi Sarah,
>> I set up a tmpfs file system at /tmp. And, curiously, now the package
>> builds successfully. No idea why this is happening, though.
>
> I actually just figured this out as well. You're on a rotational disk,
> aren't you?
Yep.
> Since nncp makes heavy use of the spool file (which I think
> it mocks in /tmp for testing), I think that's why your tests are taking
> so long and timing out. Tests complete for me on a SSD in ~40s. (All the
> error messages are red herrings; they're expected errors.) If this is
> the case, it might be worth it to increase the test timeout for those
> who use --no-substitutes.
Indeed, that makes sense! I have now disabled the timeout. Without a
tmpfs, the tests take ~47 minutes on my rotational disk, but they do
complete successfully.
>>>>>> Does CFGPATH need to be set?
>>>>>
>>>>> I have now set CFGPATH TO /etc/nncp.hjson.
>>>>
>>>> When I run any of the executables, I get:
>>>>
>>>> main.go:73: Error during initialization: stat /usr/local/etc/nncp.hjson:
>>>> no such file or directory
I fixed this as well. `go list` wasn't finding the correct module path,
and thus the correct cfgpath variable was not being set.
I'm sending a v3 of the patch. Let me know if everything looks good, and
I'll push. Thanks for the comprehensive review! :-) The package looks
much better now.
Regards,
Arun
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 524 bytes --]
^ permalink raw reply [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH v3] gnu: Add nncp.
2021-08-02 18:40 ` Sarah Morgensen
2021-08-03 20:12 ` Arun Isaac
@ 2021-08-03 20:16 ` Arun Isaac
2021-08-03 21:40 ` [bug#49494] [PATCH 0/7] " Sarah Morgensen
1 sibling, 1 reply; 20+ messages in thread
From: Arun Isaac @ 2021-08-03 20:16 UTC (permalink / raw)
To: Sarah Morgensen, Arun Isaac; +Cc: 49494
* gnu/packages/uucp.scm (nncp): New variable.
---
gnu/packages/uucp.scm | 118 +++++++++++++++++++++++++++++++++++++++++-
1 file changed, 117 insertions(+), 1 deletion(-)
diff --git a/gnu/packages/uucp.scm b/gnu/packages/uucp.scm
index 1bb4fdb975..120417dea1 100644
--- a/gnu/packages/uucp.scm
+++ b/gnu/packages/uucp.scm
@@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -17,10 +18,13 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages uucp)
+ #:use-module (gnu packages golang)
+ #:use-module (gnu packages texinfo)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
- #:use-module (guix build-system gnu))
+ #:use-module (guix build-system gnu)
+ #:use-module (guix build-system go))
(define-public uucp
(package
@@ -54,3 +58,115 @@
set of utilities for remotely transferring files, email and net news
between computers.")
(license gpl2+)))
+
+(define-public nncp
+ (package
+ (name "nncp")
+ (version "7.5.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "http://www.nncpgo.org/download/nncp-"
+ version ".tar.xz"))
+ (sha256
+ (base32
+ "1r1zgj7gpkdmdm3wf31m0xi8y313kzd4dbyp4r4y8khnp32jvn8l"))
+ (modules '((ice-9 ftw)
+ (guix build utils)))
+ (snippet
+ '(begin
+ ;; Unbundle dependencies.
+ ;; TODO: go.cypherpunks.ru was down at the time of
+ ;; packaging. Unbundle go.cypherpunks dependencies as well once it
+ ;; comes back online.
+ (for-each (lambda (file)
+ (unless (member file (list "." ".." "go.cypherpunks.ru"))
+ (delete-file-recursively (string-append "src/vendor/" file))))
+ (scandir "src/vendor"))
+ ;; Delete built documentation.
+ (delete-file "doc/nncp.info")
+ #t))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:modules ((guix build gnu-build-system)
+ ((guix build go-build-system) #:prefix go:)
+ (guix build utils))
+ #:imported-modules ,%go-build-system-modules
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'unpack 'setup-go-environment
+ (assoc-ref go:%standard-phases 'setup-go-environment))
+ (add-after 'unpack 'go-unpack
+ (lambda* (#:key source #:allow-other-keys)
+ ;; Copy source to GOPATH.
+ (copy-recursively "src" "../src/go.cypherpunks.ru/nncp/v7")
+ ;; Move bundled dependencies to GOPATH.
+ (for-each (lambda (dependency)
+ (rename-file (string-append "src/vendor/go.cypherpunks.ru/"
+ dependency)
+ (string-append "../src/go.cypherpunks.ru/"
+ dependency)))
+ (list "balloon" "recfile"))
+ ;; Delete empty bundled dependencies directory.
+ (delete-file-recursively "src/vendor")))
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ ;; Set configuration path.
+ (setenv "CFGPATH" "/etc/nncp.hjson")
+ ;; Set output directories.
+ (setenv "BINDIR" (string-append out "/bin"))
+ (setenv "INFODIR" (string-append out "/share/info"))
+ (setenv "DOCDIR" (string-append out "/share/doc/nncp")))
+ ;; Set absolute store paths to sh and cat.
+ (substitute* (list "src/pipe.go" "src/toss_test.go")
+ (("/bin/sh") (which "sh")))
+ (substitute* "src/toss_test.go"
+ (("; cat") (string-append "; " (which "cat"))))
+ ;; Remove module flags.
+ (substitute* (list "bin/default.do" "bin/hjson-cli.do" "test.do")
+ ((" -mod=vendor") "")
+ ((" -m") ""))
+ ;; Use the correct module path. `go list` does not report the
+ ;; correct module path since we have moved the source files.
+ (substitute* "bin/default.do"
+ (("^mod=[^\n]*" all) "mod=go.cypherpunks.ru/nncp/v7"))
+ ;; Disable timeout in tests. Tests can take longer than the
+ ;; default timeout on spinning disks.
+ (substitute* "test.do"
+ (("test") "test -timeout 0"))))
+ (replace 'check
+ (lambda* (#:key tests? #:allow-other-keys)
+ (when tests?
+ (invoke "contrib/do" "-c" "test"))))
+ (add-after 'install 'remove-go-references
+ (assoc-ref go:%standard-phases 'remove-go-references)))))
+ (inputs
+ `(("go-github-com-davecgh-go-xdr" ,go-github-com-davecgh-go-xdr)
+ ("go-github-com-dustin-go-humanize" ,go-github-com-dustin-go-humanize)
+ ("go-github-com-flynn-noise" ,go-github-com-flynn-noise)
+ ("go-github-com-gorhill-cronexpr" ,go-github-com-gorhill-cronexpr)
+ ("go-github-com-hjson-hjson-go" ,go-github-com-hjson-hjson-go)
+ ("go-github-com-klauspost-compress" ,go-github-com-klauspost-compress)
+ ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
+ ("go-golang-org-x-net" ,go-golang-org-x-net)
+ ("go-golang-org-x-term" ,go-golang-org-x-term)
+ ("go-lukechampine-com-blake3" ,go-lukechampine-com-blake3)))
+ (native-inputs
+ `(("go" ,go)
+ ("texinfo" ,texinfo)))
+ (home-page "http://www.nncpgo.org/")
+ (synopsis "Store and forward utilities")
+ (description "NNCP (Node to Node copy) is a collection of utilities
+simplifying secure store-and-forward files, mail and command exchanging.
+These utilities are intended to help build up small size (dozens of nodes)
+ad-hoc friend-to-friend (F2F) statically routed darknet delay-tolerant
+networks for fire-and-forget secure reliable files, file requests, Internet
+mail and commands transmission. All packets are integrity checked, end-to-end
+encrypted, explicitly authenticated by known participants public keys. Onion
+encryption is applied to relayed packets. Each node acts both as a client and
+server, can use push and poll behaviour model. Multicasting areas, offline
+sneakernet/floppynet, dead drops, sequential and append-only CD-ROM/tape
+storages, air-gapped computers and online TCP daemon with full-duplex
+resumable data transmission exists are all supported.")
+ (license gpl3)))
--
2.32.0
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [bug#49494] [PATCH 0/7] Add nncp
2021-08-03 20:16 ` [bug#49494] [PATCH v3] gnu: " Arun Isaac
@ 2021-08-03 21:40 ` Sarah Morgensen
2021-08-04 6:42 ` bug#49494: " Arun Isaac
0 siblings, 1 reply; 20+ messages in thread
From: Sarah Morgensen @ 2021-08-03 21:40 UTC (permalink / raw)
To: Arun Isaac; +Cc: 49494
Hi,
Arun Isaac <arunisaac@systemreboot.net> writes:
> * gnu/packages/uucp.scm (nncp): New variable.
> ---
> gnu/packages/uucp.scm | 118 +++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 117 insertions(+), 1 deletion(-)
>
> diff --git a/gnu/packages/uucp.scm b/gnu/packages/uucp.scm
> index 1bb4fdb975..120417dea1 100644
> --- a/gnu/packages/uucp.scm
> +++ b/gnu/packages/uucp.scm
> @@ -1,5 +1,6 @@
> ;;; GNU Guix --- Functional package management for GNU
> ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
> +;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
> ;;;
> ;;; This file is part of GNU Guix.
> ;;;
> @@ -17,10 +18,13 @@
> ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
>
> (define-module (gnu packages uucp)
> + #:use-module (gnu packages golang)
> + #:use-module (gnu packages texinfo)
> #:use-module (guix licenses)
> #:use-module (guix packages)
> #:use-module (guix download)
> - #:use-module (guix build-system gnu))
> + #:use-module (guix build-system gnu)
> + #:use-module (guix build-system go))
>
> (define-public uucp
> (package
> @@ -54,3 +58,115 @@
> set of utilities for remotely transferring files, email and net news
> between computers.")
> (license gpl2+)))
> +
> +(define-public nncp
> + (package
> + (name "nncp")
> + (version "7.5.0")
> + (source
> + (origin
> + (method url-fetch)
> + (uri (string-append "http://www.nncpgo.org/download/nncp-"
> + version ".tar.xz"))
> + (sha256
> + (base32
> + "1r1zgj7gpkdmdm3wf31m0xi8y313kzd4dbyp4r4y8khnp32jvn8l"))
> + (modules '((ice-9 ftw)
> + (guix build utils)))
> + (snippet
> + '(begin
> + ;; Unbundle dependencies.
> + ;; TODO: go.cypherpunks.ru was down at the time of
> + ;; packaging. Unbundle go.cypherpunks dependencies as well once it
> + ;; comes back online.
> + (for-each (lambda (file)
> + (unless (member file (list "." ".." "go.cypherpunks.ru"))
> + (delete-file-recursively (string-append "src/vendor/" file))))
> + (scandir "src/vendor"))
> + ;; Delete built documentation.
> + (delete-file "doc/nncp.info")
> + #t))))
> + (build-system gnu-build-system)
> + (arguments
> + `(#:modules ((guix build gnu-build-system)
> + ((guix build go-build-system) #:prefix go:)
> + (guix build utils))
> + #:imported-modules ,%go-build-system-modules
> + #:phases
> + (modify-phases %standard-phases
> + (add-before 'unpack 'setup-go-environment
> + (assoc-ref go:%standard-phases 'setup-go-environment))
> + (add-after 'unpack 'go-unpack
> + (lambda* (#:key source #:allow-other-keys)
> + ;; Copy source to GOPATH.
> + (copy-recursively "src" "../src/go.cypherpunks.ru/nncp/v7")
> + ;; Move bundled dependencies to GOPATH.
> + (for-each (lambda (dependency)
> + (rename-file (string-append "src/vendor/go.cypherpunks.ru/"
> + dependency)
> + (string-append "../src/go.cypherpunks.ru/"
> + dependency)))
> + (list "balloon" "recfile"))
> + ;; Delete empty bundled dependencies directory.
> + (delete-file-recursively "src/vendor")))
> + (replace 'configure
> + (lambda* (#:key outputs #:allow-other-keys)
> + (let ((out (assoc-ref outputs "out")))
> + ;; Set configuration path.
> + (setenv "CFGPATH" "/etc/nncp.hjson")
> + ;; Set output directories.
> + (setenv "BINDIR" (string-append out "/bin"))
> + (setenv "INFODIR" (string-append out "/share/info"))
> + (setenv "DOCDIR" (string-append out "/share/doc/nncp")))
> + ;; Set absolute store paths to sh and cat.
> + (substitute* (list "src/pipe.go" "src/toss_test.go")
> + (("/bin/sh") (which "sh")))
> + (substitute* "src/toss_test.go"
> + (("; cat") (string-append "; " (which "cat"))))
> + ;; Remove module flags.
> + (substitute* (list "bin/default.do" "bin/hjson-cli.do" "test.do")
> + ((" -mod=vendor") "")
> + ((" -m") ""))
> + ;; Use the correct module path. `go list` does not report the
> + ;; correct module path since we have moved the source files.
> + (substitute* "bin/default.do"
> + (("^mod=[^\n]*" all) "mod=go.cypherpunks.ru/nncp/v7"))
> + ;; Disable timeout in tests. Tests can take longer than the
> + ;; default timeout on spinning disks.
> + (substitute* "test.do"
> + (("test") "test -timeout 0"))))
> + (replace 'check
> + (lambda* (#:key tests? #:allow-other-keys)
> + (when tests?
> + (invoke "contrib/do" "-c" "test"))))
> + (add-after 'install 'remove-go-references
> + (assoc-ref go:%standard-phases 'remove-go-references)))))
> + (inputs
> + `(("go-github-com-davecgh-go-xdr" ,go-github-com-davecgh-go-xdr)
> + ("go-github-com-dustin-go-humanize" ,go-github-com-dustin-go-humanize)
> + ("go-github-com-flynn-noise" ,go-github-com-flynn-noise)
> + ("go-github-com-gorhill-cronexpr" ,go-github-com-gorhill-cronexpr)
> + ("go-github-com-hjson-hjson-go" ,go-github-com-hjson-hjson-go)
> + ("go-github-com-klauspost-compress" ,go-github-com-klauspost-compress)
> + ("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
> + ("go-golang-org-x-net" ,go-golang-org-x-net)
> + ("go-golang-org-x-term" ,go-golang-org-x-term)
> + ("go-lukechampine-com-blake3" ,go-lukechampine-com-blake3)))
> + (native-inputs
> + `(("go" ,go)
> + ("texinfo" ,texinfo)))
> + (home-page "http://www.nncpgo.org/")
> + (synopsis "Store and forward utilities")
> + (description "NNCP (Node to Node copy) is a collection of utilities
> +simplifying secure store-and-forward files, mail and command exchanging.
> +These utilities are intended to help build up small size (dozens of nodes)
> +ad-hoc friend-to-friend (F2F) statically routed darknet delay-tolerant
> +networks for fire-and-forget secure reliable files, file requests, Internet
> +mail and commands transmission. All packets are integrity checked, end-to-end
> +encrypted, explicitly authenticated by known participants public keys. Onion
> +encryption is applied to relayed packets. Each node acts both as a client and
> +server, can use push and poll behaviour model. Multicasting areas, offline
> +sneakernet/floppynet, dead drops, sequential and append-only CD-ROM/tape
> +storages, air-gapped computers and online TCP daemon with full-duplex
> +resumable data transmission exists are all supported.")
> + (license gpl3)))
This LGTM!
--
Sarah
^ permalink raw reply [flat|nested] 20+ messages in thread