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

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

    <bug>
          <bug_id>51874</bug_id>
          
          <creation_ts>2024-10-29 17:09:01 +0300</creation_ts>
          <short_desc>Ошибка запаковки debuginfo если в исходниках есть квадратные скобки</short_desc>
          <delta_ts>2025-09-12 00:06:27 +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>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugzilla.altlinux.org/show_bug.cgi?id=43049</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P5</priority>
          <bug_severity>major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ivan A. Melnikov">iv</reporter>
          <assigned_to name="placeholder@altlinux.org">placeholder</assigned_to>
          <cc>arseny</cc>
    
    <cc>glebfm</cc>
    
    <cc>imz</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>253600</commentid>
    <comment_count>0</comment_count>
      <attachid>17077</attachid>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2024-10-29 17:09:01 +0300</bug_when>
    <thetext>Created attachment 17077
соберите этот спек чтобы воспроизвести проблему

При сборке одного проекта на go наткнулся на интересную проблему: часть сгенерированных исходников эта штука называет something[generated].go, а наш rpmbuild позже воспринимает квадратные скобки как glob.

Проще всего реализовать воспроизвести эту проблему с помощью приложенного spec-файла, который на моей системе не собирается со следующей ошибкой:

[...]
Creating bracket-test-debuginfo package
Processing files: bracket-test-debuginfo-0.1-alt1
error: File not found by glob: /tmp/.private/iv/RPM/TMP/bracket-test-buildroot/usr/src/debug/test[generated].c


RPM build errors:
    File not found by glob: /tmp/.private/iv/RPM/TMP/bracket-test-buildroot/usr/src/debug/test[generated].c</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253601</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2024-10-29 17:10:00 +0300</bug_when>
    <thetext>&gt; часть сгенерированных исходников эта штука называет something[generated].go

