* [bug#41637] [PATCH] gnu: Add hashcash. @ 2020-06-01 0:40 Jakub Kądziołka 2020-06-02 12:12 ` Mathieu Othacehe ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Jakub Kądziołka @ 2020-06-01 0:40 UTC (permalink / raw) To: 41637 * gnu/packages/networking.scm (hashcash): New variable. --- Is the license field here alright? Here's what the LICENSE file has to say: > This software can be distributed and used under any of the following > licenses: > > CPL > public domain > BSD (3 clause -- no advertising clause) > LGPL (2.1) > GPL (2) > > in rough order of author preference. > > The CPL is probably unique to this package, and is described here: > http://www.cypherspace.org/CPL/; if you can't be bothered to figure it > out feel free to use one of the other licenses. Earlier versions > where distributed just under CPL. CPL allows you to re-license under > a license of your choice, I just include other specific licenses to > save people having to read, understand and feel confident in the > validity of the CPL. > > NOTE: on systems without a POSIX getopt this package will be linked > with the included getopt.c which is distributed under GPL 2. gnu/packages/networking.scm | 46 +++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index fd29370841..169aa4ed8e 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -38,6 +38,7 @@ ;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> +;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -3189,3 +3190,48 @@ CDP. The goal of LLDP is to provide an inter-vendor compatible mechanism to deliver Link-Layer notifications to adjacent network devices. @code{lldpd} is an implementation of LLDP. It also supports some proprietary protocols.") (license license:isc))) + +(define-public hashcash + (package + (name "hashcash") + (version "1.22") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.hashcash.org/source/hashcash-" + version ".tgz")) + (sha256 + (base32 + "15kqaimwb2y8wvzpn73021bvay9mz1gqqfc40gk4hj6f84nz34h1")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags '("CC=gcc") + #:phases + (modify-phases %standard-phases + (delete 'configure) + ;; No tests available. + (delete 'check) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((outdir (assoc-ref outputs "out")) + (bindir (string-append outdir "/bin")) + (mandir (string-append outdir "/share/man/man1")) + (docdir (string-append outdir "/share/doc/hashcash-" ,version))) + ;; make install assumes /usr and doesn't provide a way to override it + (install-file "hashcash" bindir) + (install-file "hashcash.1" mandir) + (install-file "README" docdir) + (install-file "LICENSE" docdir) + (install-file "CHANGELOG" docdir) + #t)))))) + (home-page "https://www.hashcash.org/") + (synopsis "Denial-of-service countermeasure") + (description "Hashcash is a proof-of-work algorithm, which has been used +as a denial-of-service countermeasure technique in a number of systems. + +A hashcash stamp constitutes a proof-of-work which takes a parametrizable +amount of work to compute for the sender. The recipient can verify received +hashcash stamps efficiently. + +This package contains a command-line tool for computing and verifying hashcash +stamps.") + (license license:public-domain))) -- 2.26.2 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [bug#41637] [PATCH] gnu: Add hashcash. 2020-06-01 0:40 [bug#41637] [PATCH] gnu: Add hashcash Jakub Kądziołka @ 2020-06-02 12:12 ` Mathieu Othacehe 2020-06-02 13:25 ` Jakub Kądziołka 2020-06-03 6:55 ` Mathieu Othacehe 2020-06-20 21:29 ` bug#41637: Done: " Jakub Kądziołka 2 siblings, 1 reply; 8+ messages in thread From: Mathieu Othacehe @ 2020-06-02 12:12 UTC (permalink / raw) To: Jakub Kądziołka; +Cc: 41637 Hello Jakub, > + `(#:make-flags '("CC=gcc") It would be better to use "cc-for-target" here. You can check if cross-compilation works by running something like: --8<---------------cut here---------------start------------->8--- guix build --target=aarch64-linux-gnu hashcash --8<---------------cut here---------------end--------------->8--- Thanks, Mathieu ^ permalink raw reply [flat|nested] 8+ messages in thread
* [bug#41637] [PATCH] gnu: Add hashcash. 2020-06-02 12:12 ` Mathieu Othacehe @ 2020-06-02 13:25 ` Jakub Kądziołka 0 siblings, 0 replies; 8+ messages in thread From: Jakub Kądziołka @ 2020-06-02 13:25 UTC (permalink / raw) To: Mathieu Othacehe; +Cc: 41637 [-- Attachment #1: Type: text/plain, Size: 691 bytes --] On Tue, Jun 02, 2020 at 02:12:05PM +0200, Mathieu Othacehe wrote: > > Hello Jakub, > > > + `(#:make-flags '("CC=gcc") > > It would be better to use "cc-for-target" here. You can check if > cross-compilation works by running something like: > > --8<---------------cut here---------------start------------->8--- > guix build --target=aarch64-linux-gnu hashcash > --8<---------------cut here---------------end--------------->8--- Thanks! I had no idea this affects cross-compilation... I have changed that line to be `(#:make-flags (list (string-append "CC=" ,(cc-for-target))) instead. Does the rest of the patch look alright? Regards, Jakub Kądziołka [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* [bug#41637] [PATCH] gnu: Add hashcash. 2020-06-01 0:40 [bug#41637] [PATCH] gnu: Add hashcash Jakub Kądziołka 2020-06-02 12:12 ` Mathieu Othacehe @ 2020-06-03 6:55 ` Mathieu Othacehe 2020-06-03 12:18 ` Jakub Kądziołka 2020-06-06 14:39 ` Jakub Kądziołka 2020-06-20 21:29 ` bug#41637: Done: " Jakub Kądziołka 2 siblings, 2 replies; 8+ messages in thread From: Mathieu Othacehe @ 2020-06-03 6:55 UTC (permalink / raw) To: Jakub Kądziołka; +Cc: 41637 Hey Jakub, Thanks for fixing the cross-compilation, a full review this time :) > + (let* ((outdir (assoc-ref outputs "out")) > + (bindir (string-append outdir "/bin")) > + (mandir (string-append outdir "/share/man/man1")) > + (docdir (string-append outdir "/share/doc/hashcash-" ,version))) > + ;; make install assumes /usr and doesn't provide a way to override it > + (install-file "hashcash" bindir) > + (install-file "hashcash.1" mandir) > + (install-file "README" docdir) > + (install-file "LICENSE" docdir) > + (install-file "CHANGELOG" docdir) I think you can set the variables INSTALL_PATH, MAN_INSTALL_PATH and DOC_INSTALL_PATH instead. > + #t)))))) > + (home-page "https://www.hashcash.org/") > + (synopsis "Denial-of-service countermeasure") > + (description "Hashcash is a proof-of-work algorithm, which has been used > +as a denial-of-service countermeasure technique in a number of systems. You can remove "in a number of systems". > +A hashcash stamp constitutes a proof-of-work which takes a parametrizable > +amount of work to compute for the sender. The recipient can verify received > +hashcash stamps efficiently. > + > +This package contains a command-line tool for computing and verifying hashcash > +stamps.") > + (license license:public-domain))) I'm also concerned by this line in the Makefile: --8<---------------cut here---------------start------------->8--- # request static link of -lcrypto only LIBCRYPTO=/usr/lib/libcrypto.a --8<---------------cut here---------------end--------------->8--- We should maybe add "openssl" to the inputs and fix this variable (that's what Nix does). Thanks, Mathieu ^ permalink raw reply [flat|nested] 8+ messages in thread
* [bug#41637] [PATCH] gnu: Add hashcash. 2020-06-03 6:55 ` Mathieu Othacehe @ 2020-06-03 12:18 ` Jakub Kądziołka 2020-06-03 12:30 ` Mathieu Othacehe 2020-06-06 14:39 ` Jakub Kądziołka 1 sibling, 1 reply; 8+ messages in thread From: Jakub Kądziołka @ 2020-06-03 12:18 UTC (permalink / raw) To: Mathieu Othacehe; +Cc: 41637 [-- Attachment #1: Type: text/plain, Size: 2423 bytes --] On Wed, Jun 03, 2020 at 08:55:39AM +0200, Mathieu Othacehe wrote: > > Hey Jakub, > > Thanks for fixing the cross-compilation, a full review this time :) > > > + (let* ((outdir (assoc-ref outputs "out")) > > + (bindir (string-append outdir "/bin")) > > + (mandir (string-append outdir "/share/man/man1")) > > + (docdir (string-append outdir "/share/doc/hashcash-" ,version))) > > + ;; make install assumes /usr and doesn't provide a way to override it > > + (install-file "hashcash" bindir) > > + (install-file "hashcash.1" mandir) > > + (install-file "README" docdir) > > + (install-file "LICENSE" docdir) > > + (install-file "CHANGELOG" docdir) > > I think you can set the variables INSTALL_PATH, MAN_INSTALL_PATH and > DOC_INSTALL_PATH instead. Unfortunately, the variables are defined with `=` instead of `?=`, so the Makefile always overwrites them. We would also want to skip installing the `sha1' tool like Debian does, since `sha1sum' is already a thing. > > + #t)))))) > > + (home-page "https://www.hashcash.org/") > > + (synopsis "Denial-of-service countermeasure") > > + (description "Hashcash is a proof-of-work algorithm, which has been used > > +as a denial-of-service countermeasure technique in a number of systems. > > You can remove "in a number of systems". > > > +A hashcash stamp constitutes a proof-of-work which takes a parametrizable > > +amount of work to compute for the sender. The recipient can verify received > > +hashcash stamps efficiently. > > + > > +This package contains a command-line tool for computing and verifying hashcash > > +stamps.") > > + (license license:public-domain))) > > I'm also concerned by this line in the Makefile: > > --8<---------------cut here---------------start------------->8--- > # request static link of -lcrypto only > LIBCRYPTO=/usr/lib/libcrypto.a > --8<---------------cut here---------------end--------------->8--- > > We should maybe add "openssl" to the inputs and fix this variable > (that's what Nix does). From what I've read, openssl is not used by default, but only when a target like `gnu-openssl' is used. I'll make a build with openssl and benchmark which is faster... Regards, Jakub Kądziołka [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* [bug#41637] [PATCH] gnu: Add hashcash. 2020-06-03 12:18 ` Jakub Kądziołka @ 2020-06-03 12:30 ` Mathieu Othacehe 0 siblings, 0 replies; 8+ messages in thread From: Mathieu Othacehe @ 2020-06-03 12:30 UTC (permalink / raw) To: Jakub Kądziołka; +Cc: 41637 >> I think you can set the variables INSTALL_PATH, MAN_INSTALL_PATH and >> DOC_INSTALL_PATH instead. > > Unfortunately, the variables are defined with `=` instead of `?=`, so > the Makefile always overwrites them. We would also want to skip > installing the `sha1' tool like Debian does, since `sha1sum' is already > a thing. Not if they are passed on the command line, see: https://www.gnu.org/software/make/manual/html_node/Overriding.html Mathieu ^ permalink raw reply [flat|nested] 8+ messages in thread
* [bug#41637] [PATCH] gnu: Add hashcash. 2020-06-03 6:55 ` Mathieu Othacehe 2020-06-03 12:18 ` Jakub Kądziołka @ 2020-06-06 14:39 ` Jakub Kądziołka 1 sibling, 0 replies; 8+ messages in thread From: Jakub Kądziołka @ 2020-06-06 14:39 UTC (permalink / raw) To: Mathieu Othacehe; +Cc: 41637 [-- Attachment #1.1: Type: text/plain, Size: 3287 bytes --] On Wed, Jun 03, 2020 at 08:55:39AM +0200, Mathieu Othacehe wrote: > > Hey Jakub, > > Thanks for fixing the cross-compilation, a full review this time :) > > > + (let* ((outdir (assoc-ref outputs "out")) > > + (bindir (string-append outdir "/bin")) > > + (mandir (string-append outdir "/share/man/man1")) > > + (docdir (string-append outdir "/share/doc/hashcash-" ,version))) > > + ;; make install assumes /usr and doesn't provide a way to override it > > + (install-file "hashcash" bindir) > > + (install-file "hashcash.1" mandir) > > + (install-file "README" docdir) > > + (install-file "LICENSE" docdir) > > + (install-file "CHANGELOG" docdir) > > I think you can set the variables INSTALL_PATH, MAN_INSTALL_PATH and > DOC_INSTALL_PATH instead. > > > + #t)))))) > > + (home-page "https://www.hashcash.org/") > > + (synopsis "Denial-of-service countermeasure") > > + (description "Hashcash is a proof-of-work algorithm, which has been used > > +as a denial-of-service countermeasure technique in a number of systems. > > You can remove "in a number of systems". Note that systems means things like e-mail or bitcoin, rather than Guix or Debian. > > +A hashcash stamp constitutes a proof-of-work which takes a parametrizable > > +amount of work to compute for the sender. The recipient can verify received > > +hashcash stamps efficiently. > > + > > +This package contains a command-line tool for computing and verifying hashcash > > +stamps.") > > + (license license:public-domain))) > > I'm also concerned by this line in the Makefile: > > --8<---------------cut here---------------start------------->8--- > # request static link of -lcrypto only > LIBCRYPTO=/usr/lib/libcrypto.a > --8<---------------cut here---------------end--------------->8--- > > We should maybe add "openssl" to the inputs and fix this variable > (that's what Nix does). Firstly, the benchmarking code seems to be broken in Hashcash 1.22. Downgrading to 1.21 and running hashcash -sv, I found that OpenSSL is slower than another minting backend, and is not used by default. I believe it would be better to not include OpenSSL in the package. That's what Debian does, anyway. I therefore propose only the following changes: diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index b38e75eb7f..ecd72eee26 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -3217,7 +3217,7 @@ an implementation of LLDP. It also supports some proprietary protocols.") (bindir (string-append outdir "/bin")) (mandir (string-append outdir "/share/man/man1")) (docdir (string-append outdir "/share/doc/hashcash-" ,version))) - ;; make install assumes /usr and doesn't provide a way to override it + ;; Install manually, as we don't need the `sha1' binary (install-file "hashcash" bindir) (install-file "hashcash.1" mandir) (install-file "README" docdir) Regards, Jakub Kądziołka [-- Attachment #1.2: v2-0001-gnu-Add-hashcash.patch --] [-- Type: text/plain, Size: 3127 bytes --] From de679e91b17b3a04a5f07446d0b121ed8f5890ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20K=C4=85dzio=C5=82ka?= <kuba@kadziolka.net> Date: Mon, 1 Jun 2020 02:37:03 +0200 Subject: [PATCH v2] gnu: Add hashcash. * gnu/packages/networking.scm (hashcash): New variable. --- gnu/packages/networking.scm | 47 +++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index fd29370841..d7de5b1956 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -38,6 +38,7 @@ ;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> +;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -3189,3 +3190,49 @@ CDP. The goal of LLDP is to provide an inter-vendor compatible mechanism to deliver Link-Layer notifications to adjacent network devices. @code{lldpd} is an implementation of LLDP. It also supports some proprietary protocols.") (license license:isc))) + +(define-public hashcash + (package + (name "hashcash") + (version "1.22") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.hashcash.org/source/hashcash-" + version ".tgz")) + (sha256 + (base32 + "15kqaimwb2y8wvzpn73021bvay9mz1gqqfc40gk4hj6f84nz34h1")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags (list (string-append "CC=" ,(cc-for-target))) + #:phases + (modify-phases %standard-phases + (delete 'configure) + ;; No tests available. + (delete 'check) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((outdir (assoc-ref outputs "out")) + (bindir (string-append outdir "/bin")) + (mandir (string-append outdir "/share/man/man1")) + (docdir (string-append outdir "/share/doc/hashcash-" ,version))) + ;; Install manually, as we don't need the `sha1' binary + (install-file "hashcash" bindir) + (install-file "hashcash.1" mandir) + (install-file "README" docdir) + (install-file "LICENSE" docdir) + (install-file "CHANGELOG" docdir) + #t)))))) + (home-page "https://www.hashcash.org/") + (synopsis "Denial-of-service countermeasure") + (description "Hashcash is a proof-of-work algorithm, which has been used +as a denial-of-service countermeasure technique in a number of systems. + +A hashcash stamp constitutes a proof-of-work which takes a parametrizable +amount of work to compute for the sender. The recipient can verify received +hashcash stamps efficiently. + +This package contains a command-line tool for computing and verifying hashcash +stamps.") + (license license:public-domain))) -- 2.26.2 [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply related [flat|nested] 8+ messages in thread
* bug#41637: Done: [PATCH] gnu: Add hashcash. 2020-06-01 0:40 [bug#41637] [PATCH] gnu: Add hashcash Jakub Kądziołka 2020-06-02 12:12 ` Mathieu Othacehe 2020-06-03 6:55 ` Mathieu Othacehe @ 2020-06-20 21:29 ` Jakub Kądziołka 2 siblings, 0 replies; 8+ messages in thread From: Jakub Kądziołka @ 2020-06-20 21:29 UTC (permalink / raw) To: 41637-done [-- Attachment #1: Type: text/plain, Size: 78 bytes --] Pushed to master as commit ef6d3b643689953b71fe103e8c6f520b54996f11, closing. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-06-20 21:30 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-06-01 0:40 [bug#41637] [PATCH] gnu: Add hashcash Jakub Kądziołka 2020-06-02 12:12 ` Mathieu Othacehe 2020-06-02 13:25 ` Jakub Kądziołka 2020-06-03 6:55 ` Mathieu Othacehe 2020-06-03 12:18 ` Jakub Kądziołka 2020-06-03 12:30 ` Mathieu Othacehe 2020-06-06 14:39 ` Jakub Kądziołka 2020-06-20 21:29 ` bug#41637: Done: " Jakub Kądziołka
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/guix.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.