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

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

    <bug>
          <bug_id>40904</bug_id>
          
          <creation_ts>2021-09-13 12:49:45 +0300</creation_ts>
          <short_desc>[FR] binutils-source with patched sources</short_desc>
          <delta_ts>2021-09-29 14:58:21 +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>binutils-source</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ivan A. Melnikov">iv</reporter>
          <assigned_to name="Gleb F-Malinovskiy">glebfm</assigned_to>
          <cc>glebfm</cc>
    
    <cc>sin</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>202691</commentid>
    <comment_count>0</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2021-09-13 12:49:45 +0300</bug_when>
    <thetext>Мне, как мейнтейнеру cross-toolchain для mipsel и riscv64 хотелось бы, чтобы эти cross-toolchain&apos;ы был по возможности максимально приближены к нашим дистрибутивным компиляторам на этих архитектурах. В частности, это касается патчей: перенос и повторное применение всех патчей с binutils, gcc и glibc -- это непростая и механическая работа, которой хотелось бы избежать.

В связи с этим я предлагаю запаковать исходники такими, какими они получились в результате работы секции %pre, например так:

http://git.altlinux.org/people/iv/packages/binutils.git?a=commit;h=e66b62761d439e9cf8ed5ef7bd9b6467629858da

Сейчас binutils-source при сборке используется только в cross-toolchain*, поэтому я предлагаю именно изменить этот подпакет; однако если текущая семантика binutils-source важна, я прошу сделать новый подпакет.

P.S. Естественно, я хочу того же от glibc-source и gcc-source. binutils просто первый по алфавиту.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203058</commentid>
    <comment_count>1</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2021-09-22 08:45:30 +0300</bug_when>
    <thetext>Уважаемые мейнтейнеры binutils!

Пожалуйста, напишите, как вы относитесь к этой задаче. Стоит ли мне ожидать, что такое и/или подобное изменение будет сделано в binutils (а также gcc и glibc) или мне нужно идти другим путём? Если стóит, то могу ли я что-то сделать чтобы приблизить этот момент?

