Package: guix-patches;
Reported by: Sharlatan Hellseher <sharlatanus <at> gmail.com>
Date: Sun, 6 Aug 2023 19:55:01 UTC
Severity: normal
Tags: patch
Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Maxim Cournoyer <maxim.cournoyer <at> gmail.com> To: Sharlatan Hellseher <sharlatanus <at> gmail.com> Cc: 65118 <at> debbugs.gnu.org Subject: [bug#65118] [PATCH 0/9]: gnu: Add NSQ. Date: Sat, 26 Aug 2023 22:02:29 -0400
Hello! Sharlatan Hellseher <sharlatanus <at> gmail.com> writes: > * gnu/packages/high-availability.scm (nsq): New variable. > --- > gnu/packages/high-availability.scm | 87 ++++++++++++++++++++++++++++++ > 1 file changed, 87 insertions(+) > > diff --git a/gnu/packages/high-availability.scm b/gnu/packages/high-availability.scm > index 11ff8014cf..9763a04b21 100644 > --- a/gnu/packages/high-availability.scm > +++ b/gnu/packages/high-availability.scm > @@ -34,6 +34,7 @@ (define-module (gnu packages high-availability) > #:use-module (gnu packages gcc) > #:use-module (gnu packages gettext) > #:use-module (gnu packages glib) > + #:use-module (gnu packages golang) > #:use-module (gnu packages hardware) > #:use-module (gnu packages linux) > #:use-module (gnu packages lua) > @@ -43,12 +44,14 @@ (define-module (gnu packages high-availability) > #:use-module (gnu packages pkg-config) > #:use-module (gnu packages python) > #:use-module (gnu packages rsync) > + #:use-module (gnu packages syncthing) > #:use-module (gnu packages tls) > #:use-module (gnu packages valgrind) > #:use-module (gnu packages version-control) > #:use-module (gnu packages xml) > #:use-module (gnu packages) > #:use-module (guix build-system gnu) > + #:use-module (guix build-system go) > #:use-module (guix download) > #:use-module (guix gexp) > #:use-module (guix git-download) > @@ -190,6 +193,90 @@ (define-public kronosnet > in general better performances compared to the old network protocol.") > (license (list license:gpl2+ license:lgpl2.1+)))) > > +(define-public nsq > + (package > + (name "nsq") > + (version "1.2.1") > + (source > + (origin > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/nsqio/nsq") > + (commit (string-append "v" version)))) > + (file-name (git-file-name name version)) > + (sha256 > + (base32 "0ajqjwfn06zsmz21z9mkl4cblarypaf20228pqcd1293zl6y3ry8")))) > + (build-system go-build-system) > + (arguments > + (list > + #:import-path "github.com/nsqio/nsq" > + #:install-source? #f > + #:phases > + #~(modify-phases %standard-phases > + (replace 'build > + (lambda* (#:key import-path #:allow-other-keys) > + (with-directory-excursion (string-append "src/" import-path) > + (invoke "make")))) > + (replace 'check > + (lambda* (#:key tests? import-path #:allow-other-keys) > + (when tests? > + (setenv "HOME" "/tmp") > + (with-directory-excursion (string-append "src/" import-path) > + (invoke #$@(if (string-prefix? "x86_64-linux" > + (or (%current-system) > + (%current-target-system))) The target should be checked before the system, as current-system is always defined, and would shortcut the or. But you can now safely forget about this detail and use the 'target-x86?' procedure instead, which comes from (guix tilers). > + (list "go" "test" "-v" "-race" "./...") > + (list "go" "test" "-v" "./..."))))))) > + (replace 'install > + (lambda* (#:key import-path #:allow-other-keys) > + (with-directory-excursion (string-append "src/" import-path) > + (invoke "make" (string-append "PREFIX=" #$output) > + "install"))))))) > + (native-inputs > + (list go-github-com-bitly-go-hostpool > + go-github-com-bitly-timer-metrics > + go-github-com-blang-semver > + go-github-com-bmizerany-perks-quantile > + go-github-com-burntsushi-toml > + go-github-com-davecgh-go-spew > + go-github-com-golang-snappy ; Move to (gnu packages golang) > + go-github-com-mreiferson-go-svc > + go-github-com-julienschmidt-httprouter > + go-github-com-mreiferson-go-options > + go-github-com-mreiferson-go-svc > + go-github-com-nsqio-go-diskqueue > + go-github-com-nsqio-go-nsq > + python-wrapper)) > + (home-page "https://nsq.io") > + (synopsis "Realtime distributed messaging platform") > + (description > + "NSQ is a realtime distributed messaging platform designed to operate at > +scale, handling billions of messages per day. > + > +Key features: > +@itemize > +@item support distributed topologies with no SPOF What is SPOF? > +@item horizontally scalable (no brokers, seamlessly add more nodes to the > +cluster) > +@item low-latency push based message delivery (performance) > +@item combination load-balanced and multicast style message routing I'd replace 'combination' here with the 'combine' verb. > +@item excel at both streaming (high-throughput) and job oriented > +(low-throughput) workloads > +@item primarily in-memory (beyond a high-water mark messages are transparently > +kept on disk) > +@item runtime discovery service for consumers to find producers (nsqlookupd) > +@item transport layer security (TLS) > +@item data format agnostic > +@item few dependencies (easy to deploy) and a sane, bounded, default > +configuration > +@item simple TCP protocol supporting client libraries in any language > +@item HTTP interface for stats, admin actions, and producers (no client > +library needed to publish) > +@item integrates with statsd for realtime instrumentation The imperative rather than descriptive verb tense is used elsewhere here, I'd stick with it (integrate with ...). Could you send a v2 addressing the above? -- Thanks, Maxim
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.