cmake issues with Ubuntu 14.04 lts
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Inkscape |
Invalid
|
Undecided
|
Unassigned |
Bug Description
cmake issues have been seen with two different systems running Ubuntu 14.04 lts, both 32 bits. However, they are not the same issues!
System "A" was installed with the earliest 14.04 lts.
System "B" was installed with 14.04.5 lts.
Both have been brought up to date as much as possible with:
apt-get update
apt-get dist-upgrade
System "A" was also updated to use kernel 4.2.0-42-generic, to see if that brought in
any other packages, which was not the case.
then
# system A, with bzr update the source in /usr/local/
mkdir /usr/local/
cd /usr/local/
# system B, with bzr install source in /usr/local/
mkdir /usr/local/
cd /usr/local/
#on both A and B
cmake ..
make
One might have thought these systems would behave the same - they do not. Problems:
1. On "A". The first time cmake is run it sets
PACKAGE_LOCALE_DIR /share/locale
but it it is run again right after that it sets instead:
PACKAGE_LOCALE_DIR /usr/local/
The first is clearly wrong as there is no such directory on the system.
2. On "A" during the make it stops at:
src/CMakeFiles/
In file included from /usr/include/
/usr/local/
/usr/local/
/usr/local/
‘Inkscape:
/usr/local/
cannot convert ‘GdlDock* {aka _GdlDock*}’ to ‘GObject* {aka _GObject*}’
for argument ‘1’ to ‘GtkWidget* gdl_dock_
The reason it does this is that libgdl on this system is 3.8.1, but the code in dock.cpp
has:
#if WITH_GDL_3_6
_
#else
_
#endif
Adding -DWITH_GDL_3_6 (manually) to the command line compiles this module. When cmake runs it logs:
Using GDL 3.6 or higher
but for some reason on this system it is not setting the definition for the compilation of the module.
3. On "A" at the final link to build the inkscape application it fails with:
[ 97%] [ 97%] Building CXX object
src/CMakeFiles/
Building CXX object src/CMakeFiles/
Linking CXX executable ../bin/inkview
../lib/
../lib/
../lib/
../lib/
../lib/
collect2: error: ld returned 1 exit status
make[2]: *** [bin/inkview] Error 1
make[1]: *** [src/CMakeFiles
The system has both liblcm1 and liblcms2-2. There is a -llcms2 in the
link command, changing it to -llcms in that command lets the link
complete. The cmake log file has:
-- Found LCMS2: /usr/lib/
ENABLE_LCMS: ON
So cmake seem to be confused on this system as to which lcms it is using.
4. On "B" in make following cmake:
CMake Error at /usr/local/
(string):
string does not recognize sub-command CONCAT
because cmake is 2.8.12 but the CONCAT requires 3.x, according to:
https:/
Problem 4 is well before problems 2 and 3 would have been observed, so 2 and 3 might show up there if make ever got that far.
Problems 1-4 have been discussed with Marc Jeanmougin who is running a very similar Ubuntu system
in a virtual machine and does not see any of these issues.
Software versions on A:
apt-cache show libgtkmm-3.0-dev | grep Version
Version: 3.10.1-0ubuntu2
apt-cache show libglibmm-2.4-dev | grep Version
Version: 2.39.93-0ubuntu1
apt-cache show libglib2.0-dev | grep Version
Version: 2.40.0-2
apt-cache show libgdl-3-dev | grep Version
Version: 3.8.1-2ubuntu1
% cmake --version
cmake version 2.8.12.2
% bash --version
GNU bash, version 4.3.11(1)-release (i686-pc-linux-gnu)
MJ reported the same versions on his system (other than bash, which I forgot
to ask him about).
On system "A" the attached file is the output from
cmake ..
when run in freshly created and empty build subdirectory.