Control: block -1 by 846853
Control: tags -1 + patch
Gilles Filippini a écrit le 03/12/2016 à 02:34 :
> Gilles Filippini a écrit le 03/12/2016 à 01:35 :
>> 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
>
> The problem seems to be the type conversion functions in EHapi.c. For
> instance:
>
> long
> HE5_EHhid2long(hid_t invalue)
> {
> long outvalue = FAIL;
>
> if (sizeof(hid_t) == sizeof(int))
> outvalue = HE5_EHint2long(invalue);
> else if (sizeof(hid_t) == sizeof(long))
> outvalue = invalue;
>
> return(outvalue);
> }
>
> On 32 bit archs:
> sizeof(hid_t) != sizeof(int)
> sizeof(hid_t) != sizeof(long)
> sizeof(hid_t) == sizeof(long long)
>
> The conversion functions should be adapted accordingly.I've filed #846853 against src:hdf-eos5. There are issues in ruby-hdfeos5 as well. See the attached patch. With these fixes the ruby-hdfeos5 testsuite passes on 64 bit and 32 bit arches. Thanks, _g.
diff -Nru ruby-hdfeos5-1.2/debian/changelog ruby-hdfeos5-1.2/debian/changelog --- ruby-hdfeos5-1.2/debian/changelog 2016-03-01 10:16:48.000000000 +0100 +++ ruby-hdfeos5-1.2/debian/changelog 2016-12-03 18:55:27.000000000 +0100 @@ -1,3 +1,10 @@ +ruby-hdfeos5 (1.2-6.1) unstable; urgency=medium + + * Non-maintainer upload + * Fix FTBFS on 32 bi architectures against hdf5 1.10 (closes: #846353) + + -- Gilles Filippini <[email protected]> Sat, 03 Dec 2016 18:55:27 +0100 + ruby-hdfeos5 (1.2-6) unstable; urgency=medium * Remove dbg package diff -Nru ruby-hdfeos5-1.2/debian/patches/hid_t.patch ruby-hdfeos5-1.2/debian/patches/hid_t.patch --- ruby-hdfeos5-1.2/debian/patches/hid_t.patch 1970-01-01 01:00:00.000000000 +0100 +++ ruby-hdfeos5-1.2/debian/patches/hid_t.patch 2016-12-03 15:23:32.000000000 +0100 @@ -0,0 +1,142 @@ +Index: ruby-hdfeos5-1.2/hdfeos5gd_wrap.c +=================================================================== +--- ruby-hdfeos5-1.2.orig/hdfeos5gd_wrap.c ++++ ruby-hdfeos5-1.2/hdfeos5gd_wrap.c +@@ -20,7 +20,7 @@ + #endif + + extern int check_numbertype(char *); +-extern int change_numbertype(char *); ++extern hid_t change_numbertype(char *); + extern int change_entrycode(char *); + extern int change_projcode(char *); + extern int change_compmethod(char *); +@@ -1327,7 +1327,7 @@ hdfeos5_gdinqfields(VALUE mod, VALUE ent + + i_count = (int)o_nflds; + rank = hdfeos5_cintary2obj(o_rank, i_count, 1, &i_count); +- ntype = hdfeos5_cintary2obj(o_ntype, i_count, 1, &i_count); ++ ntype = hdfeos5_cunsint64ary2obj(o_ntype, i_count, 1, &i_count); + + return rb_ary_new3(4, nflds, fieldlist, rank, ntype); + } +@@ -1905,12 +1905,12 @@ hdfeos5_gdsetextdata(VALUE mod, VALUE fi + size = rb_Array(size); + } + i_filelist = RSTRING_PTR(filelist); +- i_offset = hdfeos5_obj2clongary(offset); ++ i_offset = hdfeos5_obj2cunsint64ary(offset); + i_size = hdfeos5_obj2cunsint64ary(size); + + o_rtn_val = HE5_GDsetextdata(i_gridid, i_filelist, i_offset, i_size); + rtn_val = (o_rtn_val == FAIL) ? Qfalse : Qtrue; +- hdfeos5_freeclongary(i_offset); ++ hdfeos5_freecunsint64ary(i_offset); + hdfeos5_freecunsint64ary(i_size); + return rtn_val; + } +@@ -1946,7 +1946,7 @@ hdfeos5_gdgetextdata(VALUE mod, VALUE fi + + namelength = hdfeos5_cintary2obj((int*)o_namelength,o_nfiles,1,&o_nfiles); + filelist = hdfeos5_ccharary2obj(o_filelist,o_nfiles,o_nfiles); +- offset = hdfeos5_clongary2obj(o_offset,o_nfiles,1,&o_nfiles); ++ offset = hdfeos5_cunsint64ary2obj(o_offset,o_nfiles,1,&o_nfiles); + size = hdfeos5_cunsint64ary2obj(o_size,o_nfiles,1,&o_nfiles); + + return rb_ary_new3(5,nfiles, namelength, filelist, offset, size); +Index: ruby-hdfeos5-1.2/hdfeos5sw_wrap.c +=================================================================== +--- ruby-hdfeos5-1.2.orig/hdfeos5sw_wrap.c ++++ ruby-hdfeos5-1.2/hdfeos5sw_wrap.c +@@ -1098,7 +1098,7 @@ hdfeos5_swinqdatafields(VALUE mod, VALUE + + i_count = (int)o_nflds; + rank = hdfeos5_cintary2obj(o_rank, i_count, 1, &i_count); +- ntype = hdfeos5_cintary2obj(o_ntype, i_count, 1, &i_count); ++ ntype = hdfeos5_cunsint64ary2obj(o_ntype, i_count, 1, &i_count); + + return rb_ary_new3(4, nflds, fieldlist, rank, ntype); + } +@@ -1139,7 +1139,7 @@ hdfeos5_swinqgeofields(VALUE mod, VALUE + + i_count = (int)o_nflds; + rank = hdfeos5_cintary2obj(o_rank, i_count, 1, &i_count); +- ntype = hdfeos5_cintary2obj(o_ntype, i_count, 1, &i_count); ++ ntype = hdfeos5_cunsint64ary2obj(o_ntype, i_count, 1, &i_count); + + return rb_ary_new3(4, nflds, fieldlist, rank, ntype); + } +@@ -2685,12 +2685,12 @@ hdfeos5_swsetextdata(VALUE mod, VALUE fi + size = rb_Array(size); + } + i_filelist = RSTRING_PTR(filelist); +- i_offset = hdfeos5_obj2clongary(offset); ++ i_offset = hdfeos5_obj2cunsint64ary(offset); + i_size = hdfeos5_obj2cunsint64ary(size); + + o_rtn_val = HE5_SWsetextdata(i_swathid, i_filelist, i_offset, i_size); + rtn_val = (o_rtn_val == FAIL) ? Qfalse : Qtrue; +- hdfeos5_freeclongary(i_offset); ++ hdfeos5_freecunsint64ary(i_offset); + hdfeos5_freecunsint64ary(i_size); + return rtn_val; + } +@@ -2726,7 +2726,7 @@ hdfeos5_swgetextdata(VALUE mod, VALUE fi + + namelength = hdfeos5_cintary2obj((int*)o_namelength,o_rtn_val,1,&o_rtn_val); + filelist = hdfeos5_ccharary2obj(o_filelist,o_rtn_val,o_rtn_val); +- offset = hdfeos5_clongary2obj(o_offset,o_rtn_val,1,&o_rtn_val); ++ offset = hdfeos5_cunsint64ary2obj(o_offset,o_rtn_val,1,&o_rtn_val); + size = hdfeos5_cunsint64ary2obj(o_size,o_rtn_val,1,&o_rtn_val); + + return rb_ary_new3(5,rtn_val, namelength, filelist, offset, size); +Index: ruby-hdfeos5-1.2/hdfeos5za_wrap.c +=================================================================== +--- ruby-hdfeos5-1.2.orig/hdfeos5za_wrap.c ++++ ruby-hdfeos5-1.2/hdfeos5za_wrap.c +@@ -785,7 +785,7 @@ hdfeos5_zainquire(VALUE mod, VALUE entry + + i_count = (int)o_nflds; + rank = hdfeos5_cintary2obj(o_rank, i_count, 1, &i_count); +- ntype = hdfeos5_cintary2obj(o_ntype, i_count, 1, &i_count); ++ ntype = hdfeos5_cunsint64ary2obj(o_ntype, i_count, 1, &i_count); + + return rb_ary_new3(4, nflds, fieldlist, rank, ntype); + } +@@ -1603,12 +1603,12 @@ hdfeos5_zasetextdata(VALUE mod, VALUE fi + size = rb_Array(size); + } + i_filelist = RSTRING_PTR(filelist); +- i_offset = hdfeos5_obj2clongary(offset); ++ i_offset = hdfeos5_obj2cunsint64ary(offset); + i_size = hdfeos5_obj2cunsint64ary(size); + + o_rtn_val = HE5_ZAsetextdata(i_zaid, i_filelist, i_offset, i_size); + rtn_val = (o_rtn_val == FAIL) ? Qfalse : Qtrue; +- hdfeos5_freeclongary(i_offset); ++ hdfeos5_freecunsint64ary(i_offset); + hdfeos5_freecunsint64ary(i_size); + return rtn_val; + } +@@ -1644,7 +1644,7 @@ hdfeos5_zagetextdata(VALUE mod, VALUE fi + + namelength = hdfeos5_cintary2obj((int*)o_namelength,o_rtn_val,1,&o_rtn_val); + filelist = hdfeos5_ccharary2obj(o_filelist,o_rtn_val,o_rtn_val); +- offset = hdfeos5_clongary2obj(o_offset,o_rtn_val,1,&o_rtn_val); ++ offset = hdfeos5_cunsint64ary2obj(o_offset,o_rtn_val,1,&o_rtn_val); + size = hdfeos5_cunsint64ary2obj(o_size,o_rtn_val,1,&o_rtn_val); + + return rb_ary_new3(5,rtn_val, namelength, filelist, offset, size); +Index: ruby-hdfeos5-1.2/hdfeos5_chkdatatype.c +=================================================================== +--- ruby-hdfeos5-1.2.orig/hdfeos5_chkdatatype.c ++++ ruby-hdfeos5-1.2/hdfeos5_chkdatatype.c +@@ -156,7 +156,7 @@ check_numbertype(char *numbertype) + __FILE__,__LINE__); + } + +-int ++hid_t + change_numbertype(char *numbertype) + { + if(strcmp(numbertype,"byte")==0) return(H5T_NATIVE_CHAR); diff -Nru ruby-hdfeos5-1.2/debian/patches/series ruby-hdfeos5-1.2/debian/patches/series --- ruby-hdfeos5-1.2/debian/patches/series 2015-09-04 07:56:38.000000000 +0200 +++ ruby-hdfeos5-1.2/debian/patches/series 2016-12-03 18:27:12.000000000 +0100 @@ -2,3 +2,4 @@ 0002-Fix-test-data-path.patch 0003-Fix-printf-debugging.patch 0004-hdf5-dir.patch +hid_t.patch
signature.asc
Description: OpenPGP digital signature

