Author Topic: Sviluppare in Magic Lantern su Windows - Istruzioni passo-passo in Italiano  (Read 5196 times)

dlrpgmsvc

  • Senior
  • ****
  • Posts: 398
  • The 7D and 50D Robin Hood
[1] Crearsi un account su BitBucket (andare su "https://bitbucket.org/hudson/magic-lantern" e selezionare l'opzione "sign up". Al termine bookmarkare la propria pagina e segnarsene l'indirizzo. Se ad esempio abbiamo scelto lo username "dlrpgmsvc", avremo il nostro indirizzo bitbucket come segue: "https://bitbucket.org/dlrpgmsvc")

[2] Una volta dentro al nostro account bitbucket, occorre "forkare" il progetto magic-lantern. Per fare questo basta andare nuovamente all'indirizzo "https://bitbucket.org/hudson/magic-lantern" (vedremo che ora siamo loggati in bitbucket in quanto in alto a destra troveremo il simbolo di un omino, che siamo noi) e poi premere il tasto in alto a destra "Fork". In questo modo ci verranno copiati tutti i sorgenti attuali di magic-lantern dentro al nostro account bitbucket: attendiamo la copia, ed al termine se torniamo al nostro account "https://bitbucket.org/dlrpgmsvc" troveremo listato il fork "Magic Lantern": cliccando sul nome entreremo nel nostro fork (derivazione parallela) che potremo lavorarci come desideriamo. Ma per ora lasciamo tutto stare così com'è. Segnamoci che l'indirizzo completo del nostro fork è : "https://bitbucket.org/dlrpgmsvc/magic-lantern"

[3] Scaricare ed installare Virtual Box (andare su "https://www.virtualbox.org/" e selezionare "downloads" a sinistra) selezionando la versione adatta al nostro sistema operativo (in questo caso "windows")

[4] Scaricare la virtual machine dell'ambiente di sviluppo (ubuntu) da qui : http://nanomad.magiclantern.fm/Development%20Box/ (andare dentro alla cartella VirtualBox e scaricare il file : "MagicLantern.ZIP" cliccandoci sopra col tasto sinistro del mouse. Il sistema Windows attiverà lo scaricamento. Dopo averlo scaricato, scompattarlo da qualche parte e ricordarsi dove lo si è messo, in quanto ci servirà dopo. Tenere presente che la User/Root password del sistema è "123456" (senza virgolette). Ci potrà servire in futuro.

[5] Lanciare Virtual Box (se appaioni finestre di avvertimento, premere OK o IGNORA su tutte) e caricarci dentro l'ambiente virtuale Ubuntu di sviluppo (menu "macchina" e poi "aggiungi" e selezionare il file "MagicLantern.vbox" che si trova dove abbiamo scompattato la macchina virtuale), poi farlo partire (lo si seleziona dalla colonna di sinistra con un solo clic del pulsante sinistro così diventa a fondo blu, e poi si preme in alto la frecciona verde che punta verso destra che si chiama "Avvia") E si attende pazientemente che parta l'ambiente. Durante il caricamento appariranno delle finestre: dare OK o IGNORA su tutte. Al termine del caricamento NON cliccare all'interno della finestra ma sul suo menu superiore come descritto nel punto successivo a questo

[6] Attivare la rete via cavo dal menu superiore di Virtual Box (se il pc windows è collegato ad internet via cavo) con questa procedura:

   [ A ] Selezionare dal menu della finestra dell'ambiente virtuale Virtual Box "Dispositivi"  poi
            "Schede di rete...". Assicurarsi che l'opzione "Abilita scheda di rete" sia spuntata, e sull'opzione
            "Connessa a:" selezionare "Scheda con bridge". Sotto l'opzione "Nome:" apparirà il nome della vostra
            scheda di rete installata nel vostro computer. Sotto "Modalità promiscua:" selezionare "permetti tutto"

   [ B ] Premere "OK" in basso e la configurazione è stata completata, e sarà memorizzata anche per le successive
            sessioni a venire

[7] Ora cliccare dentro alla finestra dell'ambiente virtuale: il sistema chiederà se si vuole catturare il mouse: si risponderà affermativamente (premere il pulsante CATTURA). Una volta dentro l'ambiente, entrare nella cartella "magic-lantern" dalla icona "Home" in alto a sinistra (doppio clic col tasto di sinistra sopra di essa). Si ricorda che per uscire col mouse dall'ambiente basta premere il tasto CONTROL (CTRL) di destra, una volta. Per rientrarci, basta cliccare col tasto sinistro del mouse una volta dentro alla finestra dell'ambiente

