#!/bin/bash PACKAGES="fusion ccs-gconf" COMPIZREMOVE="kde fuse" PREFIX="/usr/local" DISTRO="ubuntu-edgy" ITEMS="$ITEMS fusion/libraries/bcop"; ITEMS="$ITEMS compiz"; ITEMS="$ITEMS fusion/compizconfig/libcompizconfig"; ITEMS="$ITEMS fusion/compizconfig/compizconfig-python"; ITEMS="$ITEMS fusion/compizconfig/compizconfig-backend-gconf"; ITEMS="$ITEMS fusion/compizconfig/compizconfig-backend-kconfig"; ITEMS="$ITEMS fusion/compizconfig/ccsm"; #ITEMS="$ITEMS fusion/plugins/3d"; ITEMS="$ITEMS fusion/plugins-main"; ITEMS="$ITEMS fusion/plugins-extra"; ITEMS="$ITEMS fusion/plugins-unsupported"; ITEMS="$ITEMS users/kristian/zoom"; #ITEMS="$ITEMS fusion/plugins/thumbnail"; #ITEMS="$ITEMS fusion/plugins/ring"; #ITEMS="$ITEMS fusion/plugins/showdesktop"; #ITEMS="$ITEMS fusion/plugins/group"; #ITEMS="$ITEMS fusion/plugins/expo"; #ITEMS="$ITEMS users/raof/radial-switcher"; #ITEMS="$ITEMS fusion/plugins/gears"; #ITEMS="$ITEMS fusion/plugins/vpswitch"; #ITEMS="$ITEMS fusion/plugins/wall"; #ITEMS="$ITEMS fusion/plugins/resizeinfo"; #ITEMS="$ITEMS fusion/plugins/animation"; #ITEMS="$ITEMS fusion/plugins/cubereflex"; #ITEMS="$ITEMS fusion/misc/yags"; #ITEMS="$ITEMS users/maniac/scalefilter"; #ITEMS="$ITEMS fusion/plugins/goto-viewport"; ITEMS="$ITEMS fusion/decorators/emerald"; #ITEMS="$ITEMS fusion/plugins/mswitch"; ITEMS="$ITEMS fusion/plugins-unsupported"; #ITEMS="$ITEMS fusion/plugins/wallpaper"; #ITEMS="$ITEMS fusion/plugins/scaleaddon"; #ITEMS="$ITEMS fusion/plugins/reflex"; #ITEMS="$ITEMS fusion/plugins/splash"; #ITEMS="$ITEMS fusion/plugins/snow"; #ITEMS="$ITEMS fusion/plugins/text"; #ITEMS="$ITEMS fusion/plugins/trailfocus"; #ITEMS="$ITEMS fusion/plugins/tile"; #ITEMS="$ITEMS fusion/plugins/snap"; #ITEMS="$ITEMS fusion/plugins/put"; #ITEMS="$ITEMS fusion/plugins/opacify"; #ITEMS="$ITEMS fusion/plugins/neg"; #ITEMS="$ITEMS fusion/plugins/mblur"; #ITEMS="$ITEMS fusion/plugins/jpeg"; #ITEMS="$ITEMS fusion/plugins/fakeargb"; #ITEMS="$ITEMS fusion/plugins/fadedesktop"; #ITEMS="$ITEMS fusion/plugins/extrawm"; #ITEMS="$ITEMS fusion/plugins/crashhandler"; #ITEMS="$ITEMS fusion/plugins/bench"; #ITEMS="$ITEMS fusion/plugins/addhelper"; #ITEMS="$ITEMS fusion/plugins/firepaint"; #ITEMS="$ITEMS fusion/plugins/winrules"; #ITEMS="$ITEMS fusion/misc/makefile"; ITEMS="$ITEMS fusion/plugins-wip"; ITEMS="$ITEMS fusion/plugins/compiz-scheme"; #ITEMS="$ITEMS fusion/plugins/screencasting"; #ITEMS="$ITEMS users/keeguon/compiz-icon"; #ITEMS="$ITEMS fusion/plugins/viewport-switcher"; #ITEMS="$ITEMS users/kristian/compiz-scripts"; ITEMS="$ITEMS fusion/decorators/emerald-themes"; ITEMS="$ITEMS users/3v1n0/compiz-fusion-debian"; # Compiz autogen.sh arguments selector for p in $COMPIZREMOVE ; do if [ $p = "gnome" ]; then COMPIZARGS="$COMPIZARGS --enable-kde --disable-gtk --enable-librsvg" elif [ $p = "kde" ]; then COMPIZARGS="$COMPIZARGS --enable-gtk --disable-kde --enable-librsvg" fi done COMPIZARGS="$COMPIZARGS --disable-inotify" COMPIZARGS="$COMPIZARGS --disable-fuse" # Repositories REPO="git://annongit.opencompositing.org/" # Check for git if [ -z "$(which git-clone)" ]; then echo "You must have GIT installed in order to run this script. Install git-core package." exit 1; fi # If $1 directory is present, pull repo. If not, clone it. function clone { pkgName=`echo $1 | sed 's/.*\///g'` OLDPWD=$PWD if [ -d $pkgName ]; then cd $pkgName echo -e "\nUpdating $pkgName"; git-pull > $OLDPWD/.logs/$pkgName.pull.log cd $OLDPWD else echo -e "\nCloning $pkgName"; git-clone $2$1 fi } # If autogen.sh exist, configure installation function do_autogen { if [ $1 = "compiz" ]; then AUTOGEN_OPTIONS="$COMPIZARGS" else AUTOGEN_OPTIONS="" fi OLDPWD=$PWD if [ -f $1/autogen.sh ]; then echo -e "\tConfiguring $1..." cd $1 echo -e "\tExecuting autogen.sh --prefix=$PREFIX $AUTOGEN_OPTIONS in $1..." if [ -x configure ]; then sudo rm -f configure sudo rm -rf autom4te.cache fi if [ -e Makefile ]; then sudo rm -f Makefile fi ./autogen.sh --prefix=$PREFIX $AUTOGEN_OPTIONS cd $OLDPWD else echo $1/autogen.sh not found ! bye ... exit fi } # Call make on each $1 function do_make { OLDPWD=$PWD cd $1 case "$2" in install) echo -e "\tInstalling $1..." echo -e "\tExecuting make" make if [ -e autogen.sh ]; then echo -e "\tExecuting sudo make $2" sudo make $2 else echo -e "\tExecuting make $2" make $2 fi ;; uninstall) echo -e "\tUninstalling $1..." if [ -e autogen.sh ]; then echo -e "\tExecuting sudo make $2" sudo make $2 else echo -e "\tExecuting make $2" make $2 fi echo -e "\tExecuting make clean" make clean esac cd $OLDPWD } # Create a clean logs folder for each time makeccc is executed if [ -d .logs ]; then rm -rf .logs fi mkdir .logs # makeccc action selector case "$1" in all) reset echo -en "\n***************Cloning\n" for a in $ITEMS ; do echo -en ", "`echo $a | sed 's/.*\///g'` clone $a $REPO echo -en "... done" done echo -en "\n\n***************Install\n" for a in $ITEMS; do pkgName=`echo $a | sed 's/.*\///g'` # if [ $SpkgName = "screencasting" ]; then # do_make $a/player $1 # do_make $a/rsc2raw $1 # do_make $a/plugin $1 # #NEED HACK ON LINE 122 # ARCHIVE="$pkgName/plugin/screencasting.c" # sed -i -e 's/fopen("/home/roico/screencast.rsc"/fopen("/home/$USER/screencast.rsc"/g' $ARCHIVE; # OLDPWD=$PWD # echo -en "\n[$pkgName]\n" # do_autogen $pkgName # cd $pkgName >/dev/null # cp -r $OLDPWD/compiz-fusion-debian/$pkgName/debian ./ # sudo dpkg-buildpackage -d -rfakeroot # echo result :$? # cd $OLDPWD >/dev/null # find -name \*$pkgName\*.deb -exec sudo dpkg -i {} \; do_autogen $pkgName do_make $pkgName "install" done ;; clone) clear # Clone Compiz clone compiz $REPO # Delete compiz-script folder because of fixes applied on this script rm -rf compiz-scripts # Clone CompComm for a in $ITEMS ; do clone $a $REPO done echo -e "\n" ;; install) clear sudo echo "Welcome to Compiz/CompComm" # Distro specific fixes if [ $DISTRO = "ubuntu-feisty" ] || [ $DISTRO = "kubuntu-feisty" ]; then # bash fix sudo ln -sf /bin/bash /bin/sh fi # Configure and install Compiz # do_autogen compiz # do_make compiz $1 # Configure and install CompComm for a in $ITEMS; do pkgName=`echo $a | sed 's/.*\///g'` echo $pkgName if [ $pkgName = "screencasting" ]; then do_make $pkgName/player $1 do_make $pkgName/rsc2raw $1 do_make $pkgName/plugin $1 #NEED HACK ON LINE 122 ARCHIVE="$pkgName/plugin/screencasting.c" sed -i -e 's/fopen("/home/roico/screencast.rsc"/fopen("/home/$USER/screencast.rsc"/g' $ARCHIVE; fi if [ $pkgName = "plugins-main" ]; then do_autogen $pkgName exit else echo rien # do_autogen $pkgName # do_make $pkgName $1 fi done # Distro specific fixes #if [ $DISTRO = "ubuntu-feisty" ] || [ $DISTRO = "kubuntu-feisty" ]; then # Undo bash fix # sudo ln -sf /bin/dash /bin/sh # Fix for libccs library # if [ ! -h /usr/lib/libccs.so.0 ]; then # sudo ln -s /usr/local/lib/libccs.so.0 /usr/lib/libccs.so.0 # fi # # Fix for cube sides number # gconftool-2 --type int --set /app/compiz/general/screen0/options/hsize 4 # fi # Install and patch Kristian compiz wrapper # ARCHIVE="compiz-scripts/manager/compiz-manager" # sed -i -e 's/VERBOSE="no"/VERBOSE="yes"/g' $ARCHIVE # sed -i -e 's/DELAY="5"/DELAY="1"/g' $ARCHIVE # sudo cp $ARCHIVE /usr/bin/ # Version notes echo -e "\nRun compiz-manager to load Compiz/CompComm." echo " " echo "Run ccs-settings o ccsm (preffered) to configure" ;; uninstall) # Uninstall Compiz do_make compiz $1 # Uninstall CompComm for a in $ITEMS; do b=`echo $a | sed 's/.*\///g'` if [ $b = "screencasting" ]; then sudo rm ~/.compiz/plugins/screencasting.so sudo rm ~/.compiz/metadata/screencasting.xml else do_make $b $1 fi done # Uninstalling compiz-manager sudo rm /usr/bin/compiz-manager sudo rm -f ~/.config/compiz-managerrc sudo rm -rf ~/.compiz ;; packages) if [ $DISTRO = "ubuntu-feisty" ]; then sudo aptitude install git gitweb automake intltool libtool libfuse-dev python-pyrex libxslt1-dev build-essential comerr-dev debhelper diffstat dpkg-dev enscript g++ g++-4.1 gawk hspell html2text intltool-debian libacl1-dev libart-2.0-dev libasound2-dev libaspell-dev libatk1.0-dev libattr1-dev libaudio-dev libaudiofile-dev libavahi-client-dev libavahi-common-dev libavahi-compat-libdnssd1 libavahi-glib-dev libbonobo2-dev libbonoboui2-dev libbz2-dev libcairo2-dev libcroco3-dev libcupsys2-dev libdbus-1-dev libdbus-glib-1-dev libesd0-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt11-dev libgl1-mesa-dev libglade2-dev libglib2.0-dev libglu1-mesa-dev libgnome-desktop-dev libgnome-keyring-dev libgnome-window-settings-dev libgnome2-dev libgnomecanvas2-dev libgnomeui-dev libgnomevfs2-dev libgnutls-dev libgpg-error-dev libgsf-1-dev libgtk2.0-dev libice-dev libidl-dev libidn11-dev libjasper-1.701-dev libjpeg62-dev liblcms1-dev liblua50 liblua50-dev liblualib50 liblualib50-dev liblzo-dev libmetacity-dev libmng-dev libogg-dev libopencdk8-dev libopenexr-dev libopenexr2c2a liborbit2-dev libpango1.0-dev libpcre3 libpcre3-dev libpcrecpp0 libpng12-dev libpopt-dev librsvg2-dev libsasl2-dev libselinux1-dev libsepol1-dev libsm-dev libssl-dev libstartup-notification0-dev libstdc++6-4.1-dev libtasn1-3-dev libtiff4-dev libtiffxx0c2 libvorbis-dev libwnck-dev libx11-dev libxau-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxres-dev libxt-dev lua50 mesa-common-dev po-debconf poster psutils quilt x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-resource-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev elif [ $DISTRO = "kubuntu-feisty" ]; then sudo aptitude install git gitweb automake intltool libtool libfuse-dev python-pyrex libxslt1-dev build-essential comerr-dev debhelper diffstat dpkg-dev enscript g++ g++-4.1 gawk hspell html2text intltool-debian libacl1-dev libart-2.0-dev libasound2-dev libaspell-dev libatk1.0-dev libattr1-dev libaudio-dev libaudiofile-dev libavahi-client-dev libavahi-common-dev libavahi-compat-libdnssd1 libavahi-glib-dev libbonobo2-dev libbonoboui2-dev libbz2-dev libcairo2-dev libcroco3-dev libcupsys2-dev libdbus-1-dev libdbus-glib-1-dev libesd0-dev libexpat1-dev libfontconfig1-dev libfreetype6-dev libgconf2-dev libgcrypt11-dev libgl1-mesa-dev libglade2-dev libglib2.0-dev libglu1-mesa-dev libgnome-desktop-dev libgnome-keyring-dev libgnome-window-settings-dev libgnome2-dev libgnomecanvas2-dev libgnomeui-dev libgnomevfs2-dev libgnutls-dev libgpg-error-dev libgsf-1-dev libgtk2.0-dev libice-dev libidl-dev libidn11-dev libjasper-1.701-dev libjpeg62-dev liblcms1-dev liblua50 liblua50-dev liblualib50 liblualib50-dev liblzo-dev libmetacity-dev libmng-dev libogg-dev libopencdk8-dev libopenexr-dev libopenexr2c2a liborbit2-dev libpango1.0-dev libpcre3 libpcre3-dev libpcrecpp0 libpng12-dev libpopt-dev librsvg2-dev libsasl2-dev libselinux1-dev libsepol1-dev libsm-dev libssl-dev libstartup-notification0-dev libstdc++6-4.1-dev libtasn1-3-dev libtiff4-dev libtiffxx0c2 libvorbis-dev libwnck-dev libx11-dev libxau-dev libxcomposite-dev libxcursor-dev libxdamage-dev libxdmcp-dev libxext-dev libxfixes-dev libxft-dev libxi-dev libxinerama-dev libxmu-dev libxmu-headers libxrandr-dev libxrender-dev libxres-dev libxt-dev lua50 mesa-common-dev po-debconf poster psutils quilt x11proto-composite-dev x11proto-core-dev x11proto-damage-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev x11proto-randr-dev x11proto-render-dev x11proto-resource-dev x11proto-xext-dev x11proto-xinerama-dev xtrans-dev kate kcontrol kdebase-bin kdebase-data kdebase-dev kdebase-kio-plugins kdelibs-data kdelibs4-dev kdelibs4c2a kdeprint kdesdk-scripts kdesktop kfind khelpcenter kicker klipper kmenuedit konqueror konqueror-nsplugins konsole ksmserver ksplash ksysguard ksysguardd kwin gettext-kde libavahi-qt3-1 libavahi-qt3-dev libkadm55 libkonq4 libkrb5-dev libqt3-headers libqt3-mt libqt3-mt-dev qt3-dev-tools libdbus-qt-1-1c2 libdbus-qt-1-dev libarts1-dev libarts1c2a libartsc0 libartsc0-dev fi ;; *) echo "Usage: $0 packages | clone | instal | uninstall" exit 1 esac