After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 722068 - Make Evolution build under Win32
Make Evolution build under Win32
Status: RESOLVED FIXED
Product: evolution
Classification: Applications
Component: general
3.6.x (obsolete)
Other Windows
: Normal normal
: ---
Assigned To: Evolution Shell Maintainers Team
Evolution QA team
Depends on: 721128
Blocks:
 
 
Reported: 2014-01-13 00:56 UTC by tarnyko
Modified: 2014-07-10 19:22 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
evolution364-win32.patch (89.89 KB, patch)
2014-01-13 00:56 UTC, tarnyko
needs-work Details | Review
configureac.patch (2.00 KB, patch)
2014-01-13 00:56 UTC, tarnyko
needs-work Details | Review
evolution364-win32.patch (13.76 KB, patch)
2014-01-29 10:19 UTC, tarnyko
reviewed Details | Review
evolution364-win32-iface.patch (76.71 KB, patch)
2014-01-29 10:20 UTC, tarnyko
committed Details | Review

Description tarnyko 2014-01-13 00:56:17 UTC
Created attachment 266088 [details] [review]
evolution364-win32.patch

Please consider attached patch, which permits Evolution to build
and work under Win32.

It basically adds configure checks, makes gnome-desktop and libsoup-gnome optional, reimplements platform-specific functions, and avoids use of win32-reserved type names.
Comment 1 tarnyko 2014-01-13 00:56:56 UTC
Created attachment 266089 [details] [review]
configureac.patch
Comment 2 Matthew Barnes 2014-01-19 19:48:54 UTC
Thanks for the patches, but these are for an obsolete version (3.6).  Patches
need to apply cleanly to the latest code in git.
Comment 3 Milan Crha 2014-01-21 13:59:04 UTC
It's weird you do not get the same error on 'interface' keyword also in evolution-data-server, where it is used quite many times. I guess you managed to compile evolution with a C++ compiler, instead of C, which would explain the error (I suppose you've got an error on the 'interface' word, because most of the patch is just about the replacement; by the way, I would prefer a change to 'iface', rather than 'interf' myself, following usual convention from GLib/GIO).
Comment 4 Milan Crha 2014-01-21 14:02:18 UTC
Ah, no, you filled bug #721128 for eds where you do the similar change. It confused me that you attached the eds part that sooner than evolution's. I'm sorry for my fault.
Comment 5 tarnyko 2014-01-21 14:09:31 UTC
(In reply to comment #3)
Hi Milan,

You're totally right, "iface" would be a lot better than "interf" (even spotted parts of code using this name, but after the fix). I guess I can just sed the patch to do the replacement...

Adapting the patch to git master is more time-consuming, so I've just put it on my TODO list. Still have to clean the binaries before that.
Comment 6 Milan Crha 2014-01-22 13:22:40 UTC
Right, we can do this in steps, and as the first, just replace 'interface' with 'iface' in evolution-data-server and evolution itself. The sed itself might not work 100%, as the 'interface' word is also included in comments, where it might not be replaced.
Comment 7 tarnyko 2014-01-29 10:19:35 UTC
Created attachment 267490 [details] [review]
evolution364-win32.patch

Right, here the patch split into 2 pieces :

- an "iface" patch with just the "interface -> iface" replacements ;
- a standard patch with 2 other win32-specific replacements (SERVICE_DISABLED -> SERVICE_DISENABLED ; DOUBLE_CLICK -> DBL_CLICK) which shouldn't have impact, and the real implementation logic.

Please note tht 2nd patch also splits the HTML_HEADER macro into two parts ; my compiler (GCC 4.6) wasn't able to use a #define that uses the result of a function (EVOLUTION_PRIVDATA) to do string concatenation.

I'll do the same for evolution-data-server soon ; sorry for the delay, I'm trying to keep up.
Comment 8 tarnyko 2014-01-29 10:20:17 UTC
Created attachment 267491 [details] [review]
evolution364-win32-iface.patch

Only "interface -> iface" replacements.
Comment 9 Matthew Barnes 2014-01-29 12:52:31 UTC
What's your process for building this on Windows, btw?  I'd like to try and reproduce it.  Are you using Cygwin or some other Unix-emulation toolset?
Comment 10 Milan Crha 2014-01-29 19:50:30 UTC
Oh, you still have it in 3.6.4 (as I realized within bug #721128), that's pity, because the target will be git master, but it's too different from 3.6.4.
Comment 11 Milan Crha 2014-01-29 19:54:07 UTC
Review of attachment 267490 [details] [review]:

::: modules/text-highlight/e-mail-formatter-text-highlight.c
@@ +40,2 @@
 #include <X11/Xlib.h>
+#endif

I think this should be dropped completely, to be 'ready' for wayland too (not that you should do it, just a side note from me).
Comment 12 tarnyko 2014-01-29 22:35:55 UTC
Yes, sorry that they're still for 3.6.4 ; just trying to do one thing at a time. I'll try to make revised patches available next week.

@Matthew Barnes : plain MinGW. I am preparing as reusable buildenv based on http://www.tarnyko.net/repo/gtk3_build_system, so anyone will be able to rebuild the whole stack with a few scripts.
Comment 13 Milan Crha 2014-02-26 15:16:26 UTC
Review of attachment 267491 [details] [review]:

I just committed this to git master, as commit 5c60d57. The other patch still requires a rewrite to git master from 3.6.x.
Comment 14 André Klapper 2014-03-02 18:27:04 UTC
(In reply to comment #12)
> Yes, sorry that they're still for 3.6.4 ; just trying to do one thing at a
> time. I'll try to make revised patches available next week.

tarnyko: Any chance to rework the last patch?
Comment 15 Milan Crha 2014-07-10 19:22:57 UTC
I used some parts of your patch, but then also changed some other things.

Created commit fa3d3c2 in evo master (3.13.4+) [1]
Created commit f699d48 in evo evolution-3-12 (3.12.4+)

[1] https://git.gnome.org/browse/evolution/commit/?id=fa3d3c2