Planet INdT

February 07, 2010

Igor Oliveira

OpenVG whatz up?

KDE has been used SVG images for Themes for a long time. So i begun to have an interest in how i could optimize it and look in OpenVG. The OpenVG definition by Khronos is: Cross-platform API that provides a low-level hardware acceleration interface for vector graphics libraries such as Flash and SVG. OpenVG has many low [...]

by Igor Trindade Oliveira at February 07, 2010 05:05 PM

February 05, 2010

Francisco Alecrim

Preparing Mamona 0.3 - sync with OpenEmbedded (alpha)

Hi folks,

After a long time working on internal projects, we got time to work on Mamona development. The main goal is get it working on OpenEmbedded.git tree and use OE directly.

Main contributions in our patches:

* Linux-omap kernel 2.6.29 working fine N800 and N810

* N8×0 Wlan working with opensource driver(stlc45xx)

* N810 sound working with opensource driver (OMAP ASoC) and ALSA changes

* N810 with Fn key working correctly

* Xserver-kdriver-xomap - xserver-kdrive with custom changes to n8×0

* Linux-omap kernel  2.6.30 to Nokia 770 (unstable)

* Mplayer-Maemo - Mplayer with custom changes to n8×0

* Eve - Web browser based on Webkit-EFL

* Basic SDK chroot (use mamona-chroot)

* Ofono - Open Source telephony

* Antico - lightweight window manager based on Qt X11

* Others minor changes.

Current development:  http://gitorious.org/mamona

I created flashable images that are available on HERE.

Platform developers can use this quick howto to build Mamona latest version.

Now it’s time to review changes and submit to Openembedded.

You can see more pictures and videos of Mamona with N810 using the links

* More pictures of Mamona 0.3 (alpha)

* Videos:

by Francisco Keppler Silva Alecrim at February 05, 2010 10:46 PM

February 04, 2010

Morpheuz

…not so long after all

After all the stuff that happened in my professional and personal life last month we can extract some technical bits :)

First of all, during Camp KDE it was awesome to talk to people like Jos, Celeste, Alexandra, Till, Leo and Jeff (and many others). It’s good to share your thoughts with many people that you just don’t have this big bandwith for chat that you have when you’re physically together :)

Our awesome dragons :P

Our awesome dragons :P

I spent last month studying and working with QML, trying to get the most of it and I think that I (and the team that I work with of course) reached a very good level of knowledge regarding the new Qt’s declarative language. We have some expertise with declarative languages for some time now (started with Edje three years ago) and went through QEdje and now we have a proper Qt solution for this that will probably be released with Qt 4.7.

QML is awesome. Big tip: just try to avoid “leaking” code from your c++ controllers and models and you’ll get any interface that your designers want for free :) . We achieved very good results working with this architecture for software and I really recommend it for everybody (I’m not talking about this right now as it can be a whole paper – hmm, maybe a paper for next Akademy ? ;) ).

Alexis showing QML mobile shell on N900

Alexis showing QML mobile shell on N900

Ok, so after studying QML and talking a lot with Alexis and others (like Helio) we had great ideas to try out on mobile devices (read N900 here). Let’s see what we can do during tokamak 4. Good to read Aaron’s post about it and to know that he’s excited with this possibility too. I talked about this during my talk at Latinoware conference and right now we can expand and make “my dreams” come true. We have really good use cases for this and we should really focus on this at first. We need help from designers (Nuno and oxygen team?) and usability experts (Celeste, here I am again – I know you should hate me every time I say your name under this circumstances hehe :P ). The design of this kind of product should be the first step after studying technologies.

Talking about KDE: for KDE 4.5 I’m really going to change the pastebin applet. Feature-wise it’s really in good shape but it’s not very healthy code-wise and we can really improve it and it’s data engines to something more user friendly and also that can be easily improved with the use of plugins (anybody thinking about service providers and GHNS ?). First of all, it’s not user friendly to call it “pastebin”. My mom have no clue what pastebin is. For sure she knows what “Share it” means and we can make use of KIPI plugins to allow it to export things to Flickr and other services too. So, for 4.5 expect some big improvements on the developer side of pastebin. From a user’s perspective it should just have a better config dialog, interface and will have support for much more services :) (at least I hope so).

Just upgraded to trunk (KDE SC 4.5) and it already looks awesome: from the KDE theme to the new notification messages that Marco is working on. Amarok (as always) had (good) surprises for me and this “Photo” widget is awesome. It ties together the awesome experience of one of your senses (audition) to another sense (vision) and it’s awesome. Great pictures from my favorite artists and songs. Amarok++.

Amarok and new Photo Widget

Amarok and new Photo Widget

Right now, I want to work on so many cool stuff and I just don’t have the time. Probably work is going to consume most of my time for the next 2 months but I’ll make it work and will help KDE to get even better and to start working on Maemo for example. Konquer the world!

