## page was renamed from Docs/RpmBuildDocs
#language ru
#format mk
> Пакет ^rpm-build-docs^

(/Внимание: на этой странице есть устаревшая информация!/)

Репозиторий исходного кода (git) 

@http://git.altlinux.org/people/kirill/packages/?p=rpm-build-docs.git@

См. также документацию по git, и в первую очередь раздел руководства
по @повседневному использованию|http://www.kernel.org/pub/software/scm/git/docs/everyday.html#Individual Developer (Participant)@

Текущий мантейнер: @KirillMaslinsky|:KirillMaslinsky@

>> Компоненты rpm-build-docs

Все пути указаны для дерева исходных текстов в git.

>>> Генерация и обновление spec-файлов

См. @ТЗ|:Docs/TZ/GenSpec@

>>> Макросы RPM

Основная задача, которые решаются с помощью макросов -- стандартизация спек-файлов, благодаря этому достигается независимость спеков от изменений в политиках сборочной среды; более конкретно, в макросах содержатся:
0 процедура вычисления имени пакета, тарболла, путей размещения файлов на основании Module ID 
0 пути размещения компонентов в файловой системе
0 процедуры сборки модуля/выпуска
0 процедуры установки/удаления модуля/выпуска
0 процедура вычисления зависимостей (при сборке выпуска) (?Подлежит упразднению)

||^rpm/rpm-build-docs^ ||Определения макросов для использования в стандартных  spec-файлах. Документированы прямо в этом файле ||
||^data/docs_genspec/docs-module-template.spec^ ||Шаблон спека модуля, которым пользуется ^docs_genspec^ при начальном создании spec. ||
||^data/docs-issue-template.spec^ ||Шаблон спека выпуска, редактировался вручную. (?Следует реализовать генерацию/обновление спека выпуска при помощи docs_genspec. Скорее всего шаблон спека выпуска потребуется несколько изменить)||

>>> Сборка модулей

Основной процесс сборки HTML из исходных текстов модуля выполняется 
утилитами, которые вызываются в макросе ^%docs_build^
Решаемые здесь задачи: 
0 Выбор и запуск процедуры сборки в HTML в зависимости от исходного формата. 
0 Включение в собранный HTML стандартного навигационного блока и страницы с метаинформацией о документе (docinfo)

||^bin/docinfo2html^ ||Создаёт HTML-страницу со сведениями о документе на основе ^docinfo^ (?Проверить, будет ли работать с docinfo в UTF8, в случае необходимости переписать) ||
||^bin/docsbuild^ ||Сборка из указанного формата в нормализованный HTML-модуль. Запускает сборочный скрипт для данного формата (см. ниже) и ^docs_navigation^ ||
||^data/docsbuild/modules.sh^ ||Выстраивает соответствия имён форматов и сборочных скриптов для них ||
||^data/docsbuild/extras^ ||Особый сборочный скрипт, используется, если для указанного формата нет специального сборочного скрипта. Создаёт HTML-страницу со ссылкой на файл(ы) в исходном формате и кратким пояснением, как его можно открыть. ||
||^data/docsbuild/*^ ||Cборочные скрипты для конкретных форматов (сборка только в HTML) ||
||^bin/docs_navigation^ ||Подставляет (локализованную) стандартную шапку навигации модуля в получившийся после сборки ^index.html^ (?Заменить на подстановку iframe)||
||^data/docs_navigation/*.html^ ||Локализованные шапки навигации модуля (?Заменить на iframe)||

>>> Сборка выпусков 

См. @ТЗ на выпуски|:Docs/TZ/Issue@

При сборке пакета-выпуска выполняется морально устаревшая процедура 
вычисления завимостей на пакеты модулей (см. макрос ^%docs_issue_requires^).
Решаемая задача: 
0 Заполнение ^Requires:^ списком всех _пакетов_ с необходимыми модулями.

||^bin/docs_issue_requires^ ||(?Такая процедура порождает крайне нежелательную _сборочную_ зависимость на все модули, вошедшие в выпуск, она должна быть упразднена. Задачу заполнения Requires следует решать при генерации/обновлении спека средствами docs_genspec) ||

Основная часть процесса создания выпуска из отдельных модулей выполняется процедурами, вызываемыми в макросе ^%docs_issue_build^.
Решаемые здесь задачи: 
0 Определение входящих в модуль выпусков на основе индексной страницы выпуска (?Морально устарело, список предлагается указывать явно в спец. файле тривиального формата)
0 Создание единой навигационной сети выпуска (без копирования модулей)

||^bin/docs_issue.pl^ ||Выполняет обход титульной страницы, создание символьных ссылок для обеспечения навигации. (?Подлежит замене в связи со сменой техно- и идеологии) ||

>>> Установка/удаление модулей

Маросы, выполняющие установку: ^%docs_install_module^, ^%docs_module_postin^
Макрос после удаления: ^%docs_module_postun^
Задачи:
0 копирование файлов куда надо
0 создание ссылок между модулями при отсутствии выпуска, своего рода выпуск по умолчанию. Выполняется скриптом ^docs_mklinks^ из пакета ^docs-utils^, в ^rpm-build-docs^ не входит!

>>> Установка/удаление выпусков

Макросы ^%docs_issue_postin^, ^%docs_issue_postun^

Задача: 
0 Обновление списка установленных выпусков на главной странице. Выполняется скриптом ^alt-docs-genextras^ из пакета @^alt-docs-genextras^|:Docs/Build/AltDocsGenextras@, в ^rpm-build-docs^ не входит!

>> Изменения в процессе сборки документации

В мае 2007 года в пакете rpm-build-docs были сделаны изменения:

. Список зависимостей для выпусков (определяется макросом docs_issue_requires) вычисляется не по установленным пакетам с модулями документации, а прямо по содержимому файла выпуска (ссылки вида \<A HREF="adt:whatis_alt.kirill"/\>). Из такой ссылки будет создана установочная зависимость на пакет docs-whatis_alt-kirill.
. Файлы документации в формате m-k перед сборкой конвертируются в кодировку koi8-r с помощью enca (с указанием русского языка для определения кодировки). Это сделано для обхода @проблем|https://bugzilla.altlinux.org/show_bug.cgi?id=11718@ со сборкой файлов m-k в кодировке utf-8.