Bug 16645

Summary: hsh should mount /proc on install stage if packages requires them
Product: Sisyphus Reporter: viy <viy>
Component: hasherAssignee: Dmitry V. Levin <ldv>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P2 CC: at, evg, glebfm, ktirf, ldv, legion, nbr, placeholder, redbaron
Version: unstable   
Hardware: all   
OS: Linux   

Description viy 2008-08-10 22:05:29 MSD
java-1.6.0-sun не работает без /proc.
она его requires:
rpmquery --requires java-1.6.0-sun | grep proc
/proc  
в %post скриптах многих пакетов вызывается java -version:
например tomcat5.

допустим я хочу собрать java'й-1.6.0-sun пакет foo.
Во время сборки java работает корректно, так как /proc смонтирован.
но до сборки, на этапе установки зависимостей /proc не смонтирован,
и %post скрипты отрабатывают с ошибкой.

Следствие: /proc нужно монтировать до установки в chroot пакетов.

Это вылезло недавно, как только я стал собирать с 1.6.0-sun.
В преспективе таких пакетов будет много.
этот баг потенциально блокирует их сборку.
Comment 1 Alexey Gladkov 2008-08-10 23:34:49 MSD
Это не бага. hasher сам ничего не монтирует. Посмотрите /usr/share/doc/hasher-1.3.6/FAQ пункт 4.2.1.
Comment 2 viy 2008-08-11 02:24:11 MSD
Эти все условия у меня выполнены.

 First, you have to configure hasher-priv for the user, to allow
        allowed_mountpoints=/proc

   Second, the package you are going to build should include /proc
   in its build dependencies, e.g.
        BuildPreReq: /proc
   Alternatively, at least one of packages installed to build environment
   should include /proc in its dependencies.
 
   Third, hsh should be run with parameter --mountpoints=/proc.
Comment 3 viy 2008-08-11 02:30:27 MSD
Подчеркну - вы неправильно поняли.

Как раз грабли в том, что 
/proc _монтируется_,
_монтируется_ перед началом _сборки_ пакета, 
а не перед началом установки зависимостей.
В зависмостях зависимостей
requires: /proc  гвоздями прибит!