Ah, as a simple tip: if you own an N900 just install the “Angry birds” game, it’s awesome hehe :)

going-to-tokamak4

by morpheuz at February 04, 2010 02:40 AM

A long time ago…

Well, it has been a long time since my last post and a lot of stuff happened during that, specially regarding work and that explains a little bit why I was so “offline” last days (month).

It all started when I received my N900 from Maemo’s developer program that is just awesome as it gives the opportunity for developer to have access to the platform and keep developing for it. Comparing to other options: for some fruit company’s platform you have to pay to develop for a closed platform and for other you receive devices to develop to an open platform.  Big kudos to Nokia for everything it’s doing with Maemo.

Regarding Maemo, I used my N900 in the last month on all business trips that I did and the vision of having contacts instead of accounts really made a difference. It was so easy to use Skype or my SIP provider (Inphonex) while I was out of the country that my mobile phone just worked as it should always work: as a personal extension of my home phone. Perfect.

So, the trips began with Camp KDE and I went to Los Angeles one week before the conference itself as I had some days to take as vacations. It was really great, from watching a live record of one of my favourite TV shows (Two and a Half men) to watching all the amazing talks during Camp KDE it was all great. I would like to also send some kudos to Camp KDE organizers. I know how hard it is to actually make an event like that happen.

The gate where the show was recorded

The gate where the show was recorded

After Camp KDE I just had three days at home and then went to Oslo/Tampere for Qt work and it was really great to actually see snow for the second time. First time I’ve ever seen it snowing actually (the first time I needed to go up to a mountain last Tokamak hehe – thanks Marius for the chance!! it was awesome).

During this trips I had some ideas regarding mobile platforms and discussed a little bit of it during my talk at Camp KDE and also with Alexis Menard (former Troll). I think that for Tokamak 4 we’re going to have some nice ideas to work on for mobile platforms. It’s important to say that this is all at “pre-pre-pre-pre beginning stage” and that we have a lot of work to be done on the Netbook effort for example that Marco is taking care in an awesome way :)

Back to reality I have some work to be done and we are already setting things up for Bossa Conference. So I have Carnival, Tokamak 4 and Bossa Conference in a row. And still job to be done…well, I think I can handle that ;)

Bossa Conference

Bossa Conference

So, this is all that happened last month (trust me, a lot happened) and next post will be a little more technical or at least more KDE related and for sure I’ll have some more Maemo related posts in the (very) near future (specially after Tokamak 4).

going-to-tokamak4

by morpheuz at February 04, 2010 02:13 AM

February 02, 2010

Anderson Lizardo

Python tutorial: Accessing APIs without Python bindings


The PyMaemo team has prepared a short tutorial with an actual example on how to access APIs for which there are no Python bindings yet. libosso-abook was used as an example, but in practice, you can access any C libraries using the same approach. This technique can be used while we do not finish implementing the full Maemo API.

Enjoy. :)

by lizardo at February 02, 2010 01:44 PM

February 01, 2010

Ian Lawrence

Liquid Update

Even after the long session at UDS it took us some more time and lots more caffeine to get Liquid finally down on the wiki. We thought we were the crazy mobile heads until Adenilson showed up at one meeting raving about plasma mobile!.

After this the major tasks came down to packaging plasma mobile and modifying kwin and kdm for a mobile device.These are the most important things we need to do before Feature Freeze in mid February. We also of course need to do the meta package, default-settings and work on the theme but we can do this right up to the Lucid release of Liquid

I have been travelling and otherwise occupied since UDS so have not had as much time as I would like to hack on this.

Luckily Rodrigo wanted to 'tocar a bola' for a while and he has been working with the rest of the Ubuntu Mobile team on some fancy liquid moves. This included setting up an icecc compile farm which meant that today we managed to finally get plasma-mobile compiled, packaged and put up on REVU for some feedback. The obligatory screenshot on Ubuntu Lucid is here

Any designers looking at this screenshot will I imagine have lots of ideas about how this 'user experience' could be improved. The nice thing about plasma is that according to Caio the whole interface can be changed very easily using just a qml template. If you feel excited by this then join the Liquid Hackers team on Launchpad or if you feel really inspired come to the Bossa in the Jungle in March where more mobile madness is sure to go down.

by vern at February 01, 2010 12:40 AM

January 28, 2010

Antonio

Animating the Web(Kit)

After the landing of QGraphicsWebView implementation (in summary, a mimic of QWebView widget but for the QGraphicsView world) in WebKit trunk, your creativity is your guide :-)

A week ago, I tried to quickly exercise what it is up to, and inspired in Kent's flipin widget idea, I got some cool rotation effects on the Web content. See the (amateur) show off below:



Nice stuff thanks to Qt and its QGraphicsView and QStateMachine flexibility.


--
--Antonio Gomes

by Antonio (tonikitoo@gmail.com) at January 28, 2010 09:16 AM

January 27, 2010

Anderson Lizardo

Installing Qt for Symbian SDK 4.6.1 on Linux


Update (2010-01-27): New version of Qt installer (v2).

Qt 4.6.1 was released last Tuesday, so I took some time to update my Linux support patches for Qt (which are now merged in qt-s60 tree and hopefully will be in main Qt tree at some point) and GnuPoc (which, thanks to Martin, are now integrated into the latest release).

I had a couple of previous posts detailing instructions on how to install the SDK on Linux, but after some time, it became too boring to run those commands manually, and some people asked for a script. So, from now on, I will provide two installers to make the process much more automated and simple: one installer for GnuPoc + Open C/C++ plugin, and another for the Qt for Symbian SDK.

Note that currently the GnuPoc installer handles only the S60 5.0 SDK. If someone is interested on a 3.1 SDK installer let me know so I can add support for it too.

Preparation

Download all required files to a single directory (e.g. “~/downloads”):

For building the native tools from gnupoc, you will need:

  • the GCC C/C++ compilers
  • development files for zlib
  • development files for openssl

On Ubuntu, you can install these using the following command:

sudo apt-get install build-essential zlib1g-dev libssl-dev

Installation

First, install GnuPoc + S60 5.0 SDK + the Open C/C++ plugin:

./gnupoc_1.15_S60_5.0_installer_v1.sh \
    <download-dir> \
    <gnupoc-dir>

Replace <download-dir> with the location of all files downloaded in previous section (e.g. “~/downloads”), and <gnupoc-dir> with the destination directory for GnuPoc and the SDK files (e.g. “~/gnupoc”). Note that both directories must have absolute paths.

If installation was successful, you should see an output like:

Installation has finished. Before using the GnuPoc SDK, run these commands on the console:
 
export PATH=<gnupoc-dir>/bin:$PATH
export EPOCROOT=<gnupoc-dir>/symbian-sdks/5.0/ # trailing "/" is required!
 
(These commands must be run again every time a new console is opened.)

Run the commands as instructed on the message. Next, install Qt for Symbian:

./qt_for_symbian_4.6.1_linux_installer_v2.sh \
    <download-dir> \
    <qt-s60-dir>

Replace <download-dir> with the location of all files downloaded in previous section (e.g. “~/downloads”), and <qt-s60-dir> with the destination directory for the Qt files (e.g. “~/gnupoc/qt-4.6.1″). Note that both directories must have absolute paths.

If installation was successful, you should see an output like:
Installation has finished. Before using the Qt for Symbian SDK, run this command on the console:
 
export PATH=<qt-s60-dir>/bin:$PATH
 
(This command must be run again every time a new console is opened.)

Before using Qt for Symbian, you should run the command as instructed on the message above.

Usage example

To test the installation, I will describe how to build the “colliding mice” example.

  1. cd into the example source:
  2. cd <qt-s60-dir>/examples/graphicsview/collidingmice/

  3. Open collidingmice.pro and replace these two lines:
  4.     TARGET.UID3 = 0xA000A643
        include($$QT_SOURCE_TREE/examples/symbianpkgrules.pri)

    with:
        TARGET.UID3 = 0xE000A643
    In other words: replace the UID3 “0xA000A643″ with “0xE000A643″ and remove (or comment out) the “include(…)” line. This will allow to sign the built SIS file using a self-signed certificate, otherwise you would need a R&D certificate.

  5. Now build the example and generate the SIS file
  6. qmake
    make debug-gcce
    make sis

A few notes:

  • Only the “debug-gcce” (if you are using the GCCE toolchain AKA “CodeSourcery toolchain”) or “debug-armv5″ (if you are using RVCT) will work, because the 4.6.1 release only ships debug versions of the libraries
  • Make sure you do similar changes as described above if you want to try compiling other Qt examples. Otherwise, you will receive errors like “Unable to install” while trying to install the SIS file on the phone.

by lizardo at January 27, 2010 04:38 AM

January 26, 2010

Bruno Araujo

Using an TV as secondary screen via HDMI – 1

If you have a fancy HD television and a box with a HDMI port, it’s (kinda) easy to setup your TV as a secondary monitor at full resolution, with audio support. Needless to say, it’s great for watch all those HD movies in a big TV instead of staring at your monitor or a small netbook screen :-)

First, the video. Run xrandr and see which devices you have available. My Acer AS1410-8414 running Arch Linux gives this output:

