Aiuto per compilazione amule adunanza con entware

entware

#21

TERZA PARTE: compiliamo e creiamo i pacchetti!

Ok, prima dobbiamo compilare il pacchetto delle wxWidgets e poi quello di amuleadunanzaSVN (o amuleGIT).

Verranno compilati non solo questi due pacchetti: durante il processo vengono compilati anche i pacchetti da cui wxWidgets e amuleadunanza (o amule) dipendono, quindi il processo impiegherà un po’ di tempo.

In generale, il comando da usare è qualcosa tipo

make package/NOMEPACCHETTO/compile

opzionalmente possiamo anche specificare il parametro .jN (con N dipendente dal numero di core che si hanno e si vogliono usare) per “parallelizzare esplicitamente” i processi di compilazione (io per ora suggerisco di non usare questo parametro).

Al solito, in questo modo verranno omessi i essaggi di warning/errori della compilazione, se qualcosa andasse storto suggersisco di fare esattamente quello che suggerisce il meccanismo di compilazione dei pacchetti Entware, ovvero rilancare usando anche i parametri “-j1 V=S”

Iniziamo con le wxwidgets.
OCCHIO (io qui mi confondo sempre): se ricordate nel make menuconfig abbiamo messo la “m” sulla voce “libwxbase31”.
Mi aspetterei quindi, come accade per buona parte dei pacchetti di Entware, di dover usare proprio il nome “libwxbase31”.
Per creare il Makefile io ho scopiazzato alegramente quello delle “vecchie” wxWidgets 2.x e quindi mi sono ritrovato la stessa convenzione usata per quelle.
Per compilare il pacchetto, con questa convenzione, il nome da usare è “wxbase31”
Quindi, da terminale, ci si sposta inizialmente nella solita directory “Entware” e poi si usa semplicemente il comando

make package/wxbase31/compile

Vedrete che partiranno compilazioni di altri pacchetti (necessari alla compilazione delle wxWIdgets) e alla fine partirà proprio la compilazione delle wxwidgets, nella mia macchina l’output dopo questo comando è infatti

 make[1] package/wxbase31/compile
 make[2] -C package/libs/toolchain compile
 make[2] -C feeds/packages/libs/expat compile
 make[2] -C package/libs/zlib compile
 make[2] -C /home/mrhyde/entware_custom_feeds_mr_hyde/wxbase31 compile

(in realtà ci sono anche un po’ di warning all’inizio, per brevità ho evitato di riportarli)

Una volta terminato possiamo lanciare la compilazione di amuleadunanzaSVN (o amuleGIT):

make package/amuleadunanzaSVN/compile

Se è la prima volta che lanciate questo make aspettatevi una compilazione non brevissima (sono un bel po’ infatti i pacchetti “dipendenze” necessari che verranno compilati prima)

Nel mio caso l’output è

 make[1] package/amuleadunanzaSVN/compile
 make[2] -C package/libs/toolchain compile
 make[2] -C package/libs/zlib compile
 make[2] -C package/libs/gettext-full host-compile
 make[2] -C package/libs/gettext-full compile
 make[2] -C package/libs/libiconv-full compile
 make[2] -C package/devel/binutils compile
 make[2] -C feeds/packages/libs/expat compile
 make[2] -C /home/mrhyde/entware_custom_feeds_mr_hyde/wxbase31 compile
 make[2] -C feeds/oldports/libcrypto++ compile
 make[2] -C package/libs/libtool compile
 make[2] -C feeds/packages/libs/libjpeg compile
 make[2] -C feeds/packages/libs/libpng compile
 make[2] -C feeds/packages/libs/libwebp compile
 make[2] -C feeds/packages/libs/libgd compile
 make[2] -C package/libs/ncurses host-compile
 make[2] -C package/libs/ncurses compile
 make[2] -C package/libs/readline compile
 make[2] -C /home/mrhyde/entware_custom_feeds_mr_hyde/amuleadunanzaSVN compile

