[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
316/361: gnu: python-cffi: Improve package style.
From: |
guix-commits |
Subject: |
316/361: gnu: python-cffi: Improve package style. |
Date: |
Fri, 22 Nov 2024 06:01:05 -0500 (EST) |
andreas pushed a commit to branch python-team
in repository guix.
commit d1868c5ac1ee75c880f3f969b6e61a8620bd1381
Author: Sharlatan Hellseher <sharlatanus@gmail.com>
AuthorDate: Sun Nov 10 20:40:32 2024 +0000
gnu: python-cffi: Improve package style.
* gnu/packages/libffi.scm: Add python-build and pyproject
modules. Select just pypi-uri symbol from python module.
(python-cffi): Fix indenation and adjust order of fileds.
[build-system]: Swap to pyproject-build-system.
[arguments]<test-flags>: Move tests directories and deselcect options
here.
<phases>: Use default 'check phase. Add 'set-gcc phase.
[native-inputs]: Add python-setuptools and python-wheel.
Change-Id: I0baa120ac86ef1c1e90cf44a4d439d874b8920b5
---
gnu/packages/libffi.scm | 110 ++++++++++++++++++++++++++----------------------
1 file changed, 59 insertions(+), 51 deletions(-)
diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm
index 87e7f83e20..dd439eac56 100644
--- a/gnu/packages/libffi.scm
+++ b/gnu/packages/libffi.scm
@@ -8,6 +8,7 @@
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 John Doe <dftxbs3e@free.fr>
+;;; Copyright © 2024 Sharlatan Hellseher <sharlatanus@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -35,11 +36,13 @@
#:use-module (gnu packages check)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-build)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages ruby)
#:use-module (gnu packages sphinx)
#:use-module (guix build-system gnu)
- #:use-module (guix build-system python)
+ #:use-module (guix build-system pyproject)
+ #:use-module ((guix build-system python) #:select (pypi-uri))
#:use-module (guix build-system ruby))
(define-public libffi
@@ -97,60 +100,65 @@ conversions for values passed between the two languages.")
(version "1.17.1")
(source
(origin
- (method url-fetch)
- (uri (pypi-uri "cffi" version))
- (sha256
- (base32 "0918qn4yfjfgcy7i4imfy9q1cvl3svmm06anakflig1jdh0wcf8w"))))
- (build-system python-build-system)
+ (method url-fetch)
+ (uri (pypi-uri "cffi" version))
+ (sha256
+ (base32 "0918qn4yfjfgcy7i4imfy9q1cvl3svmm06anakflig1jdh0wcf8w"))))
+ (build-system pyproject-build-system)
+ (arguments
+ (list
+ #:test-flags
+ #~(list "src/c/" "testing/"
+ ;; Disable tests that fail (harmlessly) with glibc 2.34 and
+ ;; later, see
+ ;; <https://foss.heptapod.net/pypy/cffi/-/issues/528>.
+
"--deselect=testing/cffi0/test_ffi_backend.py::TestFFI::test_dlopen_handle"
+ "--deselect=testing/cffi1/test_re_python.py::test_dlopen_handle")
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'unpack 'set-gcc
+ (lambda _
+ ;; XXX The "normal" approach of setting CC and friends does
+ ;; not work here. Is this the correct way of doing things?
+ (substitute* "testing/embedding/test_basic.py"
+ (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
+ (string-append "c = distutils.ccompiler.new_compiler();"
+ "c.set_executables(compiler='gcc',"
+ "compiler_so='gcc',linker_exe='gcc',"
+ "linker_so='gcc -shared')")))
+ (substitute* "testing/cffi0/test_ownlib.py"
+ (("\"cc testownlib") "\"gcc testownlib"))))
+ (add-before 'check 'patch-paths-of-dynamically-loaded-libraries
+ (lambda* (#:key inputs #:allow-other-keys)
+ ;; Shared libraries should be referred by their absolute path as
+ ;; using find_library or the like with their name fail when the
+ ;; resolved .so object is a linker script rather than an ELF
+ ;; binary (this is a limitation of the ctype library of Python).
+ (let ((libm (search-input-file inputs "lib/libm.so.6"))
+ (libc (search-input-file inputs "lib/libc.so.6")))
+ (substitute* '("testing/cffi0/test_function.py"
+ "testing/cffi0/test_parsing.py"
+ "testing/cffi0/test_unicode_literals.py"
+ "testing/cffi0/test_zdistutils.py"
+ "testing/cffi1/test_recompiler.py")
+ (("lib_m = ['\"]{1}m['\"]{1}")
+ (format #f "lib_m = '~a'" libm)))
+ (substitute* '("testing/cffi0/test_verify.py"
+ "testing/cffi1/test_verify1.py")
+ (("lib_m = \\[['\"]{1}m['\"]{1}\\]")
+ (format #f "lib_m = ['~a']" libm)))
+ (substitute* "src/c/test_c.py"
+ (("find_and_load_library\\(['\"]{1}c['\"]{1}")
+ (format #f "find_and_load_library('~a'" libc)))))))))
+ (native-inputs
+ (list pkg-config
+ python-pytest
+ python-setuptools
+ python-wheel))
(inputs
(list libffi))
(propagated-inputs ; required at run-time
(list python-pycparser))
- (native-inputs
- (list pkg-config python-pytest))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (replace 'check
- (lambda _
- ;; XXX The "normal" approach of setting CC and friends does
- ;; not work here. Is this the correct way of doing things?
- (substitute* "testing/embedding/test_basic.py"
- (("c = distutils\\.ccompiler\\.new_compiler\\(\\)")
- (string-append "c = distutils.ccompiler.new_compiler();"
- "c.set_executables(compiler='gcc',"
- "compiler_so='gcc',linker_exe='gcc',"
- "linker_so='gcc -shared')")))
- (substitute* "testing/cffi0/test_ownlib.py"
- (("\"cc testownlib") "\"gcc testownlib"))
- (invoke "pytest" "-v" "src/c/" "testing/"
- ;; Disable tests that fail (harmlessly) with glibc
- ;; 2.34 and later:
- ;; https://foss.heptapod.net/pypy/cffi/-/issues/528
- "-k" (string-append "not TestFFI.test_dlopen_handle "
- "and not test_dlopen_handle"))))
- (add-before 'check 'patch-paths-of-dynamically-loaded-libraries
- (lambda* (#:key inputs #:allow-other-keys)
- ;; Shared libraries should be referred by their absolute path as
- ;; using find_library or the like with their name fail when the
- ;; resolved .so object is a linker script rather than an ELF
- ;; binary (this is a limitation of the ctype library of Python).
- (let ((libm (search-input-file inputs "lib/libm.so.6"))
- (libc (search-input-file inputs "lib/libc.so.6")))
- (substitute* '("testing/cffi0/test_function.py"
- "testing/cffi0/test_parsing.py"
- "testing/cffi0/test_unicode_literals.py"
- "testing/cffi0/test_zdistutils.py"
- "testing/cffi1/test_recompiler.py")
- (("lib_m = ['\"]{1}m['\"]{1}")
- (format #f "lib_m = '~a'" libm)))
- (substitute* '("testing/cffi0/test_verify.py"
- "testing/cffi1/test_verify1.py")
- (("lib_m = \\[['\"]{1}m['\"]{1}\\]")
- (format #f "lib_m = ['~a']" libm)))
- (substitute* "src/c/test_c.py"
- (("find_and_load_library\\(['\"]{1}c['\"]{1}")
- (format #f "find_and_load_library('~a'" libc)))))))))
(home-page "https://cffi.readthedocs.io/")
(synopsis "Foreign function interface for Python")
(description "Foreign Function Interface for Python calling C code.")
- 34/361: gnu: python-cleo: Update to 2.1.0., (continued)
- 34/361: gnu: python-cleo: Update to 2.1.0., guix-commits, 2024/11/22
- 35/361: gnu: python-packaging-bootstrap: Update to 23.2., guix-commits, 2024/11/22
- 31/361: gnu: python-prompt-toolkit: Update to 3.0.43., guix-commits, 2024/11/22
- 37/361: gnu: python-eventlet: Update to 0.35.2., guix-commits, 2024/11/22
- 43/361: gnu: python-pytest-arraydiff: Add missing inputs., guix-commits, 2024/11/22
- 75/361: gnu: Add python-nbclassic., guix-commits, 2024/11/22
- 202/361: gnu: python-uqbar: Upgrade to python-team branch., guix-commits, 2024/11/22
- 279/361: gnu: python-pysolr: Update to 3.10.0., guix-commits, 2024/11/22
- 304/361: gnu: python-pexpect: Improve package style., guix-commits, 2024/11/22
- 312/361: gnu: python-pytest-cov: Update to 6.0.0., guix-commits, 2024/11/22
- 316/361: gnu: python-cffi: Improve package style.,
guix-commits <=
- 318/361: gnu: python-parso: Update to 0.8.4., guix-commits, 2024/11/22
- 329/361: gnu: python-cython-3: Update to 3.0.11., guix-commits, 2024/11/22
- 335/361: gnu: python-numpy: Update to 1.24.4., guix-commits, 2024/11/22
- 336/361: gnu: python-isort: Update to 5.13.2., guix-commits, 2024/11/22
- 352/361: gnu: python-apispec: Update to 6.7.1., guix-commits, 2024/11/22
- 53/361: gnu: python-dbus-python: Add missing input., guix-commits, 2024/11/22
- 64/361: gnu: Add python-pep440., guix-commits, 2024/11/22
- 73/361: gnu: Add python-pytest-jupyter., guix-commits, 2024/11/22
- 69/361: gnu: Add python-uri-template., guix-commits, 2024/11/22
- 66/361: gnu: Add python-jsonschema-specifications., guix-commits, 2024/11/22