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

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

    <bug>
          <bug_id>28189</bug_id>
          
          <creation_ts>2012-12-05 22:09:07 +0400</creation_ts>
          <short_desc>broken pseudouser pairs selection in hasher.</short_desc>
          <delta_ts>2012-12-06 05:02:18 +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>hasher</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="viy">viy</reporter>
          <assigned_to name="Dmitry V. Levin">ldv</assigned_to>
          <cc>at</cc>
    
    <cc>glebfm</cc>
    
    <cc>ldv</cc>
    
    <cc>manowar</cc>
    
    <cc>placeholder</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>135810</commentid>
    <comment_count>0</comment_count>
    <who name="viy">viy</who>
    <bug_when>2012-12-05 22:09:07 +0400</bug_when>
    <thetext>воспроизводится на hasher-1.3.26-alt1 (Сизиф) и hasher-1.3.23-alt1 (t6):

2 два набора псевдопользователей
$ cat /etc/hasher-priv/user.d/igor
user1=igor_a
user2=igor_b
[...]
$ cat /etc/hasher-priv/user.d/igor:1
user1=igor_a1
user2=igor_b1
В системе все ок:
$ grep igor_ /etc/passwd
igor_a:x:502:505:1st hasher satellite for igor:/dev/null:/dev/null
igor_b:x:503:506:2nd hasher satellite for igor:/dev/null:/dev/null
igor_a1:x:534:534:1st hasher satellite for igor:/dev/null:/dev/null
igor_b1:x:535:535:2nd hasher satellite for igor:/dev/null:/dev/null

Но hasher использует только одного псевдопользователя,igor_b1 :(

rm -rf /tmp/hasher
md /tmp/hasher; ln -s ~/hasher/repo /tmp/hasher
hsh  --initroot-only /tmp/hasher
$ hsh-run grep builder /etc/passwd
builder:x:535:535::/usr/src:/bin/bash

rm -rf /tmp/hasher
md /tmp/hasher; ln -s ~/hasher/repo /tmp/hasher
hsh  --initroot-only --number 1 /tmp/hasher
$ hsh-run grep builder /etc/passwd
builder:x:535:535::/usr/src:/bin/bash

Везде builder:x:535:, а должен быть в первом случае 506.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135813</commentid>
    <comment_count>1</comment_count>
    <who name="viy">viy</who>
    <bug_when>2012-12-06 00:54:03 +0400</bug_when>
    <thetext>P.S. сборка пакетов работает.

Но, если на 2-х разные папки запустить 2 набора пакетов,
то сборка будет медленнее из-за блокировок - в какие-то моменты одна из
очередей блокирует другую.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135819</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2012-12-06 03:17:50 +0400</bug_when>
    <thetext>В hasher реализована следующий алгоритм:
- если chroot существует, то используется та пара псевдопользователей, которой этот чрут принадлежит;
- если chroot не существует, то
  - если пара псевдопользователей указана, то используется эта пара;
  - иначе случайным образом выбирается какая-нибудь пара псевдопользователей, которая не используется в данный момент.

Если вам этот алгоритм не нравится, можете придумать что-нибудь получше. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135820</commentid>
    <comment_count>3</comment_count>
    <who name="viy">viy</who>
    <bug_when>2012-12-06 04:01:06 +0400</bug_when>
    <thetext>гм. для  /etc/hasher-priv/user.d/igor:1 я понимаю, как указать. 
это --number 1
а как указать псевдопользователей из /etc/hasher-priv/user.d/igor ?
я раньше думал, что если number не указан (NULL)
то используется  /etc/hasher-priv/user.d/igor&lt;NULL&gt;
т.е. /etc/hasher-priv/user.d/igor.

Это не праздные рассуждения, так как у меня на это был завязан код 
в gear-cronbuild-apply-hooks-in-hsh-chroot,
который в случае нескольких псевдопользователей не работает :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135821</commentid>
    <comment_count>4</comment_count>
    <who name="viy">viy</who>
    <bug_when>2012-12-06 04:19:43 +0400</bug_when>
    <thetext>В общем, особой проблемы нет, обходной путь есть, 
хочется только понять, есть ли способ явно указать пользователя,
созданного без subconfig  identifier, или нет.
как описано в вопросе внизу.

&gt; гм. для  /etc/hasher-priv/user.d/igor:1 я понимаю, как указать. 
&gt; это --number 1
&gt; а как указать псевдопользователей из /etc/hasher-priv/user.d/igor ?
&gt; я раньше думал, что если number не указан (NULL)
&gt; то используется  /etc/hasher-priv/user.d/igor&lt;NULL&gt;
&gt; т.е. /etc/hasher-priv/user.d/igor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>135822</commentid>
    <comment_count>5</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2012-12-06 05:02:18 +0400</bug_when>
    <thetext>(In reply to comment #3)
&gt; гм. для  /etc/hasher-priv/user.d/igor:1 я понимаю, как указать. 
&gt; это --number 1
&gt; а как указать псевдопользователей из /etc/hasher-priv/user.d/igor ?

--number=0

&gt; я раньше думал, что если number не указан (NULL)
&gt; то используется  /etc/hasher-priv/user.d/igor&lt;NULL&gt;
&gt; т.е. /etc/hasher-priv/user.d/igor.

Так было до октября 2007 года, в hasher &gt;= 1.3.0-alt1 отсутствие --number означает случайный выбор свободной пары, см. %changelog версий 1.3.0 и 1.3.1.

&gt; Это не праздные рассуждения, так как у меня на это был завязан код 
&gt; в gear-cronbuild-apply-hooks-in-hsh-chroot,
&gt; который в случае нескольких псевдопользователей не работает :(

Наиболее надежный вариант - привязка пары псевдопользователей к чруту в конфиге ~/.hasher/config</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>