* [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