[8] Cancellare tutto il contenuto della cartella dove ci si trova (magic-lantern), tranne il file "makefile.user" che è ottimizzato per l'ambiente e va lasciato

[9] Scaricare partendo da quella cartella i sorgenti nuovi ed aggiornati al momento, seguendo questa procedura:

   [ A ] premere col tasto di destra in uno spazio vuoto dentro alla cartella stessa e scegliere
       il prompt dei comandi dal menu che ne appare

   [ B ] digitare questo comando : "hg clone -r unified https://bitbucket.org/hudson/magic-lantern"
            Il comando si collega ad internet e scarica gli ultimi sorgenti, generando a partire dalla cartella
            in cui ci si trova (magic-lantern) una nuova cartella (magic-lantern) e scaricandoceli tutti dentro

   ATTENZIONE : Se esiste già la sottocartella "magic-lantern" con dentro i sorgenti, e si desidera ri-scaricarla
                     per aggiornarli, PRIMA VA CANCELLATA (contenuto e cartella compresa). Altrimenti il comando
                     "clone" darà inevitabilmente errore. Dopo aver cancellato e clonato, ricordarsi di ri-copiare
                     nella cartella appena creata e scaricata, il file MAKEFILE.USER che ci siamo salvati !

[10] Duplicare la nuova cartella con dentro i sorgenti e chiamarla "magic-lantern-miamodifica" con copia-incolla
    In questo modo, partendo dalla radice, abbiamo la cartella "magic-lantern" dentro la quale avremo il file
    "makefile.user" e due cartelle: "magic-lantern" e "magic-lantern-miamodifica"

[11] Copiare il file "makefile.user" sia dentro a "magic-lantern" che dentro a "magic-lantern-miamodifica"
     Ora lavoreremo sul repository "magic-lantern-miamodifica" e lasceremo "magic-lantern" come riferimento dal
     quale poi partire per altre modifiche, generando ogni volta una copia di questo repository

[12] Andare nella radice della cartella "/home/magiclantern/magic-lantern", premere il tasto destro in uno spazio libero e lanciare

il prompt dei comandi. A quel punto, digitare al prompt "hgtk" oppure "thg" seguito da invio. Si aprirà una finestra.
Nella colonna di sinistra vengono elencati i repositories (cartelle contenenti i sorgenti), nella fattispecie "magic-lantern" e

basta. Per far apparire "magic-lantern-miamodifica" prima evidenziare in blu, cliccando una volta col tasto sinistro del mouse, la

voce "default" che è sopra alla voce repository "magic-lantern", che è la radice, poi premere con il tasto mouse di destra nella

colonna di sinistra sotto al repository "magic-lantern" in uno spazio vuoto e dal menu che ne appare selezionare "Add repository" e

scegliere quindi "magic-lantern-mia-modifica" Ora apparirà anche il nostro repository nell'elenco nella colonna di sinistra.
Ora tasto destro su "magic-lantern-mamodifica" e selezionare "settings". Nella nuova finestra che appare, a sinistra selezionare

"commit" e sulla destra, alla voce "Username" metterci il vostro nome utente, ad esempio, in questo caso, "dlrpgmsvc" (senza

virgolette). Poi OK in basso a destra. Poi chiudere la finestra di "Tortoise Hg" (X in alto a destra, come in Windows). Lo username

verrà ricordato fintantochè la cartella non verrà cancellata, quindi questa operazione va fatta solo una volta all'inizio e poi

basta. Se non si setta lo username, l'operazione di "commit" darà errore e verrà abortita, quindi è importante non saltare questo

passaggio.

[13] Ora possiamo entrare nella cartella "magic-lantern-miamodifica" ed iniziare a modificare i sorgenti che ci
     interessano. Una volta terminate le modifiche, andare alla radice "magic-lantern-miamodifica", premere col
     tasto destro in uno spazio vuoto e dal menu che ne appare selezionare il prompt dei comandi e lì dentro
     digitare il comando "make clean" e dare invio. Questo comando pulisce eventuali files temporanei di compilazione precedenti.
     Poi digitare solo "make" e dare invio. Questo compila tutti i files .BIN di tutte le versioni di fotocamera
     compreso il .BIN generale (unified, unificato) che può essere copiato in qualsiasi fotocamera.
     Se si vuole risparmiare tempo, digitare "make <nomefotocamera>", ad esempio "make 550d.109" : in questo modo si
     compila solo il .BIN per la propria fotocamera, e si risparmia un sacco di tempo.
     I files .BIN sono quelli da copiare nella fotocamera, sono il risultato della compilazione, e si trovano:
     - Nella cartella "/platform/all" per il .BIN unified
     - Nella cartella "/platform/<nome camera>" per il .BIN specifico di ogni fotocamera, ad esempio, per la
       Canon 550D, si troverà nella cartella "/platform/550d.109" oppure 550d.xxx dove "xxx" è un'altro numero

