[devel] Новая схема ведения исходников ядра

Andrey Savchenko bircoph на altlinux.org
Сб Дек 4 02:44:58 MSK 2021


On Fri, 3 Dec 2021 23:41:56 +0400 Evgeny Sinelnikov wrote:
> Суть: для того, чтобы вести не только поддержку сборки, но разработку
> ядра, нацеленную на продвижение наших патчей в апстрим, предлагается
> рассмотреть новую схему ведения исходников.
> 
> - все наши патчи складываются "ребейзом" или "черипиком" поверх
> последнего релиза, который заявлен в версии пакета
> kernel-image-FLAVOUR:
>  + https://github.com/altlinux/linux-arm/commits/altlinux-5.15.y

cherry-pick не осилит merge коммиты (максимум, что можно от него
получить, это всю ветку одним коммитом, с потерей истории). Ну
а rebase — на любителя и не всегда годится, например, когда часть
патчей нужно выбросить по тем или иным причинам.

> - схема сборки остаётся прежней за следующими дополнениями:
>  + ветка sisyphus содержит только gear-rules и spec (ну, пока и не
> надо больше - вряд ли потребуется, хотя я бы предложил ещё README по
> сборке);
>  + исходники включают в себя только продуктивные патчи и ветка с ними
> перед сборкой "мёрджится" с git merge -s ours;
>  + для удобной работы над исходниками можно воспользоваться командой
> git worktree, позволяющей получить отдельную ветку в соседнем каталоге
> на одном и том же git-репозитории;

Так себе удобство, честно скажу; я пользуюсь этим когда
приходится, но именно как вынужденной мерой. Хотя бы потому, что
в git крайне не рекомендуется конкурентно коммитить из двух разных
worktree.

>  + перед сборкой необходимо обновить commitid в .gear/tags/list
> https://github.com/altlinux/linux-arm/commits/sisyphus-un-def

Вот эта головная боль тоже нежелательна. Потому что при отладке
где-нибудь на другой железке или в инсталляторе пакет приходится
часто пересобирать. Да, скриптуется, но сборка и так сложна из-за
specsubst и разных kflavour. 

> В целом, этот подход ничего не ломает, но очень много позволяет:
> - чётко отслеживать пачти;
> - всегда знать чем наше ядро отличается от апстримного не на уровне
> одного большого "дифа", доступного только git в консоли, но и на
> уровне полного списка патчей, доступного также через web-интерфейс в
> соответствующей ветке;

А вы точно работали с нашим ядром? Я регулярно переношу все наши
патчи на e2k ядро (кроме патчей для других архитектур). Для этого
используются ветка нужной версии из
git.alt:/people/kernelbot/packages/kernel-image.git

В общем-то, там все наши патчи легко видно по --first-parent;
cherry-pick работает, но не с merge коммитами, которых там хватает
из всяких небольших тематических веток вроде kernelbot/fix-strlcpy.
Вот с ними засада, приходится повторять merge коммиты, git rerere
облегчает работу, но его кеш локален нельзя запушить в то же
дерево, чтоб поделиться с другими или просто перетащить на другую
машину.

> - всегда иметь подготовленный набор патчей для текущего ядра.
> 
> Я бы ещё предложил делать два патча:
> - linux-x.y.0-x.y.z.patch
> - linux- x.y.z-alt.patch
> тогда патч в нашем SRCRPM-пакете ядра будет не столь бесполезен, чем сейчас.

Я бы вообще от них отказался (в общем, у меня так и сделано).
В гите же вся работа, вот из него и нужно собирать. Просто git
тяжёлый и хорошо бы сборочнице shallow clone делать, хотя бы по
запросу. Но это уже хотелка вне ядра.

Best regards,
Andrew Savchenko
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : отсутствует
Тип     : application/pgp-signature
Размер  : 833 байтов
Описание: отсутствует
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20211204/dba55e2b/attachment.bin>


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