Your message dated Fri, 11 Aug 2017 11:49:28 +0000 with message-id <e1dg8ru-0003lo...@fasolo.debian.org> and subject line Bug#856055: fixed in dx 1:4.4.4-10 has caused the Debian Bug report #856055, regarding NetCDF import broken on amd64 to be marked as done.
This means that you claim that the problem has been dealt with. If this is not the case it is now your responsibility to reopen the Bug report if necessary, and/or fix the problem forthwith. (NB: If you are a system administrator and have no idea what this message is talking about, this may indicate a serious mail system misconfiguration somewhere. Please contact ow...@bugs.debian.org immediately.) -- 856055: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=856055 Debian Bug Tracking System Contact ow...@bugs.debian.org with problems
--- Begin Message ---Package: dx Version: 1:4.4.4-9+b1Import of NetCDF files produces incorrect integer values on systems where long is not 32 bits. This can be seen by running the attached nctest.net and importing nctest.nc. The file can be inspected withncdump. The connections, being int valued, will be imported incorrectly.The attached patch should fix the problem. The erroneous code assumed that the NetCDF type NC_LONG corresponds to long. However, NC_LONG is a deprecated alias for NC_INT and by definition 32 bits, whereas long varies by platform. These days it is better to leave such type conversions to the NetCDF library, which provides likely more efficient and correct routines.The patch also fixes a debug output routine, which casts pointers into unsigned int for printing. It seems that the routine is never called but at least compiler warnings are eliminated.-- Timo Korvola <URL:http://www.iki.fi/tkorvola>nctest.nc
Description: Cdf file// // time: Fri Feb 24 00:10:21 2017 // // version: 3.2.0 (format), 4.4.4 (DX) // // // MODULE main // workspace: width = 321, height = 499 // layout: snap = 0, width = 50, height = 50, align = NN // macro main( ) -> ( ) { // // node FileSelector[1]: x = 72, y = 14, inputs = 0, label = FileSelector // output[1]: visible = 1, type = 32, value = "/home/thk/src/test/nctest.nc" // output[2]: visible = 1, type = 32, value = "nctest.nc" // // // node Import[1]: x = 90, y = 118, inputs = 6, label = Import // main_Import_1_out_1 = Import( main_FileSelector_1_out_1, main_Import_1_in_2, main_Import_1_in_3, main_Import_1_in_4, main_Import_1_in_5, main_Import_1_in_6 ) [instance: 1, cache: 1]; // // node AutoColor[1]: x = 138, y = 191, inputs = 10, label = AutoColor // main_AutoColor_1_out_1, main_AutoColor_1_out_2 = AutoColor( main_Import_1_out_1, main_AutoColor_1_in_2, main_AutoColor_1_in_3, main_AutoColor_1_in_4, main_AutoColor_1_in_5, main_AutoColor_1_in_6, main_AutoColor_1_in_7, main_AutoColor_1_in_8, main_AutoColor_1_in_9, main_AutoColor_1_in_10 ) [instance: 1, cache: 1]; // // node AutoGlyph[1]: x = 201, y = 278, inputs = 7, label = AutoGlyph // input[2]: defaulting = 0, visible = 1, type = 32, value = "text" // main_AutoGlyph_1_out_1 = AutoGlyph( main_AutoColor_1_out_1, main_AutoGlyph_1_in_2, main_AutoGlyph_1_in_3, main_AutoGlyph_1_in_4, main_AutoGlyph_1_in_5, main_AutoGlyph_1_in_6, main_AutoGlyph_1_in_7 ) [instance: 1, cache: 1]; // // node Tube[1]: x = 114, y = 280, inputs = 4, label = Tube // main_Tube_1_out_1 = Tube( main_AutoColor_1_out_1, main_Tube_1_in_2, main_Tube_1_in_3, main_Tube_1_in_4 ) [instance: 1, cache: 1]; // // node Collect[1]: x = 177, y = 360, inputs = 2, label = Collect // main_Collect_1_out_1 = Collect( main_Tube_1_out_1, main_AutoGlyph_1_out_1 ) [instance: 1, cache: 1]; // // node Image[1]: x = 175, y = 437, inputs = 49, label = Image // input[1]: defaulting = 0, visible = 0, type = 67108863, value = "Image_1" // input[4]: defaulting = 0, visible = 0, type = 1, value = 1 // input[5]: defaulting = 0, visible = 0, type = 8, value = [0.0407761 0.608095 3.3903] // input[6]: defaulting = 0, visible = 0, type = 8, value = [1.05857 -0.449439 16.9762] // input[7]: defaulting = 1, visible = 0, type = 5, value = 7.32305 // input[8]: defaulting = 0, visible = 0, type = 1, value = 640 // input[9]: defaulting = 0, visible = 0, type = 5, value = 0.75 // input[10]: defaulting = 0, visible = 0, type = 8, value = [0.0102178 0.996991 0.076841] // input[11]: defaulting = 0, visible = 0, type = 5, value = 30.0001 // input[12]: defaulting = 0, visible = 0, type = 1, value = 1 // input[14]: defaulting = 0, visible = 0, type = 1, value = 1 // input[15]: defaulting = 1, visible = 0, type = 32, value = "none" // input[16]: defaulting = 1, visible = 0, type = 32, value = "none" // input[17]: defaulting = 1, visible = 0, type = 1, value = 1 // input[18]: defaulting = 1, visible = 0, type = 1, value = 1 // input[19]: defaulting = 0, visible = 0, type = 1, value = 0 // input[29]: defaulting = 1, visible = 0, type = 3, value = 0 // input[41]: defaulting = 0, visible = 0, type = 32, value = "navigate" // depth: value = 24 // window: position = (0.3708,0.4114), size = 0.3893x0.4971, screen = 0 // internal caching: 1 // main_Image_1_out_1, main_Image_1_out_2, main_Image_1_out_3 = Image( main_Image_1_in_1, main_Collect_1_out_1, main_Image_1_in_3, main_Image_1_in_4, main_Image_1_in_5, main_Image_1_in_6, main_Image_1_in_7, main_Image_1_in_8, main_Image_1_in_9, main_Image_1_in_10, main_Image_1_in_11, main_Image_1_in_12, main_Image_1_in_13, main_Image_1_in_14, main_Image_1_in_15, main_Image_1_in_16, main_Image_1_in_17, main_Image_1_in_18, main_Image_1_in_19, main_Image_1_in_20, main_Image_1_in_21, main_Image_1_in_22, main_Image_1_in_23, main_Image_1_in_24, main_Image_1_in_25, main_Image_1_in_26, main_Image_1_in_27, main_Image_1_in_28, main_Image_1_in_29, main_Image_1_in_30, main_Image_1_in_31, main_Image_1_in_32, main_Image_1_in_33, main_Image_1_in_34, main_Image_1_in_35, main_Image_1_in_36, main_Image_1_in_37, main_Image_1_in_38, main_Image_1_in_39, main_Image_1_in_40, main_Image_1_in_41, main_Image_1_in_42, main_Image_1_in_43, main_Image_1_in_44, main_Image_1_in_45, main_Image_1_in_46, main_Image_1_in_47, main_Image_1_in_48, main_Image_1_in_49 ) [instance: 1, cache: 1]; // network: end of macro body CacheScene(main_Image_1_in_1, main_Image_1_out_1, main_Image_1_out_2); } main_FileSelector_1_out_1 = "/home/thk/src/test/nctest.nc"; main_Import_1_in_2 = NULL; main_Import_1_in_3 = NULL; main_Import_1_in_4 = NULL; main_Import_1_in_5 = NULL; main_Import_1_in_6 = NULL; main_Import_1_out_1 = NULL; main_AutoColor_1_in_2 = NULL; main_AutoColor_1_in_3 = NULL; main_AutoColor_1_in_4 = NULL; main_AutoColor_1_in_5 = NULL; main_AutoColor_1_in_6 = NULL; main_AutoColor_1_in_7 = NULL; main_AutoColor_1_in_8 = NULL; main_AutoColor_1_in_9 = NULL; main_AutoColor_1_in_10 = NULL; main_AutoColor_1_out_1 = NULL; main_AutoGlyph_1_in_2 = "text"; main_AutoGlyph_1_in_3 = NULL; main_AutoGlyph_1_in_4 = NULL; main_AutoGlyph_1_in_5 = NULL; main_AutoGlyph_1_in_6 = NULL; main_AutoGlyph_1_in_7 = NULL; main_AutoGlyph_1_out_1 = NULL; main_Tube_1_in_2 = NULL; main_Tube_1_in_3 = NULL; main_Tube_1_in_4 = NULL; main_Tube_1_out_1 = NULL; main_Collect_1_out_1 = NULL; macro Image( id, object, where, useVector, to, from, width, resolution, aspect, up, viewAngle, perspective, options, buttonState = 1, buttonUpApprox = "none", buttonDownApprox = "none", buttonUpDensity = 1, buttonDownDensity = 1, renderMode = 0, defaultCamera, reset, backgroundColor, throttle, RECenable = 0, RECfile, RECformat, RECresolution, RECaspect, AAenable = 0, AAlabels, AAticks, AAcorners, AAframe, AAadjust, AAcursor, AAgrid, AAcolors, AAannotation, AAlabelscale, AAfont, interactionMode, title, AAxTickLocs, AAyTickLocs, AAzTickLocs, AAxTickLabels, AAyTickLabels, AAzTickLabels, webOptions) -> ( object, camera, where) { ImageMessage( id, backgroundColor, throttle, RECenable, RECfile, RECformat, RECresolution, RECaspect, AAenable, AAlabels, AAticks, AAcorners, AAframe, AAadjust, AAcursor, AAgrid, AAcolors, AAannotation, AAlabelscale, AAfont, AAxTickLocs, AAyTickLocs, AAzTickLocs, AAxTickLabels, AAyTickLabels, AAzTickLabels, interactionMode, title, renderMode, buttonUpApprox, buttonDownApprox, buttonUpDensity, buttonDownDensity) [instance: 1, cache: 1]; autoCamera = AutoCamera( object, "front", object, resolution, aspect, [0,1,0], perspective, viewAngle, backgroundColor) [instance: 1, cache: 1]; realCamera = Camera( to, from, width, resolution, aspect, up, perspective, viewAngle, backgroundColor) [instance: 1, cache: 1]; coloredDefaultCamera = UpdateCamera(defaultCamera, background=backgroundColor) [instance: 1, cache: 1]; nullDefaultCamera = Inquire(defaultCamera, "is null + 1") [instance: 1, cache: 1]; resetCamera = Switch( nullDefaultCamera, coloredDefaultCamera, autoCamera) [instance: 1, cache: 1]; resetNull = Inquire( reset, "is null + 1") [instance: 2, cache: 1]; reset = Switch( resetNull, reset, 0) [instance: 2, cache: 1]; whichCamera = Compute( "($0 != 0 || $1 == 0) ? 1 : 2", reset, useVector) [instance: 1, cache: 1]; camera = Switch( whichCamera, resetCamera, realCamera) [instance: 3, cache: 1]; AAobject = AutoAxes( object, camera, AAlabels, AAticks, AAcorners, AAframe, AAadjust, AAcursor, AAgrid, AAcolors, AAannotation, AAlabelscale, AAfont, AAxTickLocs, AAyTickLocs, AAzTickLocs, AAxTickLabels, AAyTickLabels, AAzTickLabels) [instance: 1, cache: 1]; switchAAenable = Compute("$0+1", AAenable) [instance: 2, cache: 1]; object = Switch( switchAAenable, object, AAobject) [instance:4, cache: 1]; SWapproximation_options = Switch( buttonState, buttonUpApprox, buttonDownApprox) [instance: 5, cache: 1]; SWdensity_options = Switch( buttonState, buttonUpDensity, buttonDownDensity) [instance: 6, cache: 1]; HWapproximation_options = Format( "%s,%s", buttonDownApprox, buttonUpApprox) [instance: 1, cache: 1]; HWdensity_options = Format( "%d,%d", buttonDownDensity, buttonUpDensity) [instance: 2, cache: 1]; switchRenderMode = Compute( "$0+1", renderMode) [instance: 3, cache: 1]; approximation_options = Switch( switchRenderMode, SWapproximation_options, HWapproximation_options) [instance: 7, cache: 1]; density_options = Switch( switchRenderMode, SWdensity_options, HWdensity_options) [instance: 8, cache: 1]; renderModeString = Switch( switchRenderMode, "software", "hardware")[instance: 9, cache: 1]; object_tag = Inquire( object, "object tag")[instance: 3, cache: 1]; annoted_object = Options( object, "send boxes", 0, "cache", 1, "object tag", object_tag, "ddcamera", whichCamera, "rendering approximation", approximation_options, "render every", density_options, "button state", buttonState, "rendering mode", renderModeString) [instance: 1, cache: 1]; RECresNull = Inquire( RECresolution, "is null + 1") [instance: 4, cache: 1]; ImageResolution = Inquire( camera, "camera resolution") [instance: 5, cache: 1]; RECresolution = Switch( RECresNull, RECresolution, ImageResolution) [instance: 10, cache: 1]; RECaspectNull = Inquire( RECaspect, "is null + 1") [instance: 6, cache: 1]; ImageAspect = Inquire( camera, "camera aspect") [instance: 7, cache: 1]; RECaspect = Switch( RECaspectNull, RECaspect, ImageAspect) [instance: 11, cache: 1]; switchRECenable = Compute( "$0 == 0 ? 1 : (($2 == $3) && ($4 == $5)) ? ($1 == 1 ? 2 : 3) : 4", RECenable, switchRenderMode, RECresolution, ImageResolution, RECaspect, ImageAspect) [instance: 4, cache: 1]; NoRECobject, RECNoRerenderObject, RECNoRerHW, RECRerenderObject = Route(switchRECenable, annoted_object); Display( NoRECobject, camera, where, throttle) [instance: 1, cache: 1]; image = Render( RECNoRerenderObject, camera) [instance: 1, cache: 1]; Display( image, NULL, where, throttle) [instance: 2, cache: 1]; WriteImage( image, RECfile, RECformat) [instance: 1, cache: 1]; rec_where = Display( RECNoRerHW, camera, where, throttle) [instance: 1, cache: 0]; rec_image = ReadImageWindow( rec_where) [instance: 1, cache: 1]; WriteImage( rec_image, RECfile, RECformat) [instance: 1, cache: 1]; RECupdateCamera = UpdateCamera( camera, resolution=RECresolution, aspect=RECaspect) [instance: 2, cache: 1]; Display( RECRerenderObject, camera, where, throttle) [instance: 1, cache: 1]; RECRerenderObject = ScaleScreen( RECRerenderObject, NULL, RECresolution, camera) [instance: 1, cache: 1]; image = Render( RECRerenderObject, RECupdateCamera) [instance: 2, cache: 1]; WriteImage( image, RECfile, RECformat) [instance: 2, cache: 1]; } main_Image_1_in_1 = "Image_1"; main_Image_1_in_3 = "X24,,"; main_Image_1_in_4 = 1; main_Image_1_in_5 = [0.0407761 0.608095 3.3903]; main_Image_1_in_6 = [1.05857 -0.449439 16.9762]; main_Image_1_in_7 = NULL; main_Image_1_in_8 = 640; main_Image_1_in_9 = 0.75; main_Image_1_in_10 = [0.0102178 0.996991 0.076841]; main_Image_1_in_11 = 30.0001; main_Image_1_in_12 = 1; main_Image_1_in_13 = NULL; main_Image_1_in_14 = 1; main_Image_1_in_15 = NULL; main_Image_1_in_16 = NULL; main_Image_1_in_17 = NULL; main_Image_1_in_18 = NULL; main_Image_1_in_19 = 0; main_Image_1_in_20 = NULL; main_Image_1_in_21 = NULL; main_Image_1_in_22 = NULL; main_Image_1_in_23 = NULL; main_Image_1_in_25 = NULL; main_Image_1_in_26 = NULL; main_Image_1_in_27 = NULL; main_Image_1_in_28 = NULL; main_Image_1_in_29 = NULL; main_Image_1_in_30 = NULL; main_Image_1_in_31 = NULL; main_Image_1_in_32 = NULL; main_Image_1_in_33 = NULL; main_Image_1_in_34 = NULL; main_Image_1_in_35 = NULL; main_Image_1_in_36 = NULL; main_Image_1_in_37 = NULL; main_Image_1_in_38 = NULL; main_Image_1_in_39 = NULL; main_Image_1_in_40 = NULL; main_Image_1_in_41 = "navigate"; main_Image_1_in_42 = NULL; main_Image_1_in_43 = NULL; main_Image_1_in_44 = NULL; main_Image_1_in_45 = NULL; main_Image_1_in_46 = NULL; main_Image_1_in_47 = NULL; main_Image_1_in_48 = NULL; main_Image_1_in_49 = NULL; Executive("product version 4 4 4"); $sync main();--- a/src/exec/dxmods/import_ncdf.c +++ b/src/exec/dxmods/import_ncdf.c @@ -1406,9 +1406,10 @@ vp1 = vp2; vp2 = vp2->next; - printf("%08x: class = %d, varid = %d, name = %s\n", - (unsigned int) vp1, vp1->class, vp1->varid, vp1->name); - printf(" next = %08x, child = %08x\n", (unsigned int) vp1->next, (unsigned int) vp1->child); + printf("%20p: class = %d, varid = %d, name = %s\n", + (void *)vp1, vp1->class, vp1->varid, vp1->name); + printf(" next = %20p, child = %20p\n", + (void *)vp1->next, (void *)vp1->child); } } @@ -2970,29 +2971,23 @@ if(series) dstart[0] = i; - /* if data is long, create a temp long buffer to copy - netCDF data to then move to the SVS array buffer */ - if (ap->arraytype == TYPE_INT) { - data_int = (int *)DXGetArrayData (adata); - if(!data_int) - goto error; - for (k=0,n=ap->data_ndims - ap->arrayrank; k<ap->arrayrank; k++,n++) - ndims *= ap->datacounts[n]; - tempbuf = (long *)DXAllocate(ndims * size * sizeof(long)); - if(ncvarget(ap->cdfhandle, /* netcdf file handle */ - ap->varid, /* variable id */ - dstart, /* array-origin for each dim */ - long_datacounts, /* array-counts along each dim */ - tempbuf) < 0) { /* memory pointer */ - DXSetError(ERROR_INTERNAL, "netCDF library error"); - goto error; - } - for (k=0; k<size*ndims; k++) - data_int[k] = (int)tempbuf[k]; - DXFree((Pointer)tempbuf); - } + /*TODO Use these modern converting nc functions more. */ + if (ap->arraytype == TYPE_INT) { + data_int = DXGetArrayData (adata); + if(!data_int) + goto error; + if (nc_get_vara_int( + ap->cdfhandle, /* netcdf file handle */ + ap->varid, /* variable id */ + dstart, /* array-origin for each dim */ + long_datacounts, /* array-counts along each dim */ + data_int) /* memory pointer */ + != NC_NOERR) { + DXSetError(ERROR_INTERNAL, "netCDF library error"); + goto error; + } + } else { - dataval = DXGetArrayData (adata); if(!dataval) goto error; @@ -3143,26 +3138,21 @@ if(series) dstart[0] = i; - /* if data is long, create a temp long buffer to copy - netCDF data to then move to the SVS array buffer */ + /*TODO Share code with build_data above. */ if (ap->arraytype == TYPE_INT) { - data_int = DXGetArrayData (adata); - if(!data_int) - goto error; - for (k=0, n=ap->array_ndims - ap->arrayrank; k<ap->arrayrank;k++,n++) - ndims *=ap->arraycounts[n]; - tempbuf = (long *)DXAllocate(size * ndims * sizeof(long)); - if(ncvarget(ap->cdfhandle, /* netcdf file handle */ - ap->varid, /* variable id */ - dstart, /* array-origin for each dim */ - long_arraycounts, /* array-counts along each dim */ - tempbuf) < 0) { /* memory pointer */ - DXSetError(ERROR_INTERNAL, "netCDF library error"); - goto error; - } - for (k=0; k<size*ndims; k++) - data_int[k] = (int)tempbuf[k]; - DXFree((Pointer)tempbuf); + data_int = DXGetArrayData (adata); + if(!data_int) + goto error; + if (nc_get_vara_int( + ap->cdfhandle, /* netcdf file handle */ + ap->varid, /* variable id */ + dstart, /* array-origin for each dim */ + long_arraycounts, /* array-counts along each dim */ + data_int) /* memory pointer */ + != NC_NOERR) { + DXSetError(ERROR_INTERNAL, "netCDF library error"); + goto error; + } } else { dataval = DXGetArrayData (adata);
--- End Message ---
--- Begin Message ---Source: dx Source-Version: 1:4.4.4-10 We believe that the bug you reported is fixed in the latest version of dx, which is due to be installed in the Debian FTP archive. A summary of the changes between this version and the previous one is attached. Thank you for reporting the bug, which will now be closed. If you have further comments please address them to 856...@bugs.debian.org, and the maintainer will reopen the bug report if appropriate. Debian distribution maintenance software pp. Graham Inggs <gin...@debian.org> (supplier of updated dx package) (This message was generated automatically at their request; if you believe that there is a problem with it please contact the archive administrators by mailing ftpmas...@ftp-master.debian.org) -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Format: 1.8 Date: Fri, 11 Aug 2017 11:15:41 +0000 Source: dx Binary: dx libdx4 libdx4-dev dx-doc Architecture: source Version: 1:4.4.4-10 Distribution: unstable Urgency: medium Maintainer: Debian Science Maintainers <debian-science-maintainers@lists.alioth.debian.org> Changed-By: Graham Inggs <gin...@debian.org> Description: dx - OpenDX (IBM Visualization Data Explorer) - main package dx-doc - OpenDX (IBM Visualization Data Explorer) - documentation libdx4 - OpenDX (IBM Visualization Data Explorer) - shared libraries libdx4-dev - OpenDX (IBM Visualization Data Explorer) - development files Closes: 853380 856055 Changes: dx (1:4.4.4-10) unstable; urgency=medium . * Fix FTBFS with GCC 7 (Closes: #853380) * Switch to debhelper 10 * Fix more spelling errors in binaries and manpages, thanks Lintian * Update Lintian overrides * Use secure URIs for Vcs-* fields * Bump Standards-Version to 4.0.1, no further changes * Add Build-Conflicts on libgraphicsmagick-dev * Ship PNG icon instead of XPM * Fix NetCDF import on 64-bit architectures, thanks Timo Korvola (Closes: #856055) Checksums-Sha1: 149858b6197301103d3634fc52958124758b9122 2382 dx_4.4.4-10.dsc e9a8fd496aef605e6bfa4a06be6c5f1499cb9f80 72088 dx_4.4.4-10.debian.tar.xz Checksums-Sha256: 73f18ef17cd974d94934554b0445d7644bdc2cd0967562aa7d6f12c01a11c6d1 2382 dx_4.4.4-10.dsc 41837576739ff87f00c462c603618d267caff3e25dd63ba5816188a0fbd7821d 72088 dx_4.4.4-10.debian.tar.xz Files: 6ccfaa779aafa8c100784dccbeb13dbe 2382 science optional dx_4.4.4-10.dsc 38330ace7141d601a12cb878cb7480f4 72088 science optional dx_4.4.4-10.debian.tar.xz -----BEGIN PGP SIGNATURE----- iQIcBAEBCgAGBQJZjZMfAAoJEK/P7I5mnOHCeX8P/2XPDa9oFEi4io3AcDq60Tze lSazkepZCzMXOjt9Gt9By8g2kIaJ5i/rDZcgn3qPR9OP0LnrPCTuOIdPKunSqY2D A3JdtlphOBCnfzTkwB90d9JcpiIJazfNxQ0CwJqUdWBIIpfp1sE4Hinc0wXJKBNw ZI3NNMsPkPr2lGau+6LgT1LOymTQ8X1qSDwC6I1GqEvOqNl5BhSjr5d9eiaJCtq2 jl6m9O6hmZ/cLzilNi/ef+2wNnXyqAdCmw1cKedDtdf0jI7UsGxPEnV55uw/1+dk HJE2TjksWHiRzFwwH79PPjejkpirlNiyvrcMnnxdNwkRJdE0j4P4wIfrUzWBdBsY UUS2eiUy9O2quYjEOlS04Z/tLqGSX9tu8OY+B2wRKrWpbahNAWDKIMZnF/DS6J6d aqdEP6McMqM/QzMBk6qWt8UbXaH7PGyWgHF3KQVt6/buKEWHHEE9ARFYElnyvx8W vWiGFWnvVU+828dK1VWh97DLWSWH6hqHZ+0L/vW1EE32xmSroddfPma+RbBwM7IN c6eIJzAOKP3VU4BM2LKAf2OMqI68UfJPcMLtj7tFqGXayOKkbV7uirMxIOcv+rT2 vbUbTyHcdjW7sKY+1ydc06T0CgU8X8Zilx9kPLmXuPwvdyl+BFZcND3EANBAy/Dq RvnGRH3sSiP1pnImnMv9 =5WNE -----END PGP SIGNATURE-----
--- End Message ---
-- debian-science-maintainers mailing list debian-science-maintainers@lists.alioth.debian.org http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/debian-science-maintainers