[Scribus] 1.3.5svn compile error on Ubuntu Gutsy

Craig Ringer craig
Sun Feb 17 04:42:42 CET 2008

Timothy Boyden wrote:

> I think this exercise was extremely useful, and I hope others will
> too. I found the cmake output to be misleading (especially in
> combination with Synaptic not reporting installed packages correctly).

Certainly if the CMake scripts are not checking the _FOUND variables or 
honouring REQUIRED specifications in the Find scripts that's an issue. 
That's probably what's happening, too, because what *should* happen is 
that when it's unable to determine the location of something like the 
Cairo headers it should promptly terminate with an error message.

In the end, though, it's assumed that you know to install -dev packages 
if you are compiling software on Linux (on distros that require them). I 
personally try to customise the error messages from build scripts to 
remind people about this, but it's not always possible.

In this case it sounds like the required package list in the BUILDING 
file was out of date. Do you know what additional packages you had to 

> Would it not make more sense to have the cmake script actually look for
> the dev libraries and output an error if it didn't find them?

Unfortunately it would not.
Due to the general insanity of Linux distributors the same package (and 
its -dev / -devel package) will have a different name in almost every 
distro. There is absolutely no way to check something like "Is the 
package containing the Cairo headers installed" in a distro independent 

Sometimes the package might be installed, but the version of Cairo will 
be too old. There is no way to determine this through the packaging 
system in a distro independent manner either.

Scribus also needs to build on Windows, Mac OS X , and on non-Linux 
UNIXes , where there is no package management.

For these reasons, what it has to do is scan the standard include 
locations (plus optional user-supplied ones) for required header file 
names. It may also do things like examine a header to find a version 
#define and check if the value is acceptable. Similar scans are run for 
library files and other required resources.

The best thing we can do to help Linux users with the stupid package 
naming problem is document what packages each distro needs in the 
BUILDING file. So long as the CMake code follows certain rules when 
checking for dependencies - rules it doesn't appear to be following in 
all cases at the moment - it should be able to notice a dependency is 
missing if it can't find its headers/library and complain with an error 
directing the user to read the BUILDING file.

Craig Ringer

More information about the scribus mailing list