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

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

    <bug>
          <bug_id>43477</bug_id>
          
          <creation_ts>2022-08-09 11:45:53 +0300</creation_ts>
          <short_desc>Некорректный ответ package/build_dependency_set на пакет, не имеющий сборочных зависимостей</short_desc>
          <delta_ts>2023-03-29 13:50:58 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Infrastructure</classification>
          <product>Infrastructure</product>
          <component>rdb.altlinux.org</component>
          <version>unspecified</version>
          <rep_platform>x86_64</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>P5</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stanislav Levin">slev</reporter>
          <assigned_to name="Danil Shein">dshein</assigned_to>
          <cc>ancieg</cc>
          
          <qa_contact name="Andrey Cherepanov">cas</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>213551</commentid>
    <comment_count>0</comment_count>
    <who name="Stanislav Levin">slev</who>
    <bug_when>2022-08-09 11:45:53 +0300</bug_when>
    <thetext>Согласно документации ответ-SUCCESS на запрос package/build_dependency_set должен содержать следующие поля:

{
  &quot;request_args&quot;: {},
  &quot;length&quot;: 0,
  &quot;packages&quot;: [
    {
      &quot;package&quot;: &quot;string&quot;,
      &quot;length&quot;: 0,
      &quot;depends&quot;: [
        {
          &quot;name&quot;: &quot;string&quot;,
          &quot;version&quot;: &quot;string&quot;,
          &quot;release&quot;: &quot;string&quot;,
          &quot;epoch&quot;: 0,
          &quot;archs&quot;: [
            &quot;string&quot;
          ]
        }
      ]
    }
  ]
}

где верхний length - это number of packages found.

Но если в запросе указан пакет, не имеющий сборочных зависимостей, то фактический ответ:
{
  &quot;request_args&quot;: {
    &quot;branch&quot;: &quot;sisyphus&quot;,
    &quot;packages&quot;: [
      &quot;foo&quot;
    ],
    &quot;archs&quot;: [
      &quot;x86_64&quot;,
      &quot;noarch&quot;
    ]
  },
  &quot;length&quot;: 0,
  &quot;packages&quot;: []
}

то есть как будто его и нет.
В итоге приходится делать дополнительную проверку - есть ли мой пакет в списке или нет. То же самое происходит, если запрашивать список пакетов.

Корректный (на мой взгляд) вариант будет в этом случае:

{                                                                               
  &quot;request_args&quot;: {xxx},                                                           
  &quot;length&quot;: 1,                                                                  
  &quot;packages&quot;: [                                                                 
    {                                                                           
      &quot;package&quot;: &quot;foo&quot;,                                                         
      &quot;length&quot;: 0,                                                              
      &quot;depends&quot;: []                                                             
    }                                                                           
  ]                                                                             
}

Пример запроса:
https://rdb.altlinux.org/api/package/build_dependency_set?branch=sisyphus&amp;packages=liblmdb</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223557</commentid>
    <comment_count>1</comment_count>
    <who name="Anton Zhukharev">ancieg</who>
    <bug_when>2023-03-29 12:39:43 +0300</bug_when>
    <thetext>(Ответ для Stanislav Levin на комментарий #0)
&gt; Но если в запросе указан пакет, не имеющий сборочных зависимостей, то
&gt; фактический ответ:
&gt; {
&gt;   &quot;request_args&quot;: {
&gt;     &quot;branch&quot;: &quot;sisyphus&quot;,
&gt;     &quot;packages&quot;: [
&gt;       &quot;foo&quot;
&gt;     ],
&gt;     &quot;archs&quot;: [
&gt;       &quot;x86_64&quot;,
&gt;       &quot;noarch&quot;
&gt;     ]
&gt;   },
&gt;   &quot;length&quot;: 0,
&gt;   &quot;packages&quot;: []
&gt; }
&gt; 
&gt; то есть как будто его и нет.
По-моему, если зависимых пакетов нет, то и возвращать в списке зависимых пакетов ничего не нужно.

(Ответ для Stanislav Levin на комментарий #0)
&gt; Корректный (на мой взгляд) вариант будет в этом случае:
&gt; 
&gt; {                                                                           
&gt;   &quot;request_args&quot;: {xxx},
&gt;   &quot;length&quot;: 1,
&gt;   &quot;packages&quot;: [                                                             
&gt;     {                                                                       
&gt;       &quot;package&quot;: &quot;foo&quot;,                                                     
&gt;       &quot;length&quot;: 0,                                                          
&gt;       &quot;depends&quot;: []                                                         
&gt;     }                                                                       
&gt;   ]                                                                         
&gt; }
На мой взгляд это выглядит как-то неправильно: зависимых пакетов нет, но в списке указан пакет &quot;foo&quot;. К тому же, если зависимых пакетов нет, то и length должна быть равна 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223571</commentid>
    <comment_count>2</comment_count>
    <who name="Danil Shein">dshein</who>
    <bug_when>2023-03-29 13:50:58 +0300</bug_when>
    <thetext>Если никаких зависимостей не найдено, то и содержимое ответа соответствующее: длина: 0, пакетов: нет.

Входные данные (имена пакетов, архитектуры) возвращаются в теле запроса - можно просто сравнить результат с входными данными.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>