ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: Aleksey Avdeev <solo@solin.spb.ru>
To: ALT Linux Team development discussions <devel@lists.altlinux.org>
Cc: Michael Shigorin <mike@altlinux.org>
Subject: Re: [devel] [#154910] EPERM (try 2) mkimage.git=0.2.17-alt1.1
Date: Mon, 21 Dec 2015 16:57:43 +0300
Message-ID: <56780557.2080604@solin.spb.ru> (raw)
In-Reply-To: <20151221120117.GA9467@imap.altlinux.org>

[-- Attachment #1: Type: text/plain, Size: 4455 bytes --]

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. Прямой мерж необходимого?

-- 

С уважением. Алексей.


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 278 bytes --]

  reply	other threads:[~2015-12-21 13:57 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-21 12:01 ` Michael Shigorin
2015-12-21 13:57   ` Aleksey Avdeev [this message]
2015-12-21 15:38     ` Michael Shigorin
2015-12-21 17:22       ` Aleksey Avdeev
2015-12-22 15:10         ` [devel] I: mkimage-profiles: efiboot (was: [#154910] EPERM (try 2) mkimage.git=0.2.17-alt1.1) Aleksey Avdeev
2015-12-25 18:40           ` [devel] I: mkimage-profiles: efiboot Aleksey Avdeev
2015-12-29 13:09             ` Aleksey Avdeev

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=56780557.2080604@solin.spb.ru \
    --to=solo@solin.spb.ru \
    --cc=devel@lists.altlinux.org \
    --cc=mike@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 Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/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 devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git