SpecTips/doc

Материал из ALT Linux Wiki

< SpecTips(Различия между версиями)
Перейти к: навигация, поиск
м (init :[)
 
(11 промежуточных версий не показаны.)
Строка 1: Строка 1:
-
{{викифицировать}}
+
[[Category:Devel]]
-
<pre>
+
== Использование %doc ==
-
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 <абсолютный-путь-в-%_docdir в %buildroot>
-
%doc <относительный-путь>
+
и
 +
%doc <относительный-путь в каталоге, полученном в %prep>
-
Это связано с тем, что, когда выполняется %doc второго вида,
+
Это является особенностью<ref>http://lists.altlinux.org/pipermail/devel/2008-October/080757.html</ref> реализации RPM: когда выполняется <tt>%doc</tt> второго вида, то каталог <tt>%_docdir</tt> сначала удаляется, потом заново создаётся, и в него копируются файлы, указанные в виде относительных путей. При повторном указании %doc второго вида каталог <tt>%_docdir</tt> не удаляется.
-
то дефолтный каталог сначала удаляется, потом заново создаётся,
+
-
и в него копируются <относительные-пути>.
+
 +
В этом примере в %doc попадут только Changes и AUTHORS, без README:
 +
<pre>
%build
%build
touch Changes
touch Changes
Строка 37: Строка 18:
%doc %_docdir/%name-%version
%doc %_docdir/%name-%version
%doc Changes
%doc Changes
 +
%doc AUTHORS
 +
</pre>
-
Когда "%doc Changes" будет исполнен, то он "затрёт" README.
+
Сборка пакета при этом остановится с ошибкой:
-
 
+
<pre>
-
Executing(%doc): /bin/sh -e /tmp/.private/at/rpm-tmp.96021
+
Wrote: /usr/src/RPM/SRPMS/name-2.1.3-alt1.src.rpm
-
+ umask 022
+
error: create archive failed on file
-
+ /bin/mkdir -p /tmp/.private/at/BUILD
+
/usr/src/tmp/name-buildroot/usr/share/doc/name-2.1.3/README:
-
+ cd /tmp/.private/at/BUILD
+
cpio: open failed - Bad file descriptor
-
+ 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
+
</pre>
</pre>
 +
 +
== Ссылки ==
 +
<references/>
 +
# http://lists.altlinux.org/pipermail/devel/2008-October/080670.html

Текущая версия на 15:05, 19 октября 2008

Использование %doc

В спек-файле нельзя одновременно использовать конструкции

%doc <абсолютный-путь-в-%_docdir в %buildroot>

и

%doc <относительный-путь в каталоге, полученном в %prep>

Это является особенностью[1] реализации RPM: когда выполняется %doc второго вида, то каталог %_docdir сначала удаляется, потом заново создаётся, и в него копируются файлы, указанные в виде относительных путей. При повторном указании %doc второго вида каталог %_docdir не удаляется.

В этом примере в %doc попадут только Changes и AUTHORS, без README:

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

Сборка пакета при этом остановится с ошибкой:

Wrote: /usr/src/RPM/SRPMS/name-2.1.3-alt1.src.rpm
error: create archive failed on file 
/usr/src/tmp/name-buildroot/usr/share/doc/name-2.1.3/README: 
cpio: open failed - Bad file descriptor

Ссылки

  1. http://lists.altlinux.org/pipermail/devel/2008-October/080757.html
  1. http://lists.altlinux.org/pipermail/devel/2008-October/080670.html
 
Личные инструменты