Screen 0: minimum 320 x 200, current 3286 x 1080, maximum 8192 x 8192
VGA1 disconnected (normal left inverted right x axis y axis)
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 256mm x 144mm
1366x768 60.0*+
1024x768 85.0 75.0 70.1 60.0
832x624 74.6
800x600 85.1 72.2 75.0 60.3 56.2
640x480 85.0 72.8 75.0 59.9
720x400 85.0
640x400 85.1
640x350 85.1
HDMI1 connected 1920x1080+1366+0 (normal left inverted right x axis y axis) 698mm x 392mm
1920x1080 50.0*+ 60.0
1280x720 60.0 50.0
720x576 50.0
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)
TV1 disconnected (normal left inverted right x axis y axis)

The GPU is a Intel GMA 4500MHD, by the way. LVDS1 is the default LCD screen and HDMI1 the port I’m using. So, to maintain your current screen and create a new one in the TV, run:

xrandr --output HDMI1 --auto --output LVDS1 --auto --left-of HDMI1

This will output a screen on the TV with automatic resoution (1920×1080, in my case), and also keep the current one in the laptop screen at the left side of the TV. Different GPUs have different ways of doing the same thing – in a laptop with a Quadro NVS 140M I was able to use nvidia-settings to configure a second monitor, even having the option of a unified desktop using TwinView (the same effect attained here) or two separate X screens. I suspect ATI-based GPUs have a fancy GUI program as well.

In a next post I’ll explain how to easily redirect the audio to the HDMI port using PulseAudio, if your system insists on outputting sound through your computer speakers. In this case, you could just use a cable with a 3.5mm plug in each end, but why waste plastic and metal when your powerful HDMI cable can transport sound too?

P.S.: I tried to watch a sample from the Apple QuickTime HD Gallery , but my netbook’s Core2 Solo 1.4GHz just doesn’t have what it takes to watch 1080p in all its glory. Meh :P

by baraujo at January 26, 2010 03:15 AM

January 22, 2010

Ademar de Souza Reis Jr.

15 dias de Google Chrome: de volta ao Firefox

Seguindo o hype e o movimento de mudança de vários amigos e da internerds, resolvi experimentar o Chrome como meu browser principal. Migrei as abas abertas, fechei o firefox e deixei apenas o novo navegador do google no meu desktop (na verdade utilizei o Chromium, versão opensource do Google Chrome, como disponibilizado para o Fedora Linux 12).

No início fiquei muito impressionado com a velocidade do Chrome e me senti de certo modo aliviado em deixar o Firefox. Repeti algumas vezes pra quem estava próximo: “o Firefox está com os dias contados, não tem a mínima chance”.

Mas depois de 15 dias, estou voltando pro Firefox 3.5. Os ganhos em velocidade do Chrome não foram suficientes pra compensar as inconveniências e a (falta das) boas extensões do concorrente. O navegador do Google ainda tem que amadurecer um pouco até se tornar o browser definitivo.

O que eu gostei no Chrome:

  • Rápido, muito rápido. Da inicialização aos sites carregados de java-script, o Chrome dá de lavada no Firefox;
  • A ideia de um processo por aba/extensão e o isolamento entre eles me agrada;

Existem outras características e mudanças que são boas, mas que não fizeram diferença considerável no uso do browser.

Os principais inconvenientes, em ordem de prioridade:

O que eu aprendi com essa experiência é que, contrário do que eu achava originalmente, trocar um browser não é tão simples como parece e o Chrome ainda tem muito chão pela frente até se tornar um browser maduro. Além disso também não vejo mais o Chrome como uma ameaça tão séria ao Firefox: levará pelo menos mais um ano até ele se tornar tão usável quanto e, até lá, quem sabe o Firefox 4.0 já esteja nas ruas incorporando suas principais características positivas.

De qualquer modo, é bom ver o aparecimento de uma nova “guerra dos browsers”. Tomara que dessa vez não haja um vencedor.

Posts possivelmente relacionados:

  1. Primeiros dias de trabalho em Angola
  2. De volta ao Brasil
  3. De volta ao trabalho


Link Permanente | Nenhum comentário
Post tags: , ,

by ademar at January 22, 2010 12:12 PM

Adenilson Cavalcanti

God bless America!


Yesterday, people attending camp KDE decided to give a break and go to Stone Brewing Co (that deserves a post for itself!) and later we went to Fry’s electronics. While in our way to there, I noticed a Gamestop store and Ian Monroe saved my day by making a stop in the place (thank you very much man!). :-)

Thanks to the fact that Nintendo Wii is backward compatible (i.e. it plays gamecube games), I have being trying to find some ‘old’ Gamecube titles (and searched in 4 different gamestop stores in San Francisco around a year ago): Soul Calibur II, Crazy Taxi and Eternal Darkness. The last one is *specially* difficult to find, since was one of the premiere games of Gamecube.

And guess what? I finally found it!

