Subject: [bug#62306] [PATCH v2] gnu: Add phd2.

From: Sharlatan Hellseher <[email-masked]>
Date: Mon, 27 Mar 2023 09:46:49 +0100

* 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")
-- 
2.39.2