Twitch, Twitch, Twitchity Twitch

Hi

Compiz and all other software can have a very very VERY annoying problem. PREFIXS. Most of the time they are right, but once every so often they can mess up and cause a whole heap of problems due to multiple occurences of one file.

When you get a whole heap of these :

ompiz: can’t load plugin ‘firepaint’ because it is built for ABI version 20070506 and actual version is 20070507
compiz: Couldn’t activate plugin ‘firepaint’
compiz: can’t load plugin ‘resizeinfo’ because it is built for ABI version 20070506 and actual version is 20070507
compiz: Couldn’t activate plugin ‘resizeinfo’
compiz: Couldn’t load plugin ‘svg’
compiz: can’t load plugin ‘expo’ because it is built for ABI version 20070506 and actual version is 20070507
compiz: Couldn’t activate plugin ‘expo’
compiz: can’t load plugin ‘animation’ because it is built for ABI version 20070506 and actual version is 20070507
compiz: Couldn’t activate plugin ‘animation’
Active Plugin List update

You KNOW something is not right. Well, it turns out that the problem is caused by one of two things..

1) A Compiz.h in /usr/include and /usr/local/include that are not in sync – delete the least recent one

2) Plugins installing to /usr, /usr/local and ~./compiz. Multiple occurences can CONFUSE Compiz and Compiz starts looking in the wrong place for the plugins. It finds the old ones in .compiz that ended up in there due to a bad prefix and claims that they cannot be loaded while meanwhile the new shiny ones in /usr/local are being promply ignored.

So whenever you have problems like this – always delete these files:

/usr/lib/compiz

/usr/local/lib/compiz

/usr/include/compiz/compiz.h and decoration.h

/usr/local/include/compiz/compiz.h and decoration.h

/home/(UserName)/.compiz/plugins

Hope that helped so that you dont twitch some much trying to figure out what the hell is wrong😉

/me shoots the person who invented prefixes

3 thoughts on “Twitch, Twitch, Twitchity Twitch

  1. The rationale of using /usr/local as the default prefix for compiling from sources (and /usr for binary packages) (which is the root of this problem) is explained here:
    http://hivelogic.com/narrative/articles/using_usr_local

    Ideally, normal users (non-developers) (who naturally don’t know about prefixes) shouldn’t have to compile themselves, hence avoiding the confusion. However, in our case, there is a lack of up-to-date binary packages and/or everybody wants to have “the latest and greatest git version”, causing everybody to compile from sources. So this separation of prefixes is doing more harm than good here, as people forget to compile with the same prefix every time or they already have binary packages installed (in /usr).

    Maybe as a solution, in the configure script (or somewhere else) you could try to detect already installed versions with other prefixes and do something accordingly. Or have a nice build script that checks these prefix conflicts, chooses the right prefix, etc…

  2. Alternatively, build compiz in a prefix under your username. Something like ~/Compiz.

    Then you can build and run your git compiz in ~/Compiz/bin/compiz, and everything is separate from your distribution’s Compiz packages.

    All of your problems are actually intended, useful behaviour. Plugins in ~/.compiz/plugins *should* be used in preference to plugins in $prefix/lib/compiz. It’s only a problem when you forget to update those plugins when you build a new git snapshot🙂

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s