lundi 31 janvier 2011

Compilation de rsyncrypto pour le Synology DS-207+

Ce week end, j'ai décidé de compiler rsyncrypto pour le Synology DS-207+. Je vous livre la procédure suivie sur mon Ubuntu.

NB: je n'ai pas testé l'option pour zipper les contenus mais je livre quand meme la procédure qui devrait fonctionner meme si elle n'est pas complète

Tout d'abord, télécharger le toolchain pour cross compiler sous Ubuntu: http://en.sourceforge.jp/projects/sfnet_dsgpl/downloads/DSM%203.0%20Tool%20Chains/Marvell%2088F5281%20Linux%202.6.15/gcc343_glibc232_88f5281.tgz/

Passer root:
sudo su
Décompresser l'archive dans un répertoire: moi dans /home/user/src/
tar xzvf ../Downloads/gcc343_glibc232_88f5281.tgz
mv usr/local/arm-marvell-linux-gnu/ .

Se mettre en mode de développement:
cd arm-marvell-linux-gnu/bin
PATH="$PATH:/home/user/src/arm-marvell-linux-gnu/bin/:/usr/bin:/bin"

Télécharger argtable 2.12 et compiler:
http://www.icewalkers.com/Linux/Software/51540/argtable.html
tar xzvf /home/user/Downloads/argtable2-12.tar.gz
cd argtable2-12
./configure --host=arm-marvell-linux-gnu --target=arm-marvell-linux-gnu --build=i686-pc-linux --prefix=/usr/local
make CC=arm-marvell-linux-gnu-gcc ARCH=arm
cp src/.libs/libargtable2.so* ../../lib/
cd ..

Télécharger openssl et le compiler (juste pour avoir la lib et les headers, je suis sur qu'il y a un moyen plus simple basé sur un retrieve depuis le syno, mais ceci marche pour moi)
http://www.openssl.org/source/openssl-1.0.0c.tar.gz
tar xzvf /home/user/Downloads/openssl-1.0.0c.tar.gz
cd openssl-1.0.0c/
export cross=arm-marvell-linux-gnu-
./Configure dist
make CC="${cross}gcc" ARCH=arm AR="${cross}ar r" RANLIB="${cross}ranlib"
cp libcrypto.a ../../lib/
cd ..

Télécharger rsyncrypto (moi j'ai chopé les sources via la commande SVN indiquée sur sourceforge) et compiler:
cp -r path_to_rsyncryptoSVN/rsyncrypto/tags/V1.12/ rsyncrypto
cd rsyncrypto
./bootstrap
ln -s ../openssl-1.0.0c/include/openssl/ .
ln -sf /home/user/src/arm-marvell-linux-gnu/bin/argtable2-12/src/argtable2.h /home/user/src/arm-marvell-linux-gnu/include/argtable2.h
./configure --host=arm-marvell-linux-gnu --target=arm-marvell-linux-gnu --build=i686-pc-linux --prefix=/usr/local
make CC=arm-marvell-linux-gnu-gcc ARCH=arm
make all-am
cd ..

Copier les fichiers générés vers le synology
cp rsyncrypto/rsyncrypto{,_recover} argtable2-12/src/.libs/libargtable2.so.0.1.7 SYNOLOGY

su le DS207+:
ln -s libargtable2.so.0.1.7 libargtable2.so.0
ln -s libargtable2.so.0.1.7 libargtable2.so
mv libargtable2.so* /lib
ldconfig

Pour gzip: le gzip fourni doit marcher mais ne sera pas optimisé pour l'utilisation avec rsyncrypto. Du coup il est conseillé de télécharger le patch suivant:
télécharger gzip 1.3.13
http://article.gmane.org/gmane.comp.gnu.gzip.bugs/258
URL du patch:
http://svn.exactcode.de/t2/trunk/package/archiver/gzip/gzip.rsync.patch
copier la section du patch à proprement parler: (starting at --- +++ lines), remplacer tous les 'b/' avec des '' et placer le fichier obtenu dans le répertoire src de gzip (nommé patch)
patch -p0 < patch
J'ai aussi du modifier le temps de la compilation le fichier/home/brehon/src/arm-marvell-linux-gnu/bin/../lib/gcc/arm-marvell-linux-gnu/3.4.3/../../../../arm-marvell-linux-gnu/sys-include/getopt.h
Pour ajouter ligne 150 (sous le #ifndef):
#ifdef YANNICK
et ligne 164 (sous la déclaration __getopt_internal)
#endif /*Yannick*/
La compilation se fait ensuite comme précédemment
./configure --host=arm-marvell-linux-gnu --target=arm-marvell-linux-gnu --build=i686-pc-linux --prefix=/usr/local
make CC=arm-marvell-linux-gnu-gcc ARCH=arm
et on peut copier les fichiers générés vers le syno :) voilà.

Enjoy

PS: edit: les fichiers compilés sont mis à disposition ici: http://dl.free.fr/alw7TCU1a . s'ils n'y sont plus, contactez moi pour une copie.

4 commentaires:

  1. Super !
    Y a moyen de mettre le fichier compilé à disposition ?

    RépondreSupprimer
  2. Merci.

    Hum... je peux demander un petit tuto pour l'install ? Je copie les fichiers où ? Il faut les mettre quelque part en particulier ?
    Merci !

    RépondreSupprimer
  3. pour les fichiers argtable, cf ci dessus
    pour rsyncrypto, vous le mettez où vous voulez, mais le mieux est surement dans /usr/bin pour que ça se retrouve dans la PATH
    pour les autres executables générés par gzip, /usr/bin me semble une bonne idée, mais j'ai pas testé

    RépondreSupprimer