Pagina 1 di 2
servizio Arcade Italia - MAME nightly build
Inviato: 26/10/2014, 13:35
da pucci
che ne pensate se provassimo a mettere su un servizio di compilazione automatica delle release SVN del MAME.
In pratica un batch che automaticamente (ogni tot ore, esempio 4) compila in automatico il MAME prendendo i sorgenti dalla SVN.
Una cosa simile a quella che già avviene sul sito della ScummVM.
Fattibile?
Sarebbe un altro punto di forza per il forum.
Re: servizio Arcade Italia - MAME nightly build
Inviato: 27/10/2014, 19:45
da motoschifo
Non ho mai approfondito questo tipo di attività e tempo fa avevo visto qualche tool/script per farlo (non Windows).
Secondo me rischia di diventare uno spreco di risorse in quanto la compilazione Mame/Mess impegna parecchia cpu/ram e sarebbe inutile ripeterlo 6 volte al giorno tutti i giorni senza una reale necessità.
Per iniziare si potrebbe fare qualche script per mettere in piedi una compilazione con un doppio click con eventuale upload su cartella condivisa.
Poi se c'è interesse si schedula la cosa in qualche modo.
Re: servizio Arcade Italia - MAME nightly build
Inviato: 27/10/2014, 20:47
da PaTrYcK
Sarebbe un ottima iniziativa!
Re: servizio Arcade Italia - MAME nightly build
Inviato: 28/10/2014, 7:14
da pucci
Se la potenza richiesta è molta facciamolo solo una volta al giorno (magari alle 3 di notte quando su un forum italiano c'è collegata poca gente)
Re: servizio Arcade Italia - MAME nightly build
Inviato: 28/10/2014, 21:05
da motoschifo
Allora oggi in pausa pranzo non sapevo cosa fare (si fa per dire...) e così ho messo in pista un paio di script per le compilazioni.
In particolare lo script si preoccupa di questo:
1) scarica la versione dal server svn o se già presente sul disco la aggiorna con le ultime modifiche
2) compila mame e mess
3) mette gli eseguibili in file zip, già pronti per essere caricati da qualche parte
Ho creato lo script sotto Linux e poi ne ho fatto uno simile per Windows, ma qualcosa ho lasciato indietro. Sotto Windows è decisamente più complicato fare le cose... specialmente quando occorre legare i vari programmi tra di loro. Ho usato la command line di 7zip per comprimere visto che di standard non c'è nulla (anche il "compress" va installato a parte).
Per adesso mi sono preoccupato solo dei 64 bit, ma convertirlo per le versioni a 32 non è un grosso problema. Fare uno script unico è fattibile, diciamo che ho dato qualche spunto su come partire se si vuole mettere in pista questo servizio.
Sotto Windows si potrebbe anche realizzare un programmino ad hoc anzichè usare degli script, sarebbe decisamente più facile/comprensibile da scrivere.
Questo è per Linux, che immagino non servirà a nessuno
Codice: Seleziona tutto
#!/bin/bash
# Configurazione
BASE="/home/michele/Scrivania"
MAKE_OPTION="-j4"
MAKE_MAME=Y
MAKE_MESS=Y
# Recupero numero revisione svn
SVN=$(svn info https://github.com/mamedev/mame/trunk |grep '^Revisione:' | sed -e 's/^Revisione: //')
if [ ! -n "$SVN" ]; then
SVN=$(svn info https://github.com/mamedev/mame/trunk |grep '^Revision:' | sed -e 's/^Revision: //')
fi
if [ ! -n "$SVN" ]; then
echo "ERRORE Recupero revisione da SVN..."
exit 1
fi
echo "SVN revision: $SVN"
# Generazione solo se ci sono stati commit
#touch "$BASE/mame/svnrevision"
X=
if [ -f "$BASE/mame/svnrevision" ]; then
X=$(cat "$BASE/mame/svnrevision")
fi
if [ "$X" == "$SVN" ]; then
echo "Compilazione non necessaria"
exit 0
fi
# Checkout/update dal repository
if [ -d "$BASE/mame" ]; then
cd "$BASE/mame"
svn update --non-interactive --accept 'theirs-full' mame
else
cd "$BASE"
svn checkout --non-interactive https://github.com/mamedev/mame/trunk mame
fi
if [ $? -ne 0 ]; then
echo "ERRORE Recupero dati da SVN..."
exit 2
fi
# Generazione MAME
if [ "$MAKE_MAME"=="Y" ]; then
cd "$BASE/mame"
rm "$BASE/mame64" -f
make ${MAKE_OPTION} TARGET=mame
if [ $? -ne 0 ]; then
echo "ERRORE Compilazione MAME..."
exit 3
fi
if [ -f "$BASE/mame64" ]; then
rm "$BASE/mame_x86_64-svnbuild_${SVN}.zip" -f
zip -9 "$BASE/mame_x86_64-svnbuild_${SVN}.zip" mame64
else
echo "ERRORE Compilazione MAME..."
exit 3
fi
fi
# Generazione MESS
if [ "$MAKE_MESS"=="Y" ]; then
cd "$BASE/mame"
rm "$BASE/mess64" -f
make ${MAKE_OPTION} TARGET=mess
if [ $? -ne 0 ]; then
echo "ERRORE Compilazione MESS..."
exit 4
fi
if [ -f "$BASE/mess64" ]; then
rm "$BASE/mess_x86_64-svnbuild_${SVN}.zip" -f
zip -9 "$BASE/mess_x86_64-svnbuild_${SVN}.zip" mess64
else
echo "ERRORE Compilazione MESS..."
exit 4
fi
fi
echo "Compilazione completata";
cat "$SVN" > "$BASE/mame/svnrevision"
e questo è per Windows
Codice: Seleziona tutto
@echo off
rem Configurazione
set BASE=c:\svnroot\mame
set MAKE_OPTION=-j4
set MAKE_MAME=Y
set MAKE_MESS=N
set MINGW_PATH=C:\svnroot\mingw64-w64
rem Riferimenti 7zip:: http://7-zip.org/download.html
rem Recupero numero revisione svn
set SVN=xxxxx
rem SVN=$(svn info https://github.com/mamedev/mame/trunk |grep '^Revisione:' | sed -e 's/^Revisione: //')
rem if [ ! -n "$SVN" ]; then
rem SVN=$(svn info https://github.com/mamedev/mame/trunk |grep '^Revision:' | sed -e 's/^Revision: //')
rem fi
rem if [ ! -n "$SVN" ]; then
rem echo ERRORE Recupero revisione da SVN...
rem exit 1
rem fi
rem echo SVN revision: $SVN
rem Generazione solo se ci sono stati commit
rem X=
rem if [ -f "$BASE/mame/svnrevision" ]; then
rem X=$(cat "$BASE/mame/svnrevision")
rem fi
rem if [ "$X" == "$SVN" ]; then
rem echo Compilazione non necessaria
rem exit 0
rem fi
rem Checkout/update dal repository
goto svn_after
if exist "%BASE%\mame" goto svn_update
echo CHECKOUT SVN...
cd "%BASE%"
svn checkout --non-interactive https://github.com/mamedev/mame/trunk mame
goto svn_after
:svn_update
echo UPDATE SVN...
cd "%BASE%\mame"
svn update --non-interactive --accept theirs-full mame
goto svn_after
:svn_after
rem if [ $? -ne 0 ]; then
rem echo ERRORE Recupero dati da SVN...
rem exit 2
rem fi
rem Generazione MAME
if "%MAKE_MAME%"=="Y" call :make_mame
if "%MAKE_MESS%"=="Y" call :make_mess
goto make_after
:make_mame
echo Compilazione MAME...
set path=%path%;%MINGW_PATH%\bin;%MINGW_PATH%\opt\bin;%MINGW_PATH%\Qt\bin"
cd "%BASE%\mame"
if exist "%BASE%\mame64.exe" del /f /q "%BASE%\mame64.exe"
make %MAKE_OPTION% TARGET=mame
rem if [ $? -ne 0 ]; then
rem echo ERRORE Compilazione MAME...
rem exit 3
rem fi
if exist "%BASE%\mame64.exe" goto make_mame_ok
echo ERRORE Compilazione MAME...
rem exit 3
goto eof
:make_mame_ok
if exist "%BASE%\mame_x86_64-svnbuild_%SVN%.zip" del /f /q "%BASE%\mame_x86_64-svnbuild_%SVN%.zip"
7za a -tzip -mx9 "%BASE%\mame_x86_64-svnbuild_%SVN%.zip" mame64.exe
goto eof
rem Generazione MESS
:make_mess
echo Compilazione MESS...
set path=%path%;%MINGW_PATH%\bin;%MINGW_PATH%\opt\bin;%MINGW_PATH%\Qt\bin"
cd "%BASE%\mame"
if exist "%BASE%\mess64.exe" del /f /q "%BASE%\mess64.exe"
make %MAKE_OPTION% TARGET=mess
if exist "%BASE%\mess64.exe" goto make_mess_ok
echo ERRORE Compilazione MESS...
rem exit 3
goto eof
:make_mess_ok
if exist "%BASE%\mess_x86_64-svnbuild_%SVN%.zip" del /f /q "%BASE%\mess_x86_64-svnbuild_%SVN%.zip"
7za a -tzip -mx9 "%BASE%\mess_x86_64-svnbuild_%SVN%.zip" mess64.exe
goto eof
:make_after
echo %SVN% > "%BASE%\mame\svnrevision"
cd "%BASE%"
echo Compilazione completata
pause
:eof
In questo secondo script mancano dei controlli come il numero di versione di svn (quindi evita di compilare se non ci sono modifiche anzichè dare un errore).
Potete aggiungere o integrare ciò che manca, aggiustarlo, modificarlo e farci ciò che volete.
Piccola nota: sui miei sistemi (tutti virtuali) tra compilazione e download iniziale siamo ad un paio di ore di tempo macchina. Le ricompilazioni dopo qualche modifica da svn invece durano 10 minuti. Ma ho sistemi vecchissimi... dual core di una decina di anni fa e 512MB di memoria

Re: servizio Arcade Italia - MAME nightly build
Inviato: 28/10/2014, 21:38
da pucci
Fantastico! Riusciamo a fare in modo che vadano in automatico su uno spazio condiviso?
Re: servizio Arcade Italia - MAME nightly build
Inviato: 28/10/2014, 21:43
da motoschifo
Si può fare di tutto...

Con Windows devo approfondire meglio ma dovrebbero esistere programmi da riga comando per l'upload da qualche parte o al massimo si lancia un ftp.
Prima di pensare a questi dettagli controlla se ti funziona e se bisogna preparare la versione a 32 bit, ecc.
Re: servizio Arcade Italia - MAME nightly build
Inviato: 28/10/2014, 21:51
da dR.pRoDiGy
3d interessante ragazzi! E gran bel lavoro motoschifo!!

Io personalmente su win non ci avrei nemmeno tentato.. Bravo

Credo che sia la versione linux la più adeguata invece.. Il server di AI non è un linuzzo?
Cmq, il fatto di potere o meno installarlo dipende più che altro dal tipo di hosting.. Ovvero se si ha una console ssh a disposizione, almeno con privilegi di esecuzione job.. Non mi ricordo più chi ha seguito l'installazione del "nuovo" hosting del forum.. Pucci tu lo sai vero?
Re: servizio Arcade Italia - MAME nightly build
Inviato: 28/10/2014, 21:55
da dR.pRoDiGy
Ah, poi ci vogliono un tot di librerie per buildare mame mi pare.. Quindi si deve poter installare pacchetti.
Forse una sandbox applicativa per il compilatore sarebbe fattibile motoschifo?
Re: servizio Arcade Italia - MAME nightly build
Inviato: 28/10/2014, 22:02
da motoschifo
Beh ci vorrebbe una sandbox di qualche tipo perchè installare compilatore e tutte quelle librerie su un server di produzione è un po' troppo.
Però non so come compilare da Linux per Windows, cioè non ho mai nemmeno tentato di farlo a dire il vero. E' possibile ottenere un exe in questo modo?
Devo documentarmi... tipo mingw32/64 con wine?
Ecco cosa fare nella pausa pranzo di domani
Comunque io vedo bene qualcosa di locale come desktop o virtual machine che compila e poi spedisce sul server, così da non introdurre bug o mettere sotto stress il server.
Ad esempio un utente può farsi Win32, un altro Win64 e magari ci si può dividere il lavoro, cioè lo script verifica se c'è già lo zip sul server ed evita di compilare o scarica direttamente quello zip in locale. In questi casi l'unione fa la forza e di gente che programma sotto Windows qui sul forum se ne trova.
Re: servizio Arcade Italia - MAME nightly build
Inviato: 28/10/2014, 22:08
da loller
Grandissimo Motoschifo!
Ecco come mi immagino te e la la tua saletta:

Re: servizio Arcade Italia - MAME nightly build
Inviato: 28/10/2014, 22:15
da dR.pRoDiGy
motoschifo ha scritto:Beh ci vorrebbe una sandbox di qualche tipo perchè installare compilatore e tutte quelle librerie su un server di produzione è un po' troppo.
Però non so come compilare da Linux per Windows, cioè non ho mai nemmeno tentato di farlo a dire il vero. E' possibile ottenere un exe in questo modo?
Devo documentarmi... tipo mingw32/64 con wine?
Ecco cosa fare nella pausa pranzo di domani
Comunque io vedo bene qualcosa di locale come desktop o virtual machine che compila e poi spedisce sul server, così da non introdurre bug o mettere sotto stress il server.
Ad esempio un utente può farsi Win32, un altro Win64 e magari ci si può dividere il lavoro, cioè lo script verifica se c'è già lo zip sul server ed evita di compilare o scarica direttamente quello zip in locale. In questi casi l'unione fa la forza e di gente che programma sotto Windows qui sul forum se ne trova.
Azz, e chi ci aveva pensato!!!

Si beh l'unica a quel punto sarebbe una virtualbox su server.. ma che delirio
Si, la vedo molto meglio come dici tu in effetti.. per la pubblicazione automatica invece niente di più facile.. io personalmente per FEEL uso un sistemino semplice: ho linkato i miei file di rilascio (che ho in Dropbox) a degli shortURL di Google (così mi becco le stat aggratis

) .. sostituendo il file (in fase di rilascio in altre parole) il link al file condiviso rimane valido, quindi basta scrivere lo short URL in un post del forum ed ecco fatto il sistema di publishing automatico

Re: servizio Arcade Italia - MAME nightly build
Inviato: 28/10/2014, 22:19
da motoschifo
loller ha scritto:Grandissimo Motoschifo!
Ecco come mi immagino te e la la tua saletta:

No no, quel computer occupa troppo spazio che potrebbe invece far comodo ai cabinati!

Re: servizio Arcade Italia - MAME nightly build
Inviato: 28/10/2014, 22:49
da motoschifo
Installato ora mingw a 32 bit sul mio Linux 64 bit e sta cross-compilando la versione per Windows!!!

Mica me la aspettavo sta cosa da wine, ottimo!
Devo spegnere ma nei prossimi giorni sono curioso di vedere se riesco a compilare mame+mess per linux+windows a 32+64 bit dallo stesso pc con un "semplice" script.
Re: servizio Arcade Italia - MAME nightly build
Inviato: 28/10/2014, 23:14
da dR.pRoDiGy
Apperò, gran bel "pasticcio" di software!
Le potenzialità allora si allargano di molto! ..Ottimo lavoro, seguo con interesse!
Re: servizio Arcade Italia - MAME nightly build
Inviato: 31/10/2014, 11:29
da motoschifo
Nei giorni scorsi ho sperimentato diverse possibilità e sono riuscito (almeno spero) a compilare da Linux tutte le versioni in un colpo solo tramite script (Linux+Windows Mame+Mess 32+64-bit).
E' ancora un lavoro incompleto ma più avanti affinerò la tecnica
Qualcuno può provare se questi eseguibili funzionano nello stesso modo quando si gioca? Si tratta delle versioni 155 con patch ma diciamo che mi interessa sapere solo se si comportano in maniera differente:
Mame32 normale vs
Mame32 compilato da Linux
Mame64 normale vs
Mame64 compilato da Linux
Intendo se scattano, se uno va e l'altro no, se crasha all'improvviso, ecc. Insomma dovrebbero essere programmi uguali.
Attendo un riscontro così posso completare gli script.
In base ai risultati a questo punto bisogna solo decidere come procedere. Tu pucci cosa consigli?
Quali computer usiamo per compilare (desktop o server?), dove mettiamo lo zip alla fine e quante versioni teniamo? Sempre l'ultima o le ultime N o cosa? Meglio compilare tutto (mame/mess 32/64 win/linux) oppure ci concentriamo solo su Mame per Windows?
Io userei pochissimo questi eseguibili perchè in genere attento la release ufficiale, e spesso salto diversi numeri. Però in base al tempo di compilazione e all'interesse che c'è possiamo gestire qualcosa di automatico o semi-automatico.
Visto che hai proposto il servizio direi di metterlo in piedi secondo le tue esigenze per iniziare.
Se anche non dovessimo attivarlo direi che ora con un doppio click si fanno download e compilazione, quindi è già un buon risultato

Cosa ne dici?
Piccola nota: i sorgenti con tutti gli eseguibili Linux/Windows e gli oggetti compilati occuopano la bellezza di 4 giga!!! 550MB solo per gli eseguibili

Re: servizio Arcade Italia - MAME nightly build
Inviato: 31/10/2014, 12:56
da baritonomarchetto
Ragazzi, sicuri che non sia solo un inutile dispendio di energie e risorse?
Re: servizio Arcade Italia - MAME nightly build
Inviato: 31/10/2014, 13:05
da motoschifo
Anche secondo me lo è, nel senso che io personalmente non continuerei a compilare da svn tutti i giorni o più volte al giorno. Però magari ci sono momenti in cui potrei farlo, o utenti che fanno cose differenti e che lo troverebbero invece molto utile.
La prima compilazione occupa parecchio (ore?) mentre le successive ho visto che sono molto veloci (qualche minuto). Ovvio che forse non ha senso compilare sempre tutte le build possibili, ma avere un mame32 o 64 da svn sempre aggiornato potrebbe essere una cosa interessante.
Questo thread è stato creato proprio per quello

Re: servizio Arcade Italia - MAME nightly build
Inviato: 01/11/2014, 0:04
da pucci
Mame win 64 svn
È la più usata e per il momento farei solo questa (i volta al giorno)
Re: servizio Arcade Italia - MAME nightly build
Inviato: 03/11/2014, 22:02
da motoschifo
Allora ok per mame64.exe. Che procedura seguiamo?
Un server centrale (quale?) da cui si compila in maniera schedulata oppure ognuno si compila da se e poi pubblica?
Nel primo caso: Linux o Windows?
In tutti i casi: dove mettiamo lo zip con l'eseguibile?
Se si compila ognuno per se, al "doppio click" verrà controllata la presenza dell'exe sul server ed in caso positivo verrà scaricata la versione in locale, senza compilazione, altrimenti si avvierà il download+compilazione+upload eseguibile per tutti gli altri.
Fondamentale capire quale storage usare perchè alcuni non sono interrogabili da riga di comando...
Se server linux ok da script, se server Windows direi un programma C# altrimenti con il cmd si esce pazzi e troppo poco evoluto.