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.

Downloads

GTK+ 3

Packages (Unofficial)

Installers

GTK+ 2

Packages (Unofficial)

Installers

Compiling

Status

GTK+

With patches

All Win32 bugs

Reviewed

Needs-work

Unreviewed

Blocker

Reviewed

Needs-work

Unreviewed

Critical

Reviewed

Needs-work

Unreviewed

csw bugs

Pango

With patches

All Win32 bugs

Reviewed

Needs-work

Unreviewed

Blocker

Reviewed

Needs-work

Unreviewed

Critical

Reviewed

Needs-work

Unreviewed

Glib

With patches

All Win32 bugs

Reviewed

Needs-work

Unreviewed

Blocker

Reviewed

Needs-work

Unreviewed

Critical

Reviewed

Needs-work

Unreviewed

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

Get WiX working with Wine and Mono/Win32

Research

jdahlin, hiberis

Fixed, #11411, #11414, #15022. Closed #11479.
Works with native DLLs, not with wine's builtin DLLs

launchpad.net branch

Make buildows work with standard jhbuild

Pending

asabil

Cross compiling GLib for WinCE

Research

PhilipVanHoof

http://cegcc.sourceforge.net/

Make a Windows Installer for GTK application, which installs all the necessary DLLs

Research

PeteFotheringham

http://gitorious.org/wingtkapp/pages/Home

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

External Links

Blog posts

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

Projects/GTK/Win32 (last edited 2018-12-05 15:47:00 by EmmanueleBassi)