by savago at January 22, 2010 04:24 AM

January 21, 2010

Anderson Lizardo

Installing Qt for Symbian on Linux


*** These instructions have been superseded by the GnuPoc and Qt for Symbian unofficial installers, described in this post***

 

Update (2009-09-24): Add workaround for GCCE issue.
Update (2009-10-05): Update gnupoc patch to apply against 20091005 snapshot. Remove workarounds from “Known Issues” sections that are already integrated into new patch.
Update (2009-10-07): Add instruction for installing gnupoc build dependencies.
Update (2009-10-23): New patch version (v9), that now applies cleanly to latest snapshots.
Update (2009-11-17): New patch version (v10), now applies against the 4.6.0 RC1 release.

In a previous post, I provided instructions on running Qt for Symbian (the “Tower” release) on Linux. However, for those who want to play with the bleeding edge Qt for Symbian development, you might want to try out the latest 4.6 development code from Qt GIT. I put some instructions for compiling Qt for Symbian from GIT on Linux as well, but unfortunately it requires the RVCT compiler to build.

Fortunately, today espenr announced daily snapshots, that will allow those who don’t have access to RVCT to try out the latest 4.6 development as well :D . So how to get this thing running on Linux? The snapshots so far consist only of the Windows installer and a .zip containing the source code.

By “merging” information from my two previous posts, I will describe below how to install the Qt for Symbian daily snapshots on Linux. Even if you have a previous installation of the Symbian SDK, you will need to follow the full instructions again (sorry), as these instructions contain a bunch of bug fixes to the Symbian SDK. Hopefully this requirement will go away at some point, when all Symbian SDK portability issues are addressed.

These instructions also work for the just released 4.6.0 RC1.

These instructions were tested only in the following environment:

  • Host: x86 32-bits (running Ubuntu 8.10)
  • Device and SDK: S60 5.0 (N97 and 5800)

Preparation

Download all required files:

(many thanks to Francisco Keppler for hosting this last file on his web site!)

For building the native tools from gnupoc, you will need:

  • the GCC C/C++ compilers
  • development files for zlib
  • development files for openssl

On Ubuntu, you can install these using the following command:

sudo apt-get install build-essential zlib1g-dev libssl-dev

Installation

  1. First, set some environment variables to be used on the following steps (feel free to modify them to install the SDK on some other location). NOTE: these variables are not necessary after installation.
  2. # root directory where all SDK files will be installed
    GNUPOC_ROOT=$HOME/gnupoc
     
    # toolchain directory
    TOOLCHAIN_DIR=$GNUPOC_ROOT/csl_gcc
     
    # Symbian SDK directory
    S60_SDK_DIR=$GNUPOC_ROOT/symbian-sdks/5.0
     
    # Qt SDK directory
    QT_S60_DIR=$GNUPOC_ROOT/qt_s60
     
    # wrapper directory (used by gnupoc)
    WRAPPER_DIR=$GNUPOC_ROOT/bin
     
    # where all downloaded files are located
    SRC_DIR=$HOME/downloads

  3. Install ARM toolchain:
  4. mkdir -p $TOOLCHAIN_DIR
    tar -C $TOOLCHAIN_DIR -xvjf \
      $SRC_DIR/gnu-csl-arm-2005Q1C-arm-none-symbianelf-i686-pc-linux-gnu.tar.bz2

  5. Unpack gnupoc sources and apply the patch that adds Qt for Symbian support:
  6. tar -xvzf $SRC_DIR/gnupoc-package-1.13.tar.gz
    cd gnupoc-package-1.13
    patch -p1 -i $SRC_DIR/qt_s60_gnupoc_v10.patch

  7. Install Symbian SDK:
  8. cd sdks
    ./install_gnupoc_s60_50 \
      $SRC_DIR/S60_5th_Edition_SDK_v1_0_en.zip \
      $S60_SDK_DIR

  9. Install gnupoc wrappers and native tools:
  10. ./install_wrapper $WRAPPER_DIR
    cd ../tools
    ./install_eka2_tools $TOOLCHAIN_DIR
    # adjust EKA2TOOLS variable to point to correct location
    sed -i "s,EKA2TOOLS=.*,EKA2TOOLS=$TOOLCHAIN_DIR/bin," \
      $WRAPPER_DIR/gnupoc-common.sh

  11. Create a “gnupoc_env.sh” script to be used for gnupoc environment setup, by running this command:
  12. cat > $GNUPOC_ROOT/gnupoc_env.sh << EOF
    export PATH=$WRAPPER_DIR:\$PATH
    export EPOCROOT=$S60_SDK_DIR/ # trailing "/" is required!
    EOF

    (Note: the “cat << EOF … EOF” snippet above will generate a “gnupoc_env.sh” file in $GNUPOC_ROOT.)

  13. Initialize the Symbian SDK environment (you will need to do this every time you close the current shell session):
  14. . $GNUPOC_ROOT/gnupoc_env.sh

  15. Install OpenC:
  16. cd ../sdks
    chmod +x install_openc_16_s60
    ./install_openc_16_s60 \
      $SRC_DIR/s60_open_c_cpp_plug_in_v1_6_en.zip \
      $S60_SDK_DIR

  17. Install Qt for Symbian (it will take some time because some tools need to be compiled for Linux):
  18. chmod +x install_qt_s60
    ./install_qt_s60 \
      $SRC_DIR/qt-symbian-opensource-<version>.exe \
      $S60_SDK_DIR \
      $QT_S60_DIR

    If installation went well, you should see the following:
    ...
    Qt is now configured for building. To start the build run:make debug-winscw|debug-armv5|release-armv5.
    To reconfigure, run 'make confclean' and configure.

    Of course, you do not want to build Qt, so just ignore it and proceed with the next step.

  19. Create a “qt_s60_env.sh” script to be used to setup Qt for Symbian environment, by running this command:
  20. cat > $GNUPOC_ROOT/qt_s60_env.sh << EOF
    export PATH=$QT_S60_DIR/bin:\$PATH
    export QMAKESPEC=symbian-abld
    EOF

    (Note: the “cat << EOF … EOF” snippet above will generate a “qt_s60_env.sh” file in $GNUPOC_ROOT.)

  21. Initialize the Qt for Symbian environment (you will need to do this every time you close the current shell session):
  22. . $GNUPOC_ROOT/qt_s60_env.sh

  23. Install the following SIS files on your device:
    • $EPOCROOT/nokia_plugin/openc/s60opencsis/pips_s60_1_6_ss.sis
    • $EPOCROOT/nokia_plugin/openc/s60opencsis/openc_ssl_s60_1_6_ss.sis
    • $EPOCROOT/nokia_plugin/opencpp/s60opencppsis/stdcpp_s60_1_6_ss.sis
    • $QT_S60_DIR/qt_selfsigned.sis
  24. Unset all temporary variables we used earlier:
  25. unset GNUPOC_ROOT TOOLCHAIN_DIR S60_SDK_DIR \
      QT_S60_DIR WRAPPER_DIR SRC_DIR

