ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [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