Bug 41262

Summary: hsh --ini --verbose does not identify post script
Product: Sisyphus Reporter: Vitaly Chikunov <vt>
Component: hasherAssignee: Dmitry V. Levin <ldv>
Status: ASSIGNED --- QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: arseny, at, glebfm, ldv, placeholder
Version: unstable   
Hardware: x86   
OS: Linux   

Description Vitaly Chikunov 2021-11-01 22:11:37 MSK
В случае ошибки возникающей в какой-то команде в ~/.hasher/install/post скрипте во время hsh --ini не понятно где возникает ошибка. Может создаться не правильное впечатление что ошибка где-то в posttrans-filetriggers. Запуск hsh --ini --verbose не отображает, что запускается post скрипт, из-за этого локализация элементарной ошибки очень сложна.
Comment 1 Dmitry V. Levin 2021-11-01 22:37:34 MSK
В качестве решения, которое будет работать со всеми версиями hasher, могу предложить всегда добавлять set -x в ~/.hasher/install/post

А в остальном, как обычно, патчи приветствуются.
Comment 2 Vitaly Chikunov 2021-11-01 22:43:46 MSK
Я, видимо, плохо описал проблему.
Comment 3 Dmitry V. Levin 2021-12-08 01:08:37 MSK
OK, а в чём тогда проблема?
Хочется не вставлять отладку в ~/.hasher/install/post,
но при этом получать отладочные сообщения о том, что /.host/postin запустился?
Comment 4 Vitaly Chikunov 2021-12-08 01:24:31 MSK
Я бы сам вставил отладку в ~/.hasher/install/post если бы знал что проблема в нем, но как раз это и неизвестно. "Не понятно где возникает ошибка" - не "не понятно где в post", а "не понятно где в hsh --ini".
Comment 5 Dmitry V. Levin 2021-12-08 01:28:54 MSK
Добавить фразу Executing /.host/postin, или добавить -x в скрипт, который запускает /.host/postin?
Comment 6 Vitaly Chikunov 2021-12-08 01:35:10 MSK
Было бы желательно хотя бы добавить фразу Executing ~/.hasher/install/post или аналогичное что бы показало, что дело не в каком-то из пакетов или filetrigger, а в моём post. Я думаю -x это не покажет.
Comment 7 Dmitry V. Levin 2021-12-08 01:40:20 MSK
Попробуй такой патч:

--- a/hasher/hsh-sh-functions.in
+++ b/hasher/hsh-sh-functions.in
@@ -427,6 +427,7 @@ create_entry_header()
 TMPDIR="\$HOME/tmp"
 export TMPDIR
 cd /.in
+${verbose:+set -x}
 __EOF__
        chmod 755 "$entry"
 }
@@ -443,6 +444,7 @@ if [ -z "\$FAKEROOTKEY" -a "\$USER" = root -a -x /usr/bin/fakeroot ]; then
        fi
 fi
 cd /.in
+${verbose:+set -x}
 __EOF__
        chmod 755 "$entry"
 }
Comment 8 Vitaly Chikunov 2021-12-08 20:31:23 MSK
Это не помогает. Я прошу сделать вывод сообщения, что сейчас запускается ~/.hasher/install/post
Comment 9 Arseny Maslennikov 2022-12-05 01:17:09 MSK
(In reply to Vitaly Chikunov from comment #8)
> Это не помогает. Я прошу сделать вывод сообщения, что сейчас запускается
> ~/.hasher/install/post

Реализовать именно это предложение довольно сложно. Сообщение должно будет порождаться из /.host/entry; либшелльные лог-сообщения опционально идут ещё и в сислог, крайне неудобно это делать из /.host/entry. Можно в entry засунуть только явный printf >&2, конечно, но это первый прецедент такого псевдо-verbose сообщения. В общем, лично мне не нравится.

Теперь конструктивные предложения.

В версии hasher 1.6.0-alt1 postin запускается прямо после следующих verbose-сообщений:
* 'hsh-install: calculated mount points: '"$required_mountpoints"
* 'hsh-initroot: RPM database updated.' (если chroot cache отключен или протух)
Зачем я это упоминаю? Если hsh --initroot-only не добирается до этого места, значит, postin не виноват.

В версии hasher 1.6.0-alt1 postin запускается прямо перед следующими verbose-сообщениями:
* 'hsh-install: Packages installation complete.'
* 'hsh-initroot: First time initialization complete.' (если chroot cache отключен или протух)
Зачем я это упоминаю? Может, вместо сообщения о postin стоит ввести в этих программах сообщения о начале "packages installation" и "first time initialization".
Comment 10 Vitaly Chikunov 2022-12-05 09:18:23 MSK
Пользователю надо узнать что сейчас выполняется ~/.hasher/install/post и следующие ошибки - из него. По всем эти надписям это не понятно, так что они не нужны.
Comment 11 Dmitry V. Levin 2022-12-05 23:53:37 MSK
(In reply to Vitaly Chikunov from comment #8)
> Это не помогает. Я прошу сделать вывод сообщения, что сейчас запускается
> ~/.hasher/install/post

Попробуй такой патч:

diff --git a/hasher/hsh-install b/hasher/hsh-install
index caa8d7d..2101b79 100755
--- a/hasher/hsh-install
+++ b/hasher/hsh-install
@@ -161,6 +161,7 @@ if type adjust_kernel_headers >/dev/null 2>&1; then
 	adjust_kernel_headers --first
 fi
 if [ -x /.host/postin ]; then
+	${verbose:+echo >&2 \$0: executing /.host/postin}
 	/.host/postin
 fi
 __EOF__
diff --git a/hasher/hsh-sh-cache-chroot-functions b/hasher/hsh-sh-cache-chroot-functions
index 099459b..c5aa1c6 100644
--- a/hasher/hsh-sh-cache-chroot-functions
+++ b/hasher/hsh-sh-cache-chroot-functions
@@ -372,6 +372,7 @@ if type adjust_kernel_headers >/dev/null 2>&1; then
 	adjust_kernel_headers
 fi
 if [ -x /.host/postin ]; then
+	${verbose:+echo >&2 \$0: executing /.host/postin}
 	/.host/postin
 fi
 groupadd -g $gid0 caller ||: