Archives 2011

Very cold trip

Sunday, 13 February 2011
|
Écrit par
Grégory Soutadé

Tentative de copie d'un "Very bad trip" à la sauce Finlandaise, "Very cold trip" est un échec total. L'idée de base n'est pas forcément mauvaise : Inari, une jeune finlandaise, lance un ultimatum à son petit ami au chômage depuis de longues années et complètement irresponsable : arriver à trouver un décodeur TV, décodeur qu'elle attend depuis 3 ans. Il part donc avec ses deux amis en quête du fameux décodeur, sans un sous, sans voiture, un samedi soir dans le froid de Finlande.

Le film alterne différents styles sans jamais convaincre : on commence avec de l'humour noir, puis une entrée en matière très poussive. Lorsque l'ultimatum est lancé, on se dit que c'est parti et qu'on va pouvoir rigoler, mais les quelques gags qui s'en suivent ne sont absolument pas drôles et ni le genre thriller, ni le genre émotif, ni le genre trash n'arrivent à sortir le spectateur de l'ennui.

La bande annonce en elle-même est plus drôle que le film.

Rien à déclarer

Monday, 07 February 2011
|
Écrit par
Grégory Soutadé

 

Après le succès de "Bienvenue chez les Ch'tis", Dany Boon s'est remit au travail pour sortir "Rien à déclarer". Comme dans le précédent film, la trame se déroule dans le Nord, à la frontière franco-belge plus exactement. Lors de la disparition des frontières en 1993 (décision Européenne), les douanes fixes sont transformées en douanes volantes obligeant les fonctionnaires des deux pays à collaborer. Ainsi Ruben Vandevoorde (joué par Benoît Poelvoorde) un douanier méchant, raciste et anti français se voit contraint de travailler avec son homologue Mathias Ducatel (incarné par Dany Boon) amoureux de la sœur de Ruben. La trame amoureuse de fond est plutôt légère (voire superflue), alors que le vrai sujet du racisme est traité avec beaucoup d'humour et d'intelligence.

Dany Boon à la fois auteur, acteur et réalisateur reprend quelques recettes des Ch'tis sans pour autant faire une pâle copie du précédent. La réalisation a gagné en maturité et les différents acteurs (Dany Boon, Benoît Poelvoorde, Karin Viard, François Damiens ...) nous régalent de leurs prestations. Bref, un très bon film à aller voir en famille.

Compilation croisée sur SheevaPlug

Wednesday, 26 January 2011
|
Écrit par
Grégory Soutadé

Dans mon article précédent je faisais une petite comparaison entre le SheevaPlug et un DELL OptiPlex quasi dernière génération. Voilà un petit retour d'expérience sur la compilation croisée depuis le Sheeva.

Pour rappel : la compilation croisée c'est compiler depuis un plateforme matérielle/logicielle A pour créer des binaires qui s'exécuteront sur une plateforme matérielle/logicielle B. Exemple : on compile sur une plateforme ARM pour une plateforme x86, ou encore une plateforme x86 64 bits vers x86 32 bits.

1) Récupérer crosstool-ng

Jusque là pas de problème, il s'installe facilement et est multi-plateforme (ce n'est que du script bash).

2) Compilation de la toolchain

La ça coince un peu plus, comme indiqué précédement j'ai eu des problèmes avec la eglibc, mais ça s'est résolu en modifiant une config d'exemple. J'ai compilé deux toolchains : une en 32 bits (i686-nptl-linux-gnu) et une en 64 bits (x86_64-nptl-linux-gnu).

3) Compilation du logiciel

Pour un simple "Hello World !" il n'y a pas de soucis, mais dès qu'on commence à construire un logiciel un peu plus costaud on a rapidement quelques ennuis.


Tout d'abord il faut préparer le Makefile à la cross compilation pour supporter la définition externe des variables type CXXFLAGS ou LDFLAGS. Cela consiste à remplacer CXXFLAGS="Quelque chose" par CXXFLAGS+="Quelque chose", idem pour LDFLAGS. Il faut aussi changer CXX=g++ en CXX=$(HOST)g++.

Les modifications pour KissCount sont dans ce commit.


Second problème : les bibliothèques externes type GTK ou dans mon cas wxWidgets. Là il faut ruser un peu plus, on ne peut pas installer directement le runtime car le paquet est compilé pour une architecture ARM donc ld ne va pas s'y retrouver. A moins de passer une option pour ignorer les différences d'architecture, mais je n'ai pas testé, et surtout je ne voulais pas installer ce paquet avec toutes ses dépendances (GTK, Xorg, ...) sur le serveur. J'ai donc importé à la fois les entêtes (headers) et les bibliothèques (.so) dans les dossiers include_wxwidgets_32 et lib_wxwidgets_32 (idem pour la version 64 bits) depuis une machine où ces paquets sont installés.


