Package: postgis
Version: 2.2.0+dfsg-3
Tags: patch
postgis fails to build because the testcases fail, e.g.:
https://buildd.debian.org/status/fetch.php?pkg=postgis&arch=hppa&ver=2.2.0%2Bdfsg-3&stamp=1451249930
specifically this test fails:
Suite: wkb_output
Test: test_wkb_out_point ...FAILED
1. cu_out_wkb.c:78 -
CU_ASSERT_STRING_EQUAL(s,"00000000017FF80000000000007FF8000000000000")
2. cu_out_wkb.c:81 -
CU_ASSERT_STRING_EQUAL(s,"0020000001000010E67FF80000000000007FF8000000000000")
3. cu_out_wkb.c:84 -
CU_ASSERT_STRING_EQUAL(s,"00800000017FF80000000000007FF80000000000007FF8000000000000")
4. cu_out_wkb.c:87 -
CU_ASSERT_STRING_EQUAL(s,"00400000017FF80000000000007FF80000000000007FF8000000000000")
5. cu_out_wkb.c:90 -
CU_ASSERT_STRING_EQUAL(s,"00C00000017FF80000000000007FF80000000000007FF80000000000007FF8000000000000")
The reason why this fails is, because parisc/hppa and mips have different
floating point representations for NAN (not-a-number).
The attached patch fixes it for hppa (tested!) and most likely for mips as well
(untested).
Can you apply this patch for the next upload and/or push it upstream ?
Thanks,
Helge
PS: For hppa postgis will probably still fail to build, but that's most likely
a problem in postgres not postgis (still working on it).
diff -up ./liblwgeom/cunit/cu_out_wkb.c.org ./liblwgeom/cunit/cu_out_wkb.c
--- ./liblwgeom/cunit/cu_out_wkb.c.org 2016-01-11 13:46:30.384180275 +0100
+++ ./liblwgeom/cunit/cu_out_wkb.c 2016-01-11 14:30:35.928732134 +0100
@@ -66,6 +66,13 @@ static void cu_wkb(char *wkt)
}
+/* parisc and mips (at least some processors) have a different nan representation from other arches. */
+#if !defined(__hppa__) && !defined(__mips__)
+# define nan_val( v1, v2) v1
+#else
+# define nan_val( v1, v2) v2
+#endif
+
static void test_wkb_out_point(void)
{
cu_wkb("POINT(0 0 0 0)");
@@ -75,19 +82,24 @@ static void test_wkb_out_point(void)
CU_ASSERT_STRING_EQUAL(s,"0060000001000000043FF00000000000003FF00000000000003FF0000000000000");
cu_wkb("POINT EMPTY");
- CU_ASSERT_STRING_EQUAL(s,"00000000017FF80000000000007FF8000000000000");
+ CU_ASSERT_STRING_EQUAL(s, nan_val("00000000017FF80000000000007FF8000000000000",
+ "00000000017FF7FFFFFFFFFFFF7FF7FFFFFFFFFFFF"));
cu_wkb("SRID=4326;POINT EMPTY");
- CU_ASSERT_STRING_EQUAL(s,"0020000001000010E67FF80000000000007FF8000000000000");
+ CU_ASSERT_STRING_EQUAL(s, nan_val("0020000001000010E67FF80000000000007FF8000000000000",
+ "0020000001000010E67FF7FFFFFFFFFFFF7FF7FFFFFFFFFFFF"));
cu_wkb("POINT Z EMPTY");
- CU_ASSERT_STRING_EQUAL(s,"00800000017FF80000000000007FF80000000000007FF8000000000000");
+ CU_ASSERT_STRING_EQUAL(s, nan_val("00800000017FF80000000000007FF80000000000007FF8000000000000",
+ "00800000017FF7FFFFFFFFFFFF7FF7FFFFFFFFFFFF7FF7FFFFFFFFFFFF"));
cu_wkb("POINT M EMPTY");
- CU_ASSERT_STRING_EQUAL(s,"00400000017FF80000000000007FF80000000000007FF8000000000000");
+ CU_ASSERT_STRING_EQUAL(s, nan_val("00400000017FF80000000000007FF80000000000007FF8000000000000",
+ "00400000017FF7FFFFFFFFFFFF7FF7FFFFFFFFFFFF7FF7FFFFFFFFFFFF"));
cu_wkb("POINT ZM EMPTY");
- CU_ASSERT_STRING_EQUAL(s,"00C00000017FF80000000000007FF80000000000007FF80000000000007FF8000000000000");
+ CU_ASSERT_STRING_EQUAL(s, nan_val("00C00000017FF80000000000007FF80000000000007FF80000000000007FF8000000000000",
+ "00C00000017FF7FFFFFFFFFFFF7FF7FFFFFFFFFFFF7FF7FFFFFFFFFFFF7FF7FFFFFFFFFFFF"));
}
static void test_wkb_out_linestring(void)