That’s my blog… Life and Linux

Impacchettare Compiz Fusion GIT con MakeFusionDebs

Make-Compiz-Fusion-ScriptCi siamo! Come avevo anticipato nel post precedente, mi sono messo di buzzo buono, ed ho terminato il lo script dinamico per impacchettare Compiz e Compiz Fusion direttamente da GIT.
Infatti, già quando iniziai ad impacchettare Beryl-SVN, come presupposto iniziale mi scrissi uno script che chiamavo rudimentalmentemakedebs‘ che mi permetteva di fare tutto il lavoro senza troppo sforzo e, sopratutto, senza necessità di una grossa manutenzione
Col breve passaggio di Beryl da SVN a GIT, aggiornai lo script per funzionare anche con il Software di Controllo delle Versioni Distribuito di Torvalds (= git) e con l’arrivo di CompComm (poi Compiz Fusion) l’ho aggiornato ulteriormente…

Il maggior problema di Compiz Fusion è il fatto che non vengono distribuite delle cartelle debian, di default che consentono la realizzazione dei pacchetti, per tanto (com era già avvenuto anche per alcune parti di Beryl e come succede quasi sempre per gli altri pacchetti che produco) le ho dovute fare io, praticamente da 0…
Avendo ricevuto l’accesso in scrittura al GIT di OpenCompositing qualche settimana fa, ho deciso che il nuovo sistema sarebbe stato molto più git-based.

Con un po’ di ritardo, stasera ho inserito in GIT tutte le cartelle debian necessarie alla creazione di pacchetti .deb, quindi dopo diversi aggiornamenti, ho inserito anche il nuovo makefusiondebs che vi permetterà di compilare e pachettizzare tutto!

