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

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

    <bug>
          <bug_id>39327</bug_id>
          
          <creation_ts>2020-11-21 14:49:42 +0300</creation_ts>
          <short_desc>There is no BuildRequires(check) to match conditions implemented in %check</short_desc>
          <delta_ts>2020-11-21 22:11:48 +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>rpm-build</component>
          <version>unstable</version>
          <rep_platform>x86_64</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=6838</see_also>
          <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="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>arseny</cc>
    
    <cc>glebfm</cc>
    
    <cc>imz</cc>
    
    <cc>ldv</cc>
    
    <cc>mike</cc>
    
    <cc>placeholder</cc>
    
    <cc>viy</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>194381</commentid>
    <comment_count>0</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2020-11-21 14:49:42 +0300</bug_when>
    <thetext>Что происходит:

Успешно собирается пакет, в спеке которого указано
%if_with check
BuildRequires: hahaha &gt; 100500
%endif

Что ожидается:
Поскольку выполнение секции %check можно включить через --without check, ожидается, что без такого указания должно срабатывать
%if_with check


По мотивам
https://lists.altlinux.org/pipermail/devel/2020-November/212508.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194382</commentid>
    <comment_count>1</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2020-11-21 14:52:58 +0300</bug_when>
    <thetext>Забыл указать для примера успешно собравшееся задания с такой конструкцией в спеке:
