[devel] [#154910] EPERM (try 2) mkimage.git=0.2.17-alt1.1
Michael Shigorin
mike на altlinux.org
Пн Дек 21 18:38:40 MSK 2015
On Mon, Dec 21, 2015 at 04:57:43PM +0300, Aleksey Avdeev wrote:
> > Лёш, аккуратней надо. Если б ты не отправил лишний тег на сборку,
> > а попросил вычитать -- я бы тоже вычитал и указал на слом.
> <https://lists.altlinux.org/pipermail/devel/2015-December/200598.html>
> осталось без ответа...
Ой, и впрямь проморгал за анонсами стартеркитов, виноват.
> > -mkdir $verbose -p -- \$boot
> > +[ -d \$boot ] || mkdir $verbose -p -- \$boot
> > Зачем? mkdir -p молча обеспечит наличие каталога, если не было.
> Для исключения появления каталогов вида a/b/b в результате вызова
> mkdir -p a/b при существующим a/b. (Был уверен что натыкался на
> подобное, но быстрая проверка показала что что-то попутал.)
Точно напутал, скорее всего с rsync или cp.
> Как перешёл на нужную (с изменениями) -- тут баги и полезли.
Да уж, они такие...
> > - cp $verbose -pLf "\$src" "\$dest/memtest86.efi" &&
> > + cp $verbose -pLn "\$src" "\$dest/memtest86.efi" &&
> >
> > Как вариант -- хотя как раз здесь было бы уместно проверить
> > наличие целевого бинарника и если уже есть, то не копировать
> > ресурсы, т.к. не исключено, что профиль мог копировать не всё:
> >
> > find /usr/share/efi-memtest86 -type f |
> > - xargs cp $verbose -pLft "\$dest"
> > + xargs cp $verbose -pLnt "\$dest"
>
> Т. е., если уже существует "\$dest/memtest86.efi", то
> содержимое /usr/share/efi-memtest86 копировать не надо?
Я бы делал так. Т.е. бинарник как ключ, по которому определяется
-- делаем ли что-либо с таким бинарником _и_ нужными ему файлами.
> > Аналогично и далее с refind.
> Т. е., если существует $boot/bootx64.efi, copy_refind() должна
> завершить свою работу ничего (в том числе и все refind.conf)
> не копируя?
Похоже, да. Не было ли там переписывания $bin_path -- не помню
на все сто процентов, но с такими штуками в любом случае пора
завязывать.
> > + [ ! -e "\$boot/elilo.conf" ] || return 0
> >
> > Здесь как раз следует обламываться, если нет конфига --
> Там ниже по коду идёт создание "\$boot/elilo.conf" через cat.
А, это уже я торможу.
> > - [ ! -d \$refind_aux/altlinux ] ||
> > + [ -d "\$boot/icons/altlinux" ] || [ ! -d \$refind_aux/altlinux ] ||
> > mv \$refind_aux/altlinux \$boot/icons
> >
> > Добавлена логическая ошибка (проверять при таком методе обработки
> > следует _отсутствие_ каталога, а не его наличие).
> Не вижу ошибки. Т. к. здесь цель именно исключить выполнение
> mv, если каталог "\$boot/icons/altlinux" уже существует. Т.е.
> mv должна вызываться только если нет "\$boot/icons/altlinux".
Действительно, спасибо.
> Исправленный вариант --
> <http://git.altlinux.org/people/solo/packages/mkimage.git?p=mkimage.git;a=commitdiff;h=ed07e32d585485cafb3889f78b403c1c8466cff5>
Смотрю.
> PS: Как лучше выполнить перенос скрипта в mkimage-profiles:
>
> 1. Перенести необходимые коммиты (затрагивающие tools/mki-copy-efiboot,
> как сделано сейчас в efiboot, см.
> <http://git.altlinux.org/people/solo/packages/mkimage-profiles.git?p=mkimage-profiles.git;a=shortlog;h=refs/heads/efiboot>)?
>
> 2. Прямой мерж необходимого?
Пока не знаю, надо думать/пробовать/думать.
--
---- WBR, Michael Shigorin / http://altlinux.org
------ http://opennet.ru / http://anna-news.info
Подробная информация о списке рассылки Devel