File: deploy.rst

package info (click to toggle)
pygobject 3.54.5-7
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 5,864 kB
  • sloc: ansic: 40,281; python: 26,363; sh: 477; makefile: 81; xml: 35; cpp: 1
file content (54 lines) | stat: -rw-r--r-- 2,589 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
.. include:: ../icons.rst

======================
Application Deployment
======================

There is currently no nice deployment story, but it's not impossible. This is
a list of random notes and examples.

|linux-logo| Linux
------------------

On Linux there is no single strategy. Quod Libet uses distutils, MyPaint uses
SCons. Gramps uses distutils.

|macosx-logo| macOS
-------------------

On OSX you can use `gtk-osx <https://gitlab.gnome.org/GNOME/gtk-osx>`__ which is
based on jhbuild and then `gtk-mac-bundler
<https://gitlab.gnome.org/GNOME/gtk-mac-bundler>`__ for packaging things up and
making libraries relocatable. With macOS bundles you generally have a startup
shell script which sets all the various env vars relative to the bundle,
similar to jhbuild.

|windows-logo| Windows
----------------------

On Windows things are usually build to be relocatable by default, so no env
vars are needed. You can build/install through MSYS2, copy the bits you need
and you are done. For GUI application you'll also need an exe launcher that
links against the python dll.

Example Deployments
-------------------

* `Quod Libet <https://quodlibet.readthedocs.io/>`__ provides a Windows
  installer based on MSYS2 and NSIS3. On macOS, jhbuild is used for building,
  gtk.mac-bundler for packing things up and `dmgbuild
  <https://pypi.org/pypi/dmgbuild>`__ for creating a dmg. distutis is
  used for building/installing the application into the final environment.
  Most of this is automated and scripts can be found in the git repo.

* `MyPaint <https://mypaint.app/>`__ provides a Windows installer based on
  MSYS2 and Inno Setup. It uses SCons for building/installing the application.

* `Passphraser <https://github.com/zevlee/passphraser>`__ uses the Hello World
  GTK template build system (see below).

Other options
-------------

* `PyInstaller <https://www.pyinstaller.org/>`_ is a program that freezes (packages) Python programs into stand-alone executables, under Windows, Linux, Mac OS X, and more. PyInstaller's packager has built-in support for automatically including PyGObject dependencies with your application without requiring additional configuration.
* `Hello World GTK <https://github.com/zevlee/hello-world-gtk>`_ is a template build system for distributing Python-based GTK applications on Windows, macOS, and Linux. First, an application directory is assembled using PyInstaller. Then, a different program is used to package the resulting directory. For Windows, NSIS3 is used. For macOS, the built-in hdiutil is used. For Linux, AppImageKit is used.