[14] Ora dobbiamo "tirar fuori" il .BIN. Per farlo ci serviremo di una chiavetta di memoria USB. Inseriamola.
     Windows la vedrà subito. Ora andiamo nel menu in alto della finestra Virtual Box dell'ambiente di sviluppo
     e selezioniamo "Dispositivi" e poi "Dispositivi USB" : apparirà un elenco in cui, in fondo, c'è il nome della
     chiavetta appena inserita. Se non c'è, andare in "Macchina" poi "Impostazioni" poi "USB" e spuntare
     "Abilita controller USB" e poi OK in basso. Tornando a "Dispositivi" -> "Dispositivi USB", cliccare una volta
     col tasto sinistro sopra al nome della chiavetta. Essa sparirà da Windows, che non la vedrà più, ma inizierà
     a vederla il nostro ambiente di sviluppo. A questo punto possiamo copiare su di essa il .BIN da noi creato.
     Fatto questo, stacchiamo la chiavetta fisicamente. Poi reinseriamola, affinchè Windows possa vederla nuovamente.
     A questo punto entriamoci dentro da Windows, e copiamo il .BIN su hard disk o direttamente sulla scheda di
     memoria della fotocamera collegata al nostro computer. Si sconsiglia vivamente di copiare direttamente dall'ambiente
     Linux alla scheda di memoria che poi inseriremo nella fotocamera, o viceversa di copiare da scheda di memoria
     all'ambiente Linux, in quanto Linux genera diverse cartelle e files nascosti che poi vanno ad interferire con il
     filesystem della fotocamera. Stesso discorso vale per copie fra Linux e Windows (da hard disk a hard disk) e viceversa,
     per lo stesso motivo di interferenze fra filesystems. Passando da chiavetta, invece, i files nascosti e di sistema
     Linux si creano ma non danno problemi di interferenza.
 
[15] Quando i tests sulla fotocamera hanno dato esito positivo, possiamo procedere alla condivisione delle nostre
     modifiche. Essa consiste nel proporre le nosre modifiche ai gestori del progetto Magic Lantern. Se essi le
     riterranno valide, le fonderanno nel progetto. Tutto questo si traduce nell'eseguire le seguenti operazioni:
     - Eseguire un "commit" in locale, il quale farà una lista di tutti i files modificati
     - Eseguire un "push" da locale al nostro fork magic-lantern del nostro account bitbucket dei files modificati,
       vale a dire la copia dei files sorgenti da noi modificati dal nostro computer (ambiente di sviluppo virtuale)
       alla fork magic-lantern (insieme di files sorgente) dentro al nostro account bitbucket online, su internet

[16] Andare nella radice della cartella "magic-lantern-miamodifica", premere il tasto destro in uno spazio libero e lanciare il

prompt dei comandi. A quel punto, digitare al prompt "hg commit". Si aprirà una finestra di editor molto semplice. Ciò che chiede

ora è solo di dare una riga descrittiva delle modifiche fatte. Il cursore è già al posto giusto, quindi basta scrivere ad esempio

"Modificata la terza voce di menu", ed al termine premere su tastiera CONTROL+X : verrà chiesto se salvare il file del riassunto

delle modifiche: premere il tasto da tastiera Y. Ora chiede la posizione dove salvare ed il nome del file: lasciare quello che

propone premendo INVIO sulla tastiera. Fatto questo si torna automaticamente al prompt dei comandi. Fatto.

[17] Restando sempre nella radice della cartella "magic-lantern-miamodifica", digitare al prompt il comando "hg push

https://bitbucket.org/dlrpgmsvc/magic-lantern" a premere INVIO sulla tastiera. Ovviamente "dlrpgmsvc" andrà sostituito con il nome

