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 --]
next prev parent 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