[make-initrd] broken patches? (Re: [PATCH v4 0/4] split pipeline into 4 features)

Leonid Krivoshein klark.devel at gmail.com
Wed Oct 13 22:04:52 MSK 2021


13.10.2021 21:50, Arseny Maslennikov пишет:
> On Wed, Oct 13, 2021 at 08:20:53PM +0300, Leonid Krivoshein wrote:
>> Привет!
>>
>>
>> Пробный шар -- не чтобы апстримить, а чтобы оценить самую сложную часть.
>> Если всё хорошо, за ней будут ещё коммиты, которые разделяются довольно
>> просто. Но первые четыре коммита -- это разделение pipeline на четыре части,
>> нет смысл такое апстримить как форк ради форка, в таком виде не добавляется
>> дополнительная функциональность.
>>
> Патчи почему-то получаются битые; не знаю, как они у Алексея
> прикладываются.
>
>    % git am < split-pipeline-into-4-features.mbox
>    warning: Patch sent with format=flowed; space at the end of lines might be lost.
>    Applying: Separate new feature of bootchain-core from pipeline
>    error: corrupt patch at line 181
>    Patch failed at 0001 Separate new feature of bootchain-core from pipeline
>    hint: Use 'git am --show-current-patch=diff' to see the failed patch
>    When you have resolved this problem, run "git am --continue".
>    If you prefer to skip this patch, run "git am --skip" instead.
>    To restore the original branch and stop patching, run "git am --abort".
>    [128] %
>
> Например:
>
>    index 89d9de5..1e95e7d 100755
>    --- a/features/pipeline/data/etc/rc.d/init.d/pipeline
>    +++ b/features/bootchain-core/data/etc/rc.d/init.d/bootchain
>    @@ -1,6 +1,6 @@
>      #!/bin/bash
>      ### BEGIN INIT INFO
>    -# Provides:            pipeline
>    +# Provides:            bootchain
>      # Required-Start:      uevent udev
>      # Should-Start:
>      # Required-Stop:
>
> Здесь написано, что строки контекста в файле `f/p/d/etc/rc.d/init.d/p`
> начинаются с пробела и потом #, а подменяемая строка, где Provides,
> начинается с самого #. В самом том инит-скрипте вся преамбула начинается
> с первого символа #.
>
>    @@ -13,14 +13,14 @@
>      . /.initrd/initenv
>      . /etc/init.d/template
>      -NAME=pipelined
>    +NAME=bootchained
>      PIDFILE="/var/run/$NAME.pid"
>      ARGS="--lockfile $LOCKFILE --pidfile $PIDFILE --name $NAME
>    --displayname $NAME"
>
> Вот тут кто-то съел пробельные символы в начале строки, и
> patch(1)/git-am(1) видят эту строчку как подлежащую удалению строчку с
> содержанием `-displayname $NAME"`. Первый `-` оказывается служебным.
>
>       prepare() {
>      	local dir i n
>      -	dir=/.initrd/pipeline/waitdev
>    +	dir=/.initrd/bootchain/waitdev
>
> Вот тут кто-то сдвинул минус с первой позиции на третью.
> Чуть выше, где NAME=pipelined переименовывается в bootchained, тоже - и
> + не ровно стоят.
>
>      	mkdir -p -- "$dir"
>       	i=0
>    @@ -32,7 +32,7 @@ prepare() {
>       start() {
>      	RETVAL=0
>    -	if [ "${ROOT-}" = pipeline ]; then
>    +	if [ "${ROOT-}" = bootchain ] || [ "${ROOT-}" = pipeline ]; then
>      		prepare
>      		start_daemon --background $ARGS "$NAME"
>      		RETVAL=$?
>
> Здесь идёт "кусок"/"фрагмент" (hunk, устоявшегося русского термина нет),
> в заголовке которого заявлено, что 7 строк превращаются в 7 строк, но он
> содержит всего 6: 2 строки контекста перед -+, одна строка подменяется,
> 3 строки контекста после. Кто-то украл одну строку контекста.
> Если посмотреть в подвергаемый переименованию/запатчиванию файл,
> окажется, что эта строка пуста, и её представление в файле с патчем —
> это единственный пробел-маркер строки контекста и всё, перенос строки.
>
> Таких повреждений патча там и в других коммитах больше.
> Человек может напрячься, потратить время, провести расследование и
> попробовать догадаться, что имелось в виду; программа patch этого делать
> не будет (а git am — и подавно). Возможно, Thunderbird ломает патчи при
> отправке.

Да, я отправлял через Thunderbird готовые письма, сформированные через 
git format-patch. Не знаю, что тут сказать. Алексей, патчи действительно 
побились? Прикладывать надо к апстримному make-initrd, если что: 
git://github.com/osboot/make-initrd


> Почта для переписки, почта для офиса/рекламы (аутлук-подобная) и почта
> для патчей — это три разные почты, которые, как чудесным образом
> получилось, используют некоторые общие сетевые протоколы для доступа в
> ящик и для пересылки. На мой скромный взгляд, не стоит пытаться
> инструменты для одной из этих почт использовать для работы с другими
> двумя.
> В очередной раз порекомендую пользоваться git-send-email, а если его

До этого пока не дожил, надо перенастроить машину сначала, но имею ввиду.


> тяжело заставить посылать письма с GMail-ящика — можно попросить у
> ldv@/glebfm@ доступ к серверу @altlinux.org по SMTP и посылать с адреса,
> который в том же changelog пакетов используется.
> Письма в гуглоящике тоже появятся, если их туда пришлёт рассылка или
> если они будут проставлены в Cc, будь то явно или автоматически.
>
> P.S. Очень приветствую это направление и благодарен за развитие
> pipeline/bootchain! Очень пригодится. Надо догонять и обгонять дебиан
> ;).
>

А я благодарен за полезные ссылки на предыдущей итерации. Благодаря им 
набрёл на хорошую литературу по гиту. Хоть ребейзить немного научился, 
уже хлеб! :-)



>>
>> Leonid Krivoshein (4):
>>    Separate new feature of bootchain-core from pipeline
>>    kickstart: fix feature to work with bootchain-core
>>    bootchain-core: move bootchain-sh-function to /bin
>>    bootchain: separate getimage and waitdev features
>>
>>   features/bootchain-core/README.md             | 81 +++++++++++++++++++
>>   features/bootchain-core/config.mk             |  5 ++
>>   .../data/bin/bootchain-sh-functions}          | 12 +--
>>   .../data/etc/initrd/cmdline.d/bootchain-core  |  4 +
>>   .../data/etc/rc.d/init.d/bootchain}           | 22 +----
>>   .../data/lib/bootchain}/mountfs               |  2 +-
>>   .../data/lib/bootchain}/overlayfs             |  2 +-
>>   .../data/lib/bootchain}/rootfs                |  2 +-
>>   .../data/lib/initrd/cmdline.d/bootchain       |  6 ++
>>   .../data/lib/initrd/cmdline.d/pipeline        |  2 +-
>>   .../data/sbin/bootchained}                    | 22 ++---
>>   features/bootchain-core/rules.mk              |  3 +
>>   features/bootchain-getimage/README.md         | 24 ++++++
>>   features/bootchain-getimage/config.mk         |  5 ++
>>   .../etc/initrd/cmdline.d/bootchain-getimage   |  1 +
>>   .../data/lib/bootchain}/getimage              |  2 +-
>>   features/bootchain-getimage/rules.mk          |  2 +
>>   features/bootchain-waitdev/README.md          | 22 +++++
>>   features/bootchain-waitdev/config.mk          |  6 ++
>>   .../etc/initrd/cmdline.d/bootchain-waitdev    |  1 +
>>   .../udev/rules.d/50-bootchain-waitdev.rules}  |  2 +-
>>   .../data/lib/bootchain}/waitdev               |  4 +-
>>   .../data/lib/initrd/pre/bootchain/300-waitdev | 12 +++
>>   .../lib/uevent/filters/bootchain-waitdev}     |  4 +-
>>   features/bootchain-waitdev/rules.mk           |  2 +
>>   .../lib/{pipeline => bootchain}/kickstart     |  2 +-
>>   features/pipeline/config.mk                   |  9 +--
>>   .../data/etc/initrd/cmdline.d/pipeline        |  5 --
>>   features/pipeline/rules.mk                    |  6 --
>>   29 files changed, 207 insertions(+), 65 deletions(-)
>>   create mode 100644 features/bootchain-core/README.md
>>   create mode 100644 features/bootchain-core/config.mk
>>   rename features/{pipeline/data/sbin/pipeline-sh-functions =>
>> bootchain-core/data/bin/bootchain-sh-functions} (70%)
>>   create mode 100644
>> features/bootchain-core/data/etc/initrd/cmdline.d/bootchain-core
>>   rename features/{pipeline/data/etc/rc.d/init.d/pipeline =>
>> bootchain-core/data/etc/rc.d/init.d/bootchain} (63%)
>>   rename features/{pipeline/data/lib/pipeline =>
>> bootchain-core/data/lib/bootchain}/mountfs (91%)
>>   rename features/{pipeline/data/lib/pipeline =>
>> bootchain-core/data/lib/bootchain}/overlayfs (95%)
>>   rename features/{pipeline/data/lib/pipeline =>
>> bootchain-core/data/lib/bootchain}/rootfs (86%)
>>   create mode 100755
>> features/bootchain-core/data/lib/initrd/cmdline.d/bootchain
>>   rename features/{pipeline =>
>> bootchain-core}/data/lib/initrd/cmdline.d/pipeline (64%)
>>   rename features/{pipeline/data/sbin/pipelined =>
>> bootchain-core/data/sbin/bootchained} (78%)
>>   create mode 100644 features/bootchain-core/rules.mk
>>   create mode 100644 features/bootchain-getimage/README.md
>>   create mode 100644 features/bootchain-getimage/config.mk
>>   create mode 100644
>> features/bootchain-getimage/data/etc/initrd/cmdline.d/bootchain-getimage
>>   rename features/{pipeline/data/lib/pipeline =>
>> bootchain-getimage/data/lib/bootchain}/getimage (93%)
>>   create mode 100644 features/bootchain-getimage/rules.mk
>>   create mode 100644 features/bootchain-waitdev/README.md
>>   create mode 100644 features/bootchain-waitdev/config.mk
>>   create mode 100644
>> features/bootchain-waitdev/data/etc/initrd/cmdline.d/bootchain-waitdev
>>   rename features/{pipeline/data/etc/udev/rules.d/50-pipeline-waitdev.rules
>> => bootchain-waitdev/data/etc/udev/rules.d/50-bootchain-waitdev.rules} (77%)
>>   rename features/{pipeline/data/lib/pipeline =>
>> bootchain-waitdev/data/lib/bootchain}/waitdev (83%)
>>   create mode 100755
>> features/bootchain-waitdev/data/lib/initrd/pre/bootchain/300-waitdev
>>   rename features/{pipeline/data/lib/uevent/filters/pipeline-waitdev =>
>> bootchain-waitdev/data/lib/uevent/filters/bootchain-waitdev} (77%)
>>   create mode 100644 features/bootchain-waitdev/rules.mk
>>   rename features/kickstart/data/lib/{pipeline => bootchain}/kickstart (93%)
>>   delete mode 100644 features/pipeline/data/etc/initrd/cmdline.d/pipeline
>>
>> -- 
>> 2.24.1
>>
>>
>> _______________________________________________
>> Make-initrd mailing list
>> Make-initrd at lists.altlinux.org
>> https://lists.altlinux.org/mailman/listinfo/make-initrd
>>
>> _______________________________________________
>> Make-initrd mailing list
>> Make-initrd at lists.altlinux.org
>> https://lists.altlinux.org/mailman/listinfo/make-initrd

-- 
Best regards,
Leonid Krivoshein.



More information about the Make-initrd mailing list