Спасибо.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203091</commentid>
    <comment_count>2</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2021-09-22 12:09:38 +0300</bug_when>
    <thetext>(In reply to Ivan A. Melnikov from comment #0)
&gt; В связи с этим я предлагаю запаковать исходники такими, какими они
&gt; получились в результате работы секции %pre, например так:

Мне нравится это предложение.

&gt; http://git.altlinux.org/people/iv/packages/binutils.git?a=commit;
&gt; h=e66b62761d439e9cf8ed5ef7bd9b6467629858da

По технике: у tar есть параметр -C.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203093</commentid>
    <comment_count>3</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2021-09-22 12:47:22 +0300</bug_when>
    <thetext>(In reply to Dmitry V. Levin from comment #2)
&gt; &gt; http://git.altlinux.org/people/iv/packages/binutils.git?a=commit;
&gt; &gt; h=e66b62761d439e9cf8ed5ef7bd9b6467629858da
&gt; 
&gt; По технике: у tar есть параметр -C.

Я хотел им воспользоваться, но он не влияет на путь к архиву (аргумент -f):

$ mkdir test
$ cd test
$ touch a.txt
$ tar -C.. -cf t.tar test
tar: test/t.tar: file is the archive; not dumped
$ ls
a.txt  t.tar
$ tar -tf t.tar
test/
test/a.txt

Можно конечно указать -cf &quot;../%name-%version-%release.tar&quot; или вычислить польный путь, но вариант с со сменой каталога показался мне более простым и понятным.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203096</commentid>
    <comment_count>4</comment_count>
    <who name="Gleb F-Malinovskiy">glebfm</who>
    <bug_when>2021-09-22 13:42:25 +0300</bug_when>
    <thetext>Я был почему-то уверен, что патчи сейчас упакованы в пакет.

Идея была в том, что некоторые патчи не стоит прикладывать на каких-то архитектурах.  gnu.hash в binutils (сейчас мы его включаем через configure, но раньше это был патч, который на mips *не прикладывался*) и stack-protector в gcc не поддерживаются на некоторых архитектурах.  (В glibc таких патчей нет и скорее всего не будет никогда, к тому же все наши патчи и так применены в tarball-е, который лежит в glibc-source.)

Применение таких патчей в архиве значило бы, что на таких архитектурах нужно всё равно приносить эти патчи с собой, чтобы их *откатить*.  Мы точно хотим именно этого?  Не разумнее ли положить патчи в пакет и для большей части архитектур сделать autopatch или его аналог в cross-toolchain?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203098</commentid>
    <comment_count>5</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2021-09-22 14:25:00 +0300</bug_when>
    <thetext>(In reply to Gleb F-Malinovskiy from comment #4)
&gt; В glibc таких патчей нет и скорее всего не будет никогда,
&gt; к тому же все наши патчи и так применены в tarball-е,
&gt; который лежит в glibc-source.

Да, в glibc в этом плане уже всё хорошо. Мне бы хотелось лишь зафиксировать пожелание, чтобы оно так и оставалось в следующих сборках.

&gt; Применение таких патчей в архиве значило бы, что на таких архитектурах нужно
&gt; всё равно приносить эти патчи с собой, чтобы их *откатить*.  Мы точно хотим
&gt; именно этого?

Да. *Если* такие патчи снова появятся.

&gt; Не разумнее ли положить патчи в пакет и для большей части
&gt; архитектур сделать autopatch или его аналог в cross-toolchain?

Я не придумал аналога autopatch, который бы учитывал разный порядок патчей,  разные -p в %patchN и, например, sed&apos;а который был в binutils 2.35. 

А ещё нравится идея того, что &quot;binutils-source -- это те исходники, из которых мы собрали binutils, и делайте с ними что хотите&quot;. Я, как ответсвенный за тулчейн на mipsel и riscv64 (и некроссового тоже), знаю, что я хочу с ними сделать. А вот проверять при каждом обновлении, правильно ли я применил все нужные патчи, как-то слишком tedious и error-prone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203101</commentid>
    <comment_count>6</comment_count>
    <who name="Dmitry V. Levin">ldv</who>
    <bug_when>2021-09-22 15:49:24 +0300</bug_when>
    <thetext>(In reply to Gleb F-Malinovskiy from comment #4)
&gt; Я был почему-то уверен, что патчи сейчас упакованы в пакет.
&gt; 
&gt; Идея была в том, что некоторые патчи не стоит прикладывать на каких-то
&gt; архитектурах.  gnu.hash в binutils (сейчас мы его включаем через configure,
&gt; но раньше это был патч, который на mips *не прикладывался*) и
&gt; stack-protector в gcc не поддерживаются на некоторых архитектурах.  (В glibc
&gt; таких патчей нет и скорее всего не будет никогда, к тому же все наши патчи и
&gt; так применены в tarball-е, который лежит в glibc-source.)

На мой взгляд, пакет binutils выиграл бы от перехода на ту схему сопровождения патчей,
которая сейчас используется в пакете glibc.
На самом деле эта схема в том или ином виде и так уже используется &quot;под капотом&quot;.
В качестве побочного эффекта вопрос с binutils-source решился бы сам собой.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203110</commentid>
    <comment_count>7</comment_count>
    <who name="Gleb F-Malinovskiy">glebfm</who>
    <bug_when>2021-09-22 17:41:24 +0300</bug_when>
    <thetext>(In reply to Ivan A. Melnikov from comment #5)
&gt; (In reply to Gleb F-Malinovskiy from comment #4)
&gt; &gt; В glibc таких патчей нет и скорее всего не будет никогда,
&gt; &gt; к тому же все наши патчи и так применены в tarball-е,
&gt; &gt; который лежит в glibc-source.
&gt; 
&gt; Да, в glibc в этом плане уже всё хорошо. Мне бы хотелось лишь зафиксировать
&gt; пожелание, чтобы оно так и оставалось в следующих сборках.
&gt; 
&gt; &gt; Применение таких патчей в архиве значило бы, что на таких архитектурах нужно
&gt; &gt; всё равно приносить эти патчи с собой, чтобы их *откатить*.  Мы точно хотим
&gt; &gt; именно этого?
&gt; 
&gt; Да. *Если* такие патчи снова появятся.

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

&gt; &gt; Не разумнее ли положить патчи в пакет и для большей части
&gt; &gt; архитектур сделать autopatch или его аналог в cross-toolchain?
&gt; 
&gt; Я не придумал аналога autopatch, который бы учитывал разный порядок патчей, 
&gt; разные -p в %patchN и, например, sed&apos;а который был в binutils 2.35. 
&gt; 
&gt; А ещё нравится идея того, что &quot;binutils-source -- это те исходники, из
&gt; которых мы собрали binutils, и делайте с ними что хотите&quot;. Я, как
&gt; ответсвенный за тулчейн на mipsel и riscv64 (и некроссового тоже), знаю, что
&gt; я хочу с ними сделать. А вот проверять при каждом обновлении, правильно ли я
&gt; применил все нужные патчи, как-то слишком tedious и error-prone.

Да, этот подход естественным образом приводит к тому, что вместе с исходниками и патчами нужно было бы паковать инфломацию о том, как и в каком порядке их прикладывать, а это не то, что мы хотим делать.

(In reply to Dmitry V. Levin from comment #6)
&gt; На мой взгляд, пакет binutils выиграл бы от перехода на ту схему
&gt; сопровождения патчей,
&gt; которая сейчас используется в пакете glibc.
&gt; На самом деле эта схема в том или ином виде и так уже используется &quot;под
&gt; капотом&quot;.
&gt; В качестве побочного эффекта вопрос с binutils-source решился бы сам собой.

Согласен.  Да в общем-то понятно, что и в случае gcc можно применить этот же подход, у gcc даже апстрим уже в git-е наконец. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203171</commentid>
    <comment_count>8</comment_count>
    <who name="Ivan A. Melnikov">iv</who>
    <bug_when>2021-09-23 14:49:45 +0300</bug_when>
    <thetext>(In reply to Gleb F-Malinovskiy from comment #7)
&gt; (In reply to Ivan A. Melnikov from comment #5)
&gt; &gt; (In reply to Gleb F-Malinovskiy from comment #4)
&gt; &gt; &gt; Применение таких патчей в архиве значило бы, что на таких архитектурах нужно
&gt; &gt; &gt; всё равно приносить эти патчи с собой, чтобы их *откатить*.  Мы точно хотим
&gt; &gt; &gt; именно этого?
&gt; &gt; 
&gt; &gt; Да. *Если* такие патчи снова появятся.
&gt; 
&gt; Это неизбежно случится, если мы захотим собрать кросс-тулчейн для
&gt; архитектур, которые у нас не поддерживаются, среди них есть разная степень
&gt; поддержки некоторых функций.

Такие архитекуры не принципиально синхронизировать с тулчейном Сизифа (или соответствующего бранча); использование для них gcc-source/binutils-source/glibc-source не кажется мне оправданным. У меня, например, были бы немного другие пожелания к кросс-тулчейну если бы полученные бинарники не должны бы были работать в Альте.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203173</commentid>
    <comment_count>9</comment_count>
    <who name="Gleb F-Malinovskiy">glebfm</who>
    <bug_when>2021-09-23 15:06:00 +0300</bug_when>
    <thetext>(In reply to Ivan A. Melnikov from comment #8)
&gt; Такие архитекуры не принципиально синхронизировать с тулчейном Сизифа (или
&gt; соответствующего бранча); использование для них
&gt; gcc-source/binutils-source/glibc-source не кажется мне оправданным. У меня,
&gt; например, были бы немного другие пожелания к кросс-тулчейну если бы
&gt; полученные бинарники не должны бы были работать в Альте.

На самом деле, когда делались -source подпакеты задача сборки бинарников, которые должны работать в Альте не стояла на самом деле, идея была в том, чтобы собрать какие-нибудь кросс-тулчейны для как можно большего количества архитектур.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203341</commentid>
    <comment_count>10</comment_count>
    <who name="Repository Robot">repository-robot</who>
    <bug_when>2021-09-29 14:58:21 +0300</bug_when>
    <thetext>binutils-1:2.37-alt2 -&gt; sisyphus:

 Wed Sep 29 2021 Gleb F-Malinovskiy &lt;glebfm@altlinux&gt; 1:2.37-alt2
 - Changed build scheme to git branches instead of patches (ALT#40904).
 - Fixed preserving dates in ar archives processed with strip/objcopy
   with -p/--preserve-dates option.
 - Fixed FTBFS with gcc 11 (by switching some test back to DWARF version 4).</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>