ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7
@ 2007-09-11 16:43 Alexey Tourbin
  2007-09-11 16:55 ` Led
  0 siblings, 1 reply; 11+ messages in thread
From: Alexey Tourbin @ 2007-09-11 16:43 UTC (permalink / raw)
  To: devel

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

> jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7
> 	find-requires: running scripts
> 	(files,lib,pam,perl,pkgconfig,python,shebang,shell,static,symlinks,tcl)
> 	/usr/src/tmp/jakarta-commons-latka-buildroot/usr/share/jakarta-commons-latka-1.0/bin/latka.sh:
> 	line 19: syntax error near unexpected token `do\r'
> 	/usr/src/tmp/jakarta-commons-latka-buildroot/usr/share/jakarta-commons-latka-1.0/bin/latka.sh:
> 	line 19: `do\r'
> 	error: /bin/sh failed
> 	error: Failed to find Requires
> 	RPM build errors:

Это чистый #!/bin/sh скрипт, в котором досовские окончания строк \r\n.
Именно из-за этого шелл не может его распарсить.

Раньше зависимости в этом скрипте не искались, потому что он не
исполняемый.  Теперь зависимости ищутся во всех шелл-скриптах -- как
исполняемых, так и не исполняемых (rationale: нельзя отличить скрипт
от библиотеки шелл-функций, которая подключается через "." или source).

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7
  2007-09-11 16:43 [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7 Alexey Tourbin
@ 2007-09-11 16:55 ` Led
  2007-09-11 17:14   ` [devel] shell dependencies Alexey Tourbin
  2007-09-11 17:19   ` [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7 Alexey I. Froloff
  0 siblings, 2 replies; 11+ messages in thread
From: Led @ 2007-09-11 16:55 UTC (permalink / raw)
  To: devel

В сообщении от Tuesday 11 September 2007 19:43:28 Alexey Tourbin написал(а):
> > jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7
> > 	find-requires: running scripts
> > 	(files,lib,pam,perl,pkgconfig,python,shebang,shell,static,symlinks,tcl)
> > 	/usr/src/tmp/jakarta-commons-latka-buildroot/usr/share/jakarta-commons-l
> >atka-1.0/bin/latka.sh: line 19: syntax error near unexpected token `do\r'
> > 	/usr/src/tmp/jakarta-commons-latka-buildroot/usr/share/jakarta-commons-l
> >atka-1.0/bin/latka.sh: line 19: `do\r'
> > 	error: /bin/sh failed
> > 	error: Failed to find Requires
> > 	RPM build errors:
>
> Это чистый #!/bin/sh скрипт, в котором досовские окончания строк \r\n.
> Именно из-за этого шелл не может его распарсить.
>
> Раньше зависимости в этом скрипте не искались, потому что он не
> исполняемый.  Теперь зависимости ищутся во всех шелл-скриптах -- как
> исполняемых, так и не исполняемых (rationale: нельзя отличить скрипт
> от библиотеки шелл-функций, которая подключается через "." или source).

Очень часто даже сейчас приходится указывать:
Autoreq: yes, noshell
потому как в "шеловских скриптах" часто, например, такое:
if [ -x /usr/bin/foo1 ]; then
	/usr/bin/foo1 ....
elif [ -x /usr/bin/foo2 ]; then
	/usr/bin/foo2
	....
else
	....
fi

По крайней мере, в моей практике "исключения" встречаются не реже, 
чем "правила", и автоматическому find.req.shell стараюсь "не доверять".

-- 
Led

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [devel] shell dependencies
  2007-09-11 16:55 ` Led
@ 2007-09-11 17:14   ` Alexey Tourbin
  2007-09-11 17:19   ` [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7 Alexey I. Froloff
  1 sibling, 0 replies; 11+ messages in thread
From: Alexey Tourbin @ 2007-09-11 17:14 UTC (permalink / raw)
  To: devel

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

On Tue, Sep 11, 2007 at 07:55:40PM +0300, Led wrote:
> > Это чистый #!/bin/sh скрипт, в котором досовские окончания строк \r\n.
> > Именно из-за этого шелл не может его распарсить.
> >
> > Раньше зависимости в этом скрипте не искались, потому что он не
> > исполняемый.  Теперь зависимости ищутся во всех шелл-скриптах -- как
> > исполняемых, так и не исполняемых (rationale: нельзя отличить скрипт
> > от библиотеки шелл-функций, которая подключается через "." или source).
> 
> Очень часто даже сейчас приходится указывать:
> Autoreq: yes, noshell
> потому как в "шеловских скриптах" часто, например, такое:
> if [ -x /usr/bin/foo1 ]; then
> 	/usr/bin/foo1 ....
> elif [ -x /usr/bin/foo2 ]; then
> 	/usr/bin/foo2
> 	....
> else
> 	....
> fi

Это всегда так было, и эта проблема по сути никак не связана с битом -x
на скриптах.  Нужен на порядок более мощный шелл-анализатор, чтобы
можно было хоть как-то справляться с условными зависимостями.  То есть
нужно что-то вроде дерева опкодов, как в перле, или sexp-дерева, и
стековый/рекурсивный проход по нему с фиксацией локального состояния.
Тогда можно обнаруживать ситуации типа

	проверка существования файла 				    <--------------\
		загрузка файла	[!]->--вверх по стеку есть проверка существования--'
	следующая команда	[!] pop локальное состояние

Ну долго объяснять.  В принципе такое возможно, хотя это и очень сложно
по сравнению с тем, что сейчас есть.  В первом приближении можно об этом
думать как о чем-то типа SAX.  То есть логику можно внедрять на чем-то
типа обработки xml дерева.

> По крайней мере, в моей практике "исключения" встречаются не реже, 
> чем "правила", и автоматическому find.req.shell стараюсь "не доверять".

Вместе с этим Вы лишаетесь проверки syntax check.
Warkaround давно известен -- заворачивать условные пути в переменные.

	f1=/usr/bin/foo1
	f2=/usr/bin/foo2
	if [ -x "$f1" ]; then
		"$f1"
	elif [ -x "$f2" ]; then
		"$f2"
	else
		...
	fi

В общем, не доверять по умолчанию это перебор, но зависимости приходится
проверять.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7
  2007-09-11 16:55 ` Led
  2007-09-11 17:14   ` [devel] shell dependencies Alexey Tourbin
@ 2007-09-11 17:19   ` Alexey I. Froloff
  2007-09-11 17:27     ` Led
  1 sibling, 1 reply; 11+ messages in thread
From: Alexey I. Froloff @ 2007-09-11 17:19 UTC (permalink / raw)
  To: ALT Devel discussion list

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

* Led <ledest@> [070911 21:05]:
> потому как в "шеловских скриптах" часто, например, такое:
FOO1=/usr/bin/foo1
FOO2=/usr/bin/foo2
> if [ -x /usr/bin/foo1 ]; then
if [ -x "$FOO1" ]; then
> 	/usr/bin/foo1 ....
 	$FOO1 ....
> elif [ -x /usr/bin/foo2 ]; then
if [ -x "$FOO2" ]; then
> 	/usr/bin/foo2
 	$FOO2 ....
> 	....

> По крайней мере, в моей практике "исключения" встречаются не реже, 
> чем "правила", и автоматическому find.req.shell стараюсь "не доверять".
Казалось бы, при чём здесь шлякварь?

-- 
Regards,
Sir Raorn.

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7
  2007-09-11 17:19   ` [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7 Alexey I. Froloff
@ 2007-09-11 17:27     ` Led
  2007-09-11 19:20       ` Alexey Tourbin
  0 siblings, 1 reply; 11+ messages in thread
From: Led @ 2007-09-11 17:27 UTC (permalink / raw)
  To: ALT Linux Team development discussions

В сообщении от Tuesday 11 September 2007 20:19:34 Alexey I. Froloff 
написал(а):
> * Led <ledest@> [070911 21:05]:
> > потому как в "шеловских скриптах" часто, например, такое:
>
> FOO1=/usr/bin/foo1
> FOO2=/usr/bin/foo2
>
> > if [ -x /usr/bin/foo1 ]; then
>
> if [ -x "$FOO1" ]; then
>
> > 	/usr/bin/foo1 ....
>
>  	$FOO1 ....
>
> > elif [ -x /usr/bin/foo2 ]; then
>
> if [ -x "$FOO2" ]; then
>
> > 	/usr/bin/foo2
>
>  	$FOO2 ....
>

Это серьёзно перелопачивать shell-скрипты, которых может быть в паукете "не 
один" и "немаленький". В этом случае разговор о поиске
exec ...
в tcl/python скриптах с "#!/bin/sh" кажутся смешными - пофиксить в них шебанг 
на реальный действительно просто:)

> > 	....
> >
> > По крайней мере, в моей практике "исключения" встречаются не реже,
> > чем "правила", и автоматическому find.req.shell стараюсь "не доверять".
>
> Казалось бы, при чём здесь шлякварь?

Ни при чём. Когда я говорю "не доверять", то имею ввиду, что сначала делаю 
сборку с find.req.shell, анализирую, что действительно requires, добавляю это 
в явный requires в спек и ставлю 'Autoreq yes, noshell'. Как раз потому что 
меня абсолютно не устраивает и "шлякварь", и Fedora, пакеты которой зачастую 
тянут за собой "что не попадя":)