con cui avrete creato il VOSTRO repository su BitBucket. Con questo comando andiamo a caricare le nostre modifiche dal nostro pc in

locale al repository online su BitBucket. Ovviamente ci verrà richiesto lo username e la password che avremo scelto al momento della

registrazione su BitBucket, altrimenti chiunque potrebbe caricare files nel nostro spazio e sporcarcelo, così, a piacimento. Alla

domanda "user: " digitare il vostro username, ed alla domanda "password: " digitare la vostra password. Notare che mentre digitate

la password non viene scritto nulla sul video, nemmeno pallini o asterischi: ciò è normale. Premete INVIO alla fine. verranno

scritte le operazioni eseguite. Al termine si torna automaticamente al prompt dei comandi. Abbiamo finito con l'aggiornamento dei

files nel nostro repository online. Ora i files nel nostro repository online sono "allineati" o "in sync" o "sincronizzati" (vale a

dire UGUALI) con quelli che abbiamo in locale sul nostro computer. Possiamo chiudere ora con la X in alto a destra la finestra di

terminale.

[18] Prima di lanciare una pull request, dobbiamo essere coscienti che nel frattempo che noi stavamo facendo le nostre modifiche
     al codice di magic lantern, anche altri ne hanno fatte ed hanno aggiornato il repository principale.
     Questo è importante, in quanto, se al momento della nostra pull request il nostro repository forkato non è aggiornato con
     quello principale, il sistema bitbucket darà errore e la nostra pull request non sarà accettata in modo del tutto automatico.
     Per evitare questo, procediamo come segue: andiamo in internet tramite Windows, ed entramio nel nostro account bitbucket.
     Nel caso del nostro esempio, andiamo in "https://bitbucket.org/dlrpgmsvc/magic-lantern". Poi premiamo il pulsante in alto
     "Compare". Poi alla sinistra assicuriamoci di avere il nostro repository ("dlrpgmsvc/magic-lantern" nel nostro esempio) e
     subito sotto assicuratevi di selezionare (se non lo è già) "unified". Alla destra assicuratevi di avere "hudson/magic-lantern"
     e subito sotto "unified". Subito sotto vedrete le modifiche che VOI avete fatto, rispetto al repository originale. Se non
     avete fatto modifiche, ci sarà scritto "There are no changes".
     Dopo che avrete verificato che le vostre modifiche ci siano, dovrete verificare anche le modifiche che il repository ufficiale
     ha nel frattempo fatto rispetto al vostro fork online. Per fare questo, selezionate "Swap source and destination" appena
     sotto il blocco "Hudson" alla destra della pagina web. Attendete un poco e vedrete tutte le modifiche che sono state fatte al
     repository principale mentre voi stavate lavorando alle vostre modifiche. Ora voi DOVETE aggiornare il vostro repository
     alle ultime modifiche che gli altri hanno fatto, altrimenti la vostra richiesta di pull request sarà rifiutata. Per fare
     questo, semplicemente premete il pulsante "Merge" sopra al blocco di destra rappresentante il vostro repository. Apparirà una
     finestra: premete "Merge" in basso. Attendete e poi vedrete che la finestra sparirà e sotto ci sarà scritto "There are no
     changes". Ottimo ! Adesso potete procedere alla pull request al prossimo punto [19]: vi consiglio di farlo al più presto
     senza aspettare oltre, altrimenti se nel frattempo dovessero essere inglobate altre modifiche al repository principale, la
     richiesta di pull non adrebbe a buon fine.

[19] Ora abbiamo il nostro "fork" o "derivazione" di magic lantern aggiornata online, ma è sempre una "nostra" modifica.
Se vogliamo fare in modo che tutti possano beneficiare dei cambiamenti che abbiamo apportato, occorre generare una cosiddetta

"pull-request" o "richiesta di tirar dentro".
Cioè chiediamo ai gestori del progetto magic lantern di voler tirar dentro ai loro sorgenti le modifiche che noi abbiamo fatto.
In questo modo, se loro accetteranno, la prossima compilazione automatica notturna (nightly build) produrrà un file AUTOEXEC.BIN

generale (unified, vale a dire valido per tutti i modelli di macchina fotografica) che comprenderà anche le nostre modifiche, siano

