Editing PyMaemo/Scratchboxless packaging guide

Warning: You are not logged in. Your IP address will be recorded in this page's edit history.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
== Introduction ==
== Introduction ==
-
The usual way of developing Maemo applications is using either Scratchbox or [[MADDE]], which are quite heavy for Python development. An alternative is using [http://github.com/astraw/stdeb 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.
+
The usual way of developing Maemo applications is using or Scratchbox or [[MADDE]], which are quite heavy for Python development. An alternative is using [http://github.com/astraw/stdeb 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, build the packages and upload them to extras-devel.
+
This tutorial will show how to integrate it into your project, building the packages and uploading it to extras-devel.
== Prerequisites ==
== Prerequisites ==
-
This tutorial is aimed at Debian-based systems, as some stdeb commands requires the dpkg tools installed. If you're using another distro, please refer to the section
+
This tutorial is aimed at Debian-based systems, as some stdeb commands requires the dpkg tools installed.
Also, you should get the [http://github.com/astraw/stdeb git] version of stdeb to use the debianize command, as it is a new addition and not yet available in the repositories. Run the following commands to install it:
Also, you should get the [http://github.com/astraw/stdeb git] version of stdeb to use the debianize command, as it is a new addition and not yet available in the repositories. Run the following commands to install it:
Line 13: Line 13:
  # Clone the git repository
  # Clone the git repository
  git clone http://github.com/astraw/stdeb.git
  git clone http://github.com/astraw/stdeb.git
-
+
 
  # Enter source package
  # Enter source package
  cd stdeb
  cd stdeb
-
+
 
  # Build .deb (making use of stdeb package directory in sys.path).
  # Build .deb (making use of stdeb package directory in sys.path).
  python setup.py --command-packages=stdeb.command bdist_deb
  python setup.py --command-packages=stdeb.command bdist_deb
-
+
 
  # Install it
  # Install it
  sudo dpkg -i deb_dist/python-stdeb_0.5.1+git-1_all.deb
  sudo dpkg -i deb_dist/python-stdeb_0.5.1+git-1_all.deb
Line 44: Line 44:
  [DEFAULT]
  [DEFAULT]
-
  XS-Python-Version: 2.5 # Only version currently supported by PyMaemo.
+
  XS-Python-Version: 2.5 # Only version currently supported by pymaemo.
-
  Package:my-script # Binary package name. stdeb adds the prefix "python-" by default
+
  Package:myscript # Binary package name. stdeb adds the prefix "python-" by default
  Section: user/development # Section should start with user/ to appear in the menu.
  Section: user/development # Section should start with user/ to appear in the menu.
-
  Depends: python-gtk2 # extra dependencies go here
+
  Depends: python-gtk2 # add extra dependencies here
-
<b>Warning 1</b>: Make sure to use [[Maemo_packaging#Sections|an allowed section]].
+
Make sure to use [[Maemo_packaging#Sections|an allowed section]] - otherwise the autobuilder will give a warning.
-
 
+
-
<b>Warning 2</b>: The <code>Depends</code> field in stdeb.cfg will be used on your debian/control file, so fill it correctly with all the dependencies of your application - otherwise it will break when you try to install it. For instance, [http://gitorious.org/twcano/twcano twcano] depends on the following packages: <code>python-simplejson, pyside-qt4-maemo5, pyside-qt4-webkit and python-twitter</code>, so the <code>Depends</code> field should be filled this way:
+
-
 
+
-
Depends: python-simplejson, pyside-qt4-maemo5, pyside-qt4-webkit, python-twitter
+
== Building the packages ==
== Building the packages ==
Line 71: Line 67:
== Building a basic debian directory ==
== 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. For a detailed usage example see the [http://github.com/astraw/stdeb#debianize-distutils-command stdeb website].
+
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/.
Note: sdist_dsc and bdist_deb do '''not''' use this directory, generating a new one in the source dir under deb_dist/.
Line 81: Line 77:
  $ dpkg-buildpackage -rfakeroot -uc -us -S
  $ dpkg-buildpackage -rfakeroot -uc -us -S
-
This command will create the .dsc, .tar.gz and .changes files that can be used to [[uploading to Extras-devel|upload the application to extras-devel]].
+
This command will create the .dsc, .tar.gz and .changes files that can be used to [[uploading to Extras-devel|upload the application to extras-devel]]
-
 
+
-
 
+
-
 
+
-
== Support for non-Debian systems ==
+
-
 
+
-
{{ambox
+
-
| type = notice
+
-
| image=
+
-
| text = Keep in mind that the support for non-Debian systems is '''experimental''': it is not as funcional as the stdeb approach shown above and may not work for your package. Also, these instructions may change without notice. }}
+
-
 
+
-
If you're using a distro not based on Debian, you can still create source packages for uploading to extras-devel, but won't be able to create binary packages (.deb).
+
-
 
+
-
For doing this, you will need the sdist_deb module available [http://gitorious.org/pymaemo/sboxless here]; just clone it in some directory and point the PYTHONPATH environment variable there.
+
-
 
+
-
Now create a file called sboxless.cfg, which will contain additional information for generating the package. For now, you can add additional runtime dependencies for your package. If you want to add python-twitter as dependency, just write
+
-
 
+
-
[control]
+
-
depends=python-twitter
+
-
 
+
-
The file is mandatory, so if you don't want to add any dependency, just leave the field empty ('depends=').
+
-
 
+
-
Now, run the sdist_deb command:
+
-
PYTHONPATH=/path/to/sboxless python setup.py --command-packages=sboxless  sdist_deb
+
== Future work ==
-
The source files will be generated on the ./dist directory.
+
Support for non-Debian systems.
== References ==
== References ==

Learn more about Contributing to the wiki.


Please note that all contributions to maemo.org wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see maemo.org wiki:Copyrights for details). Do not submit copyrighted work without permission!


Cancel | Editing help (opens in new window)

Templates used on this page: