Subject: Re: [bug#28934] ROCA detect

From: [email-masked] (Ludovic Courtès)
Date: Wed, 25 Oct 2017 21:59:14 -0700

Hi ng0,

ng0 <[email-masked]> skribis:

> From 412e84ce5e2f03ab67c29d751667bfd7b53ef34a Mon Sep 17 00:00:00 2001
> From: ng0 <[email-masked]>
> Date: Sat, 21 Oct 2017 22:46:06 +0000
> Subject: [PATCH 1/6] gnu: Add python-humanfriendly.
>
> * gnu/packages/python.scm (python-humanfriendly): New variable.

Note: commit logs should also mention the “python2-” variables that are
added.  I amended them.

Committed with these adjustments:

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index edb434fb3..6e01d2e2d 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -1112,15 +1112,18 @@ etc.).  The package is structured to make adding new modules easy.")
          "0pisgizjql86785jchfjv217g0lsgk114g2lja5j4y3lsc3b9szi"))))
     (build-system python-build-system)
     (arguments
-     `(; Tests depend on coloredlogs, which in turn depends on humanfriendly.
+     `(;; XXX: Tests depend on coloredlogs, which in turn depends on humanfriendly.
        #:tests? #f))
     (propagated-inputs
      `(("python-monotonic" ,python-monotonic)))
     (home-page "https://humanfriendly.readthedocs.io")
-    (synopsis "Human friendly input and output in Python")
+    (synopsis "Human-friendly input and output in Python")
     (description
-     "The functions and classes in the humanfriendly package can be used
-to make text interfaces more user friendly.")
+     "The functions and classes in @code{humanfriendly} can be used to make
+text interfaces more user-friendly.  It includes tools to parse and format
+numbers, file sizes, and timespans, timers for long-running operations, menus
+to allow the user to choose from a list of options, and terminal interaction
+helpers.")
     (license license:expat)))
 
 (define-public python2-humanfriendly

> From 81e9157501ffa3e4f47498fe802702b3bf66004c Mon Sep 17 00:00:00 2001
> From: ng0 <[email-masked]>
> Date: Sat, 21 Oct 2017 22:56:09 +0000
> Subject: [PATCH 2/6] gnu: Add python-capturer.
>
> * gnu/packages/python.scm (python-capturer): New variable.

[...]

> From 662d4fa2c40202cfeb2e1ce8918d23f3cc4469b2 Mon Sep 17 00:00:00 2001
> From: ng0 <[email-masked]>
> Date: Sat, 21 Oct 2017 23:12:17 +0000
> Subject: [PATCH 3/6] gnu: Add python-verboselogs.
>
> * gnu/packages/python.scm (python-verboselogs): New variable.

[...]

> From 36170f8801dbb33d91626447ff3e69bf1ac31dca Mon Sep 17 00:00:00 2001
> From: ng0 <[email-masked]>
> Date: Sat, 21 Oct 2017 23:29:17 +0000
> Subject: [PATCH 4/6] gnu: Add python-coloredlogs.
>
> * gnu/packages/python.scm (python-coloredlogs): New variable.

Applied with similar modifications to descriptions.

> From 8ff7e30582a6d84b6c9bf56cd985ef9c04af9eaa Mon Sep 17 00:00:00 2001
> From: ng0 <[email-masked]>
> Date: Sat, 21 Oct 2017 23:41:26 +0000
> Subject: [PATCH 5/6] gnu: Add python-pgpdump.
>
> * gnu/packages/gnupg.scm (python-pgpdump): New variable.

I made these modifications:

diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index 9a6ff68f8..fabeee232 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -851,9 +851,9 @@ them to transform your existing public key into a secret key.")
 files, to verify signatures, and to manage the private and public keys.")
     (license license:gpl3+)))
 
-(define-public python-pgpdump
+(define-public python2-pgpdump
   (package
-    (name "python-pgpdump")
+    (name "python2-pgpdump")
     (version "1.5")
     (source
      (origin
@@ -863,21 +863,21 @@ files, to verify signatures, and to manage the private and public keys.")
         (base32
          "0s4nh8h7qsdj2yf29bspjs1zvxd4lcd11r6g11dp7fppgf2h0iqw"))))
     (build-system python-build-system)
+
+    ;; Currently fails to build with Python 3.
+    (arguments `(#:python ,python-2))
+
     (home-page "https://github.com/toofishes/python-pgpdump")
     (synopsis "Python library for parsing PGP packets")
     (description
-     "Python-pgpdump is based on the pgpdump
-(http://www.mew.org/~kazu/proj/pgpdump/).  Currently supported things
-include:
-
-@enumerate
-@item Signature packets
-@item Public key packets
-@item Secret key packets
-@item Trust, user ID, and user attribute packets
-@item ASCII-armor decoding and CRC check
-@end enumerate\n")
+     "Python-pgpdump is an OpenPGP packet parser based on
+@uref{http://www.mew.org/~kazu/proj/pgpdump/, pgpdump}.  It notably supports:
+
+@itemize
+@item signature packets;
+@item public key packets;
+@item secret key packets;
+@item trust, user ID, and user attribute packets;
+@item ASCII-armor decoding and CRC check.
+@end itemize\n")
     (license license:bsd-3)))
-
-(define-public python2-pgpdump
-  (package-with-python2 python-pgpdump))

This is because the Python 3.x variant fails to build:

--8<---------------cut here---------------start------------->8---
======================================================================
FAIL: test_parse_partial_length (pgpdump.test.EncryptedPacketsTestCase)
This file contains an encrypted message with a Partial Body Length header
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/guix-build-python-pgpdump-1.5.drv-0/pgpdump-1.5/pgpdump/test.py", line 435, in test_parse_partial_length
    rawdata = self.load_data('partial_length.gpg')
  File "/tmp/guix-build-python-pgpdump-1.5.drv-0/pgpdump-1.5/pgpdump/test.py", line 102, in load_data
    self.assertTrue(os.path.exists(full_path))
AssertionError: False is not true

======================================================================
FAIL: test_parse_partial_length (pgpdump.test.EncryptedPacketsTestCase)
This file contains an encrypted message with a Partial Body Length header
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/guix-build-python-pgpdump-1.5.drv-0/pgpdump-1.5/pgpdump/test.py", line 435, in test_parse_partial_length
    rawdata = self.load_data('partial_length.gpg')
  File "/tmp/guix-build-python-pgpdump-1.5.drv-0/pgpdump-1.5/pgpdump/test.py", line 102, in load_data
    self.assertTrue(os.path.exists(full_path))
AssertionError: False is not true

----------------------------------------------------------------------
Ran 58 tests in 0.546s

FAILED (failures=2)
--8<---------------cut here---------------end--------------->8---

> From ed8ec89c1bd898aa927ddca9c453bc6e950e61a3 Mon Sep 17 00:00:00 2001
> From: ng0 <[email-masked]>
> Date: Sat, 21 Oct 2017 23:45:51 +0000
> Subject: [PATCH 6/6] gnu: Add python-roca-detect.
>
> * gnu/packages/crypto.scm (python-roca-detect): New variable.

Applied with similar changes as above.

Thank you!

Ludo’.