esse generali (valide per tutti i modelli di macchina fotografica) che particolari (valide solo per il modello per le quali sono

state fatte, ad esempio solo per la canon 550D).
Andiamo su internet ed entriamo nel nostro repository BitBucket relativo a magic lantern (nel nostro esempio andremo all'indirizzo

"https://bitbucket.org/dlrpgmsvc/magic-lantern") ed una volta acceduto lì dentro premeremo il pulsante in alto "Pull Request" (il

pulsante, non la voce di menu in basso "Pull requests". Verifichiamo che la sorgente (la parte a sinistra) sia "dlrgmsvc / Magic

Lantern" e "unified" e che la destinazione (la parte a destra) sia "hudson/magic-lantern" e "unified". Sotto, mettere un titolo

descrittivo breve delle nostre modifiche in "Title" ed una descrizione più estesa ed esauriente in "Description". Premere poi il

pulsante BLU in basso "Create pull request".

[20] Ora dobbiamo seguire l'iter della nostra richiesta di pull fino alla sua accettazione o rifiuto: accediamo al repository

originale di magic lantern: "https://bitbucket.org/hudson/magic-lantern" e poi premere sulla scritta BLU (NON il pulsante in alto

"Pull Request") che recita "Pull requests (n)" dove (n) è un numero che indica le richieste di pull attualmente in fase di

valutazione. Verificheremo che ci sia anche la nostra. A destra di ogni richeista di pull vedremo un fumetto con un numero accanto,

il quale indica quali commenti sono stati ricevuti (richieste di delucidazione, opinioni ed altro), e un tondino con una spunta, che

se presente indica l'accettazione della richiesta. E' importante seguire la propria richiesta di pull sino alla sua accettazione o

rifiuto, altrimenti potrebbe restare lettera morta se non rispondiamo ad eventuali richieste di delucidazioni in merito. Una volta

accettata la nostra richiesta di pull, ritroveremo le nostre modifiche nella successiva compilazione automatica notturna, che

potremo (noi e tutti gli altri) scaricare da questo indirizzo: "http://nanomad.magiclantern.fm/nightly/" cliccando sull'ultimo file

in fondo, con estensione .ZIP.




[NOTA 1] Per chiudere la macchina virtuale salvando tutte le modifiche fatte fino a quel momento, premere sul cerchietto in alto a

sinistra blu con disegnato un topolino bianco e dal menu che ne esce selezionare la voce "LOG OUT" e dalla finestra che ne appare

selezionare il tastone "SHUT DOWN". Attendere che si chiuda tutto.

[NOTA 2] Per aprire il "terminale" o "prompt dei comandi", selezionare l'opzione di menu "Open terminal here"

[NOTA 3] Per modificare un file, cliccarci sopra col tasto destro del mouse e selezionare da menu "Open with Leafpad"

[NOTA 4] I sorgenti si trovano nella cartella "SRC"

[NOTA 5] Dopo aver portato a termine una modifica e dopo che è stata inglobata (o rifiutata) nel repository principale, e
         appena prima di iniziare una nuova tranche di modifiche, ricordatevi SEMPRE di cancellare la sotto-cartella "magic-lantern"
         e di ricrearla da zero, ripartendo dal punto [8] e proseguendo ai successivi. In tal modo lavorerete sempre sui sorgenti
         aggiornati
If you think it's impossible, you have lost beforehand

screamer

  • Member
  • ***
  • Posts: 157
Guida molto utile, e veramente ben fatta, complimenti ;)
always trying to use the 100% of magic lantern..
Gear:
Canon 60D, all the samyang lenses, Canon 50 mm 1.4, Canon 60mm macro, Canon 70-300 usm, Sigma 4.5mm fisheye, Sigma 17-70 2.8, Canon 40mm f2.8 pancake, all the Lensbabies and a lot of other pieces, Flash metz 58 af2

dlrpgmsvc

  • Senior
  • ****
  • Posts: 398
  • The 7D and 50D Robin Hood
Guida molto utile, e veramente ben fatta, complimenti ;)

Grazie mille ! Sono contento che sia utile ed apprezzata !  ;)
If you think it's impossible, you have lost beforehand

dlrpgmsvc

  • Senior
  • ****
  • Posts: 398
  • The 7D and 50D Robin Hood
[11 BIS] Attenzione! Nelle ultime releases è cambiato un riferimento.
             Occorre modificare "makefile.user" dentro alla cartella magiclantern principale di compilazione facendo in modo che
             contenga la seguente linea così modificata :
       
             GCC_VERSION=-4.7.3
   
             Nella versione precedente era senza il segno meno (-) davanti. Ora ci va.
If you think it's impossible, you have lost beforehand