-- 
Led

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7
  2007-09-11 17:27     ` Led
@ 2007-09-11 19:20       ` Alexey Tourbin
  2007-09-11 19:55         ` Led
  2007-09-16 21:36         ` [devel] AutoReq: yes, shell Michael Shigorin
  0 siblings, 2 replies; 11+ messages in thread
From: Alexey Tourbin @ 2007-09-11 19:20 UTC (permalink / raw)
  To: ALT Linux Team development discussions

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

On Tue, Sep 11, 2007 at 08:27:50PM +0300, Led wrote:
> Это серьёзно перелопачивать shell-скрипты, которых может быть в паукете "не 
> один" и "немаленький". В этом случае разговор о поиске
> exec ...

Увы, бывают действительно "кривоватые" скрипты, да и не совсем
кривоватые, в которых поиск зависимостей дает слишком много результатов.
Всё же стоит попытаться выяснить, много ли там перелопачивать или нет.

> Ни при чём. Когда я говорю "не доверять", то имею ввиду, что сначала делаю 
> сборку с find.req.shell, анализирую, что действительно requires, добавляю это 
> в явный requires в спек и ставлю 'Autoreq yes, noshell'. Как раз потому что 
> меня абсолютно не устраивает и "шлякварь", и Fedora, пакеты которой зачастую 
> тянут за собой "что не попадя":)

