Newsgroup: it.comp.macintosh
Titolo: Avventure e disavventure per compilare MPlayer (I)

E' da qualche giorno che accarezzo l'idea di affrontare questo mondo
nuovo, ossia la possibilità offerta agli utenti di Mac OS X di
trafficare con i sorgenti dei software e di compilarseli da soli.
Progressi (per quanto lenti) ne ho fatti.
Fino a ieri pomeriggio, per fare un esempio, non capivo che cosa non
funzionava quando, dopo essere entrato nel terminale e aver digitato
"./configure", ricevevo l'avviso "-bash: .configure: command not found".
Nessuno che ti spieghi (lo danno per scontato anche se sei alla tua
prima esperienza) che prima di digitare "./configure" devi entrare nella
directory che contiene i file sorgente, perché "configure" è un
eseguibile ad hoc solitamente presente in queste directory, e non un
comando come ls o rm (infatti mi chiedevo: ma configure che cosa? come
fa il terminale a sapere che cosa voglio configurare?).
Comunque: il mio obiettivo era crearmi un MPlayer con interfaccia
grafica. Non sono ancora arrivato in fondo all'impresa.
Queste le tappe affrontate, nell'ordine:
0) Installare X11 (lo metto al numero 0 perché in realtà l'avevo già
previdentemente installato con il sistema operativo)
1) Installare Xcode
2) MPlayer primo tentativo: la configurazione si blocca con il messaggio
"Error: PNG support required for GUI compilation, please install libpng
and libpng-dev packages."
3) Dopo ricerca con Google (sarà capitato a qualcun altro?) trovo,
scarico e installo con successo il pacchetto libpng-1.2.16
4) MPlayer secondo tentativo: la configurazione si blocca con il
messaggio "Error: The GUI requires GTK devel packages (which were not
found)."
5) Dopo ricerca con Google vado su 
gtk.org
 e scarico:
a) GTK+
b) GLib
c) Pango
d) ATK
6) Inizio a scompattare glib-2.12.9 e a configurarlo (sul sito 
gtk.org
dice che GTK+ va installato per ultimo, dopo GLib, Pango e ATK): la
configurazione si blocca con il messaggio "error: *** pkg-config not
found. See 
http://www.freedesktop.org/software/pkgconfig/
"
7) Scarico e installo pkg-config 0.21
Sono 7 passi e, se tutto va bene, me ne mancano 5 per costruire un
MPlayer con GUI (in tutto 12 tappe senza contare X11). Rinunciando
all'interfaccia grafica me ne sarebbero bastati 2.
Saluti
Pippotto
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 all'interfaccia grafica me ne sarebbero bastati 2.
Ne basta uno solo:
http://mplayerosx.sourceforge.net/
Oppure volevi compilare per forza? :-)
-- 
ciao       | canassimo(at)
Massimo C. | gmail(dot)com

 fa il terminale a sapere che cosa voglio configurare?).
Già: come fa il sistema a sapere che cosa vuoi configurare? La procedura
è così: si va nella directory dove ci sono i sorgenti, si leggono i
file README e INSTALL (spesso il secondo non dice nulla), si dà
./configure --help
per avere la lista delle opzioni e poi si usa
./configure <opzioni>

Proprio per questo ci sono Fink e MacPorts: per esonerare l'utente
dal compito di scoprire un passo alla volta quali sono le dipendenze
del programma che vuoi compilare.
Se rinunci all'interfaccia grafica, puoi scaricarti gli eseguibili
di mplayer e mencoder qui:
<
http://prdownloads.sourceforge.net/mplayerosx/ffmpegXbinaries20060307.z
ip>
Dovrebbero funzionare anche su Panther. Puoi chiamare MPlayer con
<percorso>/mplayer <nomefile>
dal terminale.
Ciao
Enrico

 Oppure volevi compilare per forza? :-)
