diff options
Diffstat (limited to 'gnu/packages/astronomy.scm')
-rw-r--r-- | gnu/packages/astronomy.scm | 114 |
1 files changed, 106 insertions, 8 deletions
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm index 49ed12f3d3..1fb755d271 100644 --- a/gnu/packages/astronomy.scm +++ b/gnu/packages/astronomy.scm @@ -6,6 +6,8 @@ ;;; Copyright © 2020 R Veera Kumar <vkor@vkten.in> ;;; Copyright © 2020, 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com> +;;; Copyright © 2021 Vinicius Monego <monego@posteo.net> +;;; Copyright © 2021 Greg Hogan <code@greghogan.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -56,6 +58,7 @@ #:use-module (gnu packages version-control) #:use-module (gnu packages video) #:use-module (gnu packages xiph) + #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) @@ -580,7 +583,7 @@ any arbitrary astrometric projection defined in the WCS standard.") ;; maybe required? ("mesa" ,mesa) ;; optional: fmtlib, Eigen3; - ("fmt" ,fmt) + ("fmt" ,fmt-7) ("eigen" ,eigen) ;; glut: for glut interface ("freeglut" ,freeglut))) @@ -612,6 +615,100 @@ accurately in real time at any rate desired.") `(#:configure-flags '("-DENABLE_GTK=ON" "-DENABLE_QT=OFF") #:tests? #f)))) +(define-public python-astropy + (package + (name "python-astropy") + (version "4.3.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "astropy" version)) + (sha256 + (base32 "0lfd6n7v7kas4wvacddnwgccax3ks908735dzilg7dsf7ci52f9d")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Remove Python bundles. + (with-directory-excursion "astropy/extern" + (for-each delete-file-recursively '("ply" "configobj"))) + ;; Remove cextern bundles and leave the wcslib bundle. Astropy + ;; upgrades to different versions of wcslib every few releases + ;; and tests break every upgrade. + ;; TODO: unbundle wcslib. + (with-directory-excursion "cextern" + (for-each delete-file-recursively '("cfitsio" "expat"))) + #t)))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'preparations + (lambda _ + ;; Use our own libraries in place of bundles, with the + ;; exception of wcslib. + (setenv "ASTROPY_USE_SYSTEM_CFITSIO" "1") + (setenv "ASTROPY_USE_SYSTEM_EXPAT" "1") + ;; Some tests require a writable home. + (setenv "HOME" "/tmp") + ;; Relax xfail tests. + (substitute* "setup.cfg" + (("xfail_strict = true") "xfail_strict = false")) + ;; Replace all references to external ply. + (let ((ply-files '("coordinates/angle_formats.py" + "utils/parsing.py"))) + (with-directory-excursion "astropy" + (map (lambda (file) + (substitute* file (("astropy.extern.ply") + "ply"))) + ply-files))) + ;; Replace reference to external configobj. + (with-directory-excursion "astropy/config" + (substitute* "configuration.py" + (("from astropy.extern.configobj ") ""))))) + ;; This file is opened in both install and check phases. + (add-before 'install 'writable-compiler + (lambda _ (make-file-writable "astropy/_compiler.c"))) + (add-before 'check 'writable-compiler + (lambda _ (make-file-writable "astropy/_compiler.c"))) + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + ;; Extensions have to be rebuilt before running the tests. + (invoke "python" "setup.py" "build_ext" "--inplace") + (invoke "python" "-m" "pytest" "--pyargs" "astropy" + ;; Skip tests that need remote data. + "-m" "not remote_data"))))))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("python-coverage" ,python-coverage) + ("python-cython" ,python-cython) + ("python-extension-helpers" ,python-extension-helpers) + ("python-ipython" ,python-ipython) + ("python-jplephem" ,python-jplephem) + ("python-objgraph" ,python-objgraph) + ("python-pytest" ,python-pytest) + ("python-pytest-astropy" ,python-pytest-astropy) + ("python-pytest-xdist" ,python-pytest-xdist) + ("python-setuptools-scm" ,python-setuptools-scm) + ("python-sgp4" ,python-sgp4) + ("python-skyfield" ,python-skyfield))) + (inputs + `(("cfitsio" ,cfitsio) + ("expat" ,expat))) + (propagated-inputs + `(("python-configobj" ,python-configobj) + ("python-numpy" ,python-numpy) + ("python-ply" ,python-ply) + ("python-pyerfa" ,python-pyerfa))) + (home-page "https://www.astropy.org/") + (synopsis "Core package for Astronomy in Python") + (description + "Astropy is a single core package for Astronomy in Python. It contains +much of the core functionality and some common tools needed for performing +astronomy and astrophysics.") + (license license:bsd-3))) + (define-public libnova (package (name "libnova") @@ -952,13 +1049,13 @@ more.") (define-public python-jplephem (package (name "python-jplephem") - (version "2.15") + (version "2.16") (source (origin (method url-fetch) (uri (pypi-uri "jplephem" version)) (sha256 - (base32 "1ca3dswsslij79qg6dcijjz4l0fj6nzmxld8z93v45ahlkhps0g0")))) + (base32 "1xvivnsywjaf5lxn3kyg2jhhq393gcwkjrl634m8dn52ypidrcdb")))) (build-system python-build-system) (arguments `(#:phases @@ -1006,12 +1103,13 @@ JPL ephemerides use to predict raw (x,y,z) planetary positions.") (setenv "PYERFA_USE_SYSTEM_LIBERFA" "1") #t))))) (native-inputs - `(("pytest" ,python-pytest) - ("setuptools-scm" ,python-setuptools-scm) - ("pytest-doctestplus" ,python-pytest-doctestplus))) + `(("pytest-doctestplus" ,python-pytest-doctestplus) + ("python-pytest" ,python-pytest) + ("python-setuptools-scm" ,python-setuptools-scm))) (inputs - `(("liberfa" ,erfa) - ("numpy" ,python-numpy))) + `(("liberfa" ,erfa))) + (propagated-inputs + `(("python-numpy" ,python-numpy))) (home-page "https://github.com/liberfa/pyerfa") (synopsis "Python bindings for ERFA") (description |