<div dir="auto"><div><br><div data-smartmail="gmail_signature"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">пн, 3 янв. 2022 г., 09:25 Aleksey Novodvorsky &lt;<a href="mailto:aen@basealt.ru">aen@basealt.ru</a>&gt;:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">пн, 3 янв. 2022 г. в 09:18, Evgeny Sinelnikov &lt;<a href="mailto:sin@altlinux.org" target="_blank" rel="noreferrer">sin@altlinux.org</a>&gt;:<br>
&gt;<br>
&gt; пн, 3 янв. 2022 г. в 09:41, Aleksey Novodvorsky &lt;<a href="mailto:aen@basealt.ru" target="_blank" rel="noreferrer">aen@basealt.ru</a>&gt;:<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; пн, 3 янв. 2022 г., 08:08 Evgeny Sinelnikov &lt;<a href="mailto:sin@altlinux.org" target="_blank" rel="noreferrer">sin@altlinux.org</a>&gt;:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; С новым годом!<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; И вас!<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; чт, 23 дек. 2021 г. в 10:08, Andrey Savchenko &lt;<a href="mailto:bircoph@altlinux.org" target="_blank" rel="noreferrer">bircoph@altlinux.org</a>&gt;:<br>
&gt; &gt;&gt; &gt;<br>
&gt; &gt;&gt; &gt; On Thu, 23 Dec 2021 06:28:34 +0300 Mikhail Novosyolov wrote:<br>
&gt; &gt;&gt; &gt; &gt;<br>
&gt; &gt;&gt; &gt; &gt; 06.12.2021 15:12, Anton Farygin пишет:<br>
&gt; &gt;&gt; &gt; &gt; &gt; On 06.12.2021 14:41, Anton V. Boyarshinov wrote:<br>
&gt; &gt;&gt; &gt; &gt; &gt;&gt; В Mon, 6 Dec 2021 15:27:11 +0400<br>
&gt; &gt;&gt; &gt; &gt; &gt;&gt; Alexey Sheplyakov &lt;<a href="mailto:asheplyakov@basealt.ru" target="_blank" rel="noreferrer">asheplyakov@basealt.ru</a>&gt; пишет:<br>
&gt; &gt;&gt; &gt; &gt; &gt;&gt;<br>
&gt; &gt;&gt; &gt; &gt; &gt;&gt;&gt; 2) Некий логически монолитный кусок кода (например, LSM модуль AltHa, или<br>
&gt; &gt;&gt; &gt; &gt; &gt;&gt;&gt;     драйвер dwmac-baikal) оказывается размазанным тонким слоем по N коммитам.<br>
&gt; &gt;&gt; &gt; &gt; &gt;&gt;&gt;     При переносе на более свежее ядро из этих N коммитов всё равно надо сделать<br>
&gt; &gt;&gt; &gt; &gt; &gt;&gt;&gt;     один патч (а затем доработать его вслед за изменившимися API).<br>
&gt; &gt;&gt; &gt; &gt; &gt;&gt; Да, эти &quot;стабильные&quot; патчи живут в отдельных ветках feat-* и fix-*<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Где их искать?<br>
&gt; &gt;&gt; Под какие мажорные релизы они поддерживаются?<br>
&gt; &gt;&gt; Можно ли рассчитывать, что патчи из этих веток лягут без конфликтов на<br>
&gt; &gt;&gt; более старшие минорые версии тех мажорных, под которые они ведутся?<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Здесь я их не наблюдаю:<br>
&gt; &gt;&gt; - <a href="http://git.altlinux.org/gears/k/kernel-image-std-def.git" rel="noreferrer noreferrer" target="_blank">http://git.altlinux.org/gears/k/kernel-image-std-def.git</a><br>
&gt; &gt;&gt; - <a href="http://git.altlinux.org/gears/k/kernel-image-un-def.git" rel="noreferrer noreferrer" target="_blank">http://git.altlinux.org/gears/k/kernel-image-un-def.git</a><br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Наверное, это вычисляется. Но для этого потребуется:<br>
&gt; &gt;&gt; - вытянуть гигабайт исходников;<br>
&gt; &gt;&gt; - выяснить какой командой это вычисляется;<br>
&gt; &gt;&gt; - то есть потратить кучу времени без гарантии, что не ошибся и всё<br>
&gt; &gt;&gt; правильно сделал;<br>
&gt; &gt;&gt; - без возможности быстро посмотреть через веб-интерфейс ту часть<br>
&gt; &gt;&gt; истории, которая (казалось бы) должна быть доступна.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &gt; &gt; &gt;&gt; И, если я правильно понимаю, упоминаемым партнёрам они не очень<br>
&gt; &gt;&gt; &gt; &gt; &gt;&gt; интересны. Зачем их при каждой сборке вытаскивать наверх ценой<br>
&gt; &gt;&gt; &gt; &gt; &gt;&gt; испорченной истории мне не ясно.<br>
&gt; &gt;&gt; &gt; &gt; &gt;<br>
&gt; &gt;&gt; &gt; &gt; &gt; Если мне гит при каждом merge ядра будет ругаться на unrelated history, то я буду громко и сильно ругаться на тех людей, которые так делают.<br>
&gt; &gt;&gt; &gt; &gt; &gt;<br>
&gt; &gt;&gt; &gt; &gt; &gt; Давайте ещё раз подумаем и придумаем удобное решение.<br>
&gt; &gt;&gt; &gt; &gt; &gt;<br>
&gt; &gt;&gt; &gt; &gt; &gt; А как ведёт ядро та же убунта ? Почему у них нет этой проблемы ?<br>
&gt; &gt;&gt; &gt; &gt; &gt; <a href="https://git.launchpad.net/~canonical-kernel/ubuntu/+source/linux-oem/+git/focal?h=oem-5.10" rel="noreferrer noreferrer" target="_blank">https://git.launchpad.net/~canonical-kernel/ubuntu/+source/linux-oem/+git/focal?h=oem-5.10</a><br>
&gt; &gt;&gt; &gt; &gt; &gt;<br>
&gt; &gt;&gt; &gt; &gt; По моим наблюдениям примерно годичной давности, убунта регулярно форс-пушит в свой гит, который часто не соответствует ушедшим в репозиторий исходникам. С таким гитом работать невозможно. Точно не пример для подражания.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Ну, наверное, убунта это делает из каких-то соображений. Не из прихоти<br>
&gt; &gt;&gt; же? Субъективные предпочтения тоже бывают, но тут не тот случай, когда<br>
&gt; &gt;&gt; всё к этому сводится.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &gt; Согласен. За push --force в репозитории, которые в разработке<br>
&gt; &gt;&gt; &gt; используются другими людьми, нужно руки отрывать.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Не согласен. Смотря в каком контексте идёт речь о разработке. Пачка<br>
&gt; &gt;&gt; запутанных merge-коммитов - это интересная история для пакета, но не<br>
&gt; &gt;&gt; для разработки того исходного кода, который собирается в этом пакете.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; О какой, вообще, разработке идёт речь? Что вы называете разработкой,<br>
&gt; &gt;&gt; если отсутствует плановый сценарий передачи исходников в апстрим и не<br>
&gt; &gt;&gt; заложен подход взаимодействия с другими разработчиками, которые тоже<br>
&gt; &gt;&gt; взаимодействуют с апстримом и этот апстрим не мы?<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; &quot;Плановый сценарий передачи исходников в апстрим&quot; отсутствует, в<br>
&gt; &gt;&gt; данном случае, потому, что &quot;выковыривать&quot; размазанные по истории патчи<br>
&gt; &gt;&gt; - это антипродуктивный, нерабочий сценарий для любого разработчика,<br>
&gt; &gt;&gt; кроме автора пакета, да и для него тоже неудобная;<br>
&gt; &gt;&gt; &quot;Подход взаимодействия с другими разработчиками, которые тоже<br>
&gt; &gt;&gt; взаимодействуют с апстримом&quot; не заложен, в данном случае, потому, что<br>
&gt; &gt;&gt; сторонним разработчикам не менее нужны наши патчи в доступном виде,<br>
&gt; &gt;&gt; чем апстриму, если мы хотим этой самой совместной разработки.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; При работе с апстримом и попытках передать астриму исходники<br>
&gt; &gt;&gt; приходится делать регулярный git rebase и git push --force. Это же<br>
&gt; &gt;&gt; очевидно. Вариант - передать патч в электронном сообщении только<br>
&gt; &gt;&gt; скрывает отсутствие этого --force, который, фактически, всё равно,<br>
&gt; &gt;&gt; имеет место быть, поскольку этот патч равносилен цепочке git<br>
&gt; &gt;&gt; cherry-pick &amp;&amp; git rebase, после которой неизбежен --force или<br>
&gt; &gt;&gt; параллельная история с кучей merge-коммитов, которая никому не<br>
&gt; &gt;&gt; интересна для разработки, даже нам самим.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Не стоит называть любую сборку пакета в репозиторий участием в<br>
&gt; &gt;&gt; разработке. Это иногда так, но очень и очень редко. Во многих случаях<br>
&gt; &gt;&gt; авторы даже не в курсе, что мы их проект собираем. И разница тут<br>
&gt; &gt;&gt; именно в том, что для передачи исходников и для совместного ведения<br>
&gt; &gt;&gt; исходного кода приходится чем-то платить. В нашем случае, одним из<br>
&gt; &gt;&gt; удачных вариантов является вариант с разделением веток:<br>
&gt; &gt;&gt; - master - апстрим;<br>
&gt; &gt;&gt; - altlinux - наши патчи;<br>
&gt; &gt;&gt; - sisyphus/p10/p9/... - ветки с gear-правилами и нашим spec-файлом.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Если патчи не нужно отдавать и наш сборочный репозиторий никому не<br>
&gt; &gt;&gt; нужен, то, всё равно, такая схема для разработки удобна, поскольку в<br>
&gt; &gt;&gt; историю изменений исходников не входит ещё и история изменений нашего<br>
&gt; &gt;&gt; spec-файла.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Всё это актуально только в том случае, если:<br>
&gt; &gt;&gt; - мы рассматриваем не личный репозиторий, а репозиторий формата<br>
&gt; &gt;&gt; <a href="http://git.altlinux.org/gears/p/package-name.git" rel="noreferrer noreferrer" target="_blank">git.altlinux.org/gears/p/package-name.git</a>, как источник для<br>
&gt; &gt;&gt; взаимодействия с другими разработчиками, включая нас самих;<br>
&gt; &gt;&gt; - мы исходим из того, что у нас имеется общий апстрим (ветка master),<br>
&gt; &gt;&gt; который, как первоисточник, используется всеми разработчиками;<br>
&gt; &gt;&gt; - задача, которую мы совместно решаем, состоит в том, чтобы<br>
&gt; &gt;&gt; максимально быстро передавать наши наработки, при необходимости, в<br>
&gt; &gt;&gt; апстрим или друг другу;<br>
&gt; &gt;&gt; - а длительная поддержка наших наработок предполагает, чтобы эта<br>
&gt; &gt;&gt; возможность не утрачивалась в угоду мнимому или объективному, но<br>
&gt; &gt;&gt; весьма условному, удобству.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; Длительная поддержка наших изменений в апстримных проектах тоже, в<br>
&gt; &gt;&gt; каком-то смысле - разработка. Но совершенно другая задача, если<br>
&gt; &gt;&gt; взаимодействие планируется налаживать на регулярной основе. Если мы<br>
&gt; &gt;&gt; ведём все исходники в git-репах, то неплохо бы его и использовать (ну,<br>
&gt; &gt;&gt; хотелось бы). В том виде, в котором мы ведём сборку сейчас, во многих<br>
&gt; &gt;&gt; случаях, нашими наработками воспользоваться, мягко говоря, довольно<br>
&gt; &gt;&gt; затруднительно. Если мы не ставим себе такой задачи, то у меня нет<br>
&gt; &gt;&gt; больше никаких вопросов.<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; У нас есть по крайней мере две разные задачи: регулярная сборка ядра из единых исходников для основных платформ и разработка для апстрима и партнёров. И это две разные сферы ответственности.<br>
&gt; &gt; То есть задача не только техническая, но управленческая и кадровая. Тянуть одеяло на себя -- самое плохое дело в этой ситуации. Решение нужно комплексное и согласованное, простым оно не будет. Но сейчас есть время и, возможно, ресурсы, подумать над ней.<br>
&gt;<br>
&gt; Именно с целью подумать и что-то придумать я и начал эту переписку.<br>
&gt;<br>
&gt; Поскольку уже прошло некоторое время и были высказаны различные точки<br>
&gt; зрения, хочу обобщить некоторые тезисы:<br>
&gt; - в идеале нужен общий подход, подходящий для регулярной сборки ядра<br>
&gt; из единых исходников для основных платформ и для разработки для<br>
&gt; апстрима и партнёров;<br>
&gt; - если это по каким-то причинам невозможно, то требуется<br>
&gt; автоматизируемый сценарий получения исходников для разработки в<br>
&gt; точности совпадающий с исходниками для регулярной сборки.<br>
<br>
Да. И что дальше?<br>
Какой следующий шаг, пусть небольшой, но согласованный?<br>
Доверенного эксперта мы пока не нашли.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">Вопрос. </div><div dir="auto">В  каких репозиториях  есть  синхронные сборки ядер из единых исходников для разных архитектур, и для каких архитектур? </div><div dir="auto"><br></div><div dir="auto">Rgrds, Алексей</div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Rgrds, Алексей<br>
&gt;<br>
&gt; Честно говоря, я не очень понимаю как, и можно ли вообще, добиться<br>
&gt; второго варианта. Кроме того, разработка для апстрима и партнёров в<br>
&gt; равной (если не в большей) требует выявления регрессий на всех<br>
&gt; основных платформах при разработке под какую-то одну.<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; &gt; Rgrds, Алексей<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; PS: Кстати, у федоры тоже есть git-репы для своих пакетов:<br>
&gt; &gt;&gt; - <a href="https://src.fedoraproject.org/rpms/kernel/" rel="noreferrer noreferrer" target="_blank">https://src.fedoraproject.org/rpms/kernel/</a><br>
&gt; &gt;&gt; Пример, ядра не очень показателен, но даже в нём сразу понятно чем<br>
&gt; &gt;&gt; отличается их ядро от апстримного. А про наше нужно ещё догадаться,<br>
&gt; &gt;&gt; изучив и разобрав gear-правила, которые для каждого пакета свои. Стоит<br>
&gt; &gt;&gt; отметить, что gear на другие дистрибутивы не портирован, хотя у меня<br>
&gt; &gt;&gt; есть свой порт на centos.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; PPS: Понятно, что предложенная схема имеет свои издержки. Но &quot;отрывать<br>
&gt; &gt;&gt; руки&quot; - это уже как-то за гранью. Я если отрывать руки за то, что<br>
&gt; &gt;&gt; сборка есть, а патчей нет? Ну, то есть они как бы есть, но передать их<br>
&gt; &gt;&gt; в апстрим требует нетривиальной работы?<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; --<br>
&gt; &gt;&gt; Sin (Sinelnikov Evgeny)<br>
&gt; &gt;&gt; _______________________________________________<br>
&gt; &gt;&gt; Devel mailing list<br>
&gt; &gt;&gt; <a href="mailto:Devel@lists.altlinux.org" target="_blank" rel="noreferrer">Devel@lists.altlinux.org</a><br>
&gt; &gt;&gt; <a href="https://lists.altlinux.org/mailman/listinfo/devel" rel="noreferrer noreferrer" target="_blank">https://lists.altlinux.org/mailman/listinfo/devel</a><br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; Devel mailing list<br>
&gt; &gt; <a href="mailto:Devel@lists.altlinux.org" target="_blank" rel="noreferrer">Devel@lists.altlinux.org</a><br>
&gt; &gt; <a href="https://lists.altlinux.org/mailman/listinfo/devel" rel="noreferrer noreferrer" target="_blank">https://lists.altlinux.org/mailman/listinfo/devel</a><br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Sin (Sinelnikov Evgeny)<br>
&gt; _______________________________________________<br>
&gt; Devel mailing list<br>
&gt; <a href="mailto:Devel@lists.altlinux.org" target="_blank" rel="noreferrer">Devel@lists.altlinux.org</a><br>
&gt; <a href="https://lists.altlinux.org/mailman/listinfo/devel" rel="noreferrer noreferrer" target="_blank">https://lists.altlinux.org/mailman/listinfo/devel</a><br>
</blockquote></div></div></div>