GNU bug report logs - #49543
[PATCH] python-pycryptodome: Build HTML and info documentation and unbundle sphinx-rtd-theme and libtomcrypt

Previous Next

Package: guix-patches;

Reported by: Maxime Devos <maximedevos <at> telenet.be>

Date: Tue, 13 Jul 2021 12:32:02 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 49543 in the body.
You can then email your comments to 49543 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to 0x2d <at> disroot.org, guix-patches <at> gnu.org:
bug#49543; Package guix-patches. (Tue, 13 Jul 2021 12:32:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Maxime Devos <maximedevos <at> telenet.be>:
New bug report received and forwarded. Copy sent to 0x2d <at> disroot.org, guix-patches <at> gnu.org. (Tue, 13 Jul 2021 12:32:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Maxime Devos <maximedevos <at> telenet.be>
To: guix-patches <at> gnu.org
Subject: [PATCH] python-pycryptodome: Build HTML and info documentation and
 unbundle sphinx-rtd-theme and libtomcrypt
Date: Tue, 13 Jul 2021 14:31:29 +0200
[Message part 1 (text/plain, inline)]
X-Debbugs-CC: slg <0x2d <at> disroot.org>

Hi guix,

These two patches fix <https://issues.guix.gnu.org/49530>.
The dependencies of python-pycryptodome (found with "guix refresh -l")
still build succesfully.

I performed the unbundling in build phases as I'm not sure
what is the proper way to use 'tar' from a snippet, and whether
the unbundling is done in a build phase or an 'origin' snippet
doesn't seem to matter much, as the bundled code is free software.

Greetings,
Maxime.
[0001-gnu-python-pycryptodome-Unbundle-libtomcrypt.patch (text/x-patch, inline)]
From e9b497cbb8f04490b6c835c8b5ed9b92d2765781 Mon Sep 17 00:00:00 2001
From: Maxime Devos <maximedevos <at> telenet.be>
Date: Mon, 12 Jul 2021 17:52:39 +0200
Subject: [PATCH 1/2] gnu: python-pycryptodome: Unbundle libtomcrypt.

* gnu/packages/python-crypto.scm
  (pycryptodome)[arguments]<#:phases>{replace-libtomcrypt}:
  New phase.
  (pycryptodome)[native-inputs]{tomcrypt-source}: Add source
  code of 'libtomcrypt'.
---
 gnu/packages/python-crypto.scm | 35 ++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 733a87cd2f..5eb990b5ba 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -24,6 +24,7 @@
 ;;; Copyright © 2020 Alexandros Theodotou <alex <at> zrythm.org>
 ;;; Copyright © 2020 Justus Winter <justus <at> sequoia-pgp.org>
 ;;; Copyright © 2020 Vinicius Monego <monego <at> posteo.net>
+;;; Copyright © 2021 Maxime Devos <maximedevos <at> telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -43,6 +44,7 @@
 (define-module (gnu packages python-crypto)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
@@ -1001,6 +1003,39 @@ protocol (Javascript Object Signing and Encryption).")
         (base32
          "1i4m74f88qj9ci8rpyzrbk2slmsdj5ipmwdkq6qk24byalm203li"))))
     (build-system python-build-system)
