diff mbox series

[bug#50887] gnu: Add python-fitsio.

Message ID m1tui3n4t6.fsf@fastmail.net
State Accepted
Headers show
Series [bug#50887] gnu: Add python-fitsio. | expand

Checks

Context Check Description
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Konrad Hinsen Sept. 29, 2021, 8:47 a.m. UTC
* gnu/packages/astronomy.scm (python-fitsio): New variable.
---
 gnu/packages/astronomy.scm | 43 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

Comments

Xinglu Chen Oct. 1, 2021, 2:05 p.m. UTC | #1
On Wed, Sep 29 2021, Konrad Hinsen wrote:

> * gnu/packages/astronomy.scm (python-fitsio): New variable.
> ---
>  gnu/packages/astronomy.scm | 43 ++++++++++++++++++++++++++++++++++++++
>  1 file changed, 43 insertions(+)
>
> diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
> index a3f7d5cbf4..4fba3aae99 100644
> --- a/gnu/packages/astronomy.scm
> +++ b/gnu/packages/astronomy.scm
> @@ -96,6 +96,49 @@ in FITS files.")
>      (license (license:non-copyleft "file://License.txt"
>                            "See License.txt in the distribution."))))
>  
> +(define-public python-fitsio
> +  (package
> +    (name "python-fitsio")
> +    (version "1.1.5")
> +    (source
> +     (origin
> +       (method url-fetch)
> +       (uri (pypi-uri "fitsio" version))
> +       (sha256
> +        (base32 "1llql2i6xr9lkdl81jx5nvz80kspamvira90546y32ldy551hq1l"))))
> +    (build-system python-build-system)
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (add-after 'unpack 'unbundle-cfitsio
> +           (lambda* (#:key inputs #:allow-other-keys)
> +             (let* ((cfitsio (assoc-ref inputs "cfitsio"))
> +                    (includedir (string-append "\"" cfitsio "/include\""))
> +                    (libdir (string-append "\"" cfitsio "/lib\"")))
> +               ;; Use Guix' cfitsio instead of the bundled one
> +               (substitute* "setup.py"
> +                 (("self.use_system_fitsio = False") "pass")
> +                 (("self.system_fitsio_includedir = None") "pass")
> +                 (("self.system_fitsio_libdir = None") "pass")
> +                 (("self.use_system_fitsio") "True")
> +                 (("self.system_fitsio_includedir") includedir)
> +                 (("self.system_fitsio_libdir") libdir)))

Maybe the bundled cfitsio should also be deleted in a ‘snippet’ in the ‘origin’?

> +             ;; The bzip2 test fails because Guix' cfitsio
> +             ;; is built without bzip2 support.
> +             (substitute* "fitsio/test.py"
> +               (("'SKIP_BZIP_TEST' in os.environ") "True"))

This part should probably be put in a separate phase, maybe you could
call it ‘skip-bzip-test’.

> +             #t)))))

Phases don’t need to return #t.

> +    (propagated-inputs
> +     `(("python-numpy" ,python-numpy)
> +       ("cfitsio" ,cfitsio)))
> +    (home-page "https://github.com/esheldon/fitsio")
> +    (synopsis
> +     "Python library to read from and write to FITS files")
> +    (description
> +     "A compact Python library for reading from and writing to FITS files,
> +based on the CFITSIO library.")

The sentence is lacking a subject; the meaning of “FITS” should be
written (I had no idea what it meant).  I suggest something like

  This package provides a Python library for reading from and writing to
  @acronym{FITS, Flexible Image Transport System} files using the
  CFITSIO library.  Among other things, it can

  @itemize
  @item read and write image, binary, and ascii table extensions;

  @item read arbitrary subsets of tables in a lazy manner;

  @item query the rows and columns of a table;

  @item read and write header keywords;

  @item read and write Gzip files directory;

  @item read Zip and Bzip2 files.
  @end itemize

> +    (license license:gpl2)))

‘LICENSE.txt’ looks like gpl2+

Could you send an updated patch?
diff mbox series

Patch

diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index a3f7d5cbf4..4fba3aae99 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -96,6 +96,49 @@  in FITS files.")
     (license (license:non-copyleft "file://License.txt"
                           "See License.txt in the distribution."))))
 
+(define-public python-fitsio
+  (package
+    (name "python-fitsio")
+    (version "1.1.5")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "fitsio" version))
+       (sha256
+        (base32 "1llql2i6xr9lkdl81jx5nvz80kspamvira90546y32ldy551hq1l"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'unbundle-cfitsio
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let* ((cfitsio (assoc-ref inputs "cfitsio"))
+                    (includedir (string-append "\"" cfitsio "/include\""))
+                    (libdir (string-append "\"" cfitsio "/lib\"")))
+               ;; Use Guix' cfitsio instead of the bundled one
+               (substitute* "setup.py"
+                 (("self.use_system_fitsio = False") "pass")
+                 (("self.system_fitsio_includedir = None") "pass")
+                 (("self.system_fitsio_libdir = None") "pass")
+                 (("self.use_system_fitsio") "True")
+                 (("self.system_fitsio_includedir") includedir)
+                 (("self.system_fitsio_libdir") libdir)))
+             ;; The bzip2 test fails because Guix' cfitsio
+             ;; is built without bzip2 support.
+             (substitute* "fitsio/test.py"
+               (("'SKIP_BZIP_TEST' in os.environ") "True"))
+             #t)))))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)
+       ("cfitsio" ,cfitsio)))
+    (home-page "https://github.com/esheldon/fitsio")
+    (synopsis
+     "Python library to read from and write to FITS files")
+    (description
+     "A compact Python library for reading from and writing to FITS files,
+based on the CFITSIO library.")
+    (license license:gpl2)))
+
 (define-public qfits
   (package
     (name "qfits")