[Kde-bindings] Building latest qyoto under Windows and Linux

Dimitar Dobrev dpldobrev at yahoo.com
Sun May 13 17:22:08 UTC 2012


Steven, all of your patches, including the uics one, are applied. Great work! It's actually the first time I've been able to build Qyoto without ANY local changes.
I do not maintain Kimono at all, and have no intention to. With the maintenance of Qyoto and my project to port to it I have my hands completely full.
It's just System.Action, I believe. However, I do not like adding code that does the same as a built-in library so if the .NET 4 dependency is not a problem for you I'd prefer to leave this as is.If it is a problem, I'd take a patch. And another thing: I'm not sure if it concerns you but, speaking of deployment, .NET 3.5 is not available by default on most Windows machines as they are still running XP, and .NET 3.5 Client Profile, unlike .NET 4 Client Profile, has been screwed up and as a result it's almost as large as the full .NET 3.5. The other deployment-friendly option would be .NET 2.0 but first, it's very old and second, I'm not sure if Qyoto can run on it any more.



________________________________
 From: Steven Boswell II <ulatekh at yahoo.com>
To: KDE bindings for other programming languages <kde-bindings at kde.org> 
Sent: Sunday, May 13, 2012 6:31 PM
Subject: Re: [Kde-bindings] Building latest qyoto under Windows and Linux
 

OK, I separated out all my patches.  Enclosed is an archive with all of them.  They are meant to be applied in order, but if they're not, or one is skipped, they should work, but patch will report "fuzz", i.e. that the target line numbers had to be adjusted.

Patch 1 allows MONO_EXECUTABLE to be undefined, i.e. so that the Windows version can be built with Microsoft's C# compiler.

Patch 2 modifies output-destinations, so that executables, libraries, and assemblies go to the proper location, and it modifies Windows libraries/DLLs so that they don't have a "lib" prefix.
Patch 3 is the patch that detects a missing QtDBus (i.e. under Windows) but allows building anyway.
Patch 4 fixes qyoto-phonon to use DEF_LIST_MARSHALLER instead of DEF_VALUELIST_MARSHALLER.  I hope I did it right.
Patch 5 makes the build look for the .NET 4 compiler under both Windows and Linux.
Patch 6 adds "SMOKE_INCLUDE_DIR" to a few places where it's needed.
Patch 7 builds a native assemblygen under Windows, so that it can load native DLLs.
Patch 8 is the hack that adds a reference for the Error class under QX11EmbedContainer and QX11EmbedWidget.

I noticed that Kimono isn't building under Linux.  Is the Kimono project in the assemblygen git-project being used or maintained?  I started to modify the CMakeLists.txt files to build it, but it looks like it needs more work than that.

One last thing...are there any other dependencies on .NET 4, or is it just the System.Action<> prototypes with more than 4 parameters?  If so, can we just add our own "Qyoto.Action<>" prototypes with the required number of parameters, and use those instead?  Would that cause any headaches that I can't think of?  (In which case, patch 5 can be ignored.)

Steven Boswell


________________________________
 From: Dimitar Dobrev <dpldobrev at yahoo.com>
To: Steven Boswell II <ulatekh at yahoo.com>; KDE bindings for other programming languages <kde-bindings at kde.org> 
Sent: Sunday, May 13, 2012 5:54 AM
Subject: Re: [Kde-bindings] Building latest qyoto under Windows and Linux
 

It seems to me you haven't subscribed to the mailing list because I've been doing quite a bit of shouting here. :) Please consider joining, this way you'll always be up to date with all developments.


Most of the errors you report are my fault, sorry about that:


1. QX11EmbedContainer and QX11EmbedWidget - I removed them because the nested type Error was not generated; I didn't check that as I was after another bug then so seeing they are not that often used I just removed them; obviously I forgot to remove the events that use them; I compiled everything then but apparently these events are new to Qt 4.8.0 as my Linux had 4.7.4;

2. dmcs - I really don't know what happened here; I clearly remember searching for "gmcs" in the whole dir and replacing it; it seems that I didn't commit these changes;

3. DEF_VALUELIST_MARSHALLER - I replaced this everywhere with DEF_LIST_MARSHALLER because of two of the bugs (QPrinterInfo and QModelIndex) I've written about in my recent post called "Qyoto: help needed"; but I have clearly forgotten about Phonon as I don't compile it on my Windows because of some missing dependencies;

4. uics - Arno advised me months ago to move uics to assemblygen but I haven't done it yet; I will complete that today.

You can send me your patches and I'll push them but please try to separate them per feature: that is, one for dmcs, one for DBus, one for MONO_EXECUTABLE, etc.



________________________________
 From: Steven Boswell II <ulatekh at yahoo.com>
To: KDE bindings for other programming languages <kde-bindings at kde.org> 
Sent: Sunday, May 13, 2012 4:12 AM
Subject: Re: [Kde-bindings] Building latest qyoto under Windows and Linux
 

OK, I added two lines to src/plugins/qyoto/QyotoTranslator.cs:

{ "QX11EmbedContainer::Error", delegate { throw new NotSupportedException(); } },

{ "QX11EmbedWidget::Error", delegate { throw new NotSupportedException(); } },


I don't know if that was a great idea, but at least it kept compiling.

The next compile error (under Linux) was in qyoto-phonon:

assemblygen/assemblies/qyoto-phonon/native/phononhandlers.cpp:29:25: error: expected constructor, destructor, or type conversion before ‘(’ token


The issue seems to be that DEF_VALUELIST_MARSHALLER isn't defined anywhere.  assemblies/qyoto-qtcore/native/marshall_macros.h has a definition for DEF_LIST_MARSHALLER, so maybe that file is out of date.

As always, help is appreciated.

Steven Boswell


________________________________
 From: Steven Boswell II <ulatekh at yahoo.com>
To: KDE bindings for other programming languages <kde-bindings at kde.org> 
Sent: Saturday, May 12, 2012 5:33 PM
Subject: Re: [Kde-bindings] Building latest qyoto under Windows and Linux
 

I've been here the whole time...you could have just shouted!

I'm still overloaded at work, but decided to take some time today to work on this anyway.  I'm tired of being too tired to work on projects that I want to work on! :-)

If Qyoto has to depend on .NET 4, that's not a big deal -- if it needs to use System.Action<> instances with more than 4 parameters, there's not much of a choice.  The problem was that cmake/modules/CMakeDetermineCSharpCompiler.cmake was still looking for the v3.5 compiler.  So I updated it to look for the v4.0.30319 compiler.  I also updated to look for dmcs (i.e. the .NET 4 version of Mono) instead of gmcs.  How is it that assemblygen ever compiled without these changes?

The next barrier was that the most of the changes I submitted a long time ago had never been applied. I had modified assemblies/qyoto-*/CMakeLists.txt to make them work if  MONO_EXECUTABLE was undefined, and various places to allow QT_QTDBUS_LIBRARY to be undefined.  I put those back.

Now assemblygen builds and links under Windows, but I haven't tried to run it  yet.

Under Linux, I get as far as building qyoto-qtgui, then I get a bunch of errors like "error CS0426: The nested type `Error' does not exist in the type `Qyoto.QX11EmbedContainer'".  One example of a line that causes this problem is:

        [Q_SIGNAL("error(QX11EmbedContainer::Error)")]
        event System.Action<QX11EmbedContainer.Error> Error;

If you know how to get past this, I'd be grateful.  The only reference I see to QX11EmbedContainer is in src/plugins/qyoto/QyotoTranslator.cs, where it throws a NotSupportedException, so I have no idea where to go with this.

Also, I have some vague memory that uics was branched into assemblygen?  If not, what do I use?

Thanks in advance for any help with these issues!

Steven Boswell


________________________________
 From: Dimitar Dobrev <dpldobrev at yahoo.com>
To: Steven Boswell II <ulatekh at yahoo.com>; KDE bindings for other programming languages <kde-bindings at kde.org> 
Sent: Saturday, May 12, 2012 12:13 PM
Subject: Re: [Kde-bindings] Building latest qyoto under Windows and Linux
 

I'm glad you're back, Steven!

Both problems are one and the same: Qyoto now depends on .NET/Mono 4. 

The reason is that I needed the overloads for System.Action as I use them to generate events corresponding to signals. The other thing I need to find the files with parameter names.
If the dependency on .NET 4 is unacceptable for you please say so and we might be able to think of some workaround.



________________________________
 From: Steven Boswell II <ulatekh at yahoo.com>
To: KDE bindings <kde-bindings at kde.org> 
Sent: Saturday, May 12, 2012 9:50 PM
Subject: [Kde-bindings] Building latest qyoto under Windows and Linux
 

Today I decided to try to build latest smokegen/smokeqt/assemblygen under Windows and Linux.
smokegen, i.e. git://anongit.kde.org/smokegen, and smokeqt, i.e. git://anongit.kde.org/smokeqt, built and linked under both Windows 7 and Fedora Core 16 just fine.

But when building assemblygen, i.e.git://gitorious.org/assemblygen/assemblygen.git, "assemblies" branch, I get the same build error immediately, under both OSes:

GeneratorData.cs(220,98): error CS0117: `System.Environment.SpecialFolder' does not contain a definition for `Windows'


Getting that error under Linux didn't surprise me, but getting it under Windows did.

Diking that line out and continuing to build, I get to building qyoto-qtcore.dll.  I get 260 "Won't wrap method" warnings and 65 "Conflicting names" messages, then I get a bunch of errors that say "error CS0305: Using the generic type `System.Action<T1,T2,T3,T4>' requires `4' type argument(s)".  One example of a line that generates such an error is:

        [Q_SIGNAL("rowsAboutToBeMoved(QModelIndex,int,int,QModelIndex,int)")]
        event System.Action<QModelIndex,System.Int32,System.Int32,QModelIndex,System.Int32> RowsAboutToBeMoved;

I'm guessing there's a 'System.Action<T1,T2,T3,T4>' now, but my version of Qt (4.8.1-5) doesn't have that.

So...does anyone know what to do about these?  The first error appears to be real; the second one appears to want a different version of Qt.  What version of Qt should I be using?

Steven Boswell

_______________________________________________
Kde-bindings
 mailing list
Kde-bindings at kde.org
https://mail.kde.org/mailman/listinfo/kde-bindings





_______________________________________________
Kde-bindings mailing list
Kde-bindings at kde.org
https://mail.kde.org/mailman/listinfo/kde-bindings



_______________________________________________
Kde-bindings mailing list
Kde-bindings at kde.org
https://mail.kde.org/mailman/listinfo/kde-bindings





_______________________________________________
Kde-bindings mailing list
Kde-bindings at kde.org
https://mail.kde.org/mailman/listinfo/kde-bindings
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-bindings/attachments/20120513/53469fd4/attachment-0001.html>


More information about the Kde-bindings mailing list