это видно через ls <hasherdir>/chroot/proc.
пока идет install, там пусто.
как начался rpmbuild -ba,
он смонтирован.
поздно, однако.
Comment 4 viy 2008-09-10 21:57:50 MSD
как с этой проблемой hasher дела?
Comment 5 Dmitry V. Levin 2008-09-11 00:38:27 MSD
(In reply to comment #4)
> как с этой проблемой hasher дела?

Я не готов считать это _проблемой_ hasher.
С момента создания и влоть до совсем недавних пор hasher не монтировал файловые системы во время установки пакетов, поскольку это никому не было нужно.  Видимо, совсем недавно ситуация изменилась, если появились пакеты, которым нужен /proc для выполнения %post-скриптов.  Но hasher этого не умел никогда и не умеет сейчас.

Я подумаю, как это можно реализовать без ущерба для тех сборок, для которых ничего монтировать всё ещё не требуется.
Comment 6 viy 2009-05-06 00:02:06 MSD
эта ошибка проявилась в girar install check.
приводит к частичному блокированию заливки java-пакетов.
Comment 7 redbaron 2009-05-06 10:44:29 MSD
А в чем причина паранои насчет /proc? если он кому-то не нужен, то от того, что его смонтируют ничего же неизменится. Может его просто всегда монтировать и всё?
Comment 8 Dmitry V. Levin 2009-05-07 05:01:30 MSD
(In reply to comment #7)
> А в чем причина паранои насчет /proc? если он кому-то не нужен, то от того, что
> его смонтируют ничего же неизменится. Может его просто всегда монтировать и
> всё?

См. раздел SECURITY в hasher-priv(8).
Comment 9 Dmitry V. Levin 2009-05-07 05:24:59 MSD
(In reply to comment #6)
> эта ошибка проявилась в girar install check.
> приводит к частичному блокированию заливки java-пакетов.

http://git.altlinux.org/people/ldv/packages/?p=hasher.git;a=commit;h=1.3.11-alt1

Для истории и статистики: желание фичи -- это enhancement.
Если кто-то заложился на несуществующую фичу, то это его блокер, а не пакета, в котором этой фичи ещё нет.
Comment 10 nbr 2009-05-07 10:24:19 MSD
А чего ей надо-то, жаве, в /proc? Может ей туда просто статические файлы которые ей нужны подложить? Ну скажем, затарить какой-нибудь работающий proc и выложить?
Comment 11 viy 2009-05-07 13:52:04 MSD
> Для истории и статистики: желание фичи -- это enhancement.
> Если кто-то заложился на несуществующую фичу, то это его блокер, а не пакета, в
> котором этой фичи ещё нет.

install check предполагает, что hsh-install корректно эмулирует 
установку в рабочую систему.

Если /proc не монтируется, install check не корректный 
и дает ложные срабатывания.

Поставлю вопрос проще:
когда я смогу заливать java-пакеты, не рискуя напороться
на ложное срабатывание install check?
Comment 12 Dmitry V. Levin 2009-05-07 14:33:02 MSD
(In reply to comment #11)
> Поставлю вопрос проще:
> когда я смогу заливать java-пакеты, не рискуя напороться
> на ложное срабатывание install check?

Когда угодно.
Comment 13 viy 2009-05-07 16:12:03 MSD
(В ответ на комментарий №12)
> (In reply to comment #11)
> > Поставлю вопрос проще:
> > когда я смогу заливать java-пакеты, не рискуя напороться
> > на ложное срабатывание install check?
> 
> Когда угодно.

Это не шутка? хорошо, тогда заливаю
jradius-1.0.0-alt2_1jpp6.src.rpm
повторно.
Comment 14 Repository Robot 2009-05-07 20:08:42 MSD
hasher-1.3.11-alt1 -> sisyphus:

* Thu May 07 2009 Dmitry V. Levin <ldv@altlinux> 1.3.11-alt1

- hsh-sh-functions.in: Pass --bloat option to genbasedir (Alexey Tourbin).
- hsh-install: Calculate and apply mountpoints (closes: #16645).
Comment 15 viy 2009-05-07 20:20:30 MSD
hurray!
Comment 16 viy 2009-06-09 01:06:15 MSD
hasher-1.3.11-alt1
hasher-priv-1.3.3-alt0.M41.1

Есть еще токость, что вот так работает,
hsh --mountpoints=/proc --ini && hsh-install --mountpoints=/proc jdkgcj

а так
hsh --mountpoints=/proc --ini && hsh-install jdkgcj
не работает -
куча ругани вида
GC Warning: Couldn't read /proc/stat
Couldn't read /proc/self/stat
неплохо было бы запоминать --mountpoints, как это делается для
--apt-config, --with-stuff.
Comment 17 Dmitry V. Levin 2009-06-09 01:24:09 MSD
(In reply to comment #16)
> hasher-1.3.11-alt1
> hasher-priv-1.3.3-alt0.M41.1
> 
> Есть еще токость, что вот так работает,
> hsh --mountpoints=/proc --ini && hsh-install --mountpoints=/proc jdkgcj
> 
> а так
> hsh --mountpoints=/proc --ini && hsh-install jdkgcj
> не работает -

Я обычно делаю в точности наоборот:
hsh --mountpoints=/proc && hsh-install --mountpoints=/proc jdkgcj

Не говоря уже о
known_mountpoints=/proc,/dev/pts
в файле ~/.hasher/config

Так что это уже совсем другой, гораздо менее насущный FR,
хорошо бы оформить его отдельно.
Comment 18 Dmitry V. Levin 2009-06-09 01:24:43 MSD
(In reply to comment #16)
> hasher-1.3.11-alt1
> hasher-priv-1.3.3-alt0.M41.1
> 
> Есть еще токость, что вот так работает,
> hsh --mountpoints=/proc --ini && hsh-install --mountpoints=/proc jdkgcj
> 
> а так
> hsh --mountpoints=/proc --ini && hsh-install jdkgcj
> не работает -

Я обычно делаю в точности наоборот:
hsh --init && hsh-install --mountpoints=/proc jdkgcj

Не говоря уже о
known_mountpoints=/proc,/dev/pts
в файле ~/.hasher/config

Так что это уже совсем другой, гораздо менее насущный FR,
хорошо бы оформить его отдельно.