Вход:  Пароль:  
FreeSource: AltLinux/Sisyphus/devel/hasher ...
Free Source | Каталог | Изменения | НовыеКомментарии | Пользователи | Регистрация |
Эта страница была перенесена на altlinux.org. Текст на freesource.info заморожен.

hasher

Инструмент для сборки src.rpm в «чистом» окружении, установленном из заданных в sources.list репозиториев пакетов (базовая сборочная система + развёрнутые BuildRequires собираемого пакета).


Описан в статье на FreeSource wiki; см. тж. hasher(3), hsh(1) и документацию пакета.

Монтирование /proc и др.

(которое для incoming регулируется при помощи BuildRequires: /proc)

> > > Из-за чего такое может быть? Команда: "hsh ~/Work/Repo <пакет>", до
> > > этого собирал в hasher – проблем не было.
> > добавьте --mountpoints=/proc
> А почему не берётся информация из .spec?
это уже обсуждалось. 
hasher не смотрит спек. его смотрит робот и пускает с этим параметром хашер. 
у себя на рабочей машине вы выступаете в качестве робота :)

Что касатеся монтирования при сборке пакетов hasher'ом.
Согласно hsh(1), "--mountpoints=LIST  Defines list of known mount points.
Every build dependence which belongs to this list will be mounted."

Другими словами, srpm-пакет с помощью сборочных зависимостей и зависимостей,
установленных в сборочную среду пакетов, говорит, что ему нужно монтировать,
а hsh --mountpoints=LIST определяет, что можно монтировать.
В результате будет смонтировано пересечение этих двух множеств.

Таким образом, если вы готовы для любой сборки разрешить монтировать любой
ресурс (из разрешённых системным администратором), то достаточно добавить
known_mountpoints=comma-separated-list-of-known-mount-points
в ~/.hasher/config

Заметьте, всё вышесказанное непосредственно следует из hsh(1)/hsh-rebuild(1)
и касается как самой утилиты hsh, так и утилиты hsh-rebuild.

У hsh-run/hsh-shell тоже есть ключ --mountpoints=LIST, но его семантика
отличается от одноимённого ключа hsh/hsh-rebuild, а именно LIST там определяет
список точек монтирования, которые должны быть смонтированы.

ldv@

> Как мне помнится, всегда указывать --mountpoints=/proc было 
> нежелательно, потому что это требует соотв. записи в
> /etc/hasher-priv/fstab,
> которой может и не быть.

С одной стороны, /etc/hasher-priv/fstab "может не быть" только если его удалил
администратор системы.  С другой стороны, hasher-priv mount обучен
монтировать /dev/pts, /proc и /sys, так что гипотетическое отсутствие файла
/etc/hasher-priv/fstab (который нынче поставляется пустым) на монтирование
/proc не влияет.

Указывать hsh --mountpoints=/proc противопоказано только если /proc нет в списке
allowed_mountpoints, в противном случае это зависит от политики
безопасности, а не от содержимого spec-файла.

Сборочные зависимости будут удовлетворены если и только если
!required || allowed&&known&&required.

Т.е. если у пакета нет сборочной зависимости (прямой или косвенной) на /proc,
то этот пакет будет отправлен на сборку без монтирования /proc вне зависимости
от присутствия /proc в allowed_mountpoints и hsh --mountpoints=;
а если у пакета есть сборочная зависимость на /proc, то этот пакет будет
отправлен на сборку со смонтированным /proc только если /proc присутствует
и в allowed_mountpoints, и в hsh --mountpoints= (последний определяет
переменную known_mountpoints, которую можно указать в ~/.hasher/config).

ldv@

BuildPreReq vs BuildRequires(pre)

Requires:

> > Если в req/prov скриптах использовать опцию --verbose, то можно
> > узнать что-нибудь интересное.
> > $ rpm -ql rpm-utils |file -NF$'\t' -f – |/usr/lib/rpm/shell.req.files |/usr/lib/rpm/shell.req -v 2>&1| head
> > shell.req: /usr/bin/add_changelog: cat -> /bin/cat -> ... (via which)
> > shell.req: /usr/bin/add_changelog: /bin/cat -> coreutils (via rpmdb)
> 
> Ой хорошо, сегодня только грепал recoll — где ж он lyx зацепил.
> Кстати, куда кто смотрит, что умудряется вытащить (правильную)
> зависимость на отсутствующий в чруте пакет lyx-qt?

Если собирается хешером, то он смотрит в
$build/cache/contents/contents_index_bin.

Этот contents index как раз нужен, чтобы лучше искать зависимости вопреки
минимальной сборочной среде и в ряде случаев давать более точные
зависимости, напр. зависимость на mutt должна разрешиться в /usr/bin/mutt,
а не в mutt или mutt1.5, т.к. любой из них сгодится.

Кстати я внес много исправлений в find-package (это типа диспетчер, как искать
такого рода зависимости), теперь в ряде "сложных" случаев
результат будет более корректным.  См. commit messages, там есть примеры
с /sbin/ifup, openssl-config, arpsend и vim.

at@

Rebuild

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

Пусть лучше скрипты работают.
В терминологии /usr/share/doc/hasher-*/rebuild-prog.sh,

if egrep -qs '^Build(Requires|PreReq):.*(libpq4|postgresql8)[^-]*-devel' "$specfile"; then
        sed -i -e '/^Build\(Requires\|PreReq\):/ s/libpq4[^-]*-devel/libpq-devel/g;s/postgresql8[^-]*-devel/postgresql-devel/g' "$specfile"
        e='- Fixed postgresql build dependencies.
– Rebuilt due to libpq.so.4 -> libpq.so.5 soname change.'
else
        e='- Rebuilt due to libpq.so.4 -> libpq.so.5 soname change.'
fi

ldv@

Страницы, ссылающиеся на данную: ALTLinux/Sisyphus/devel/mkimage
AltLinux/Releases/22
AltLinux/Sisyphus
AltLinux/Sisyphus/Tools/SisyphusCheck
AltLinux/Sisyphus/devel/mkimage


 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]