[devel] [#154910] EPERM (try 2) mkimage.git=0.2.17-alt1.1
Aleksey Avdeev
solo на solin.spb.ru
Пн Дек 21 16:57:43 MSK 2015
21.12.2015 15:01, Michael Shigorin пишет:
> On Mon, Dec 21, 2015 at 10:50:03AM +0000, Girar Builder awaiter robot wrote:
>> http://git.altlinux.org/tasks/154910/logs/events.2.1.log
>>
>> 2015-Dec-21 10:47:35 :: test-only task #154910 for sisyphus resumed by solo:
>> #100 removed
>> #200 build 0.2.17-alt1.1 from /people/solo/packages/mkimage.git
>
> Лёш, аккуратней надо. Если б ты не отправил лишний тег на сборку,
> а попросил вычитать -- я бы тоже вычитал и указал на слом.
<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. (Был уверен что натыкался на
подобное, но быстрая проверка показала что что-то попутал.)
>
> - mkdir $verbose -p "\$dest"
> + [ -d "\$dest" ] mkdir $verbose -p "\$dest"
>
> Здесь помимо того же вопроса ещё и синтаксическая ошибка.
Уже заметил. Оказалось, что раньше я проверял не ту сборку (выяснил
только в процессе отладки efiboot, см.
<http://git.altlinux.org/people/solo/packages/mkimage-profiles.git?p=mkimage-profiles.git;a=shortlog;h=refs/heads/efiboot>).
Как перешёл на нужную (с изменениями) -- тут баги и полезли.
>
> - 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) не копируя?
(Такой вариант выглядит лучше, чем тот который я прланировал реализовывать.)
>
> - mkdir $verbose -p \$cert
> - cp $verbose -pLft \$cert -- "\$keyfile"
> + [ -d "\$cert" ] || mkdir $verbose -p \$cert
> + cp $verbose -pLnt \$cert -- "\$keyfile"
>
> Просто mkdir -p, пожалуйста (как и далее в аналогичных случаях).
OK
>
> + [ ! -e "\$boot/elilo.conf" ] || return 0
>
> Здесь как раз следует обламываться, если нет конфига --
> copy_elilo() вызывается в случаях, когда он точно нужен.
> Т.е. || exit 1
Там ниже по коду идёт создание "\$boot/elilo.conf" через cat. Кусок
выглядит так:
Т. е., я заменил безусловное создание "\$boot/elilo.conf" при вызове на
"создаём, если отсутствует". Кусок выглядит так:
[ ! -e "\$boot/elilo.conf" ] || return 0
cat > \$boot/elilo.conf <<- ELILO_EOF
append="\$kargs"
...
ELILO_EOF
[ "$EFI_BOOTLOADER" != elilo ] ||
echo " append=\"\$kargs stagename=\${stage2% *}\"" \
>> \$boot/elilo.conf
Алгаритм работы:
1) Если файл есть -- выходим из процедуры.
2) Если файла нет -- создаём его.
Цель -- исключить переписывание "\$boot/elilo.conf" если он уже создан
ранее.
>
> - [ ! -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. Прямой мерж необходимого?
--
С уважением. Алексей.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя : signature.asc
Тип : application/pgp-signature
Размер : 278 байтов
Описание: OpenPGP digital signature
Url : <http://lists.altlinux.org/pipermail/devel/attachments/20151221/ed505320/attachment-0001.bin>
Подробная информация о списке рассылки Devel