Usage

You need to setup the environment, so tools like qmake, bldmake, abld, makesis etc. are found (not necessary if you just did the installation, unless you closed the shell session):

. /path/to/gnupoc_env.sh
. /path/to/qt_s60_env.sh

Note the “.” (dot) before the gnupoc_env.sh. It says that the contents of the gnupoc_env.sh file will be run in the current shell session, as if you typed them by hand.

To actually build some Qt code, use these commands:

cd path/to/source
qmake # assuming the code already has a .pro file
make debug-gcce # or make debug-armv5 (if using RVCT)
make sis # to generate .sis file

And to clean the source:

make distclean

Notes:

  • Be sure to use qmake from Qt for Symbian. Otherwise the generated Makefiles will be for your host system
  • The trailing slash on the EPOCROOT variable is important (this is assumed in many places on Symbian SDK scripts)

Known Issues

  • The snapshots contain only the the “debug” libraries. Therefore, only the debug targets will work, i.e. use only “make debug-gcce” (if using GCCE compiler) or “make debug-armv5″ (if using RVCT)

See also the more general known issues related to Qt for Symbian.

Ideas for improvements and TODO items

  • Add Symbian support to Qt configure script, eliminating the need to compile configure.bin
  • Create a nice GUI installer for Linux
  • Allow to easily upgrade Qt for Symbian SDK installation, without requiring to reinstall the entire Symbian SDK
  • Itegration with Qt Creator, KDevelop or some other IDE

Feel free to contribute with your ideas or even better, help implementing them :D

by lizardo at January 21, 2010 05:28 PM

Running Qt for S60 SDK on Linux


*** These instructions have been superseded by the GnuPoc and Qt for Symbian unofficial installers, described in this post***

 

Update (2009-08-04): fixed qt_s60_gnupoc.patch (thanks grego), plus a few text additions.
Update (2009-08-21): update instructions to support S60 5.0 too.

A while ago I started playing with S60 programming. After downloading rather big SDK files and following instructions from http://www.martin.st/symbian/, I was able to build simple “hello world” applications written in C++, on Linux.

Then I remembered reading about an experimental Qt port to S60. I wanted to try it, given that I also began playing with Qt a while ago. To my surprise, I could not find any actual instructions on how to do that on Linux, although I found a few requests for it in comments from Qt Labs blog posts.

So, without further delay, I describe below the steps I followed to build Qt applications for S60 devices on Linux. These instructions are provided as an extension to those on Martin’s page, so be sure to read it too. But given that some patches are needed on top of Martin’s tools, I will show the full instructions here.

Note: these instructions were tested only in the following environment:

  • x86 32-bits
  • Ubuntu 8.04
  • S60 3.1 (N95) and S60 5.0 (5800 Xpress Music)

I tried making it work for my 3.0 MR based device, but it seems that I need to recompile all Qt using the proprietary ARM RVCT compiler. If someday I make it work, I’ll post instructions for it too.

Preparation

Download all required files:

(many thanks to Francisco Keppler for hosting the last two files on his web site!)

Installation

  1. First, set some environment variables to be used on the following steps (feel free to modify them to install the SDK on some other location). NOTE: these variables are not necessary after installation.
  2. # root directory where all SDK files will be installed
    GNUPOC_ROOT=$HOME/gnupoc
     
    # toolchain directory
    TOOLCHAIN_DIR=$GNUPOC_ROOT/csl_gcc
     
    # S60 SDK directory (replace "3.1" with "5.0"
    # for S60 5.0)
    S60_SDK_DIR=$GNUPOC_ROOT/symbian-sdks/3.1
     
    # Qt SDK directory
    QT_S60_DIR=$GNUPOC_ROOT/qt_s60
     
    # wrapper directory (used by gnupoc)
    WRAPPER_DIR=$GNUPOC_ROOT/bin
     
    # where all downloaded files are located
    SRC_DIR=$HOME/downloads

  3. Install ARM toolchain:
  4. mkdir -p $TOOLCHAIN_DIR
    tar -C $TOOLCHAIN_DIR -xvjf \
      $SRC_DIR/gnu-csl-arm-2005Q1C-arm-none-symbianelf-i686-pc-linux-gnu.tar.bz2

  5. Unpack gnupoc sources and apply the patch that adds Qt/S60 support:
  6. tar -xvzf $SRC_DIR/gnupoc-package-1.13.tar.gz
    cd gnupoc-package-1.13
    patch -p1 -i $SRC_DIR/qt_s60_gnupoc.patch

  7. Install gnupoc:
    • For S60 3.1:
    • cd sdks
      ./install_gnupoc_s60_31 \
        $SRC_DIR/S60-SDK-200634-3.1-Cpp-f.1090b.zip \
        $S60_SDK_DIR

    • For S60 5.0:
    • cd sdks
      ./install_gnupoc_s60_50 \
        $SRC_DIR/S60_5th_Edition_SDK_v1_0_en.zip \
        $S60_SDK_DIR

  8. Install gnupoc wrappers and native tools:
  9. ./install_wrapper $WRAPPER_DIR
    cd ../tools
    ./install_eka2_tools $TOOLCHAIN_DIR
    # adjust EKA2TOOLS variable to point to correct location
    sed -i "s,EKA2TOOLS=.*,EKA2TOOLS=$TOOLCHAIN_DIR/bin," \
      $WRAPPER_DIR/gnupoc-common.sh

  10. Install OpenC (skip this step if using S60 5.0):
  11. cd ../sdks
    chmod +x install_openc.sh
    ./install_openc.sh \
      $SRC_DIR/OpenC-1.5.5b-beta.zip \
      $S60_SDK_DIR

  12. Finally, install Qt/S60 (it will take some time because some tools need to be compiled for Linux):
  13. chmod +x install_qt_s60.sh
    ./install_qt_s60.sh \
      $SRC_DIR/qt-embedded-s60-preview-4.5.2-tower.exe \
      $S60_SDK_DIR \
      $QT_S60_DIR \
      $SRC_DIR/qt-s60-extra-files.tar.gz

Usage

After installation is completed, the usage is very simple. You need to setup a few environment variables, so tools like qmake, bldmake, abld, makesis etc. are found:

export PATH=$WRAPPER_DIR:$QT_S60_DIR/bin:$PATH
export EPOCROOT=$S60_SDK_DIR/ # trailing "/" is required!
export QMAKESPEC=$QT_S60_DIR/mkspecs/symbian-abld

Optionally, you can create a gnupoc_env.sh file with the lines above, using this command:

cat > $GNUPOC_ROOT/gnupoc_env.sh << EOF
export PATH=$WRAPPER_DIR:$QT_S60_DIR/bin:\$PATH
export EPOCROOT=$S60_SDK_DIR/ # trailing "/" is required!
export QMAKESPEC=$QT_S60_DIR/mkspecs/symbian-abld
EOF

Then, every time you need to set the variables, you could simply use:

. $GNUPOC_ROOT/gnupoc_env.sh

Note the “.” (dot) before the gnupoc_env.sh. It says that the contents of the gnupoc_env.sh file will be run in the current shell session, as if you typed them by hand.

To actually build some Qt code, use these commands:

