MAFWing

Yes, finally it is public that we are contributing to MAFW project, born for the Maemo platform.

My latest jobs were focused in the mafw-gst-renderer component so feel free to ask me any questions related to that or any other component.

I am damm lazy to blog, but I will try to do it sometimes to talk about what I did for the project so that you can stay tuned and follow a bit project’s evolution.

Small things

These last days I touched some small issues as changing a bit the way we destroy the GStreamer pipeline, since we we checking for asynchronous state changes when setting it to NULL that should never happen.

Compiling Epiphany+WebKit with jhbuild under debian amd64

The next challenge I faced with my debian amd64 was compiliing Epiphany with WebKit. As my system is ‘almost virgin’ I had to install many libraries deveplopment packages that you won’t need to install if you have played enough with your system.

First step if you have a dual core computer, activate it in .jhbuildrd with the line:

os.environ['MAKE'] = 'make -j2'

I guess it should work if you just define the environment variable in the .bashrc.

The first problem comes when compiling the bootstrap because gmp reminds you that you are under a 64 bits architecture. Configure stops because it can’t find a suitable compiler. I guess this should be fixed in jhbuild or just in gmp configure.in file because it doesn’t recognize the architecture correctly. To bypass this problem it is needed to specify the architecture to the package or for the whole jhbuild system. I preferred to avoid this problem for all packages and just added it in .jhbuild as:

autogenargs='--build x86_64-linux-gnu'

Actually the first problem you find is that gettext and autoconf stop compiling because of a wrong dependency in make process that causes it to try to compile something that wasn’t compiled yet. It is annoying but to bypass it just carry on compiling.

Next problem came with guile. I say ‘came’ instead of ‘comes’ because when doing this again to test the steps problem had dissapeared. Maybe they fixed it, but it couldn’t find the gmp library that he had just compiled before. With external help we realized that and bypassed it specifying the place where libraries are:

module_autogenargs['guile'] = autogenargs + ' --libdir /yourgnomebuildinstallationdirectory/lib64'

Until this moment, we were only compiling the bootstrap. Then you can begin with epiphany with jhbuild build epiphany. Next problem comes with gnome-doc-utils:

I/O error : Attempt to load network entity http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
warning: failed to load external entity "http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"
error
xsltParseStylesheetFile : cannot parse http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl
compilation error: file ./xml2po.1.xml line 17 element refentry
xsltParseStylesheetProcess : document is not a stylesheet

What was missing was the package docbook-xsl. Next problems come with cairo:

configure: error: flex is required to create the libIDL scanner
*** error during stage configure of libIDL: ########## Error running ./autogen.sh --prefix /home/calvaris/nocrypt/gnome/install --libdir '${exec_prefix}/lib64' --build x86_64-linux-gnu ***
configure: error: yacc is not usable as yacc - consider using bison
*** error during stage configure of libIDL: ########## Error running ./autogen.sh --prefix /home/calvaris/nocrypt/gnome/install --libdir '${exec_prefix}/lib64' --build x86_64-linux-gnu ***

Fixed if installing packages flex and bison. Other problem with cairo is libpng. You need to install libpng-dev package but this is not enough because jhbuild replaces PKG_CONFIG_PATH environment variable, which causes it not to find it. Just adding the a line solves the problem (and many others that may appear) because it will search in system’s pkg-config system. This a solution but also a drawback: if any package configuration is not well written, it could cause you to use the system configuration instead of the compiled with jhbuild, though this should be a very rare thing. Line is:

addpath('PKG_CONFIG_PATH', '/usr/lib/pkgconfig')

While compiling GTK, avahi,icon-naming-utils and startup-notification I got:

* configure: WARNING: *** TIFF loader will not be built (TIFF library not found) ***
configure: error:
*** Checks for TIFF loader failed. You can build without it by passing
*** --without-libtiff to configure but some programs using GTK+ may
*** not work properly
*** error during stage configure of gtk+: ########## Error running ./autogen.sh --prefix /home/calvaris/nocrypt/gnome/install --libdir '${exec_prefix}/lib64' --build x86_64-linux-gnu ***
configure: error:
*** Checks for JPEG2000 loader failed. You can build without it by passing
*** --without-libjasper to configure
*** error during stage configure of gtk+: ########## Error running ./autogen.sh --prefix /home/calvaris/nocrypt/gnome/install --libdir '${exec_prefix}/lib64' --build x86_64-linux-gnu ***
*** error during stage configure of avahi: ########## Error running ./configure --prefix /home/calvaris/nocrypt/gnome/install --libdir '${exec_prefix}/lib64' --disable-qt3 --disable-qt4 --disable-mono --disable-monodoc --disable-manpages --disable-python --enable-compat-howl --enable-compat-libdns_sd --build x86_64-linux-gnu ***
checking for XML::Simple... configure: error: XML::Simple perl module is required for icon-naming-utils
*** error during stage configure of icon-naming-utils: ########## Error running ./configure --prefix /home/calvaris/nocrypt/gnome/install --libdir '${exec_prefix}/lib64' --build x86_64-linux-gnu ***
configure: error: X11 development libraries/headers not found
*** error during stage configure of startup-notification: ########## Error running ./configure --prefix /home/calvaris/nocrypt/gnome/install --libdir '${exec_prefix}/lib64' --build x86_64-linux-gnu ***

You need these packages for that:

  • libtiff4-dev
  • libjasper-dev
  • libgdbm-dev
  • libxml-simple-perl
  • libxt-dev

And then comes a very funny thing: gnome-desktop stops because it doesn’t find the foundation-members.list files. If taking a look at the autogen.sh (thanks, garnacho) you see the following:

if test "`which gvfs-copy`" != ""; then
gvfs-copy http://api.gnome.org/gnome-about/foundation-members gnome-about/foundation-members.list
else
touch gnome-about/foundation-members.list
fi

In this case problem is that it finds gvfs-copy (it had been compiled before), but it couldn’t copy the file and you don’t get it eventually. A bug exists already about that but it was close as invalid, so I have to open a new one to upload a little patch I created. To bypass the problem immediately, you only need to type:
touch gnome-about/foundation-members.list

After continuing you can stop it at epiphany’s beginning, because you neither compiled nor installed webkit yet. I’ll carry on explaining how to compile webkit and epiphany in the next post. Enough for today.

Installing scratchbox under amd64

As Igalia bought a new laptop for me (actually this is done for every worker from the second year on), I installed Debian Amd64 on it as a challenge, because everybody was telling me about all the problems: flash, scratchbox and all the ghosts they could imagine. I thought: ‘this can’t be that difficult’ and somebody has to try at least to say why it is a bad idea. And maybe we could collaborate a bit with that architecture, this exactly what I am doing right now. Why did I choose amd64, already explained, but what about debian? It’s because of purity. I couldn’t give up on installing debian just because it is not that easy as Ubuntu… Let’s face it! And I did it! As far as I remember the biggest problems I faced where nvidia’s driver (I could make it work only with nvidia’s proprietary driver and thank Juan), the wireless driver (I had to install the firmware), fingerreader (you have to install the driver and configure pam) and flash (I just installed flashplayer-mozilla package and it worked at the very first moment). For the kernel I just borrowed berto‘s configuration and changed the things I needed. There are some remaining things that don’t work yet (like hibernation), but I don’t care very much.

One of the most scaring things for me were the scratchbox because everybody was telling me that it couldn’t be installed under amd64 and I could get much problems because of that. Steps:

  1. apt-get install ia32
  2. dpkg -i --force-architecture scratchbox-*.deb

That’s it (uhuuu, I’m afraid of the 64 bits!).