+    (arguments
+     `(#:modules ((srfi srfi-26)
+                  (guix build python-build-system)
+                  (guix build utils))
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'replace-libtomcrypt
+           (lambda* (#:key native-inputs inputs #:allow-other-keys)
+             (with-directory-excursion "src/libtom"
+               ;; Delete bundled code.
+               (for-each delete-file (find-files "."))
+               ;; Extract tomcrypt source code into "untarred".
+               (mkdir "untarred")
+               (invoke "tar" "xf"
+                       (assoc-ref (or native-inputs inputs) "tomcrypt-source")
+                       "--strip-components=1"
+                       "-Cuntarred")
+               ;; Use source code from "untarred".
+               (rename-file "untarred/src/ciphers/des.c" "tomcrypt_des.c")
+               (for-each (cut install-file <> ".")
+                         (find-files "untarred/src/headers"))
+               (delete-file-recursively "untarred"))))
+         ;; The code bundled in pycryptdome has been modified
+         ;; to make some variables and functions 'static'.
+         (add-after 'replace-libtomcrypt 'make-des-static
+           (lambda _
+             (substitute* (find-files "src/libtom")
+               (("^extern const struct") "static const struct")
+               (("^const struct") "static const struct")
+               (("^int des") "static int des")
+               (("^void des") "static void des")))))))
+    (native-inputs
+     `(("tomcrypt-source" ,(package-source libtomcrypt))))
     (home-page "https://www.pycryptodome.org")
     (synopsis "Low-level cryptographic Python library")
     (description
-- 
2.32.0

[0002-gnu-python-pycryptodome-Build-documentation.patch (text/x-patch, inline)]
From 5e11b738571167dbb5ba59d9cfb3204dd81ca855 Mon Sep 17 00:00:00 2001
From: Maxime Devos <maximedevos <at> telenet.be>
Date: Mon, 12 Jul 2021 20:30:06 +0200
Subject: [PATCH 2/2] gnu: python-pycryptodome: Build documentation.

* gnu/packages/python-crypto.scm
  (python-pycryptodome)[outputs]: Add "doc" output.
  (python-pycryptodome)[arguments]<#:phases>{build-documentation}:
  New phase, removing images loaded from the Internet, unbundling
  sphinx-rtd-theme and building HTML and Info documentation.
  (python-pycryptodome)[arguments]<#:phases>{build-documentation}:
  New phase.
---
 gnu/packages/python-crypto.scm | 35 ++++++++++++++++++++++++++++++++--
 1 file changed, 33 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 5eb990b5ba..cb3d0f9609 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -52,6 +52,7 @@
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages libffi)
+  #:use-module (gnu packages sphinx)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages password-utils)
   #:use-module (gnu packages protobuf)
@@ -62,6 +63,7 @@
   #:use-module (gnu packages python-web)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages swig)
+  #:use-module (gnu packages texinfo)
   #:use-module (gnu packages time)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages xml)
@@ -1003,6 +1005,8 @@ protocol (Javascript Object Signing and Encryption).")
         (base32
          "1i4m74f88qj9ci8rpyzrbk2slmsdj5ipmwdkq6qk24byalm203li"))))
     (build-system python-build-system)