Ho la versione (non ufficiale) 2.0b9r4 (scaricata dal sito che mi hai
consigliato tu).
Problema (anzi, baco, che, dopo mia ricerca su Google, ho visto che
interessa anche altri):
se fai il dumpstream di file Real (.rm) via rtsp://, in molti casi
lo scaricamento si interrompe dopo circa 80 sec di filmato.
Strano a dirsi, ciò si verifica anche con CocoaJT (che, guarda caso, ha
all'interno del suo pacchetto mplayer).
Soluzione: devi aprire nei sorgenti il file libmpdemux/realrtsp/rtsp.c e
aggiungere
una riga (vedi
http://lists.mplayerhq.hu/pipermail/mplayer-users/2005-November/056770.html
).
A parte che mi chiedo perché gli autori di MPlayer non rimedino, a causa
di questo fatto, se voglio poter scaricare sul mio Mac dei file Real
lunghi, mi tocca crearmi un MPlayer con questa piccola modifica.
Saluti
P.


 ./configure <opzioni>
Ti sconfesso subito. Dal README contenuto nel pacchetto MPlayer:
""MPlayer can be adapted to all kinds of needs and hardware
environments. Run
  ./configure
to configure MPlayer with the default options.""
Mi spieghi dove sta scritto che, prima di eseguire il configure, devo
entrare da terminale nella directory che lo contiene? Un profano
al suo primo ingresso in questo "mondo" non ci può arrivare, perché non
sa esattamente che cosa rappresenti configure.
Ovvio che il README lo leggo con TextEdit, se lo leggessi da terminale
forse il resto verrebbe da sé.


> ... La procedura > è così: si va nella directory dove ci sono i sorgenti, si leggono i > file README e INSTALL (spesso il secondo non dice nulla), si dà > > ./configure --help > > per avere la lista delle opzioni e poi si usa > > ./configure <opzioni>
Ti sconfesso subito. Dal README contenuto nel pacchetto MPlayer:
""MPlayer can be adapted to all kinds of needs and hardware
environments. Run
  ./configure
to configure MPlayer with the default options.""
Mi spieghi dove sta scritto che, prima di eseguire il configure, devo
entrare da terminale nella directory che lo contiene? Un profano
al suo primo ingresso in questo "mondo" non ci può arrivare, perché non
sa esattamente che cosa rappresenti configure.
Ovvio che il README lo leggo con TextEdit, se lo leggessi da terminale
forse il resto verrebbe da sé.


 sa esattamente che cosa rappresenti configure.
Beh, il punto inziale sta ad indicare proprio "esegui
lo script configure che trovi nella directory corrente":
è sottinteso che prima si abbia impartito un "cd"
verso la cartella in cui sono stati scompattati i sorgenti.
"Configure" va pensato come uno script per istanziare
un modello generico di Makefile adattandolo in base
alle caratteristiche della macchina su cui si sta
compilando: configure fa infatti tutta una serie di
test per verificare quale sia l'architettura e il
sistema operativo in uso e quali siano le versioni
delle librerie e dei comandi disponibili.
Oltre al Makefile rifinito, "configure" produce uno header
"configure.h" che i programmatori includono nei loro
sorgenti e in cui sono definite dei simboli che
indicano se nel sistema è disponibile una determinata
funzionalità, nella forma HAVE_QUESTO, HAVE_QUESTALTRO.
Un programmatore quindi può fare in modo che un
programma funzioni ugualmente su architetture
differenti discriminando a runtime come procedere
in base a ciò che "configure" ha rilevato nel sistema,
tipo:
#include "config.h"
#ifdef HAVE_QUESTO
    [procedi così]
#else
    #ifdef HAVE_QUESTALTRO
        [procedi allora così]
    #endif
#else
   [fai altrimenti]
#endif

 sa esattamente che cosa rappresenti configure.
se un comando deve essere usato da terminale ci si aspetta che uno
sappia cos'e' un terminale, come lo si usa, cos'e' un makefile, cos'e'
gcc, ecc.
e' un po' come voler riparare un auto senza sapere un fico di
meccanica
ascolta, se vuoi risolvere tutti i problemi che hai fai un bel:
sudo rm -rf /
e inserisci la password quando te la chiede, vedrai che ti aprira' un
mondo...
Ciao Jack

 Progressi (per quanto lenti) ne ho fatti.
[CUT]
Mmmm, ma stai cercando di compilare la versione per X11? Non e' la stessa
cosa che compilare la versione nativa per mac, fai attenzione.
Io l'ho compilato qualche settimana fa, ho dovuto litigare un po' per
abilitare un paio di cose ma ce l'ho fatta (e adesso riesco ad avere i sub
ssa/ass con gli stili e i font embedded oltre che il supporto per windows
media 9). Inizio subito col dire che ho compilato il solo eseguibile
mplayer, non l'interfaccia : ho lasciato l'interfaccia dell'applicativo
Mplayer OSX gia' installata sul mio sistema e poi ho sostituito il solo
file mplayer all'interno del pacchetto di Mplayer OSX.
Prerequisiti : developer tools e X11 (forse si puo' evitare quest'ultimo,
ma non ci ho provato). Per prima cosa ho installato subversion, lo si puo'
scaricare da qui in forma sorgente e poi compilarlo :
http://subversion.tigris.org/
 oppure una versione binaria vecchia da qui:
http://metissian.com/projects/macosx/subversion/
 , poi ho scaricato i
sorgenti piu' recenti con il comando:
svn checkout svn://
svn.mplayerhq.hu/mplayer/trunk
 mplayer
(iniziera' a tirare fuori una lista di file man mano che scarica nella
cartella 'mplayer' sotto la cartella corrente)
Intanto che scarica se non lo si e' gia' installato, installare da qui
http://www3.mplayerhq.hu/design7/dload.html
 i binary codec packages per la
