Navigateur web basé sur Opera
Client de messagerie basé sur Sylpheed
Client de chat utilisant Google Chat + Jabber (et ses passerelles)
Client VoIP utilisant Google Talk + Jabber
Agrégateur de feeds RSS
Petits outils :
Écouter de la musique ;
Regarder des videos ;
Lire des documents PDF ;
Prendre des notes ;
Dessiner des croquis simples ;
Communication
Wifi 802.11{a,b,g}
Bluetooth
Avec autant de puissance, on peut faire tourner correctement un Doom
Le Nokia 770 est une boîte pas si noire que cela qui fonctionne à l'aide d'une mouture de Debian GNU/Linux
Le système de gestion des paquets utilisé est APT, on peut donc configurer des dépôts en utilisant les sources /etc/apt/sources.list
L'interface graphique n'utilise pas la vérification des signatures, alors que la ligne de commandes le permet
Il n'est plus possible depuis la version 2006 de l'OS d'utiliser les paquets Debian génériques compilés pour l'ARM
Avant juillet 2006, en utilisant la version 2005, on utilisait seulement dpkg et une gestion des dépendances manuelles
La première application à installer est bien entenu un terminal
Osso-Xterm est un Xterm intégré dans l'environnement du 770 (Hildon)
Le shell utilisable par défaut est très limité mais on peut installer un bash
De nombreux programmes pour le Nokia 770 sont écrits en Python, les bibliothèques pour construire des interfaces graphiques ont été les premières à être portées et rendues disponibles
D'autres langages de script peuvent être disponible, mais l'enthousiasme s'essouffle pour produire des paquets Debian de bonne facture
Parce que c'est plus agréable, et que j'y suis habitué
Parce que par nature, le 770 est communicant et que Perl dispose dans le core de ce qu'il faut pour se connecter sur un réseau IP
Le choix d'une version stable ou de développement se pose quand on souhaite diffuser une distribution
Bleadperl contient des améliorations notables (meilleures performances pour les expressions rationnelles, plein de nouveautés)
Je n'ai accès qu'à du matériel x86
Le 770 tourne sur une architecture ARM
La distribution de Perl fournit de nombreuses choses, entre la documentation, un moyen de lier dynamiquement des programmes externes qui utiliseraient la bibliothèque partagée Perl, des modules, des scripts, le CPAN, le support Unicode, etc.
Tout cela occupe beaucoup de place, et en tout cas beaucoup plus qu'il n'y en a de disponible
sudo apt-get install \ scratchbox-core scratchbox-devkit-debian \ scratchbox-devkit-cputransp \ scratchbox-toolchain-cs2005q3.2-glibc-arm
L'installation de la chaîne de compilation à proprement parler
sudo addgroup sbox sudo adduser -g sbox user sudo /scratchbox/sbin/sbox_adduser user
Création d'un groupe et d'un utilisateur dans ce groupe qui pourront utiliser l'environnement de compilation
Le choix de l'utilisateur « user » n'est pas anodin. C'est le nom de l'utilisateur dans le 770
Il y a un compte également dans scratchbox, que l'on crée avec une commande spécifique
sudo su - user /scratchbox/login
La scratchbox est un environnement dans l'environnement. Pour y entrer, il faut se connecter à l'aide de cette commande
[sbox-: ~] sb-conf setup n770 \ --compiler=cs2005q3.2-glibc-arm \ --devkits=cputransp,debian \ --cputransp=/scratchbox/devkits/\ cputransp/bin/qemu-arm-0.8.0-m2
À cette étape, on prépare un environnement qui utilisera deux kits de développement, et qui utilisera qemu pour l'exécution des binaires générés pour l'architecture cible
Si l'on préfère les interfaces interactives, il y a une commande sb-menu qui permet cette configuration dans des boîtes de dialogue ncurses
[sbox-: ~] sb-conf select n770
Après avoir défini l'environnement, on peut commencer à l'utiliser. Il s'appelle de manière assez prévisible « n770 » dans cet exemple, mais aurait aussi bien pu s'appeler « maemo », etc.
[sbox-n770: ~] wget \ http://repository.maemo.org/stable/2.0/armel/\ Maemo_Dev_Platform_v2.0_armel-rootstrap.tgz [sbox-n770: ~] sb-reinstall \ Maemo_Dev_Platform_v2.0_armel-rootstrap.tgz [sbox-n770: ~] sb-conf se n770
Toujours dans la scratchbox, on télécharge la plate-forme de développement Maemo, qui contient toutes les bibliothèques nécessaires pour la compilation des applications à utiliser dans le 770
La dernière commande permet juste de recharger l'environnement parce qu'il a été sévèrement modifié
rsync -avz \ rsync://ftp.linux.activestate.com/perl-current/ \ current
La récupération des sources de bleadperl à partir du site d'activestate est décrite dans la perle 4
cd current ./Configure make make test make install-strip
On a tout ce qu'il y a de plus classique. Le choix de l'install-strip est judicieux dans notre cas, parce que la plate-forme cible a un espace de stockage limité et de toute façon n'a rien pour le débogage nativement
find . -name "*.pl" | xargs rm find . -name "*.h" | xargs rm find . -name "*.pod" | xargs rm
La plupart de ces scripts .pl sont des exemples. Ils n'occupent pas une place énorme
Les entêtes ne serviront à rien, puisque le 770 n'a pas de compilateur
La documentation représente une partie très importante, près de 10 Mo
rm -fr man
Après suppression des pages, on a une coquille vide
rm -fr lib/perl5/5.9.5/arm-linux/CORE rm -fr lib/perl5/5.9.5/arm-linux/auto/Encode rm -fr lib/perl5/5.9.5/unicore rm -fr lib/perl5/5.9.5/pod rm -fr lib/perl5/5.9.5/CPAN.pm rm -fr lib/perl5/5.9.5/CGI.pm
Le support Unicode n'est pas à proprement parler indispensable à cet endroit
CGI ne me sera pas vraiment utile (il y a un paquet avec un serveur HTTP pour le 770) et CPAN n'est pas utilisable
Compte tenu de ce qui a été supprimé, les binaires permettant la lecture de la documentation Pod ne sont plus vraiment indispensables
/usr/local n'est pas utilisé en standard, on ne pollue que « peu » le 770
Fuse est une manière d'implanter un système de fichiers en espace utilisateur
Le problème est que le busybox
du 770 ne contient pas la commande
losetup
.
Il faudrait soit compiler un nouveau busybox
en remplacement, soit compiler
un nouveau losetup
. Berk.
Cette méthode permet d'utiliser l'espace de la carte mais avec les attributs qui nous intéressent : r-x pour tout le monde (c'est la tournée !)
La diffusion de ceci n'est pas envisageable en l'état, parce que l'écriture dans la mémoire flash est en dehors de tout contrôle.
La mise à jour de paquetage n'est pas gérée non plus. Il faut supprimer l'intégralité de /usr/local et redéployer une arborescence
Un paquet contenant l'interpréteur seul
Un paquet avec les modules du Core
Un paquet qui contient la doc (perldoc + *.pod)
Un paquet avec le support unicode
Un paquet avec CGI ? Un pour CPAN ?
/scratchbox/login
wget \ http://ftp.debian.org/debian/pool/main/p/perl/perl_5.8.8.orig.tar.gz tar xvzf perl_5.8.8.orig.tar.gz wget \ http://ftp.debian.org/debian/pool/main/p/perl/perl_5.8.8-6.1.diff.gz zcat perl_5.8.8-6.1.diff.gz | patch -p0
cd perl-5.8.8 debian/rules
pourvu que l'on ait l'ivresse. Le but étant d'utiliser Perl sur cette architecture, la méthode pour le rendre disponible importe peu. Les binaires sont accessibles
Pourtant, tout a été réalisé par la chaîne de compilation qui émule un système Linux sur une architecture ARM et qui permet de tester à la volée les binaires produits par qemu-arm
Soyons honnête, ça ne marche pas du premier coup pour générer les paquets Debian. Les tests ne passent pas intégralement, et cela empêche la suite des opérations, dont la gérération des paquets
Application avec la pyramide de chiffres (Memoize est dans le core). La seule précaution indispensable est de spécifier dasn ses scripts le chemin de l'interpréteur. Le perl dans le 770 est un 5.8.3 sans aucun module. Si l'on exécute quelque chose comme :
#!/usr/bin/perl
use strict; use warnings; use Memoize; memoize('fib');
my $arg = shift || 25;
sub fib { my $n = shift; return $n if $n < 2; fib( $n - 1 ) + fib( $n - 2 ); }
print &fib($arg), "\n";
Alors on aurait un résultat comme.
[user@Nokia770-26 bin]$ fib3 Can't locate Memoize.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.3 /usr/local/share/perl/5.8.3 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .) at /home/user/bin/fib3 line 5. BEGIN failed--compilation aborted at /home/user/bin/fib3 line 5.
Et c'est vrai. Mais si l'on spécifie avec la ligne shebang un /usr/localbin/perl alors on aurait le résutat attendu
[user@Nokia770-26 bin]$ fib2 75025
Autre application avec un testeur de ports TCP (IO::Socket est aussi dans le core)
Un moteur d'expressions rationnelles optimisé
Pour le coup de pied au derrière concernant cette présentation
Pour spod5 http://search.cpan.org/dist/spod5/
Pour la musique
Pour la bière
Excellent appareil, qui s'améliore continuellement dans les fonctionnalités et l'ergonomie
Utiliser Debian GNU/Linux, et d'autres logiciels libres et rendre toute la plate-forme de développement disponible
Vous m'aidez à devenir meilleur ;)
Le site du fabricant qui officiellement est le seul à vendre en ligne le 770
Le point d'entrée de la plate-forme de développement pour le Nokia, les mises à jour, la documentation en ligne (Wiki)
Une chaîne de compilation tout-en-un
Article d'introduction à la cross-compilation pour le 770
Où l'on fournit une définition de « bleadperl » et le moyen de l'obtenir
La page du paquet Perl de Debian testing
La politique d'empaquetage de Perl et des modules associés dans Debian GNU/Linux
QEMU : open source processor emulator