[ 
https://issues.apache.org/jira/browse/ETCH-157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13041015#comment-13041015
 ] 

Armin Müller commented on ETCH-157:
-----------------------------------

Hi Michael,

currently mono support in Etch is experimental and a mono version of Etch is 
not compiled by default. You have to specify -DUSE.mono to also compile a mono 
version. After applying my patch, mono support is still not enabled by default 
and mono binaries are only built, if you have installed a recent mono version 
(> 2.10.1) in ${ETCH_EXTERNAL_DEPENDS}/mono/<version> according to the path 
defined in build.dependencies.

I first tried to use mono version 2.6.7 (available in current Ubuntu 
distributions), and compile the C# binding and examples/example with mono. 
Unfortunately this wasn't successful. I could compile the binding but no 
executables were created for the example. Did it work for you before you 
applied some of the provided UDP patches? After modifying the build scripts to 
build the example I had errors when running the example.

So I decided to compile and use the latest stable version of mono (2.10.1 at 
that time). The only remaining error when running one of my programs was, that 
the HPTimer class depends on Win32 API calls to kernel32.dll, which is only 
available on Windows. After modifying the HPTimer class, by replacing the Win32 
API calls with core .net methods and using mono 2.10.1 I could execute 
successfully the example and also my programs, which was not possible with mono 
2.6.7.

You also mentioned the compatibility list of mono. C# 4.0 is fully implemented. 
The missing parts of the .net4 framework are not relevant for using Etch. We 
don't need WPF or the EntityFramework.

So I think we shouldn't try to support mono 2.6. Future releases of 
distributions will include new versions of mono and if someone wants to use the 
optional supported mono version of Etch, he can compile the latest mono version 
(see the script I used below). At least with this patch it is possible to use 
Etch with mono, which wasn't possible before for me.

Regards,
Armin

Script I used to compile mono on Ubuntu 10.10. Modify MONOVER, GDIPLUSVER and 
INSTALLDIR.
#!/bin/bash

MONOVER=2.10.1
GDIPLUSVER=2.10
TOPDIR=$(pwd)
BUILDDIR=$TOPDIR/mono-${MONOVER}-src/build
DLDDIR=$TOPDIR/mono-${MONOVER}-src/downloads
INSTALLDIR=$TOPDIR/mono-${MONOVER}/

export PATH=${INSTALLDIR}/bin:$PATH

sudo aptitude install build-essential libc6-dev g++ gcc libglib2.0-dev 
pkg-config bison gettext autoconf automake libtool libpango1.0-dev 
libatk1.0-dev libgtk2.0-dev libtiff4-dev libgif-dev libglade2-dev

mkdir -p $BUILDDIR
cd $BUILDDIR
wget 
http://ftp.novell.com/pub/mono/sources/libgdiplus/libgdiplus-${GDIPLUSVER}.tar.bz2
wget http://ftp.novell.com/pub/mono/sources/mono/mono-${MONOVER}.tar.bz2
tar -xvjf libgdiplus-${GDIPLUSVER}.tar.bz2
tar -xvjf mono-${MONOVER}.tar.bz2

cd libgdiplus-${GDIPLUSVER}
./configure --prefix=${INSTALLDIR}
make
make install

cd $BUILDDIR
cd mono-${MONOVER}
./configure --prefix=${INSTALLDIR}
make
make install


