From: Michael Shigorin <mike@altlinux.org>
To: devel-distro@lists.altlinux.org
Subject: Re: [devel-distro] mki-copy-efiboot fixes
Date: Mon, 17 Aug 2020 20:47:00 +0300
Message-ID: <20200817174700.GF5990@imap.altlinux.org> (raw)
In-Reply-To: <20200817165619.mnplmex2kz2rlwif@comp-core-i7-2640m-0182e6>
On Mon, Aug 17, 2020 at 06:56:19PM +0200, Alexey Gladkov wrote:
> Я зарефакторил mki-copy-efiboot. Теперь его будет проще
> поддерживать. Плюс я нашёл несколько небольших ошибок в нём.
> Заинтересованных прошу посмотреть.
Заинтересовался, посмотрел, по коммитам -- в конце письма.
> http://git.altlinux.org/people/legion/packages/mkimage.git?a=shortlog;h=refs/heads/dev
"А что, так можно было?!" (ц) ;-)
Н-да, что ж я не додумался до такого, когда его писал
и отлаживал... да и у тебя помощи не попросил.
Но это одна часть проблемы (развесистая логика, которая была
выписана по сути под конкретное семейство ISO -- регулярки,
стартеркиты и дистрибутивы альта), вторая остаётся: эта
функциональность именно в развесистом виде была втащена в mkimage
потому, что не хотелось спихивать с mkimage-profiles-desktop
принудительно при наличии возможности сделать и там поддержку
малыми затратами.
То есть _тогда_ у меня при реализации функциональности выбор был
-- делать её _и_ в m-p, _и_ в m-p-d, или же помучиться и сделать
единообразно в mkimage; решение для меня было очевидным.
А _сейчас_ m-p-d проводили на пенсию естественным путём,
поскольку там никто не делал работы по поддержке других
архитектур (и технически она была куда сложней, даже с m-p
оказалось немало сюрпризов по мере взросления ARM).
И если бы архитектуры вынудили выпускать седьмой альт уже сразу
на m-p (когда на нём были только стартеркиты), то я бы делал
менюшки сразу там, а в mkimage ограничился краткой и ясной
базовой функциональностью, если не дали уже готовую конфигурацию
загрузчика.
Собственно, по такой логике mki-copy-efiboot и развивался
-- сперва что-то базовое, затем "навороты".
Например, там и посейчас остался прибитый гвоздиком список
языков для передачи lang=... в cmdline инсталятору/livecd.
Задумка была сделать фичу l10n в mkimage-profiles, которая
обеспечит включение нужных пакетов локализации (сейчас они
гвоздиком же прибиты в различных дистрибутивных списках),
возможно, станет влиять на %_install_langs и т.д.
Да, можно изобрести хоть include в mkimage и подтыкать
генерируемые кусочки из профиля -- я бы такое делать
"потому что могу" не стал, а только если будет нужно
другим авторам профилей (в первую очередь Большакову).
Тут, собственно, Антон скорее моими давними соображениями
и руководствуется, когда делает/включает такие генераторы
в mkimage-profiles, а не предлагает в mkimage: это больше
головной боли, чем реюзабельной функциональности, и лучше
бы её тащить в другие места или обобщать тогда, когда это
окажется осмысленным.
Или вот поддержка memtest86.efi -- там примерно такая же
петрушка: Большакову не нужно, я заморачивался ради rescue
и дистрибутивов.
В общем, тут по сути твоё решение о том, чем ты видишь mkimage --
я считаю, что ужасам вроде даже моего mki-copy-efiboot (а с тех
пор он, смотрю, ещё разросся) там не место, потому что такой код
является _плохим_ примером, в отличие от твоего краткого.
И что такие нужные, но некрасивые вещи лучше держать там же,
где и горы других запчастей, нужных конкретно для альтовых
дистрибутивов -- в том числе и чтобы не возлагать на тебя
дополнительную нагрузку по вычитке и приёмке этого всего.
Есть и прозаический момент по отладке: m-p правится в $HOME,
mkimage -- или в /usr/share, или как boyarsh@ в своё время
ухитрялся -- тоже в $HOME, но нетривиально (уже не помню, как);
ну или с полным циклом сборки-установки пакета, что немного
перебор именно при отладке всех этих менюшечек (там и так можно
было чокнуться, поскольку помимо сборок mkimage и сборок образов
ещё были нюансы загрузчиков, фирмварей и упаковки этого всего).
Как-то так... жаль, что получился целый шкаф скелетов, но пока
их откладывали "на потом" -- они из него никуда не девались.
--------------------------------------------------------------
По коммитам:
* Reformat -- руками или чем-нить вроде indent(1)?
* Refactor generation of refind submenu -- дифф глазами
нормально не разобрал, но сами функции после него
выглядят заметно чище, конечно
* Move code for ia32efi_flag=present in one place --
хорошо бы nickel@ проверил такую сборку, в Обнинске
вроде была IA32 EFI-машинка
* Avoid using "type -t" in the posix code --
намотал на ус (но я на POSIX и не претендовал)
Другие фиксы тоже почитал, на один commit message
предложу такой фикс:
-is already exists
+already exists
-If the
+If
PS: вот, молодёжь, учимся рефакторить :-)
--
---- WBR, Michael Shigorin / http://altlinux.org
------ http://opennet.ru / http://anna-news.info
next prev parent reply other threads:[~2020-08-17 17:47 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-17 16:56 Alexey Gladkov
2020-08-17 17:47 ` Michael Shigorin [this message]
2020-08-17 19:40 ` Alexey Gladkov
2020-08-24 19:56 ` Alexey Gladkov
2020-08-30 17:28 ` Michael Shigorin
2020-08-31 10:01 ` Alexey Gladkov
2020-09-01 10:26 ` Michael Shigorin
2020-09-17 13:48 ` Nikolai Kostrigin
2020-09-30 9:40 ` Alexey Gladkov
2020-09-30 10:26 ` Nikolai Kostrigin
2020-09-04 13:14 ` Michael Shigorin
2020-09-08 18:45 ` Michael Shigorin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200817174700.GF5990@imap.altlinux.org \
--to=mike@altlinux.org \
--cc=devel-distro@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux Distributions development
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel-distro/0 devel-distro/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel-distro devel-distro/ http://lore.altlinux.org/devel-distro \
devel-distro@lists.altlinux.org devel-distro@lists.altlinux.ru devel-distro@lists.altlinux.com
public-inbox-index devel-distro
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel-distro
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git