cd path/to/source
qmake # assuming the code already has a .pro file
make DEL_FILE=rm ABLD=abld release-gcce
makesis -c <project>_gcce_urel.pkg <project>.sis

And to clean the source:

make DEL_FILE=rm ABLD=abld distclean

Notes:

  • Be sure to use qmake from Qt/S60. Otherwise the generated Makefiles will be for your host system
  • The trailing slash on the EPOCROOT variable is important

Known issue and workaround

The .sis file generated by the instructions above, although installable on the device, does not actually work (clicking on the application icon makes the phone “hang” for a while, but then it returns to the Symbian menu). The workaround is to compile and link some files from Qt/S60 sources directly into the application. For that, just add a “qts60main.pri” file to your application’s source directory, with the following content:

QT_SOURCE_TREE = $$QMAKE_INCDIR_QT/..
DEPENDPATH += $$QT_SOURCE_TREE/src/s60main
 
HEADERS += \
qts60mainapplication.h \
qts60mainappui.h \
qts60maindocument.h
 
SOURCES += \
qts60mainapplication.cpp \
qts60mainappui.cpp \
qts60main.cpp \
qts60maindocument.cpp \
qts60main_mcrt0.cpp
 
LIBS -= qtmain
QMAKE_LIBS -= qtmain
 
MMP_RULES += \
"SOURCEPATH $$QT_SOURCE_TREE/src/s60main" \
"START RESOURCE s60main.rss" \
"HEADER" \
"TARGETPATH /resource/apps" \
"END"

Edit the .pro file and add this line:

include(qts60main.pri)

Then try again the sequence of commands listed on the previous section (qmake; bldmake …). I’m not sure why this happens, and I need to check whether this is an issue specific to Linux.

TODO

  • Remove need to set “DEL_FILE=rm ABLD=abld” when calling make distclean/relase-*
  • Send patches to Martin’s gnupoc and Qt/S60
  • Investigate issue with s60main static library not working
  • Compile Qt/S60 from sources on Linux
  • Make it work with S60 3.0 too (although Qt/S60 does not support it officially)
  • Make Symbian emulator (epoc.exe) work under Linux (currently it crashes under WINE)

by lizardo at January 21, 2010 05:25 PM

January 20, 2010

Adenilson Cavalcanti

Live@CampKDE


Friends

Internet connectivity has being a bit fuzzy in the hostel (as also insulation and electric energy), so the long delayed update.

So far, its is being a really interesting event for both technical content and social aspects (assigning faces to IRC names is always refreshing).

Last Monday I had 2 presentations in a row, resulting to near 1 hour. I realized that I would bore the audience to death, so I tried to mix my slides with both technical content and some humour as also included a 5 minutes pause between the first presentation (Plasma new Animation classes) and the second (KDE-PIM google sync).

The first presentation is split in 2 parts, where the first part gives some context to the subject and the second part includes usage example, demos and some code. There were some really nice responses to the animations running in a Nokia N5800 that I made accessible to the people in the room (you can see a video of the same program running in a N97 in a previous post). I think what is really interesting is to known that some of this animations are already being used in the upcoming KDE SC 4.4. (I was really happy to see that they are running pretty smoothly even on KDE port for MS-Windows).

The second presentation featured some wireshark porn (a.k.a. screenshots of network packages traffic) and was more dense since I got to explain details of google data protocol. Overall, besides struggling with my English and at same time exposing some technical content, I think was able to deliver some not-so-stinky talks.

Below there is a picture snapped by Will Stephenson (I completely forgot about asking someone for snapping a photo of my first presentation).

ps: For the people who asked about how I was controlling the slides with my cellphone, the answer is Amora (A mobile remote assistant), one of my pet projects.

by savago at January 20, 2010 11:47 PM

January 19, 2010

Anselmo Lacerda S. de Melo

Qt Mobile Demos in extras-devel

A small post.

In the first season, the focus was S60 devices. After the holidays, the new season is about Maemo. =)

Qt Mobile Demos are in Maemo 5 extras-devel, so now it’s easier to check them in a N900 near you. First, you need to enable the extras-devel repository/catalogue and the demos should appear if you search for “qtmobile”.

The packages are:

hyperui -> qtmobiledemo-hyperui

mybudget -> qtmobiledemo-mybudget

shoplist -> qtmobiledemo-shoplist

weather -> qtmobiledemo-weather

Future? Well, soon QAbstractKineticScroller will replace our kinetic list implementation. (Read the comments).

And yes, we have a list of known issues to solve in our free time…

The code still in the same place, http://qt.gitorious.org/qt-labs/mobile-demos

That’s all for today.

PS: Thanks to Etrunko, who helped a lot with packaging stuff =)

by anselmolsm at January 19, 2010 08:30 PM