(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 copy) #:use-module (guix build-system python) #:use-module (gn packages databases) #:use-module (gn packages python) #:use-module (past packages python) #:use-module (gnu packages compression) #:use-module (gnu packages databases) #:use-module (gnu packages elf) #:use-module (gnu packages gcc) #:use-module (gnu packages maths) #:use-module (gnu packages python-xyz) #:use-module (gnu packages tls) #:use-module (srfi srfi-1)) (define (default-python2.4) "Return the default Python-2.4 package." ;; Lazily resolve the binding. (let ((python (resolve-interface '(past packages python)))) (module-ref python 'python-2.4))) ;; We borrow this from (guix build-system python) since we cannot refer to it ;; with the magic '@@' symbol since Guix has switched to guile-3.0. (define* (package-with-explicit-python python old-prefix new-prefix #:key variant-property) "Return a procedure of one argument, P. The procedure creates a package with the same fields as P, which is assumed to use PYTHON-BUILD-SYSTEM, such that it is compiled with PYTHON instead. The inputs are changed recursively accordingly. If the name of P starts with OLD-PREFIX, this is replaced by NEW-PREFIX; otherwise, NEW-PREFIX is prepended to the name. When VARIANT-PROPERTY is present, it is used as a key to search for pre-defined variants of this transformation recorded in the 'properties' field of packages. The property value must be the promise of a package. This is a convenient way for package writers to force the transformation to use pre-defined variants." (define package-variant (if variant-property (lambda (package) (assq-ref (package-properties package) variant-property)) (const #f))) (define (transform p) (cond ;; If VARIANT-PROPERTY is present, use that. ((package-variant p) => force) ;; Otherwise build the new package object graph. ((eq? (package-build-system p) python-build-system) (package (inherit p) (location (package-location p)) (name (let ((name (package-name p))) (string-append new-prefix (if (string-prefix? old-prefix name) (substring name (string-length old-prefix)) name)))) (arguments (let ((python (if (promise? python) (force python) python))) (ensure-keyword-arguments (package-arguments p) `(#:python ,python)))))) (else p))) (define (cut? p) (or (not (eq? (package-build-system p) python-build-system)) (package-variant p))) (package-mapping transform cut?)) (define package-with-python24 (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))))) (define-public python24-htmlgen (package (name "python24-htmlgen") (version "0.9") ;(version "0.99") (source (origin (method url-fetch) (uri (pypi-uri "htmlgen" version)) (sha256 (base32 "14xzjgwdqgs1vs5mq7mg3w48snvgb77yywv64mg8k6qhapmnafdw")))) ;"1kbn6jcbf2mpb9f8hm5gcsipy7habqrq4794lpdbzm5mqxlclmnl")))) (build-system python-build-system) (arguments `(#:python ,python-2.4)) (native-inputs `(("python24-setuptools" ,python24-setuptools))) (propagated-inputs `(("python24-asserts" ,python24-asserts))) (home-page "https://github.com/srittau/python-htmlgen") (synopsis "Python HTML 5 Generator") (description "Python-htmlgen is a library to generate HTML from classes.") (license license:expat))) (define-public python24-asserts (package (name "python24-asserts") (version "0.6") (source (origin (method url-fetch) (uri (pypi-uri "asserts" version)) (sha256 (base32 "05ffy111giwv6sqx97vzzsvcra0gxzx2ilv16gyw135v583frxbn")))) (build-system python-build-system) (arguments `(#:python ,python-2.4)) (native-inputs `(("python24-setuptools" ,python24-setuptools))) (home-page "https://github.com/srittau/python-asserts") (synopsis "Stand-alone Assertions for Python") (description "Stand-alone Assertions for Python") (license license:expat))) (define-public python24-pil (package (inherit python2-pil1) (name "python24-pil") (arguments (substitute-keyword-arguments (package-arguments python2-pil1) ((#:python _) python-2.4))))) (define-public python24-piddle (package (inherit python2-piddle-gn) (name "python24-piddle") (arguments (substitute-keyword-arguments (package-arguments python2-piddle-gn) ((#:python _) python-2.4))) (native-inputs `(("python24-setuptools" ,python24-setuptools))) (propagated-inputs `(("python24-pil" ,python24-pil))))) ;; Apparently this is the library which mimics python-2.6+'s json library (define-public python24-simplejson (let ((base (package-with-python24 python-simplejson))) (package (inherit base) (version "2.0.9") ; last version to officially support python2.4 (source (origin (method url-fetch) (uri (pypi-uri "simplejson" version)) (sha256 (base32 "1vlkxibal9ljabybawnqr3jh6f6g21c5pbrzl65z9vwbfxhg9kdb")))) (native-inputs `(("python24-setuptools" ,python24-setuptools) ,@(package-native-inputs base)))))) (define-public python24-parallel (package (inherit python-parallel) (name "python24-parallel") (arguments `(#:python ,python-2.4 #:use-setuptools? #f #:tests? #f)))) ; no tests (define GN1-thirdparty-sources (origin (method url-fetch/tarbomb) (uri "http://ipfs.genenetwork.org/ipfs/QmTPwYT2pehdxdG1TiHEzVzLgbeuhJ4utXShuz3twA84AB/thirdparty.tgz") (file-name "GN1-thirdparty") (sha256 (base32 "0nnp6g412hjfrcn3k2yrfb14sxv06k0149whc7qmv678nyj5zhfa")))) (define-public python24-json-GN1 (package (name "python24-json-GN1") (version "GN1") (source GN1-thirdparty-sources) (build-system python-build-system) (arguments `(#:python ,python-2.4 #:phases (modify-phases %standard-phases (delete 'build) (delete 'check) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (sitedir (string-append out "/lib/python2.4/site-packages/json/"))) (mkdir-p sitedir) (copy-recursively "thirdparty/json" sitedir) #t)))))) (home-page "") (synopsis "") (description "") (license license:lgpl2.1+))) (define-public python24-svg-GN1 (package (name "python24-svg-GN1") (version "1.0") (source GN1-thirdparty-sources) (build-system python-build-system) (arguments `(#:python ,python-2.4 #:phases (modify-phases %standard-phases (delete 'build) (delete 'check) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (sitedir (string-append out "/lib/python2.4/site-packages/svg/"))) (mkdir-p sitedir) (copy-recursively "thirdparty/svg" sitedir) #t)))))) (home-page "") (synopsis "") (description "") (license license:bsd-4))) (define-public python24-htmlgen-GN1 (package (name "python24-htmlgen-GN1") (version "2.5") (source GN1-thirdparty-sources) (build-system python-build-system) (arguments `(#:python ,python-2.4 #:phases (modify-phases %standard-phases (delete 'build) (delete 'check) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (sitedir (string-append out "/lib/python2.4/site-packages/htmlgen/"))) (mkdir-p sitedir) (copy-recursively "thirdparty/htmlgen" sitedir) #t)))))) (home-page "") (synopsis "") (description "") (license license:bsd-2))) ; I'm not actually sure, checked HTMLgen.py (define-public python24-pyx-GN1 (package (name "python24-pyx-GN1") (version "0.8") (source GN1-thirdparty-sources) (build-system python-build-system) (arguments `(#:python ,python-2.4 #:phases (modify-phases %standard-phases (delete 'build) (delete 'check) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (sitedir (string-append out "/lib/python2.4/site-packages/pyx/"))) (mkdir-p sitedir) (copy-recursively "thirdparty/pyx" sitedir) #t)))))) (home-page "") (synopsis "") (description "") (license license:gpl2+))) (define-public python24-pyxlwriter-GN1 (package (name "python24-pyxlwriter-GN1") (version "0.4a3") (source GN1-thirdparty-sources) (build-system python-build-system) (arguments `(#:python ,python-2.4 #:phases (modify-phases %standard-phases (delete 'build) (delete 'check) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (sitedir (string-append out "/lib/python2.4/site-packages/pyXLWriter/"))) (mkdir-p sitedir) (copy-recursively "thirdparty/pyXLWriter" sitedir) #t)))))) (home-page "") (synopsis "") (description "") (license license:lgpl2.1+))) (define-public python24-pp-GN1 (package (name "python24-pp-GN1") (version "1.5.7") (source GN1-thirdparty-sources) (build-system python-build-system) (arguments `(#:python ,python-2.4 #:use-setuptools? #f #:tests? #f #:phases (modify-phases %standard-phases (add-after 'unpack 'change-directory (lambda _ (chdir "thirdparty/pp-1.5.7") #t))))) (home-page "") (synopsis "") (description "") (license license:bsd-3))) ;; 1.2.3 exactly. There was an API change between 1.2.3 and 1.2.5. ;; https://stackoverflow.com/questions/21740359/python-mysqldb-typeerror-not-all-arguments-converted-during-string-formatting/53563287#53563287 (define-public python24-mysqlclient (package (name "python24-mysqlclient") (version "1.2.3") (source (origin (method url-fetch) (uri (pypi-uri "MySQL-python" version)) (sha256 (base32 "0vkyg9dmj29hzk7fy77f42p7bfj28skyzsjsjry4wqr3z6xnzrkx")))) (build-system python-build-system) (arguments `(#:python ,python-2.4 #:phases (modify-phases %standard-phases (add-before 'check 'pre-check (lambda* (#:key inputs tests? #:allow-other-keys) (if tests? (begin (mkdir-p "/tmp/mysqld") (call-with-output-file "/tmp/my.cnf" (lambda (p) (format p "[mysqld]~@ datadir = /tmp/mysqld~@ port = 3306~@ user = nixbld~@ #character-set-server = utf8mb4~@ socket = /tmp/mysqld/mysql.sock~%"))) (setenv "TESTDB" "/tmp/my.cnf") ;; mysql-5.0 puts mysqld in libexec (setenv "PATH" (string-append (getenv "PATH") ":" (assoc-ref inputs "mysql") "/libexec")) (system "mysqld --defaults-file=/tmp/my.cnf &") (sleep 5) (invoke "mysqladmin" "-S" "/tmp/mysqld/mysql.sock" "variables") (invoke "mysql" "-S" "/tmp/mysqld/mysql.sock" "-e" "'create database mysqldb_test charset utf8;'")) #t)))) #:tests? #f)) ; TODO: Run the test suite (native-inputs `(("mysql" ,mysql-5.0) ; Best supported version according to the README. ("python-nose" ,python24-nose) ("python-setuptools" ,python24-setuptools))) (inputs `(("openssl" ,openssl-1.0) ("zlib" ,zlib))) (home-page "http://mysql-python.sourceforge.net/") (synopsis "Python interface to MySQL") (description "MySQLdb is an interface to the popular MySQL database server for Python. The design goals are: @itemize @item with Python database API version 2.0 @item Thread-safety @item Thread-friendliness (threads will not block each other) @item Compatibility with MySQL-3.23 and later @end itemize") (license license:gpl2+))) ;; It seems this isn't the correct DIRECT binary (define-public python24-direct (package (name "python24-direct") (version "1.0.1") (source (origin (method url-fetch) (uri (pypi-uri "DIRECT" version)) (sha256 (base32 "1d4cf9hynlr42hq0k8w7j4qi45rkrgil332sh0hymklxgmyi21h5")) (modules '((guix build utils))) (snippet '(begin ;; Files are autogenerated using f2py. (delete-file "src/direct-f2pywrappers.f") (delete-file "src/directmodule.c") #t)))) (build-system python-build-system) (arguments `(#:python ,python-2.4 #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-source (lambda _ (substitute* "DIRECT/__init__.py" (("\\.direct") "direct")) #t)) (replace 'check (lambda* (#:key tests? inputs outputs #:allow-other-keys) (when tests? (add-installed-pythonpath inputs outputs) (with-directory-excursion "test" (invoke "python" "test_direct.py"))) #t)) (add-after 'install 'copy-library (lambda* (#:key outputs #:allow-other-keys) (with-directory-excursion (string-append (assoc-ref outputs "out") "/lib/python2.4/site-packages") (copy-file "DIRECT/direct.so" "direct.so")) #t)) (replace 'install-license-files (lambda* (#:key outputs #:allow-other-keys) (install-file "COPYRIGHT" (string-append (assoc-ref outputs "out") "/share/doc/" ,name "-" ,version)) #t))))) (propagated-inputs `(("python24-numpy" ,python24-numpy-1.2))) (inputs `(("gfortran" ,gfortran))) (native-inputs `(("python24-nose" ,python24-nose) ("python24-setuptools" ,python24-setuptools))) ;; Also seems to be here: https://github.com/amitibo/pydirect (home-page "http://code.google.com/p/pydirect/") (synopsis "Python wrapper to the DIRECT algorithm") (description "DIRECT is a method to solve global bound constraint optimization problems and was originally developed by D. R. Jones, C. D. Perttunen and B. E. Stuckmann. @code{pydirect} is a python wrapper around DIRECT. It enables using DIRECT from the comfort of the great Python scripting language. The @code{pydirect} package uses the fortan implementation of DIRECT written by Joerg.M.Gablonsky, DIRECT Version 2.0.4. More information on the DIRECT algorithm can be found in Gablonsky's @url{http://repository.lib.ncsu.edu/ir/bitstream/1840.16/3920/1/etd.pdf, thesis}.") (license license:expat))) ; env IPFS_PATH=/export/ipfs/ ipfs add direct.so ; added QmYUZiuAP6DJeubu69JqvRWSsn53qCZCS3FkRWgTowtWkA direct.so ; penguin2:~/tmp$ env IPFS_PATH=/export/ipfs/ ipfs pin add QmYUZiuAP6DJeubu69JqvRWSsn53qCZCS3FkRWgTowtWkA ; pinned QmYUZiuAP6DJeubu69JqvRWSsn53qCZCS3FkRWgTowtWkA recursively (define-public python24-direct-gn (package (name "python24-direct-gn") (version "GN") (source (origin (method url-fetch) (uri "http://ipfs.genenetwork.org/ipfs/QmYUZiuAP6DJeubu69JqvRWSsn53qCZCS3FkRWgTowtWkA") (file-name "direct.so") (sha256 (base32 "0kj11dbi25k0wvyxxsylx7dsc7wm7rja799fymklkdd8h561la4i")))) (build-system copy-build-system) (arguments `(#:install-plan '(("direct.so" "lib/python2.4/site-packages/")) #:phases (modify-phases %standard-phases (replace 'unpack (lambda* (#:key inputs #:allow-other-keys) (copy-file (assoc-ref inputs "source") "direct.so") #t)) (add-after 'unpack 'patchelf (lambda* (#:key inputs #:allow-other-keys) ;; Writable so we can use patchelf, executable so it is useful. ;; After installation the writable bit is stripped off. (chmod "direct.so" #o777) (invoke "patchelf" "--set-rpath" (string-append (assoc-ref inputs "gcc:lib") "/lib") "direct.so") #t))))) (inputs `(("gcc:lib" ,gcc "lib"))) (native-inputs `(("patchelf" ,patchelf))) (home-page "") (synopsis "") (description "") (license #f)))