diff mbox series

[bug#40322,v3] gnu: Add Xplanet.

Message ID 20200331075757.GA1219@tulip
State Accepted
Headers show
Series [bug#40322,v3] gnu: Add Xplanet. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job

Commit Message

R Veera Kumar March 31, 2020, 7:57 a.m. UTC
* gnu/packages/astronomy.scm (xplanet): New variable.
* gnu/packages/patches/xplanet-1.3.1-remove-null-comparison.patch: New file.
* gnu/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch: New file.
* gnu/packages/patches/xplanet-1.3.1-libimage_gif.c.patch: New file.
* gnu/packages/patches/xplanet-1.3.1-readConfig-fixclang.cpp.patch: New file.
* gnu/packages/patches/xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch: New file.
* gnu/packages/astronomy.scm (xplanet)[source]: Use it.
* gnu/local.mk (dist_patch_DATA): Add them.

Signed-off-by: R Veera Kumar <vkor@vkten.in>
---
Changes in v3:
 - Add patches to gnu/local.mk
 - Put Copyright marks in files
Changes in v2:
 - Add origin, author and year in patches
---
 gnu/local.mk                                  |   6 +
 gnu/packages/astronomy.scm                    |  52 ++++++
 ...t-1.3.1-libdisplay_DisplayOutput.cpp.patch |  16 ++
 .../xplanet-1.3.1-libimage_gif.c.patch        |  54 ++++++
 ...planet-1.3.1-readConfig-fixclang.cpp.patch |  78 +++++++++
 ...xplanet-1.3.1-remove-null-comparison.patch | 161 ++++++++++++++++++
 ...t-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch |  15 ++
 7 files changed, 382 insertions(+)
 create mode 100644 gnu/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch
 create mode 100644 gnu/packages/patches/xplanet-1.3.1-libimage_gif.c.patch
 create mode 100644 gnu/packages/patches/xplanet-1.3.1-readConfig-fixclang.cpp.patch
 create mode 100644 gnu/packages/patches/xplanet-1.3.1-remove-null-comparison.patch
 create mode 100644 gnu/packages/patches/xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch

Comments

Eric Bavier March 31, 2020, 2:50 p.m. UTC | #1
On 31.03.2020 02:57, R Veera Kumar wrote:
> +       (patches
> +        (search-patches
> +         "xplanet-1.3.1-remove-null-comparison.patch"
> +         "xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch"
> +         "xplanet-1.3.1-libimage_gif.c.patch"
> +         "xplanet-1.3.1-readConfig-fixclang.cpp.patch"

Is this patch necessary if we're building with gcc?

> +         "xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch"))))
> +    (build-system gnu-build-system)
> +    (native-inputs
> +     `(("pkg-config" ,pkg-config)))
> +    (inputs
> +     `(("libx11" ,libx11)
> +       ("libxscrnsaver" ,libxscrnsaver)
> +       ("libxext" ,libxext)
> +       ("libice" ,libice)
> +       ("freetype" ,freetype)
> +       ("pango" ,pango)
> +       ("giflib" ,giflib)
> +       ("libjpeg", libjpeg)
> +       ("libpng" ,libpng)
> +       ("libtiff" ,libtiff)
> +       ("zlib" ,zlib)))
> +    (arguments
> +     `(#:configure-flags
> +       (list
> +        "--without-pnm"       ;; no proper pnm library in guix

The "netpbm" package provides a pnm library.

> diff --git
> a/gnu/packages/patches/xplanet-1.3.1-remove-null-comparison.patch
> b/gnu/packages/patches/xplanet-1.3.1-remove-null-comparison.patch
> new file mode 100644
> index 0000000000..002701ed0c
> --- /dev/null
> +++ b/gnu/packages/patches/xplanet-1.3.1-remove-null-comparison.patch
> @@ -0,0 +1,161 @@
> +Origin: Gentoo Harri Nieminen 2017-02-28
> +Url: 
> https://gitweb.gentoo.org/repo/gentoo.git/log/x11-misc/xplanet/files/
> ++xplanet-1.3.1-remove-null-comparison.patch
> +
> +Index: src/libannotate/addArcs.cpp
> +===================================================================
> +diff --git a/src/libannotate/addArcs.cpp b/src/libannotate/addArcs.cpp
> +--- a/src/libannotate/addArcs.cpp	(revision 206)
> ++++ b/src/libannotate/addArcs.cpp	(revision 207)
> +@@ -258,7 +258,7 @@
> +         {
> +             ifstream inFile(arcFile.c_str());
> +             char *line = new char[MAX_LINE_LENGTH];
> +-            while (inFile.getline (line, MAX_LINE_LENGTH, '\n') != 
> NULL)
> ++            while (inFile.getline (line, MAX_LINE_LENGTH, '\n'))

I'm worried this might not be correct.  The "getline" function always 
returns it's first parameter, which, I think, can never evaluate to a 
falsy value.  The safer option would be to call ".eof()" on the result, 
and would match the intentions.  See e.g. 
https://notabug.org/bavier/guix-bavier/src/master/bavier/patches/xplanet-cxx11-eof.patch
R Veera Kumar April 1, 2020, 5:08 p.m. UTC | #2
On Tue, Mar 31, 2020 at 09:50:27AM -0500, Eric Bavier wrote:
> On 31.03.2020 02:57, R Veera Kumar wrote:
> > +       (patches
> > +        (search-patches
> > +         "xplanet-1.3.1-remove-null-comparison.patch"
> > +         "xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch"
> > +         "xplanet-1.3.1-libimage_gif.c.patch"
> > +         "xplanet-1.3.1-readConfig-fixclang.cpp.patch"
> 
> Is this patch necessary if we're building with gcc?
>

No. It is to build with clang. I thought since Guix also has clang, it
might be useful in future. I will drop it.
 
> > +         "xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch"))))
> > +    (build-system gnu-build-system)
> > +    (native-inputs
> > +     `(("pkg-config" ,pkg-config)))
> > +    (inputs
> > +       ("giflib" ,giflib)
> > +       ("libjpeg", libjpeg)
> > +       ("libpng" ,libpng)
> > +       ("libtiff" ,libtiff)
> > +       ("zlib" ,zlib)))
> > +    (arguments
> > +     `(#:configure-flags
> > +       (list
> > +        "--without-pnm"       ;; no proper pnm library in guix
> 
> The "netpbm" package provides a pnm library.
> 

I know it. It does not compiles with the current netpbm.
The libnetpbm.so file is not installed by the pkg and xplanet
configure script marks it as not available.

I have filed bug report for this: #40376

It can be packaged without netpbm for now and when the fix is there
I will enable it.

> > diff --git
> > a/gnu/packages/patches/xplanet-1.3.1-remove-null-comparison.patch
> > b/gnu/packages/patches/xplanet-1.3.1-remove-null-comparison.patch
> > new file mode 100644
> > index 0000000000..002701ed0c
> > --- /dev/null
> > +++ b/gnu/packages/patches/xplanet-1.3.1-remove-null-comparison.patch
> > @@ -0,0 +1,161 @@
> > +Origin: Gentoo Harri Nieminen 2017-02-28
> > +Url:
> > https://gitweb.gentoo.org/repo/gentoo.git/log/x11-misc/xplanet/files/
> > ++xplanet-1.3.1-remove-null-comparison.patch
> > +
> > +Index: src/libannotate/addArcs.cpp
> > +===================================================================
> > +diff --git a/src/libannotate/addArcs.cpp b/src/libannotate/addArcs.cpp
> > +--- a/src/libannotate/addArcs.cpp	(revision 206)
> > ++++ b/src/libannotate/addArcs.cpp	(revision 207)
> > +@@ -258,7 +258,7 @@
> > +         {
> > +             ifstream inFile(arcFile.c_str());
> > +             char *line = new char[MAX_LINE_LENGTH];
> > +-            while (inFile.getline (line, MAX_LINE_LENGTH, '\n') !=
> > NULL)
> > ++            while (inFile.getline (line, MAX_LINE_LENGTH, '\n'))
> 
> I'm worried this might not be correct.  The "getline" function always
> returns it's first parameter, which, I think, can never evaluate to a falsy
> value.  The safer option would be to call ".eof()" on the result, and would
> match the intentions.  See e.g. https://notabug.org/bavier/guix-bavier/src/master/bavier/patches/xplanet-cxx11-eof.patch
> 

Okay. I have tested with your patch and builds and works fine.

R Veera Kumar

> -- 
> `~Eric
diff mbox series

Patch

diff --git a/gnu/local.mk b/gnu/local.mk
index eec65c6565..1470b227d9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -28,6 +28,7 @@ 
 # Copyright © 2019 Amin Bandali <bandali@gnu.org>
 # Copyright © 2020 Brendan Tildesley <mail@brendan.scot>
 # Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
+# Copyright © 2020 R Veera Kumar <vkor@vkten.in>
 #
 # This file is part of GNU Guix.
 #
@@ -1524,6 +1525,11 @@  dist_patch_DATA =						\
   %D%/packages/patches/xmoto-utf8.patch				\
   %D%/packages/patches/xmoto-remove-glext.patch			\
   %D%/packages/patches/xmoto-reproducible.patch			\
+  %D%/packages/patches/xplanet-1.3.1-remove-null-comparison.patch	\
+  %D%/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch	\
+  %D%/packages/patches/xplanet-1.3.1-libimage_gif.c.patch	\
+  %D%/packages/patches/xplanet-1.3.1-readConfig-fixclang.cpp.patch	\
+  %D%/packages/patches/xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch	\
   %D%/packages/patches/xsane-fix-memory-leak.patch		\
   %D%/packages/patches/xsane-fix-pdf-floats.patch		\
   %D%/packages/patches/xsane-fix-snprintf-buffer-length.patch	\
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index 3bb236fde9..49fe76128e 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -3,6 +3,7 @@ 
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
 ;;; Copyright © 2019 by Amar Singh <nly@disroot.org>
+;;; Copyright © 2020 R Veera Kumar <vkor@vkten.in>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -25,9 +26,11 @@ 
   #:use-module (guix download)
   #:use-module (guix git-download)
   #:use-module (guix utils)
+  #:use-module (gnu packages)
   #:use-module (gnu packages autotools)
   #:use-module (gnu packages image)
   #:use-module (gnu packages compression)
+  #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gettext)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages pkg-config)
@@ -41,6 +44,7 @@ 
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages maths)
+  #:use-module (gnu packages xorg)
   #:use-module (guix build-system cmake)
   #:use-module (guix build-system gnu)
   #:use-module (srfi srfi-1))