Лучше делать так: собрать один раз, и, если поиск шелл-зависимостей
устраивает, ничего не трогать.  После сборки новой версии, если старый
пакет установлен, просто сравнить зависимости:
	compare_packages -i -a --requires /*/новая_версия.rpm
или, если не установлен
	compare_packages -a --requires -- /*/старая_версия.rpm -- /*/новая_версия.rpm

Флаг --requires можно сокращенно заменить на -R.  В принципе эту
операцию желательно выполнять каждый раз после сборки новой версии
пакета.  То есть maintainer должен понимать, каким образом меняются
зависимости у его пакетов, безотносительно того есть там шелл-скрипты
или нет.

Так вот, если в новой версии не добавилось паталогических зависимостей,
то есть если опять всё устраивает, то можно опять ничего не трогать.
Если же добавились какие-то нежелательные зависимости, то придётся
что-то трогать.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7
  2007-09-11 19:20       ` Alexey Tourbin
@ 2007-09-11 19:55         ` Led
  2007-09-11 20:09           ` Alexey Tourbin
  2007-09-16 21:36         ` [devel] AutoReq: yes, shell Michael Shigorin
  1 sibling, 1 reply; 11+ messages in thread
From: Led @ 2007-09-11 19:55 UTC (permalink / raw)
  To: ALT Linux Team development discussions

2007/9/11, Alexey Tourbin <at@altlinux.ru>:
> On Tue, Sep 11, 2007 at 08:27:50PM +0300, Led wrote:
> > Это серьёзно перелопачивать shell-скрипты, которых может быть в паукете "не
> > один" и "немаленький". В этом случае разговор о поиске
> > exec ...
>
> Увы, бывают действительно "кривоватые" скрипты, да и не совсем
> кривоватые, в которых поиск зависимостей дает слишком много результатов.
> Всё же стоит попытаться выяснить, много ли там перелопачивать или нет.

Бывают и "кривоватие"... Но, всё же, переделывать
/usr/bin/foo
на
FOO=/usr/bin/foo
$FOO
?
ИМХО это не исправление "кривостей", а "расстановка костылей" (?)

> > Ни при чём. Когда я говорю "не доверять", то имею ввиду, что сначала делаю
> > сборку с find.req.shell, анализирую, что действительно requires, добавляю это
> > в явный requires в спек и ставлю 'Autoreq yes, noshell'. Как раз потому что
> > меня абсолютно не устраивает и "шлякварь", и Fedora, пакеты которой зачастую
> > тянут за собой "что не попадя":)
>
> Лучше делать так: собрать один раз, и, если поиск шелл-зависимостей
> устраивает, ничего не трогать.

Ну, это, как бы, само-собой понятно:)

> После сборки новой версии, если старый
> пакет установлен, просто сравнить зависимости:
>         compare_packages -i -a --requires /*/новая_версия.rpm
> или, если не установлен
>         compare_packages -a --requires -- /*/старая_версия.rpm -- /*/новая_версия.rpm

