[docs] Re: on makefiles
Vitaly Ostanin
vyt на vzljot.ru
Пн Сен 29 11:15:33 MSD 2003
On Fri, 26 Sep 2003 23:06:16 +0400
Oleg A.Paraschenko <olpa на xmlhack.ru> wrote:
> Всем привет,
>
> при дальнейшем изучении make-файлов мне показалось, что
> ответы на вопросы теряются в рассылке. Глядя на код, я смутно
> вспоминаю, что видел его обсуждение в рассылке, но копаться в
> архивах нет никакого желания.
>
> Поэтому предлагаю завести что-нибудь простое для
> упорядочивания "коллективного знания", хотя бы, например,
> какой-нибудь WiKi. И это даже не предложение, а утверждение,
> которое вскоре получит default owner продукта "4. Docs"
> багзиллы.
Я не видел ни одного wiki, который бы упорядочивал информацию.
Лучше задавать такие конкретные вопросы и вешать на них баги,
чтобы не забывали добавлять в документы.
В данном конретном случае устарела моя дока.
> В частности, эта система позволит улучшить комментарии. Они
> достаточно хорошие, но описывают только что и как сделано, но
> не объясняют, зачем.
Да, это действительно неудобно. Когда читаешь специ w3c, тоже
возникает вопрос "а зачем?".
Логику Makefiles можно также описывать в docbook.
> Эту проблему решает ссылка на страницу с
> пояснениями, почему это сделано так а не иначе, какие мнения
> были, на какие жертвы пришлось пойти и т.д.
<skipped/>
> > Однако делать кеширование tuned-файлов (IMHO) пока рано -
> > сначала нужно сделать работающую поддержку profiling:
> > http://docbook.sourceforge.net/release/xsl/current/doc/tools/profiling.html
>
> А что, есть проблемы? В этом документе говорится: <quote>If
> you are using XSL stylesheets version 1.50 and later with
> EXSLT enabled XSLT processor (Saxon, xsltproc, Xalan) you can
> do profiling and transformation to HTML or FO in a single
> step.</quote> Так что profiling можно делать на этапе
> преобразования из docbook.
xsltproc не поддерживает single pass profiling, т.к. реализует
ровно ту функциональность, которая описана в
http://www.exslt.org/exsl/functions/node-set/index.html
В стилях docbook с какого-то момента для обработки ссылок стали
использовать key() вместо id(). Логика ключей в exsl:node-set()
не определена и в xsltproc не работает.
В рассылке
xsl-list на lists.mulberrytech.com
предлагали дополнить определение exsl:node-set() на эту тему, был
сделан запрос на exsl.org, но результата почему-то нет.
То, что в saxon ключи внутри переменных работают, является
дополнением saxon.
Я добавлю в docs-howto информацию об этом со ссылками на
обсуждения (надо поискать в архивах).
> > Уже как-то был разговор о том, что нужно в печатную версию
> > включать урезанный вариант документации. Поэтому
> > tuned-документы могут отличаться для печатного и html-вывода.
> >
> > Кроме урезания документации tuning может быть разным из-за
> > разных параметров прореживания одинаковых <ulink/>, удаления
> > <revhistory/> и т.п.
>
> Почему это пришлось поместить в tuning, а не в stylesheet
> customization, я спрошу потом.
Уже сейчас могу сказать, что из-за потребности в прореживании в
разных выводах.
> > А поддержку profiling в Makefile до сих пор не сделали,
> > потому что она пока никому серьёзно не понадобилась (есть мой
> > древний вариант для psi, но он не гибкий).
>
> Значит, и не надо делать.
В будущем точно понадобится. Точнее, он уже сейчас нужен, но пока
не настолько, чтобы им заняться.
<skipped/>
> > > но предусмотреть что-нибудь типа
> > >
> > > $ make CACHETUNED=true <target>
> > >
> > > не помешало бы. Кому-нибудь ещё это надо?
> >
> > Если Вы это сделаете, можно закоммитить.
>
> Сделал. Однако, permission denied, поэтому коммит будет через
> багзиллу и default owner.
Можно патч сюда прислать, или выложить на web, если размер письма
больше 40Kb.
> > Однако:
> >
> > - Ваша схема может быть сломана при создании схемы profiling.
>
> Я думаю, что в следующей версии make-файлов будет сломано
> много чего.
Скорее всего :)
> > - в make нет кеширования, он смотрит на даты изменения
> > source и destination файлов.
>
> А сейчас он ни на что не смотрит.
>
> > Сейчас source/destination
> > (шаблонная) сборка в cvs docs используется только для
> > website.
> >
> > - tuned-сборка занимает много времени только на больших
> > документах, которые мало кто собирает, да и то не часто.
>
> И действительно. Просто после прочтения архива я решил, что
> все эксперименты надо проводить на "admin.xml".
>
> В любом случае, меня расстраивает использование make-файлов
> как урезанных bash-скриптов.
Чтобы использовать его возможности отслеживания зависимостей
сборки, нужно обрабатывать исходные документы в поиске этих
зависимостей, как Вы и предлагаете.
Но в слабо контролируемом сборщиком исходном дереве на практике
перед сборкой найденные зависимости будут удаляться и их сборка
будет запускаться по новой. В этом случае экономии времени на
сборке может и не быть.
> > > Теперь про basename == dirname. В данный момент имя файла
> > > для генерации должно совпадать с именем папки, в которой
> > > он лежит. Это принципиальное решение или просто так
> > > получилось?
> >
> > И историческое, и принципиальное. Исторически это было
> > сделано для включения не через XInclude, а через SGML entity,
> > а принципиально из-за того, что документ может состоять из
> > нескольких XML-файлов в одном каталоге (например, docs-howto)
> > и нужно как-то определять, кого из них собирать.
>
> В таком случае можно указать список входных файлов явно.
Зачем? Чем мешает обязательное совпадение имени документа с
каталогом? Тех. редактору даже удобно - зашёл в каталог и сразу
видно, кто тут главный XML :)
<skipped/>
> > > $ make fo
> > >
> > > обработает все xml-файлы в текущей папке.
> >
> > Зачем? В cvs каждый документ должен быть в отдельном
> > подкаталоге, его одного и нужно собирать.
>
> Такое ограничение мне кажется неочевидным и достаточно
> искусственным.
Агрументы "за" я приводил. Аргументы "против" ?
> > > Кстати, мне кажется, что наши make-файлы надо называть не
> > > "Makefile", а "GNUmakefile".
> >
> > Если есть веские причины переименовать, давайте переименуем.
>
> Веских причин нет, просто мне показалось, что make от bsd
> откажется работать с такими файлами.
Я знаю пример использования наших Makefiles на freebsd, насколько
я знаю - успешный. Правда, gnu make на win32 с такими файлами
отказывается работать, но это проблемы win32 и bsd :)
<skipped/>
--
Regards, Vyt
mailto: vyt на vzljot.ru
JID: vyt на vzljot.ru
----------- следущая часть -----------
Было удалено вложение не в текстовом формате...
Имя : отсутствует
Тип : application/pgp-signature
Размер : 189 байтов
Описание: отсутствует
Url : /pipermail/docs/attachments/20030929/cbecbbd2/attachment.bin
Подробная информация о списке рассылки docs