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

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

    <bug>
          <bug_id>38643</bug_id>
          
          <creation_ts>2020-06-25 22:30:01 +0300</creation_ts>
          <short_desc>Ломается сборка gimagereader после обновления до cmake-3.17.3</short_desc>
          <delta_ts>2020-06-29 19:38:20 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>gimagereader</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vitaly Lipatov">lav</reporter>
          <assigned_to name="Vitaly Lipatov">lav</assigned_to>
          <cc>lav</cc>
    
    <cc>mike</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>190792</commentid>
    <comment_count>0</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2020-06-25 22:30:01 +0300</bug_when>
    <thetext>С cmake-3.16.3-alt1 нормально собирается.

После обновления cmake до 3.17.3 получаем:
/usr/bin/cmake -E cmake_link_script CMakeFiles/gimagereader.dir/link.txt --verbose=1
/usr/bin/g++  -pipe -frecord-gcc-switches -Wall -g -O2 -march=i586 -mtune=generic -fopenmp  -rdynamic CMakeFiles/gimagereader.dir/gimagereader_autogen/mocs_compilation.cpp.o CMakeFiles/gimagereader.dir/common/CCITTFax4Encoder.cc.o CMakeFiles/gimagereader.dir/common/PaperSize.cc.o CMakeFiles/gimagereader.dir/qt/src/Acquirer.cc.o CMakeFiles/gimagereader.dir/qt/src/Config.cc.o CMakeFiles/gimagereader.dir/qt/src/ConfigSettings.cc.o CMakeFiles/gimagereader.dir/qt/src/CrashHandler.cc.o CMakeFiles/gimagereader.dir/qt/src/DisplayRenderer.cc.o CMakeFiles/gimagereader.dir/qt/src/Displayer.cc.o CMakeFiles/gimagereader.dir/qt/src/DisplayerToolSelect.cc.o CMakeFiles/gimagereader.dir/qt/src/DjVuDocument.cc.o CMakeFiles/gimagereader.dir/qt/src/FileDialogs.cc.o CMakeFiles/gimagereader.dir/qt/src/MainWindow.cc.o CMakeFiles/gimagereader.dir/qt/src/OutputEditor.cc.o CMakeFiles/gimagereader.dir/qt/src/OutputEditorText.cc.o CMakeFiles/gimagereader.dir/qt/src/OutputTextEdit.cc.o CMakeFiles/gimagereader.dir/qt/src/Recognizer.cc.o CMakeFiles/gimagereader.dir/qt/src/Scanner.cc.o CMakeFiles/gimagereader.dir/qt/src/SearchReplaceFrame.cc.o CMakeFiles/gimagereader.dir/qt/src/SourceManager.cc.o CMakeFiles/gimagereader.dir/qt/src/SubstitutionsManager.cc.o CMakeFiles/gimagereader.dir/qt/src/TessdataManager.cc.o CMakeFiles/gimagereader.dir/qt/src/Utils.cc.o CMakeFiles/gimagereader.dir/qt/src/hocr/DisplayerToolHOCR.cc.o CMakeFiles/gimagereader.dir/qt/src/hocr/HOCRDocument.cc.o CMakeFiles/gimagereader.dir/qt/src/hocr/HOCROdtExporter.cc.o CMakeFiles/gimagereader.dir/qt/src/hocr/HOCRPdfExporter.cc.o CMakeFiles/gimagereader.dir/qt/src/hocr/HOCRTextExporter.cc.o CMakeFiles/gimagereader.dir/qt/src/hocr/OutputEditorHOCR.cc.o CMakeFiles/gimagereader.dir/qt/src/main.cc.o CMakeFiles/gimagereader.dir/qt/src/scanner/ScannerSane.cc.o CMakeFiles/gimagereader.dir/qrc_gimagereader.cpp.o  -o gimagereader-qt5  -ltesseract -lqtspell-qt5 -lpoppler-qt5 -lquazip5 -lsane -ldjvulibre -lenchant-2 -lpodofo -ldl /usr/lib/libQt5Network.so.5.12.8 /usr/lib/libQt5DBus.so.5.12.8 /usr/lib/libQt5Xml.so.5.12.8 /usr/lib/libQt5PrintSupport.so.5.12.8 /usr/lib/libQt5Widgets.so.5.12.8 /usr/lib/libQt5Gui.so.5.12.8 /usr/lib/libQt5Core.so.5.12.8

