MADDE/Packaging

(New page: ===Introduction=== This guide explains how to take a simple Qt application and compile it so that it deploys to the N900 with an Icon.)
(Introduction)
Line 1: Line 1:
===Introduction===
===Introduction===
-
This guide explains how to take a simple Qt application and compile it so that it deploys to the N900 with an Icon.
+
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 [http://wiki.maemo.org/MADDE/Device_runtime]) 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>

Revision as of 18:53, 19 January 2010

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>