PDA

View Full Version : Installing from source


metalzelot
December 27th, 2007, 03:16 AM
Hey,

I've just spent one whole day trying to install Compiz Fusion on my PC. I'm not using any kind of Distribution, I've set up my computer from scratch (LFS). So the only way for me to install software is to do so by source.

I've been using beryl before and the installation worked out quite well. But I just can't get Compiz Fusion installed.

After spending hours to figure out how to start ccsm properly I'm now stuck at the last step, installing the main plugins.
ccsm took some time because I had to renew many packages (pango, cairo, gtk, pygtk, pycairo, libglade, pygobject, libsexy, sexypython, glib) because ccsm didn't start up with the existing old versions. Is there a chance that ccsm will get rewritten in c?

Now to my problems with the main plugins. With the 0.6.0 version I get the error that in every *_options.c there are duplicate case entries:

opacify_options.c: In function 'opacifyOptionsSetScreenOption':
opacify_options.c:353: error: duplicate case value
opacify_options.c:345: error: previously used here
opacify_options.c:369: error: duplicate case value
opacify_options.c:361: error: previously used here
opacify_options.c:385: error: duplicate case value
opacify_options.c:377: error: previously used here
opacify_options.c:401: error: duplicate case value
opacify_options.c:393: error: previously used here
opacify_options.c:417: error: duplicate case value
opacify_options.c:409: error: previously used here
opacify_options.c:425: error: duplicate case value
opacify_options.c:409: error: previously used here
opacify_options.c:441: error: duplicate case value
opacify_options.c:433: error: previously used here
opacify_options.c:449: error: duplicate case value
opacify_options.c:433: error: previously used here

In the file opacify_options.c really are many identical case items:

switch (index)
{
case OpacifyScreenOptionOnlyIfBlock:
if (compSetScreenOption (s, o, value))
{
if (os->notify[OpacifyScreenOptionOnlyIfBlock])
(*os->notify[OpacifyScreenOptionOnlyIfBlock]) (s, o, OpacifyScreenOptionOnlyIfBlock);
return TRUE;
}
break;
case OpacifyScreenOptionOnlyIfBlock:
if (compSetScreenOption (s, o, value))
{
if (os->notify[OpacifyScreenOptionOnlyIfBlock])
(*os->notify[OpacifyScreenOptionOnlyIfBlock]) (s, o, OpacifyScreenOptionOnlyIfBlock);
return TRUE;
}
break;

After correcting this file the next broken file with the same problem occured. So I decided to try the git version.

If I only get the git version of the main-plugins I get thousands of errors in animation.c.

animation.c:1103: warning: initialization makes integer from pointer without a cast
animation.c:1103: warning: excess elements in scalar initializer
animation.c:1103: warning: (near initialization for 'animScreenOptionInfo[88]')
animation.c:1103: warning: excess elements in scalar initializer
animation.c:1103: warning: (near initialization for 'animScreenOptionInfo[88]')
animation.c:1103: warning: excess elements in scalar initializer
animation.c:1103: warning: (near initialization for 'animScreenOptionInfo[88]')
animation.c:1103: warning: excess elements in scalar initializer
animation.c:1103: warning: (near initialization for 'animScreenOptionInfo[88]')
animation.c:1104: warning: braces around scalar initializer
animation.c:1104: warning: (near initialization for 'animScreenOptionInfo[89]')
animation.c:1104: warning: initialization makes integer from pointer without a cast
animation.c:1104: warning: excess elements in scalar initializer
animation.c:1104: warning: (near initialization for 'animScreenOptionInfo[89]')
animation.c:1104: warning: excess elements in scalar initializer
animation.c:1104: warning: (near initialization for 'animScreenOptionInfo[89]')
animation.c:1104: warning: excess elements in scalar initializer
animation.c:1104: warning: (near initialization for 'animScreenOptionInfo[89]')
animation.c:1104: warning: excess elements in scalar initializer
animation.c:1104: warning: (near initialization for 'animScreenOptionInfo[89]')
....
animation.c:4029: error: syntax error before ')' token
animation.c:4029: error: syntax error before ')' token
animation.c:4029: error: syntax error before ')' token
animation.c:4034: error: 'CompWindowTypeDropdownMenuMask' undeclared (first use in this function)
animation.c:4035: error: 'CompWindowTypePopupMenuMask' undeclared (first use in this function)
animation.c:4036: error: 'CompWindowTypeMenuMask' undeclared (first use in this function)
animation.c:4037: error: 'CompWindowTypeTooltipMask' undeclared (first use in this function)
animation.c:4038: error: 'CompWindowTypeNotificationMask' undeclared (first use in this function)
animation.c:4039: error: 'CompWindowTypeComboMask' undeclared (first use in this function)
animation.c:4040: error: 'CompWindowTypeDndMask' undeclared (first use in this function)
animation.c:4051: error: 'TRUE' undeclared (first use in this function)
animation.c:4065: error: 'dx' undeclared (first use in this function)
animation.c:4065: error: 'dy' undeclared (first use in this function)
animation.c:4065: error: 'dwidth' undeclared (first use in this function)
animation.c:4065: error: 'dheight' undeclared (first use in this function)
animation.c: At top level:
animation.c:4070: error: syntax error before '*' token
animation.c:4071: warning: function declaration isn't a prototype
animation.c: In function 'animWindowMoveNotify':
animation.c:4072: error: 'as' undeclared (first use in this function)
animation.c:4072: error: syntax error before ')' token
animation.c:4072: error: 'w' undeclared (first use in this function)
animation.c:4072: error: syntax error before ')' token
animation.c:4073: error: 'aw' undeclared (first use in this function)
animation.c:4073: error: syntax error before ')' token
animation.c:4073: error: syntax error before ')' token
animation.c:4073: error: syntax error before ')' token
animation.c:4075: error: 'immediate' undeclared (first use in this function)
animation.c:4081: error: 'CompWindow' undeclared (first use in this function)
animation.c:4081: error: 'w2' undeclared (first use in this function)
animation.c:4093: error: syntax error before 'animStillInProgress'
animation.c:4096: error: 'aw2' undeclared (first use in this function)
animation.c:4098: error: syntax error before ')' token
....
animation.c:4544: warning: nested extern declaration of 'compAddMetadataFromFile'
animation.c: At top level:
animation.c:4551: error: syntax error before '*' token
animation.c:4552: warning: function declaration isn't a prototype
animation.c: In function 'animFini':
animation.c:4553: warning: implicit declaration of function 'freeDisplayPrivateIndex'
animation.c:4553: warning: nested extern declaration of 'freeDisplayPrivateIndex'
animation.c: At top level:
animation.c:4557: error: syntax error before '*' token
animation.c:4558: error: syntax error before '*' token
animation.c:4559: warning: return type defaults to 'int'
animation.c:4559: warning: function declaration isn't a prototype
animation.c:4563: error: syntax error before 'animVTable'
animation.c:4563: warning: type defaults to 'int' in declaration of 'animVTable'
animation.c:4564: warning: initialization makes integer from pointer without a cast
animation.c:4565: warning: excess elements in scalar initializer
animation.c:4565: warning: (near initialization for 'animVTable')
animation.c:4566: warning: excess elements in scalar initializer
animation.c:4566: warning: (near initialization for 'animVTable')
animation.c:4567: warning: excess elements in scalar initializer
animation.c:4567: warning: (near initialization for 'animVTable')
animation.c:4568: warning: excess elements in scalar initializer
animation.c:4568: warning: (near initialization for 'animVTable')
animation.c:4569: warning: excess elements in scalar initializer
animation.c:4569: warning: (near initialization for 'animVTable')
animation.c:4570: warning: excess elements in scalar initializer
animation.c:4570: warning: (near initialization for 'animVTable')
animation.c:4571: warning: excess elements in scalar initializer
animation.c:4571: warning: (near initialization for 'animVTable')
animation.c:4572: warning: data definition has no type or storage class
animation.c:4574: error: syntax error before '*' token
animation.c:4576: warning: return type defaults to 'int'
animation.c:4576: warning: no previous prototype for 'getCompPluginInfo20070830'
make[3]: *** [animation.lo] Error 1
make[3]: Leaving directory `/home/jonathan/archives/compiz/plugins-main/src/animation'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/home/jonathan/archives/compiz/plugins-main/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/jonathan/archives/compiz/plugins-main'
make: *** [all] Error 2


If I try the explained way from http://wiki.compiz-fusion.org/Get_Compiz_Fusion#line-56 I always get in trouble because I dont use gconfig because I'm a KDE-only user. This method doesn't give any possibility to set --dibable-gconf.

The last thing I tried was to install all the git versions from sources. My problem with this method is that my X11 isn't configured with xcb support so I get this error: No package 'x11-xcb' found

Will x11-xcb be required in future stable releases? If so, I have to reinstall my X11 anyway sooner or later.

Thats all I tried so far and I lost hope :( If someone of you have an idea, please share it.

greetings,

Jonathan

Deciare
December 27th, 2007, 05:07 AM
ccsm took some time because I had to renew many packages (pango, cairo, gtk, pygtk, pycairo, libglade, pygobject, libsexy, sexypython, glib) because ccsm didn't start up with the existing old versions. Is there a chance that ccsm will get rewritten in c?
Oh dear, that sounds like it took a lot of patience figure out. I'm suddenly grateful for the existence of package managers. ^^; It's good to hear that you got through it, though!

As for the likelihood of ccsm being rewritten in C, that seems extremely improbable. Many of Compiz's developers and contributors seem to love the rapid prototyping and development facilitated by Python, and a seemingly ever-increasing number of Compiz-related utilities are being written or re-written in Python.

Now to my problems with the main plugins. With the 0.6.0 version I get the error that in every *_options.c there are duplicate case entries:

opacify_options.c: In function 'opacifyOptionsSetScreenOption':
opacify_options.c:353: error: duplicate case value
[...]
In the file opacify_options.c really are many identical case items:
switch (index)
{
case OpacifyScreenOptionOnlyIfBlock:
if (compSetScreenOption (s, o, value))
{
if (os->notify[OpacifyScreenOptionOnlyIfBlock])
(*os->notify[OpacifyScreenOptionOnlyIfBlock]) (s, o, OpacifyScreenOptionOnlyIfBlock);
return TRUE;
}
break;
case OpacifyScreenOptionOnlyIfBlock:
if (compSetScreenOption (s, o, value))
{
if (os->notify[OpacifyScreenOptionOnlyIfBlock])
(*os->notify[OpacifyScreenOptionOnlyIfBlock]) (s, o, OpacifyScreenOptionOnlyIfBlock);
return TRUE;
}
break;
opacify_option.c and all other *_option.c files are generated by bcop based on information found in the XML files in the metadata/ directory. If bcop is generating unusable source code, then you may have to update libxslt, libxml, and the libraries they depend on. -_-;

After correcting this file the next broken file with the same problem occured. So I decided to try the git version.

If I only get the git version of the main-plugins I get thousands of errors in animation.c.
You can't compile plugins from git against the release version of Compiz due to architectural changes made to the git version of the Compiz-core that made it source incompatible with the release versions.

I must admit that the particular errors you're receiving aren't the ones I'm used to seeing, though.

If I try the explained way from http://wiki.compiz-fusion.org/Get_Compiz_Fusion#line-56 I always get in trouble because I dont use gconfig because I'm a KDE-only user. This method doesn't give any possibility to set --dibable-gconf.
It's been suggested that the fact that autogen.sh requires GConf (http://forum.compiz-fusion.org/showthread.php?t=5801) to be installed is a problem with GNU autotools, and that it won't be fixed from Compiz's end, so I'm afraid we're out of luck there, too...

Will x11-xcb be required in future stable releases? If so, I have to reinstall my X11 anyway sooner or later.
I'm not a developer, but given that x11-xcb was the initial architectural change that led to the current git master/stable divide, I think that it would be safe to say "yes".

Thats all I tried so far and I lost hope :( If someone of you have an idea, please share it.
Yes, the problems you're facing are harsh. :( In the absence of a package manager, it must be so much harder to get your versions and dependencies together. I wish I had more optimistic answers for you, but I'm afraid I can only wish you luck...

metalzelot
December 27th, 2007, 06:11 PM
opacify_option.c and all other *_option.c files are generated by bcop based on information found in the XML files in the metadata/ directory. If bcop is generating unusable source code, then you may have to update libxslt, libxml, and the libraries they depend on. -_-;

Thanks alot for this hint. I've now compiz working. I just reinstalled libxml2 and libxslt (there are no dependencies for those except of python) and I got rid of the mentioned error.
I got another error which was easy to fix with instructions from http://forum.compiz-fusion.org/archive/index.php/t-2649.html

I now have installed emerald from git-sources because I couldnt find any other sources (except of the old ones of www.beryl-project.org)

So I've now Compiz Fusion running. Maybe you can include more version checking in your configure scripts, so it would be easier to find an error.

It's been suggested that the fact that autogen.sh requires GConf (http://forum.compiz-fusion.org/showthread.php?t=5801) to be installed is a problem with GNU autotools, and that it won't be fixed from Compiz's end, so I'm afraid we're out of luck there, too...

I could solve this problem through merely deleting the conflicting lines in two files:
configure.ac:197: error: possibly undefined macro: AM_GCONF_SOURCE_2
so I just deleted the AM_GCONF_SOURCE_2 line (in my case line 197)

metadata/Makefile.am:77: I've deleted these lines.

if USE_GCONF
if GCONF_SCHEMAS_INSTALL
if test -z "$(DESTDIR)" ; then \
GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(schema_DATA); \
fi
endif
endif

With these deletions it should work out. But as mentioned before, I get another error with X and xcb.

I'm not a developer, but given that x11-xcb was the initial architectural change that led to the current git master/stable divide, I think that it would be safe to say "yes".

So I think I'll update my X-server within the next month for future compiz-fusion releases. But now I'm satisfied with having the stable version running.


Yes, the problems you're facing are harsh. :( In the absence of a package manager, it must be so much harder to get your versions and dependencies together. I wish I had more optimistic answers for you, but I'm afraid I can only wish you luck...

Thanks again for your time to answer all my problems. Obviously your answers have been more optimistic than you thought. At least I got it with your help: THANK YOU


Now I've one question left. I've read about this comiz-fusion-icon and I've this one running on my notebook with openSuSE but I can't find a source version of this useful manager. Where can I find the sources for it?

Deciare
December 27th, 2007, 07:19 PM
Haha, I love it when things kind of work themselves out like this! :D I'm grateful for being able to help. ^_^

Thanks for sharing the other problems you encountered and the solutions you found, too. It's always interesting to see problems from the perspective of someone who had them.

I now have installed emerald from git-sources because I couldnt find any other sources (except of the old ones of www.beryl-project.org)
The latest stable release of Emerald I could find is 0.5.2 (http://releases.compiz-fusion.org/0.5.2/). Maybe Emerald just wasn't part of the 0.6.0 release since it hadn't changed?

So I've now Compiz Fusion running. Maybe you can include more version checking in your configure scripts, so it would be easier to find an error.
Yes, that would be nice. Is anyone closer to the developers reading this post? :D

Now I've one question left. I've read about this comiz-fusion-icon and I've this one running on my notebook with openSuSE but I can't find a source version of this useful manager. Where can I find the sources for it?
fusion-icon isn't officially a part of Compiz Fusion, so for now, it can be found in git under users/crdlb/fusion-icon.

some-guy
December 28th, 2007, 02:05 AM
Emerald 0.5.2 is the latest stable because 0.6 was too buggy (I think?)
A new decorator is coming anyway :D

metalzelot
December 28th, 2007, 12:10 PM
Okay, thanks for the fusion-icon link, works fine for me.

And I hope using Emerald git with 0.6 compiz will be fine. At least I didnt experience any problems so far.

Problem is solved for me.