Compiz-git: differenze tra le versioni
(→Consigli) |
(→Script) |
(Nessuna differenza)
|
Versione delle 18:37, 8 apr 2008
Descrizione
Questo script esegue il download dell'ultima versione GIT di compiz-fusion, lo compila e lo installa (il prefix di default è lo stesso usato da Patrik --> /usr/local). Oltre a compiz vengono scaricati i rami del progetto di cui necessita per il suo corretto funzionamento (libcompizconfig, ccsm, emerald,...) e tutti i plugins disponibili :-)
Finalmente viene creato un pacchetto ".tgz" per ogni ramo del progetto!! In questo modo è pi semplice tenere traccia dell'installazione di compiz :-D
*** ATTENZIONE ***
L'attuale versione NON è compatibile con distro a 64bit. Sto cercando di aggiungere il supporto anche per questo tipo di cpu, ma per il momento lo script si può usare solo con distro 32bit.
Requisiti
GIT --> home
PYTHON --> python-italia // sito_ufficiale
CONNESSIONE A INTERNET ATTIVA --> per scaricare i vari componenti
ACCELERAZIONE 3D ATTIVATA --> per poter avviare compiz e godersi al meglio tutte le meraviglie di questo window-manager (per sapere come abilitare l'accelerazione 3D consultate questa guida, la quale contiene anche alcuni consigli utili per avviare compiz e risolvere problemi comuni)
Download
http://www.slacky.eu/wikislack/script/get-compiz-v3.3.sh
Script
Di seguito è riportato il codice dello script. Versione 4.0
#!/bin/bash # Script che scarica, compila e installa compiz-fusion versione git # # Compiz sarà compilato senza il supporto per metacity, gnome e gconf; # in pratica sarà una versione per chi usa esclusivamente KDE su slackware 12.0 # :-) # # Script creato il 8/4/2008 da Ansa89 (avrei dovuto studiare Bergson e Dewey...) # Variabili per la creazione del pacchetto .tgz HERE=$(pwd) PKG="package-getcompiz" VERSION="git" CHOST="i686" ARCH=${ARCH:-i686} BUILD=1 if [ "$ARCH" == "i386" ]; then SLKCFLAGS="-O2 -march=i386 -mcpu=i686" elif [ "$ARCH" == "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mcpu=i686" elif [ "$ARCH" == "i686" ]; then SLKCFLAGS="-O2" elif [ "$ARCH" == "s390" ]; then SLKCFLAGS="-O2" elif [ "$ARCH" == "x86_64" ]; then SLKCFLAGS="-O2" fi # Variabili per il download di compiz COMPIZ="git://git.freedesktop.org/git/xorg/app/compiz" REPO="git://anongit.compiz-fusion.org/fusion/" ITEMS="libraries/bcop" ITEMS="$ITEMS plugins-main plugins-extra plugins-unsupported" ITEMS="$ITEMS decorators/emerald decorators/emerald-themes" ITEMS="$ITEMS compizconfig/libcompizconfig" ITEMS="$ITEMS compizconfig/compizconfig-python" ITEMS="$ITEMS compizconfig/ccsm" ITEMS="$ITEMS i18n" EXTRA="git://anongit.compiz-fusion.org/users/crdlb/fusion-icon" # Gli argomenti da passare a "autogen.sh di compiz" ARGS=" --enable-librsvg --enable-gtk --disable-metacity --disable-static --disable-gconf --enable-kde --build=i686-slackware-linux --prefix=/usr/local" # Controllo se git è installato if [ -z "$(which git-clone)" ]; then echo "Devi avere GIT installato per usare questo script!" exit 1; fi if [ -z "$(which git-pull)" ]; then echo "Devi avere GIT installato per usare questo script!" exit 1; fi # Controllo se python è installato if [ -z "$(which python)" ]; then echo "Devi avere PYTHON installato per usare questo script!" exit 1; fi # Funzione per scaricare compiz-git download () { # Controllo se hai internet if ! ping -c 5 www.slacky.eu &> /dev/null; then echo "Devi poter accedere a internet per scaricare i sorgenti!" exit 1; fi # Scarico e installo due pacchetti che servono if ! ls /var/log/packages/ | grep gconf &> /dev/null; then wget -c http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware-12.0/network/gizmo/3.1.0.79/gconf-2.20.1-i686-6as.tgz su -c "upgradepkg --install-new gconf-2.20.1-i686-6as.tgz" fi if ! ls /var/log/packages/ | grep orbit2 &> /dev/null; then wget -c http://darkstar.ist.utl.pt/slackware/addon/slacky/slackware-12.0/network/gizmo/3.1.0.79/orbit2-2.14.10-i686-6as.tgz su -c "upgradepkg --install-new orbit2-2.14.10-i686-6as.tgz" fi rm -f gconf-2.20.1-i686-6as.tgz orbit2-2.14.10-i686-6as.tgz # Path dove si vuole scaricare i sorgenti echo "Dove vuoi creare la cartella per i sorgenti? (usare un path assoluto, non relativo!!)" echo "Se la cartella contiene già i sorgenti scaricati, questi verranno aggiornati ;-)" echo -n "($HERE) " read dir if [ "$dir" == "" ]; then dir=$HERE fi if [ ! -e $dir/compiz-git ]; then mkdir -p $dir/compiz-git fi COMPIZDIR=$dir/compiz-git PKG=$COMPIZDIR/$PKG if [ ! -d $PKG ]; then mkdir -p $PKG fi # Scarico tutti i rami del progetto di cui ho bisogno (oppure li aggiorno) cd $COMPIZDIR COMPIZDIR=$(pwd) if [ ! -e compiz ]; then echo "Scarico compiz..." git-clone $COMPIZ echo else cd compiz echo "Sto aggiornando compiz..." git-pull cd ../ echo fi for z in $ITEMS; do if [ ! -e $(echo $z | cut -d "/" -f 2) ]; then echo "Scarico il ramo $z..." git-clone $REPO$z echo else cd $(echo $z | cut -d "/" -f 2) echo "Sto aggiornando il ramo $z..." git-pull cd ../ echo fi done cd $COMPIZDIR if [ ! -e fusion-icon ]; then echo "Scarico il ramo fusion-icon..." git-clone $EXTRA echo else cd fusion-icon echo "Sto aggiornando il ramo fusion-icon..." git-pull cd ../ echo fi echo echo "Ho terminato tutti i download :-)" echo } # Funzione per installare compiz-git installa () { # Imposto il numero di versione cd $COMPIZDIR/libcompizconfig if [ -e VERSION ]; then VERSION=$(cat VERSION | cut -d "=" -f 2) fi # Compilo compiz per primo (è una dipendenza degli altri pacchetti) cd $COMPIZDIR/compiz echo -n "Per primo compilo compiz con i seguenti flags: " echo $ARGS sleep 2 CFLAGS="$SLKCFLAGS" CXXFLAGS="$SLKCFLAGS" ./autogen.sh $ARGS sleep 2 make if [ "$(echo $?)" == "0" ]; then make install DESTDIR=$PKG mkdir -p $PKG/usr/doc/compiz cp -a AUTHORS COPYING* ChangeLog INSTALL NEWS README TODO $PKG/usr/doc/compiz/ cd $PKG echo "Inserisci la password di root per creare e installare il pacchetto compiz-$VERSION-$ARCH-$BUILD.tgz" su -c "makepkg -l y -c n $HERE/compiz-$VERSION-$ARCH-$BUILD.tgz && upgradepkg --install-new --reinstall $HERE/compiz-$VERSION-$ARCH-$BUILD.tgz && rm -Rf $PKG/*" cd $COMPIZDIR else echo echo "Qualcosa non è andato bene..." echo "Esco" echo exit 1 fi # Entro in tutte le cartelle cd $COMPIZDIR for i in libcompizconfig compizconfig-python bcop plugins-main plugins-extra plugins-unsupported emerald emerald-themes i18n; do cd $COMPIZDIR/$i # Imposto il numero di versione if [ -e VERSION ]; then VERSION2=$(cat VERSION | cut -d "=" -f 2) else VERSION2=$VERSION fi # Compilo e installo se trovo "autogen.sh" if [ -e autogen.sh ]; then echo echo "Compilo $i" CFLAGS="$SLKCFLAGS" CXXFLAGS="$SLKFLAGS" ./autogen.sh ./configure make clean make if [ "$(echo $?)" == "0" ]; then make install DESTDIR=$PKG mkdir -p $PKG/usr/doc/$i cp -a AUTHORS COPYING* ChangeLog INSTALL NEWS README TODO $PKG/usr/doc/$i cd $PKG echo "Inserisci la password di root per creare e installare il pacchetto $i-$VERSION2-$ARCH-$BUILD.tgz" su -c "makepkg -l y -c n $HERE/$i-$VERSION2-$ARCH-$BUILD.tgz && upgradepkg --install-new --reinstall $HERE/$i-$VERSION2-$ARCH-$BUILD.tgz && rm -Rf $PKG/*" cd $COMPIZDIR if [ "$i" == "bcop" ] && [ ! -e /usr/local/lib/pkgconfig/bcop.pc ]; then echo "Reinserisci la password di root" su -c "ln -s /usr/local/share/pkgconfig/bcop.pc /usr/local/lib/pkgconfig/" fi else echo echo "Non sono riuscito ad installare $i" echo "Mi fermo" echo cd ../ exit 1 fi fi done # Adesso compilo CCSM perchè devo usare python cd $COMPIZDIR cd ccsm if [ -e VERSION ]; then VERSION2=$(cat VERSION | cut -d "=" -f 2) else VERSION2=$VERSION fi python setup.py clean python setup.py build if [ "$(echo $?)" == "0" ]; then python setup.py --prefix=$PKG/ mkdir -p $PKG/usr/doc/ccsm/ cp -a AUTHORS COPYING* ChangeLog INSTALL NEWS README TODO $PKG/usr/doc/ccsm/ cd $PKG echo "Inserisci la password di root per creare e installare il pacchetto ccsm-$VERSION2-$ARCH-$BUILD.tgz" su -c "makepkg -l y -c n $HERE/ccsm-$VERSION2-$ARCH-$BUILD.tgz && upgradepkg --install-new --reinstall $HERE/ccsm-$VERSION2-$ARCH-$BUILD.tgz && rm -Rf $PKG/*" cd ../ echo "Reinserisci la password di root" su -c "ln -sf /usr/local/lib/python2.5/site-packages/c* /usr/lib/python2.5/site-packages/" else echo echo "Non sono riuscito ad installare ccsm" echo "Mi fermo" echo cd ../ exit 1 fi # Chiedo se vuoi anche la fusion-icon echo -n "Vuoi anche installare la fusion-icon? (s/n) " read icon if [ "$icon" == "" ]; then icon="n" fi if [ "$icon" == "s" ]; then cd $COMPIZDIR/fusion-icon if [ "$(echo $?)" == "0" ]; then if [ -e VERSION ]; then VERSION2=$(cat VERSION | cut -d "=" -f 2) else VERSION2=$VERSION fi python setup.py clean python setup.py build python setup.py install --prefix=$PKG/ mkdir -p $PKG/usr/doc/fusion-icon/ cp -a AUTHORS COPYING* ChangeLog INSTALL NEWS README TODO $PKG/usr/doc/fusion-icon/ echo "Inserisci la password di root per creare e installare il pacchetto fusion-icon-$VERSION2-$ARCH-$BUILD.tgz" su -c "makepkg -l y -c n $HERE/fusion-icon-$VERSION2-$ARCH-$BUILD.tgz && upgradepkg --install-new --reinstall $HERE/fusion-icon-$VERSION2-$ARCH-$BUILD.tgz && rm -Rf $PKG/* " cd ../ else echo echo "Non sono riuscito ad installare fusion-icon" echo "Mi fermo" echo cd ../ exit 1 fi fi echo echo echo "Congratulazioni!" echo "Ora hai installato l'ultima versione di compiz-fusion (GIT) sul tuo PC!" echo echo "Have a lot of fun :-)" } # Funzione per disinstallare compiz-git uninstall () { # Cerco se ci sono pacchetti installati if ls /var/log/packages/ | grep compiz &> /dev/null; then echo "Ho trovato questi pacchetti installati che assomigliano a compiz:" ls /var/log/packages/ | grep compiz ls /var/log/packages/ | grep emerald ls /var/log/packages/ | grep ccsm ls /var/log/packages/ | grep fusion-icon echo "Quali devo rimuovere?" echo -n "(Lista di pacchetti separati da UNO SPAZIO) " read canc if [ ! "$canc" == "" ]; then echo "Inserisci la password di root per eliminare i pacchetti $canc" su -c "removepkg $canc" fi else echo "Non ho trovato pacchetti installati che assomigliano a compiz." echo # Path contenente i sorgenti echo "Dove si trova la cartella contenente i sorgenti? (usare un path assoluto, non relativo!!)" echo -n "($HERE) " read dir if [ "$dir" == "" ]; then dir=$HERE fi if [ ! -d $dir ]; then echo "La cartella $dir non esiste!" echo exit 1 fi cd $dir for i in compiz bcop plugins-main plugins-extra plugins-unsupported emerald emerald-themes libcompizconfig compizconfig-python i18n; do if [ -d $i ]; then cd $i echo "Inserisci la password di root per rimuovere $i" su -c "make uninstall" cd ../ fi done # Adesso rimuovo CCSM perchè devo usare python cd $dir/ccsm/ echo "Inserisci la password di root per rimuovere ccsm" su -c "python setup.py uninstall" # Chiedo se devo rimuovere anche la fusion-icon echo -n "Devo rimuovere anche la fusion-icon? (s/n) " read risp if [ "$risp" == "" ] || [ "$risp" == "s" ]; then cd $dir/fusion-icon/ echo "Inserisci la password di root per rimuovere fusion-icon" su -c "python setup.py uninstall" cd ../ fi # Rimuovo anche tutti i sorgenti di compiz-git cd $dir cd ../ echo "Inserisci la password di root per rimuovere la cartella dei sorgenti" su -c "echo -n 'Sto eliminando i sorgenti di compiz-git...' && rm -Rf compiz-git/ && echo 'Fatto'" echo fi } # Controllo il parametro passato allo script case "$1" in download) download exit 0 ;; install) download installa exit 0 ;; only_install) echo echo "Dov'è la cartella contenente i sorgenti? (usare un path assoluto, non relativo!!)" echo -n "($HERE) " read COMPIZDIR if [ "$COMPIZDIR" == "" ]; then COMPIZDIR=$HERE fi cd $COMPIZDIR for i in compiz bcop plugins-main plugins-extra plugins-unsupported emerald emerald-themes libcompizconfig compizconfig-python i18n fusion-icon; do if [ ! -d $i ]; then echo echo "Il percorso $COMPIZDIR non è corretto o non contiene tutti i rami del progetto!" echo "Prova con '$0 install'..." echo "Mi fermo" echo exit 1 fi done installa exit 0 ;; uninstall) uninstall exit 0 ;; *) echo echo "Opzioni valide:" echo "$0 download --> per scaricare/aggiornare compiz-git" echo "$0 install --> per scricare/aggiornare e installare compiz-git" echo "$0 only_install --> per installare compiz-git se i sorgenti sono già stati scaricati" echo "$0 uninstall --> per rimuovere una versione di compiz-git precedentemente installata" echo echo "Versione 4.0" echo "By Ansa89 (ansa89@slacky.it)" echo exit 1 ;; esac #EOF
- Autore: Ansa89
News
Inizio una sezione "news" per spiegare le migliorie che cerco di introdurre nelle nuove versioni:
- V 1.0 --> Prima versione...con un sacco di bug (eh oh)
- V 2.0 --> Dopo un bel periodo di prove ho capito come evitare alcuni problemi durante la compilazione dei vari componenti
- V 2.1 --> Ehm...avevo sbagliato a scrivere alcune linee di codice e mentre le correggevo mi è venuto in mente di aggiungere qualcosina: finalmente possiamo avere la fusion-icon!! :-D
- V 2.2 --> "plugins-main" non trovava "bcop" durante la configurazione a causa di un path errato (spiegazione). Un ringraziamento a JohnnyMnemonic :-)
- V 3.0 --> Adesso si può scegliere se installare/aggiornare compiz o semplicemente rimuoverlo :-D
- V 3.1b --> Versione BETA: adesso crea un pacchetto .tgz (per ogni componente) e lo installa; inoltre ho introdotto il "solo download/update", così l'utente può anche scaricare compiz-git senza doverlo installare
- V 3.1b2 --> Ancora BETA: c'erano troppe variabili e richieste: ne ho tolte un po' per snellire lo script
- V 3.1b3 --> Aggiunta la modalità "only_install" che permette di installare compiz-git senza riscaricare/aggiornare tutti i rami del progetto (ovviamente i sorgenti devono essere già presenti sul computer)
- V 3.1 --> Ultime correzioni di bug; lo script sembra completo, pertanto lo sviluppo si ferma (almeno fino a quando non verranno fuori altri problemi)
- V 3.2 --> Bugfix: adesso entra nella cartella "$PKG" prima di creare i pacchetti ".tgz" (errore segnalato da alexxxius). Inoltre la fusion-icon non dà più problemi di compilazione
- V 3.3 --> Altri bugfix (sempre su un errore segnalato da alexxxius). Stavolta non dovrebbero più esserci problemi
Consigli
1) Se per caso qualcuno avrà il coraggio di usare il mio script e decidesse di attivare l'opzione che installa anche fusion-icon, è bene che sappia che basta lanciare il comando "fusion-icon" (posizionato in "/usr/bin"): questo lancerà automaticamente compiz e farà comparire una comoda icona nella tray-bar (la quale ovviamente avrà il simbolo di compiz-fusion); facendo click destro su questa icona si potrà scegliere il window-manager, il window-decorator e aprire il centro di controllo di compiz (ccsm). Inoltre offre altre funzionalità abbastanza comode :-)
2) Compizconfig setting manager, a causa di un errore, non ha le icone delle varie categorie (generale, accessibilità, desktop, ...): per correggere questo bug esiste un workaround che potete trovare qui. Un ringraziamento a mimmoforlug :-D
Feedback
Per commenti e suggerimenti inviatemi una e-mail a
ansa89[AT]slacky[DOT]it
HAVE A LOT OF FUN