kivy/doc/sources/guide/packaging-macosx.rst

107 lines
3.7 KiB
ReStructuredText

Create package for MacOSX
=========================
Packaging your application for the MacOSX 10.6 platform can be done only inside
MacOSX. The following method has only been tested inside VirtualBox and
MacOSX 10.6, using the portable package of Kivy.
The package will be only for 64 bits MacOSX. We have no way to do 32 bits right
now, since we are not supporting 32 bits MacOSX platform.
.. _mac_osx_requirements:
Requirements
------------
* Latest Kivy (the whole portable package, not only the github sourcecode)
* PyInstaller 2.0: http://www.pyinstaller.org/#Downloads
Ensure you've installed Kivy DMG and installed make-symlink script. `kivy`
command must be accessible from the command line.
Then, download and decompress the PyInstaller 2.0.
.. _mac_Create-the-spec-file:
Create the spec file
--------------------
For an example, we'll package the touchtracer example, using a custom icon. The
touchtracer is in the `../kivy/examples/demo/touchtracer/` directory, and the main
file is named `main.py`. Replace both path/filename according to your system.
#. Open a console
#. Go to the pyinstaller directory, and create the initial specs::
cd pyinstaller-2.0
kivy pyinstaller.py --name touchtracer ../kivy/examples/demo/touchtracer/main.py
#. The specs file is located on `touchtracer/touchtracer.spec` inside the
pyinstaller directory. Now we need to edit the spec file to add kivy hooks
to correctly build the exe.
Open the spec file with your favorite editor and put theses lines at the
start of the spec::
from kivy.tools.packaging.pyinstaller_hooks import install_hooks
install_hooks(globals())
In the `Analysis()` command, remove the `hookspath=None` parameters.
Otherwise, the kivy package hook will not be used at all.
Then, you need to change the `COLLECT()` call to add the data of touchtracer
(`touchtracer.kv`, `particle.png`, ...). Change the line to add a Tree()
object. This Tree will search and add every file found in the touchtracer
directory to your final package::
coll = COLLECT( exe, Tree('../kivy/examples/demo/touchtracer/'),
a.binaries,
#...
)
#. This is done, your spec is ready to be executed !
.. _Build the spec and create DMG:
Build the spec and create DMG
-----------------------------
#. Open a console
#. Go to the pyinstaller directory, and build the spec::
cd pyinstaller-2.0
kivy pyinstaller.py touchtracer/touchtracer.spec
#. The package will be the `touchtracer/dist/touchtracer` directory. Rename it to .app::
pushd touchtracer/dist
mv touchtracer touchtracer.app
hdiutil create ./Touchtracer.dmg -srcfolder touchtracer.app -ov
popd
#. You will have a Touchtracer.dmg available in the `touchtracer/dist` directory
Including Gstreamer
-------------------
If you wanted to read video files, audio, or camera, you would need to include
gstreamer. By default, only pygst/gst are discovered, but all the gst plugins
and libraries are missing. You need to include them in your .spec file too, by
adding one more argument to the `COLLECT()` method::
import os
gst_plugin_path = os.environ.get('GST_PLUGIN_PATH').split(':')[0]
coll = COLLECT( exe, Tree('../kivy/examples/demo/touchtracer/'),
Tree(join(gst_plugin_path, '..')),
a.binaries,
#...
)
For Kivy.app < 1.4.1, you also need to update one script included in our
Kivy.app. Go to
`/Applications/Kivy.app/Contents/Resources/kivy/kivy/tools/packaging/pyinstaller_hooks/`,
and edit the file named `rt-hook-kivy.py`, and add this line at the end::
environ['GST_PLUGIN_PATH'] = join(root, '..', 'gst-plugins')