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

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

    <bug>
          <bug_id>44106</bug_id>
          
          <creation_ts>2022-10-21 12:57:14 +0300</creation_ts>
          <short_desc>прибитый гвоздями уровень оптимизации -O2</short_desc>
          <delta_ts>2023-06-07 08:18:40 +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>cmake</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Shigorin">mike</reporter>
          <assigned_to name="Vitaly Lipatov">lav</assigned_to>
          <cc>arbars</cc>
    
    <cc>ilyakurdyukov</cc>
    
    <cc>iv</cc>
    
    <cc>lav</cc>
    
    <cc>ximper</cc>
    
    <cc>zerg</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>216283</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2022-10-21 12:57:14 +0300</bug_when>
    <thetext>По состоянию на cmake 3.23.2-alt1.1 в /usr/share/cmake/Modules/Compiler/
наблюдаю прибитые гвоздями -O2 -- как если бы этого было мало, опции по умолчанию эти люди передают _после_ того, что указал собирающий, т.е. наши %optflags попросту перекрываются, если не предпринимать особых cmake-специфических мер.

На x86 это некритично, поскольку совпадает с типичным применением gcc; на e2k -- уже существенно, поскольку для lcc в rpm-build выставляем по умолчанию -O3.
Может оказаться важно и для других архитектур.

В 3.23.2-alt1.2 добавил под %ifarch %e2k:

sed -i &apos;s/ -O2/ -O%_optlevel/g&apos; Modules/Compiler/{LCC,GNU}*

Возможно, стоит вытащить из-под %ifarch (и заодно трогать Clang*).

Если вдруг у кого есть контакт с апстримом -- им бы как-то довести, что дефолты -- на то и дефолты, чтоб при необходимости _их_ можно было перекрыть, а не _они_ перекрывали указанное явно...

Спасибо Илье Курдюкову за обнаружение и доведение до моего сведения.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216287</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2022-10-21 13:31:24 +0300</bug_when>
    <thetext>На mipsel для некоторых пакетов приходится выставлять

%ifarch %mips32
%define optflags_debug -g1
%endif

так как с простым стандартным -g компилятор ест слишком много памяти и не помещается в 2Gb юзерспейсного виртуального адресного пространства 32-битного mips.

Так вот, для некотрых пакетов я добавлял к аргументам %cmake дополнительные флаги. Например, к libopencv так:

        -DPYTHON_DEFAULT_EXECUTABLE=%__python3 \
+       -DCMAKE_C_FLAGS_RELWITHDEBINFO=&quot;%optflags&quot; \
+       -DCMAKE_CXX_FLAGS_RELWITHDEBINFO=&quot;%optflags&quot; \
        %nil

Я тогда начинал писать письмо, но не отправил, так как не доразобрался, это у libopencv такой странные CMakefile&apos;ы или проблема более глобальна. Видимо, глобальна.

Выводы из этого:

1. sed&apos;а не достаточно, хотелось бы полного применения %_optflags в том виде, как они в спеке.
2. Всё можно настроить.

Я подозреваю, что в приоритете применения настроек у cmake есть своя логика, но и с ней можно подружится. Для этого предлагаю добавить в %cmake дополнительную кучу настроек и посмотреть, поможет ли. Примерный список на добавление:

CMAKE_C_FLAGS_DEBUG=%_optflags \
CMAKE_C_FLAGS_MINSIZEREL=%_optflags \
CMAKE_C_FLAGS_RELEASE=%_optflags \
CMAKE_C_FLAGS_RELWITHDEBINFO=%_optflags \
CMAKE_CXX_FLAGS_DEBUG=%_optflags \
CMAKE_CXX_FLAGS_MINSIZEREL=%_optflags \
CMAKE_CXX_FLAGS_RELEASE=%_optflags \
CMAKE_CXX_FLAGS_RELWITHDEBINFO=%_optflags \
CMAKE_Fortran_FLAGS_DEBUG=%_optflags \
CMAKE_Fortran_FLAGS_MINSIZEREL=%_optflags \
CMAKE_Fortran_FLAGS_RELEASE=%_optflags \
CMAKE_Fortran_FLAGS_RELWITHDEBINFO=%_optflags</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216706</commentid>
    <comment_count>2</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2022-10-30 18:10:10 +0300</bug_when>
    <thetext>Чтобы провести эксперимент, хорошо бы иметь патч к cmake и проект, на котором проверять.
В идеале хотелось бы, чтобы эксперимент провёл кто-то более заинтересованный, чем я. Ну и общение с апстримом тоже. Они там мало воспринимают жалобы, но готовое исправление может их убедить.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>