Fedora-Fr - Communauté francophone Fedora - Linux

Planet de Fedora-Fr : la communauté francophone autour de la distribution Linux Fedora

A propos

Cette page est actualisée toutes les heures.

Cette page est une sélection de blogs autour de Fedora. Fedora-Fr.org décline toute responsabilité au sujet des propos tenus par les auteurs des blogs de ce planet. Leurs propos sont leur entière responsabilité.

Le contenu de ce planet appartient à leurs auteurs respectifs. Merci de consulter leur blogs pour obtenir les licences respectives.

Mot-clefs : iPhone

Utilisation d'autotools sur l'iPhone

Thomas Bouffon

Une grande partie des logiciels libres utilise les autotools GNU pour la compilation. Leur utilisation sur l'iPhone lui-même nécessite quelques ajustements.

Pour que l'étape configure se passe bien, il faut que le script puisse compiler du code et l'exécuter. Pour cela, il faut que l'iPhone permette de lancer un binaire non signé, et que tous les includes des chemins non standards soient déclarés.

Permettre de lancer des binaires non signés :

En root, lancer

sysctl -w security.mac.vnode_enforce=0
sysctl -w security.mac.proc_enforce=0

Les paramètres sont remis à 1 au redémarrage. Il est conseillé de revenir à 1 tout de suite après les compilations pour éviter des problèmes de connectivité.

Exécution de configure avec tous les includes

La commande suivante suffit à configurer/compiler sans problème :

CPP="/usr/bin/cpp -I/usr/lib/gcc/arm-apple-darwin9/4.2.1/include/ -I/var/mobile/dev/include/" CFLAGS="-I/var/mobile/dev/include/" CPPFLAGS="-I/usr/lib/gcc/arm-apple-darwin9/4.2.1/include/" ./configure --disable-shared --prefix=/usr   

Remplacer /var/mobile/dev/include/ par le chemin dans lequel ont été installés les headers du SDK.

Encoder les vidéos Dailymotion pour les regarder sur l'iPhone

Thomas Bouffon

Dernière découverte en date grâce à ce billet : cclive qui permet, en ligne de commande, de récupérer une vidéo sur un site de streaming.

Dailymotion a sorti une super appli iPhone, mais on ne capte pas dans le métro toulousain, et ça consomme pas mal de forfait 3G.

Seul petit souci, cclive donne un nom peu explicite aux fichiers téléchargés, mais un système d'expressions rationnelles permet de le modifier. Ensuite, si on veut pouvoir la déposer sur l'iPhone, il faut réencoder la vidéo. Après queqlues essais, j'en suis arrivé à la commande suivante :

cclive -S 's/^.*?>//g' -F %t  --stream-pass --stream-exec="wget -q -O - %i | ffmpeg -y -i - -f mp4 -s 432x320 -aspect 432:320 -async 4800 -dts_delta_threshold 1  -qscale 7 -acodec libfaac -r 25 %f.mp4" $URL
  • cclive ne fait qu'extraire l'url du fichier vidéo. ffmpeg ne réussit pas à ouvrir directement l'url, donc on utilise wget dont la sortie est redirigée vers ffmpeg.
  • %f représente le nom du fichier de sortie. Par défaut, il y a un petit souci avec le titre, qui est pollué par du code html. D'où l'utilisation de -S 's/^.*?>//g' -F %t

Prochaine étape, déposer la vidéo sur l'iPhone et le synchroniser en ligne de commande...

Ma première appli iPhone ! Le prochain bus de tisseo (Toulouse)...

Thomas Bouffon

Je n'aime pas chercher ma ligne, ma direction, mon arrêt, regarder l'heure qu'il est, etc. pour savoir quand passe le prochain bus qui passe devant le boulot...
Du coup j'ai codé (bricolé) une appli iPhone pour dire tout ça en 1 clic...

Fonctionnement

