gnu: Add python-doc8.
[jackhill/guix/guix.git] / gnu / packages / astronomy.scm
CommitLineData
82e4557d
JD
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 John Darrington <jmd@gnu.org>
e13fc379 3;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
bd5b6ce0 4;;; Copyright © 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
ca310f65 5;;; Copyright © 2019 by Amar Singh <nly@disroot.org>
77704cb1 6;;; Copyright © 2020 R Veera Kumar <vkor@vkten.in>
a19d63e8 7;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
82e4557d
JD
8;;;
9;;; This file is part of GNU Guix.
10;;;
11;;; GNU Guix is free software; you can redistribute it and/or modify it
12;;; under the terms of the GNU General Public License as published by
13;;; the Free Software Foundation; either version 3 of the License, or (at
14;;; your option) any later version.
15;;;
16;;; GNU Guix is distributed in the hope that it will be useful, but
17;;; WITHOUT ANY WARRANTY; without even the implied warranty of
18;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19;;; GNU General Public License for more details.
20;;;
21;;; You should have received a copy of the GNU General Public License
22;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
23
24(define-module (gnu packages astronomy)
25 #:use-module (guix packages)
c9bd15c1 26 #:use-module ((guix licenses) #:prefix license:)
82e4557d 27 #:use-module (guix download)
ca310f65 28 #:use-module (guix git-download)
0e8054e8 29 #:use-module (guix utils)
77704cb1 30 #:use-module (gnu packages)
d284d89a 31 #:use-module (gnu packages algebra)
bd5b6ce0 32 #:use-module (gnu packages autotools)
0558e968 33 #:use-module (gnu packages compression)
d284d89a 34 #:use-module (gnu packages curl)
77704cb1 35 #:use-module (gnu packages fontutils)
0558e968 36 #:use-module (gnu packages gettext)
0558e968 37 #:use-module (gnu packages gl)
d284d89a 38 #:use-module (gnu packages glib)
67d24b15 39 #:use-module (gnu packages gnome)
d284d89a
GLV
40 #:use-module (gnu packages gtk)
41 #:use-module (gnu packages image)
42 #:use-module (gnu packages lua)
c9bd15c1 43 #:use-module (gnu packages maths)
77704cb1 44 #:use-module (gnu packages netpbm)
d284d89a
GLV
45 #:use-module (gnu packages perl)
46 #:use-module (gnu packages pkg-config)
47 #:use-module (gnu packages pretty-print)
48 #:use-module (gnu packages qt)
49 #:use-module (gnu packages version-control)
50 #:use-module (gnu packages xiph)
77704cb1 51 #:use-module (gnu packages xorg)
0558e968 52 #:use-module (guix build-system cmake)
67d24b15
AS
53 #:use-module (guix build-system gnu)
54 #:use-module (srfi srfi-1))
82e4557d
JD
55
56(define-public cfitsio
57 (package
58 (name "cfitsio")
c3c9716e 59 (version "3.47")
82e4557d
JD
60 (source
61 (origin
62 (method url-fetch)
63 (uri (string-append
0e8054e8 64 "http://heasarc.gsfc.nasa.gov/FTP/software/fitsio/c/"
c3c9716e 65 name "-" version ".tar.gz"))
82e4557d 66 (sha256
c3c9716e 67 (base32 "1vzlxnrjckz78p2wf148v2z3krkwnykfqvlj42sz3q711vqid1a1"))))
82e4557d 68 (build-system gnu-build-system)
0e8054e8
TGR
69 ;; XXX Building with curl currently breaks wcslib. It doesn't use
70 ;; pkg-config and hence won't link with -lcurl.
82e4557d
JD
71 (arguments
72 `(#:tests? #f ; no tests
73 #:phases
74 (modify-phases %standard-phases
75 (add-after 'unpack 'patch-paths
76 (lambda _
39fb6295
JD
77 (substitute* "Makefile.in" (("/bin/") ""))
78 #t)))))
b8181163 79 (home-page "https://heasarc.gsfc.nasa.gov/fitsio/fitsio.html")
82e4557d
JD
80 (synopsis "Library for reading and writing FITS files")
81 (description "CFITSIO provides simple high-level routines for reading and
d5d087ab 82writing @dfn{FITS} (Flexible Image Transport System) files that insulate the
82e4557d
JD
83programmer from the internal complexities of the FITS format. CFITSIO also
84provides many advanced features for manipulating and filtering the information
85in FITS files.")
86 (license (license:non-copyleft "file://License.txt"
87 "See License.txt in the distribution."))))
2be83f6e
JD
88
89(define-public wcslib
90 (package
91 (name "wcslib")
f781251b 92 (version "6.4")
2be83f6e
JD
93 (source
94 (origin
95 (method url-fetch)
96 (uri (string-append
f781251b 97 "ftp://ftp.atnf.csiro.au/pub/software/wcslib/wcslib-" version
39fb6295 98 ".tar.bz2"))
2be83f6e 99 (sha256
f781251b 100 (base32 "003h23m6d5wcs29v2vbnl63f3z35k5x70lpsqlz5c9bp1bvizh8k"))))
2be83f6e
JD
101 (inputs
102 `(("cfitsio" ,cfitsio)))
103 (build-system gnu-build-system)
104 (arguments
2516ba81
TGR
105 `(#:configure-flags
106 (list (string-append "--with-cfitsiolib="
107 (assoc-ref %build-inputs "cfitsio") "/lib")
108 (string-append "--with-cfitsioinc="
109 (assoc-ref %build-inputs "cfitsio") "/include"))
110 #:phases
60b0c252
TGR
111 (modify-phases %standard-phases
112 (add-before 'configure 'patch-/bin/sh
113 (lambda _
114 (substitute* "makedefs.in"
115 (("/bin/sh") "sh"))
116 #t))
117 (delete 'install-license-files)) ; installed by ‘make install’
ccfac015 118 ;; Parallel execution of the test suite is not supported.
60b0c252 119 #:parallel-tests? #f))
d4442eaf 120 (home-page "https://www.atnf.csiro.au/people/mcalabre/WCS")
a7074f47 121 (synopsis "Library which implements the FITS WCS standard")
1cfd7eaf
TGR
122 (description "The FITS \"World Coordinate System\" (@dfn{WCS}) standard
123defines keywords and usage that provide for the description of astronomical
124coordinate systems in a @dfn{FITS} (Flexible Image Transport System) image
125header.")
2be83f6e 126 (license license:lgpl3+)))
c9bd15c1
JD
127
128(define-public gnuastro
129 (package
130 (name "gnuastro")
b392de0c 131 (version "0.11")
c9bd15c1
JD
132 (source
133 (origin
134 (method url-fetch)
135 (uri (string-append "mirror://gnu/gnuastro/gnuastro-"
38a3b666 136 version ".tar.lz"))
c9bd15c1
JD
137 (sha256
138 (base32
b392de0c 139 "0c1yc2qb7vrqad96savfn06rn01izlfz0va738signv93qqj5k3v"))))
c9bd15c1
JD
140 (inputs
141 `(("cfitsio" ,cfitsio)
142 ("gsl" ,gsl)
09c9fe4a 143 ("libjpeg" ,libjpeg)
edf07598
TGR
144 ("libtiff" ,libtiff)
145 ("wcslib" ,wcslib)
146 ("zlib" ,zlib)))
38a3b666 147 (native-inputs
bd5b6ce0
EF
148 `(("libtool" ,libtool)
149 ("lzip" ,lzip)))
c9bd15c1 150 (build-system gnu-build-system)
6fd52309 151 (home-page "https://www.gnu.org/software/gnuastro/")
ea4678a4 152 (synopsis "Astronomy utilities")
c9bd15c1
JD
153 (description "The GNU Astronomy Utilities (Gnuastro) is a suite of
154programs for the manipulation and analysis of astronomical data.")
155 (license license:gpl3+)))
0558e968
JD
156
157(define-public stellarium
158 (package
159 (name "stellarium")
89909327 160 (version "0.20.1")
a5883d1f
TGR
161 (source
162 (origin
163 (method url-fetch)
164 (uri (string-append "https://github.com/Stellarium/stellarium"
165 "/releases/download/v" version
166 "/stellarium-" version ".tar.gz"))
167 (sha256
89909327 168 (base32 "034jkrdaaamvbrkfwi3qcl6h8hwfnw2nvf7a82faj55rskcpnkhm"))))
0558e968 169 (build-system cmake-build-system)
6b2afac9 170 (inputs
5bbf31cc 171 `(("qtbase" ,qtbase)
b74e2f61 172 ("qtlocation" ,qtlocation)
5bbf31cc
DM
173 ("qtmultimedia" ,qtmultimedia)
174 ("qtscript" ,qtscript)
175 ("qtserialport" ,qtserialport)
6b2afac9
DM
176 ("zlib" ,zlib)))
177 (native-inputs
4b93bc0d
TGR
178 `(("gettext" ,gettext-minimal) ; xgettext is used at compile time
179 ("perl" ,perl) ; For pod2man
180 ("qtbase" ,qtbase) ; Qt MOC is needed at compile time
5bbf31cc 181 ("qttools" ,qttools)))
f1021afb 182 (arguments
6885745d
KK
183 `(#:test-target "test"
184 #:configure-flags (list "-DENABLE_TESTING=1"
185 (string-append
186 "-DCMAKE_CXX_FLAGS=-isystem "
187 (assoc-ref %build-inputs "qtserialport")
188 "/include/qt5"))
189 #:phases (modify-phases %standard-phases
190 (add-before 'check 'set-offscreen-display
191 (lambda _
192 ;; make Qt render "offscreen", required for tests
193 (setenv "QT_QPA_PLATFORM" "offscreen")
194 (setenv "HOME" "/tmp")
195 #t)))))
3d9f26a0 196 (home-page "https://stellarium.org/")
f1021afb
JD
197 (synopsis "3D sky viewer")
198 (description "Stellarium is a planetarium. It shows a realistic sky in
1993D, just like what you see with the naked eye, binoculars, or a telescope. It
200can be used to control telescopes over a serial port for tracking celestial
201objects.")
0558e968 202 (license license:gpl2+)))
ca310f65
AS
203
204(define-public celestia
205 (let ((commit "9dbdf29c4ac3d20afb2d9a80d3dff241ecf81dce"))
206 (package
207 (name "celestia")
208 (version (git-version "1.6.1" "815" commit))
209 (source (origin
210 (method git-fetch)
211 (uri (git-reference
212 (url "https://github.com/celestiaproject/celestia")
213 (commit commit)))
214 (file-name (git-file-name name version))
215 (sha256
216 (base32
217 "00xibg87l1arzifakgj7s828x9pszcgx7x7ij88a561ig49ryh78"))))
218 (build-system cmake-build-system)
219 (native-inputs
220 `(("perl" ,perl)
221 ("libgit2" ,libgit2)
222 ("pkg-config" ,pkg-config)
223 ("libtool" ,libtool)
224 ("gettext" ,gettext-minimal)))
225 (inputs
226 `(("glu" ,glu)
227 ("glew" ,glew)
228 ("libtheora" ,libtheora)
229 ("libjpeg" ,libjpeg)
230 ("libpng" ,libpng)
231 ;; maybe required?
232 ("mesa" ,mesa)
233 ;; optional: fmtlib, Eigen3;
234 ("fmt" ,fmt)
235 ("eigen" ,eigen)
236 ;; glut: for glut interface
237 ("freeglut" ,freeglut)))
238 (propagated-inputs
239 `(("lua" ,lua)))
240 (arguments
241 `(#:configure-flags '("-DENABLE_GLUT=ON" "-DENABLE_QT=OFF")
242 #:tests? #f)) ;no tests
243 (home-page "https://celestia.space/")
244 (synopsis "Real-time 3D visualization of space")
245 (description
246 "This simulation program lets you explore our universe in three
247dimensions. Celestia simulates many different types of celestial objects.
248From planets and moons to star clusters and galaxies, you can visit every
249object in the expandable database and view it from any point in space and
250time. The position and movement of solar system objects is calculated
251accurately in real time at any rate desired.")
252 (license license:gpl2+))))
67d24b15
AS
253
254(define-public celestia-gtk
255 (package
256 (inherit celestia)
257 (name "celestia-gtk")
258 (inputs
259 (append (alist-delete "freeglut" (package-inputs celestia))
260 `(("gtk2" ,gtk+-2)
261 ("gtkglext" ,gtkglext))))
262 (arguments
263 `(#:configure-flags '("-DENABLE_GTK=ON" "-DENABLE_QT=OFF")
264 #:tests? #f))))
62470a01
EF
265
266(define-public libnova
267 (package
268 (name "libnova")
269 (version "0.16")
270 (source
271 (origin
272 (method git-fetch)
273 (uri (git-reference
274 (url "https://git.code.sf.net/p/libnova/libnova.git")
275 (commit (string-append "v" version))))
276 (file-name (git-file-name name version))
277 (sha256
278 (base32
279 "0icwylwkixihzni0kgl0j8dx3qhqvym6zv2hkw2dy6v9zvysrb1b"))))
280 (build-system gnu-build-system)
281 (arguments
282 `(#:phases
283 (modify-phases %standard-phases
284 (add-after 'unpack 'patch-git-version
285 (lambda _
286 (substitute* "./git-version-gen"
287 (("/bin/sh") (which "sh")))
288 #t)))))
289 (native-inputs
290 `(("autoconf" ,autoconf)
291 ("automake" ,automake)
292 ("libtool" ,libtool)))
293 (synopsis "Celestial mechanics, astrometry and astrodynamics library")
294 (description "Libnova is a general purpose, double precision, Celestial
295Mechanics, Astrometry and Astrodynamics library.")
296 (home-page "http://libnova.sourceforge.net/")
297 (license (list license:lgpl2.0+
298 license:gpl2+)))) ; examples/transforms.c & lntest/*.c
299
77704cb1
VK
300(define-public xplanet
301 (package
302 (name "xplanet")
303 (version "1.3.1")
304 (source
305 (origin
306 (method url-fetch)
307 (uri
308 (string-append
309 "mirror://sourceforge/xplanet/xplanet/"
310 version "/xplanet-" version ".tar.gz"))
311 (sha256
312 (base32 "1rzc1alph03j67lrr66499zl0wqndiipmj99nqgvh9xzm1qdb023"))
313 (patches
314 (search-patches
315 "xplanet-1.3.1-cxx11-eof.patch"
316 "xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch"
317 "xplanet-1.3.1-libimage_gif.c.patch"
318 "xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch"))))
319 (build-system gnu-build-system)
320 (native-inputs
321 `(("pkg-config" ,pkg-config)))
322 (inputs
323 `(("libx11" ,libx11)
324 ("libxscrnsaver" ,libxscrnsaver)
325 ("libice" ,libice)
326 ("freetype" ,freetype)
327 ("pango" ,pango)
328 ("giflib" ,giflib)
329 ("libjpeg", libjpeg)
330 ("libpng" ,libpng)
331 ("libtiff" ,libtiff)
332 ("netpbm" ,netpbm)
333 ("zlib" ,zlib)))
334 (arguments
335 `(#:configure-flags
336 (let ((netpbm (assoc-ref %build-inputs "netpbm")))
337 (append (list
338 ;; Give correct path for pnm.h header to configure script
339 (string-append "CPPFLAGS=-I" netpbm "/include/netpbm")
340 ;; no nasa jpl cspice support
341 "--without-cspice" )))))
342 (home-page "http://xplanet.sourceforge.net/")
343 (synopsis "Planetary body renderer")
344 (description
345 "Xplanet renders an image of a planet into an X window or file.
346All of the major planets and most satellites can be drawn and different map
347projections are also supported, including azimuthal, hemisphere, Lambert,
348Mercator, Mollweide, Peters, polyconic, orthographic and rectangular.")
349 (license license:gpl2+)))
a19d63e8
GLV
350
351(define-public gpredict
352 (package
353 (name "gpredict")
354 (version "2.2.1")
355 (source
356 (origin
357 (method url-fetch)
358 (uri (string-append "https://github.com/csete/gpredict/releases"
359 "/download/v" version
360 "/gpredict-" version ".tar.bz2"))
361 (sha256
362 (base32 "0hwf97kng1zy8rxyglw04x89p0bg07zq30hgghm20yxiw2xc8ng7"))))
363 (build-system gnu-build-system)
364 (native-inputs
365 `(("intltool" ,intltool)
366 ("gettext" ,gettext-minimal)
367 ("pkg-config" ,pkg-config)))
368 (inputs
369 `(("curl" ,curl)
370 ("glib" ,glib)
371 ("goocanvas" ,goocanvas)
372 ("gtk+" ,gtk+)))
373 (arguments
374 `(#:phases
375 (modify-phases %standard-phases
376 (add-after 'unpack 'fix-tests
377 (lambda _
378 ;; Remove reference to non-existent file.
379 (substitute* "po/POTFILES.in"
380 (("src/gtk-sat-tree\\.c")
381 ""))
382 #t)))))
383 (synopsis "Satellite tracking and orbit prediction application")
384 (description
385 "Gpredict is a real-time satellite tracking and orbit prediction
386application. It can track a large number of satellites and display their
387position and other data in lists, tables, maps, and polar plots (radar view).
388Gpredict can also predict the time of future passes for a satellite, and
389provide you with detailed information about each pass.")
390 (home-page "http://gpredict.oz9aec.net/index.php")
391 (license license:gpl2+)))