Ок, спасибо. Нверное так и стОит делать.

> Флаг --requires можно сокращенно заменить на -R.  В принципе эту
> операцию желательно выполнять каждый раз после сборки новой версии
> пакета.  То есть maintainer должен понимать, каким образом меняются
> зависимости у его пакетов, безотносительно того есть там шелл-скрипты
> или нет.

Логично, возражений нет.


-- 
Led.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7
  2007-09-11 19:55         ` Led
@ 2007-09-11 20:09           ` Alexey Tourbin
  2007-09-11 20:26             ` Led
  0 siblings, 1 reply; 11+ messages in thread
From: Alexey Tourbin @ 2007-09-11 20:09 UTC (permalink / raw)
  To: ALT Linux Team development discussions

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

On Tue, Sep 11, 2007 at 10:55:20PM +0300, Led wrote:
> 2007/9/11, Alexey Tourbin <at@altlinux.ru>:
> > On Tue, Sep 11, 2007 at 08:27:50PM +0300, Led wrote:
> > > Это серьёзно перелопачивать shell-скрипты, которых может быть в паукете "не
> > > один" и "немаленький". В этом случае разговор о поиске
> > > exec ...
> >
> > Увы, бывают действительно "кривоватые" скрипты, да и не совсем
> > кривоватые, в которых поиск зависимостей дает слишком много результатов.
> > Всё же стоит попытаться выяснить, много ли там перелопачивать или нет.
> 
> Бывают и "кривоватие"... Но, всё же, переделывать
> /usr/bin/foo
> на
> FOO=/usr/bin/foo
> $FOO
> ?
> ИМХО это не исправление "кривостей", а "расстановка костылей" (?)

Увы, я тоже смотрю на это как на расстановку костылей.  С другой
стороны, так можно договориться до того, что нужно похерить всю идею
автоматического поиска зависимостей -- просто потому, что существуют
условные зависимости.  Они существуют не только в шелле, но и в других
интепретируемых языках.  Просто в шелле с ними сложнее бороться.

В некоторых случаях очень тяжело сказать, стоит ли расставлять костыли,
или проще отключить поиск зависимостей в конкретном файле.  См. напр.
git.git v1.5.1.1-113-g6fcc309 (ниже целиком).

Но отключить поиск зависимостей в отдельно взятом файле, если сыскалась
паршивая овца, вполне себе можно:
	%add_findreq_skiplist %_bindir/овца

К сожалению, пока нет способа игнорировать сами зависимости
определенного вида.


commit 6fcc3098dc58239f3437779740efee7a5c87ae20
Author: Dmitry V. Levin <ldv@altlinux>
Date:   Thu Apr 12 13:26:49 2007 +0000

    git-mergetool.sh: Protect merge tool names from "sh --find-requires"

diff --git a/git-mergetool.sh b/git-mergetool.sh
index e62351b..4db2a80 100755
--- a/git-mergetool.sh
+++ b/git-mergetool.sh
@@ -191,10 +191,10 @@ merge_file () {
     case "$merge_tool" in
 	kdiff3)
 	    if base_present ; then
-		(kdiff3 --auto --L1 "$path (Base)" -L2 "$path (Local)" --L3 "$path (Remote)" \
+		($merge_tool --auto --L1 "$path (Base)" -L2 "$path (Local)" --L3 "$path (Remote)" \
 		    -o "$path" -- "$BASE" "$LOCAL" "$REMOTE" > /dev/null 2>&1)
 	    else
-		(kdiff3 --auto -L1 "$path (Local)" --L2 "$path (Remote)" \
+		($merge_tool --auto -L1 "$path (Local)" --L2 "$path (Remote)" \
 		    -o "$path" -- "$LOCAL" "$REMOTE" > /dev/null 2>&1)
 	    fi
 	    status=$?
@@ -202,9 +202,9 @@ merge_file () {
 	    ;;
 	tkdiff)
 	    if base_present ; then
-		tkdiff -a "$BASE" -o "$path" -- "$LOCAL" "$REMOTE"
+		$merge_tool -a "$BASE" -o "$path" -- "$LOCAL" "$REMOTE"
 	    else
-		tkdiff -o "$path" -- "$LOCAL" "$REMOTE"
+		$merge_tool -o "$path" -- "$LOCAL" "$REMOTE"
 	    fi
 	    status=$?
 	    save_backup
@@ -218,13 +218,13 @@ merge_file () {
 	xxdiff)
 	    touch "$BACKUP"
 	    if base_present ; then
-		xxdiff -X --show-merged-pane \
+		$merge_tool -X --show-merged-pane \
 		    -R 'Accel.SaveAsMerged: "Ctrl-S"' \
 		    -R 'Accel.Search: "Ctrl+F"' \
 		    -R 'Accel.SearchForward: "Ctrl-G"' \
 		    --merged-file "$path" -- "$LOCAL" "$BASE" "$REMOTE"
 	    else
-		xxdiff -X --show-merged-pane \
+		$merge_tool -X --show-merged-pane \
 		    -R 'Accel.SaveAsMerged: "Ctrl-S"' \
 		    -R 'Accel.Search: "Ctrl+F"' \
 		    -R 'Accel.SearchForward: "Ctrl-G"' \
@@ -236,18 +236,18 @@ merge_file () {
 	opendiff)
 	    touch "$BACKUP"
 	    if base_present; then
-		opendiff "$LOCAL" "$REMOTE" -ancestor "$BASE" -merge "$path" | cat
+		$merge_tool "$LOCAL" "$REMOTE" -ancestor "$BASE" -merge "$path" | cat
 	    else
-		opendiff "$LOCAL" "$REMOTE" -merge "$path" | cat
+		$merge_tool "$LOCAL" "$REMOTE" -merge "$path" | cat
 	    fi
 	    check_unchanged
 	    save_backup
 	    ;;
-	emerge)
+	emacs)
 	    if base_present ; then
-		emacs -f emerge-files-with-ancestor-command "$LOCAL" "$REMOTE" "$BASE" "$path"
+		$merge_tool -f emerge-files-with-ancestor-command "$LOCAL" "$REMOTE" "$BASE" "$path"
 	    else
-		emacs -f emerge-files-command "$LOCAL" "$REMOTE" "$path"
+		$merge_tool -f emerge-files-command "$LOCAL" "$REMOTE" "$path"
 	    fi
 	    status=$?
 	    save_backup
@@ -293,8 +293,11 @@ done
 if test -z "$merge_tool"; then
     merge_tool=`git-config merge.tool`
     case "$merge_tool" in
-	kdiff3 | tkdiff | xxdiff | meld | opendiff | emerge | vimdiff | "")
+	kdiff3 | tkdiff | xxdiff | meld | opendiff | emacs | vimdiff | "")
 	    ;; # happy
+	emerge)
+	    merge_tool=emacs
+	    ;;
 	*)
 	    echo >&2 "git config option merge.tool set to unknown tool: $merge_tool"
 	    echo >&2 "Resetting to default..."
@@ -305,7 +308,7 @@ fi
 
 if test -z "$merge_tool" ; then
     if type kdiff3 >/dev/null 2>&1 && test -n "$DISPLAY"; then
-	merge_tool="kdiff3";
+	merge_tool=kdiff3
     elif type tkdiff >/dev/null 2>&1 && test -n "$DISPLAY"; then
 	merge_tool=tkdiff
     elif type xxdiff >/dev/null 2>&1 && test -n "$DISPLAY"; then
@@ -315,7 +318,7 @@ if test -z "$merge_tool" ; then
     elif type opendiff >/dev/null 2>&1; then
 	merge_tool=opendiff
     elif type emacs >/dev/null 2>&1; then
-	merge_tool=emerge
+	merge_tool=emacs
     elif type vimdiff >/dev/null 2>&1; then
 	merge_tool=vimdiff
     else
@@ -325,18 +328,12 @@ if test -z "$merge_tool" ; then
 fi
 
 case "$merge_tool" in
-    kdiff3|tkdiff|meld|xxdiff|vimdiff|opendiff)
+    emacs|kdiff3|meld|opendiff|tkdiff|vimdiff|xxdiff)
 	if ! type "$merge_tool" > /dev/null 2>&1; then
 	    echo "The merge tool $merge_tool is not available"
 	    exit 1
 	fi
 	;;
-    emerge)
-	if ! type "emacs" > /dev/null 2>&1; then
-	    echo "Emacs is not available"
-	    exit 1
-	fi
-	;;
     *)
 	echo "Unknown merge tool: $merge_tool"
 	exit 1


[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7
  2007-09-11 20:09           ` Alexey Tourbin
