KDE/kdelibs

Christophe Giboudeaux cgiboudeaux at gmail.com
Tue Dec 15 00:33:19 CET 2009


On Monday 14 December 2009 23:29:27 Alexander Neundorf wrote:
> On Monday 14 December 2009, Christophe Giboudeaux wrote:
> > On Monday 14 December 2009 22:31:38 Alexander Neundorf wrote:
> > > On Monday 14 December 2009, Christophe Giboudeaux wrote:
> > > > Here's an example showing why the REQUIRED keyword may also be
> > > > misleading:
> > > >
> > > > CMakeLists.txt:
> > > >
> > > > project(demo)
> > > > cmake_minimum_required(VERSION 2.8)
> > > > find_package(SharedDesktopOntologies 0.3 REQUIRED)
> > > >
> > > >
> > > > SharedDesktopOntologies 0.3 doesn't exist. When running this
> > > > CMakeLists.txt, the only information you will get is that:
> > > >
> > > > [quote]
> > > > CMake Error at CMakeLists.txt:4 (find_package):
> > > >   Could not find module FindSharedDesktopOntologies.cmake or a
> > > > configuration file for package SharedDesktopOntologies.
> > > >
> > > >   Adjust CMAKE_MODULE_PATH to find FindSharedDesktopOntologies.cmake
> > > > or set SharedDesktopOntologies_DIR to the directory containing a
> > > > CMake configuration file for SharedDesktopOntologies.  The file will
> > > > have one of the following names:
> > > >
> > > >     SharedDesktopOntologiesConfig.cmake
> > > >     shareddesktopontologies-config.cmake
> > > >
> > > >
> > > > -- Configuring incomplete, errors occurred!
> > > >
> > > > [/quote]
> > > >
> > > > Which is totally wrong. The directory which contains
> > >
> > > Please post this to the cmake bugtracker at
> > > http://public.kitware.com/Bug , that the error message is misleading in
> > > the case that there is "just" a version mismatch.
> > >
> > > > SharedDesktopOntologiesConfig.cmake is in my CMAKE_PREFIX_PATH, if I
> > > > change the minimum version to 0.2, CMake will find it.
> > >
> > > What we can do beside that, is to add a small
> > > FindSharedDesktopOntologies.cmake, which will basically just wrap the
> > > find_package(... NO_MODULE) call with a nicer error message.
> >
> > This file exists in kdelibs and creates two issues :
> >
> > 1/
> > project(demo)
> > cmake_minimum_required(VERSION 2.8)
> > find_package(KDE4 REQUIRED)
> > include(KDE4Defaults)
> > find_package(SharedDesktopOntologies 0.3 REQUIRED)
> >
> > will claim that SharedDesktopOntologies is found:
> >
> > [quote]
> > -- Found KDE 4.4 include dir: /usr/include
> > -- Found KDE 4.4 library dir: /usr/lib
> > -- Found the KDE4 kconfig_compiler preprocessor:
> > /usr/bin/kconfig_compiler -- Found automoc4: /usr/bin/automoc4
> > -- Found SharedDesktopOntologies: /usr/share/ontology
> > -- Configuring done
> > [/quote]
> 
> Well, there is no magic there and nothing which couldn't be changed.
> I think version 0.1 is the version required for kdelibs ?

there's no such indication in kdelibs/CMakeLists.txt. It just optionally looks 
for S.D.O.
As SDO 0.3 doesn't exist, I really think CMake should display an error for 
this testcase.


> If that's wrong, which version is required ?

No idea for kdelibs. 0.2 is probably a good choice. 

> 
> > 2/ in kdepim and kdepim-runtime, soprano and nepomuk are optional but
> > SharedDesktopOntologies is required if nepomuk is not disabled and found
> > on the system:
> >
> > macro_optional_find_package(Nepomuk)
> > macro_log_feature(Nepomuk_FOUND "Nepomuk" "The Nepomuk libraries"
> > "http://www.kde.org" FALSE "" "Nepomuk extends the search and tagging
> > functionalities in KMail and Akonadi")
> >
> > # We require SharedDesktopOntology if nepomuk is enabled and was found on
> > the system.
> > if(WITH_Nepomuk AND Nepomuk_FOUND)
> >   find_package(SharedDesktopOntologies 0.2)
> 
> Oh, here version 0.2 is required.
> Is it a good idea to require 0.1 in kdelibs and 0.2 in kdepim ?

again, kdelibs only looks for SDO, not for SDO version 0.x.

> Shouldn't we require 0.2 then also in kdelibs ?
> Otherwise we get some partly support for all that I assume.

The only thing I'm sure of is that kdepim/kdepim-runtime will not compile with 
0.1.
no idea about kdebase or the other modules.

> 
> >   macro_log_feature(SHAREDDESKTOPONTOLOGIES_FOUND "Shared desktop
> > ontologies" "Desktop ontologies" "http://oscaf.sourceforge.net" TRUE
> > "0.2" "Ontologies necessary for the Nepomuk semantic desktop.")
> > endif(WITH_Nepomuk AND Nepomuk_FOUND)
> >
> > CMake will claim that SharedDesktopOntologies is found even if the wrong
> > version is installed and it will claim that Nepomuk wasn't found if S.D.O
> > is not installed
> > The issue comes from FindNepomuk.cmake which calls
> > FindSharedDesktopOntologies.cmake but doesn't require S.D.O:
> > macro_log_feature(SHAREDDESKTOPONTOLOGIES_FOUND "Shared desktop
> > ontologies" "Desktop ontologies" "http://oscaf.sourceforge.net" FALSE ""
> > "Ontologies necessary for the Nepomuk semantic desktop.")
> >
> > If this is intentional, I have two alternatives:
> > * Use find_package(SharedDesktopOntologies 0.2 NO_MODULE) but I end up
> > with two SDO lines in the macro_display_feature_log output.
> >
> > * Use an option to enable our nepomuk agents and look for SDO before
> > Nepomuk.
> 
> I am still unclear about the optional-ness of nepomuk and the required
> versions of dependencies it needs...
> 
/agree

I'll add an option in kdepim instead of using 
macro_optional_find_package(nepomuk).

Christophe.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: This is a digitally signed message part.
Url : http://mail.kde.org/pipermail/kde-buildsystem/attachments/20091215/fa565594/attachment.sig 


More information about the Kde-buildsystem mailing list