[gdal-dev] CSharp bindings question

Ari Jolma ari.jolma at gmail.com
Fri May 29 06:15:35 PDT 2015


On 29.05.2015 15:22, Tamas Szekeres wrote:
> Hi Ari,
>
> Which SWIG version have you been testing with?

Mostly with the one that's loaded by default into a new Ubuntu (travis) 
/ Mint (I have version 17 which is based on Ubuntu Trusty), both are 
2.0.11 I think.

>
> Converting IntPtr to string doesn't seem to be a good solution. We 
> should do something like what we do for ReadRaster which also use 
> AddrOfPinnedObject(). I'm trying to reproduce this.

Yes I'm sure it is not, I just used it to make it compile. It is used 
only(?) by FileFromMemBuffer, which is not tested in CSharp tests (I'm 
not yet testing it in Perl bindings either).

Ari

>
> Best regards,
>
> Tamas
>
>
> 2015-05-29 9:11 GMT+02:00 Ari Jolma <ari.jolma at gmail.com 
> <mailto:ari.jolma at gmail.com>>:
>
>     In my fork I've now added mono-mcs into the travis test machine
>     and "make test" to CSharp. The build & tests all work.
>
>     https://travis-ci.org/OSGeo/gdal/builds/64450000
>
>     However, one fix I did for the CSharp bindings is most probably
>     wrong (convert return value of handle.AddrOfPinnedObject() to char *)
>
>     https://github.com/ajolma/gdal/commit/6509ef06d6f89d99c446300e4f4a63b65613911e
>
>     Tamas, do you have an idea for this?
>
>     There are a lot of #if ... #endif's in for example ogr.i to limit
>     %feature("kwargs"), this is due to a swig bug, which is fixed in
>     3.03 so we need to leave them in for now.
>
>     https://github.com/swig/swig/issues/242
>
>     There's a lot still to do to cleanup the common interface files
>     but how do you feel, is there a chance that this is accepted into
>     the trunk (and 2.1)? I'd also love to have a policy for developing
>     the bindings and working test codes for all maintained languages.
>     A rule could be that the use of #if ... #endif in common files
>     needs a good justification and commits, which do not cause test
>     codes to fail are ok per se.
>
>     Best,
>
>     Ari
>
>     On 26.05.2015 13:53, Tamas Szekeres wrote:
>>     Is that a requirement that the bindings should work well with all
>>     SWIG versions or that the generated wrappers should work just fine?
>>
>>     Formerly I have been thinking that we should support all
>>     versions, but it took large amount of extra efforts to work
>>     around all incompatible changes what SWIG introduces all the time
>>     even with the minor releases. Regarding to SWIG C# the earlier
>>     versions produced definitely wrong code and I had implement quite
>>     some generic stuff in the bindings (for example to work around
>>     the early garbage collection issues). I see some enhancements in
>>     the recent versions in this regard, but I'm not sure if I can
>>     completely remove these additions to get a stable and consistent
>>     build.
>>
>>     Tamas
>>
>>
>>
>>     2015-05-26 11:09 GMT+02:00 Ari Jolma <ari.jolma at gmail.com
>>     <mailto:ari.jolma at gmail.com>>:
>>
>>         26.05.2015, 11:38, Even Rouault kirjoitti:
>>
>>             Le mardi 26 mai 2015 10:13:49, Tamas Szekeres a écrit :
>>
>>                 Hi Ari,
>>
>>                 I haven't tried to compile that with mono for quite a
>>                 long time. I'll give
>>                 it a try.
>>
>>                 However we did not follow the latest changes in the
>>                 SWIG implementation
>>                 with the bindings, so I'd try with an earlier version
>>                 (ie. 1.3.39) to
>>                 generate the wrappers.
>>
>>             I can confirm that I can compile the CSharp bindings on
>>             Linux with SWIG 1.3.40
>>             (and run the tests), but I get the same error as Ari with
>>             SWIG 2.0.X
>>
>>             As far as I know, Java and Python bindings build and run
>>             equaly well with SWIG
>>             1.3.40 or 2.0.X (although there's a Unix makefile hack to
>>             have Python 3.2
>>             compat, conditionnaly applied with SWIG 1.3.40, that is
>>             no longer needed with
>>             SWIG 2.0.4 or later)
>>
>>
>>         Swig 1.3.39 seems questionable. Just look at the download
>>         amounts at sourceforge. 1.3.39 one download and 1.3.40 148
>>         downloads per week.
>>
>>         However, 1.3.39 does *not* put the PVINVOKE() method twice
>>         into the PVINVOKE.cs file.
>>
>>
>>                 May be we should consider including the generated
>>                 wrappers in gdal instead of let the users to use
>>                 different versions with
>>                 different results.
>>
>>             It would be good if we could have a common SWIG version
>>             that works for all the
>>             bindings. So currently it seems to be 1.3.40 ?
>>
>>             Regarding putting the generated wrappers in SVN, that's
>>             already what we do for
>>             Python. We could also just include the generated wrappers
>>             in the tarballs.
>>
>>
>>         IMO "users" = people who use ready-made packages. Developers
>>         and packagers should be intelligent enough to use development
>>         tools. I don't like the idea of having generated files in
>>         source repositories. I'm also of the opinion that there
>>         should be a really good reason to use an old version of a
>>         common tool. And at least in my Linux (Mint, Maya - hmm, that
>>         seems already pretty old, I should upgrade) swig 2.0.11 is
>>         the current. But that's just me I guess.
>>
>>         Ari
>>
>>
>>             Even
>>
>>
>>
>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20150529/d1b26e8a/attachment.html>


More information about the gdal-dev mailing list