Created attachment 5015 [details] Правка исходного кода Согласно файла modules/readme.txt, при отсутствии указания версии переменная XXX_FIND_VERSION должна отсутствовать, переменные XXX_FIND_VERSION_MAJOR, XXX_FIND_VERSION_MINOR, XXX_FIND_VERSION_PATCH и XXX_FIND_VERSION_TWEAK, XXX_FIND_VERSION_COUNT. На данный момент переменная XXX_FIND_VERSION есть всегда и она определена, переменные XXX_FIND_VERSION_MAJOR, XXX_FIND_VERSION_MINOR, XXX_FIND_VERSION_PATCH и XXX_FIND_VERSION_TWEAK при отсутствии указания версии устанавливаются в случайное значение. При этом исполнение сборки модулей непредсказуемо от падения при сборке до неправильно собранных файлов.
вот тут может сломали или около http://git.altlinux.org/people/dubrsl/packages/?p=cmake.git;a=commitdiff;h=9fc7ea4c620e849a719ea23ea6faff17f1d67ee6
Прошу прощения, в процессе написания дрогнула рука. Должно быть: "Согласно файла Modules/readme.txt, при отсутствии указания версии переменная XXX_FIND_VERSION должна отсутствовать, переменные XXX_FIND_VERSION_MAJOR, XXX_FIND_VERSION_MINOR, XXX_FIND_VERSION_PATCH и XXX_FIND_VERSION_TWEAK, XXX_FIND_VERSION_COUNT должны отсутствовать." Может, мой патч и неверен. В общем, в kde4libs-devel в файле /usr/share/kde4/apps/cmake/modules/FindQt4.cmake есть проверка переменной Qt4_FIND_VERSION и в случае наличия данной переменной выставляются другие переменные. Однако при вызове этого файла через 'find_package(Qt4)' переменная Qt4_FIND_VERSION создаётся и задаётся параметром QT_MIN_VERSION, а переменные Qt4_FIND_VERSION_* или созданы и пусты, или не созданы вообще. В результате падение при сборке программ, использующих KDE4 и, соответственно, файл из kde4libs-devel, так как в в файле FindKDE4.cmake из kde4libe-devel как раз стоит вызов find_package без версии, но с заранее заданным параметром QT_MIN_VERSION. Глубже разобраться не получается. P.S. Ага! В файле Modules/FindQt4.cmake из исходников cmake есть такая запись: #support old QT_MIN_VERSION if set, but not if version is supplied by find_package() IF(NOT Qt4_FIND_VERSION AND QT_MIN_VERSION) SET(Qt4_FIND_VERSION ${QT_MIN_VERSION}) ENDIF(NOT Qt4_FIND_VERSION AND QT_MIN_VERSION) Случаем, не она портит всю малину? В таком случае здесь должны определяться ещё и переменные Qt4_FIND_VERSION_*, чего нет.
Как только я исправил файл Modules/FindQt4.cmake из cmake-modules, так сразу сборка заработала.
Но вопрос к исходному коду (неинициализации переменных) всё равно никуда не делся.
Вопрос к коду остался.
Вот мнение девелопера http://public.kitware.com/Bug/view.php?id=12352#c27160
Понятно. Тогда вопрос к коду закрываю.