PyMaemo/Scratchboxless packaging guide

(Introduction)
(Preparing the package)
Line 7: Line 7:
= 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 single script named "myscript" and support files like .desktop and an icon, the setup.py will look like this:
+
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] and an [http://pymaemo.garage.maemo.org/stdeb_example/myscript-app/myscript.png icon], the [http://pymaemo.garage.maemo.org/stdeb_example/myscript-app/setup.py setup.py] will look like this:
  from distutils.core import setup
  from distutils.core import setup
Line 20: Line 20:
  )
  )
-
A file named stdeb.cgf 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].
+
A file named [http://pymaemo.garage.maemo.org/stdeb_example/myscript-app/stdeb.cfg stdeb.cgf] 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 26: Line 26:
  Package:myscript # Binary package name. stdeb adds the prefix "python-" by default
  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.
  Section: user/other # Section should start with user/ to appear in the menu.
-
  Depends: python-gtk2
+
  Depends: python-gtk2 # add extra dependencies here
= Building the packages =
= Building the packages =

Revision as of 21:50, 11 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 extra-devel repository.

This tutorial will show how to integrate it into your project, building the packages and uploading it to extras-devel.

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 and an icon, the setup.py will look like this:

from distutils.core import setup

setup(
    name='myscript',
    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.cgf 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

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:

$ scp myscript_0.0.0_all.deb root@n900 ip>:/root
$ ssh root@<n900 ip>
# dpkg -i myscript_0.0.0_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

Future work

Support for non-debian systems.