PyMaemo/Scratchboxless packaging guide
(use cite extension) |
|||
Line 15: | Line 15: | ||
== Preparing the package == | == Preparing the package == | ||
- | As stdeb extends distutils, it is necessary that you have a working setup.py script. For our example application, which consists of a [http://pymaemo.garage.maemo.org/stdeb_example/myscript-app/myscript single script] named "myscript" and support files like [http://pymaemo.garage.maemo.org/stdeb_example/myscript-app/myscript.desktop .desktop] [ | + | As stdeb extends distutils, it is necessary that you have a working setup.py script. For our example application, which consists of a [http://pymaemo.garage.maemo.org/stdeb_example/myscript-app/myscript single script] named "myscript" and support files like [http://pymaemo.garage.maemo.org/stdeb_example/myscript-app/myscript.desktop .desktop]<ref name="desktop">[[Desktop file format]]</ref> and an [http://pymaemo.garage.maemo.org/stdeb_example/myscript-app/myscript.png icon]<ref name="icon">[[Packaging#Displaying an icon in the Application Manager next to your package]]</ref>, the [http://pymaemo.garage.maemo.org/stdeb_example/myscript-app/setup.py setup.py] will look like this: |
<source lang="python"> | <source lang="python"> | ||
from distutils.core import setup | from distutils.core import setup | ||
Line 29: | Line 29: | ||
) | ) | ||
</source> | </source> | ||
- | A file named [http://pymaemo.garage.maemo.org/stdeb_example/myscript-app/stdeb.cfg stdeb.cfg] in the same directory as setup.py is required, with stdeb | + | A file named [http://pymaemo.garage.maemo.org/stdeb_example/myscript-app/stdeb.cfg stdeb.cfg] in the same directory as setup.py is required, with stdeb Maemo-specific options. A detailed list of options can be found in the [http://github.com/astraw/stdeb stdeb website]. |
[DEFAULT] | [DEFAULT] | ||
Line 37: | Line 37: | ||
Depends: python-gtk2 # add extra dependencies here | Depends: python-gtk2 # add extra dependencies here | ||
- | Make sure to use [ | + | Make sure to use [[Maemo_packaging#Sections|an allowed section]] - otherwise the autobuilder will give a warning. |
== Building the packages == | == Building the packages == | ||
Line 69: | Line 69: | ||
== Future work == | == Future work == | ||
- | Support for non- | + | Support for non-Debian systems. |
== References == | == References == | ||
- | |||
- | + | <references /> | |
[[Category:Python]] | [[Category:Python]] | ||
[[Category:Packaging]] | [[Category:Packaging]] |
Revision as of 08:30, 16 June 2010
Contents |
Introduction
The usual way of developing Maemo applications is using or Scratchbox or MADDE, which are quite heavy for Python development. An alternative is using stdeb, a set of extensions to distutils that allows generating debian packages, both binary and source, that can be installed on the device or sent to the extras-devel repository.
This tutorial will show how to integrate it into your project, building the packages and uploading it to extras-devel.
Prerequisites
This tutorial is aimed at Debian-based systems, as some stdeb commands requires the dpkg tools installed. In
Also, you should get the git version of stdeb to use the debianize command, as it is a new addition and not yet available in the repositories.
As only python2.5 is supported in pymaemo, it should be installed if you want to create binary packages. On Ubuntu Lucid (10.04), you can install it from this ppa, following the instructions here.
Preparing the package
As stdeb extends distutils, it is necessary that you have a working setup.py script. For our example application, which consists of a single script named "myscript" and support files like .desktop[1] and an icon[2], the setup.py will look like this:
from distutils.core import setup setup( name='myscript', version='0.1', author='Lauro Moura', author_email='lauro.neto@donotspamme.com', scripts=['myscript'], data_files=[('share/applications/hildon', ['myscript.desktop']), ('share/pixmaps', ['myscript.png'])], )
A file named stdeb.cfg in the same directory as setup.py is required, with stdeb Maemo-specific options. A detailed list of options can be found in the stdeb website.
[DEFAULT] XS-Python-Version: 2.5 # Only version currently supported by pymaemo. Package:myscript # Binary package name. stdeb adds the prefix "python-" by default Section: user/other # Section should start with user/ to appear in the menu. Depends: python-gtk2 # add extra dependencies here
Make sure to use an allowed section - otherwise the autobuilder will give a warning.
Building the packages
The basic command is
python setup.py --command-packages=stdeb.command bdist_deb
It'll create a folder called deb_dist with the source and binary packages. Alternatively, the "sdist_dsc" command will create only the source package.
After generating, you can copy the package to your device and install it (requires an SSH server):
$ scp myscript_0.1-1_all.deb root@<n900 ip>:/root $ ssh root@<n900 ip> # dpkg -i myscript_0.1-1_all.deb
Building a basic debian directory
Another useful command is debianize. It will read the configuration file and write a directory named debian in the same directory. This can be used for manually creating the packages using dpkg tools directly.
Note: sdist_dsc and bdist_deb do not use this directory, generating a new one in the source dir under deb_dist/.
Uploading to extras
To upload to extras, use the debianize command and then call dpkg-buildpackage:
$ dpkg-buildpackage -rfakeroot -uc -us -S
This command will create the .dsc, .tar.gz and .changes files that can be used to upload the application to extras-devel
Future work
Support for non-Debian systems.