@ 2007-09-11 20:26             ` Led
  2007-09-11 20:35               ` Alexey Tourbin
  0 siblings, 1 reply; 11+ messages in thread
From: Led @ 2007-09-11 20:26 UTC (permalink / raw)
  To: ALT Linux Team development discussions

2007/9/11, Alexey Tourbin <at@altlinux.ru>:
> On Tue, Sep 11, 2007 at 10:55:20PM +0300, Led wrote:
> > 2007/9/11, Alexey Tourbin <at@altlinux.ru>:
> > > On Tue, Sep 11, 2007 at 08:27:50PM +0300, Led wrote:
> > > > Это серьёзно перелопачивать shell-скрипты, которых может быть в паукете "не
> > > > один" и "немаленький". В этом случае разговор о поиске
> > > > exec ...
> > >
> > > Увы, бывают действительно "кривоватые" скрипты, да и не совсем
> > > кривоватые, в которых поиск зависимостей дает слишком много результатов.
> > > Всё же стоит попытаться выяснить, много ли там перелопачивать или нет.
> >
> > Бывают и "кривоватие"... Но, всё же, переделывать
> > /usr/bin/foo
> > на
> > FOO=/usr/bin/foo
> > $FOO
> > ?
> > ИМХО это не исправление "кривостей", а "расстановка костылей" (?)
>
> Увы, я тоже смотрю на это как на расстановку костылей.  С другой
> стороны, так можно договориться до того, что нужно похерить всю идею
> автоматического поиска зависимостей -- просто потому, что существуют
> условные зависимости.  Они существуют не только в шелле, но и в других
> интепретируемых языках.  Просто в шелле с ними сложнее бороться.

