Subject: Re: bug#62306: [PATCH] gnu: Add phd2

From: Maxim Cournoyer <[email-masked]>
Date: Tue, 11 Apr 2023 11:56:06 -0400

Hi,

Sharlatan Hellseher <[email-masked]> writes:

> * gnu/packages/astronomy.scm (phd2): New variable.
> ---
>  gnu/packages/astronomy.scm | 70 ++++++++++++++++++++++++++++++++++++++
>  1 file changed, 70 insertions(+)
>
> diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
> index 46839c802f..6ca3c4f4e7 100644
> --- a/gnu/packages/astronomy.scm
> +++ b/gnu/packages/astronomy.scm
> @@ -678,6 +678,76 @@ (define-public gnuastro
>  programs for the manipulation and analysis of astronomical data.")
>      (license license:gpl3+)))
>  
> +(define-public phd2
> +  (package
> +    (name "phd2")
> +    (version "2.6.11")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/OpenPHDGuiding/phd2")
> +             (commit (string-append "v" version))))
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32 "0n87xsv9gzrwk1ygws4vw397ffq40xybp5b3c3bd5kcmff0avaw9"))
> +       (modules '((guix build utils)
> +                  (ice-9 ftw)
> +                  (srfi srfi-26)))
> +       (snippet
> +        #~(begin
> +            ;; TODO: This snippet is sourced from
> +            ;; guix/gnu/packages/vnc.scm. It might be merged with
> +            ;; `delete-file-recursively' which can have `ignore' optional
> +            ;; argument.
> +            (define (delete-all-but directory . preserve)
> +              (define (directory? x)
> +                (and=> (stat x #f)
> +                       (compose (cut eq? 'directory <>) stat:type)))
> +              (with-directory-excursion directory
> +                (let* ((pred
> +                        (negate (cut member <> (append '("." "..") preserve))))
> +                       (items (scandir "." pred)))
> +                  (for-each (lambda (item)
> +                              (if (directory? item)
> +                                  (delete-file-recursively item)
> +                                  (delete-file item)))
> +                            items))))
> +            ;; XXX: Check this list of ignored items in next release.
> +            (delete-all-but "thirdparty" "thirdparty.cmake")))))
> +    (build-system cmake-build-system)
> +    (arguments
> +     (list
> +      #:configure-flags
> +      #~(list "-DOPENSOURCE_ONLY=yes"
> +              "-DUSE_SYSTEM_CFITSIO=yes"
> +              "-DUSE_SYSTEM_EIGEN3=yes"
> +              "-DUSE_SYSTEM_GTEST=yes"
> +              "-DUSE_SYSTEM_LIBINDI=yes"
> +              "-DUSE_SYSTEM_LIBUSB=yes")))
> +    (native-inputs
> +     (list gettext-minimal
> +           googletest
> +           perl
> +           pkg-config
> +           python-wrapper))
> +    (inputs
> +     (list cfitsio
> +           curl-minimal
> +           eigen
> +           gtk+
> +           indi
> +           libnova
> +           libusb
> +           wxwidgets
> +           zlib))
> +    (home-page "https://openphdguiding.org")
> +    (synopsis "Teleskope guiding software")
> +    (description
> +     "PHD2 is the enhanced, second generation version of the PHD guiding software
> +from Stark Labs.")
> +    (license license:bsd-3)))
> +
>  (define-public sextractor
>    (package
>      (name "sextractor")

I've taken the liberty to apply the following cosmetic adjustments:

--8<---------------cut here---------------start------------->8---
1 file changed, 10 insertions(+), 16 deletions(-)
gnu/packages/astronomy.scm | 26 ++++++++++----------------

modified   gnu/packages/astronomy.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2019 by Amar Singh <[email-masked]>
 ;;; Copyright © 2020 R Veera Kumar <[email-masked]>
 ;;; Copyright © 2020, 2021 Guillaume Le Vaillant <[email-masked]>
-;;; Copyright © 2021, 2022 Sharlatan Hellseher <[email-masked]>
+;;; Copyright © 2021, 2022, 2023 Sharlatan Hellseher <[email-masked]>
 ;;; Copyright © 2021, 2022 Vinicius Monego <[email-masked]>
 ;;; Copyright © 2021 Greg Hogan <[email-masked]>
 ;;; Copyright © 2021 Foo Chuan Wei <[email-masked]>
@@ -696,10 +696,7 @@ (define-public phd2
                   (srfi srfi-26)))
        (snippet
         #~(begin
-            ;; TODO: This snippet is sourced from
-            ;; guix/gnu/packages/vnc.scm. It might be merged with
-            ;; `delete-file-recursively' which can have `ignore' optional
-            ;; argument.
+            ;; XXX: 'delete-all-but' is copied from the turbovnc package.

Rationale: the suggestion to enhance delete-file-recursively would be
better discussed on guix-devel.

             (define (delete-all-but directory . preserve)
               (define (directory? x)
                 (and=> (stat x #f)
@@ -713,27 +710,24 @@ (define (directory? x)
                                   (delete-file-recursively item)
                                   (delete-file item)))
                             items))))
-            ;; XXX: Check this list of ignored items in next release.
             (delete-all-but "thirdparty" "thirdparty.cmake")))))

Rationale: we're safe by default.  If the package breaks on a version
update, its maintainer will be forced into looking into that :-).
     
     (build-system cmake-build-system)
     (arguments
-     (list
-      #:configure-flags
-      #~(list "-DOPENSOURCE_ONLY=yes"
-              "-DUSE_SYSTEM_CFITSIO=yes"
-              "-DUSE_SYSTEM_EIGEN3=yes"
-              "-DUSE_SYSTEM_GTEST=yes"
-              "-DUSE_SYSTEM_LIBINDI=yes"
-              "-DUSE_SYSTEM_LIBUSB=yes")))
+     (list #:configure-flags #~(list "-DOPENSOURCE_ONLY=yes"
+                                     "-DUSE_SYSTEM_CFITSIO=yes"
+                                     "-DUSE_SYSTEM_EIGEN3=yes"
+                                     "-DUSE_SYSTEM_GTEST=yes"
+                                     "-DUSE_SYSTEM_LIBINDI=yes"
+                                     "-DUSE_SYSTEM_LIBUSB=yes")))

Stylistic.

     (native-inputs
      (list gettext-minimal
            googletest
            perl
            pkg-config
-           python-wrapper))
+           python))
     (inputs
      (list cfitsio
-           curl-minimal
+           curl

curl-minimal doesn't exist anymore.  It had long been deprecated (2020).

            eigen
            gtk+
            indi
--8<---------------cut here---------------end--------------->8---

And installed it!  Thank you!

-- 
Thanks,
Maxim