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.000000 100.000000
         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.000000 0.000000
         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.


--
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to