Re: Including Mono within a Wine package - should Wine expect this?
Hi, I am almost complete with implementing mixed-mode support for Mono only some code cleanup is remaining. Note that however this still will not support MSVCRT becuase that assumes that is running on .NET Framework. Also note that applications using unmanaged API (COM interfaces and DLL exports) of .NET Framework will not be compatible with Mono because those APIs are not implemented by Mono. If my patch will be accepted you will see the changes in SVN trunk of Mono. From: Dan Kegel [EMAIL PROTECTED] On Sun, Apr 13, 2008 at 11:14 PM, Roderick Colenbrander [EMAIL PROTECTED] wrote: What we really need is mono's windows.forms to be layered on top of gdi32 and user32 for windows controls like buttons, textboxes and so on .. As lots of programs do overrides using native dlls on them, so that's why it should be real windows controls with a wndproc. Ironically the current situation is for a part our own issue. Years ago Mono's windows.forms used winelib. They moved to a managed implementation because they had wine integration issues and we weren't that cooperative. Further they didn't like the 2d performance much (likely due to the lack of a dib engine ..). They might be reluctant to Wine. Yup. We have to really get our act together, then undoing the fork might make sense. Undoing the fork is not that easy because the current System.Windows.Forms uses it's own rendering engine and low level parts have been completely rewritten to support platform independent rendering and message processing. It supports low level WndProc functionality but I don't know how much is it compatible with Microsoft's implementation. Kornél
Re: Including Mono within a Wine package - should Wine expect this?
Ove Kaaven wrote: Debian's ia32-libs package isn't an example of a whole lot. It grabs compiled binaries from the official Debian archive, and nowhere else. It isn't built on a 32-bit system. If ia32-libs had contained binaries that could not be built 100% automatically using Debian's official archive (and only the official archive), it probably wouldn't have gotten into Debian. Besides, ia32-libs is not meant to be a long-lived package, it'll go away eventually. We've been saying that for 3 years now, and we've only become MORE dependent on ia32-libs in the process. The chief culprit, of course, is Wine, and Wine's need to run 32 bit applications isn't going away soon. Really, what Debian (and Ubuntu) need is to replace the contents of the ia32-libs package with proper 32 versions of package (sorta like how lib32asound and lib32z1 are now). Fixing that, however, is a bit beyond the scope of the wine-devel list ;) Thanks, Scott Ritchie
Re: Including Mono within a Wine package - should Wine expect this?
On Wed, 16 Apr 2008 06:52:49 -0700 Scott Ritchie [EMAIL PROTECTED] wrote: Ove Kaaven wrote: Debian's ia32-libs package isn't an example of a whole lot. It grabs compiled binaries from the official Debian archive, and nowhere else. It isn't built on a 32-bit system. If ia32-libs had contained binaries that could not be built 100% automatically using Debian's official archive (and only the official archive), it probably wouldn't have gotten into Debian. Besides, ia32-libs is not meant to be a long-lived package, it'll go away eventually. We've been saying that for 3 years now, and we've only become MORE dependent on ia32-libs in the process. The chief culprit, of course, is Wine, and Wine's need to run 32 bit applications isn't going away soon. Really, what Debian (and Ubuntu) need is to replace the contents of the ia32-libs package with proper 32 versions of package (sorta like how lib32asound and lib32z1 are now). Fixing that, however, is a bit beyond the scope of the wine-devel list ;) The real problem with multi-arch libs is, that it's hard to maintain inside debian packages at all...not that it's difficult to compile on amd64 with -m32 , but regarding the different ways of debian/rules writing with all different maintainer ways to write Makefiles for accomplishing this tasks is the most difficult thing. When there are people interested in going a hard way of fixing todays situation in debian/ubuntu and other distris, please let's do it , sane and with a plan. Regards, \sh
Re: Including Mono within a Wine package - should Wine expect this?
Stephan Hermann skrev: When there are people interested in going a hard way of fixing todays situation in debian/ubuntu and other distris, please let's do it , sane and with a plan. There's already work going on to try to get a better solution into Debian lenny. There's a new ia32-libs-tools package about to enter Debian unstable, which would make it possible to replace the big ia32-libs package with more fine-grained individual ia32-lib* packages. (It may not be true multiarch, but still a lot better than the current situation.)
Re: Including Mono within a Wine package - should Wine expect this?
Hi, From: Hin-Tak Leung [EMAIL PROTECTED] I can't comment on anything else, but after trying to get a .NET WinForms application (mentioned in some of the bugs I filed) for a few months under the 3 options of native linux mono, wine+.NET and wine+mono, I can say that win32 mono uses P/Invoke *differently* from how .NET2 does it, and the missing APIs required to get an application to work with the wine + win32 mono and wine +MS.NET combo is different. So some part of the applications runs better with wine + win32 mono and some better with wine + MS.NET ... win32 mono and MS.NET just seems to have different native code dependencies. The only major difference I know is that Mono uses UTF-8 instead of ACP for ANSI functions. If you know some serious issues please feel free to file bug report(s) at Mono's Bugzilla. From: Dan Kegel [EMAIL PROTECTED] http://lists.ximian.com/pipermail/mono-devel-list/2008-April/027491.html That's interesting info, thanks. At the moment you seem to be taking the lead on these issues. Please let us know how it goes. I have made some progess and now I am able to call unmanaged methods from managed methods and also implemented some mscoree.dll hacks that make possible to use the NT loader (LoadLibrary). Unfortunately the loader uses mscoree.dll located in system32 anyway so I had to modify it's export address table in memory. And I also had to implement base relocation and import adress table processing for EXE modules because that is not done by NT. Processes could only be created from managed EXE files with some more intrusive mscoree.dll hacks (mscoree.dll file or registy modifications). Kornél
Re: Including Mono within a Wine package - should Wine expect this?
Kornél Pál [EMAIL PROTECTED] wrote: The only major difference I know is that Mono uses UTF-8 instead of ACP for ANSI functions. UTF-8 will break most of Windows applications since they don't expect to see strings in a multibyte encoding. -- Dmitry.
Re: Including Mono within a Wine package - should Wine expect this?
The only major difference I know is that Mono uses UTF-8 instead of ACP for ANSI functions. UTF-8 will break most of Windows applications since they don't expect to see strings in a multibyte encoding. I know that. And the problem is that there is a mess of ACP and UTF-8 inside native code of Mono. I tried to change things several times but none of them were accepted. Kornél
Re: Including Mono within a Wine package - should Wine expect this?
Scott Ritchie skrev: Agreed. The one tricky thing here is making a proper source package. There is some precedent for source packages that don't actually build on the architecture they're for. The ia32-libs package, for instance, contains both binary and source versions of the 32 bit libraries since it's solely for 64 bit arches, however to build those binaries requires use of a 32 bit system. Similarly, we can ship a wine-gecko source package which includes binary and source, with the readme detailing how to actually build the binary from the source (ie, use Windows). Meanwhile the source package builds by just copying the binary into the right place (much like how ia32-libs builds). Debian would not accept this into main. Perhaps into contrib, maybe. For example, DFSG-free Java programs that must be compiled with a non-free Java compiler (because the free compilers aren't good enough) goes into contrib, not main (though even here, it should be possible to auto-rebuild the package). Debian's ia32-libs package isn't an example of a whole lot. It grabs compiled binaries from the official Debian archive, and nowhere else. It isn't built on a 32-bit system. If ia32-libs had contained binaries that could not be built 100% automatically using Debian's official archive (and only the official archive), it probably wouldn't have gotten into Debian. Besides, ia32-libs is not meant to be a long-lived package, it'll go away eventually.
Re: Including Mono within a Wine package - should Wine expect this?
On Sun, Apr 13, 2008 at 10:11 AM, Steven Edwards [EMAIL PROTECTED] wrote: Rather than ignoring mono these issues make it sound like Wine and mono should try to work together again. The EULA for the .NET runtime prohibits distributing it and using it on non-windows licensed systems so we are in much the same legal situation with IE where we have to have a replacement. Yes, exactly. I've been discussing this a bit on the mono list. There are two big pieces of work needed: 1) support for mixed assemblies in Mono for Windows 2) porting Mono's WinForms on top of Wine gdiplus instead of Mono gdiplus (and making it more win32-ish as a result) This would be a fine summer project for somebody properly motivated. There will be more incentive to do this as we get Microsoft .NET working better, and it becomes clearer just how many applications need one or the other of the two items above to run. In short: I think the path to Mono+Wine nivana at the moment leads directly through enemy territory: we have to get MS .net working better first before it's clear it'll be worth it. - Dan What we really need is mono's windows.forms to be layered on top of gdi32 and user32 for windows controls like buttons, textboxes and so on .. As lots of programs do overrides using native dlls on them, so that's why it should be real windows controls with a wndproc. Ironically the current situation is for a part our own issue. Years ago Mono's windows.forms used winelib. They moved to a managed implementation because they had wine integration issues and we weren't that cooperative. Further they didn't like the 2d performance much (likely due to the lack of a dib engine ..). They might be reluctant to Wine. Roderick -- Der GMX SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! Ideal für Modem und ISDN: http://www.gmx.net/de/go/smartsurfer
Re: Including Mono within a Wine package - should Wine expect this?
On Sun, Apr 13, 2008 at 11:14 PM, Roderick Colenbrander [EMAIL PROTECTED] wrote: What we really need is mono's windows.forms to be layered on top of gdi32 and user32 for windows controls like buttons, textboxes and so on .. As lots of programs do overrides using native dlls on them, so that's why it should be real windows controls with a wndproc. Ironically the current situation is for a part our own issue. Years ago Mono's windows.forms used winelib. They moved to a managed implementation because they had wine integration issues and we weren't that cooperative. Further they didn't like the 2d performance much (likely due to the lack of a dib engine ..). They might be reluctant to Wine. Yup. We have to really get our act together, then undoing the fork might make sense.
Re: Including Mono within a Wine package - should Wine expect this?
--- On Sun, 13/4/08, Dan Kegel [EMAIL PROTECTED] wrote: snipped 2) porting Mono's WinForms on top of Wine gdiplus instead of Mono gdiplus (and making it more win32-ish as a result) Mono is using MS GDI+ on Windows since it uses GDI+. Mono's libgdiplus is only used on non-Windows platforms. I guess I assumed that Mono used native WinForms on Windows, and that its winforms code was only used on Linux. I clearly don't know enough about Mono to discuss it intelligently :-) snipped I can't comment on anything else, but after trying to get a .NET WinForms application (mentioned in some of the bugs I filed) for a few months under the 3 options of native linux mono, wine+.NET and wine+mono, I can say that win32 mono uses P/Invoke *differently* from how .NET2 does it, and the missing APIs required to get an application to work with the wine + win32 mono and wine +MS.NET combo is different. So some part of the applications runs better with wine + win32 mono and some better with wine + MS.NET ... win32 mono and MS.NET just seems to have different native code dependencies. ___ Yahoo! For Good helps you make a difference http://uk.promotions.yahoo.com/forgood/
Re: Including Mono within a Wine package - should Wine expect this?
On Fri, Apr 11, 2008 at 8:50 AM, Roderick Colenbrander [EMAIL PROTECTED] wrote: For a part the issue is that lots of programs are hybrid ones. Some of them behave 'nicely' in the way they just call a few functions from a native win32 dll. I think apps that embed COM objects (like a Word viewer, ..) are worse as mono doesn't offer this at all. The most problematic thing is that mono's windows.forms is fully managed while microsoft just layered it on top of gdi32/gdiplus/user32. This allows you to use standard win32 apis on most windows.forms controls to override behavior. A lot of apps do this, so even if you could access native win32 dlls, magic like this won't work at all. Second COM objects might also rely on evil win32 magic. Rather than ignoring mono these issues make it sound like Wine and mono should try to work together again. The EULA for the .NET runtime prohibits distributing it and using it on non-windows licensed systems so we are in much the same legal situation with IE where we have to have a replacement. -- Steven Edwards There is one thing stronger than all the armies in the world, and that is an idea whose time has come. - Victor Hugo
Re: Including Mono within a Wine package - should Wine expect this?
On Sun, Apr 13, 2008 at 10:11 AM, Steven Edwards [EMAIL PROTECTED] wrote: Rather than ignoring mono these issues make it sound like Wine and mono should try to work together again. The EULA for the .NET runtime prohibits distributing it and using it on non-windows licensed systems so we are in much the same legal situation with IE where we have to have a replacement. Yes, exactly. I've been discussing this a bit on the mono list. There are two big pieces of work needed: 1) support for mixed assemblies in Mono for Windows 2) porting Mono's WinForms on top of Wine gdiplus instead of Mono gdiplus (and making it more win32-ish as a result) This would be a fine summer project for somebody properly motivated. There will be more incentive to do this as we get Microsoft .NET working better, and it becomes clearer just how many applications need one or the other of the two items above to run. In short: I think the path to Mono+Wine nivana at the moment leads directly through enemy territory: we have to get MS .net working better first before it's clear it'll be worth it. - Dan
Re: Including Mono within a Wine package - should Wine expect this?
Hi, 1) support for mixed assemblies in Mono for Windows I'm trying to do some work on that. 2) porting Mono's WinForms on top of Wine gdiplus instead of Mono gdiplus (and making it more win32-ish as a result) Mono is using MS GDI+ on Windows since it uses GDI+. Mono's libgdiplus is only used on non-Windows platforms. If Wine's GDI+ is not supported by Mono (I haven't tried) it's Wine's GDI+ that has to be fixed because Mono works perfectly with MS GDI+. I also suggested on mono-devel-list that process creation and module loading for managed modules should be supported by ntdll.dll via callbacks to mscoree.dll as described in http://lists.ximian.com/pipermail/mono-devel-list/2008-April/027491.html Kornél
Re: Including Mono within a Wine package - should Wine expect this?
On Sun, Apr 13, 2008 at 12:55 PM, Kornél Pál [EMAIL PROTECTED] wrote: 1) support for mixed assemblies in Mono for Windows I'm trying to do some work on that. Cool! 2) porting Mono's WinForms on top of Wine gdiplus instead of Mono gdiplus (and making it more win32-ish as a result) Mono is using MS GDI+ on Windows since it uses GDI+. Mono's libgdiplus is only used on non-Windows platforms. I guess I assumed that Mono used native WinForms on Windows, and that its winforms code was only used on Linux. I clearly don't know enough about Mono to discuss it intelligently :-) I also suggested on mono-devel-list that process creation and module loading for managed modules should be supported by ntdll.dll via callbacks to mscoree.dll as described in http://lists.ximian.com/pipermail/mono-devel-list/2008-April/027491.html That's interesting info, thanks. At the moment you seem to be taking the lead on these issues. Please let us know how it goes. - Dan
Re: Including Mono within a Wine package - should Wine expect this?
Dan Kegel wrote: On Thu, Apr 10, 2008 at 7:40 PM, Scott Ritchie [EMAIL PROTECTED] wrote: Wine-mono on the other hand is probably premature. How many apps are helped at the moment by winetricks mono12 ? I don't think it's a large number. Honestly I don't know. Is this due to inadequacies in the current mono, or inadequacies in Wine? Mono doesn't even try to handle mixed-mode assemblies (i.e. ones that contain some native code). And by gum, every .net app built by Microsoft tools seems to include some native code for some odd reason. Go figure! Is this true even for the Windows version of Mono? If Mono is supposed to be a replacement for what the .net framework provides, then it seems like duplicating this functionality on Windows (and therefore Wine) would be part of it. I did some searching as for why this is the case. This link: http://www.jprl.com/Blog/archive/development/mono/2008/Jan-27.html indicates that the main issue is the loader supporting PE files, which is what Wine already does. Either way, Mono 2.0 will finally come out around the same time as Wine 1.0 (quarter 2 of 2008), and I suspect the number of applications Mono helps will greatly improve by then. Maybe, but only apps that have been properly cleaned of native code. - Dan Hmm...it seems like gluing Mono and Wine together would require a bit more collaboration than the two projects have. Thanks, Scott Ritchie
Re: Including Mono within a Wine package - should Wine expect this?
Dan Kegel wrote: On Thu, Apr 10, 2008 at 7:40 PM, Scott Ritchie [EMAIL PROTECTED] wrote: Wine-mono on the other hand is probably premature. How many apps are helped at the moment by winetricks mono12 ? I don't think it's a large number. Honestly I don't know. Is this due to inadequacies in the current mono, or inadequacies in Wine? Mono doesn't even try to handle mixed-mode assemblies (i.e. ones that contain some native code). And by gum, every .net app built by Microsoft tools seems to include some native code for some odd reason. Go figure! Is this true even for the Windows version of Mono? If Mono is supposed to be a replacement for what the .net framework provides, then it seems like duplicating this functionality on Windows (and therefore Wine) would be part of it. I did some searching as for why this is the case. This link: http://www.jprl.com/Blog/archive/development/mono/2008/Jan-27.html indicates that the main issue is the loader supporting PE files, which is what Wine already does. Either way, Mono 2.0 will finally come out around the same time as Wine 1.0 (quarter 2 of 2008), and I suspect the number of applications Mono helps will greatly improve by then. Maybe, but only apps that have been properly cleaned of native code. - Dan Hmm...it seems like gluing Mono and Wine together would require a bit more collaboration than the two projects have. Thanks, Scott Ritchie For a part the issue is that lots of programs are hybrid ones. Some of them behave 'nicely' in the way they just call a few functions from a native win32 dll. I think apps that embed COM objects (like a Word viewer, ..) are worse as mono doesn't offer this at all. The most problematic thing is that mono's windows.forms is fully managed while microsoft just layered it on top of gdi32/gdiplus/user32. This allows you to use standard win32 apis on most windows.forms controls to override behavior. A lot of apps do this, so even if you could access native win32 dlls, magic like this won't work at all. Second COM objects might also rely on evil win32 magic. All in all mono only works on a few well behaved apps and most don't behave well. PersonallY I think a win32 mono package for wine is nearly useless. Roderick -- Psst! Geheimtipp: Online Games kostenlos spielen bei den GMX Free Games! http://games.entertainment.gmx.net/de/entertainment/games/free
re: Including Mono within a Wine package - should Wine expect this?
A wine-gecko package would be very useful. Wine-mono on the other hand is probably premature. How many apps are helped at the moment by winetricks mono12 ? I don't think it's a large number. The wine-gecko package should just be a repackaging of the same blob that is normally downloaded, at least until we figure out how to do a proper cross-build.
Re: Including Mono within a Wine package - should Wine expect this?
Dan Kegel wrote: A wine-gecko package would be very useful. Wine-mono on the other hand is probably premature. How many apps are helped at the moment by winetricks mono12 ? I don't think it's a large number. Honestly I don't know. Is this due to inadequacies in the current mono, or inadequacies in Wine? Either way, Mono 2.0 will finally come out around the same time as Wine 1.0 (quarter 2 of 2008), and I suspect the number of applications Mono helps will greatly improve by then. The wine-gecko package should just be a repackaging of the same blob that is normally downloaded, at least until we figure out how to do a proper cross-build. Agreed. The one tricky thing here is making a proper source package. There is some precedent for source packages that don't actually build on the architecture they're for. The ia32-libs package, for instance, contains both binary and source versions of the 32 bit libraries since it's solely for 64 bit arches, however to build those binaries requires use of a 32 bit system. Similarly, we can ship a wine-gecko source package which includes binary and source, with the readme detailing how to actually build the binary from the source (ie, use Windows). Meanwhile the source package builds by just copying the binary into the right place (much like how ia32-libs builds). Thanks, Scott Ritchie
Re: Including Mono within a Wine package - should Wine expect this?
On Thu, Apr 10, 2008 at 7:40 PM, Scott Ritchie [EMAIL PROTECTED] wrote: Wine-mono on the other hand is probably premature. How many apps are helped at the moment by winetricks mono12 ? I don't think it's a large number. Honestly I don't know. Is this due to inadequacies in the current mono, or inadequacies in Wine? Mono doesn't even try to handle mixed-mode assemblies (i.e. ones that contain some native code). And by gum, every .net app built by Microsoft tools seems to include some native code for some odd reason. Go figure! Either way, Mono 2.0 will finally come out around the same time as Wine 1.0 (quarter 2 of 2008), and I suspect the number of applications Mono helps will greatly improve by then. Maybe, but only apps that have been properly cleaned of native code. - Dan