[devel] Обновление redis в p8

mikhailnov на altlinux.org mikhailnov на altlinux.org
Вт Ноя 26 04:41:20 MSK 2019


26.11.2019 04:22, mikhailnov на altlinux.org пишет:
> 26.11.2019 01:32, Leonid Krivoshein пишет:
>> Всем привет!
>>
>>
>> Извиняюсь за нюбовский вопрос. Каковы действия при бэкпортировании в p8?
>> Собрал тестовое задание #241616. Достаточно проверить с такими 
>> зависимостями:
>>
>> $ apt-cache whatdepends redis
>> redis-3.0.7-alt1 на 1454758009
>>   python-module-docker-registry-0.6.1-alt1 на 1382307574
>>     Требует: redis
>>
>> Просто, боюсь, с этой штукой на самом деле много чего может отъехать.
>> Но без тестовой пересборки не представляю, как это определить.
>> Просили закрыть CVE в баге #37533, а бранч "стабильный".
>>
>>
> См. https://security-tracker.debian.org/tracker/CVE-2019-10193 и 
> https://security-tracker.debian.org/tracker/CVE-2019-10192
>
> Их исправления бекпортировали в 3.2.13, которая гораздо ближе к 3.0.7 
> в p8, чем 5.0 из сизифа. Наверняка соответствующие коммиты без правок 
> или с минимальным редиффом лягут на 3.0.7 патчами.
>
>
> https://raw.githubusercontent.com/antirez/redis/3.2/00-RELEASENOTES
> ================================================================================ 
>
> Redis 3.2.13     Released Mon Mar 18 17:24:10 CEST 2019
> ================================================================================ 
>
>
> Ciritcal fixes backported from Redis 5.

Когда нужно бекпортировать что-то, я обычно делаю так:

git clone апстримные_исходники
git tag | grep версия
git checkout tags/<найденный_тег_с_целевой_версией_для_бекпорта>
git checkout -b patched-<версия>
git cherry-pick <хеш коммита для бекпортирования>

Если лег сразу, то отлично, иначе в git status смотрю, где возникли 
проблемы, правлю их (они помечаются ====== в текстовых файлах), затем:
git commit -a
Открывается редактирование описания коммита. Туда дописываю что-то вроде:
Backport of upstream commit <hash> to systemd-230
и при необходимости описание изменений относительно оригинального 
коммита, например, "dropped tests".

Затем делаю git format-patch -1 -s
-s - чтобы в патч с Author != я была добавлена пометка о моем участии, 
чтобы другим людям было понятнее, откуда такой патч взялся.

В крупных проектах типа systemd иногда приходится бекпортировать 
несколько десятков коммитов для закрытия одной CVE, такие действия 
чреваты тем, что всплывут какие-нибудь косяки: опечатки при 
бекпортировании, нарушение логики работы, если бекпортирование остановил 
на таком состоянии, которое было затем изменено в апстриме, т.к. было 
багованным, и т.д. В таких случаях обычно цепочка коммитов получается 
задом на перед, т.к. после каждого бекпорта проверяется сборка (а в 
Альте и в etersoft-build-utils, кстати, есть готовые интеграции rpm с 
ccache), если коммитов оказалось недостаточно, то бекпортируется следующий.

В случае с redis посмотрите, насколкьо большие правки были, может, там 
проще просто обновить с 3.х до 3.2 и не мучаться, а, может, можно 
несколько маленьких коммитов приложить, и всё.



Подробная информация о списке рассылки Devel