* [devel] [git pull] sisyphus_check changes
@ 2008-04-23 13:53 Alexey Gladkov
2008-04-23 14:12 ` Alexey Tourbin
0 siblings, 1 reply; 10+ messages in thread
From: Alexey Gladkov @ 2008-04-23 13:53 UTC (permalink / raw)
To: ALT Devel discussion list
Приветствую!
Дим, забери мои изменения в sisyphus_check:
git.alt:/people/legion/packages/sisyphus_check.git split
Изменения:
- из утилиты выделены проверки и инициализация;
- проверки выполняются в subshell;
- проверки check-gpg и check-gpgname объединины.
В качестве бонуса этих изменений, появилась возможность расширять
базовые проверки. Это полезно для тех, кто поддерживает группы пакетов с
дополнительным полиси.
sisyphus_check/sisyphus-check-functions | 124 ++++
sisyphus_check/sisyphus_check | 688 +-------------------
.../sisyphus_check.d/000-check-changelog | 61 ++
sisyphus_check/sisyphus_check.d/010-check-gpg | 93 +++
.../sisyphus_check.d/020-check-buildhost | 26 +
.../sisyphus_check.d/030-check-buildtime | 23 +
sisyphus_check/sisyphus_check.d/040-check-packager | 23 +
.../sisyphus_check.d/050-check-printable | 34 +
sisyphus_check/sisyphus_check.d/060-check-summary | 22 +
.../sisyphus_check.d/070-check-description | 22 +
sisyphus_check/sisyphus_check.d/080-check-group | 22 +
sisyphus_check/sisyphus_check.d/090-check-nvr | 45 ++
sisyphus_check/sisyphus_check.d/100-check-deps | 42 ++
sisyphus_check/sisyphus_check.d/110-check-content | 31 +
sisyphus_check/sisyphus_check.d/120-check-libtool | 27 +
sisyphus_check/sisyphus_check.d/130-check-fhs | 43 ++
sisyphus_check/sisyphus_check.d/140-check-perms | 44 ++
.../sisyphus_check.d/150-check-intersects | 35 +
sisyphus_check/sisyphus_check.d/160-check-locales | 26 +
sisyphus_check/sisyphus_check.spec | 5 +
20 files changed, 783 insertions(+), 653 deletions(-)
create mode 100644 sisyphus_check/sisyphus-check-functions
create mode 100644 sisyphus_check/sisyphus_check.d/000-check-changelog
create mode 100644 sisyphus_check/sisyphus_check.d/010-check-gpg
create mode 100644 sisyphus_check/sisyphus_check.d/020-check-buildhost
create mode 100644 sisyphus_check/sisyphus_check.d/030-check-buildtime
create mode 100644 sisyphus_check/sisyphus_check.d/040-check-packager
create mode 100644 sisyphus_check/sisyphus_check.d/050-check-printable
create mode 100644 sisyphus_check/sisyphus_check.d/060-check-summary
create mode 100644 sisyphus_check/sisyphus_check.d/070-check-description
create mode 100644 sisyphus_check/sisyphus_check.d/080-check-group
create mode 100644 sisyphus_check/sisyphus_check.d/090-check-nvr
create mode 100644 sisyphus_check/sisyphus_check.d/100-check-deps
create mode 100644 sisyphus_check/sisyphus_check.d/110-check-content
create mode 100644 sisyphus_check/sisyphus_check.d/120-check-libtool
create mode 100644 sisyphus_check/sisyphus_check.d/130-check-fhs
create mode 100644 sisyphus_check/sisyphus_check.d/140-check-perms
create mode 100644 sisyphus_check/sisyphus_check.d/150-check-intersects
create mode 100644 sisyphus_check/sisyphus_check.d/160-check-locales
--
Rgrds, legion
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [devel] [git pull] sisyphus_check changes
2008-04-23 13:53 [devel] [git pull] sisyphus_check changes Alexey Gladkov
@ 2008-04-23 14:12 ` Alexey Tourbin
2008-04-23 14:34 ` Alexey Gladkov
0 siblings, 1 reply; 10+ messages in thread
From: Alexey Tourbin @ 2008-04-23 14:12 UTC (permalink / raw)
To: ALT Devel discussion list
[-- Attachment #1: Type: text/plain, Size: 171 bytes --]
On Wed, Apr 23, 2008 at 05:53:22PM +0400, Alexey Gladkov wrote:
> - проверки выполняются в subshell;
Остаётся неясность, выполняются ли проверки в режиме -e или нет.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [devel] [git pull] sisyphus_check changes
2008-04-23 14:12 ` Alexey Tourbin
@ 2008-04-23 14:34 ` Alexey Gladkov
2008-04-23 14:46 ` Alexey Tourbin
0 siblings, 1 reply; 10+ messages in thread
From: Alexey Gladkov @ 2008-04-23 14:34 UTC (permalink / raw)
To: ALT Linux Team development discussions
Alexey Tourbin wrote:
> On Wed, Apr 23, 2008 at 05:53:22PM +0400, Alexey Gladkov wrote:
>> - проверки выполняются в subshell;
>
> Остаётся неясность, выполняются ли проверки в режиме -e или нет.
subshell наследует параметры... в данном случае это -efu.
--
Rgrds, legion
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [devel] [git pull] sisyphus_check changes
2008-04-23 14:34 ` Alexey Gladkov
@ 2008-04-23 14:46 ` Alexey Tourbin
2008-04-23 15:01 ` Alexey Gladkov
2008-04-23 15:11 ` Alexey Gladkov
0 siblings, 2 replies; 10+ messages in thread
From: Alexey Tourbin @ 2008-04-23 14:46 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 487 bytes --]
On Wed, Apr 23, 2008 at 06:34:56PM +0400, Alexey Gladkov wrote:
> Alexey Tourbin wrote:
> >On Wed, Apr 23, 2008 at 05:53:22PM +0400, Alexey Gladkov wrote:
> >>- проверки выполняются в subshell;
> >
> >Остаётся неясность, выполняются ли проверки в режиме -e или нет.
>
> subshell наследует параметры... в данном случае это -efu.
'if' частично отрубает режим -e.
$ sh -ec 'if (echo $-); then echo $-; fi'
ehBc
ehBc
$ sh -ec 'if (false; echo a); then echo b; fi'
a
b
$
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [devel] [git pull] sisyphus_check changes
2008-04-23 14:46 ` Alexey Tourbin
@ 2008-04-23 15:01 ` Alexey Gladkov
2008-04-23 15:12 ` Alexey Tourbin
2008-04-23 15:11 ` Alexey Gladkov
1 sibling, 1 reply; 10+ messages in thread
From: Alexey Gladkov @ 2008-04-23 15:01 UTC (permalink / raw)
To: ALT Linux Team development discussions
Alexey Tourbin wrote:
> 'if' частично отрубает режим -e.
Тут даже subshell не причём и set -e не поможет.
$ cat z.sh
#!/bin/sh -e
zzz() { set -e; false; echo a; }
if (zzz); then echo b; fi
if zzz; then echo b; fi
$ ./z.sh
a
b
a
b
--
Rgrds, legion
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [devel] [git pull] sisyphus_check changes
2008-04-23 14:46 ` Alexey Tourbin
2008-04-23 15:01 ` Alexey Gladkov
@ 2008-04-23 15:11 ` Alexey Gladkov
2008-04-23 15:15 ` Alexey Tourbin
1 sibling, 1 reply; 10+ messages in thread
From: Alexey Gladkov @ 2008-04-23 15:11 UTC (permalink / raw)
To: ALT Linux Team development discussions
Alexey Tourbin wrote:
> 'if' частично отрубает режим -e.
Это относится к любым конструкциям, а не только к 'if':
$ cat ./z.sh
#!/bin/sh -e
( false; echo a; ) && echo b
{ false; echo a; } && echo b
$ ./z.sh
a
b
a
b
Учитывается только код возврата на верхнем уровне.
> $ sh -ec 'if (echo $-); then echo $-; fi'
> ehBc
> ehBc
> $ sh -ec 'if (false; echo a); then echo b; fi'
> a
> b
> $
в случае sisyphus_check проверка идёт по коду завершения функции:
$ cat ./z.sh
#!/bin/sh -e
zzz() { echo a; return 1; }
if (zzz); then echo b; fi
$ ./z.sh
a
--
Rgrds, legion
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [devel] [git pull] sisyphus_check changes
2008-04-23 15:01 ` Alexey Gladkov
@ 2008-04-23 15:12 ` Alexey Tourbin
0 siblings, 0 replies; 10+ messages in thread
From: Alexey Tourbin @ 2008-04-23 15:12 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 995 bytes --]
On Wed, Apr 23, 2008 at 07:01:00PM +0400, Alexey Gladkov wrote:
> Alexey Tourbin wrote:
> >'if' частично отрубает режим -e.
>
> Тут даже subshell не причём и set -e не поможет.
С другой стороны, субшелл отрбуает эффект -e с внешней стороны.
То есть можно написать
--- sisyphus_check/sisyphus_check- 2008-04-23 14:07:25 +0000
+++ sisyphus_check/sisyphus_check 2008-04-23 15:09:14 +0000
@@ -43,7 +43,8 @@ run_checks() {
check_var="$(printf '%s' "no_check_$check" |tr - _)"
if eval "[ -z \"\${$check_var-}\" ]"; then
- if ! (. "$sisyphus_check_d/$check" && run_check "$f"); then
+ (. "$sisyphus_check_d/$check" && run_check "$f")
+ if [ $? -gt 0 ]; then
[ -z "$fast_check" ] || return 1
rc=1
fi
Тогда всё что в субшелле будет выполняться в чистом -e режиме,
но статус субшелла не обрубает саму программу.
В общем, вопреки легенде, unix way изначально было не очень хоршо
продуман, и нужно им пользоваться острожно. Не злоупотреблять. :)
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [devel] [git pull] sisyphus_check changes
2008-04-23 15:11 ` Alexey Gladkov
@ 2008-04-23 15:15 ` Alexey Tourbin
2008-04-23 15:31 ` Alexey Gladkov
0 siblings, 1 reply; 10+ messages in thread
From: Alexey Tourbin @ 2008-04-23 15:15 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 889 bytes --]
On Wed, Apr 23, 2008 at 07:11:08PM +0400, Alexey Gladkov wrote:
> Alexey Tourbin wrote:
> >'if' частично отрубает режим -e.
>
> Это относится к любым конструкциям, а не только к 'if':
>
> $ cat ./z.sh
> #!/bin/sh -e
> ( false; echo a; ) && echo b
> { false; echo a; } && echo b
>
> $ ./z.sh
> a
> b
> a
> b
К любым условным конструкциям, в которых "по смыслу" допустим
ненулевой код возврата. Поэтому "опасно" писать код типа
if my_function ...; then
и рассчитывать на то, что my_function будет выполняться в режиме -e.
> в случае sisyphus_check проверка идёт по коду завершения функции:
>
> $ cat ./z.sh
> #!/bin/sh -e
> zzz() { echo a; return 1; }
> if (zzz); then echo b; fi
>
> $ ./z.sh
> a
Так поэтому я и справшиваю, выполняется ли проверки в режиме -e или нет.
Желательно чтобы она выполнялась в чистом режиме -e, либо вообще без -e.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [devel] [git pull] sisyphus_check changes
2008-04-23 15:15 ` Alexey Tourbin
@ 2008-04-23 15:31 ` Alexey Gladkov
2008-04-23 16:49 ` Alexey Tourbin
0 siblings, 1 reply; 10+ messages in thread
From: Alexey Gladkov @ 2008-04-23 15:31 UTC (permalink / raw)
To: ALT Linux Team development discussions
Alexey Tourbin wrote:
> К любым условным конструкциям, в которых "по смыслу" допустим
> ненулевой код возврата. Поэтому "опасно" писать код типа
>
> if my_function ...; then
Отнюдь. Это стандартное поведение shell. С твоей точки зрения
получается что любая попытка обработать код возврата это опасная
операция т.к. с ключом -e ты не сможешь обработать код возврата
my_function кроме как условной конструкцией. :)
Кстати, в "старом" sisyphus_check проверки выполнялись именно в 'if'.
Так что regression я тут не сделал.
> и рассчитывать на то, что my_function будет выполняться в режиме -e.
думать о коде возврата нужно всегда самому иначе ты можешь получить
неожиданный результат.
--
Rgrds, legion
--
Rgrds, legion
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [devel] [git pull] sisyphus_check changes
2008-04-23 15:31 ` Alexey Gladkov
@ 2008-04-23 16:49 ` Alexey Tourbin
0 siblings, 0 replies; 10+ messages in thread
From: Alexey Tourbin @ 2008-04-23 16:49 UTC (permalink / raw)
To: ALT Linux Team development discussions
[-- Attachment #1: Type: text/plain, Size: 1435 bytes --]
On Wed, Apr 23, 2008 at 07:31:35PM +0400, Alexey Gladkov wrote:
> > К любым условным конструкциям, в которых "по смыслу" допустим
> >ненулевой код возврата. Поэтому "опасно" писать код типа
> >
> > if my_function ...; then
>
> Отнюдь. Это стандартное поведение shell. С твоей точки зрения
> получается что любая попытка обработать код возврата это опасная
> операция т.к. с ключом -e ты не сможешь обработать код возврата
> my_function кроме как условной конструкцией. :)
Стандартное поведение шелла неконсистентно. Это же влияет на
последовательность выполнения команд, обрывается последовательность
команд рано или обрывается последовательность поздно!
#!/bin/sh -e
my_function()
{
false
echo a
}
Если вызвано безусловно, то обрывается рано, а если вызвано условно,
то обрывается поздно. Такое "стандартное поведение" просто никто
никогда не продумал как следует, я считаю.
> Кстати, в "старом" sisyphus_check проверки выполнялись именно в 'if'.
> Так что regression я тут не сделал.
Ну как потенциальный автор новых скриптов-проверок я и спрашиваю:
выполняются ли скрипты-проверки в режиме -e или нет.
> >и рассчитывать на то, что my_function будет выполняться в режиме -e.
> думать о коде возврата нужно всегда самому иначе ты можешь получить
> неожиданный результат.
Думать нужно обо всём всегда и побольше. Только я наверное на шелле
больше ничего нового писать не буду.
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2008-04-23 16:49 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-04-23 13:53 [devel] [git pull] sisyphus_check changes Alexey Gladkov
2008-04-23 14:12 ` Alexey Tourbin
2008-04-23 14:34 ` Alexey Gladkov
2008-04-23 14:46 ` Alexey Tourbin
2008-04-23 15:01 ` Alexey Gladkov
2008-04-23 15:12 ` Alexey Tourbin
2008-04-23 15:11 ` Alexey Gladkov
2008-04-23 15:15 ` Alexey Tourbin
2008-04-23 15:31 ` Alexey Gladkov
2008-04-23 16:49 ` Alexey Tourbin
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