Я и не предлагал что-либо "похерить". Просто констатировал факт, что,
в случае с shell-скриптами, автоматический поиск зависимостей - это не
панацея, а какая-то помощь, этим стоит пользоваться но полагаться
ТОЛЬКО полностью на автоматику в этом случае при сборке пакета всё же
стОит.

>
> В некоторых случаях очень тяжело сказать, стоит ли расставлять костыли,
> или проще отключить поиск зависимостей в конкретном файле.  См. напр.
> git.git v1.5.1.1-113-g6fcc309 (ниже целиком).
>
> Но отключить поиск зависимостей в отдельно взятом файле, если сыскалась
> паршивая овца, вполне себе можно:
>         %add_findreq_skiplist %_bindir/овца

Иногда так и делаю.

>
> К сожалению, пока нет способа игнорировать сами зависимости
> определенного вида.

А нельзя ли сделать детализацию для buildreq и findreq: кроме
найденной зависимости выводить и имя конктретного файла-"виновника"
этой зависимости? Хотя, для buildreq - это, скорее всего, нереально...
а findreq вроде бы и возможно (правда, неверное, придётся какой-то
ключ или макрос для rpmbuild добавить?). Я буквально пару дней назад
натолкнулся на случай, в котором подобная "фишка" сэкономила бы мне
несколько драгоценных минут. Думаю, многим была бы полкзна, в
частности - для обозначения место(а), где имеет смысл распилить пакет
на субпакеты.


