gnu: Python: Fix test failure on ARMv7.
* gnu/packages/patches/python-3-arm-alignment.patch: New file. * gnu/local.mk (dist_patch_DATA): Adjust accordingly. * gnu/packages/python.scm (python-3.8)[source](patches): Add it when the current system is ARM.master
parent
3e902bbb56
commit
67ca82e6dd
|
@ -1344,6 +1344,7 @@ dist_patch_DATA = \
|
||||||
%D%/packages/patches/python-2.7-search-paths.patch \
|
%D%/packages/patches/python-2.7-search-paths.patch \
|
||||||
%D%/packages/patches/python-2.7-site-prefixes.patch \
|
%D%/packages/patches/python-2.7-site-prefixes.patch \
|
||||||
%D%/packages/patches/python-2.7-source-date-epoch.patch \
|
%D%/packages/patches/python-2.7-source-date-epoch.patch \
|
||||||
|
%D%/packages/patches/python-3-arm-alignment.patch \
|
||||||
%D%/packages/patches/python-3-deterministic-build-info.patch \
|
%D%/packages/patches/python-3-deterministic-build-info.patch \
|
||||||
%D%/packages/patches/python-3-search-paths.patch \
|
%D%/packages/patches/python-3-search-paths.patch \
|
||||||
%D%/packages/patches/python-3-fix-tests.patch \
|
%D%/packages/patches/python-3-fix-tests.patch \
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
Ensure memory accesses in the sha3 module are aligned on ARM as it causes
|
||||||
|
problems when running 32-bit code on a 64-bit kernel.
|
||||||
|
|
||||||
|
Patch taken from upstream bug report:
|
||||||
|
https://bugs.python.org/issue36515
|
||||||
|
|
||||||
|
--- a/Modules/_sha3/sha3module.c
|
||||||
|
+++ b/Modules/_sha3/sha3module.c
|
||||||
|
@@ -64,6 +64,12 @@
|
||||||
|
#define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+/* Bus error on 32-bit ARM due to un-aligned memory accesses; 64-bit ARM
|
||||||
|
+ * doesn't complain but un-aligned memory accesses are sub-optimal */
|
||||||
|
+#if defined(__arm__) || defined(__aarch64__)
|
||||||
|
+#define NO_MISALIGNED_ACCESSES
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* mangle names */
|
||||||
|
#define KeccakF1600_FastLoop_Absorb _PySHA3_KeccakF1600_FastLoop_Absorb
|
||||||
|
#define Keccak_HashFinal _PySHA3_Keccak_HashFinal
|
|
@ -26,7 +26,7 @@
|
||||||
;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
|
;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
|
||||||
;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
|
;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
|
||||||
;;; Copyright © 2016 David Craven <david@craven.ch>
|
;;; Copyright © 2016 David Craven <david@craven.ch>
|
||||||
;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com>
|
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
|
||||||
;;; Copyright © 2016, 2017 Stefan Reichör <stefan@xsteve.at>
|
;;; Copyright © 2016, 2017 Stefan Reichör <stefan@xsteve.at>
|
||||||
;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
|
;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
|
||||||
;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
|
;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com>
|
||||||
|
@ -92,7 +92,9 @@
|
||||||
#:use-module (guix download)
|
#:use-module (guix download)
|
||||||
#:use-module (guix utils)
|
#:use-module (guix utils)
|
||||||
#:use-module (guix build-system gnu)
|
#:use-module (guix build-system gnu)
|
||||||
#:use-module (guix build-system trivial))
|
#:use-module (guix build-system trivial)
|
||||||
|
#:use-module (srfi srfi-1)
|
||||||
|
#:use-module (srfi srfi-26))
|
||||||
|
|
||||||
(define-public python-2.7
|
(define-public python-2.7
|
||||||
(package
|
(package
|
||||||
|
@ -352,11 +354,22 @@ data types.")
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "https://www.python.org/ftp/python/"
|
(uri (string-append "https://www.python.org/ftp/python/"
|
||||||
version "/Python-" version ".tar.xz"))
|
version "/Python-" version ".tar.xz"))
|
||||||
(patches (search-patches
|
(patches (append
|
||||||
"python-3-fix-tests.patch"
|
;; Disable unaligned accesses in the sha3 module on ARM as
|
||||||
"python-3.8-fix-tests.patch"
|
;; it causes a test failure when building 32-bit Python on a
|
||||||
"python-3-deterministic-build-info.patch"
|
;; 64-bit kernel. See <https://bugs.python.org/issue36515>.
|
||||||
"python-3-search-paths.patch"))
|
;; TODO: Remove the conditional on the next rebuild cycle.
|
||||||
|
(let ((system (or (%current-target-system)
|
||||||
|
(%current-system))))
|
||||||
|
(if (any (cute string-prefix? <> system)
|
||||||
|
'("arm" "aarch64"))
|
||||||
|
(list (search-patch "python-3-arm-alignment.patch"))
|
||||||
|
'()))
|
||||||
|
(search-patches
|
||||||
|
"python-3-fix-tests.patch"
|
||||||
|
"python-3.8-fix-tests.patch"
|
||||||
|
"python-3-deterministic-build-info.patch"
|
||||||
|
"python-3-search-paths.patch")))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1ps5v323cp5czfshqjmbsqw7nvrdpcbk06f62jbzaqik4gfffii6"))
|
"1ps5v323cp5czfshqjmbsqw7nvrdpcbk06f62jbzaqik4gfffii6"))
|
||||||
|
|
Reference in New Issue