<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>25927</bug_id>
          
          <creation_ts>2011-07-19 13:46:07 +0400</creation_ts>
          <short_desc>Ошибка в формировании переменных версии пакета</short_desc>
          <delta_ts>2011-08-20 10:36:02 +0400</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>cmake</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>NOTABUG</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="serpiph">serpiph</reporter>
          <assigned_to name="Slava Dubrovskiy">dubrsl</assigned_to>
          <cc>lav</cc>
    
    <cc>nenderus</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>123309</commentid>
    <comment_count>0</comment_count>
      <attachid>5015</attachid>
    <who name="serpiph">serpiph</who>
    <bug_when>2011-07-19 13:46:07 +0400</bug_when>
    <thetext>Created attachment 5015
Правка исходного кода

Согласно файла 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 при отсутствии указания версии устанавливаются в случайное значение.

При этом исполнение сборки модулей непредсказуемо от падения при сборке до неправильно собранных файлов.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123337</commentid>
    <comment_count>1</comment_count>
    <who name="Slava Dubrovskiy">dubrsl</who>
    <bug_when>2011-07-20 11:14:44 +0400</bug_when>
    <thetext>вот тут может сломали или около
http://git.altlinux.org/people/dubrsl/packages/?p=cmake.git;a=commitdiff;h=9fc7ea4c620e849a719ea23ea6faff17f1d67ee6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123341</commentid>
    <comment_count>2</comment_count>
    <who name="serpiph">serpiph</who>
    <bug_when>2011-07-20 14:53:14 +0400</bug_when>
    <thetext>Прошу прощения, в процессе написания дрогнула рука. Должно быть: &quot;Согласно файла 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 должны отсутствовать.&quot;

Может, мой патч и неверен.

В общем, в kde4libs-devel в файле /usr/share/kde4/apps/cmake/modules/FindQt4.cmake есть проверка переменной Qt4_FIND_VERSION и в случае наличия данной переменной выставляются другие переменные. Однако при вызове этого файла через &apos;find_package(Qt4)&apos; переменная 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_*, чего нет.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123363</commentid>
    <comment_count>3</comment_count>
    <who name="serpiph">serpiph</who>
    <bug_when>2011-07-21 13:15:29 +0400</bug_when>
    <thetext>Как только я исправил файл Modules/FindQt4.cmake из cmake-modules, так сразу сборка заработала.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123364</commentid>
    <comment_count>4</comment_count>
    <who name="serpiph">serpiph</who>
    <bug_when>2011-07-21 13:16:48 +0400</bug_when>
    <thetext>Но вопрос к исходному коду (неинициализации переменных) всё равно никуда не делся.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123431</commentid>
    <comment_count>5</comment_count>
    <who name="serpiph">serpiph</who>
    <bug_when>2011-07-25 00:16:40 +0400</bug_when>
    <thetext>Вопрос к коду остался.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123602</commentid>
    <comment_count>6</comment_count>
    <who name="Slava Dubrovskiy">dubrsl</who>
    <bug_when>2011-08-03 22:45:46 +0400</bug_when>
    <thetext>Вот мнение девелопера
http://public.kitware.com/Bug/view.php?id=12352#c27160</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124304</commentid>
    <comment_count>7</comment_count>
    <who name="serpiph">serpiph</who>
    <bug_when>2011-08-20 10:36:02 +0400</bug_when>
    <thetext>Понятно. Тогда вопрос к коду закрываю.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5015</attachid>
            <date>2011-07-19 13:46:07 +0400</date>
            <delta_ts>2011-07-19 13:46:07 +0400</delta_ts>
            <desc>Правка исходного кода</desc>
            <filename>cmake-2.8.5.patch</filename>
            <type>text/plain</type>
            <size>1100</size>
            <attacher name="serpiph">serpiph</attacher>
            
              <data encoding="base64">ZGlmZiAtTmF1ciBjbWFrZS0yLjguNS5vcmlnL1NvdXJjZS9jbUZpbmRQYWNrYWdlQ29tbWFuZC5j
eHggY21ha2UtMi44LjUvU291cmNlL2NtRmluZFBhY2thZ2VDb21tYW5kLmN4eAotLS0gY21ha2Ut
Mi44LjUub3JpZy9Tb3VyY2UvY21GaW5kUGFja2FnZUNvbW1hbmQuY3h4CTIwMTEtMDctMDggMTU6
MTI6NTAuMDAwMDAwMDAwICswNDAwCisrKyBjbWFrZS0yLjguNS9Tb3VyY2UvY21GaW5kUGFja2Fn
ZUNvbW1hbmQuY3h4CTIwMTEtMDctMTkgMTM6Mzk6MDEuNjQwMDE1NzAzICswNDAwCkBAIC0xNzMx
LDEwICsxNzMxLDEwIEBACiAKICAgICAgIC8vIFRyeSB0byBwYXJzZSB0aGUgdmVyc2lvbiBudW1i
ZXIgYW5kIHN0b3JlIHRoZSByZXN1bHRzIHRoYXQgd2VyZQogICAgICAgLy8gc3VjY2Vzc2Z1bGx5
IHBhcnNlZC4KLSAgICAgIHVuc2lnbmVkIGludCBwYXJzZWRfbWFqb3I7Ci0gICAgICB1bnNpZ25l
ZCBpbnQgcGFyc2VkX21pbm9yOwotICAgICAgdW5zaWduZWQgaW50IHBhcnNlZF9wYXRjaDsKLSAg
ICAgIHVuc2lnbmVkIGludCBwYXJzZWRfdHdlYWs7CisgICAgICB1bnNpZ25lZCBpbnQgcGFyc2Vk
X21ham9yID0gMDsKKyAgICAgIHVuc2lnbmVkIGludCBwYXJzZWRfbWlub3IgPSAwOworICAgICAg
dW5zaWduZWQgaW50IHBhcnNlZF9wYXRjaCA9IDA7CisgICAgICB1bnNpZ25lZCBpbnQgcGFyc2Vk
X3R3ZWFrID0gMDsKICAgICAgIHRoaXMtPlZlcnNpb25Gb3VuZENvdW50ID0KICAgICAgICAgc3Nj
YW5mKHRoaXMtPlZlcnNpb25Gb3VuZC5jX3N0cigpLCAiJXUuJXUuJXUuJXUiLAogICAgICAgICAg
ICAgICAgJnBhcnNlZF9tYWpvciwgJnBhcnNlZF9taW5vciwKQEAgLTE3NTEsNiArMTc1MSw3IEBA
CiAgICAgfQogCiAgIHJlc3VsdF92ZXJzaW9uID0gdGhpcy0+TWFrZWZpbGUtPkdldFNhZmVEZWZp
bml0aW9uKCJQQUNLQUdFX1ZFUlNJT04iKTsKKyAgaWYoIXRoaXMtPlZlcnNpb25Gb3VuZENvdW50
KSB0aGlzLT5NYWtlZmlsZS0+UmVtb3ZlRGVmaW5pdGlvbigiUEFDS0FHRV9GSU5EX1ZFUlNJT04i
KTsKICAgaWYgKHJlc3VsdF92ZXJzaW9uLmVtcHR5KCkpCiAgICAgewogICAgIHJlc3VsdF92ZXJz
aW9uID0gInVua25vd24iOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>