1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
(define-module (gn packages python24)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system python)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages tcl)
#:use-module (srfi srfi-1))
;; TODO: Check against 'guix lint -c cve python2.4' list:
;; CVE-2019-9740, CVE-2019-9947, CVE-2019-9948, CVE-2018-1060, CVE-2018-1061,
;; CVE-2014-9365, CVE-2012-0845, CVE-2012-1150, CVE-2011-1521, CVE-2011-4940,
;; CVE-2010-3492, CVE-2008-5031, CVE-2008-5983
(define-public python-2.4
(package
(inherit python-2)
(name "python2.4")
(version "2.4.6")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.python.org/ftp/python/"
version "/Python-" version ".tar.bz2"))
(sha256
(base32
"021y88a4ki07dgq19yhg6zfvmncfiz7h5b2255438i9zmlwl246s"))))
(outputs '("out"))
(arguments
(substitute-keyword-arguments (package-arguments python-2)
((#:phases phases)
`(modify-phases ,phases
(add-after 'unpack 'create-setup-local
(lambda* (#:key inputs #:allow-other-keys)
(let ((zlib (assoc-ref inputs "zlib"))
(tcl (assoc-ref inputs "tcl"))
(tk (assoc-ref inputs "tk"))
(gdbm (assoc-ref inputs "gdbm"))
(read (assoc-ref inputs "readline"))
(ssl (assoc-ref inputs "openssl")))
(with-output-to-file "Modules/Setup.local"
(lambda _
(format #t "readline readline.c -I~a/include -L~a/lib -lreadline~@
_ssl _ssl.c -DUSE_SSL -I$~a/include/openssl -L~a/lib -lssl -lcrypto~@
_tkinter _tkinter.c tkappinit.c -DWITH_APPINIT -L~a/lib -I~a/include -L~a/lib -I~a/include -ltk~a -ltcl~a~@
gdbm gdbmmodule.c -I~a/include -L~a/lib -lgdbm~@
zlib zlibmodule.c -I~a/include -L~a/lib -lz~%"
read read ssl ssl tcl tcl tk tk ,(version-major+minor (package-version tcl)) ,(version-major+minor (package-version tcl)) gdbm gdbm zlib zlib))))
#t))
(add-before 'check 'delete-failing-tests
(lambda _
(for-each
(lambda (file)
(delete-file (string-append "Lib/test/" file)))
'("test_socket.py" "test_anydbm.py" "test_whichdb.py" "test_zlib.py"))
#t))
(add-after 'check 'find-netinet-in-h
(lambda* (#:key inputs #:allow-other-keys)
(let ((glibc (assoc-ref inputs "libc")))
(substitute* (find-files "Lib/plat-generic" ".*")
(("/usr/include/netinet/in.h")
(string-append glibc "/include/netinet/in.h")))
#t)))
(delete 'move-tk-inter)))))
(native-search-paths
(list (search-path-specification
(variable "PYTHONPATH")
(files '("lib/python2.4/site-packages")))))
(properties '((cpe-name . "python")))))
(define (default-python2.4)
"Return the default Python-2.4 package."
;; Lazily resolve the binding.
(let ((python (resolve-interface '(gn packages python24))))
(module-ref python 'python-2.4)))
(define package-with-python24
((@@ (guix build-system python) package-with-explicit-python) (delay (default-python2.4))
"python-" "python24-"
#:variant-property 'python24-variant))
(define (strip-python24-variant p)
(package
(inherit p)
(properties (alist-delete 'python24-variant (package-properties p)))))
|