In this page we're going to gather as much information as we can on the effort of making the Gtk+ Windows building, packaging and developing more pleasant.
Contents
Downloads
GTK+ 3
Packages (Unofficial)
Open Build Service 32-bit packages: Project Page, Downloads
Open Build Service 64-bit packages: Project Page, Downloads
MSYS2: Project Page
Installers
Tarnyko bundles: http://www.tarnyko.net/dl/
GTK+ 2
Packages (Unofficial)
MSYS2: Project Page
Installers
PyGTK All-in-one installer (README): All-in-One PyGTK Installer, all the dependencies in one msi package.
Compiling
Using Tor Lillqvist's build scripts
Using Tarnyko's build scripts
Using MinGW & MSYS on Windows
Using jhbuild: /CrossCompilingJhbuild
Using openSUSE build service: /CrossCompilingOpensuseBuildService
Using wingtk project's build scripts
Cross-compiling GTK+ apps for Windows: /Apps
Native build using prerequisites from openSUSE Build Service: /NativeBuildWithOBS
- Native compilation using Visual C++ 2008/2010 from scratch:
Status
GTK+ |
|||
|
With patches |
||
Pango |
|||
|
With patches |
||
Glib |
|||
|
With patches |
||
Goals
These goals are ordered by priority:
Be able to cross-compile GTK+ and all its dependencies on GNOME infrastructure machines, to not depend on external builds as we do right now on the GnuWin32 gettext, zlib and so on.
- Be able to build Win32 bindings using the 2 most popular toolchains : MinGW and MSVC. Achieve packaging integration (as the all-in-one pygtk installer).
- Then provide a single archive (.zip) embedding binaries and documentation with devhelp -or as HTML files.
- Achieve continuous integration (each new GTK+ release automatically builds a Win32 package).
- Ease the build of Gtk+ apps on windows, which is kinda impossible without a shell nowdays, enabling a jhbuild moduleset that only depends on MinGW or MSVC would be a huge step. This will enable more testers and patchers!
- Be able to cross compile Glib and all its dependencies for WinCE
Maintainership
A Win32 maintainer should take up these tasks:
- Be able to fix the win32 backend
Test the resulting binaries in real-world use cases, and have a Q&A relation with the GTK+ development team
- Be able to fix the build environment in order to achieve continuous integration (see above)
Tasks
Task |
Status |
People working on it |
Comments |
Test gtk-2-24-win32 branch before it is merged back into gtk-2-24 |
In progress |
dieterv |
|
Verify the needed status of Pango/Freetype2 in gtk-3-8 |
Done |
tarnyko/dieterv |
Keep them ; not needed, but useful. See thread |
Verify MSVC import libraries building for gtk-3-8 |
In progress |
tarnyko |
|
Fix the Broadway backend |
Done |
tarnyko |
Patches merged in #701707 |
Add support for WiX assemblies to buildows |
|
|
|
Research |
jdahlin, hiberis |
Fixed, #11411, #11414, #15022. Closed #11479. |
|
|
|
|
|
Make buildows work with standard jhbuild |
Pending |
asabil |
|
Cross compiling GLib for WinCE |
Research |
||
Make a Windows Installer for GTK application, which installs all the necessary DLLs |
Research |
Tools
Buildows tool to generate WiX files from a GNU/Linux box. It currently needs a last step on a windows box, due to msi native code that perhaps can be avoided using wine.
Small python tool that gets all the Tor's binary zipfiles and unpack them using a .ini as a binary module set.
WiX Installer, an opensource Microsoft tool to create .msi installers
Waf a potential enabler of a more pleasant cross compiling experience on Win32 compared to autotools.
CeGCC Cross-development tools for Windows CE (PocketPC).
Packaging
Innosetup http://www.jrsoftware.org/isinfo.php
External Links
Blog posts
(30/01/2008) Pachi's post on the state and call for help.
(16/12/2007) JohnStowers effort to improve the jhbuild process on windows.
(07/01/2008) FredericPeters bug triaging of AlbertoRuiz and JohnStowoers patches to make jhbuild not depend on bash.
(20/09/2007) GMAE on WinCE
Bugs
- gettext needs at least version 0.17 to avoid bug due to conflicting def of SUBLANG_BENGALI_INDIA SUBLANG_PUNJABI and SUBLANG_ROMANIAN with msys.
Savannah's bug #22184, gettext not compiling properly on cross compilation.
Gnome's #513826, gtk 2.12 finds cups-config on the linux host but then it won't find the headers, exiting from the configure script with an error. Patch is proposed.
Buildows additional information
Buildows first runs jhbuild on the provided modules and later runs wixer.wixit on the baked elements for the wixets dir
The jhbuild version that buildows is based on has been lightly patched. The mofified files are (probably) just jhbuild/config.py, jhbuild/modtypes/tarball.py and jhbuild/modtypes/autotools.py (grep -Ri bundle * can help finding the modified files).
These modification are used to get the desired layout for the built files (using $DESTDIR/$PREFIX/), as a sort of make install replacement (done tweaking the $DESTDIR var), and are inserted in the do_install method of those files (tarball.py and autotools.py). The change in config.py just adds a new destdir var.
Current versions of jhbuild seem to be using makeinstallargs and that could be used to pass the desired $DESTDIR (see jhbuild/modtypes/autotools.py). It would be needed to find the way to add that makeinstallargs for the 'baked' elements.
Cracktastic Ideas
Perhaps a new module type called installer could be created. Hooks could then be added before and after make, where http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/215418 code like this calculates the new files. When jhbuild evaluates the installer (which may depend on multiple modules) it gets passed the instace of this file monitor, and is able to look at all the new files, and the location they were installed to. This information could then be sufficient to transform into the wix/nsis format for listing the files included in the installer. This would make the process for creating unified installers the same as the process for creating installers for single packakes