> UDP implementation for Java, C# and C binding
> ---------------------------------------------
>
>                 Key: ETCH-157
>                 URL: https://issues.apache.org/jira/browse/ETCH-157
>             Project: Etch
>          Issue Type: New Feature
>          Components: build, c-binding, compiler, csharp-binding, examples, 
> java-binding, webpage
>    Affects Versions: 1.2
>            Reporter: Armin Müller
>              Labels: patch
>         Attachments: 0001-build-add-skip.examples-property.patch, 
> 0002-binding-csharp-bump-dependencies-to-.NET-4.0-and-NUn.patch, 
> 0003-binding-csharp-add-mono-support.patch, 
> 0004-binding-csharp-add-udp-transport-support.patch, 
> 0005-binding-java-add-udp-transport-support.patch, 
> 0006-binding-csharp-add-udp-single-session-support.patch, 
> 0007-binding-java-add-udp-single-session-support.patch, 
> 0008-binding-c-add-inet_who-object.patch, 
> 0009-binding-c-add-udp-single-session-transport.patch, 
> 0010-compiler-add-Signal-annotation-support.patch, 
> 0011-binding-csharp-add-Signal-support.patch, 
> 0012-binding-java-add-Signal-support.patch, 
> 0013-binding-c-extend-send-sendex-for-etch_who.patch, 
> 0014-binding-c-add-Signal-support.patch, 
> 0015-examples-add-signals-example-for-csharp-java-and-c.patch, 
> Etch_UDP_Multi_Session.png, Etch_UDP_Single_Session.png, 
> Leightweight_Etch_UDP_Server.txt
>
>
> Hi,
> attached are a series of patches, which add UDP support to Etch for the Java, 
> C# and C bindings. It can be used in place of TCP by replacing the url scheme 
> with UDP. The UDP transport support has been extended with a configurable 
> single session mode, which can be used to run leightweight servers. Please 
> see the attached file "Leightweight_Etch_Server.txt" for a more detailed 
> description of this mode. It has been written in the confluence wiki style 
> syntax and together with the attached images it's suitable for creating a new 
> etch documentation page. The single session mode has been extended further 
> with a support for one-way method calls from the server to multiple clients. 
> For more information, please look at the "Signals" section and the attached 
> patch files.
> The UDP implementation for the C binding is limited to single session mode. 
> It limits the ability of etch servers to call methods of more than one remote 
> client. The signal extension can be used to avoid this limitation.
> Below a short description of the attached patches is listed. They can be 
> applied using the following GIT command: "git am -k --keep-cr 
> --whitespace=nowarn <path>/*.patch" or can be applied to a clean SVN 
> checkout:  "patch -p1 -i <path>/*.patch".
> * Add property to skip building of the examples:
> 0001-build-add-skip.examples-property.patch
> * Bump dependency to .NET 4.0 and NUnit 2.5.9. The C# UDP implementation is 
> based on features available in .NET 4.0.
> 0002-binding-csharp-bump-dependencies-to-.NET-4.0-and-NUn.patch
> * Add runtime and build support for the Mono framework (Mono >= 2.10.1, C#).
> 0003-binding-csharp-add-mono-support.patch
> * Make UDP and TCP protocols seamlessly interchangable in Etch (UDP support 
> for C# and Java).
> 0004-binding-csharp-add-udp-transport-support.patch
> 0005-binding-java-add-udp-transport-support.patch
> * Add configurable server single session mode. URL parameter: 
> UdpConnection.singleSession=true
> 0006-binding-csharp-add-udp-single-session-support.patch
> 0007-binding-java-add-udp-single-session-support.patch
> * Add inet_who object to track remote etch clients. Required by the C UDP 
> implementation.
> 0008-binding-c-add-inet_who-object.patch
> * Add UDP transport support to the C binding (single session only). The 
> "UdpConnection.singleSession" url parameter is not supported and ignored. A 
> patched version of APR (test with version 1.4.2) is required to send 
> broadcast messages under Linux. The patch has been submitted, but is 
> currently not integrated (see 
> https://issues.apache.org/bugzilla/show_bug.cgi?id=46389).
> 0009-binding-c-add-UDP-single-session-transport.patch
> * Add signal support for single session mode. See the attached 
> "Leightweight_Etch_Server.txt" document.
> 0010-compiler-add-Signal-annotation-support.patch
> 0011-binding-csharp-add-Signal-support.patch
> 0012-binding-java-add-Signal-support.patch
> 0013-binding-c-extend-send-sendex-for-etch_who.patch
> 0014-binding-c-add-Signal-support.patch
> * Add signal examples for the C#, Java and C binding.
> 0015-examples-add-signals-example-for-csharp-java-and-c.patch
> Authors:
> Armin Müller <[email protected]> (itestra GmbH by order of BMW Group 
> Research and Technology)
> Aleksandar Kanchev <[email protected]> (itestra GmbH by order of BMW Group 
> Research and Technology)

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to