On choisit une ligne, l'iPhone télécharge les horaires de bus, lit les directions/périodes disponibles, l'utilisateur effectue son choix, les arrêts disponibles s'affichent. l'utilisateur sélectionne son arrêt, et voilà !
Les réglages sont sauvegardés d'un lancement à l'autre.

A régler

C'est moche, il n'y a pas de vérification de la saisie de l'utilisateur, le code n'est pas très joli (euphémisme), mais ça marche.

libtisseo

Vu que j'ai aussi codé une appli pour la zone de notification dans gnome, et aussi pour m'amuser avec les autotools de gnome, j'ai créé une petite bibliothèque de 4 fonctions.

Sources

libtisseo-0.1.1.tar.gz prochainbus-0.1.tar.gz

Installation sur l'iPhone

Il faut au préalable installer wget avec cydia. Ensuite, en root :

#wget http://blog.fedora-fr.org/public/bigorre65/prochainbus-0.1.deb
#dpkg --install prochainbus-0.1.deb

Puis relancer le SpringBoard

killall SpringBoard

Si jamais, à cause d'une mauvaise saisie, le programme plante et ne veut plus démarrer, il faut supprimer les préférences :

rm ~/Library/Preferences/org.iphone.prochainbusapp.plist

Bien sûr, si vous voulez faire des remarques (à part dire que c'est moche), ou améliorer le code

Développer pour l'iPhone 3.0, partie II

Thomas Bouffon

Après avoir installé le compilateur et les entêtes, il n'y a plus qu'à se lancer !

Le C

Commençons par le plus simple : du code C
Aucune particularité sur l'iPhone par rapport à un PC Gnu/linux, puisque le compilateur est le même. Attention toutefois, les entêtes téléchargés à l'étape précédente ne sont pas (encore) installés dans un répertoire standard (à vrai dire j'ai essayé de créer un package .deb, mais il ne s'est pas installé car il y a un conflit avec des fichiers fournis par odcc-utils, je dois creuser là-dessus..)
gdb est aussi disponible, ainsi que glibc. On a donc pas mal de possibilités pour coder des fonctions "outils".

L'objective-C

Programmer sur son iPhone c'est bien, avoir une interface c'est mieux. Utiliser les fonctionnalités propres à l'iPhone aussi.
Du coup, on n'a pas d'autre choix que d'utiliser les bibliothèques de fonctions Apple, et donc de passer à l'Objective-C. C'est un C étendu, orienté objet. Rien de révolutionnaire, juste une nouvelle syntaxe à apprendre, si on est familier d'autres langages objet.
Pour les personnes ayant peu d'expérience de programmation, cette doc présente le langage à partir des bases. Pour ceux qui sont plus à l'aise, http://pierre-chatelier.developpez.com/tutoriels/mac/objectivec/migration/ est une mine d'informations qui évite de tout reprendre au début. Pour ce qui est des fonctions elles-mêmes, la doc d'Apple, bien fournie, contient toutes les informations intéressantes.

Le packaging

Etape à ne pas négliger, si on ne veut pas installer tout n'importe où et pouvoir désinstaller facilement ses applis. Ici pas de RPMs ;-(" class="smiley mais des .deb. En fait, pour des premiers pas de packaging, la construction est beaucoup plus simple. Il suffit d'installer son arborescence dans un répertoire temporaire, et d'y créer un fichier DEBIAN/control de la forme suivante :

 Package: mapremiereappli
 Version: 0.1

Puis un petit dpkg-deb --build rep_tempo

Application : Télécharger http://antirez.com/misc/iphone-helloworld-1.tar.gz (on peut aussi jeter un oeil sur ce bon tuto en anglais qui détaille l'arborescence d'une appli

Editer le Makefile pour pour prendre en compte le chemin des entêtes du SDK :

 CFLAGS += -I"/var/mobile/dev/include"

Modifier la section install et uninstall, pour pouvoir choisir la destination d'installation :

 install: dist
         /bin/cp -r $(BUILDDIR)/$(APPFOLDER) $(DESTDIR)/Applications/$(INSTALLFOLDER)
         @echo "Application $(INSTALLFOLDER) installed"
         echo killall SpringBoard
 uninstall:
         /bin/rm -fr $(DESTDIR)/Applications/$(INSTALLFOLDER)
         echo killall SpringBoard


Ensuite, on installe dans un répertoire qu'on vient de créer

 make 
 mkdir -p hellloworld-0.1/DEBIAN 
 echo -e "Package: mapremiereappli\nVersion: 0.1" > hellloworld-0.1/DEBIAN/control
 make install DESTDIR=$PWD/hellloworld-0.1
 dpkg-deb --build hellloworld-0.1

on passe en root

 su -
 dpkg-deb --install hellloworld-0.1 $rep_de_dev/hellloworld-0.1.deb
 exit

On relance le SpringBoard pour prendre kes changements en compte :

 killall SpringBoard

Et voilà !

Maintenant qu'on a une appli qui fonctionne et qui s'installe, on peut commencer à la modifier. Par contre, c'est là qu'on a une petite différence avec le pc : taper simplement

 /Applications/HelloWorld.app/HelloWorld

ne permet pas de lancerdirectement l'appli, du coup c'est génant pour débugger. On peut alors passer par syslog, mais si on est fainéant comme moi, j'ai trouvé une petite astuce : on tape la commande, puis on tape sur l'icône sur l'iPhone. Et là, magie, l'appli se lance par dessus le springboard, et les printf et les erreurs s'affichent dans le terminal.

Voilà c'est tout pour ce soir !

Développer pour l'iPhone 3.0, partie I

Thomas Bouffon

J'ai un iPhone. J'aime bien programmer (ou plutôt bidouiller du code). Mais sans SDK Apple ? En fait ce n'est pas très compliqué. Il faut commencer par installer gcc.

Au préalable, il faut un iPhone jailbraké, avec cydia.

Se connecter à l'iPhone.

Il suffit d'utiliser iproxy, fourni dans les versions récentes d'usbmuxd (voir ce billet), et d'avoir installé openssh sur l'iphone avec cydia.

 iproxy 3023 22

Puis dans un autre terminal :

 ssh -p 3023 mobile@localhost

(le mot de passe par défaut est alpine)

Sur des distris moins à la pointe, on peut utiliser itunnel requiert libusb-devel entre autres.
Par exemple pour centos :

 wget http://www.cs.utoronto.ca/~jingsu/itunnel/itunnel-0.0.9.tgz
 tar xzf itunnel-0.0.9.tgz
 cd itunnel-0.9
 make
 ./itunnel

itunnel pointe par défaut le port 3023, donc la commande ssh est la même.

Après ça, on peut par exemple échanger les clés ssh, changer son mot de passe, modifier son .profile pour lancer bash au démarrage de la session.

Avant d'installer gcc

libgcc, requise par gcc n'est pas disponible sur cydia, donc on ne peut pas installer gcc directement.
Au préalable, on installe donc fake-libgcc.
Sur l'iPhone

 wget http://files.getdropbox.com/u/876743/fake-libgcc_1.0_iphoneos-arm.deb
 dpkg -i fake-libgcc_1.0_iphoneos-arm.deb

Ensuite, on peut installer gcc avec cydia.

Installer les entêtes

Pour compiler du code, on va avoir besoin des entêtes (headers). Ils sont fournis avec le SDK Apple, ou on les trouve sur le web : sdk-2.0-headers.tar.gz.

Ensuite on les installe un peu où on veut, ils ne sont nécessaires qu'à la compilation. (Bon, normalement selon les directives linux filesystem hierarchy, on installe les données à partir de tar.gz dans /usr/local/, donc là ce serait /usr/local/include.)

J'ai plutôt installé les headers dans le home, pour être mois intrusif.

 tar xzf sdk-2.0-headers.tar.gz 
 mkdir /var/mobile/dev  
 mv include-2.0-sdk-ready-for-iphone /var/mobile/dev/include

Et voilà, le système est prêt à compiler du code !

A suivre...

Repackager ffmpeg pour pouvoir encoder des vidéos pour l'iphone

Thomas Bouffon

Le codec amr a disparu de la version rpmfusion de ffmpeg, empêchant d'encoder des vidéos pour l'iPhone. Pour résoudre ce problème, il suffit de repackager ffmpeg en suivant les instructions de la doc fedora-fr.

Synchroniser un iPhone 3 non Jailbreaké avec gtkpod (et aussi rhythmbox sous Fedora 12), c'est enfin possible !

Thomas Bouffon

Cette note est principalement là pour ceux qui préfèrent des instructions en français, et s'inspire de la méthode décrite par marcan et de ce post

J'ai d'abord appliqué la méthode décrite par marcan sous Fedora 11 (en packageant tout en rpm pour ne pas trop abimer mon install).
Mais gvfs-afc n'étant pas disponible dans F11, je ne pouvais pas synchroniser mon iPhone avec rhythmbox. Par contre, gtkpod fonctionnait comme un charme.

Du coup, après une installation de Fedora 12 qui s'est très bien passée,(mis à part un petit souci vite réglé grâce à la doc de fedora-fr), je me suis attaqué à la synchronisation.
Attention ce sont des versions de développement, surtout libusb dont dépendent pas mal de paquets dépendent ! Ces instructions proviennent d'un autre blog anglophone principalement. Tout d'abord ajouter quelques paquets avec le dépôt rawhide :

#yum --enablerepo rawhide install usbmuxd-devel libplist-devel libiphone-devel ifuse
#yum --enablerepo rawhide update gvfs-afc

Ensuite, on installe une version de libgpod plus récente :

#rpm -Uvh http://users.linpro.no/ingvar/libgpod/0.7.3-0.git20100105/i686/libgpod-0.7.3-0.git20100105.fc12.i686.rpm

Puis il faut modifier le fichier /lib/udev/rules.d/85-usbmuxd.rules et ajouter OWNER=”usbmux" à la ligne 4 (Pour éviter que usbmuxd ne tourne avec les droits root):

ACTION=="add", SUBSYSTEM=="usb", OWNER="usbmux", ATTR{idVendor}=="05ac", ATTR{idProduct}=="129[0-9]", ATTR{bConfigurationValue}!="$attr{bNumConfigurations}", ATTR{bConfigurationValue}="$attr{bNumConfigurations}", RUN+="/usr/sbin/usbmuxd -v -v -u -U"

Et ajouter l'utilisateur usbmux sus-nommé

#useradd -r -c "usbmuxd daemon user" -d /media -s /bin/false usbmux

Un reboot n'est pas nécessaire (un simple redémarrage de gnome devrait suffire)

Pour pouvoir utiliser gtkpod il faut créer un point de montage (gtkpod n'utilise pas gvfs-afc)

#mkdir /media/iphone
#chown utilisateur_simple /media/iphone
#chgrp utilisateur_simple /media/iphone
#echo user_allow_other >> /etc/fuse.conf

Enfin en utilisateur simple,

ifuse /media/iphone/// 
Une fois la synchronisation terminée, il faut bien penser à démonter l'iphone avec :
///fusermount -u /media/ipone 

Il ne reste plus qu'à ajouter quelques infos dans l'iphone. il faut identifier l'uuid, une chaîne de 40 caractères retournée par la commande :

#lsusb -v | grep -i iSerial

Puis mettre à jour l'iPhone

#ifuse /media/iphone
#ipod-read-sysinfo-extended your_uuid_string /media/iphone
#fusermount -u /media/iphone

Et voilà ! tout est prêt !

Mise à jour un peu douloureuse d’edoras en Fedora 11

Fabien Amann Et passage à l'OS 3.0 dans la foulée