Bug 14885 - %_tmppath requires canonical path
: %_tmppath requires canonical path
Status: NEW
: Sisyphus
(All bugs in Sisyphus/rpm-build)
: unstable
: all Linux
: P2 minor
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2008-03-13 09:54 by
Modified: 2012-02-24 15:13 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2008-03-13 09:54:21
начиная с версии * Вск Фев 24 2008 Alexey Tourbin <at@> 4.0.4-alt87,
- functions (ValidateBuildRoot): require RPM_BUILD_ROOT path be canonical

Комментарии:
> Ну, в двух словах, появляется две
> сущности - RPM_BUILD_ROOT и канонический путь к RPM_BUILD_ROOT.
> В скриптах поиска зависимостей приходится всё время учитывать эти
> варианты.  Например, представьте, что хочется узнать realpath какого-то
> файла под RPM_BUILD_ROOT.

Хорошо, я согласен с обоснованием. Но я не согласен с решением. Можно сделать
так (не углубляясь в подробности реализации):
1. В самом начале работы rpmbuild сделать преобразование в канонический путь.
2. Использовать дальше везде преобразованный.

Steps to Reproduce:
1. rpmbuild -bb X.spec

Actual Results:  
find-lang: ERROR: non-canonical  
RPM_BUILD_ROOT=/home/ildar/tmp/RPM/gq-buildroot  
real_buildroot=/var/tmp/RPM/gq-buildroot
ошибка: Неверный код возврата из /home/ildar/tmp/RPM/rpm-tmp.92244  
(%install)
Ошибки сборки пакетов:
    Неверный код возврата из /home/ildar/tmp/RPM/rpm-tmp.92244  
(%install)
------- Comment #1 From 2012-02-24 15:13:25 -------
Да, некоторое время назад сделал

$ ln -s "$TMPDIR" ~/tmp -v
«/home/imz/tmp» -> «/tmp/.private/imz»
$ 

(до этого ~/tmp/ вообще не было, а какая-то программа его захотела)
и натолкнулся на эту проблему со сборкой.

Я тогда просто удлалил ~/tmp/ в надежде, что rpm-build-4.0.4-alt100.46 будет
использовать $TMPDIR (см. совет ниже; я предполагал, что м.б. он зашит в
rpm-build теперь), а он на самом деле просто сам создал директорию ~/tmp/ ...

Был ещё такой совет --
http://lists.altlinux.org/pipermail/devel/2008-March/152507.html :

Выставить канонический шаблон для %buildroot в ~/.rpmmacros.
Точнее, сам шаблон для %buildroot лучше не трогать, а просто
выставить канонический %_tmppath.

У меня написано:
%_tmppath       /tmp/.private/at

Если нет желания привязываться к логину, то можно написать
%_tmppath    %(echo ${TMPDIR:-/tmp})