Le modifiche rispetto alla versione precedente sono:

  • Autoupdate (lo script si auto-aggiorna all’avvio)
  • Supporto ad un file di configurazione (makefusiondebs-options)
  • Supporto per le patch debian (sistema quilt)
  • Controllo dell’ABIVERSION dei plugin (permette la ricompilazione automatica)
  • La versione di base ora viene letta anche dal configure.ac
  • Supporto per il prefisso delle versioni debian (#:versione)
  • Corretta la rimozione dei suffissi debian alla versione
  • Possibilità di definire il nome delle cartelle in cui salvare i dati
  • Spostamento dei vecchi deb basato anche sul pacchetto sorgente
  • Le cartelle debian utente, ora hanno priorità su quelle scaricate
  • Codice ripulito
  • Altre correzioni sparse che non ricordo 🙂

Per avere tutto questo, dopo che avete ripulito il vostro sistema dalle installazioni di compiz in /usr/local (soprattutto rimuovendo i file /usr/local/lib/pkgconfig/compiz*.pc), vi basterà dare i seguenti comandi:

git-clone git://anongit.opencompositing.org/users/3v1n0/compiz-fusion-debian-builder
cd compiz-fusion-debian-builder
./makefusiondebs

A questo punto lo script tenterà prima di aggiornare sé stesso (ed in caso positivo di riavviarsi), se non impostato diversamente (vedi sotto), e poi scaricare (o aggiornare) tutte le sezioni del GIT definiti (che comprendono sia compiz-fusion-debian che compiz-wrapper – tra l’altro quest’ultimo è stato integrato in questi giorni proprio nei pacchetti di Ubuntu Gutsy!!) nelle opzioni…

Ho parlato di opzioni, sì, perché essendo l’autoaggiornamento basato su GIT, per evitare problemi col passare del tempo, ho deciso di dare la possibilità di definire le proprie impostazioni in un file parallelo, impostato di default a makefusiondebs-options, che potrete editare (mantenendo la sintassi bash) per personalizzare l’impacchettamento (piuttosto che toccando lo script stesso, per cui semmai inviatemi delle patch, ma che è meglio non modificare direttamente!).

Infine, un accenno ai parametri accettati dallo script:

./makefusiondebs                 # esegue tutti i passaggi (aggiorna ed impacchetta)
./makefusiondebs update          # esegue solo l’aggiornamento dei pacchetti
./makefusiondebs build           # impacchetta solo ciò che serve
./makefusiondebs <item>          # impacchetta solo <item> (se necessario)
./makefusiondebs rebuild <item>  # forza la ricompilazione di <item>
./makefusiondebs repack <item>   # forza il rimpacchettamento di <item>

Adesso se non potete o non volete usare i miei deb di Compiz, sarà possibile e molto facile creare pacchetti anche per tutte le distribuzioni (basate su debian) e tutte le architetture; se vi dovesse servire hosting per i vostri pacchetti – per un eventuale repository – contattatemi pure

Maggiori informazioni le troverete sicuramente in questo thread di OpenCompositing.

Bye ^_^ 

  • Puoi anche usare la forumula compiz –replace -c emerald per lanciarlo all’avvio… 😉

  • Fiste788

    risolto… ho eliminato tutto e ho rifatto il checkout… tutto funzionate GRANDE TREVINO!!!emoticon

  • maurizio

    Oggi ho provato un nuovo "impacchettamento" ma è parzialmente fallito

    ho raccolto questi messaggi di errore:

    http://paste.ubuntu-nl.org/28258/

    per cui mi sembra che non abbia creato compiz-core e compiz; why?

    PS: ho i pacchetti per amd64 realizzati correttamente in data 29/06, ti servono per ospitarli in una sezione amd64 nel tuo repository? Se ti interessano fammi sapere come fare per inviaterli

  • ibart

    @ trevino

    ho libGL.so.1.2.xlibmesa e un file di collegamento libGL.so.1.2.xlibmesa

     mi parte xgl, prima ha anche superato lo splash screen, ma poi si freezza tutto e devo riavviare

  • ibart

    p.s.

     
    ibart@ibart-amd64:~/Desktop$ fglrxinfo
    display: :0.0  screen: 0
    OpenGL vendor string: ATI Technologies Inc.
    OpenGL renderer string: Radeon X1600 Series
    OpenGL version string: 2.0.6474 (8.38.6)

    ibart@ibart-amd64:~/Desktop$ glxinfo | grep rendering
    direct rendering: Yes

     non capisco proprio perché mi crasha…

  • maurizio, dovrebbe essere corretto… Prova ad aggiornare lo script.
    Per il repository, dovrei avere già un contatto…

    ibart, prova a togliere compiz dallo script di avvio e vedi se funziona lanciandolo da terminale…

  • maurizio

    EDIT al mio precedente post

    per provare, ho rimosso la dir   compiz-fusion-debian-builder creata il 29/06 e sono ripartito da capo con la procedura

    questa volta il processo è terminato con una serie di ok su tutti i pacchetti

    così è questa  la procedura corretta? prima rimuovere la vecchia dir e poi ripartire?

    Quindi ora ho anche tutta la serie dei .deb per amd64 aggiornati al 02/07, se li vuoi per il tuo repository

    ciao 

  • luca

    ho notato che spesso aggiornando le patch si applicano male e la compilazione fallisce… in questo caso basta cancellare la cartella fusion/ e la cartella changelog/ e quindi rilanciare lo script…  

     

  • luca, questa cosa non dovrebbe più accadere con le ultime versioni dello script….

  • maurizio

    @ Trevino

    so che quanto segue è un po’ OT qui, ma viste le tue capacità provo a chiederti consiglio

    da quando ho iniziato a sperimentare la compilazione dei git di compiz-fusion (anche prima di usare il tuo script) ottengo questo errore

    make si ferma con questo errore
     > /usr/bin/ld: cannot find -lGL

    cercando nel forum Opencompositing c’è un post con problema simile e si
    dice di installare il pacchetto nvidia-glx-dev perchè il blocco è dato dalla mancanza della versione development delle librerie OpenGL.

    Ora io ho installato il driver nvidia 100.14.09 con l’installer nvidia
    per cui niente pacchetto nvidia-glx-dev nei repository di ubuntu (perchè quelli che ci sono sono per le versioni 9631 e 9755 dei driver)

    guardando il contenuto del pacchetto nvidia-glx-dev nei repository di ubuntu, ho visto che c’è il file libGL.so che è il collegamento a libGL.so.9631, per cui ho pensato che fosse sufficiente fare cosa analoga per il mio libGL.so.100.14.09 e quindi nella dir /usr/lib ho fatto un bel

    sudo ln -s libGL.so.100.14.09 libGL.so

    e la compilazione poi funziona.

    Il fatto strano è che quando spengo e riaccendo il pc, quel collegamento non c’è più e lo devo ricreare, dal che capisco che la mia soluzione non è proprio ortodossa

    C’è una soluzione più elegante e stabile per risolvere il problema?

    grazie, ciao 

  • Mh… Non saprei, non conosco molto il funzionamento dei driver nvidia, ma suppongo ci sia qualche script che imposta tale librerie se il modulo nvidia viene usato, tuttavia non saprei come ovviare a quella cosa… Magari te per ora puoi continuare ad usare questo metodo (semmai automtizzalo all’avvio)… :/

    Mi spiace… 

  • maurizio

    grazie comunque

  • luca

    @maurizio

    hai provato a creare il modulo con module assistant? 

  • imu

    @ maurizio

    il file libGL.so deve puntare a libGL.so.1 che a sua volta punta la libreria con il numero di versione dei driver nvidia. Se hai una modifica dinamica di tale libreria controlla che siano puntati correttamente e che nel tuo sistema non esista nulla e ripeto nulla dei pacchetti nvidia di ubuntu. Per scoprirlo dai un bel

    $ sudo dpkg -l | grep -i nvidia

    Dovrebbe ridarti il prompt senza nessun risultato. In caso contrario rimuovi tutto con il "–purge  " . Secondo me avrai ancora installato nvidia-kernel-common che se non ricordo male è una dipendenza dei rescticted-modules-`uname -r`  (tra i quali c’è nvidia di ubuntu) .

  • Pingback: Compiz Fusion AMD-64 Ubuntu Repository by Treviño « O.S. Revolution()

  • maurizio

    @ luca & imu

    grazie per i suggerimenti, stasera faccio quelle verifiche (come vedete ora sono ospitato su un pc  con Finestre)

    imu: mi puoi spiegare meglio questo passaggio

    > Se hai una modifica dinamica di tale libreria controlla che siano puntati correttamente

    luca: module-assistant non serve per creare i moduli del kernel? Si possono creare anche le librerie dei pacchetti -devel?

    Non so se possiamo approfittare dell’ospitalità di Trevino per queste discussioni un po’ OT, se volete passatemi dei link dove possiamo continuare  questa discussione senza disturbare

    ciao 

  • luca

    con module assistant crei il modulo a partire dai sorgenti, ma dovresti creare anche il -dev… ne sono ragionevolmente sicuro, anche se non al 100%     

  • maurizio

    @ luca

    se gentilmente mi dai una dritta su come creare il -dev con module-assistant e i sorgenti nvidia sono disposto ad offrirti anche ……………….. una birra, fresca!  

  • imu

    @maurizio

    Significa che su un sistema Linux dove " root" va a modificare qualcosa al riavvio lo trovi " rimodificato dal sistema stesso" al 100% hai qualche script creato da qualche pacchetto che svolge tale modifica. Nel caso di quelle librerie mi è capitato parecchie volte soprattutto su ubuntu. La situazione che devi controllare è la seguente :

     /usr/lib/libGL.so -> libGL.so.1
    /usr/lib/libGL.so.1 -> libGL.so.100.14.11

     

  • Ringrazio Trevino del lavoro fatto per la comunità e contemporaneamente vorrei chiedere una cosa a tutti voi: che cosa usate per "switchare" tra compiz-fusion e metacity? Quale tray icons usate? una volta c’era il bel beryl manager ma adesso?

  • Alt+F2 → metacity –replace

    La meglio cosa 😀

  • Ok Trevino allora continuerò a fare così 😀

    (ma come cavolo ho scritto? tray icons? mi bacchetto sulle mani 😀 ) 

  • Pingback: Compiz Fusion su Lenny/Sid? Finalmente! : Il Metauniverso di Meden()

  • ciao trevi…

    se può servire a qualcuno, la creazione dei pacchetti va a buon fine anche su Lenny…!! Ovviamente anche l’installazione 🙂

    thanks again 🙂

    ciaociao

  • neubauten84

    Ciao Trevi!!!

    Volevo avere un’info riguardo le dipendenze…io uso gnome e di tutti i pacchetti kde non me ne faccio nulla (anche perchè di compilare compiz-kde…). Posso, terminata l’azione dello script, eliminare kdebase-dev  e poi dare un bel sudo apt-get autoremove per eliminare tutte quelle belle dipendenze kde??

  • neubauten84

    Uppo…non riesco a pacchettizzare i plugin-extra e quindi mi da errori di dipendenza…che fare??

  • Sì, ovvio… Però puoi anche evitare di impacchettarli proprio. Leggi il mio commento n° 47.

  • neubauten84

    Intendevo che lo script mi restituisce errori per cui non me lo installa..allora errori di dipendenze per plugins-unofficial….

    Per quanto riguarda il commento n°47…ma se faccio così non posso più aggiornare il pacc compiz? 

  • Mhmhm… Tipo ti manca i plugins-main prima? O che altro?
    Riguardo la seconda cosa, sì aggiorni compiz, ma dovrai aggiornare a mano (sincronizzare con la mia) la cartella debian usata per generare i pacchetti di compiz.

  • Pingback: M’ha preso fuoco il desktop!!! | Il Fornaio()

  • neubauten84

    Ciao trevi..no i plugin-main li ha creati!!Mi da un errore riguardo un file txt…cmq ho deciso di rimettere i tuoi deb da repo.Grazie comunque!!!

  • Ok, eventualmente riposta l’errore per intero…

    CIAO! 

  • Joe Daring

    Ciao Trevino e tutti…

    Ieri il tuo script mi ha dato errore sulla compilazione di tutti i pacchetti relativi ai plugins… è cambiato qualcos’altro?

    Inoltre, ripropongo una domanda che avevo fatto, ma che forse non avevo posto chiaramente…

    Quando lo script termina senza errori, crea i pacchetti, ma non installa nulla… penso sia corretto così…

    A questo punto, vado nel folder dei .deb ed installo i singoli pacchetti a mano, cliccando due volte su ciascuno… e cercando di indovinare la sequenza di installazione (compiz-core, compiz, compiz-plugins etc…) che non mi dia errori di dipendenze o altro…

    Mi domando se non c’è un metodo più semplice… che sò, uno o più comandi da terminale,  che consentano una installazione più immediata…

    Qualche suggerimento???

    Grazie in anticipo! E grazie per lo script… e quando lo vedevo compiz fusion aggiornatissimo sulla mia box, senza i tuoi repo o lo script? 😉

    Ciao, Pippo

  • luca

    quando hai problemi di compilazione rimuovi changelogs fusion/ debs/ debs-old/ e rimanda in esecuzione lo script

     

    per installare i pacchetti ti basta dare un dpkg -i debs/*.deb    

  • No, la cartella debs/ è meglio non rimuoverla mai, basta togliere la directory fusion/

  • maurizio

    @ Joe Daring/Pippo

    per l’installazione dei pacchetti da terminale guarda il commento n. 72 dove Trevino risponde a una mia domanda

    ciao 

  • Pippo

    @Trevino… Grazie per il commento ed i suggerimenti

    @Maurizio… Si, l’avevo visto, ma non installava tutto… il suggerimento di Luca, invece, installa tutto… potevo arrivarci da solo, ma non sapevo che il comando si sarebbe gestito la sequenza in automatico… almeno così sembra fare!

    @Luca …GRAZIE! 🙂

    Ciao a tutti

    Pippo

     

  • Pingback: E Compiz Fusion, fu! «()

  • maurizio

    @ Trevino

    quando uso metacity –replace & per stoppare compiz-fusion ottengo questo errore

    /usr/bin/compiz: line 777:  7653 Segmentation fault      (core dumped) $*

    immagino che la linea 777 si riferisca al wrapper 

  • Sì, esatto… Non dovrebbe essere comunque un problema…

  • luca

    oddio… magari non fa danni, ma non è che un segmentation fault non sia un problema… 🙂  

  • No, voglio dire… Il fatto è che probabilmente compiz si sente "usurpato" del suo potere (causa del replace di metacity) e va in seg fault… Penso sia più una mancanza di codice per questo caso che un problema del codice presente.

  • Fiste788

    oggi ho aggiornato i driver mesa e ha cominciato a non andare più fusion… vi riporto l’errore

    /usr/bin/compiz.real (core) – Error: Can’t load plugin ‘ccp’ because it is built for ABI version 20070709 and actual version is 20070706
    /usr/bin/compiz.real (core) – Error: Couldn’t activate plugin ‘ccp’
     

  • Stesso errore per me, ma indipendentemente dall’aggiornamento di driver:

    /usr/bin/compiz.real (core) – Error: Can’t load plugin ‘ccp’ because it is built for ABI version 20070709 and actual version is 20070706
    /usr/bin/compiz.real (core) – Error: Couldn’t activate plugin ‘ccp’

  • Ho visto inoltre che compilando tramite lo script ed installando il pacchetto dei plugin unofficial, in compizconfigsettings non spunta il plugin screensaver che invece è presente installando dal tuo repository.

  • luca

    la stessa cosa capita anche a me… eppure fino a qualche giorno fa screensaver compariva nelle opzioni, pur non funzionando  

  • Screensaver a me funziona… Tuttavia l’errore riportato da voi si dovrebbe correggere forzando la ricompilazione di alcuni pacchetti con il comando:

    ./makefusiondebs noupdate rebuild libcompizconfig plugins-main plugins-extra plugins-unsupported extra-items

    Altrimenti un modo meno elegante ma funzionante è quello di rimuovere la sotto-cartella fusion.

    Scusate 😛 

  • luca

    provato in tutti e due i modi ma il problema persiste… tra l’altro noto ora che è scomparso anche il plugin che fa vedere le ruote dentate di KDE che girano all’itnerno del cubo  

     

  • maurizio

    oggi la compilazione si è interrotta con questo errore

    http://paste.ubuntu-nl.org/30108/&nbsp;

  • Erik

    ho avuto lo stesso problema del punto 139.. non so come risolvere.. aiuto please.. 😀