[Debian-astro-maintainers] Bug#838424: casacore: FTBFS on arm64 and s390x: several tests fail

Edmund Grimley Evans edmund.grimley.evans at gmail.com
Thu Jun 1 21:34:46 UTC 2017


The tests "tStatisticsUtilities" and "tLatticeStatistics" can be made
to pass on arm64 with these adjustments to the expected accuracy:

--- casacore-2.2.0.orig/lattices/LatticeMath/test/tLatticeStatistics.cc
+++ casacore-2.2.0/lattices/LatticeMath/test/tLatticeStatistics.cc
@@ -419 +419 @@
-            AlwaysAssert(near(sumsq(pos), expSumSq), AipsError);
+            AlwaysAssert(near(sumsq(pos), expSumSq, 1e-9), AipsError);
@@ -422 +422 @@
-            AlwaysAssert(near(rms(pos), expRMS), AipsError);
+            AlwaysAssert(near(rms(pos), expRMS, 1e-10), AipsError);
diff -ru0 casacore-2.2.0.orig/scimath/Mathematics/test/tStatisticsUtilities.cc
casacore-2.2.0/scimath/Mathematics/test/tStatisticsUtilities.cc
--- casacore-2.2.0.orig/scimath/Mathematics/test/tStatisticsUtilities.cc
+++ casacore-2.2.0/scimath/Mathematics/test/tStatisticsUtilities.cc
@@ -268 +268 @@
-            AlwaysAssert(got.sumsq == expec.sumsq, AipsError);
+            AlwaysAssert(near(got.sumsq, expec.sumsq), AipsError);

The test "tLCEllipsoid" seems to be converting ellipses into bitmaps.
I'm guessing it gives different output on amd64 and arm64 because the
real curve passes through a critical point and numerical inaccuracy
puts it on different sides of the point on the two architectures. One
way to fix that might be to use non-round numbers in the parameters so
that the curve does not pass through a critical point. That's what I
tried to do, and with the following changes to the program and the
expected output the test passes on both amd64 and arm64:

--- casacore-2.2.0.orig/lattices/LRegions/test/tLCEllipsoid.cc
+++ casacore-2.2.0/lattices/LRegions/test/tLCEllipsoid.cc
@@ -215,2 +215,2 @@
-            major = 36;
-            minor = 16;
+            major = 36.01;
+            minor = 16.01;
diff -ru0 casacore-2.2.0.orig/lattices/LRegions/test/tLCEllipsoid.out
casacore-2.2.0/lattices/LRegions/test/tLCEllipsoid.out
--- casacore-2.2.0.orig/lattices/LRegions/test/tLCEllipsoid.out
+++ casacore-2.2.0/lattices/LRegions/test/tLCEllipsoid.out
@@ -166 +166 @@
-0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 [35, 26]
+0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
0 [35, 26]
@@ -180 +180 @@
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0
0 [35, 12]
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0
0 [35, 12]
@@ -210 +210 @@
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 [35, 19]
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 [35, 19]
@@ -213 +213 @@
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
1 [35, 16]
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
1 [35, 16]
@@ -225 +225 @@
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [35, 4]
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [35, 4]
@@ -229 +229 @@
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [35, 0]
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 [35, 0]
@@ -243 +243 @@
-0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 [35, 23]
+0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 [35, 23]
@@ -257 +257 @@
-0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 [35, 9]
+0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 [35, 9]
@@ -268 +268 @@
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 [35, 35]
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 [35, 35]
@@ -272 +272 @@
-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 [35, 31]
+1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 [35, 31]
@@ -284 +284 @@
-1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 [35, 19]
+1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 [35, 19]
@@ -287 +287 @@
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 [35, 16]
+1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 [35, 16]

I'm not sure what to do about the other two tests that fail on arm64,
"tLSQaips" and "tLSQFit", because those two generate a load of output
text containing floating-point numbers and compare that text with an
expected output. It might not be so easy to make that work on all
architectures. Perhaps one could simply disable those two tests.
Preferably one would still run them, so that we can see what happens
in the logs, but not have the build fail if only those tests fail.

With the above changes and the following one, the package builds on arm64:

--- casacore-2.2.0.orig/scimath/Fitting/test/CMakeLists.txt
+++ casacore-2.2.0/scimath/Fitting/test/CMakeLists.txt
@@ -6,2 +6,2 @@
-tLSQaips
-tLSQFit
+#tLSQaips
+#tLSQFit

Can anyone test these changes on other architectures?



More information about the Debian-astro-maintainers mailing list