-- 
Led.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7
  2007-09-11 20:26             ` Led
@ 2007-09-11 20:35               ` Alexey Tourbin
  0 siblings, 0 replies; 11+ messages in thread
From: Alexey Tourbin @ 2007-09-11 20:35 UTC (permalink / raw)
  To: ALT Linux Team development discussions

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

On Tue, Sep 11, 2007 at 11:26:15PM +0300, Led wrote:
> А нельзя ли сделать детализацию для buildreq и findreq: кроме
> найденной зависимости выводить и имя конктретного файла-"виновника"
> этой зависимости? Хотя, для buildreq - это, скорее всего, нереально...
> а findreq вроде бы и возможно (правда, неверное, придётся какой-то
> ключ или макрос для rpmbuild добавить?). Я буквально пару дней назад
> натолкнулся на случай, в котором подобная "фишка" сэкономила бы мне
> несколько драгоценных минут. Думаю, многим была бы полкзна, в
> частности - для обозначения место(а), где имеет смысл распилить пакет
> на субпакеты.

В новой версии rpm-build ключик этот называется rpmbuild --verbose.
Более того, в новой версии rpm-build почти все скрипты /usr/lib/rpm/*
могут работать без билдрута и тоже берут опцию --verbose.
Так что возможности для анализа и отладки многократно возрастут.
Типа всё для человека.

$ /usr/lib/rpm/shell.req -v /usr/bin/gitk
/usr/bin/gitk: line 12: syntax error near unexpected token `('
/usr/bin/gitk: line 12: `    if {[info exists env(GIT_DIR)]} {'
shell.req: /usr/bin/gitk is wish script!
shell.req: /usr/bin/gitk: wish -> /usr/bin/wish -> ... (via which)
shell.req: /usr/bin/gitk: /usr/bin/wish -> tk (via rpmdb)
tk
$

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [devel] AutoReq: yes, shell
  2007-09-11 19:20       ` Alexey Tourbin
  2007-09-11 19:55         ` Led
@ 2007-09-16 21:36         ` Michael Shigorin
  1 sibling, 0 replies; 11+ messages in thread
From: Michael Shigorin @ 2007-09-16 21:36 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Tue, Sep 11, 2007 at 11:20:54PM +0400, Alexey Tourbin wrote:
> > Это серьёзно перелопачивать shell-скрипты, которых может быть
> > в паукете "не один" и "немаленький". В этом случае разговор о
> > поиске exec ...
> Увы, бывают действительно "кривоватые" скрипты, да и не совсем
> кривоватые, в которых поиск зависимостей дает слишком много
> результатов.  Всё же стоит попытаться выяснить, много ли там
> перелопачивать или нет.

Ага, если интересно, можешь посмотреть mkcdrec.git у меня
в гитальте ;)  Близкий к клиническому случай, при этом бинарная
сборка для федоры на сизифе/4.0 работает.

-- 
 ---- WBR, Michael Shigorin <mike@altlinux.ru>
  ------ Linux.Kiev http://www.linux.kiev.ua/


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2007-09-16 21:36 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-09-11 16:43 [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7 Alexey Tourbin
2007-09-11 16:55 ` Led
2007-09-11 17:14   ` [devel] shell dependencies Alexey Tourbin
2007-09-11 17:19   ` [devel] jakarta-commons-latka-0:1.0-alt2_0.r389670.2jpp1.7 Alexey I. Froloff
2007-09-11 17:27     ` Led
2007-09-11 19:20       ` Alexey Tourbin
2007-09-11 19:55         ` Led
2007-09-11 20:09           ` Alexey Tourbin
2007-09-11 20:26             ` Led
2007-09-11 20:35               ` Alexey Tourbin
2007-09-16 21:36         ` [devel] AutoReq: yes, shell Michael Shigorin

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