[proj] 01/03: Add patch to avoid XY, LP and UV datatype clashes with other libraries.
Bas Couwenberg
sebastic at debian.org
Sat Feb 10 10:37:52 UTC 2018
This is an automated email from the git hooks/post-receive script.
sebastic pushed a commit to branch experimental
in repository proj.
commit 6c397e86f71754ebef5e35ffd32d3d8900815388
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date: Sat Feb 10 11:12:52 2018 +0100
Add patch to avoid XY, LP and UV datatype clashes with other libraries.
See: #889922 & #889926
---
debian/changelog | 2 +
...-and-UV-datatype-clashes-with-other-libra.patch | 135 +++++++++++++++++++++
debian/patches/series | 1 +
3 files changed, 138 insertions(+)
diff --git a/debian/changelog b/debian/changelog
index b9f7fc3..555bc92 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,6 +1,8 @@
proj (5.0.0~rc2-1~exp3) UNRELEASED; urgency=medium
* Ignore test failures on problematic architectures only.
+ * Add patch to avoid XY, LP and UV datatype clashes with other libraries.
+ See: #889922 & #889926
-- Bas Couwenberg <sebastic at debian.org> Fri, 09 Feb 2018 14:40:43 +0100
diff --git a/debian/patches/0001-Avoid-XY-LP-and-UV-datatype-clashes-with-other-libra.patch b/debian/patches/0001-Avoid-XY-LP-and-UV-datatype-clashes-with-other-libra.patch
new file mode 100644
index 0000000..55f613c
--- /dev/null
+++ b/debian/patches/0001-Avoid-XY-LP-and-UV-datatype-clashes-with-other-libra.patch
@@ -0,0 +1,135 @@
+Description: Avoid XY, LP and UV datatype clashes with other libraries.
+ Remove unnecessary definitions of UV and UVW from project.h that collides with
+ external libraries. To prevent similar problems in the future the
+ datatypes XY, LP, UV, XYZ, LPZ and UVW has been prefixed by PJ_ in
+ proj.h and proj_internal.h
+Author: Kristian Evers <kristianevers at gmail.com>
+Origin: https://github.com/OSGeo/proj.4/commit/9c75d794177276189d0a2809bc462291e1a070d3
+
+--- a/src/proj.h
++++ b/src/proj.h
+@@ -212,13 +212,13 @@ typedef struct { double o, p, k; }
+ typedef struct { double e, n, u; } PJ_ENU; /* East, North, Up */
+
+ /* Classic proj.4 pair/triplet types */
+-typedef struct { double u, v; } UV;
+-typedef struct { double x, y; } XY;
+-typedef struct { double lam, phi; } LP;
+-
+-typedef struct { double x, y, z; } XYZ;
+-typedef struct { double u, v, w; } UVW;
+-typedef struct { double lam, phi, z; } LPZ;
++typedef struct { double u, v; } PJ_UV;
++typedef struct { double x, y; } PJ_XY;
++typedef struct { double lam, phi; } PJ_LP;
++
++typedef struct { double x, y, z; } PJ_XYZ;
++typedef struct { double u, v, w; } PJ_UVW;
++typedef struct { double lam, phi, z; } PJ_LPZ;
+
+
+ /* Avoid preprocessor renaming and implicit type-punning: Use a union to make it explicit */
+@@ -229,12 +229,12 @@ union PJ_COORD {
+ PJ_LPZT lpzt;
+ PJ_OPK opk;
+ PJ_ENU enu;
+- XYZ xyz;
+- UVW uvw;
+- LPZ lpz;
+- XY xy;
+- UV uv;
+- LP lp;
++ PJ_XYZ xyz;
++ PJ_UVW uvw;
++ PJ_LPZ lpz;
++ PJ_XY xy;
++ PJ_UV uv;
++ PJ_LP lp;
+ };
+
+
+@@ -263,8 +263,8 @@ struct PJ_GRID_INFO {
+ char gridname[32]; /* name of grid */
+ char filename[260]; /* full path to grid */
+ char format[8]; /* file format of grid */
+- LP lowerleft; /* Coordinates of lower left corner */
+- LP upperright; /* Coordinates of upper right corner */
++ PJ_LP lowerleft; /* Coordinates of lower left corner */
++ PJ_LP upperright; /* Coordinates of upper right corner */
+ int n_lon, n_lat; /* Grid size */
+ double cs_lon, cs_lat; /* Cell size of grid */
+ };
+@@ -336,16 +336,16 @@ PJ_COORD proj_coord (double x, double y,
+ double proj_roundtrip (PJ *P, PJ_DIRECTION direction, int n, PJ_COORD *coo);
+
+ /* Geodesic distance between two points with angular 2D coordinates */
+-double proj_lp_dist (const PJ *P, LP a, LP b);
++double proj_lp_dist (const PJ *P, PJ_LP a, PJ_LP b);
+
+ /* The geodesic distance AND the vertical offset */
+-double proj_lpz_dist (const PJ *P, LPZ a, LPZ b);
++double proj_lpz_dist (const PJ *P, PJ_LPZ a, PJ_LPZ b);
+
+ /* Euclidean distance between two points with linear 2D coordinates */
+-double proj_xy_dist (XY a, XY b);
++double proj_xy_dist (PJ_XY a, PJ_XY b);
+
+ /* Euclidean distance between two points with linear 3D coordinates */
+-double proj_xyz_dist (XYZ a, XYZ b);
++double proj_xyz_dist (PJ_XYZ a, PJ_XYZ b);
+
+
+ /* Set or read error level */
+@@ -355,7 +355,7 @@ int proj_errno_reset (const PJ *P);
+ int proj_errno_restore (const PJ *P, int err);
+
+ /* Scaling and angular distortion factors */
+-PJ_FACTORS proj_factors(PJ *P, LP lp);
++PJ_FACTORS proj_factors(PJ *P, PJ_LP lp);
+
+ /* Info functions - get information about various PROJ.4 entities */
+ PJ_INFO proj_info(void);
+--- a/src/proj_internal.h
++++ b/src/proj_internal.h
+@@ -91,9 +91,9 @@ PJ_COORD pj_approx_3D_trans (PJ *P, PJ_D
+ /* Grid functionality */
+ int proj_vgrid_init(PJ *P, const char *grids);
+ int proj_hgrid_init(PJ *P, const char *grids);
+-double proj_vgrid_value(PJ *P, LP lp);
+-LP proj_hgrid_value(PJ *P, LP lp);
+-LP proj_hgrid_apply(PJ *P, LP lp, PJ_DIRECTION direction);
++double proj_vgrid_value(PJ *P, PJ_LP lp);
++PJ_LP proj_hgrid_value(PJ *P, PJ_LP lp);
++PJ_LP proj_hgrid_apply(PJ *P, PJ_LP lp, PJ_DIRECTION direction);
+
+ /* High level functionality for handling thread contexts */
+ enum proj_log_level {
+--- a/src/projects.h
++++ b/src/projects.h
+@@ -157,10 +157,6 @@ typedef struct { double u, v, w; } projU
+ #define XYZ projUVW
+ #define LPZ projUVW
+
+-/* Yes, this is ridiculous, but a consequence of an old and bad decision about implicit type-punning through preprocessor abuse */
+-typedef struct { double u, v; } UV;
+-typedef struct { double u, v, w; } UVW;
+-
+ #else
+ typedef struct { double x, y; } XY;
+ typedef struct { double x, y, z; } XYZ;
+@@ -169,6 +165,15 @@ typedef struct { double lam, phi, z; } L
+ typedef struct { double u, v; } UV;
+ typedef struct { double u, v, w; } UVW;
+ #endif /* ndef PJ_LIB__ */
++
++#else
++typedef PJ_XY XY;
++typedef PJ_LP LP;
++typedef PJ_UV UV;
++typedef PJ_XYZ XYZ;
++typedef PJ_LPZ LPZ;
++typedef PJ_UVW UVW;
++
+ #endif /* ndef PROJ_H */
+
+
diff --git a/debian/patches/series b/debian/patches/series
index 7a8abdb..2dc5fe8 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
manpage-section.patch
avoid-numerical-differences-on-non-amd64-architectures.patch
+0001-Avoid-XY-LP-and-UV-datatype-clashes-with-other-libra.patch
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/proj.git
More information about the Pkg-grass-devel
mailing list