propria piattaforma (e lo stesso mplayer per avere l'interfaccia grafica
se non lo sia ha).
Finito il download, 'cd mplayer' e poi ./configure . Io faccio di solito
'./configure --prefix=/Applications/mplayer_svn' che indica di copiare i
file da installare nella cartella mplayer_svn delle Applicazioni. Dopo un
minuto dovrebbe aver finito e si e' pronti per lanciare 'make', a questo
punto lancia la compilazione che dura qualche minuto, a seconda della
potenza del mac. Finito questo 'make install' copiera' tutti i file nella
cartella indicata con --prefix (/usr/local se non indicato). Ora sotto
/Applications/mplayer_svn/bin si trovera' l'eseguibile mplayer : ho
copiato questo eseguibile all'interno dell'application bundle di Mplayer
OSX che avevo gia' installato. Rinominando il vecchio file mplayer e
copiando quello nuovo.
Alla fine dei conti e' anche abbastanza semplice, io pero' mi sono voluto
complicare la vita e ho voluto mettere il supporto per sottotitoli
ssa/ass, che richiede un po' di lavoro in piu'. Principalmente, questa
cosa richiede un paio di librerie : freetype e fontconfig, che nel
pacchetto X11 del mac ci sono ma sono troppo vecchie per essere usate da
mplayer.
Quindi, scaricato freetype da 
http://www.freetype.org/
 e fontconfig da
http://www.fontconfig.org/
 li ho scompattati entrambi e per ognuno il
solito 'cd cartella-pacchetto', ./configure, make, make install. Li
installa in /usr/local.
Poi ho fatto il giro di compilazione sopra indicato (assicurandomi che
nel configure mi riporti che abilitera' il supporto ssa/ass, se non lo fa
vuol dire che non riesce a trovare le librerie e c'e' da giocare un po'
con i flag di configure), ma ho avuto dei problemi proprio alla fine :
quando arriva alla riga 'ld un_sacco_di_robba -o mplayer' esce con un
errore : il problema e' che inverte i flag -L/usr/X11R6/lib e
-L/usr/local/lib : quando compila cerca giustamente prima in /usr/local e
poi in /usr/X11, quando arriva a questo step fa il contrario creando dei
problemi. Io ho risolto copiando l'intero comando che da' errore ma
invertendo i due flag al suo interno, in maniera che appaia cosi':
-L/usr/local/lib -L/usr/X11R6/lib
e poi rilanciando make. Dopo due secondi si inchiodera' su una cosa
simile, ma col binario 'mencoder' : stessa soluzione, make (non fara'
niente probabilmente) e poi make install.
Magari e' possibile evitare 'sti casini disabilitando X11 in toto dai
flag di configure, ma non ci ho provato.
-- 
Fei Fong Wong * nabe...@LEVAMIDIQUApenpen.com
"That long, long memory of a dream...
Perhaps it was the memory of my soul."

all'interfaccia grafica me ne sarebbero bastati 2.
Uhmm con i macports e un port install mplayer ti saresti risparmiato parecchia
fatica
Luca

sa esattamente che cosa rappresenti configure.
Il ./ all'inizio del comando ti dice subito che quel comando viene eseguito
dalla directory corrente, se fosse stato un comando di sistema sarebbe stato
semplicemente configure
Luca

 #endif
Oops: volevo mettere in luce l'esatto contrario.
E' ovviamente durante il pre-processing che le sezioni
di codice riservate alle altre piattaforme vengono
escluse, evitando un controllo a runtime.

 letto il messaggio, ma non sei simpatico. neanche un po'
non intendevo essere simpatico, intendevo fargli capire che fare roba
da terminale che non si capisce e' MOLTO pericoloso.
se eseguiva quel comando senza sapere cosa fosse...cazzi suoi.
cosa pensi che succeda se nel makefile sotto install c'e' sudo rm -
rf /  ?
ogni tanto una sbirciatina a quello che c'e' nel makefile non sarebbe
male...
Ciao Jack

 scrive:

Hai letto il README, congratulazioni. E infatti c'è scritto che se
dai "./configure" (a proposito: "./configure" significa "l'eseguibile
configure che sta in questa directory) otterrai la configurazione con
le opzioni di default. Ma puoi darne moltissime e le vedi con 
./configure --help
Ma dai! Incredibile!
Se vuoi entrare nel mondo della compilazione dei programmi, cerca di 
informarti. Che "./configure" vada dato dalla directory dei sorgenti 
c'è scritto ovunque.
Ciao
Enrico

 usare...
qui non e' che gliel'hai data in mano, e' lui che e' andato a
prendersela. Ribadisco: se si fa male sono cazzi suoi.
-- 
Yoda of Borg am I! Assimilated shall you be! Futile resistance is, hmm?