[ 57%] Linking CXX executable gimagereader-qt5
/usr/bin/ld.default: CMakeFiles/gimagereader.dir/qt/src/Acquirer.cc.o: in function `Acquirer::~Acquirer()&apos;:
/tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/qt/src/Acquirer.cc:75: undefined reference to `vtable for Acquirer&apos;
/usr/bin/ld.default: CMakeFiles/gimagereader.dir/qt/src/Acquirer.cc.o: in function `Acquirer::Acquirer(UI_MainWindow const&amp;)&apos;:
/tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/qt/src/Acquirer.cc:37: undefined reference to `vtable for Acquirer&apos;
/usr/bin/ld.default: CMakeFiles/gimagereader.dir/qt/src/Acquirer.cc.o: in function `ScannerSane::ScannerSane()&apos;:
/tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/qt/src/scanner/ScannerSane.hh:33: undefined reference to `vtable for ScannerSane&apos;
/usr/bin/ld.default: CMakeFiles/gimagereader.dir/qt/src/Acquirer.cc.o: in function `AbstractSetting::AbstractSetting(QString const&amp;)&apos;:
/tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/qt/src/ConfigSettings.hh:59: undefined reference to `vtable for AbstractSetting&apos;
/usr/bin/ld.default: CMakeFiles/gimagereader.dir/qt/src/Acquirer.cc.o: in function `ComboSetting::ComboSetting(QString const&amp;, QComboBox*, int)&apos;:</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190793</commentid>
    <comment_count>1</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2020-06-25 22:45:17 +0300</bug_when>
    <thetext>Видимо, дело в этим изменении, начинающемся с 3.17.0, о котором пишет cmake при сборке:

CMake Warning (dev) in CMakeLists.txt:
  Policy CMP0100 is not set: Let AUTOMOC and AUTOUIC process .hh files.  Run
  &quot;cmake --help-policy CMP0100&quot; for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.

  For compatibility, CMake is excluding the header file(s):

    &quot;/tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/common/CCITTFax4Encoder.hh&quot;
    &quot;/tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/common/LangTables.hh&quot;
    &quot;/tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/common/PaperSize.hh&quot;
    &quot;/tmp/.private/lav/RPM/BUILD/gimagereader-3.3.1/qt/src/Acquirer.hh&quot;

...

$ cmake --help-policy CMP0100
CMP0100
-------

Let ``AUTOMOC`` and ``AUTOUIC`` process
header files that end with a ``.hh`` extension.

Since version 3.17, CMake processes header files that end with a
``.hh`` extension in ``AUTOMOC`` and ``AUTOUIC``.
In earlier CMake versions, these header files were ignored by
``AUTOMOC`` and ``AUTOUIC``.

This policy affects how header files that end with a ``.hh`` extension
get treated in ``AUTOMOC`` and ``AUTOUIC``.

The ``OLD`` behavior for this policy is to ignore ``.hh`` header files
in ``AUTOMOC`` and ``AUTOUIC``.

The ``NEW`` behavior for this policy is to process ``.hh`` header files
in ``AUTOMOC`` and ``AUTOUIC`` just like other header files.

.. note::

  To silence the ``CMP0100`` warning source files can be excluded from
  ``AUTOMOC`` and ``AUTOUIC`` processing by setting the
  source file properties ``SKIP_AUTOMOC``, ``SKIP_AUTOUIC`` or
  ``SKIP_AUTOGEN``.

  .. code-block:: cmake

    # Source skip example:
    set_property(SOURCE /path/to/file1.hh PROPERTY SKIP_AUTOMOC ON)
    set_property(SOURCE /path/to/file2.hh PROPERTY SKIP_AUTOUIC ON)
    set_property(SOURCE /path/to/file3.hh PROPERTY SKIP_AUTOGEN ON)

This policy was introduced in CMake version 3.17.0.  CMake version
3.17.0 warns when the policy is not set and uses ``OLD`` behavior.
Use the ``cmake_policy()`` command to set it to ``OLD`` or ``NEW``
explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190796</commentid>
    <comment_count>2</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2020-06-26 01:19:37 +0300</bug_when>
    <thetext>gimagereader-3.3.1-alt3 -&gt; sisyphus:

 Thu Jun 25 2020 Vitaly Lipatov &lt;lav@altlinux.ru&gt; 3.3.1-alt3
 - fix build with cmake after 3.17.0 (ALT bug 38643)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>190826</commentid>
    <comment_count>3</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2020-06-29 19:38:20 +0300</bug_when>
    <thetext>Тогда я добавлю для памяти, что исправление сделано в апстриме так:
++IF(${CMAKE_VERSION} VERSION_GREATER &quot;3.17.0&quot;)
++CMAKE_POLICY(SET CMP0100 NEW)
++ENDIF()

Они не захотели применить появившийся в 3.7.0 VERSION_GREATER_EQUAL

Поэтому сборка c cmake 3.17.0 работать не будет, хотя в спеке это не указано.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>