+    ;; "doc" has HTML documentation weighing 4.9 MB
+    (outputs '("out" "doc"))
     (arguments
      `(#:modules ((srfi srfi-26)
                   (guix build python-build-system)
@@ -1033,9 +1037,36 @@ protocol (Javascript Object Signing and Encryption).")
                (("^extern const struct") "static const struct")
                (("^const struct") "static const struct")
                (("^int des") "static int des")
-               (("^void des") "static void des")))))))
+               (("^void des") "static void des"))))
+         (add-after 'build 'build-documentation
+           (lambda _
+             ;; Prevent offline documentation from loading
+             ;; images from the Internet.
+             (substitute* "README.rst"
+               (("^(.*)travis-ci.org(.*)\n") "")
+               (("^(.*)ci.appveyor.com(.*)\n") ""))
+             ;; Unbundle sphinx-rtd-theme.
+             (delete-file-recursively "Doc/sphinx_rtd_theme")
+             (invoke "make" "-C" "Doc" "html" "info")))
+         (add-after 'install 'install-documentation
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((doc (string-append (assoc-ref outputs "doc")
+                                        "/share/doc/" ,name "-" ,version))
+                    (html (string-append doc "/html"))
+                    ;; The 'info' manual only weighs 72 KB
+                    (info (string-append (assoc-ref outputs "out")
+                                         "/share/info")))
+               (mkdir-p info)
+               (mkdir-p html)
+               (copy-recursively "Doc/_build/html" html)
+               (copy-recursively "Doc/_build/texinfo" info)
+               (delete-file (string-append info "/Makefile"))
+               (delete-file (string-append info "/PyCryptodome.texi"))))))))
     (native-inputs
-     `(("tomcrypt-source" ,(package-source libtomcrypt))))
+     `(("python-sphinx" ,python-sphinx)
+       ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)
+       ("texinfo" ,texinfo)
+       ("tomcrypt-source" ,(package-source libtomcrypt))))
     (home-page "https://www.pycryptodome.org")
     (synopsis "Low-level cryptographic Python library")
     (description
-- 
2.32.0

[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#49543; Package guix-patches. (Wed, 11 Aug 2021 14:36:02 GMT) Full text and rfc822 format available.

Message #8 received at 49543 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Maxime Devos <maximedevos <at> telenet.be>
Cc: 49543 <at> debbugs.gnu.org, slg <0x2d <at> disroot.org>
Subject: Re: bug#49543: [PATCH] python-pycryptodome: Build HTML and info
 documentation and unbundle sphinx-rtd-theme and libtomcrypt
Date: Wed, 11 Aug 2021 16:35:12 +0200
Hi Maxime,

Maxime Devos <maximedevos <at> telenet.be> skribis:

> These two patches fix <https://issues.guix.gnu.org/49530>.
> The dependencies of python-pycryptodome (found with "guix refresh -l")
> still build succesfully.

Neat.

> I performed the unbundling in build phases as I'm not sure
> what is the proper way to use 'tar' from a snippet, and whether
> the unbundling is done in a build phase or an 'origin' snippet
> doesn't seem to matter much, as the bundled code is free software.

Usually, bundled software is removed from a snippet.

Also, when unbundling, it’s better if we can actually reuse the package
in question (libtomcrypt here) as opposed to reusing its source, as you
did here.

Unfortunately, ‘python-pycryptodomex’ fails to build after this change:

--8<---------------cut here---------------start------------->8---
starting phase `build-documentation'
make: Entering directory '/tmp/guix-build-python-pycryptodomex-3.9.9.drv-0/pycryptodomex-3.9.9/Doc'
python -m sphinx -b html -d _build/doctrees   . _build/html
Running Sphinx v3.3.1
WARNING: Support for evaluating Python 2 syntax is deprecated and will be removed in Sphinx 4.0. Convert /tmp/guix-build-python-pycryptodomex-3.9.9.drv-0/pycryptodomex-3.9.9/Doc/conf.py to Python 3 syntax.

Configuration error:
There is a programmable error in your configuration file:

Traceback (most recent call last):
  File "/gnu/store/0ls72lxsfndc8cvlyhymdb8fjdgri2qx-python-sphinx-3.3.1/lib/python3.8/site-packages/sphinx/config.py", line 319, in eval_config_file
    execfile_(filename, namespace)
  File "/gnu/store/0ls72lxsfndc8cvlyhymdb8fjdgri2qx-python-sphinx-3.3.1/lib/python3.8/site-packages/sphinx/util/pycompat.py", line 89, in execfile_
    exec(code, _globals)
  File "/tmp/guix-build-python-pycryptodomex-3.9.9.drv-0/pycryptodomex-3.9.9/Doc/conf.py", line 21, in <module>
    from Crypto.Util import _raw_api
ModuleNotFoundError: No module named 'Crypto'

['/tmp/guix-build-python-pycryptodomex-3.9.9.drv-0/pycryptodomex-3.9.9/lib', '/tmp/guix-build-python-pycryptodomex-3.9.9.drv-0/pycryptodomex-3.9.9/Doc', '/gnu/store/0ls72lxsfndc8cvlyhymdb8fjdgri2qx-python-sphinx-3.3.1/lib/python3.8/site-packages', '/gnu/store/2zakswhc9g439yc8wic8q0hs3igi9g5b-python-sphinx-rtd-theme-0.2.4/lib/python3.8/site-packages', '/gnu/store/9w9jvy3bgjg4qaqmrij01nbppiccqr7c-python-3.8.2/lib/python3.8/site-packages', '/gnu/store/6lm3n9nlvycbr6cw2lw3m7r8afd6qprq-python-sphinxcontrib-serializinghtml-1.1.4/lib/python3.8/site-packages', '/gnu/store/0q8410qkshkppigcw52jf8h31yzmvvf2-python-sphinxcontrib-qthelp-1.0.3/lib/python3.8/site-packages', '/gnu/store/wb47l1a7w2h1dpd6bfalcq17qzfclcf7-python-sphinxcontrib-jsmath-1.0.1/lib/python3.8/site-packages', '/gnu/store/n5zs7y1sj957fnf8pknvwlyj7i703pcf-python-sphinxcontrib-htmlhelp-1.0.3/lib/python3.8/site-packages', '/gnu/store/5h811myaa1xwx7ccxsbddi3frw58ybmw-python-sphinxcontrib-devhelp-1.0.2/lib/python3.8/site-packages', '/gnu/store/08i1lwmkzrp21sk2gllbndbkssjglpih-python-sphinxcontrib-applehelp-1.0.2/lib/python3.8/site-packages', '/gnu/store/4zs7yw2yl5km552xny1dg2ai1nn137wh-python-sphinx-alabaster-theme-0.7.12/lib/python3.8/site-packages', '/gnu/store/i6wkshxcswdvfq9nyp6gldjcasnz3snr-python-snowballstemmer-2.0.0/lib/python3.8/site-packages', '/gnu/store/w0fzqiyvfz68bpr552h8qcbw8dbdyh5x-python-requests-2.25.0/lib/python3.8/site-packages', '/gnu/store/rvgdr6p6aa0kiiinxzxp4w15s05rbb4f-python-pygments-2.7.3/lib/python3.8/site-packages', '/gnu/store/5zfrihl2sg0svssmac0l06hyq6zjik8b-python-packaging-20.0/lib/python3.8/site-packages', '/gnu/store/ibvr3izfm99bmxg6cbb2qyhrb23ablla-python-imagesize-1.2.0/lib/python3.8/site-packages', '/gnu/store/6z2ri6yzpagh5pc32m8gn95lzarxkims-python-jinja2-2.11.2/lib/python3.8/site-packages', '/gnu/store/0dz7b0qxbj6m4ld53l8lnvv2yzdrbx8y-python-docutils-0.16/lib/python3.8/site-packages', '/gnu/store/rlp7fnxmn2qlmzjs52n7xycnvh3zjxwc-python-babel-2.9.0/lib/python3.8/site-packages', '/gnu/store/vy8f9ksgng46c4nkdl3hg08ngypzrx7a-python-urllib3-1.26.2/lib/python3.8/site-packages', '/gnu/store/ihl3h0s000vlkvadxvv21cbn4fqzvmav-python-idna-2.10/lib/python3.8/site-packages', '/gnu/store/ih20zyn3r0c6ymv7h3faqx0sbdakmw7w-python-chardet-3.0.4/lib/python3.8/site-packages', '/gnu/store/2j54g0s8db1b10ggs4rirfb5vv8abm2y-python-certifi-2020.12.5/lib/python3.8/site-packages', '/gnu/store/hjmz8ymac939ribn7g3jkgms4dk2az3a-python-six-1.14.0/lib/python3.8/site-packages', '/gnu/store/69lzz2dp87f896843jj05mw5z4hd9my2-python-pyparsing-2.4.6/lib/python3.8/site-packages', '/gnu/store/r6jy13vsfb1fjlrhr43xdnz56d614aw6-python-markupsafe-1.1.1/lib/python3.8/site-packages', '/gnu/store/3f1fglk0f6jym9r0zfaf7vqjn6gx6js5-python-pytz-2021.1/lib/python3.8/site-packages', '/gnu/store/dqm6p7w3l7whd0zzm3szr963mvpsfglh-python-pysocks-1.7.1/lib/python3.8/site-packages', '/gnu/store/wand0zrwwnds6x636746116cfh3sy50k-python-pyopenssl-20.0.0/lib/python3.8/site-packages', '/gnu/store/y793c1d3nmpgq1dacfccir6bkrj3ygf7-python-cryptography-3.3.1/lib/python3.8/site-packages', '/gnu/store/q01v2xjfcl7d020y3yh865695gm8i3gx-python-iso8601-0.1.13/lib/python3.8/site-packages', '/gnu/store/j3k8ah697pg289zg7j9ix4a53i94liw4-python-cffi-1.14.4/lib/python3.8/site-packages', '/gnu/store/xkcc4372psi79xiidw4k33nmyf6mk36h-python-asn1crypto-1.4.0/lib/python3.8/site-packages', '/gnu/store/k08j1silv8zxfglz3mb5q7ngmya9cv39-python-pycparser-2.20/lib/python3.8/site-packages', '/gnu/store/9w9jvy3bgjg4qaqmrij01nbppiccqr7c-python-3.8.2/lib/python38.zip', '/gnu/store/9w9jvy3bgjg4qaqmrij01nbppiccqr7c-python-3.8.2/lib/python3.8', '/gnu/store/9w9jvy3bgjg4qaqmrij01nbppiccqr7c-python-3.8.2/lib/python3.8/lib-dynload']
make: *** [Makefile:45: html] Error 2
make: Leaving directory '/tmp/guix-build-python-pycryptodomex-3.9.9.drv-0/pycryptodomex-3.9.9/Doc'
command "make" "-C" "Doc" "html" "info" failed with status 2
--8<---------------cut here---------------end--------------->8---

I suppose ‘python2-pycryptodome’ fails similarly, though we could start
by removing it.

Could you take a look?

Thanks,
Ludo’.




Information forwarded to guix-patches <at> gnu.org:
bug#49543; Package guix-patches. (Wed, 18 Aug 2021 11:02:02 GMT) Full text and rfc822 format available.

Message #11 received at 49543 <at> debbugs.gnu.org (full text, mbox):

From: Maxime Devos <maximedevos <at> telenet.be>
To: Ludovic Courtès <ludo <at> gnu.org>
Cc: 49543 <at> debbugs.gnu.org, slg <0x2d <at> disroot.org>
Subject: Re: bug#49543: [PATCH] python-pycryptodome: Build HTML and info
 documentation and unbundle sphinx-rtd-theme and libtomcrypt
Date: Wed, 18 Aug 2021 13:01:10 +0200
[Message part 1 (text/plain, inline)]
Ludovic Courtès schreef op wo 11-08-2021 om 16:35 [+0200]:
> Hi Maxime,
> 
> Maxime Devos <maximedevos <at> telenet.be> skribis:
> 
> > These two patches fix <https://issues.guix.gnu.org/49530>;.
> > The dependencies of python-pycryptodome (found with "guix refresh -l")
> > still build succesfully.
> 
> Neat.
> 
> > I performed the unbundling in build phases as I'm not sure
> > what is the proper way to use 'tar' from a snippet, and whether
> > the unbundling is done in a build phase or an 'origin' snippet
> > doesn't seem to matter much, as the bundled code is free software.
> 
> Usually, bundled software is removed from a snippet.
> 
> Also, when unbundling, it’s better if we can actually reuse the package
> in question (libtomcrypt here) as opposed to reusing its source, as you
> did here.

I have attached two new patches for unbundling libtomcrypt this way.
I left the documentation out for now, as I would prefer some kind of
generic solution that could be used by other packages using Sphinx
as well.

I had some trouble telling python to link to libtomcrypt.
I tried adding "tomcrypt" to "libraries" in ‘Extension’ forms in setup.py
but that doesn't seem to do anything, so I added
extra_link_args=['-ltomcrypt', '-ltommath'].  Do you know what's up with that?

The dependencies of python-pycryptodome, python2-pycryptodome and
python-pycryptodomex build successfully.

Greetings,
Maxime.
[0001-gnu-python-pycryptodome-Unbundle-libtomcrypt.patch (text/x-patch, inline)]
From a41b086246a5b59aab2d16eaeb91e0caafa706cc Mon Sep 17 00:00:00 2001
From: Maxime Devos <maximedevos <at> telenet.be>
Date: Wed, 18 Aug 2021 00:43:16 +0200
Subject: [PATCH 1/2] gnu: python-pycryptodome: Unbundle libtomcrypt.

* gnu/packages/python-crypto.scm
  (pycryptodome-unbundle-tomcrypt-snippet): New variable.
  (python-pycryptodome)[source]{snippet}: Unbundle libtomcrypt.
  (python-pycryptodome)[source]{modules}: Add (guix build utils).
---
 gnu/packages/python-crypto.scm | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index d9102adcc9..265ab6d228 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -25,6 +25,7 @@
 ;;; Copyright © 2020 Justus Winter <justus <at> sequoia-pgp.org>
 ;;; Copyright © 2020 Vinicius Monego <monego <at> posteo.net>
 ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos <at> telenet.be>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -44,6 +45,7 @@
 (define-module (gnu packages python-crypto)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix gexp)
   #:use-module (guix git-download)
   #:use-module (guix build-system python)
   #:use-module (gnu packages)
@@ -947,6 +949,22 @@ protocol (Javascript Object Signing and Encryption).")
 (define-public python2-josepy
   (package-with-python2 python-josepy))
 
+(define pycryptodome-unbundle-tomcrypt-snippet
+  #~(begin
+      ;; Unbundle libtomcrypt.
+      (delete-file-recursively "src/libtom")
+      (substitute* "src/DES.c"
+        (("#include \"libtom/tomcrypt_des.c\"")
+         "#include <tomcrypt.h>"))
+      (substitute* "setup.py"
+        (("include_dirs=\\['src/', 'src/libtom/'\\]")
+         ;; FIXME: why does '-ltomcrypt' need to be added
+         ;; manually, even when 'tomcrypt' is added to 'libraries'?
+         ;; This behaviour is not documented at
+         ;; <https://docs.python.org/3/extending/building.html>.
+         "include_dirs=['src/'], libraries=['tomcrypt', 'tommath'],
+ extra_link_args=['-ltomcrypt', '-ltommath']"))))
+
 (define-public python-pycryptodome
   (package
     (name "python-pycryptodome")
@@ -957,8 +975,13 @@ protocol (Javascript Object Signing and Encryption).")
        (uri (pypi-uri "pycryptodome" version))
        (sha256
         (base32
-         "1i4m74f88qj9ci8rpyzrbk2slmsdj5ipmwdkq6qk24byalm203li"))))
+         "1i4m74f88qj9ci8rpyzrbk2slmsdj5ipmwdkq6qk24byalm203li"))
+       (modules '((guix build utils)))
+       (snippet pycryptodome-unbundle-tomcrypt-snippet)))
     (build-system python-build-system)
+    (inputs
+     `(("libtomcrypt" ,libtomcrypt)
+       ("libtommath" ,libtommath)))
     (home-page "https://www.pycryptodome.org")
     (synopsis "Low-level cryptographic Python library")
     (description
-- 
2.32.0

[0002-gnu-python-pycryptodomex-Unbundle-libtomcrypt.patch (text/x-patch, inline)]
From 5b3366c9ebead99f0c22d612552063189bd0551c Mon Sep 17 00:00:00 2001
From: Maxime Devos <maximedevos <at> telenet.be>
Date: Wed, 18 Aug 2021 12:46:51 +0200
Subject: [PATCH 2/2] gnu: python-pycryptodomex: Unbundle libtomcrypt.

* gnu/packages/python-crypto.scm
  (python-pycryptodomex)[source]{snippet}: Unbundle libtomcrypt.
  (python-pycryptodomex)[source]{modules}: Add (guix build utils).
---
 gnu/packages/python-crypto.scm | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm
index 265ab6d228..0fd3c829e3 100644
--- a/gnu/packages/python-crypto.scm
+++ b/gnu/packages/python-crypto.scm
@@ -1034,7 +1034,9 @@ PyCryptodome variants, the other being python-pycryptodomex.")
        (method url-fetch)
        (uri (pypi-uri "pycryptodomex" version))
        (sha256
-        (base32 "0lbx4qk3xmwqiidhmkj8qa7bh2lf8bwzg0xjpsh2w5zqjrc7qnvv"))))
+        (base32 "0lbx4qk3xmwqiidhmkj8qa7bh2lf8bwzg0xjpsh2w5zqjrc7qnvv"))
+       (modules '((guix build utils)))
+       (snippet pycryptodome-unbundle-tomcrypt-snippet)))
     (description
      "PyCryptodome is a self-contained Python package of low-level
 cryptographic primitives.  It's not a wrapper to a separate C library like
-- 
2.32.0

[signature.asc (application/pgp-signature, inline)]

Reply sent to Ludovic Courtès <ludo <at> gnu.org>:
You have taken responsibility. (Wed, 01 Sep 2021 21:29:02 GMT) Full text and rfc822 format available.

Notification sent to Maxime Devos <maximedevos <at> telenet.be>:
bug acknowledged by developer. (Wed, 01 Sep 2021 21:29:02 GMT) Full text and rfc822 format available.

Message #16 received at 49543-done <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Maxime Devos <maximedevos <at> telenet.be>
Cc: 49543-done <at> debbugs.gnu.org, slg <0x2d <at> disroot.org>
Subject: Re: bug#49543: [PATCH] python-pycryptodome: Build HTML and info
 documentation and unbundle sphinx-rtd-theme and libtomcrypt
Date: Wed, 01 Sep 2021 23:28:21 +0200
Hi!

Maxime Devos <maximedevos <at> telenet.be> skribis:

> Ludovic Courtès schreef op wo 11-08-2021 om 16:35 [+0200]:

[...]

>> Usually, bundled software is removed from a snippet.
>> 
>> Also, when unbundling, it’s better if we can actually reuse the package
>> in question (libtomcrypt here) as opposed to reusing its source, as you
>> did here.
>
> I have attached two new patches for unbundling libtomcrypt this way.
> I left the documentation out for now, as I would prefer some kind of
> generic solution that could be used by other packages using Sphinx
> as well.

Makes sense to me.

> I had some trouble telling python to link to libtomcrypt.
> I tried adding "tomcrypt" to "libraries" in ‘Extension’ forms in setup.py
> but that doesn't seem to do anything, so I added
> extra_link_args=['-ltomcrypt', '-ltommath'].  Do you know what's up with that?

No idea!

> From a41b086246a5b59aab2d16eaeb91e0caafa706cc Mon Sep 17 00:00:00 2001
> From: Maxime Devos <maximedevos <at> telenet.be>
> Date: Wed, 18 Aug 2021 00:43:16 +0200
> Subject: [PATCH 1/2] gnu: python-pycryptodome: Unbundle libtomcrypt.
>
> * gnu/packages/python-crypto.scm
>   (pycryptodome-unbundle-tomcrypt-snippet): New variable.
>   (python-pycryptodome)[source]{snippet}: Unbundle libtomcrypt.
>   (python-pycryptodome)[source]{modules}: Add (guix build utils).

[...]

> From 5b3366c9ebead99f0c22d612552063189bd0551c Mon Sep 17 00:00:00 2001
> From: Maxime Devos <maximedevos <at> telenet.be>
> Date: Wed, 18 Aug 2021 12:46:51 +0200
> Subject: [PATCH 2/2] gnu: python-pycryptodomex: Unbundle libtomcrypt.
>
> * gnu/packages/python-crypto.scm
>   (python-pycryptodomex)[source]{snippet}: Unbundle libtomcrypt.
>   (python-pycryptodomex)[source]{modules}: Add (guix build utils).

Finally applied, thanks!

Ludo’.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 30 Sep 2021 11:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 206 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.