(define-module (tw packages python) #:use-module (gnu packages) #:use-module (gnu packages python) #:use-module (guix packages) #:use-module (guix utils)) (define-public python-3.11 (package (inherit python-3.9) (version "3.11.1") (source (origin (inherit (package-source python-3.9)) (uri (string-append "https://www.python.org/ftp/python/" version "/Python-" version ".tar.xz")) (patches (search-patches ;; "python-3-arm-alignment.patch" ; merged upstream ;; "python-3-no-static-lib.patch" ; Makefile has changed significantly, this doesn't apply cleanly any more "python-3.11-fix-tests.patch" ; patched patch for 3.11 "python-3-deterministic-build-info.patch" ; from python-3.9 "python-3-hurd-configure.patch" ; from python-3.9 "python-3-search-paths.patch")) ; from python-3.9 (sha256 (base32 "13xmvw0pjqr96mr69xxpjkiybwzb95cr14n02v5mdzfgya9931w5")))) (arguments (substitute-keyword-arguments (package-arguments python-3.9) ((#:configure-flags flags) `(cons* ;; FIXME: These flags make Python significantly faster, but make ;; binaries non-reproducible. "--with-lto" ; increase size by 20MB, but 15% speedup "--enable-optimizations" ,flags)) ((#:phases phases) `(modify-phases ,phases ;; Fix the "test_tools" test. This relies on `bash' or `bash-minimal' being an input. (add-before 'configure 'patch-default-shell (lambda* (#:key inputs configure-flags #:allow-other-keys) (use-modules (ice-9 format)) (let ((/bin/sh (string-append (assoc-ref inputs "bash") "/bin/sh"))) ;; Patch ./configure to set the right CONFIG_SHELL fallback, not /bin/sh. (substitute* "configure" (("-/bin/sh") ; the "-" prevents us from patching the shebang (string-append "-" /bin/sh)) (("^CONFIG_ARGS=.*$") ; the freeze test uses CONFIG_ARGS (format #f "CONFIG_ARGS='~{\"~a\" ~}'" configure-flags))) (substitute* "Makefile.pre.in" (("^SHELL=[[:space:]]*/bin/sh$") (string-append "SHELL=" /bin/sh))))))))))))