SpecTips/doc

Материал из ALT Linux Wiki
< SpecTips
Версия от 13:51, 19 октября 2008; MichaelShigorin (обсуждение | вклад) (init :[)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
42px-Wikitext-ru.svg.png
Эту статью следует викифицировать.
On Thu, Oct 16, 2008 at 04:02:00PM +0400, Vitaly Ostanin wrote:
> Обнаружил, что при наличии в спеке в %files 
> такой строки
> %doc %_defaultdocdir/%name-%version
> 
> пакет не собирается со странными 
> сообщениями:
> 
> Wrote: /usr/src/RPM/SRPMS/heartbeat-2.1.3-alt1.src.rpm
> error: create archive failed on file 
> /usr/src/tmp/heartbeat-buildroot/usr/share/doc/heartbeat-2.1.3/AUTHORS: 
> cpio: open failed - Bad file descriptor
> 
> RPM build errors:
>     File listed twice: /etc/ha.d/resource.d/ldirectord
>     File listed twice: /usr/lib/ocf/resource.d/heartbeat/ldirectord
>     File listed twice: /usr/share/doc/heartbeat-2.1.3
> 
> Если эту строку удалить, то пакет 
> собирается нормально.

Нельзя одновременно использовать
%doc <абсолютный-путь-в-дефолтном-каталоге>
%doc <относительный-путь>

Это связано с тем, что, когда выполняется %doc второго вида,
то дефолтный каталог сначала удаляется, потом заново создаётся,
и в него копируются <относительные-пути>.

%build
touch Changes
%install
install -pD -m644 /dev/null %buildroot%_docdir/%name-%version/README
%files
%doc %_docdir/%name-%version
%doc Changes

Когда "%doc Changes" будет исполнен, то он "затрёт" README.

Executing(%doc): /bin/sh -e /tmp/.private/at/rpm-tmp.96021
+ umask 022
+ /bin/mkdir -p /tmp/.private/at/BUILD
+ cd /tmp/.private/at/BUILD
+ DOCDIR=/tmp/.private/at/test-buildroot/usr/share/doc/test-0
+ export DOCDIR
+ rm -rf /tmp/.private/at/test-buildroot/usr/share/doc/test-0
+ /bin/mkdir -p /tmp/.private/at/test-buildroot/usr/share/doc/test-0
+ cp -prL Changes /tmp/.private/at/test-buildroot/usr/share/doc/test-0
+ chmod -R go-w /tmp/.private/at/test-buildroot/usr/share/doc/test-0
+ chmod -R a+rX /tmp/.private/at/test-buildroot/usr/share/doc/test-0
+ exit 0