[devel] PoC: gear-submodule-update Ex: Новая схема ведения исходников ядра

Alexey Gladkov legion на altlinux.ru
Ср Янв 12 15:53:53 MSK 2022


On Wed, Jan 12, 2022 at 01:40:03PM +0100, Alexey Gladkov wrote:
> On Wed, Jan 12, 2022 at 03:20:51PM +0300, Dmitry V. Levin wrote:
> > On Wed, Jan 12, 2022 at 03:39:20AM +0300, Dmitry V. Levin wrote:
> > > On Wed, Jan 12, 2022 at 03:26:55AM +0300, Vitaly Chikunov wrote:
> > > > On Tue, Jan 11, 2022 at 12:10:52PM +0300, Sergey V Turchin wrote:
> > > > > On Tuesday, 11 January 2022 11:55:20 MSK Paul Wolneykien wrote:
> > > > > 
> > > > > [...]
> > > > > > Возможно, это повод для FR к gear: чтобы он поддерживал в rules ссылки на
> > > > > > внешние репозитории или подмодули.
> > > > > Возможно, с появлением gear все этого уже ждут. ;-)
> > > > > https://bugs.altlinux.org/17914
> > > > 
> > > > Возможны разные попытки решения этой проблемы.
> > > > Вот Proof of Concept code
> > > >   gitery:/people/vt/private/gear-submodule-update.git
> > > > который делает фиктивный merge всем submodules и меняет rules и spec
> > > > так чтоб они разтаривались при сборке.
> > > > 
> > > > Это решение чисто экспериментальное (as in no warranty), но, возможно,
> > > > оно вдохновит кого-то на более правильное решение.
> > > 
> > > Есть ещё
> > > https://git.altlinux.org/people/ldv/packages/?p=gear.git;a=shortlog;h=refs/heads/legion/patchset/submodule-support/v5
> > > но я его не смог дочитать.
> > 
> > Вроде бы дочитал, отредактировал, запушил в
> > https://git.altlinux.org/people/ldv/packages/?p=gear.git;a=shortlog;h=submodules
> 
> +       if [ -s "$workdir/listed_bundles" ]; then
> +               sort -u -o "$workdir/listed_bundles"{,}
> +               >> "$workdir/appended_bundles"
> 
> Кажется что-то пошло не так при редактировании.
> Разве не должно быть 
> 
> sort -u -o "$workdir/listed_bundles"{,} \
>  >> "$workdir/appended_bundles"
> 
> ?
> 
> Отредактированные коммиты точно тесты проходят ? )))
> 
> +               sort -u -o "$workdir/appended_bundles"{,}
> +               comm -23 "$workdir/listed_bundles" \
> +                        "$workdir/appended_bundles" \
> +                       > "$workdir/unused_submodules"
> +               if [ -s "$workdir/unused_submodules" ]; then
> +                       lineno=0
> +                       local rules='.gear/submodules/list'
> +                       local bundle sm_hash sm_path dummy
> +                       while read -r bundle sm_hash sm_path dummy; do {
> +                               lineno=$(($lineno + 1))
> +                               grep -Fxqse "$lineno" "$workdir/unused_submodules" ||
> +                                       continue
> +                               rules_info "unused bundle: $sm_path"
> +                       } < /dev/null; done < "$workdir/submodules_list"
> 
> Может лучше 
> 
>  grep -Fxqse "$lineno" "$workdir/unused_submodules" < /dev/null
> 
> а не этот ужасный блок ?

В других местах я вижу ты тоже такую конструкцию добавил.

Я бы сделал:

exec 4</etc/passwd
while read -r line <&4; do
	echo "# $line"
done
exec 4<&-

хоть и придётся обрабатывать закрытие декриптора в некоторых случаях. Зато
выглядит более читабильно.

-- 
Rgrds, legion



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