Dans le Makefile on fait appel à wx-config pour récupérer les valeurs de LDFLAGS et CXXFLAGS, j'ai donc crée un faux wx-config qui va renvoyer le chemin de include_wxwidgets_32 et lib_wxwidgets_32. Ensuite on définit HOST avec "i686-nptl-linux-gnu-" ou "x86_64-nptl-linux-gnu-", puis on déroute PATH vers ~/x-tools/i686-nptl-linux-gnu/bin:.:$PATH (le "." est l'endroit où il y a le wx-config). Enfin on lance LDFLAGS="-Wl,--allow-shlib-undefined" make. L'option "allow-shlib-undefined" permet de ne pas faire une résolution récursive des symbols dans les bibliothèques partagées, ainsi on n'a pas besoin de copier tout GTK pour pouvoir lier notre programme avec wxWidgets (qui dépend GTK).


La compilation se passe bien ... en 32 bits ! On peut même exécuter le programme sans problème sur une autre machine. Mais en 64 bits ça coince lors de l'édition de lien finale avec les erreurs suivante :

undefined reference to `__libc_csu_init'
undefined reference to `__libc_csu_fini'

Cela vient du fait que la libc 32 bits (de la plateforme de compilation) ne définit pas ces symbols et le compilateur (même 64 bits) utilise la libc de l'hôte. Personnellement j'ai fait deux liens symboliques :

ln -s /lib64     ~/x-tools/x86_64-nptl-linux-gnu/x86_64-nptl-linux-gnu/sys-root/lib/
ln -s /usr/lib64 ~/x-tools/x86_64-nptl-linux-gnu/x86_64-nptl-linux-gnu/sys-root/usr/lib/

On met à jour LDFLAGS dans le Makefile avec -L/lib64 et -L/usr/lib64 et le tour est joué !

4) Compilation automatique (Nightly build)

Pour courronner le tout, j'ai fait un petit script qui va s'exécuter chaque nuit (via crontab), vérifier depuis le dépôt git s'il n'y a pas une nouvelle version pour chaque branche et si c'est le cas, la compiler pour chaque architecture ! Il suffit alors de feinter inDefero en utilisant un liens symbolique "Nightly_Build_${branche}_${ARCH}.tar.bz2" pour rendre la nouvelle version disponible. De plus le script envoie un mail en cas d'echec ou de réussite (que demander de plus ??).

Ma hierarchie de dossier est la suivante :

/KissCount
|-- lib_wxwidgets_32/
|-- include_wxwidgets_32/
|-- lib_wxwidgets_64/
|-- include_wxwidgets_64/
|-- wx-config
|-- mega_compile.sh
|-- lib_i686/                  # Spécifique KissCount
|-- lib_x86_64/            # Spécifique KissCount
|-- kisscount_master/
|-- kisscount_dev/


Attention : lors du clone du dépôt git, il faut cloner un dépôt public, sinon il demande le mot de passe pour faire un pull.

Mon script de compilation mega_compile.sh

Et dans /etc/crontab :

0  2    * * *  www-data cd /KissCount && ./mega_compile.sh > /dev/null

DELL OptiPlex 360 (Intel) versus SheevaPlug (ARM)

Monday, 24 January 2011
|
Écrit par
Grégory Soutadé

En ayant marre de construire manuellement les tarballs binaires de KissCount, j'ai décidé de confier cette tâche à mon petit serveur (c'est le premier pas vers le packaging). Petit problème : le SheevaPlug tourne sur un processeur ARM, processeur encore peu répandu sur le "desktop" (ordinateur personnel/de bureau). En effet la majorité totalité de ces ordinateurs ont un processeur x86 (Intel/AMD). Mais pas de panique, il suffit de créer une chaîne de compilation croisée (cross toolchain) pour produire nos binaires x86 à partir d'une plateforme ARM !

