MADDE/Packaging: Difference between revisions

From Maemo Wiki
Jump to navigationJump to search
set PREFIX in install section
imported>amigadave
Steps: use a list and <code>
Line 11: Line 11:


=== Steps ===
=== Steps ===
1. Create simple project through MADDE.
  mad pscreate -t qt_simple projectname


2. Edit and test with QT Creator (or whatever your favorite tool is).
<ol>
<li>Create simple project through MADDE.
  mad pscreate -t qt_simple projectname</li>


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  
<li>Edit and test with Qt Creator (or whatever your favorite tool is).</li>
 
<li>Once ready to deploy create a clean empty top level folder <code><projectname>-0.x</code> where <code>x</code> is your revision number, for example <code>C:\Madde\0.5\home\shep\wwcalc-0.1</code> in the OS  
'''Note: the following 3 steps apply each time you go to build.'''
'''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"
   <ol><li>ensure there is no <code>debian</code> folder at the same level as <code>src</code></li>
   3.2 ensure there is no folder structure called "<projectname>-0.x-orig" left over from a failed compile
   <li>ensure there is no folder structure called <code><projectname>-0.x-orig</code> left over from a failed compile</li>
   3.3 remove old compiles from the Madde\home\user (e.g. C:\Madde\0.5\home\Shep) folder.
   <li>remove old compiles from the <code>Madde\home\user</code>, for example <code>C:\Madde\0.5\home\Shep</code> folder.</li></ol></li>


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


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


6. Again inside the "src" folder create a new file called "<projectname>.desktop"
<li>Again inside the <code>src</code> folder create a new file called <code><projectname>.desktop</code>
Code:
Code:
  [Desktop Entry]
<pre>
  Encoding=UTF-8
[Desktop Entry]
  Version=0.x
Encoding=UTF-8
  Type=Application
Version=0.x
  Name=<Long Descriptive Project Name>
Type=Application
  Exec=/usr/bin/<projectname>
Name=<Long Descriptive Project Name>
  Icon=<projectname>
Exec=/usr/bin/<projectname>
  X-HildonDesk-ShowInToolbar=true
Icon=<projectname>
  X-Osso-Type=application/x-executable
X-HildonDesk-ShowInToolbar=true
X-Osso-Type=application/x-executable
</pre></li>


7. 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. In the example here we install the target, icon and desktop files.
<li>Inside the <code>src</code> folder added a file called <code>src.pro</code>. 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 <code>INSTALLS += ...</code> for every file you want installed in a location you need an entry here. In the example here we install the target, icon and desktop files.
Code:
Code:
  TARGET = wwcalc
<pre>
  TEMPLATE = app
TARGET = wwcalc
  SOURCES += qtmain.cpp \
TEMPLATE = app
      mainwindow.cpp  
SOURCES += qtmain.cpp \
  HEADERS += mainwindow.h  
    mainwindow.cpp  
  FORMS += mainwindow.ui  
HEADERS += mainwindow.h  
  PREFIX = ../debian/wwcalc/usr
FORMS += mainwindow.ui  
 
PREFIX = ../debian/wwcalc/usr
  unix {
 
  PREFIX = /usr
unix {
  BINDIR = $$PREFIX/bin
PREFIX = /usr
  DATADIR =$$PREFIX/share
BINDIR = $$PREFIX/bin
 
DATADIR =$$PREFIX/share
  DEFINES += DATADIR=\"$$DATADIR\" PKGDATADIR=\"$$PKGDATADIR\"
 
 
DEFINES += DATADIR=\"$$DATADIR\" PKGDATADIR=\"$$PKGDATADIR\"
  #MAKE INSTALL
 
 
#MAKE INSTALL
  INSTALLS += target desktop icon64  
 
    
INSTALLS += target desktop icon64  
    target.path =$$BINDIR
 
    
   target.path =$$BINDIR
    desktop.path = $$DATADIR/applications/hildon
 
    desktop.files += wwcalc.desktop
   desktop.path = $$DATADIR/applications/hildon
    
  desktop.files += wwcalc.desktop
    icon64.path = $$DATADIR/icons/hicolor/64x64/apps
 
    icon64.files += wwcalc.png
   icon64.path = $$DATADIR/icons/hicolor/64x64/apps
  }
  icon64.files += wwcalc.png
}
</pre></li>


8. Up one level and inside the top level folder (i.e. "c:\Madde\0.5\home\<YOU!>\<projectname>-0.x" ) create a file called "<projectname>.pro" with the following exact contents.
<li>Up one level and inside the top level folder (that is,  <code>C:\Madde\0.5\home\<YOU!>\<projectname>-0.x</code> ) create a file called <code><projectname>.pro</code> with the following exact contents.
Code:
Code:
  TEMPLATE = subdirs
<pre>
  SUBDIRS  = src
TEMPLATE = subdirs
SUBDIRS  = src
</pre></li>


10. In Madde make sure the [[MADDE/Device runtime|runtime is up and connectible]] and then execute.
<li>In Madde make sure the [[MADDE/Device runtime|runtime is up and connectible]] and then execute.
Code:
Code:
  mad dh_make --createorig --single -e foo.bar@gmail.com -c gpl
<pre>
  *** Several people have commented that mad qmake is not required, but I find there are times that it is, igonre this next line if you wish ***
mad dh_make --createorig --single -e foo.bar@gmail.com -c gpl
  mad qmake
</pre>
  mad dpkg-buildpackage
''Several people have commented that mad qmake is not required, but I find there are times that it is, ignore this next line if you wish''
  mad remote -r org.maemo.<projectname> send ../<projectname>_0.x-1_armel.deb
<pre>
  mad remote -r org.maemo.<projectname> install <projectname>_0.x-1_armel.deb
mad qmake
mad dpkg-buildpackage
mad remote -r org.maemo.<projectname> send ../<projectname>_0.x-1_armel.deb
mad remote -r org.maemo.<projectname> install <projectname>_0.x-1_armel.deb</pre></li>


11. Uninstalling - from an X_Terminal.
<li>Uninstalling - from an X_Terminal.
Code:
Code:
  sudo gainroot
<pre>
  dpkg -r <projectname>
sudo gainroot
dpkg -r <projectname></pre></li>


== Additional information ==
== Additional information ==

Revision as of 10:16, 4 June 2010

MADDE is currently a technology preview.

These instructions are liable to change as development progresses. If some of the components do not work as expected, please add your question to the MADDE talk thread and follow up the discussion.

tablets-dev.nokia.com is down, see MADDE#Installation for alternatives.


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 simple project through MADDE. mad pscreate -t qt_simple projectname
  2. Edit and test with Qt Creator (or whatever your favorite tool is).
  3. Once ready to deploy create a clean empty top level folder <projectname>-0.x where x is your revision number, for example C:\Madde\0.5\home\shep\wwcalc-0.1 in the OS Note: the following 3 steps apply each time you go to build.
    1. ensure there is no debian folder at the same level as src
    2. ensure there is no folder structure called <projectname>-0.x-orig left over from a failed compile
    3. remove old compiles from the Madde\home\user, for example 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. 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. In the example here we install the target, icon and desktop files. Code:
    TARGET = wwcalc
    TEMPLATE = app
    SOURCES += qtmain.cpp \
        mainwindow.cpp 
    HEADERS += mainwindow.h 
    FORMS += mainwindow.ui 
    PREFIX = ../debian/wwcalc/usr
    
    unix {
    PREFIX = /usr
    BINDIR = $$PREFIX/bin
    DATADIR =$$PREFIX/share
    
    DEFINES += DATADIR=\"$$DATADIR\" PKGDATADIR=\"$$PKGDATADIR\"
    
    #MAKE INSTALL
    
    INSTALLS += target desktop icon64 
    
      target.path =$$BINDIR
    
      desktop.path = $$DATADIR/applications/hildon
      desktop.files += wwcalc.desktop
    
      icon64.path = $$DATADIR/icons/hicolor/64x64/apps
      icon64.files += wwcalc.png
    }
    
  8. Up one level and inside the top level folder (that is, C:\Madde\0.5\home\<YOU!>\<projectname>-0.x ) create a file called <projectname>.pro with the following exact contents. Code:
    TEMPLATE = subdirs
    SUBDIRS  = src
    
  9. In Madde make sure the runtime is up and connectible and then execute. Code:
    mad dh_make --createorig --single -e foo.bar@gmail.com -c gpl
    

    Several people have commented that mad qmake is not required, but I find there are times that it is, ignore this next line if you wish

    mad qmake
    mad dpkg-buildpackage
    mad remote -r org.maemo.<projectname> send ../<projectname>_0.x-1_armel.deb
    mad remote -r org.maemo.<projectname> install <projectname>_0.x-1_armel.deb
  10. Uninstalling - from an X_Terminal. Code:
    sudo gainroot
    dpkg -r <projectname>
  11. Additional information