Gilles Filippini a écrit le 02/12/2016 à 23:26 : > Sebastiaan Couwenberg a écrit le 02/12/2016 à 15:34 : >> On 12/02/2016 09:55 AM, Sebastiaan Couwenberg wrote: >>> On 12/01/2016 07:48 PM, Sebastiaan Couwenberg wrote: >>>> On Wed, 30 Nov 2016 15:10:03 +0000 Iain Lane wrote: >>>>> This package FTBFS on 32 bit arches (works on amd64 and other 64 bit >>>>> arches), maybe due to the new hdf5 >>>> >>>> Quite likely, since hdf-eos5 hasn't been rebuilt for the hdf5 transition >>>> yet. I suspect this issue to fix itself once that's done. >>> >>> It did not, but did only fail on 32-bit architectures. >> >> Gilles, these failures seem to be caused by the hid_t type change from >> 32-bit to a 64-bit value. I'm not sure how to fix it for ruby-hdfeos5, >> can you maybe provide a patch? > > Damn, I tested the build on amd64 only :/ > I've tried fixing the 'incompatible pointer type' warning, but it > deosn't change anything wrt the test suite. > Is there a way to ensure first that hdf-eos5 works fine on 32 bit archs?
CC-ing Alastair, maintainer of hdf-eos5. AIUI the problem lies in hdf-eos5. I've ran a very simple C test made after the first lines of test/test_gd.rb (source attached), both on amd64 and i386. It succeeds on amd64 and fails on i386 at the HE5_GDdetach step with: $ ./myhe5-32 bufsize = 19 ColumnAmountAerosol HDF5-DIAG: Error detected in HDF5 (1.10.0-patch1) thread 4142823168: #000: GDapi.c line 1140 in HE5_GDchkgdid(): Cannot get the Grid index major: Invalid arguments to routine minor: Out of range HDF5-DIAG: Error detected in HDF5 (1.10.0-patch1) thread 4142823168: #000: EHapi.c line 2206 in HE5_EHchkfid(): Invalid file ID: 0. ID should range from 67108864 to 67109064 . major: Invalid arguments to routine minor: Bad value HDF5-DIAG: Error detected in HDF5 (1.10.0-patch1) thread 4142823168: #000: GDapi.c line 1151 in HE5_GDchkgdid(): Checking for file ID failed. major: Invalid arguments to routine minor: Out of range HDF5-DIAG: Error detected in HDF5 (1.10.0-patch1) thread 4142823168: #000: GDapi.c line 12623 in HE5_GDdetach(): Checking for grid ID failed. major: Invalid arguments to routine minor: Out of range Thanks, _g.
#include <HE5_HdfEosDef.h> const char *filename = "OMI-Aura_L3-OMAEROe_2008m0101_v003-2009m0114t114202.he5"; int main(int argc, char *argv[]) { hid_t fid, gdid; long ngrid, bufsize = 0; herr_t ret; char *buffer; fid = HE5_EHopen(filename, H5F_ACC_RDONLY, H5P_DEFAULT); ngrid = HE5_GDinqgrid(filename, NULL, &bufsize); printf("bufsize = %ld\n", bufsize); buffer = malloc((size_t)bufsize+1); buffer[bufsize] = '\0'; ngrid = HE5_GDinqgrid(filename, buffer, &bufsize); printf("%s\n", buffer); gdid = HE5_GDattach(fid, buffer); HE5_GDdetach(gdid); free(buffer); ret = HE5_EHclose(fid); return ret; }
signature.asc
Description: OpenPGP digital signature