[docs] Re: on makefiles

Oleg A.Paraschenko olpa на xmlhack.ru
Пн Сен 29 15:21:24 MSD 2003


  Привет!

On Mon, 29 Sep 2003 11:15:33 +0400
Vitaly Ostanin <vyt на vzljot.ru> wrote:

...
> > 
> >   Поэтому предлагаю завести что-нибудь простое для
> >   упорядочивания "коллективного знания", хотя бы, например,
> >   какой-нибудь WiKi. И это даже не предложение, а утверждение,
> >   которое вскоре получит default owner продукта "4. Docs"
> >   багзиллы.
> 
> Я не видел ни одного wiki, который бы упорядочивал информацию.

  Один точно есть. Только он не публичный.

> Лучше задавать такие конкретные вопросы и вешать на них баги,
> чтобы не забывали добавлять в документы.

  Не всякая информация должна идти в документы. WiKi (под этим подразумевается что угодно) служит своеобразным фильтром и черновиком, в то время как финальный документ -- это выжимка и руководство к действию.

  В качестве примера (первое, что попалось) предлагаю рассмотреть ULINK_LEAVE. Оцените время на описание этого параметра (зачем оно, кто что предложил другого, почему отказались) в виде финального документа, а затем оцените время на то, чтобы накидать копии писем без правки орфографии и пунктуации, а также краткие комментарии на страницу 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.

  Во вложении: Makefile.tuned. 

$ make -n docs-howto.xml-tuned.1
xsltproc --nonet --xinclude --stringparam tag-level1 article  --stringparam tag-level2 section -o docs-howto.xml-tuned.1 \
--param ulink.leave.duplicates.after 1 \
--param revhistory.strip 1 \
../../../xsl/common/tuning.xsl docs-howto.xml
$
$ make CACHETUNED=yes -n docs-howto.xml-tuned.1
make: `docs-howto.xml-tuned.1' не требует обновления.

  Если понравится, то могу взять на себя:

<quote>[Про поддержку profiling в Makefile]
В будущем точно понадобится. Точнее, он уже сейчас нужен, но пока
не настолько, чтобы им заняться.
</quote>

> 
> > > Однако:
> > > 
> > > - Ваша схема может быть сломана при создании схемы profiling.
> > 
> >   Я думаю, что в следующей версии make-файлов будет сломано
> >   много чего.
> 
> Скорее всего :)
> 
> > > - в make нет кеширования, он смотрит на даты изменения
> > >   source и destination файлов.
> > 
> >   А сейчас он ни на что не смотрит.
> > 
> > > Сейчас source/destination
> > >   (шаблонная) сборка в cvs docs используется только для
> > >   website.
> > > 
> > > - tuned-сборка занимает много времени только на больших
> > >   документах, которые мало кто собирает, да и то не часто.
> > 
> >   И действительно. Просто после прочтения архива я решил, что
> >   все эксперименты надо проводить на "admin.xml".
> > 
> >   В любом случае, меня расстраивает использование make-файлов
> >   как урезанных bash-скриптов.
> 
> Чтобы использовать его возможности отслеживания зависимостей
> сборки, нужно обрабатывать исходные документы в поиске этих
> зависимостей, как Вы и предлагаете.
> 
> Но в слабо контролируемом сборщиком исходном дереве на практике
> перед сборкой найденные зависимости будут удаляться и их сборка
> будет запускаться по новой. В этом случае экономии времени на
> сборке может и не быть.

  Да, это верно, экономии времени не будет. Остаётся аргумент из области
"нравится/не нравится". По-моему, после успешного выполнения

$ make target,

  немедленный повторный запуск "make targer" не должен приводить к повторной
сборке. Иначе как-то это некрасиво.

> 
> > > >   Теперь про 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


  Пока!

--
Олег
----------- следущая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : Makefile.tuned
Тип     : application/octet-stream
Размер  : 710 байтов
Описание: отсутствует
Url     : /pipermail/docs/attachments/20030929/8a065548/Makefile.obj


Подробная информация о списке рассылки docs