Ok, ora la parte di compilazione dovrebbe essere finita.
I comandi sopra, oltre che effettuare la compilazione vera e propria, hanno in realtà creato i pacchetti che possono essere installati su Entware.

A questo punto occorre recuperare questi pacchetti e copiarli sulla macchina Entware per poi installarli con il comando opkg.

Se è andato tutto bene i pacchetti dovrebbero essere in

Entware/bin/targets/NOMECONFIGURAZIONEARCHITETTURAEVERSIONE/NOMELIBCUSATE/packages

Quindi, se avete usato tutto “di default” nei passaggi precedenti e l’architettura è “aarch64” (e comunque nel mio caso) la dir è

Entware/bin/targets/aarch64-3.10/generic-glibc/packages/

Invece, quando compilo per il mio NAS che ha x86_64 ho

Entware/bin/targets/aarch64-3.10/generic-glibc/packages/

Io in realtà non me lo ricordo mai, però ricordo che l’estensione è “.ipk” quindi per trovarli uso un find tipo

find ./ -iname "*.ipk"

I pacchetti da copiare sono solo quelli che abbiamo esplicitamente creato noi (in caso di bisogno le altre dipendenze vengono automaticamente scaricate), in questo caso sono quindi

libwxbase31_3.1.3-1_aarch64-3.10.ipk

e

amuleadunanzaSVN_2016.1b1-r599-1_aarch64-3.10.ipk

Io, per comodità, ho SSH come servizio sul NAS e uso un scp.

Una volta spostati sul NAS ricordate che occorre installare prima le wxwidgets e poi amuleadunanzaSVN (o amuleGIT se invece avete compilato questo)

ATTENZIONE: prima di installare il tutto potrebbe valer la pena aggiornare i pacchetti Entware già installati sul NAS con

/opt/bin/opkg update
/opt/bin/opkg upgrade

Quindi i comandi da eseguire sul NAS per installare i nostri pacchetti sono

cd <directory dove avete copiato i pacchetti>
/opt/bin/opkg install libwxbase31_3.1.3-1_aarch64-3.10.ipk
/opt/bin/opkg install amuleadunanzaSVN_2016.1b1-r599-1_aarch64-3.10.ipk 

Ok, ora è installato tutto.
Una pria verifica per vedere se sembra funzionare è semplicemente lanciare il demone con “–version” come parametro.

Se avete usato i miei feed allora il pacchetto dovrebbe aver creato una dir

/opt/amueadunanzaSVN

In questa dir c’è una bin con i vari eseguibili, quindi dovreste poter eseguire

cd /opt/amuleadunanzaSVN/bin
./aamuled --version

Se vi appare il messaggio con la versione tutto ok, se invece ci sono errori (librerie mancanti o altro) allora mi sa che c’è ancora da lavorarci un po’ :slight_smile:

Notate poi che io ho creato il pacchetto sulla falsa riga del pacchetto “standard” di Entware, quindi dovrebbe esservi anche uno script in

/opt/etc/init.d

Io obiettivamente non l’ho mai usato (e neanche mi sono interessato al come si lancia con questo script), per usare amuled/amuleweb sul NAS in genre:

  1. creo un utente sul nas “adunanza” (voglio evitare di eseguire amuled come admin)
  2. DIRETTAMENTE DAL NAS (quindi non in remoto) apro la console testuale, faccio login come admin e quindi faccio “su - adunanza” per diventare l’utente adunanza a tutti gli effetti quindi uso uno script che lancia il demone (in un loop, in modo che se poi va in crash, viene automaticamente ri-eseguito)

Se volete poi posso eventualmente postare altri dettagli sul come faccio io.
Per ora se siete arrivati qui avete a disposizione sul NAS amuled,amuleweb,amulecmd (in realtà anche mulefileview che credo di non aver mai usato in vita mia), il resto lo dovete fare come lo fareste su qualunque distro linux (quindi creazione file di configurazione, password ecc ecc), ma questa, come diceva qualcuno, è tutta un’altra storia…

Ciao e alla prossima,
Mr Hyde