Trêve bavardage, on récupère la dernière version de crosstool-ng (j'aurais pu en choisir un autre, mais celui là a l'air bien et surtout je n'avais pas envie de la construire "à la main"). Je me bats un peu en essayant d'utiliser la eglibc (Embedded Glibc, notamment utilisée par le projet Debian) ... échec. Par dépit je prends une configuration d'exemple légèrement modifiée. Une petite chose qui manque : la possibilité, par défaut, de faire un restart (obligé d'activer l'option dans debug).

Ce petit exercice va donc permettre de faire une comparaison entre les deux architectures. Bien sûr la comparaison est un peu biaisée car ce ne sont pas des gammes équivalentes, mais essayons quand même. La compilation est un exercice qui met en jeu beaucoup de composants systèmes :

  • Lecture/Écriture de fichiers (système de fichier, noyau via les caches, disque, DMA)
  • Mémoire/Calculs (processeur, bus interne, cache processeur, compilateur)


Les chiffres bruts :
Temps de compilation sur le SheevaPlug : 8h
Temps de compilation sur le DELL : 1h

 

 

Vu comme cela on se dirait : ARM, c'est naze. Mais regardons de plus près :

DELL OptiPlex 360

  • Intel(R) Core(TM)2 Duo E7500 @ 2.93GHz 3Mo de cache, FSB 1066Mhz : un seul des deux cœurs a été utilisé
  • 4 Go de mémoire vive bicanale type DDR2 SDRAM non ECC (800 MHz)
  • Disque dur 320 Go en SATA II avec un système de fichier Ext4, le tout à 7500rpm
  • Ubuntu 10.4 64 bits
  • Noyau Linux 2.6.32

SheevaPlug

  • ARM (9, v5 te) Marvell Kirkwood (Feroceon 88FR131 rev 1 (v5l)) 1Ghz, 16KB de cache L1, 256KB de cache L2 @500Mhz
  • 512 Mo DDR2 SDRAM 16 bits
  • Clé USB Toshiba 16Go en Ext2
  • Debian stable (4 / Lenny) 32 bits
  • Noyau Linux 2.6.32

 

Il y a un facteur 8 entre les deux systèmes qui peut s'expliquer par : le cache de l'ARM est ridicule (ça coûte cher), la fréquence du bus est deux fois moins importante, la taille du bus est divisée par 4, le système de fichier de la clé USB est relativement lent en écriture (4.7 Go nécessaires pour la compilation et 141 Mo la toolchain finale). En partant de là je trouve que les performances sont tout à fait correctes, surtout que même avec 8h de compilation on est gagnant niveau consommation électrique ! J'espère réellement que cette architecture va débarquer sur PC une fois qu'elle sera un peu plus musclé ! C'est ce qu'on verra avec les nouveaux Cortex A5/A8/A9 qui font déjà des merveilles sur smartphone (même s'il y a beaucoup d'accélérateurs autour). Et puis Microsoft a décidé de faire une version ARM de Windows, ce n'est pas pour rien ;)

 

Configuration toolchain 32 bits
Configuration toolchain 64 bits

Déportivo

Sunday, 16 January 2011
|
Écrit par
Grégory Soutadé

Déportivo


Déportivo, groupe de rock français formé en 2003. Leurs premier album "Parmi Eux" est un véritable phénomène, enfin  du bon rock français comme on l'aime ! En effet Déportivo reprend les bases, fleurtant légèrement avec un style punk tout à fait assumé : textes enragés, superbe voix légèrement saturée sur un rythme endiablé à la guitare, le appuyé dynamiquement par la basse et la batterie. L'album est un peu court : 30 minutes 25 secondes avec deux titres bonus, donc une moyenne de 2 minutes 10 secondes par morceau...

 

Parmi eux

On commence fort avec "1000 Moi Même" qui donne le style de Déportivo. "Parmi eux", titre éponyme de l'album, sur une sonorité proche du précédent il offre un clip complètement délirant. "Queen of Universe", le morceau le plus dynamique, mais aussi le plus court. "Sur le moment", c'est l'autre facette de Déportivo, une guitare sèche et un peu de kazoo pour le plaisir. La suite de l'album est une alternance entre ces deux styles : deux morceaux rock et un folk. Le 8ème titre "la salade" arrive pour réveiller ceux qui se seraient endormis, tandis qu'on retrouve un esprit plus punk dans le suivant. Puis on repart folk/rock. Le dernier morceau "Paratonerre" est plus original, avec son refrain grunge qui pousse la voix du chanteur dans ses derniers retranchements. Pour finir par deux chansons bonus "Au plaisir" qui est un délire complet et une version acoustique très sympa de "Wait a little time".


A la première écoute les morceaux sont proches musicalement, mais ça faisait tellement longtemps que l'on ne va pas se plaindre ! A ce titre le batteur a dû décéder peu après le début de l'enregistrement et ils ont fait un copier-coller des parties de batterie car elles sont vraiment très très proche. Qualité appréciable de Déportivo : une composition quasiment en français (l'anglais étant réservé pour les parties punk).

Un second album est sorti en 2007 "Déportivo" et un troisième en 2011. Du peu de ce qui a filtré, il semble que Déportivo soit parti dans un style pop-rock en oubliant leurs début anarchistes de "Parmi Eux".