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

Steven Boswell II ulatekh at yahoo.com
Sun May 13 17:40:16 UTC 2012


It looks like the output of "diff -ur" and "git diff" are slightly different.  Either that's the problem, or it's an issue of Windows-style line-endings (i.e. CR/LF) versus Linux-style line endings (i.e. LF).
Enclosed are two archives with patches generated by "git diff".  One has Linux line endings, the other has Windows line endings.  One or both should work for you.

I was able to run uics under Windows, and I made a bunch of little changes to adapt to the new API.  Very slick!  All the set/get methods have been replaced with properties, the enum values allow the "bitwise or" operator, and the Qt events are now C# events!

I have two API changes I haven't resolved yet.  One, QVariant no longer has a constructor that takes a QColor.  I need this to color my tree-view items.  Also, I can no longer call "Emit.DataChanged" from within my QAbstractItemModel subclass.  I was using that to force the update of the display of my tree-view when I modified items.  But I never got that to work anyway; I ended up having to call Collapse() on the parent item and have the user re-open that item in order to force the update.  So maybe this second one isn't a big deal.  But I'll definitely need a QVariant constructor that takes a QColor.

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 9:30 AM
Subject: Re: [Kde-bindings] Building latest qyoto under Windows and Linux
 

They all look great but I cannot apply them. I use the "Review/apply single patch" menu item of TortoiseGit but it cannot recognise the format. Could you advise me what program to use?



________________________________
 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/286142c8/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: assemblygen-patches-git-unix2dos.zip
Type: application/zip
Size: 9102 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-bindings/attachments/20120513/286142c8/attachment-0002.zip>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: assemblygen-patches-git.zip
Type: application/zip
Size: 9025 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-bindings/attachments/20120513/286142c8/attachment-0003.zip>


More information about the Kde-bindings mailing list