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

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

    <bug>
          <bug_id>46988</bug_id>
          
          <creation_ts>2023-07-20 12:27:57 +0300</creation_ts>
          <short_desc>--runstatedir и %_runstatedir</short_desc>
          <delta_ts>2023-07-31 04:34:06 +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>all</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>enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>42349</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Anton Zhukharev">ancieg</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>arseny</cc>
    
    <cc>glebfm</cc>
    
    <cc>imz</cc>
    
    <cc>iv</cc>
    
    <cc>lav</cc>
    
    <cc>ldv</cc>
    
    <cc>placeholder</cc>
    
    <cc>vt</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>230060</commentid>
    <comment_count>0</comment_count>
    <who name="Anton Zhukharev">ancieg</who>
    <bug_when>2023-07-20 12:27:57 +0300</bug_when>
    <thetext>Почему бы ради добуквенного совпадения не добавить макрос:

%_runstatedir %_runtimedir

либо 

%_runstatedir %_var/run

?

Плюс было бы неплохо его также передавать в %configure.

Такая идея пришла в голову после нахождения runstatedir здесь: https://www.gnu.org/prep/standards/html_node/Directory-Variables.html и ненахождения %_runstatedir у нас.

Было бы удобно, так как заменить %_localstatedir на /var не получилось: #34083</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230064</commentid>
    <comment_count>1</comment_count>
    <who name="Anton Zhukharev">ancieg</who>
    <bug_when>2023-07-20 13:40:41 +0300</bug_when>
    <thetext>(In reply to Anton Zhukharev from comment #0)
&gt; Плюс было бы неплохо его также передавать в %configure.
Вот это предложение блокировано багом #42349.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230094</commentid>
    <comment_count>2</comment_count>
    <who name="Gleb F-Malinovskiy">glebfm</who>
    <bug_when>2023-07-21 00:01:24 +0300</bug_when>
    <thetext>Речь же по обоим предложениям не про rpm, а про rpm-build, верно?

Для полноты картины, такая попытка уже была:
https://lore.altlinux.org/devel/20210825082756.GA16086@altlinux.org/T/#u</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230099</commentid>
    <comment_count>3</comment_count>
    <who name="Anton Zhukharev">ancieg</who>
    <bug_when>2023-07-21 08:55:27 +0300</bug_when>
    <thetext>(In reply to Gleb F-Malinovskiy from comment #2)
&gt; Речь же по обоим предложениям не про rpm, а про rpm-build, верно?

Не помню почему повесил на rpm (ошибка?)...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230108</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2023-07-21 11:11:02 +0300</bug_when>
    <thetext>(In reply to Anton Zhukharev from comment #0)
&gt; Плюс было бы неплохо его также передавать в %configure.

Очень плохо передавать неизвестные параметры в configure.
Мы попробовали 2 года назад, в результате сломалась сборка около 900 пакетов, откатили на следующий день, и больше не будем пробовать такое.

Поскольку макрос %_runtimedir уже есть, непонятно, зачем нужен %_runstatedir, если его всё равно нельзя системно передавать в %configure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230112</commentid>
    <comment_count>5</comment_count>
    <who name="Anton Zhukharev">ancieg</who>
    <bug_when>2023-07-21 11:32:04 +0300</bug_when>
    <thetext>(In reply to Dmitry V. Levin from comment #4)
&gt; (In reply to Anton Zhukharev from comment #0)
&gt; &gt; Плюс было бы неплохо его также передавать в %configure.
&gt; 
&gt; Очень плохо передавать неизвестные параметры в configure.
&gt; Мы попробовали 2 года назад, в результате сломалась сборка около 900
&gt; пакетов, откатили на следующий день, и больше не будем пробовать такое.
Чтобы configure не считал этот параметр неизвестным и не падал при запуске, необходимо обновить autoconf хотя бы до этого коммита (либо черрипикнуть его):
http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commit;h=a197431414088a417b407b9b20583b2e8f7363bd

&gt; Поскольку макрос %_runtimedir уже есть, непонятно, зачем нужен
&gt; %_runstatedir, если его всё равно нельзя системно передавать в %configure.
Скорее косметическое предложение - &quot;ради добуквенного совпадения&quot;.

Плюс недавно встретил проект, который относительно активно развивается и использует localstatedir как префикс для /run, что у нас вызывает проблемы, поскольку у нас %_localstatedir/run != /var/run.
При этом перезапись в configure --localstatedir=%_var тоже вызывает вопросы, поскольку эта переменная затем также попадает в конфигурационный файл проекта.
Проект поддерживает модульность, поэтому такой вариант перезаписи меня не устраивает из-за потенциальных проблем связанных с тем, что подмодули будут тоже класть свои файлы не туда куда нужно.
В связи с этим написал в апстрим просьбу рассмотреть использование runstatedir, а не полагаться на то, что везде runstatedir == localstatedir/run. Затем чуток пропатчил Makefile.in, добавил опцию --runstatedir=%_runtimedir, запустил сборку и увидел, как наш autoconf понятия не имеет что это за runstatedir такой.

После этого решил предложить добавить нам такой макрос %_runstatedir (для добуквенного совпадения с тем, что используют в стандартах GNU), обновить autoconf и добавлять этот макрос в %configure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230117</commentid>
    <comment_count>6</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2023-07-21 11:44:44 +0300</bug_when>
    <thetext>(In reply to Anton Zhukharev from comment #5)
&gt; (In reply to Dmitry V. Levin from comment #4)
&gt; &gt; (In reply to Anton Zhukharev from comment #0)
&gt; &gt; &gt; Плюс было бы неплохо его также передавать в %configure.
&gt; &gt; 
&gt; &gt; Очень плохо передавать неизвестные параметры в configure.
&gt; &gt; Мы попробовали 2 года назад, в результате сломалась сборка около 900
&gt; &gt; пакетов, откатили на следующий день, и больше не будем пробовать такое.
&gt; Чтобы configure не считал этот параметр неизвестным и не падал при запуске,
&gt; необходимо обновить autoconf хотя бы до этого коммита (либо черрипикнуть
&gt; его):
&gt; http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commit;
&gt; h=a197431414088a417b407b9b20583b2e8f7363bd

Не во всех использующих %сonfigure пакетах ./confiugre получен autoconf&apos;ом. Даже в тех, где он получен autoconf&apos;ом, не все делают %autoreconf, и часто у них на это есть объективные причины.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230121</commentid>
    <comment_count>7</comment_count>
    <who name="Anton Zhukharev">ancieg</who>
    <bug_when>2023-07-21 12:07:43 +0300</bug_when>
    <thetext>(In reply to Ivan A. Melnikov from comment #6)
&gt; (In reply to Anton Zhukharev from comment #5)
&gt; &gt; (In reply to Dmitry V. Levin from comment #4)
&gt; &gt; &gt; (In reply to Anton Zhukharev from comment #0)
&gt; &gt; &gt; &gt; Плюс было бы неплохо его также передавать в %configure.
&gt; &gt; &gt; 
&gt; &gt; &gt; Очень плохо передавать неизвестные параметры в configure.
&gt; &gt; &gt; Мы попробовали 2 года назад, в результате сломалась сборка около 900
&gt; &gt; &gt; пакетов, откатили на следующий день, и больше не будем пробовать такое.
&gt; &gt; Чтобы configure не считал этот параметр неизвестным и не падал при запуске,
&gt; &gt; необходимо обновить autoconf хотя бы до этого коммита (либо черрипикнуть
&gt; &gt; его):
&gt; &gt; http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commit;
&gt; &gt; h=a197431414088a417b407b9b20583b2e8f7363bd
&gt; 
&gt; Не во всех использующих %сonfigure пакетах ./confiugre получен autoconf&apos;ом.
&gt; Даже в тех, где он получен autoconf&apos;ом, не все делают %autoreconf, и часто у
&gt; них на это есть объективные причины.

Отличный аргумент, сам встречался с таким несколько раз.
В таком случае добавление опции к %configure - действительно очень сложное решение. 

В таком случае лучше обойтись только обновлением autoconf и тем кому надо, смогут использовать эту опцию явно.

Поэтому ради лишь добуквенного совпадения прошу добавить синоним вида:

%_runstatedir %_runtimedir

(кстати, почему у нас именно runtimedir, а не runstatedir?)

Также интересно было бы узнать, сколько пакетов &quot;не смогут переварить&quot; runstatedir на данный момент.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230227</commentid>
    <comment_count>8</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2023-07-24 00:48:53 +0300</bug_when>
    <thetext>rpm-build-4.0.4.190-alt1 -&gt; sisyphus:

 Sun Jul 23 2023 Gleb F-Malinovskiy &lt;glebfm@altlinux&gt; 4.0.4.190-alt1
 - Added the new %_runstatedir macro as an alias to %_runtimedir (ALT#46988).
 - Modified the behavior of the %configure macro (ALT#46988):
   + to pass the --runstatedir option when it is supported by the configure
   script;
   + to disable detection and passing of the --runstatedir if the
   %_configure_use_runstatedir macro is undefined.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>