Thanks for your patch. I am also running some more tests on different
architectures.
Johan
On Sun, Sep 14, 2014 at 11:53 PM, Rebecca Palmer
rebecca_pal...@zoho.com wrote:
Package: libhdf4-0
Version: 4.2.10~1exp1
Control: tags -1 patch
(from debian/patches/hdfi.h )
--- a/HDF4/hdf/src/hconv.h
+++ b/HDF4/hdf/src/hconv.h
@@ -59,7 +59,7 @@
/* CONSTANT DEFINITIONS
*/
/*/
/* Generally Big-Endian machines */
-#if !defined(INTEL86) !defined(MIPSEL) !defined(DEC_ALPHA)
!defined(I860) !defined(SUN386) !(defined(__ia64) !(defined(hpux)
|| defined(__hpux))) !defined(__x86_64__)
+#if !defined(INTEL86) !defined(MIPSEL) !defined(DEC_ALPHA)
!defined(I860) !defined(SUN386) !(defined(__ia64) !(defined(hpux)
|| defined(__hpux))) !defined(__x86_64__) (defined(__powerpc__)
!defined(__LITTLE_ENDIAN__)) !defined(__aarch64__)
!defined(__ARM_EABI__)
That treats anything that isn't powerpc as little-endian, which is wrong for
s390x and mips.
The result of this appears to be that while the data itself gets put the
right way round, the array size metadata doesn't:
# t100x100 is the test file from
http://sources.debian.net/src/libhdf4/4.2.10-1%7Eexp1/hdf/util/testfiles/fp2hdf/t100x100/
amd64$ hdfimport t100x100 -o test_amd64.hdf
qemu-s390x$ hdfimport t100x100 -o test_s390x.hdf
$ cmp test_s390x.hdf test_amd64.hdf -l
41095 144 0
41098 0 144
41192 144 0
41195 0 144
41293 0 102
41294 0 310
41295 310 0
41296 102 0
42044 62 63
amd64$ hdiff test_amd64.hdf test_s390x.hdf
Comparison not supported
DataSet has rank 2, dimensions [ 100 100 ]
DataSet has rank 2, dimensions [ 1677721600 1677721600 ]
# 1677721600 = 100 24
qemu-s390x$ hdiff test_amd64.hdf test_s390x.hdf
Comparison not supported
DataSet has rank 2, dimensions [ 1677721600 1677721600 ]
DataSet has rank 2, dimensions [ 100 100 ]
qemu-s390x$ hdp dumpsds test_s390x.hdf
File name: test_s390x.hdf
Variable Name = DataSet
Index = 0
Type= 32-bit floating point
Ref. = 2
Compression method = NONE
Rank = 2
Number of attributes = 1
Dim0: Name=fakeDim0
Size = 100
Scale Type = 32-bit floating point
Number of attributes = 0
Dim1: Name=fakeDim1
Size = 100
Scale Type = 32-bit floating point
Number of attributes = 0
Attr0: Name = valid_range
Type = 32-bit floating point
Count= 2
Value = 0.00 100.00
Data :
[...large array...]
amd64$ hdp dumpsds test_s390x.hdf
File name: test_s390x.hdf
Variable Name = DataSet
Index = 0
Type= 32-bit floating point
Ref. = 2
Compression method = NONE
Rank = 2
Number of attributes = 1
Dim0: Name=fakeDim0
Size = 1677721600
Scale Type = 32-bit floating point
Number of attributes = 0
Dim1: Name=fakeDim1
Size = 1677721600
Scale Type = 32-bit floating point
Number of attributes = 0
Attr0: Name = valid_range
Type = 32-bit floating point
Count= 2
Value = 0.00 0.00
Data :
in sdsdumpfull: space allocation for buf failed. Terminated!
If you want to keep this (weird, and fragile in that it silently treats
anything it doesn't recognise as big-endian) form use
+#if !defined(INTEL86) !defined(MIPSEL) !defined(DEC_ALPHA)
!defined(I860) !defined(SUN386) !(defined(__ia64) !(defined(hpux)
|| defined(__hpux))) !defined(__x86_64__) !(defined(__powerpc__)
defined(__LITTLE_ENDIAN__)) !defined(__aarch64__)
!defined(__ARM_EABI__)
Fortunately, nothing outside libhdf4 uses this header (according to
codesearch.debian.net), so nothing else should need recompiling.
___
Pkg-grass-devel mailing list
Pkg-grass-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel
___
Pkg-grass-devel mailing list
Pkg-grass-devel@lists.alioth.debian.org
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel