Only kdepim has a dependency on a specific version of SDO. All other modules do not care about the version.
Cheers, Sebastian Christophe Giboudeaux wrote: > 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. > > > ------------------------------------------------------------------------ > > _______________________________________________ > Kde-buildsystem mailing list > [email protected] > https://mail.kde.org/mailman/listinfo/kde-buildsystem _______________________________________________ Kde-buildsystem mailing list [email protected] https://mail.kde.org/mailman/listinfo/kde-buildsystem
