<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://maemo.octonezd.me/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.155.215.92</id>
	<title>Maemo Wiki Mirror - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://maemo.octonezd.me/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=84.155.215.92"/>
	<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php/Special:Contributions/84.155.215.92"/>
	<updated>2026-04-22T08:38:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Packaging&amp;diff=31455</id>
		<title>Packaging</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Packaging&amp;diff=31455"/>
		<updated>2010-02-20T15:25:52Z</updated>

		<summary type="html">&lt;p&gt;84.155.215.92: /* Finding your package in Debian */ following along recipe&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Creating Packages for Maemo =&lt;br /&gt;
&lt;br /&gt;
Since Maemo is based on the Debian operating system, creating packages for Maemo borrows a lot of tools and techniques from Debian.&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
&lt;br /&gt;
The following list of resources gives in-depth information on packaging in Debian and Maemo. These links largely discuss packaging Python apps but can be used for any programming language. &lt;br /&gt;
&lt;br /&gt;
*  [http://www.debian.org/doc/maint-guide/ Debian New Maintainers Guide]: The best place for information if you have never built a .deb before&lt;br /&gt;
*  [http://wiki.debian.org/Teams/PythonModulesTeam Debian&#039;s Python Modules Team]: definitive documentation for packaging Python modules for Debian&lt;br /&gt;
*  [http://python-modules.alioth.debian.org/python-modules-policy.htm Python Modules Policy]: Reference document.&lt;br /&gt;
* [http://showmedo.com/videos/video?name=linuxJensMakingDeb Creating debs on Ubuntu]: A great screencast and tutorial showing how to package a simple python application as a deb on Ubuntu!&lt;br /&gt;
* [https://wiki.ubuntu.com/PackagingGuide Ubuntu Packaging Guide]&lt;br /&gt;
* [[Documentation/Maemo 5 Developer Guide/Packaging, Deploying and Distributing | Deploying and distributing software on Maemo 5]]: Detailed documentation on packaging for Maemo, including how to ship your software afterwards&lt;br /&gt;
* [http://www.forum.nokia.com/Tools_Docs_and_Code/Documentation/Maemo.xhtml Forum Nokia developer documentation]: General developer documentation reference&lt;br /&gt;
* [[Packaging a Qt application]] and how it differs from the packaging described here&lt;br /&gt;
* [[User:Jebba]] has created a [[User:Jebba/Package Building HOWTO | package building howto]] with details on every step&lt;br /&gt;
&lt;br /&gt;
=== Checking Maemo Packages ===&lt;br /&gt;
Lintian dissects Debian packages and reports bugs and policy violations. &lt;br /&gt;
It contains automated checks for many aspects of Debian policy as well as some checks for common errors. Unfortunately it does not check conformance to the additional Maemo policy.&lt;br /&gt;
&lt;br /&gt;
Currently Maemo is creating [[Maemian]] to check its policy.&lt;br /&gt;
&lt;br /&gt;
= A concrete example - rot13 =&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
We assume here that you have a software package which you have developed, and which can be installed from source using a standard &amp;lt;pre&amp;gt;./configure; make; sudo make install&amp;lt;/pre&amp;gt; process.&lt;br /&gt;
&lt;br /&gt;
For the purposes of our article, we will be packaging a simple command-lie utility called &amp;quot;rot13&amp;quot;, which will perform a simple [http://en.wikipedia.org/wiki/ROT13 rot13] cipher on all text input from stdin.&lt;br /&gt;
&lt;br /&gt;
== Packaging a .deb ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to package a .deb file is to use Debian&#039;s build helpers.&lt;br /&gt;
&lt;br /&gt;
Package your application as you would distribute it in a .tar.gz (when using autotools, this is done with &amp;quot;make distcheck&amp;quot;). In our example, we uncompress rot13-0.1.tar.gz, and change the current directory to rot13-0.1.&lt;br /&gt;
&lt;br /&gt;
 $ tar xfz rot13-0.1.tar.gz&lt;br /&gt;
 $ cd rot13-0.1&lt;br /&gt;
&lt;br /&gt;
Then we run dh_make, which initialises the Debian package management file structure (among other things):&lt;br /&gt;
 $ dh_make -e &amp;lt;my email address&amp;gt; -f ../rot13-0.1.tar.gz -c GPL&lt;br /&gt;
&lt;br /&gt;
You can of course choose a different licence for your package.&lt;br /&gt;
&lt;br /&gt;
Answer the resulting questions - in this case, we are packaging a single binary.&lt;br /&gt;
&lt;br /&gt;
We can now edit the files in the &amp;lt;code&amp;gt;debian/&amp;lt;/code&amp;gt; directory which has been created to their desired values, before packaging the software. In fact, we can delete many of these files. All of the files ending in “.ex” or “.EX” are example files, intended to help you package different types of software.&lt;br /&gt;
&lt;br /&gt;
If you use a standard configure script, you do not need to modify any files in here at all.&lt;br /&gt;
&lt;br /&gt;
Before creating a .deb, you should set a changelog entry. .deb changelogs follow a special format, so rather than editing the files by hand, use the dch helper application. This will allow you to add what new features went into this application, give credit, and so on. It is an especially important file because it sets the version and revision of the source and binary packages. On saving, a syntax check is performed which ensures that the resulting file is OK. The file format is completely documented in the [http://www.debian.org/doc/maint-guide/ Debian packaging guide].&lt;br /&gt;
&lt;br /&gt;
Finally, we generate a .deb from the source code using the command:&lt;br /&gt;
 dpkg-buildpackage -sa -rfakeroot -k&amp;lt;my email address&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should now have several files created in the parent directory to where you unpacked the source code. I have;&lt;br /&gt;
&lt;br /&gt;
 rot13_0.1.orig.tar.gz&lt;br /&gt;
 rot13_0.1-1_i386.deb&lt;br /&gt;
 rot13_0.1-1.diff.gz&lt;br /&gt;
 rot13_0.1-1.dsc&lt;br /&gt;
 rot13_0.1-1_i386.changes&lt;br /&gt;
&lt;br /&gt;
Now change the target architecture to ARMEL and rebuild it, to generate rot13_0.1-1_arm.deb&lt;br /&gt;
&lt;br /&gt;
=== Additional information ===&lt;br /&gt;
&lt;br /&gt;
If you use git then you may not want to include the entire git repo in your source bundle. With dpkg-source version 1.13.25 the -i option is not git-aware so you can do:&lt;br /&gt;
&lt;br /&gt;
  dpkg-buildpackage -rfakeroot -sa  -i -I.git&lt;br /&gt;
&lt;br /&gt;
You may verify that your &amp;lt;code&amp;gt;Build-Depends&amp;lt;/code&amp;gt; field in debian/control is complete by running:&lt;br /&gt;
&lt;br /&gt;
 dpkg-depcheck -m dpkg-buildpackage -rfakeroot -b&lt;br /&gt;
&lt;br /&gt;
in the source tree. (You will need to &amp;lt;code&amp;gt;fakeroot apt-get install devscripts&amp;lt;/code&amp;gt; for this to work).&lt;br /&gt;
&lt;br /&gt;
== Uploading to extras-devel ==&lt;br /&gt;
&lt;br /&gt;
{{main|Uploading to Extras-devel}}&lt;br /&gt;
&lt;br /&gt;
= Porting an existing Debian package =&lt;br /&gt;
&lt;br /&gt;
== Finding your package in Debian ==&lt;br /&gt;
&lt;br /&gt;
If you want to port a Debian package to Maemo, you should check and see if it is already packaged for Debian and use that package if you can - this will save you time and effort. You can search in Debian&#039;s [http://www.debian.org/distrib/packages Package Tracking System (PTS)] to see if it is there. There is a search system on the PTS page, under the &amp;quot;distribution&amp;quot; drop-down, select &#039;any&#039;, this will search throughout Debian&#039;s repositories to find the package. Debian has more than 20,000 packages just in its stable distribution so your application is likely already packaged.&lt;br /&gt;
&lt;br /&gt;
If you find the package already exists in Debian, you can get the source, including the packaging source, with apt-get. To do this, you&#039;ll have to edit your /etc/apt/sources.list, you can follow this recipe;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ echo &amp;quot;deb http://ftp.it.debian.org/debian/ unstable main contrib non-free&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
$ echo &amp;quot;deb-src http://ftp.it.debian.org/debian/ unstable main contrib non-free&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
$ apt-get update&lt;br /&gt;
$ apt-cache search &amp;quot;application name&amp;quot;&lt;br /&gt;
$ apt-get source &amp;quot;application name&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To learn more about the &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; you can do a &#039;man sources.list&#039; if you are running Debian or a Debian-based GNU/Linux distro.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Modifying a Debian package for Maemo ==&lt;br /&gt;
&lt;br /&gt;
Once you have the source of the Debian package, you will need to make some modifications to that package for it to build under Maemo. See the [[#Packaging_policy|Maemo packaging policy]] for more information.&lt;br /&gt;
&lt;br /&gt;
The maintainer field (in the &amp;lt;code&amp;gt;debian/control&amp;lt;/code&amp;gt; file) must be changed if the upstream package is modified, for example:&lt;br /&gt;
 Maintainer: Tcl/Tk Debian Packagers &amp;lt;pkg-tcltk-devel@lists.alioth.debian.org&amp;gt;&lt;br /&gt;
should be replaced by&lt;br /&gt;
 Maintainer: My Name &amp;lt;my@email.com&amp;gt;&lt;br /&gt;
 XSBC-Original-Maintainer: Tcl/Tk Debian Packagers &amp;lt;pkg-tcltk-devel@lists.alioth.debian.org&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You must add a new entry to &amp;lt;code&amp;gt;debian/changelog&amp;lt;/code&amp;gt; and append &amp;lt;code&amp;gt;maemo1&amp;lt;/code&amp;gt; to the version, for example:&lt;br /&gt;
 tk8.5 (8.5.8-1) unstable; urgency=low&lt;br /&gt;
becomes:&lt;br /&gt;
 tk8.5 (8.5.8-1maemo1) fremantle; urgency=low&lt;br /&gt;
This indicates that there have been Maemo-specific changes to the packaging. If you upload new changes, you must add a new changelog entry and increment the version number, for example &amp;lt;code&amp;gt;maemo2&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Debian way&amp;quot; is to keep all modifications to the package in the &amp;lt;code&amp;gt;package.version.diff.gz&amp;lt;/code&amp;gt; file and to leave the &amp;lt;code&amp;gt;.orig.tar.gz&amp;lt;/code&amp;gt; file untouched. There are several ways to apply patches with Debian packaging, and some are described in the [http://www.debian.org/doc/maint-guide/ch-build.en.html#s-dpatch patching section of the New Maintainer&#039;s Guide]&lt;br /&gt;
&lt;br /&gt;
However, the &amp;lt;code&amp;gt;.diff.gz&amp;lt;/code&amp;gt; cannot store binary files like icons. A possible workaround is to uuencode the binary file, for example (in &amp;lt;code&amp;gt;debian/&amp;lt;/code&amp;gt;):&lt;br /&gt;
 uuencode -m icon.png icon.png  &amp;gt; icon.png.b64&lt;br /&gt;
and in the rules file decode the file to debian/icon.png before installation&lt;br /&gt;
 uudecode debian/icon.png.b64&lt;br /&gt;
For this solution you have to add &amp;lt;code&amp;gt;sharutils&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;Build-Depends&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If the package should be visible in the Application Manager, the Section field should begin with &amp;lt;code&amp;gt;user/&amp;lt;/code&amp;gt;, with the [[#Sections|valid sections listed below]]. You should also add and install a &amp;lt;code&amp;gt;.desktop&amp;lt;/code&amp;gt; file for starting the application, if one does not already exist.&lt;br /&gt;
&lt;br /&gt;
== Differences between Debian/Ubuntu and Maemo ==&lt;br /&gt;
&lt;br /&gt;
The are a couple of important differences between a Debian system and Maemo:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Busybox&#039;&#039;&#039;:&amp;lt;br/&amp;gt;Maemo uses busybox to replace most of bsdutils, coreutils, findutils and bash, therefore most of the extended options for the commands and shell are not available. Check the postinstall and other package scripts for such options and try to replace or emulate them.&lt;br /&gt;
&lt;br /&gt;
* Outdated &#039;&#039;&#039;build and configuration tools&#039;&#039;&#039;:&amp;lt;br/&amp;gt;the SDK and autobuilder provide only outdated versions of gcc, dpkg, debhelper, cdbs, debconf, ucf and other build tools. Try to replace the &amp;lt;code&amp;gt;Build-Depends&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;debian/control&amp;lt;/code&amp;gt; file with older versions or use backports like [[#Debhelper_7|debhelper7]]&lt;br /&gt;
&lt;br /&gt;
* Directories for &#039;&#039;&#039;temporary files&#039;&#039;&#039;:&amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; is only 900 kB and should only be used for very small temporary files. &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; on the NAND is larger. A new temporary directory in &amp;lt;code&amp;gt;/home/user/&amp;lt;/code&amp;gt; could be even larger. Replace constructs like &amp;lt;code&amp;gt;${TMP-/tmp}&amp;lt;/code&amp;gt; in shell scripts with &amp;lt;code&amp;gt;${TMP-/var/tmp}&amp;lt;/code&amp;gt; (the same applies to &amp;lt;code&amp;gt;mktemp -p /tmp&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Optification&#039;&#039;&#039; may confuse programs:&amp;lt;br/&amp;gt;some programs try to find their data files relative to the binary location. Such a program stored in &amp;lt;code&amp;gt;/opt/maemo/usr/bin/program&amp;lt;/code&amp;gt; would search, for instance, in &amp;lt;code&amp;gt;/opt/maemo/usr/share&amp;lt;/code&amp;gt; while the actual data may be in &amp;lt;code&amp;gt;/usr/share&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Installation in &amp;lt;code&amp;gt;/opt&amp;lt;/code&amp;gt;:&amp;lt;br/&amp;gt;if you want to perform manual optification (e.g. using &amp;lt;code&amp;gt;configure --prefix=/opt/package&amp;lt;/code&amp;gt;) you should store &amp;quot;none&amp;quot; in &amp;lt;code&amp;gt;debian/optify&amp;lt;/code&amp;gt; and add some to the postinst script which symlinks the binaries and libraries of the package to &amp;lt;code&amp;gt;/usr/bin&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lib&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
&lt;br /&gt;
* Documentation:&amp;lt;br/&amp;gt;do not install documentation in &amp;lt;code&amp;gt;/usr/share/doc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/usr/share/info&amp;lt;/code&amp;gt; - docpurge will remove it. You may install it in the &amp;lt;code&amp;gt;/opt&amp;lt;/code&amp;gt; hierarchy, however.&lt;br /&gt;
&lt;br /&gt;
= Maemo-specific packaging information =&lt;br /&gt;
&lt;br /&gt;
== Packaging policy ==&lt;br /&gt;
&lt;br /&gt;
Maemo packages follow the Debian Policy, but there are some items where Maemo:&lt;br /&gt;
* Is more strict (it is an embedded distribution)&lt;br /&gt;
* Is more relaxed:&lt;br /&gt;
** A single target device (per release)&lt;br /&gt;
** A single specified UI (Hildon)&lt;br /&gt;
** A single user&lt;br /&gt;
* Differs from Debian because Maemo has different:&lt;br /&gt;
** Objectives&lt;br /&gt;
** Maintainers&lt;br /&gt;
** Infrastructure&lt;br /&gt;
&lt;br /&gt;
Most of the specifics for Maemo packaging are outlined in the [http://maemo.org/forrest-images/pdf/maemo-policy.pdf Maemo packaging policy]. The policy is still in the draft stage, so certain parts are still incomplete or not entirely up to date.&lt;br /&gt;
&lt;br /&gt;
== Sections ==&lt;br /&gt;
&lt;br /&gt;
This is the list used in Fremantle/Maemo5 and is the same as the [http://lists.maemo.org/pipermail//maemo-developers/2008-October/035437.html final] list for Diablo as [[Task:Package_categories|discussed in the task]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Example English i18n&lt;br /&gt;
! Example apps&lt;br /&gt;
|-&lt;br /&gt;
| user/desktop&lt;br /&gt;
| Desktop&lt;br /&gt;
| Home, statusbar and taskbar applets&lt;br /&gt;
|-&lt;br /&gt;
| user/development&lt;br /&gt;
| Programming&lt;br /&gt;
| py2deb&lt;br /&gt;
|-&lt;br /&gt;
| user/education&lt;br /&gt;
| Education&lt;br /&gt;
| Flashcard apps&lt;br /&gt;
|-&lt;br /&gt;
| user/games&lt;br /&gt;
| Games&lt;br /&gt;
| Doom, Duke Nukem 3D&lt;br /&gt;
|-&lt;br /&gt;
| user/graphics&lt;br /&gt;
| Graphics&lt;br /&gt;
| Photo apps, GIMP, Inkscape, fonts&lt;br /&gt;
|-&lt;br /&gt;
| user/multimedia&lt;br /&gt;
| Multimedia &#039;&#039;or&#039;&#039; Sound &amp;amp; Video&lt;br /&gt;
| Canola, mplayer, Kagu, UKMP, MediaBox&lt;br /&gt;
|-&lt;br /&gt;
| user/navigation&lt;br /&gt;
| (Location &amp;amp;) Navigation&lt;br /&gt;
| maemo-mapper, Navit&lt;br /&gt;
|-&lt;br /&gt;
| user/network&lt;br /&gt;
| Internet &amp;amp; Networking&lt;br /&gt;
| Web browsers, Samba clients, OpenAFS, Transmission&lt;br /&gt;
|-&lt;br /&gt;
| user/office&lt;br /&gt;
| Office&lt;br /&gt;
| GPE, Claws, AbiWord&lt;br /&gt;
|-&lt;br /&gt;
| user/science&lt;br /&gt;
| Science&lt;br /&gt;
| gnuplot, Octave&lt;br /&gt;
|-&lt;br /&gt;
| user/system&lt;br /&gt;
| System&lt;br /&gt;
| rotation-support, enhanced kernels, themes&lt;br /&gt;
|-&lt;br /&gt;
| user/utilities&lt;br /&gt;
| Utilities &#039;&#039;or&#039;&#039; Accessories&lt;br /&gt;
| Calculators, terminals, text editors&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the package&#039;s section starts &amp;quot;user/&amp;quot;, but is not any of the above, the &#039;&#039;Application Manager&#039;&#039; forces them into an &amp;quot;Other&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
== Maemo-specific fields ==&lt;br /&gt;
&lt;br /&gt;
There are a number of Maemo-specific package fields that are handled by Application manager. The Application manager documentation [http://hildon-app-mgr.garage.maemo.org/packaging-stable.html outlines] them.&lt;br /&gt;
&lt;br /&gt;
=== Displaying an icon in the Application Manager next to your package ===&lt;br /&gt;
&lt;br /&gt;
Displaying an icon in the Application Manager next to your package makes it look pretty and makes your package stand out, and it is not that hard to do.&lt;br /&gt;
&lt;br /&gt;
# Make an image that is &#039;&#039;&#039;48x48&#039;&#039;&#039; pixels. The image can be saved in any format that is supported by GdkPixbufLoader on Maemo, but PNG is commonly used.&lt;br /&gt;
# base64 encode the image. This can be done in many ways, depending on the platform, but assuming you are in scratchbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install sharutils&lt;br /&gt;
uuencode -m &amp;lt;name of 48x48 image&amp;gt; &amp;lt;name of 48x48 image&amp;gt; &amp;gt; &amp;lt;name of 48x48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Add the field &#039;&#039;XB-Maemo-Icon-26&#039;&#039; to your &amp;lt;code&amp;gt;debian/control&amp;lt;/code&amp;gt; (in Maemo4 the size of the icons was 26x26, hence the name of the field, &#039;&#039;&#039;which has not changed&#039;&#039;&#039;)&lt;br /&gt;
# Open the base64 version of your image and copy from the line under &#039;&#039;begin-base64 644 &amp;lt;name of 48x48 image&amp;gt;&#039;&#039; to the line above the &#039;&#039;===&#039;&#039;&lt;br /&gt;
# Add this to the &#039;&#039;XB-Maemo-Icon-26&#039;&#039; field&lt;br /&gt;
# Add a space in front of every line of the encoded icon&lt;br /&gt;
&lt;br /&gt;
Here is an example of a properly formatted Maemo-Icon-26: (of wrong image size)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Description: Chess...&lt;br /&gt;
XB-Maemo-Icon-26: &lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABGdBTUEAAK/INwWK6QAAABl0&lt;br /&gt;
 RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALxSURBVHja3FZNTBNREP669J/S&lt;br /&gt;
 XYxtKRWl1JOSFBIPhkitCQeNiaKBmzdj9Ggk0ZOBxHDWixcTjV6MF+WiIB40YEyMBMGYEqQK&lt;br /&gt;
 tLS2lG7pdre0pF3WtxslgJRuD2J0kpfdTN7O976Z782sRpIk7IZR2C2TGW1cv8xaY5WuXLy8&lt;br /&gt;
 iW5XV5fk8/kkr9e7ya/T6SSNRiOViikvbbmDDD590SusZBGYDiDwJbDud7vdvYIgIJfLYXV1&lt;br /&gt;
 tSwhrQrSfRX6/26N/j+gkjW6ce06HE4HGEctGuj9oEwUzFYz5ubmEA6HQVEUisUi8vn8b4rd&lt;br /&gt;
 zjRbNxCZrr+3t7XTzjrnvMfdxMi7xj6OIRaPIbWcQjabVdRWKBTkrX4SZ2SjvCtKXf+tkxxD&lt;br /&gt;
 M5MetwfHj/lwwueHy+WCVqvdehdHKq7R6JvbpfNMAGiGhs1mg9ls3sS+4hodbDqCwef9mA9P&lt;br /&gt;
 7vhhVVWV3BGUOomiaCSufEWMxNwimlweMFYbpoMfyp70J6t8xanLZgWs8Ak07N0Hau0P3qOs&lt;br /&gt;
 wIHnl5FJx2E1WlUFuXrzIS713KusRplMCoLAgl2O4N34ODQ4VRaot6cbUzMRNNQ/w/uJWXWM&lt;br /&gt;
 eH5JARkYHsLQMIe1NZEpB7Sn1uKFhkL3maO4cL5NHVAo+hkPnrzEq2HqQIf/3ICzvr7FXmeH&lt;br /&gt;
 3qBXlslkgtFoVBS3YfbcKRRFfJpagE6vUwd0//FbjI7mkcvnGoNfg51ORx3sNju+hWYxMxsk&lt;br /&gt;
 jHlF2jJgdXU1DAaDrDx/kQAVRREJlldXo8kJoPlQ8wHSevosFgs5MmE5H0IingDP8eAzPAQC&lt;br /&gt;
 tkJakDz05Hsks+poPzwg6+Luo9chVb2O3Hilv7V6W5nO02cVX3wxjsj3CMKRBUSjUcQWY0iy&lt;br /&gt;
 SQVoi6XJaiQxubKpI02yj2xk6BoaBr0BqXRKCZpYSiCZlIXCguM4pWtvY0ypyUtt87PSIj/t&lt;br /&gt;
 pJ/JICzLKiBLySTYVArpdFrp3DuMhRZVqfvnJ+wPAQYA1hdr5EDqltYAAAAASUVORK5CYII=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bugtracker location ===&lt;br /&gt;
&lt;br /&gt;
As a requirement for your package being promoted from [[Extras-testing]] to [[Extras]], your &amp;lt;code&amp;gt;debian/control&amp;lt;/code&amp;gt; file must have a link to a bugtracker. It is possible to [[Bugs:Adding Extra products|request a component at bugs.maemo.org]] or use a [[Getting_started_with_Maemo_Garage#Trackers_and_tasks|Garage project bugtracker]], or even an email address.&lt;br /&gt;
&lt;br /&gt;
# Add the field ‘XSBC-Bugtracker’ to your debian/control, for example:&amp;lt;br/&amp;gt;&amp;lt;pre&amp;gt;XSBC-Bugtracker: https://bugs.maemo.org/enter_bug.cgi?product=mypackage&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pretty names ===&lt;br /&gt;
&lt;br /&gt;
A package can specify a pretty name for itself. This name is displayed in the Application manager UI instead of the real package name.&lt;br /&gt;
&lt;br /&gt;
The pretty name is specified with the &#039;&amp;lt;code&amp;gt;XSBC-Maemo-Display-Name&amp;lt;/code&amp;gt;&#039; field in your &amp;lt;code&amp;gt;debian/control&amp;lt;/code&amp;gt; file, for example:&lt;br /&gt;
 XSBC-Maemo-Display-Name: My package name&lt;br /&gt;
&lt;br /&gt;
=== Maemo revision string ===&lt;br /&gt;
&lt;br /&gt;
If an upstream package is re-packaged or modified for Maemo, the Maemo revision string should be appended to the upstream revision, in the &amp;lt;code&amp;gt;debian/changelog&amp;lt;/code&amp;gt; file. So if in Debian the package name was something like &amp;quot;Myapp-0.4-2&amp;quot; in maemo this package will be called &amp;quot;Myapp-0.4-2maemo0&amp;quot;. The number after the &amp;quot;maemo&amp;quot; string is a progressive number.&lt;br /&gt;
&lt;br /&gt;
== Debhelper 7 ==&lt;br /&gt;
&lt;br /&gt;
A backport of Debhelper 7 for Fremantle is available in extras-devel. It works transparently and can coexist with debhelper 5 in the SDK. It even works on the autobuilder, if the package specifies the correct build-dependency of &amp;lt;code&amp;gt;debhelper7&amp;lt;/code&amp;gt;. The following lines in &amp;lt;code&amp;gt;debian/rules&amp;lt;/code&amp;gt; are necessary to use the new debhelper:&lt;br /&gt;
&lt;br /&gt;
 PATH:=/usr/bin/dh7:/usr/bin:$(PATH)&lt;br /&gt;
 export PATH&lt;br /&gt;
 SBOX_REDIRECT_IGNORE=/usr/bin/perl&lt;br /&gt;
 export SBOX_REDIRECT_IGNORE&lt;br /&gt;
&lt;br /&gt;
Further information about the updated debhelper is available at [[User:Tanner#debhelper7]].&lt;br /&gt;
&lt;br /&gt;
If you also need a more recent [http://build-common.alioth.debian.org/ CDBS], then use the package [http://maemo.org/packages/view/cdbs-dh7/ cdbs-dh7], which conflicts with the standard CDBS and does not work on autobuilder yet.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can try to use debhelper 5. Debian packages that require level 7 need some changes, for example:&lt;br /&gt;
* debian/compat: 7 -&amp;gt; 5&lt;br /&gt;
* debian/control: Build-Depends: debhelper (&amp;gt;= 7) -&amp;gt; debhelper (&amp;gt;= 5)&lt;br /&gt;
* Possibly, comment out a few dh_* calls from debian/rules, which might not exist on level 5&lt;br /&gt;
&lt;br /&gt;
Things might get complex if the packaging already uses some new features of level 7, like CDBS-style helper rules. In such cases, looking at versions of packages written prior to the compatibility level upgrade might help doing the downgrade (and most Debian packages are kept in public SCMs like svn.debian.org).&lt;br /&gt;
&lt;br /&gt;
[[Category:Packaging]]&lt;/div&gt;</summary>
		<author><name>84.155.215.92</name></author>
	</entry>
	<entry>
		<id>https://maemo.octonezd.me/index.php?title=Packaging&amp;diff=31456</id>
		<title>Packaging</title>
		<link rel="alternate" type="text/html" href="https://maemo.octonezd.me/index.php?title=Packaging&amp;diff=31456"/>
		<updated>2010-02-20T15:21:34Z</updated>

		<summary type="html">&lt;p&gt;84.155.215.92: /* Finding your package in Debian */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Creating Packages for Maemo =&lt;br /&gt;
&lt;br /&gt;
Since Maemo is based on the Debian operating system, creating packages for Maemo borrows a lot of tools and techniques from Debian.&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
&lt;br /&gt;
The following list of resources gives in-depth information on packaging in Debian and Maemo. These links largely discuss packaging Python apps but can be used for any programming language. &lt;br /&gt;
&lt;br /&gt;
*  [http://www.debian.org/doc/maint-guide/ Debian New Maintainers Guide]: The best place for information if you have never built a .deb before&lt;br /&gt;
*  [http://wiki.debian.org/Teams/PythonModulesTeam Debian&#039;s Python Modules Team]: definitive documentation for packaging Python modules for Debian&lt;br /&gt;
*  [http://python-modules.alioth.debian.org/python-modules-policy.htm Python Modules Policy]: Reference document.&lt;br /&gt;
* [http://showmedo.com/videos/video?name=linuxJensMakingDeb Creating debs on Ubuntu]: A great screencast and tutorial showing how to package a simple python application as a deb on Ubuntu!&lt;br /&gt;
* [https://wiki.ubuntu.com/PackagingGuide Ubuntu Packaging Guide]&lt;br /&gt;
* [[Documentation/Maemo 5 Developer Guide/Packaging, Deploying and Distributing | Deploying and distributing software on Maemo 5]]: Detailed documentation on packaging for Maemo, including how to ship your software afterwards&lt;br /&gt;
* [http://www.forum.nokia.com/Tools_Docs_and_Code/Documentation/Maemo.xhtml Forum Nokia developer documentation]: General developer documentation reference&lt;br /&gt;
* [[Packaging a Qt application]] and how it differs from the packaging described here&lt;br /&gt;
* [[User:Jebba]] has created a [[User:Jebba/Package Building HOWTO | package building howto]] with details on every step&lt;br /&gt;
&lt;br /&gt;
=== Checking Maemo Packages ===&lt;br /&gt;
Lintian dissects Debian packages and reports bugs and policy violations. &lt;br /&gt;
It contains automated checks for many aspects of Debian policy as well as some checks for common errors. Unfortunately it does not check conformance to the additional Maemo policy.&lt;br /&gt;
&lt;br /&gt;
Currently Maemo is creating [[Maemian]] to check its policy.&lt;br /&gt;
&lt;br /&gt;
= A concrete example - rot13 =&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
We assume here that you have a software package which you have developed, and which can be installed from source using a standard &amp;lt;pre&amp;gt;./configure; make; sudo make install&amp;lt;/pre&amp;gt; process.&lt;br /&gt;
&lt;br /&gt;
For the purposes of our article, we will be packaging a simple command-lie utility called &amp;quot;rot13&amp;quot;, which will perform a simple [http://en.wikipedia.org/wiki/ROT13 rot13] cipher on all text input from stdin.&lt;br /&gt;
&lt;br /&gt;
== Packaging a .deb ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to package a .deb file is to use Debian&#039;s build helpers.&lt;br /&gt;
&lt;br /&gt;
Package your application as you would distribute it in a .tar.gz (when using autotools, this is done with &amp;quot;make distcheck&amp;quot;). In our example, we uncompress rot13-0.1.tar.gz, and change the current directory to rot13-0.1.&lt;br /&gt;
&lt;br /&gt;
 $ tar xfz rot13-0.1.tar.gz&lt;br /&gt;
 $ cd rot13-0.1&lt;br /&gt;
&lt;br /&gt;
Then we run dh_make, which initialises the Debian package management file structure (among other things):&lt;br /&gt;
 $ dh_make -e &amp;lt;my email address&amp;gt; -f ../rot13-0.1.tar.gz -c GPL&lt;br /&gt;
&lt;br /&gt;
You can of course choose a different licence for your package.&lt;br /&gt;
&lt;br /&gt;
Answer the resulting questions - in this case, we are packaging a single binary.&lt;br /&gt;
&lt;br /&gt;
We can now edit the files in the &amp;lt;code&amp;gt;debian/&amp;lt;/code&amp;gt; directory which has been created to their desired values, before packaging the software. In fact, we can delete many of these files. All of the files ending in “.ex” or “.EX” are example files, intended to help you package different types of software.&lt;br /&gt;
&lt;br /&gt;
If you use a standard configure script, you do not need to modify any files in here at all.&lt;br /&gt;
&lt;br /&gt;
Before creating a .deb, you should set a changelog entry. .deb changelogs follow a special format, so rather than editing the files by hand, use the dch helper application. This will allow you to add what new features went into this application, give credit, and so on. It is an especially important file because it sets the version and revision of the source and binary packages. On saving, a syntax check is performed which ensures that the resulting file is OK. The file format is completely documented in the [http://www.debian.org/doc/maint-guide/ Debian packaging guide].&lt;br /&gt;
&lt;br /&gt;
Finally, we generate a .deb from the source code using the command:&lt;br /&gt;
 dpkg-buildpackage -sa -rfakeroot -k&amp;lt;my email address&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should now have several files created in the parent directory to where you unpacked the source code. I have;&lt;br /&gt;
&lt;br /&gt;
 rot13_0.1.orig.tar.gz&lt;br /&gt;
 rot13_0.1-1_i386.deb&lt;br /&gt;
 rot13_0.1-1.diff.gz&lt;br /&gt;
 rot13_0.1-1.dsc&lt;br /&gt;
 rot13_0.1-1_i386.changes&lt;br /&gt;
&lt;br /&gt;
Now change the target architecture to ARMEL and rebuild it, to generate rot13_0.1-1_arm.deb&lt;br /&gt;
&lt;br /&gt;
=== Additional information ===&lt;br /&gt;
&lt;br /&gt;
If you use git then you may not want to include the entire git repo in your source bundle. With dpkg-source version 1.13.25 the -i option is not git-aware so you can do:&lt;br /&gt;
&lt;br /&gt;
  dpkg-buildpackage -rfakeroot -sa  -i -I.git&lt;br /&gt;
&lt;br /&gt;
You may verify that your &amp;lt;code&amp;gt;Build-Depends&amp;lt;/code&amp;gt; field in debian/control is complete by running:&lt;br /&gt;
&lt;br /&gt;
 dpkg-depcheck -m dpkg-buildpackage -rfakeroot -b&lt;br /&gt;
&lt;br /&gt;
in the source tree. (You will need to &amp;lt;code&amp;gt;fakeroot apt-get install devscripts&amp;lt;/code&amp;gt; for this to work).&lt;br /&gt;
&lt;br /&gt;
== Uploading to extras-devel ==&lt;br /&gt;
&lt;br /&gt;
{{main|Uploading to Extras-devel}}&lt;br /&gt;
&lt;br /&gt;
= Porting an existing Debian package =&lt;br /&gt;
&lt;br /&gt;
== Finding your package in Debian ==&lt;br /&gt;
&lt;br /&gt;
If you want to port a Debian package to Maemo, you should check and see if it is already packaged for Debian and use that package if you can - this will save you time and effort. You can search in Debian&#039;s [http://www.debian.org/distrib/packages Package Tracking System (PTS)] to see if it is there. There is a search system on the PTS page, under the &amp;quot;distribution&amp;quot; drop-down, select &#039;any&#039;, this will search throughout Debian&#039;s repositories to find the package. Debian has more than 20,000 packages just in its stable distribution so your application is likely already packaged.&lt;br /&gt;
&lt;br /&gt;
If you find the package already exists in Debian, you can get the source, including the packaging source, with apt-get. To do this, you&#039;ll have to edit your /etc/apt/sources.list, you can follow this recipe;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ echo &amp;quot;deb http://ftp.it.debian.org/debian/ unstable main contrib non-free&amp;quot; &amp;gt;&amp;gt; /etc/apt/sources.list&lt;br /&gt;
$ apt-get update&lt;br /&gt;
$ apt-cache search &amp;quot;application name&amp;quot;&lt;br /&gt;
$ apt-get source &amp;quot;application name&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To learn more about the &amp;lt;code&amp;gt;/etc/apt/sources.list&amp;lt;/code&amp;gt; you can do a &#039;man sources.list&#039; if you are running Debian or a Debian-based GNU/Linux distro.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Modifying a Debian package for Maemo ==&lt;br /&gt;
&lt;br /&gt;
Once you have the source of the Debian package, you will need to make some modifications to that package for it to build under Maemo. See the [[#Packaging_policy|Maemo packaging policy]] for more information.&lt;br /&gt;
&lt;br /&gt;
The maintainer field (in the &amp;lt;code&amp;gt;debian/control&amp;lt;/code&amp;gt; file) must be changed if the upstream package is modified, for example:&lt;br /&gt;
 Maintainer: Tcl/Tk Debian Packagers &amp;lt;pkg-tcltk-devel@lists.alioth.debian.org&amp;gt;&lt;br /&gt;
should be replaced by&lt;br /&gt;
 Maintainer: My Name &amp;lt;my@email.com&amp;gt;&lt;br /&gt;
 XSBC-Original-Maintainer: Tcl/Tk Debian Packagers &amp;lt;pkg-tcltk-devel@lists.alioth.debian.org&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You must add a new entry to &amp;lt;code&amp;gt;debian/changelog&amp;lt;/code&amp;gt; and append &amp;lt;code&amp;gt;maemo1&amp;lt;/code&amp;gt; to the version, for example:&lt;br /&gt;
 tk8.5 (8.5.8-1) unstable; urgency=low&lt;br /&gt;
becomes:&lt;br /&gt;
 tk8.5 (8.5.8-1maemo1) fremantle; urgency=low&lt;br /&gt;
This indicates that there have been Maemo-specific changes to the packaging. If you upload new changes, you must add a new changelog entry and increment the version number, for example &amp;lt;code&amp;gt;maemo2&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Debian way&amp;quot; is to keep all modifications to the package in the &amp;lt;code&amp;gt;package.version.diff.gz&amp;lt;/code&amp;gt; file and to leave the &amp;lt;code&amp;gt;.orig.tar.gz&amp;lt;/code&amp;gt; file untouched. There are several ways to apply patches with Debian packaging, and some are described in the [http://www.debian.org/doc/maint-guide/ch-build.en.html#s-dpatch patching section of the New Maintainer&#039;s Guide]&lt;br /&gt;
&lt;br /&gt;
However, the &amp;lt;code&amp;gt;.diff.gz&amp;lt;/code&amp;gt; cannot store binary files like icons. A possible workaround is to uuencode the binary file, for example (in &amp;lt;code&amp;gt;debian/&amp;lt;/code&amp;gt;):&lt;br /&gt;
 uuencode -m icon.png icon.png  &amp;gt; icon.png.b64&lt;br /&gt;
and in the rules file decode the file to debian/icon.png before installation&lt;br /&gt;
 uudecode debian/icon.png.b64&lt;br /&gt;
For this solution you have to add &amp;lt;code&amp;gt;sharutils&amp;lt;/code&amp;gt; to the &amp;lt;code&amp;gt;Build-Depends&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
If the package should be visible in the Application Manager, the Section field should begin with &amp;lt;code&amp;gt;user/&amp;lt;/code&amp;gt;, with the [[#Sections|valid sections listed below]]. You should also add and install a &amp;lt;code&amp;gt;.desktop&amp;lt;/code&amp;gt; file for starting the application, if one does not already exist.&lt;br /&gt;
&lt;br /&gt;
== Differences between Debian/Ubuntu and Maemo ==&lt;br /&gt;
&lt;br /&gt;
The are a couple of important differences between a Debian system and Maemo:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Busybox&#039;&#039;&#039;:&amp;lt;br/&amp;gt;Maemo uses busybox to replace most of bsdutils, coreutils, findutils and bash, therefore most of the extended options for the commands and shell are not available. Check the postinstall and other package scripts for such options and try to replace or emulate them.&lt;br /&gt;
&lt;br /&gt;
* Outdated &#039;&#039;&#039;build and configuration tools&#039;&#039;&#039;:&amp;lt;br/&amp;gt;the SDK and autobuilder provide only outdated versions of gcc, dpkg, debhelper, cdbs, debconf, ucf and other build tools. Try to replace the &amp;lt;code&amp;gt;Build-Depends&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;debian/control&amp;lt;/code&amp;gt; file with older versions or use backports like [[#Debhelper_7|debhelper7]]&lt;br /&gt;
&lt;br /&gt;
* Directories for &#039;&#039;&#039;temporary files&#039;&#039;&#039;:&amp;lt;br/&amp;gt;&amp;lt;code&amp;gt;/tmp&amp;lt;/code&amp;gt; is only 900 kB and should only be used for very small temporary files. &amp;lt;code&amp;gt;/var/tmp&amp;lt;/code&amp;gt; on the NAND is larger. A new temporary directory in &amp;lt;code&amp;gt;/home/user/&amp;lt;/code&amp;gt; could be even larger. Replace constructs like &amp;lt;code&amp;gt;${TMP-/tmp}&amp;lt;/code&amp;gt; in shell scripts with &amp;lt;code&amp;gt;${TMP-/var/tmp}&amp;lt;/code&amp;gt; (the same applies to &amp;lt;code&amp;gt;mktemp -p /tmp&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Optification&#039;&#039;&#039; may confuse programs:&amp;lt;br/&amp;gt;some programs try to find their data files relative to the binary location. Such a program stored in &amp;lt;code&amp;gt;/opt/maemo/usr/bin/program&amp;lt;/code&amp;gt; would search, for instance, in &amp;lt;code&amp;gt;/opt/maemo/usr/share&amp;lt;/code&amp;gt; while the actual data may be in &amp;lt;code&amp;gt;/usr/share&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* Installation in &amp;lt;code&amp;gt;/opt&amp;lt;/code&amp;gt;:&amp;lt;br/&amp;gt;if you want to perform manual optification (e.g. using &amp;lt;code&amp;gt;configure --prefix=/opt/package&amp;lt;/code&amp;gt;) you should store &amp;quot;none&amp;quot; in &amp;lt;code&amp;gt;debian/optify&amp;lt;/code&amp;gt; and add some to the postinst script which symlinks the binaries and libraries of the package to &amp;lt;code&amp;gt;/usr/bin&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lib&amp;lt;/code&amp;gt;, respectively.&lt;br /&gt;
&lt;br /&gt;
* Documentation:&amp;lt;br/&amp;gt;do not install documentation in &amp;lt;code&amp;gt;/usr/share/doc&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/usr/share/info&amp;lt;/code&amp;gt; - docpurge will remove it. You may install it in the &amp;lt;code&amp;gt;/opt&amp;lt;/code&amp;gt; hierarchy, however.&lt;br /&gt;
&lt;br /&gt;
= Maemo-specific packaging information =&lt;br /&gt;
&lt;br /&gt;
== Packaging policy ==&lt;br /&gt;
&lt;br /&gt;
Maemo packages follow the Debian Policy, but there are some items where Maemo:&lt;br /&gt;
* Is more strict (it is an embedded distribution)&lt;br /&gt;
* Is more relaxed:&lt;br /&gt;
** A single target device (per release)&lt;br /&gt;
** A single specified UI (Hildon)&lt;br /&gt;
** A single user&lt;br /&gt;
* Differs from Debian because Maemo has different:&lt;br /&gt;
** Objectives&lt;br /&gt;
** Maintainers&lt;br /&gt;
** Infrastructure&lt;br /&gt;
&lt;br /&gt;
Most of the specifics for Maemo packaging are outlined in the [http://maemo.org/forrest-images/pdf/maemo-policy.pdf Maemo packaging policy]. The policy is still in the draft stage, so certain parts are still incomplete or not entirely up to date.&lt;br /&gt;
&lt;br /&gt;
== Sections ==&lt;br /&gt;
&lt;br /&gt;
This is the list used in Fremantle/Maemo5 and is the same as the [http://lists.maemo.org/pipermail//maemo-developers/2008-October/035437.html final] list for Diablo as [[Task:Package_categories|discussed in the task]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Key&lt;br /&gt;
! Example English i18n&lt;br /&gt;
! Example apps&lt;br /&gt;
|-&lt;br /&gt;
| user/desktop&lt;br /&gt;
| Desktop&lt;br /&gt;
| Home, statusbar and taskbar applets&lt;br /&gt;
|-&lt;br /&gt;
| user/development&lt;br /&gt;
| Programming&lt;br /&gt;
| py2deb&lt;br /&gt;
|-&lt;br /&gt;
| user/education&lt;br /&gt;
| Education&lt;br /&gt;
| Flashcard apps&lt;br /&gt;
|-&lt;br /&gt;
| user/games&lt;br /&gt;
| Games&lt;br /&gt;
| Doom, Duke Nukem 3D&lt;br /&gt;
|-&lt;br /&gt;
| user/graphics&lt;br /&gt;
| Graphics&lt;br /&gt;
| Photo apps, GIMP, Inkscape, fonts&lt;br /&gt;
|-&lt;br /&gt;
| user/multimedia&lt;br /&gt;
| Multimedia &#039;&#039;or&#039;&#039; Sound &amp;amp; Video&lt;br /&gt;
| Canola, mplayer, Kagu, UKMP, MediaBox&lt;br /&gt;
|-&lt;br /&gt;
| user/navigation&lt;br /&gt;
| (Location &amp;amp;) Navigation&lt;br /&gt;
| maemo-mapper, Navit&lt;br /&gt;
|-&lt;br /&gt;
| user/network&lt;br /&gt;
| Internet &amp;amp; Networking&lt;br /&gt;
| Web browsers, Samba clients, OpenAFS, Transmission&lt;br /&gt;
|-&lt;br /&gt;
| user/office&lt;br /&gt;
| Office&lt;br /&gt;
| GPE, Claws, AbiWord&lt;br /&gt;
|-&lt;br /&gt;
| user/science&lt;br /&gt;
| Science&lt;br /&gt;
| gnuplot, Octave&lt;br /&gt;
|-&lt;br /&gt;
| user/system&lt;br /&gt;
| System&lt;br /&gt;
| rotation-support, enhanced kernels, themes&lt;br /&gt;
|-&lt;br /&gt;
| user/utilities&lt;br /&gt;
| Utilities &#039;&#039;or&#039;&#039; Accessories&lt;br /&gt;
| Calculators, terminals, text editors&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If the package&#039;s section starts &amp;quot;user/&amp;quot;, but is not any of the above, the &#039;&#039;Application Manager&#039;&#039; forces them into an &amp;quot;Other&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
== Maemo-specific fields ==&lt;br /&gt;
&lt;br /&gt;
There are a number of Maemo-specific package fields that are handled by Application manager. The Application manager documentation [http://hildon-app-mgr.garage.maemo.org/packaging-stable.html outlines] them.&lt;br /&gt;
&lt;br /&gt;
=== Displaying an icon in the Application Manager next to your package ===&lt;br /&gt;
&lt;br /&gt;
Displaying an icon in the Application Manager next to your package makes it look pretty and makes your package stand out, and it is not that hard to do.&lt;br /&gt;
&lt;br /&gt;
# Make an image that is &#039;&#039;&#039;48x48&#039;&#039;&#039; pixels. The image can be saved in any format that is supported by GdkPixbufLoader on Maemo, but PNG is commonly used.&lt;br /&gt;
# base64 encode the image. This can be done in many ways, depending on the platform, but assuming you are in scratchbox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
apt-get update&lt;br /&gt;
apt-get install sharutils&lt;br /&gt;
uuencode -m &amp;lt;name of 48x48 image&amp;gt; &amp;lt;name of 48x48 image&amp;gt; &amp;gt; &amp;lt;name of 48x48 image&amp;gt;.base64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# Add the field &#039;&#039;XB-Maemo-Icon-26&#039;&#039; to your &amp;lt;code&amp;gt;debian/control&amp;lt;/code&amp;gt; (in Maemo4 the size of the icons was 26x26, hence the name of the field, &#039;&#039;&#039;which has not changed&#039;&#039;&#039;)&lt;br /&gt;
# Open the base64 version of your image and copy from the line under &#039;&#039;begin-base64 644 &amp;lt;name of 48x48 image&amp;gt;&#039;&#039; to the line above the &#039;&#039;===&#039;&#039;&lt;br /&gt;
# Add this to the &#039;&#039;XB-Maemo-Icon-26&#039;&#039; field&lt;br /&gt;
# Add a space in front of every line of the encoded icon&lt;br /&gt;
&lt;br /&gt;
Here is an example of a properly formatted Maemo-Icon-26: (of wrong image size)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Description: Chess...&lt;br /&gt;
XB-Maemo-Icon-26: &lt;br /&gt;
 iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABGdBTUEAAK/INwWK6QAAABl0&lt;br /&gt;
 RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALxSURBVHja3FZNTBNREP669J/S&lt;br /&gt;
 XYxtKRWl1JOSFBIPhkitCQeNiaKBmzdj9Ggk0ZOBxHDWixcTjV6MF+WiIB40YEyMBMGYEqQK&lt;br /&gt;
 tLS2lG7pdre0pF3WtxslgJRuD2J0kpfdTN7O976Z782sRpIk7IZR2C2TGW1cv8xaY5WuXLy8&lt;br /&gt;
 iW5XV5fk8/kkr9e7ya/T6SSNRiOViikvbbmDDD590SusZBGYDiDwJbDud7vdvYIgIJfLYXV1&lt;br /&gt;
 tSwhrQrSfRX6/26N/j+gkjW6ce06HE4HGEctGuj9oEwUzFYz5ubmEA6HQVEUisUi8vn8b4rd&lt;br /&gt;
 zjRbNxCZrr+3t7XTzjrnvMfdxMi7xj6OIRaPIbWcQjabVdRWKBTkrX4SZ2SjvCtKXf+tkxxD&lt;br /&gt;
 M5MetwfHj/lwwueHy+WCVqvdehdHKq7R6JvbpfNMAGiGhs1mg9ls3sS+4hodbDqCwef9mA9P&lt;br /&gt;
 7vhhVVWV3BGUOomiaCSufEWMxNwimlweMFYbpoMfyp70J6t8xanLZgWs8Ak07N0Hau0P3qOs&lt;br /&gt;
 wIHnl5FJx2E1WlUFuXrzIS713KusRplMCoLAgl2O4N34ODQ4VRaot6cbUzMRNNQ/w/uJWXWM&lt;br /&gt;
 eH5JARkYHsLQMIe1NZEpB7Sn1uKFhkL3maO4cL5NHVAo+hkPnrzEq2HqQIf/3ICzvr7FXmeH&lt;br /&gt;
 3qBXlslkgtFoVBS3YfbcKRRFfJpagE6vUwd0//FbjI7mkcvnGoNfg51ORx3sNju+hWYxMxsk&lt;br /&gt;
 jHlF2jJgdXU1DAaDrDx/kQAVRREJlldXo8kJoPlQ8wHSevosFgs5MmE5H0IingDP8eAzPAQC&lt;br /&gt;
 tkJakDz05Hsks+poPzwg6+Luo9chVb2O3Hilv7V6W5nO02cVX3wxjsj3CMKRBUSjUcQWY0iy&lt;br /&gt;
 SQVoi6XJaiQxubKpI02yj2xk6BoaBr0BqXRKCZpYSiCZlIXCguM4pWtvY0ypyUtt87PSIj/t&lt;br /&gt;
 pJ/JICzLKiBLySTYVArpdFrp3DuMhRZVqfvnJ+wPAQYA1hdr5EDqltYAAAAASUVORK5CYII=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Bugtracker location ===&lt;br /&gt;
&lt;br /&gt;
As a requirement for your package being promoted from [[Extras-testing]] to [[Extras]], your &amp;lt;code&amp;gt;debian/control&amp;lt;/code&amp;gt; file must have a link to a bugtracker. It is possible to [[Bugs:Adding Extra products|request a component at bugs.maemo.org]] or use a [[Getting_started_with_Maemo_Garage#Trackers_and_tasks|Garage project bugtracker]], or even an email address.&lt;br /&gt;
&lt;br /&gt;
# Add the field ‘XSBC-Bugtracker’ to your debian/control, for example:&amp;lt;br/&amp;gt;&amp;lt;pre&amp;gt;XSBC-Bugtracker: https://bugs.maemo.org/enter_bug.cgi?product=mypackage&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Pretty names ===&lt;br /&gt;
&lt;br /&gt;
A package can specify a pretty name for itself. This name is displayed in the Application manager UI instead of the real package name.&lt;br /&gt;
&lt;br /&gt;
The pretty name is specified with the &#039;&amp;lt;code&amp;gt;XSBC-Maemo-Display-Name&amp;lt;/code&amp;gt;&#039; field in your &amp;lt;code&amp;gt;debian/control&amp;lt;/code&amp;gt; file, for example:&lt;br /&gt;
 XSBC-Maemo-Display-Name: My package name&lt;br /&gt;
&lt;br /&gt;
=== Maemo revision string ===&lt;br /&gt;
&lt;br /&gt;
If an upstream package is re-packaged or modified for Maemo, the Maemo revision string should be appended to the upstream revision, in the &amp;lt;code&amp;gt;debian/changelog&amp;lt;/code&amp;gt; file. So if in Debian the package name was something like &amp;quot;Myapp-0.4-2&amp;quot; in maemo this package will be called &amp;quot;Myapp-0.4-2maemo0&amp;quot;. The number after the &amp;quot;maemo&amp;quot; string is a progressive number.&lt;br /&gt;
&lt;br /&gt;
== Debhelper 7 ==&lt;br /&gt;
&lt;br /&gt;
A backport of Debhelper 7 for Fremantle is available in extras-devel. It works transparently and can coexist with debhelper 5 in the SDK. It even works on the autobuilder, if the package specifies the correct build-dependency of &amp;lt;code&amp;gt;debhelper7&amp;lt;/code&amp;gt;. The following lines in &amp;lt;code&amp;gt;debian/rules&amp;lt;/code&amp;gt; are necessary to use the new debhelper:&lt;br /&gt;
&lt;br /&gt;
 PATH:=/usr/bin/dh7:/usr/bin:$(PATH)&lt;br /&gt;
 export PATH&lt;br /&gt;
 SBOX_REDIRECT_IGNORE=/usr/bin/perl&lt;br /&gt;
 export SBOX_REDIRECT_IGNORE&lt;br /&gt;
&lt;br /&gt;
Further information about the updated debhelper is available at [[User:Tanner#debhelper7]].&lt;br /&gt;
&lt;br /&gt;
If you also need a more recent [http://build-common.alioth.debian.org/ CDBS], then use the package [http://maemo.org/packages/view/cdbs-dh7/ cdbs-dh7], which conflicts with the standard CDBS and does not work on autobuilder yet.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can try to use debhelper 5. Debian packages that require level 7 need some changes, for example:&lt;br /&gt;
* debian/compat: 7 -&amp;gt; 5&lt;br /&gt;
* debian/control: Build-Depends: debhelper (&amp;gt;= 7) -&amp;gt; debhelper (&amp;gt;= 5)&lt;br /&gt;
* Possibly, comment out a few dh_* calls from debian/rules, which might not exist on level 5&lt;br /&gt;
&lt;br /&gt;
Things might get complex if the packaging already uses some new features of level 7, like CDBS-style helper rules. In such cases, looking at versions of packages written prior to the compatibility level upgrade might help doing the downgrade (and most Debian packages are kept in public SCMs like svn.debian.org).&lt;br /&gt;
&lt;br /&gt;
[[Category:Packaging]]&lt;/div&gt;</summary>
		<author><name>84.155.215.92</name></author>
	</entry>
</feed>