unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
* [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 public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).