Ovviamente, il primo passo è procurarsi i sorgenti di OpenWrt. A tal proposito inizieremo creandoci una bella cartella in cui mettere tutte le robette che ci occorrono, assicurandoci di avere almeno 2 GByte di spazio libero su disco. In questo esempio creeremo una cartella OpenWrtCompile nella nostra home:
blaxwan@fabbblnx ~ $ mkdir OpenWrtCompile blaxwan@fabbblnx ~ $ cd OpenWrtCompile
Il team di sviluppo di OpenWrt usa Subversion (SVN) come piattaforma di versioning. Si tratta di una piattaforma molto potente, più semplice da usarsi rispetto al precedente standard-de-facto CVS (Concurrent Versioning System), per lo sviluppo collaborativo attraverso una rete. Consente di mantenere traccia degli aggiornamenti e delle versioni di ogni porzione di codice modificato dai vari sviluppatori in modo molto intuitivo e veloce. Per questo, quindi, se non lo si ha già a disposizione, bisognerà procurarsi SVN per il download dei sorgenti di OpenWrt. Le modalità, ovviamente, variano a seconda della distribuizone utilizzata sul portatile così come per l'installazione di qualsiasi altro programma. Una volta che avremo a disposizione SVN, ci porteremo nella directory creata precedentemente per scaricarvi il codice OpenWrt tramite il comando svn co (svn checkout):
blaxwan@fabbblnx ~/OpenWrtCompile $ svn co https://svn.openwrt.org/openwrt/trunk/ .................................. ...download di tutti i sorgenti... .................................. A trunk/package/linux-atm/patches/400-stdint_local_instead_of_host.patch A trunk/package/linux-atm/Makefile A trunk/Makefile A trunk/README U trunk Checked out revision 6261. blaxwan@fabbblnx ~/OpenWrtCompile $
Alla fine del processo SVN quindi avrà scaricato l'ultima versione (6261 nell'esempio) del source tree di OpenWrt. A questo punto possiamo procedere nello stesso modo per scaricare anche i pacchetti aggiuntivi:
blaxwan@fabbblnx ~/OpenWrtCompile $ svn co https://svn.openwrt.org/openwrt/packages .................................. ...download di tutti i sorgenti... .................................. A packages/multimedia/peercast/Makefile A packages/multimedia/palantir A packages/multimedia/palantir/patches A packages/multimedia/palantir/patches/01-opt_flags.patch A packages/multimedia/palantir/Makefile Checked out revision 6261. blaxwan@fabbblnx ~/OpenWrtCompile $
Fatto questo, nella nostra cartella di lavoro avremo due sottocartelle che contengono, rispettivamente, i sorgenti SVN del trunk OpenWrt e dei suoi pacchetti.
blaxwan@fabbblnx ~/OpenWrtCompile $ ls -l total 8 drwxr-xr-x 11 blaxwan users 4096 Feb 3 09:33 packages drwxr-xr-x 10 blaxwan users 4096 Feb 3 09:32 trunk
Il sourcetree principale di OpenWrt, che a questo punto si troverà nella sottodirectory ~/OpenWrtCompile/trunk della nostra directory di lavoro, cercherà nella sua directory ~/OpenWrtCompile/trunk/packages/ i pacchetti compilabili, per questo conviene creare dei link all'interno di questa cartella che puntino ai pacchetti aggiuntivi scaricati invece nella cartella ~/OpenWrtCompile/packages/:
blaxwan@fabbblns ~/ $ cd ~/OpenWrtCompile/trunk/package blaxwan@fabbblnx ~/OpenWrtCompile/trunk/package $ ln -sv ../../packages/*/* . ........ `./monit' -> `../../packages/admin/monit' ........ ........ `./vim' -> `../../packages/utils/vim' `./wx200d' -> `../../packages/utils/wx200d' blaxwan@fabbblnx ~/OpenWrtCompile/trunk/package $
Fatto questo, possiamo procedere a scaricare anche i sorgenti di X-Wrt che è un progetto separato da OpenWrt e per questo si appoggia ad un repository SVN differente:
blaxwan@fabbblnx ~/ $ cd ~/OpenWrtCompile/trunk/package blaxwan@fabbblnx ~/OpenWrtCompile/trunk/package $ svn co http://svn.berlios.de/svnroot/repos/xwrt/kamikaze/package/webif ............. ............. ............. A webif/ipkg/webif-lang-ca.control A webif/ipkg/webif.control A webif/ipkg/webif-lang-ru.control A webif/ipkg/webif.postinst A webif/Makefile Checked out revision 2444. blaxwan@fabbblnx ~/OpenWrtCompile/trunk/package $
A questo punto, nella nostra cartella ~/OpenWrtCompile avremo le ultime versioni (nell'esempio 6224, 6224 e 2444) rispettivamente di OpenWrt, dei suoi pacchetti aggiuntivi e di X-Wrt. Successivamente, qualora volessimo aggiornare in un solo colpo tutti questi sorgenti basterà soltanto:
blaxwan@fabbblnx ~/OpenWrtCompile $ svn up trunk packages trunk/package/webif At revision 6261. At revision 6261. At revision 2444. blaxwan@fabbblnx ~/OpenWrtCompile $
Per la cronanca, la "A" di fianco al nome del file significa "Added", e si tratta quindi di un file aggiunto nella versione che si sta scaricando, una "M" significa "Modified" e si tratta di una versione aggiornata dello stesso file mentre invece una "D" significa che il file è stato eliminato nella nuova versione e per questo SVN lo eliminerà anche dal nostro disco. Per ulteriori informazioni su SVN si rimanda all'ottima documentazione ufficiale. Soltanto vedendo la quantità di sorgenti scaricati da SVN in questa fase possiamo comprendere immediatamente quanto utile e potente possa essere un sistema di versioning ed apprezzare la semplicità di utilizzo di SVN!
1. Checkout SVN dello stable tree
cd ~ mkdir OpenWrtCompile cd OpenWrtCompile svn co https://svn.openwrt.org/openwrt/tags/kamikaze_7.09/ svn co https://svn.openwrt.org/openwrt/packages cd kamikaze_7.09/package/ ln -sv ../../packages/*/* . svn co http://svn.berlios.de/svnroot/repos/xwrt/tags/kamikaze_7.09/package/webif/