Оказывается эти исходники довольно сложно переименовать, наверное придётся отключить debuginfo пока это не исправленно.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253620</commentid>
    <comment_count>2</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2024-10-30 02:16:05 +0300</bug_when>
    <thetext>Похоже это баг в логике build/files.c:processBinaryFile. Сначала определяется что fileURL это glob, по наличию ? * [ ], если glob, то он обрабатывается как glob (с экранированием символов через \, а если не glob, то обрабатывается как путь (без поддержки экранирования). То есть если добавить экранирование, то путь перестает быть glob и символы экранирования испортят путь.

И это должно относиться не только к debuginfo, а к любым файлам.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253621</commentid>
    <comment_count>3</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2024-10-30 03:10:47 +0300</bug_when>
    <thetext>Я думаю правильным было бы изначально считать тот путь glob&apos;ом. Но, просто отключить это уже нельзя из-за возможных неочевидных последствий.

Апстрим поменял логику в c10e2310e4c41a626b524ae71b3c4f87a29134b2, это огромный 
коммит. [Ссылающийся на коммит 4030062f2bf16d7a4540c78c1e61706f3810fe9b, которого нет (видимо rebase его потер).]

Другой вариант - придумать что-то ALT-specific.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253622</commentid>
    <comment_count>4</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2024-10-30 04:30:08 +0300</bug_when>
    <thetext>&gt; Другой вариант - придумать что-то ALT-specific.

RFC https://git.altlinux.org/tasks/361121/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253661</commentid>
    <comment_count>5</comment_count>
    <who name="Gleb F-Malinovskiy">glebfm</who>
    <bug_when>2024-10-30 15:26:30 +0300</bug_when>
    <thetext>(In reply to Vitaly Chikunov from comment #4)
&gt; RFC https://git.altlinux.org/tasks/361121/

В теории, наверное, было бы ещё удобнее если бы это делалось через %attr или что-то такое, чтобы можно было glob выключить и потом включить обратно.  Но пока что это, вроде, не нужно.

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253666</commentid>
    <comment_count>6</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2024-10-30 15:40:03 +0300</bug_when>
    <thetext>(In reply to Vitaly Chikunov from comment #4)
&gt; &gt; Другой вариант - придумать что-то ALT-specific.

&gt; RFC https://git.altlinux.org/tasks/361121/

Вдогонку: есть ли у нас (стоит ли добавить) тест, покрывающий файлы с пробелами — записи в %files, видимо, такого вида:
  %files --noglob
  &quot;%_datadir/project/2001 a space odyssey&quot;
  &quot;%_datadir/project/2001[a space odyssey]&quot;
?

А то rpm-s-m, исправляя у себя, столкнулись с поломкой таких файлов.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253668</commentid>
    <comment_count>7</comment_count>
    <who name="Arseny Maslennikov">arseny</who>
    <bug_when>2024-10-30 15:43:12 +0300</bug_when>
    <thetext>(In reply to Vitaly Chikunov from comment #4)
&gt; &gt; Другой вариант - придумать что-то ALT-specific.
&gt; 
&gt; RFC https://git.altlinux.org/tasks/361121/
Для генератных пакетов — LGTM, за исключением соображения выше.

(In reply to Gleb F-Malinovskiy from comment #5)
&gt; (In reply to Vitaly Chikunov from comment #4)
&gt; &gt; RFC https://git.altlinux.org/tasks/361121/
&gt; 
&gt; В теории, наверное, было бы ещё удобнее если бы это делалось через %attr или
&gt; что-то такое, чтобы можно было glob выключить и потом включить обратно.  Но
&gt; пока что это, вроде, не нужно.
Когда секцию пишет человек — да. А роботу-генератору, как я imho себе их представляю, так будет менее удобно: у него получился список готовых путей, и ему нужно их в неизменном виде донести до rpm-build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>253685</commentid>
    <comment_count>8</comment_count>
    <who name="Gleb F-Malinovskiy">glebfm</who>
    <bug_when>2024-10-30 17:17:22 +0300</bug_when>
    <thetext>(In reply to Vitaly Chikunov from comment #2)
&gt; Похоже это баг в логике build/files.c:processBinaryFile. Сначала
&gt; определяется что fileURL это glob, по наличию ? * [ ], если glob, то он
&gt; обрабатывается как glob (с экранированием символов через \, а если не glob,
&gt; то обрабатывается как путь (без поддержки экранирования). То есть если
&gt; добавить экранирование, то путь перестает быть glob и символы экранирования
&gt; испортят путь.
Кстати, в этом случае в качестве объезда можно сделать, чтобы это всегда был glob, а сам путь при этом остался однозначным.  Я вспомнил, что мы делаем похожее в сборочнице с git-ом, там вот такое есть:

old_tag_id=&quot;$(git rev-parse --tags=&quot;[${tag_name:0:1}]${tag_name:1}&quot;)&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256711</commentid>
    <comment_count>9</comment_count>
    <who name="Vitaly Chikunov">vt</who>
    <bug_when>2024-12-27 00:19:47 +0300</bug_when>
    <thetext>(In reply to Vitaly Chikunov from comment #4)
&gt; &gt; Другой вариант - придумать что-то ALT-specific.
&gt; 
&gt; RFC https://git.altlinux.org/tasks/361121/

Случайно удалил тестовое задание (скриптом). ﷐[U+1F937]﷑</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>17077</attachid>
            <date>2024-10-29 17:09:01 +0300</date>
            <delta_ts>2024-10-29 17:09:01 +0300</delta_ts>
            <desc>соберите этот спек чтобы воспроизвести проблему</desc>
            <filename>test.spec</filename>
            <type>text/x-rpm-spec</type>
            <size>504</size>
            <attacher name="Ivan A. Melnikov">iv</attacher>
            
              <data encoding="base64">Ck5hbWU6ICAgIGJyYWNrZXQtdGVzdApWZXJzaW9uOiAwLjEKUmVsZWFzZTogYWx0MQoKU3VtbWFy
eTogVGVzdCBmb3Igc291cmNlIHdpdGggYnJhY2tldHMKTGljZW5zZTogTUlUCkdyb3VwOiAgIE90
aGVyCgpQYWNrYWdlcjogSXZhbiBBLiBNZWxuaWtvdiA8aXZAYWx0bGludXgub3JnPgoKJWRlc2Ny
aXB0aW9uCiVzdW1tYXJ5CgolcHJlcAoKY2F0ID4gJ3Rlc3RbZ2VuZXJhdGVkXS5jJyA8PCAnRU9G
JwppbnQgbWFpbigpIHsKICByZXR1cm4gMDsKfQpFT0YKCgolYnVpbGQKCmdjYyAlb3B0ZmxhZ3Mg
J3Rlc3RbZ2VuZXJhdGVkXS5jJyAtbyB0ZXN0LWdlbmVyYXRlZAoKCiVpbnN0YWxsCmluc3RhbGwg
LURtNzU1IHRlc3QtZ2VuZXJhdGVkICVidWlsZHJvb3QlX2JpbmRpci90ZXN0LWdlbmVyYXRlZAoK
JWZpbGVzCiVfYmluZGlyLyoKCiVjaGFuZ2Vsb2cKKiBUdWUgT2N0IDI5IDIwMjQgSXZhbiBBLiBN
ZWxuaWtvdiA8aXZAYWx0bGludXgub3JnPiAwLjEtYWx0MQotIHRlc3Qgc3R1ZmYK
</data>

          </attachment>
      

    </bug>

</bugzilla>