MADDE/Packaging

Introduction

This guide explains how to take a simple Qt application and compile it so that it deploys to the N900 with an Icon. It is supposed to be step by step guide on how to take a (simple) Qt app and package and deploy it with an Icon using Madde.

Prerequisites

The project I have is simple, 1 window called mainwindow.

Note: As a convention I like to keep all my code together, so I have created any extra files in the "src" folder.

Steps

1. Create project through Madde

2. Edit and test with QT Creator

3. Once ready to deploy create a clean empty top level folder "<projectname>-0.x" where x is your revision number e.g. "c:\Madde\0.5\home\shep\wwcalc-0.1"...In the OS Note: the following 3 steps apply each time you go to build.

 3.1 ensure there is no "debian" folder at the same level as "src" 
 3.2 ensure there is no folder structure called "<projectname>-0.x-orig" left over from a failed compile
 3.3 remove old compiles from the Madde\home\user (e.g. C:\Madde\0.5\home\Shep) folder.

4. Copy the "src" folder from the tested Qt project into the "<projectname-0.x" folder

5. Create (or obtain) an application Icon. This should be a 64x64 png. Call it <projectname>.png and place it in the "src" folder.

6. Again inside the "src" folder create a new file called "<projectname>.desktop" Code:

 [Desktop Entry]
 Encoding=UTF-8
 Version=0.x
 Type=Application
 Name=<Long Descriptive Project Name>
 Exec=/usr/bin/<projectname>
 Icon=<projectname>
 X-HildonDesk-ShowInToolbar=true
 X-Osso-Type=application/x-executable

7. Again inside the "src" folder create a new file called "<projectname>.service" which looks like this. Code:

 [D-BUS Service]
 Name=org.maemo.<projectname>
 Exec=/usr/bin/<projectname>

8. Inside the "src" folder added a file called "src.pro". Getting this right is the key to getting the Makefile correct and hence the install working. At the end of this file there is a section called "INSTALLS += "...for every file you want installed in a location you need an entry here. Code:

 TARGET = wwcalc
 TEMPLATE = app
 SOURCES += qtmain.cpp \
     mainwindow.cpp 
 HEADERS += mainwindow.h 
 FORMS += mainwindow.ui 
 PREFIX = ../debian/wwcalc/usr
 
 unix {
 BINDIR = $$PREFIX/bin
 DATADIR =$$PREFIX/share
 
 DEFINES += DATADIR=\"$$DATADIR\" PKGDATADIR=\"$$PKGDATADIR\"
 
 #MAKE INSTALL
 
 INSTALLS += target desktop icon64 service
 
   target.path =$$BINDIR
 
   desktop.path = $$DATADIR/applications/hildon
   desktop.files += wwcalc.desktop
 
   icon64.path = $$DATADIR/icons/hicolor/64x64/apps
   icon64.files += wwcalc.png
   
   service.path = $$DATADIR/usr/share/dbus-1/services
   service.files += wwcalc.service
 
 }

9. Up one level and inside the new top level folder (i.e. "c:\Madde\0.5\home\<YOU!>\<projectname>-0.x" ) created a file called "<projectname>.pro" with the following exact contents. Code:

 TEMPLATE = subdirs
 SUBDIRS  = src

10. In Madde make sure the runtime is up and connectible (described [1]) and then execute. Code:

 mad dh_make --createorig --single -e foo.bar@gmail.com -c gpl

11. (Not needed if you are on 1.1 or higher). Step 10 creates a debian folder at the root level, Go there and edit the "postinst.ex" file. Code:

 #!/bin/sh
 # postinst script for <projectname>
 #
 # see: dh_installdeb(1)
 
 gtk-update-icon-cache -f /usr/share/icons/hicolor
 
 #maemo-select-menu-location <projectname>.desktop
 
 exit 0

12. Again in Madde Code:

 mad qmake
 mad dpkg-buildpackage
 mad remote -r org.maemo.<projectname> send ../<packagename>_0.x-1_armel.deb
 mad remote -r org.maemo.<projectname> install <projectname>_0.2-1_armel.deb

13. Uninstalling - from an X_Terminal. Code:

 sudo gainroot
 dpkg -r <projectname>