http://git.altlinux.org/tasks/262211/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194383</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2020-11-21 15:00:20 +0300</bug_when>
    <thetext>(In reply to Vitaly Lipatov from comment #0)
&gt; Что происходит:
&gt; 
&gt; Успешно собирается пакет, в спеке которого указано
&gt; %if_with check
&gt; BuildRequires: hahaha &gt; 100500
&gt; %endif

%if_with check по сути ничем не отличается от
%if_with hahaha

Вы точно так же можете пожаловаться, что
%if_with hahaha
BuildRequires: hahaha &gt; 100500
%endif
не работает без --with=hahaha

Ответ: если вы хотите такого поведения, то перед первым
должно быть
%def_with hahaha
или
%def_without hahaha

В противном случае
%if_with hahaha
отвечает на вопрос, был ли указан --with=hahaha.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194385</commentid>
    <comment_count>3</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2020-11-21 15:17:15 +0300</bug_when>
    <thetext>(Ответ для Dmitry V. Levin на комментарий #2)
...
&gt; Ответ: если вы хотите такого поведения, то перед первым
&gt; должно быть
&gt; %def_with hahaha
&gt; или
&gt; %def_without hahaha
&gt; 
&gt; В противном случае
&gt; %if_with hahaha
&gt; отвечает на вопрос, был ли указан --with=hahaha.

К поведению if_with у меня нет претензий. Я о том, что у нас можно выключить секцию
%check добавлением --without check

То есть подразумевается, что по умолчанию у нас есть --with check.


Очевидно, я о том, что
зависимости, необходимые для выполнения секции check, логично хочется указывать в обрамлении
%if_with check
BuildRequires:
%endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194386</commentid>
    <comment_count>4</comment_count>
    <who name="Vitaly Lipatov">lav</who>
    <bug_when>2020-11-21 16:06:36 +0300</bug_when>
    <thetext>Для каких-то целей же делался код, где-то управляющий секцией check, с псевдовизуализацией принятого решения (логика которой построена на предположении, что где-то в другом месте check выключается по такой же логике, как сообщается через echo).

commit 23e6847c11a99d8d8454194f926e1aa2288ed1a3
Author: Dmitry V. Levin &lt;ldv@altlinux.org&gt;
Date:   Tue Sep 8 21:02:16 2009 +0000

    platform.in: Override %__spec_check_pre

diff --git a/platform.in b/platform.in
index 4f06aef..96a139d 100644
--- a/platform.in
+++ b/platform.in
@@ -267,6 +267,16 @@
 @alt@%{__spec_install_custom_pre}\
 @alt@%nil
 @alt@
+@alt@%__spec_check_pre\
+@alt@%{?!_enable_check:%{?_disable_check:echo &apos;Check is turned off by --disable check&apos; &gt;&amp;2; exit 0}}\
+@alt@%{?!_with_check:%{?_without_check:echo &apos;Check is turned off by --without check&apos; &gt;&amp;2; exit 0}}\
+@alt@%{?!_enable_test:%{?_disable_test:echo &apos;Check is turned off by --disable test&apos; &gt;&amp;2; exit 0}}\
+@alt@%{?!_with_test:%{?_without_test:echo &apos;Check is turned off by --without test&apos; &gt;&amp;2; exit 0}}\
+@alt@%{?__buildreqs:echo &apos;Check is turned off in buildreq mode&apos; &gt;&amp;2; exit 0}\
+@alt@%{___build_pre}\
+@alt@%{__spec_check_custom_pre}\
+@alt@%nil
+@alt@
 @alt@%__spec_clean_post\


Я хотел бы подчеркнуть очевидную вещь:
секцию check при сборке выключают для того, чтобы
1. она не выполнялась
2. не требовались сборочные зависимости, необходимые для её выполнения.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194387</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2020-11-21 16:35:18 +0300</bug_when>
    <thetext>(In reply to Vitaly Lipatov from comment #4)
&gt; Для каких-то целей же делался код, где-то управляющий секцией check, с
&gt; псевдовизуализацией принятого решения (логика которой построена на
&gt; предположении, что где-то в другом месте check выключается по такой же
&gt; логике, как сообщается через echo).

Этот код делался на все случаи жизни, поскольку известно, что люди не могут запомнить, какой из ручек надо пользоваться, добавлены все четрые.

&gt; commit 23e6847c11a99d8d8454194f926e1aa2288ed1a3
&gt; Author: Dmitry V. Levin &lt;ldv@altlinux.org&gt;
&gt; Date:   Tue Sep 8 21:02:16 2009 +0000
&gt; 
&gt;     platform.in: Override %__spec_check_pre
&gt; 
&gt; diff --git a/platform.in b/platform.in
&gt; index 4f06aef..96a139d 100644
&gt; --- a/platform.in
&gt; +++ b/platform.in
&gt; @@ -267,6 +267,16 @@
&gt;  @alt@%{__spec_install_custom_pre}\
&gt;  @alt@%nil
&gt;  @alt@
&gt; +@alt@%__spec_check_pre\
&gt; +@alt@%{?!_enable_check:%{?_disable_check:echo &apos;Check is turned off by
&gt; --disable check&apos; &gt;&amp;2; exit 0}}\
&gt; +@alt@%{?!_with_check:%{?_without_check:echo &apos;Check is turned off by
&gt; --without check&apos; &gt;&amp;2; exit 0}}\
&gt; +@alt@%{?!_enable_test:%{?_disable_test:echo &apos;Check is turned off by
&gt; --disable test&apos; &gt;&amp;2; exit 0}}\
&gt; +@alt@%{?!_with_test:%{?_without_test:echo &apos;Check is turned off by --without
&gt; test&apos; &gt;&amp;2; exit 0}}\
&gt; +@alt@%{?__buildreqs:echo &apos;Check is turned off in buildreq mode&apos; &gt;&amp;2; exit
&gt; 0}\
&gt; +@alt@%{___build_pre}\
&gt; +@alt@%{__spec_check_custom_pre}\
&gt; +@alt@%nil
&gt; +@alt@
&gt;  @alt@%__spec_clean_post\
&gt; 
&gt; 
&gt; Я хотел бы подчеркнуть очевидную вещь:
&gt; секцию check при сборке выключают для того, чтобы
&gt; 1. она не выполнялась
&gt; 2. не требовались сборочные зависимости, необходимые для её выполнения.

Вы можете написать такую же развесистую клюкву, которую я сделал для %check, и для условных BuildRequires.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194388</commentid>
    <comment_count>6</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2020-11-21 16:45:33 +0300</bug_when>
    <thetext>Условная конструкция BuildRequires, эквивалентная условной конструкции в %check,
может выглядеть, например, так:

%{!?__buildreqs:%{!?_disable_check:%{!?_without_check:%{!?_disable_test:%{!?_without_test:BuildRequires: needed-for-tests}}}}}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194389</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2020-11-21 16:52:54 +0300</bug_when>
    <thetext>В качестве демонстрации:

%define BR4T() %{!?__buildreqs:%{!?_disable_check:%{!?_without_check:%{!?_disable_test:%{!?_without_test:BuildRequires: %*}}}}}

%BR4T list of packages needed for tests

На самом деле вы хотите
BuildRequires(check): ist of packages needed for tests
но это нигде не реализовано.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>194396</commentid>
    <comment_count>8</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2020-11-21 22:11:48 +0300</bug_when>
    <thetext>&gt; На самом деле вы хотите
&gt; BuildRequires(check): ist of packages needed for tests
&gt; но это нигде не реализовано.

Да это же гениально!</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>