Newsgroup: it.comp.macintosh
Titolo: Aiuto, Integrare applicazioni macports

Un aiuto da chi conosce meglio di me i meccanismi di osx
Dunque tutto comincia per una questione di stile, dato che le gtk
 nativamente sono orrende ho ricompilato un paio di engines (murrine e
 nimbus) usando i macports, tuttavia le 2 applicazioni che uso di più
 sotto X11, ossia 
gimp.app
 e 
inkscape.app
 non sono in grado di usare
 questi temi perchè (credo) compilati staticamente con una loro versione
 delle gtk, per cui mi sono ricompilato anche gimp e inkscape tramite i
 macports, ora ho un solo problema, come faccio a crearmi dei launcher
 con la loro bella icona in /Applications e soprattutto come faccio a
 far si che nel finder vengano registrati gli apri con e le icone dei
 file .svg (nel caso di inkscape)
Ho dato un'occhiata a xdroplets e platypus, ma nel primo caso sono
semplici applescript, mentre nel secondo non ho ancora capito bene come
funziona

  file .svg (nel caso di inkscape)
Da perfetto ignorante, ho il sospetto che Gimp.app sia essenzialmente un
wrapper Cocoa attorno al comando, che si occupa di fornire sulla riga di
comando i nomi dei file da aprire etc.
Eventualmente, perché non ricompilare Gimp.app se disponibile il sorgente?
-- 
Em Portugal se conservará sempre o Dogma da Fé ecc.

Eventualmente, perché non ricompilare Gimp.app se disponibile il
 sorgente?
Sto cominciando a capirci qualcosa
In pratica tutta l'applicazione viene compilata e poi infilata assieme
 alle sue dipendenze dentro il bundle, tant'è che sono riuscito ad
 aggiungere gli engine gtk che mi servivano semplicemente copiandoli da
 /opt/local/lib/gtk-2.0/2.10.0/engines dentro
 
inkscape.app/Resources/lib/gtk-2.0/2.10.0/engines
 e questo dovrebbe
 valere pure per gimp.
Io volevo fare una cosa diversa, ossia tenere tutto nei port e creare
 solo un launcher per il binario contenuto in /opt/local/bin, ho capito
 che le associazioni dei file sono regolate da un file Info.plist
 presente nel bundle, quindi tecnicamente la cosa è possibile.
A questo punto però mi chiedo se è possibile in maniera semplice
 passare dal port al bundle, è incredibilmente ridondante, perchè ad
 esempio per le applicazioni gtk significa avere tante copie delle gtk2
 quante sono le applicazioni, però a quel punto si potrebbero maneggiare
 in maniera più semplice rispetto ai port, e renderle anche più veloci
 da installare (ma tremendamente scomode da aggiornare dato che una
 copia in più dei port andrebbe cmq mantenuta)
Luca

  quante sono le applicazioni,
a meno che tu non riesca a linkarle simbolicamente


a meno che tu non riesca a linkarle simbolicamente
Ma a quel punto non avrebbe più senso non trovi? tantovale fare solo il
 launcher e lasciare tutto nei macports in /opt/local
Non so, su 
http://gimp-app.sourceforge.net/
 si fa riferimento a
 ScriptExect, una utility per usata per fare il bundle, derivata da
 platypus, più tardi ci do un'occhiata
Luca

  platypus, più tardi ci do un'occhiata
IMHO la maniera piu' veloce e' scaricarti i sorgenti di 
gimp.app
 e
sostituire le librerie nei luoghi opportuni prima dell'assemblaggio


sostituire le librerie nei luoghi opportuni prima dell'assemblaggio
Ma si, è che mi servirebbe per gimp, inkscape, wireshark... e magari
 altri, per questo cercavo un sistema semplice per creare gli app
con inkscape addirittura è bastato copiare le librerie degli engines
 che ho compilato manualmente dentro il bundle per farlo funzionare
Luca

>ra1n ha scritto:




Ci sono riuscito :-)
Ora provo con gli altri programmi, in pratica ScriptExec, di cui andrò
 a leggermi il sorgente è il binario che mi permette poi di lanciare lo
 script di esecuzione di gimp che sta dentro al bundle quindi adesso
 basta identificare le librerie necessarie e infilare il tutto nel
 bundle, utilizzando poi l'eseguibile di ScriptExec come eseguibile
 principale del programma, se mi riuscisse automatizzare la cosa sarebbe
 uno spettacolo, chissa se i macport permettono un target diverso,
 altrimenti dovrei fare un make install --destdir per ogni dipendenza :-O
Luca

  uno spettacolo, 
Ma magari.

righe di riassunto su quello che hai osservato ?
   Allora riassumendo le mie prove:
1) ho compilato gimp tramite macports
2) ho scaricato ScriptExec e lo scheletro del bundle da qui
 
http://gimp-app.sourceforge.net
3) ho seguito questa guida:
 
http://gimp-app.sourceforge.net/gimp.app.howto.txt
ovviamente tutti i riferimenti riguardano macports al posto di fink e
 mi sembra che il finder onori la copia dei link simbolici ( o forse
 solo quelli di fink hanno problemi, non saprei)
Dunque Considerazioni mie:
ScriptExec* è una applicazione scritta in objective-C, leggendo il
 sorgente e citando claudio dovrebbe essere  il "delegato di
 NSApplication che gestisce i metodi che fanno da controaltare ai
 parametri dell'Info.plist, tra i quali l'openFiles: etc."
infatti nello scheletro del bundle di gimp in Contents/Resources ci
 sono 2 file:
script e openDoc che sono 2 semplici shell script che a loro volta
 richiamano i 2 binari gimp e gimp-remote
lavorando su questi file dovrebbe essere possibile creare un bundle per
 qualunque applicazione
Dopodichè è abbastanza semplice prelevare dalla directory dei port le
 dylib necessarie per far funzionare l'applicazione, è solamente tedioso
 farlo a mano, usando otool -L sul binario si può vedere di quali
 librerie necessita di certo la possibilità di installare i port in una
 posizione differente sarebbe di enorme aiuto, dato che spesso le
 dipendenze sono molte
*Nota scriptExec è stato fatto con una vecchia versione di xcode,
 pertanto oltre alla modifica del file di progetto, che xcode fa
 automaticamente bisogna rimuovere dal progetto aperto il riferimento
 alla libreria libstdc++
http://developer.apple.com/qa/qa2005/qa1428.html
Questo è quanto, ora mi appresto a provare con inkscape e wireshark,
 forse quest'ultimo è più facile, per le dipendenze anche se presenta il
 problema dei diritti di amministratore, proverò con platypus e lo
 script incluso in gimp per vedere che succede
Luca

 Dunque Considerazioni mie:
wow.
-- 
Blatantly basing a new world order
upon the suppression of life

wow.
Uhmm non so se è ironico  o frutto di quoting sballato, ma fa niente,
 aggiungo un paio di dettagli:
macports ha un comando port dmg, che crea un file .pkg all'interno di
 una immagine.dmg sto compilando per vedere se ci inserisce solo
 l'applicazione o anche le sue dipendenze.
Inoltre c'è il comando destroot, che fa quello che cercavo, dalla
 pagina di man:
destroot
     Installs _portname_ to a temporary directory.
basta documentarsi, e piano piano ci si arriva alle cose :-)
Saluti
Luca

 Uhmm non so se è ironico  o frutto di quoting sballato, ma fa niente,
ma quale ironico! Da farci un articolo tecnico! :)


ma quale ironico! Da farci un articolo tecnico! :)
gh
mi sembrava, visto che hai tagliato subito dopo prima delle mie
 considerazioni :-P
Cmq ora vedo di mettere insieme il tutto, poi magari scrivo qualche
 istruzione più semplice e precisa
Luca