From: R Veera Kumar <vkor@vkten.in>
To: 40322@debbugs.gnu.org
Subject: [bug#40322] [PATCH] gnu: Add Xplanet
Date: Mon, 30 Mar 2020 13:49:29 +0530 [thread overview]
Message-ID: <20200330081929.GA7259@tulip> (raw)
Xplanet renders an image of a planet into an X window or file.
Signed-off-by: R Veera Kumar <vkor@vkten.in>
---
gnu/packages/astronomy.scm | 51 ++++++
.../patches/xplanet-1.3.1-c++11.patch | 157 ++++++++++++++++++
...t-1.3.1-libdisplay_DisplayOutput.cpp.patch | 12 ++
.../xplanet-1.3.1-libimage_gif.c.patch | 50 ++++++
...planet-1.3.1-readConfig-fixclang.cpp.patch | 74 +++++++++
...t-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch | 11 ++
6 files changed, 355 insertions(+)
create mode 100644 gnu/packages/patches/xplanet-1.3.1-c++11.patch
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-xpUtil-Add2017LeapSecond.cpp.patch
diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm
index 3bb236fde9..efcba8f311 100644
--- a/gnu/packages/astronomy.scm
+++ b/gnu/packages/astronomy.scm
@@ -25,9 +25,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 +43,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 +292,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-c++11.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-c++11.patch b/gnu/packages/patches/xplanet-1.3.1-c++11.patch
new file mode 100644
index 0000000000..3ead8872e0
--- /dev/null
+++ b/gnu/packages/patches/xplanet-1.3.1-c++11.patch
@@ -0,0 +1,157 @@
+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-libdisplay_DisplayOutput.cpp.patch b/gnu/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch
new file mode 100644
index 0000000000..2f6c5c77de
--- /dev/null
+++ b/gnu/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch
@@ -0,0 +1,12 @@
+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..d5b3d0cdef
--- /dev/null
+++ b/gnu/packages/patches/xplanet-1.3.1-libimage_gif.c.patch
@@ -0,0 +1,50 @@
+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..2f018a03d2
--- /dev/null
+++ b/gnu/packages/patches/xplanet-1.3.1-readConfig-fixclang.cpp.patch
@@ -0,0 +1,74 @@
+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-xpUtil-Add2017LeapSecond.cpp.patch b/gnu/packages/patches/xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch
new file mode 100644
index 0000000000..fea2062f4a
--- /dev/null
+++ b/gnu/packages/patches/xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch
@@ -0,0 +1,11 @@
+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;
--
2.26.0
next reply other threads:[~2020-03-30 8:20 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-30 8:19 R Veera Kumar [this message]
2020-03-30 10:54 ` [bug#40322] [PATCH] gnu: Add Xplanet Danny Milosavljevic
2020-03-30 16:58 ` [bug#40322] [PATCH v2] " R Veera Kumar
2020-03-30 20:10 ` Jakub Kądziołka
2020-03-31 7:57 ` [bug#40322] [PATCH v3] " R Veera Kumar
2020-03-31 14:50 ` Eric Bavier
2020-04-01 17:08 ` R Veera Kumar
2020-04-02 10:53 ` [bug#40322] [PATCH v4] gnu: Add xplanet R Veera Kumar
2020-04-05 4:39 ` bug#40322: " Eric Bavier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200330081929.GA7259@tulip \
--to=vkor@vkten.in \
--cc=40322@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).