[Scribus] 1.3.5svn compile error on Ubuntu Gutsy
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.
More information about the scribus