@@ -289,3 +293,51 @@  Mechanics, Astrometry and Astrodynamics library.")
     (license (list license:lgpl2.0+
                    license:gpl2+)))) ; examples/transforms.c & lntest/*.c
 
+(define-public xplanet
+  (package
+    (name "xplanet")
+    (version "1.3.1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri
+        (string-append
+         "mirror://sourceforge/xplanet/xplanet/"
+         version "/xplanet-" version ".tar.gz"))
+       (sha256
+        (base32 "1rzc1alph03j67lrr66499zl0wqndiipmj99nqgvh9xzm1qdb023"))
+       (patches
+        (search-patches
+         "xplanet-1.3.1-remove-null-comparison.patch"
+         "xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch"
+         "xplanet-1.3.1-libimage_gif.c.patch"
+         "xplanet-1.3.1-readConfig-fixclang.cpp.patch"
+         "xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (inputs
+     `(("libx11" ,libx11)
+       ("libxscrnsaver" ,libxscrnsaver)
+       ("libxext" ,libxext)
+       ("libice" ,libice)
+       ("freetype" ,freetype)
+       ("pango" ,pango)
+       ("giflib" ,giflib)
+       ("libjpeg", libjpeg)
+       ("libpng" ,libpng)
+       ("libtiff" ,libtiff)
+       ("zlib" ,zlib)))
+    (arguments
+     `(#:configure-flags
+       (list
+        "--without-pnm"       ;; no proper pnm library in guix
+        "--without-cspice"))) ;; no jpl cspice support
+    (home-page "http://xplanet.sourceforge.net/")
+    (synopsis "Planetary body renderer")
+    (description
+     "Xplanet renders an image of a planet into an X window or file.
+All of the major planets and most satellites can be drawn and different map
+projections are also supported, including azimuthal, hemisphere, Lambert,
+Mercator, Mollweide, Peters, polyconic, orthographic and rectangular.")
+    (license license:gpl2+)))
diff --git a/gnu/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch b/gnu/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch
new file mode 100644
index 0000000000..bf52b0ca27
--- /dev/null
+++ b/gnu/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch
@@ -0,0 +1,16 @@ 
+Origin: $NetBSD: patch-src_libdisplay_DisplayOutput.cpp,v 1.1 2019/11/16 17:36:28 ng0 Exp $
+
+Modified by: R Veera Kumar <vkor@vkten.in> 2020-03-28; change to patch -p1
+
+diff -uNr xplanet-1.3.1/src/libdisplay/DisplayOutput.cpp xplanet-1.3.1.new/src/libdisplay/DisplayOutput.cpp
+--- xplanet-1.3.1/src/libdisplay/DisplayOutput.cpp	2013-02-17 01:07:47.000000000 +0530
++++ xplanet-1.3.1.new/src/libdisplay/DisplayOutput.cpp	2020-03-28 22:08:44.432499170 +0530
+@@ -51,7 +51,7 @@
+     string outputFilename = options->OutputBase();
+     int startIndex = options->OutputStartIndex();
+     int stopIndex = options->NumTimes() + startIndex - 1;
+-    if (stopIndex > 1)
++    if (stopIndex > 0)
+     {
+         const int digits = (int) (log10((double) stopIndex) + 1);
+         char buffer[64];
diff --git a/gnu/packages/patches/xplanet-1.3.1-libimage_gif.c.patch b/gnu/packages/patches/xplanet-1.3.1-libimage_gif.c.patch
new file mode 100644
index 0000000000..58efc906dc
--- /dev/null
+++ b/gnu/packages/patches/xplanet-1.3.1-libimage_gif.c.patch
@@ -0,0 +1,54 @@ 
+Origin: $NetBSD: patch-src_libimage_gif.c,v 1.4 2019/11/16 17:36:28 ng0 Exp $
+
+Modified by: R Veera Kumar <vkor@vkten.in> 2020-03-28; change to patch -p1
+
+diff -uNr xplanet-1.3.1/src/libimage/gif.c xplanet-1.3.1.new/src/libimage/gif.c
+--- xplanet-1.3.1/src/libimage/gif.c	2013-02-17 01:07:47.000000000 +0530
++++ xplanet-1.3.1.new/src/libimage/gif.c	2020-03-28 22:15:24.444309199 +0530
+@@ -21,7 +21,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+-
++#include <stdbool.h>
+ #include <gif_lib.h>
+ 
+ /*
+@@ -178,8 +178,12 @@
+ 	    *BufferP++ = ColorMapEntry->Blue;
+ 	}
+     }
+-    
++
++#if GIFLIB_MAJOR >= 5
++    if (DGifCloseFile(GifFile, NULL) == GIF_ERROR) {
++#else
+     if (DGifCloseFile(GifFile) == GIF_ERROR) {
++#endif
+ 	return(0);
+     }
+ 
+@@ -493,7 +497,11 @@
+ static void QuitGifError(GifFileType *GifFile)
+ {
+     fprintf(stderr, "Error writing GIF file\n");
++#if GIFLIB_MAJOR >= 5
++    if (GifFile != NULL) EGifCloseFile(GifFile, NULL);
++#else
+     if (GifFile != NULL) EGifCloseFile(GifFile);
++#endif
+ }
+ 
+ int 
+@@ -589,7 +597,11 @@
+ 	Ptr += width;
+     }
+ 
++#if GIFLIB_MAJOR >= 5
++    if (EGifCloseFile(GifFile, NULL) == GIF_ERROR)
++#else
+     if (EGifCloseFile(GifFile) == GIF_ERROR)
++#endif
+ 
+     {
+ 	QuitGifError(GifFile);
diff --git a/gnu/packages/patches/xplanet-1.3.1-readConfig-fixclang.cpp.patch b/gnu/packages/patches/xplanet-1.3.1-readConfig-fixclang.cpp.patch
new file mode 100644
index 0000000000..102887b780
--- /dev/null
+++ b/gnu/packages/patches/xplanet-1.3.1-readConfig-fixclang.cpp.patch
@@ -0,0 +1,78 @@ 
+Origin: $NetBSD: patch-src_readConfig-fixclang.cpp,v 1.2 2019/11/16 17:36:28 ng0 Exp $
+
+Modified by: R Veera Kumar <vkor@vkten.in> 2020-03-28; change to patch -p1
+
+diff -uNr xplanet-1.3.1/src/readConfig.cpp xplanet-1.3.1.new/src/readConfig.cpp
+--- xplanet-1.3.1/src/readConfig.cpp	2013-02-17 01:07:47.000000000 +0530
++++ xplanet-1.3.1.new/src/readConfig.cpp	2020-03-28 22:17:19.919078929 +0530
+@@ -4,6 +4,7 @@
+ #include <fstream>
+ #include <sstream>
+ #include <string>
++#include <clocale>
+ using namespace std;
+ 
+ #include "body.h"
+@@ -20,6 +21,8 @@
+ static PlanetProperties *defaultProperties;
+ static PlanetProperties *currentProperties;
+ 
++static inline unsigned char i2b( int x ) { return static_cast<unsigned int>(x) & 0xffU; }
++
+ static void
+ readConfig(const char *line, PlanetProperties *planetProperties[])
+ {
+@@ -49,7 +52,7 @@
+             int r, g, b;
+             if (sscanf(returnString, "%d,%d,%d", &r, &g, &b) == 3)
+             {
+-                unsigned char color[3] = { r & 0xff, g & 0xff, b & 0xff };
++                unsigned char color[3] = { i2b(r), i2b(g), i2b(b) };
+                 currentProperties->ArcColor(color);
+             }
+             else
+@@ -179,7 +182,7 @@
+             int r, g, b;
+             if (sscanf(returnString, "%d,%d,%d", &r, &g, &b) == 3)
+             {
+-                unsigned char color[3] = { r & 0xff, g & 0xff, b & 0xff };
++                unsigned char color[3] = { i2b(r), i2b(g), i2b(b) };
+                 currentProperties->Color(color);
+             }
+             else
+@@ -244,7 +247,7 @@
+             int r, g, b;
+             if (sscanf(returnString, "%d,%d,%d", &r, &g, &b) == 3)
+             {
+-                unsigned char color[3] = { r & 0xff, g & 0xff, b & 0xff };
++                unsigned char color[3] = { i2b(r), i2b(g), i2b(b) };
+                 currentProperties->GridColor(color);
+             }
+             else
+@@ -296,7 +299,7 @@
+             int r, g, b;
+             if (sscanf(returnString, "%d,%d,%d", &r, &g, &b) == 3)
+             {
+-                unsigned char color[3] = { r & 0xff, g & 0xff, b & 0xff };
++                unsigned char color[3] = { i2b(r), i2b(g), i2b(b) };
+                 currentProperties->MarkerColor(color);
+             }
+             else
+@@ -403,7 +406,7 @@
+             int r, g, b;
+             if (sscanf(returnString, "%d,%d,%d", &r, &g, &b) == 3)
+             {
+-                unsigned char color[3] = { r & 0xff, g & 0xff, b & 0xff };
++                unsigned char color[3] = { i2b(r), i2b(g), i2b(b) };
+                 currentProperties->OrbitColor(color);
+             }
+             else
+@@ -473,7 +476,7 @@
+             int r, g, b;
+             if (sscanf(returnString, "%d,%d,%d", &r, &g, &b) == 3)
+             {
+-                unsigned char color[3] = { r & 0xff, g & 0xff, b & 0xff };
++                unsigned char color[3] = { i2b(r), i2b(g), i2b(b) };
+                 currentProperties->TextColor(color);
+             }
+             else
diff --git a/gnu/packages/patches/xplanet-1.3.1-remove-null-comparison.patch b/gnu/packages/patches/xplanet-1.3.1-remove-null-comparison.patch
new file mode 100644
index 0000000000..002701ed0c
--- /dev/null
+++ b/gnu/packages/patches/xplanet-1.3.1-remove-null-comparison.patch
@@ -0,0 +1,161 @@ 
+Origin: Gentoo Harri Nieminen 2017-02-28
+Url: https://gitweb.gentoo.org/repo/gentoo.git/log/x11-misc/xplanet/files/
++xplanet-1.3.1-remove-null-comparison.patch
+
+Index: src/libannotate/addArcs.cpp
+===================================================================
+diff --git a/src/libannotate/addArcs.cpp b/src/libannotate/addArcs.cpp
+--- a/src/libannotate/addArcs.cpp	(revision 206)
++++ b/src/libannotate/addArcs.cpp	(revision 207)
+@@ -258,7 +258,7 @@
+         {
+             ifstream inFile(arcFile.c_str());
+             char *line = new char[MAX_LINE_LENGTH];
+-            while (inFile.getline (line, MAX_LINE_LENGTH, '\n') != NULL)
++            while (inFile.getline (line, MAX_LINE_LENGTH, '\n'))
+                 readArcFile(line, planet, view, projection,
+                             planetProperties, annotationMap);
+             
+@@ -292,7 +292,7 @@
+         {
+             ifstream inFile(arcFile.c_str());
+             char *line = new char[256];
+-            while (inFile.getline (line, 256, '\n') != NULL)
++            while (inFile.getline (line, 256, '\n'))
+                 readArcFile(line, NULL, view, NULL, NULL, annotationMap);
+ 
+             inFile.close();
+Index: src/libannotate/addMarkers.cpp
+===================================================================
+diff --git a/src/libannotate/addMarkers.cpp b/src/libannotate/addMarkers.cpp
+--- a/src/libannotate/addMarkers.cpp	(revision 206)
++++ b/src/libannotate/addMarkers.cpp	(revision 207)
+@@ -429,7 +429,7 @@
+         {
+             ifstream inFile(markerFile.c_str());
+             char *line = new char[MAX_LINE_LENGTH];
+-            while (inFile.getline (line, MAX_LINE_LENGTH, '\n') != NULL)
++            while (inFile.getline (line, MAX_LINE_LENGTH, '\n'))
+             {
+                 unsigned char color[3];
+                 memcpy(color, planetProperties->MarkerColor(), 3);
+@@ -475,7 +475,7 @@
+         {
+             ifstream inFile(markerFile.c_str());
+             char *line = new char[MAX_LINE_LENGTH];
+-            while (inFile.getline (line, MAX_LINE_LENGTH, '\n') != NULL)
++            while (inFile.getline (line, MAX_LINE_LENGTH, '\n'))
+             {
+                 unsigned char color[3];
+                 memcpy(color, options->Color(), 3);
+Index: src/libannotate/addSatellites.cpp
+===================================================================
+diff --git a/src/libannotate/addSatellites.cpp b/src/libannotate/addSatellites.cpp
+--- a/src/libannotate/addSatellites.cpp	(revision 206)
++++ b/src/libannotate/addSatellites.cpp	(revision 207)
+@@ -488,10 +488,10 @@
+         {
+             ifstream inFile(tleFile.c_str());
+             char lines[3][80];
+-            while (inFile.getline(lines[0], 80) != NULL)
++            while (inFile.getline(lines[0], 80))
+             {
+-                if ((inFile.getline(lines[1], 80) == NULL) 
+-                    || (inFile.getline(lines[2], 80) == NULL))
++                if ((!inFile.getline(lines[1], 80)) 
++                    || (!inFile.getline(lines[2], 80)))
+                 {
+                     ostringstream errStr;
+                     errStr << "Malformed TLE file (" << tleFile << ")?\n";
+@@ -542,7 +542,7 @@
+         {
+             ifstream inFile(satFile.c_str());
+             char *line = new char[MAX_LINE_LENGTH];
+-            while (inFile.getline (line, MAX_LINE_LENGTH, '\n') != NULL)
++            while (inFile.getline (line, MAX_LINE_LENGTH, '\n'))
+                 readSatelliteFile(line, planet, view, projection,
+                                   planetProperties, annotationMap);
+             
+Index: src/libannotate/addSpiceObjects.cpp
+===================================================================
+diff --git a/src/libannotate/addSpiceObjects.cpp b/src/libannotate/addSpiceObjects.cpp
+--- a/src/libannotate/addSpiceObjects.cpp	(revision 206)
++++ b/src/libannotate/addSpiceObjects.cpp	(revision 207)
+@@ -524,7 +524,7 @@
+         {
+             ifstream inFile(kernelFile.c_str());
+             char *line = new char[MAX_LINE_LENGTH];
+-            while (inFile.getline(line, MAX_LINE_LENGTH, '\n') != NULL)
++            while (inFile.getline(line, MAX_LINE_LENGTH, '\n'))
+             {
+                 int ii = 0;
+                 while (isDelimiter(line[ii]))
+@@ -576,7 +576,7 @@
+         {
+             ifstream inFile(spiceFile.c_str());
+             char *line = new char[MAX_LINE_LENGTH];
+-            while (inFile.getline(line, MAX_LINE_LENGTH, '\n') != NULL)
++            while (inFile.getline(line, MAX_LINE_LENGTH, '\n'))
+                 readSpiceFile(line, planetsFromSunMap, view, projection,
+                               annotationMap);
+             inFile.close();
+Index: src/libmultiple/RayleighScattering.cpp
+===================================================================
+diff --git a/src/libmultiple/RayleighScattering.cpp b/src/libmultiple/RayleighScattering.cpp
+--- a/src/libmultiple/RayleighScattering.cpp	(revision 206)
++++ b/src/libmultiple/RayleighScattering.cpp	(revision 207)
+@@ -369,7 +369,7 @@
+ 
+     diskTemplate_.clear();
+     limbTemplate_.clear();
+-    while (inFile.getline(line, MAX_LINE_LENGTH, '\n') != NULL)
++    while (inFile.getline(line, MAX_LINE_LENGTH, '\n'))
+     {
+         int i = 0;
+         while (isDelimiter(line[i]))
+@@ -439,7 +439,7 @@
+     values.clear();
+ 
+     char line[MAX_LINE_LENGTH];
+-    while (inFile.getline(line, MAX_LINE_LENGTH, '\n') != NULL)
++    while (inFile.getline(line, MAX_LINE_LENGTH, '\n'))
+     {
+         int i = 0;
+         while (isDelimiter(line[i]))
+@@ -470,7 +470,7 @@
+                               double &value)
+ {
+     char line[MAX_LINE_LENGTH];
+-    while (inFile.getline(line, MAX_LINE_LENGTH, '\n') != NULL)
++    while (inFile.getline(line, MAX_LINE_LENGTH, '\n'))
+     {
+         int i = 0;
+         while (isDelimiter(line[i]))
+Index: src/libmultiple/drawStars.cpp
+===================================================================
+diff --git a/src/libmultiple/drawStars.cpp b/src/libmultiple/drawStars.cpp
+--- a/src/libmultiple/drawStars.cpp	(revision 206)
++++ b/src/libmultiple/drawStars.cpp	(revision 207)
+@@ -41,7 +41,7 @@
+     ifstream inFile(starMap.c_str());
+ 
+     char line[MAX_LINE_LENGTH];
+-    while (inFile.getline(line, MAX_LINE_LENGTH, '\n') != NULL)
++    while (inFile.getline(line, MAX_LINE_LENGTH, '\n'))
+     {
+         if (line[0] == '#') continue;
+ 
+Index: src/readConfig.cpp
+===================================================================
+diff --git a/src/readConfig.cpp b/src/readConfig.cpp
+--- a/src/readConfig.cpp	(revision 206)
++++ b/src/readConfig.cpp	(revision 207)
+@@ -550,7 +550,7 @@
+ 
+         ifstream inFile(configFile.c_str());
+         char *line = new char[256];
+-        while (inFile.getline(line, 256, '\n') != NULL)
++        while (inFile.getline(line, 256, '\n'))
+             readConfig(line, planetProperties);
+         
+         // This condition will only be true if [default] is the only
diff --git a/gnu/packages/patches/xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch b/gnu/packages/patches/xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch
new file mode 100644
index 0000000000..a47623fa00
--- /dev/null
+++ b/gnu/packages/patches/xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch
@@ -0,0 +1,15 @@ 
+$NetBSD: patch-src_xpUtil-Add2017LeapSecond.cpp,v 1.1 2019/11/16 17:36:28 ng0 Exp $
+
+Modified by: R Veera Kumar <vkor@vkten.in> 2020-03-28; change to patch -p1
+
+diff -uNr xplanet-1.3.1/src/xpUtil.cpp xplanet-1.3.1.new/src/xpUtil.cpp
+--- xplanet-1.3.1/src/xpUtil.cpp	2016-03-12 08:36:47.000000000 +0530
++++ xplanet-1.3.1.new/src/xpUtil.cpp	2020-03-28 22:19:10.629891166 +0530
+@@ -434,6 +434,7 @@
+     if (jd >= toJulian(2009, 1, 1, 0, 0, 0)) delta_at++; // 34
+     if (jd >= toJulian(2012, 7, 1, 0, 0, 0)) delta_at++; // 35
+     if (jd >= toJulian(2015, 7, 1, 0, 0, 0)) delta_at++; // 36
++    if (jd >= toJulian(2017, 1, 1, 0, 0, 0)) delta_at++; // 37
+ 
+     const double J2000 = toJulian(2000, 1, 1, 12, 0, 0);
+     const double m = m0 + m1 * (jd - J2000) * 86400;