Wednesday, October 28, 2009

SparkBuild, GNU make and Tcl

Eric Melski из Электрической Тучи, вчера написал об утилите, которая подменяет собою gmake и генерирует (в процессе сборки) XML файл, в котором можно потом обнаружить всякую интересную статистику.

Утилита называется SparkBuild и она бесплатна. Не open source, но ее можно свободно использовать для коммерческих проектов.

SparkBuild состоит из 2-х главных компонентов:

  • emake, который (как обещают) и есть drop-in замена GNU Make.
  • sbinsight, который парсит output из emake и рисует графики, таблички и проч.

emake написана на C++ и Boost; sbinsight--это Tcl/Tk 8.5+ (симпатичные виджеты из 8.5 выдают себя моментально). Как используется Тикль в sbinsight--вопрос интересный. Судя по наличию tclKitInit и Mk4tcl в потрохах скомпилированного sbinsight, это разновидность Starpack'а.

В качестве теста, я попробовал собрать Texinfo 4.13 с помощью SparkBuild. Хотя последний распространяется только для Windows и лайнукса, у меня все чудесно заработало на FreeBSD 7.2 и:

% pkg_info | grep ^linux
linux-f8-expat-2.0.1_1 Linux/i386 binary port of Expat XML-parsing library (Linux
linux-f8-fontconfig-2.4.2_1 An XML-based font configuration API for X Windows (Linux Fe
linux-f8-xorg-libs-7.3_3 Xorg libraries (Linux Fedora 8)
linux_base-f8-8_11  Base set of packages needed in Linux mode (for i386/amd64)

Итак.

% pwd
/home/alex/ports/texinfo
% make configure
[...]

% cd work/texinfo-4.13

Теперь наступает самое интересное. Вместо пускания gmake, набираем:

% emake --emake-annodetail=basic,waiting,env | tee anno.xml

И вместо привычного make output, на stdout вылазит гора XML'а, и после конца сборки у нас появляется файл:

% ls -l anno.xml
-rw-r--r--  1 alex  wheel  367670 Oct 28 15:22 anno.xml

Желаю вам успеха в его чтении глазами. В поставке SparkBuild есть Tcl-утилитка anno2log, которая выковыривает из anno.xml то, что писал бы на stdout gmake. То есть, в теории, можно пустить emake вот так:

% emake --emake-annodetail=basic,waiting,env | tee anno.xml | anno2log

На практике, текущая версия anno2log буферизирует stdout, поэтому результат видно только по окончанию сборки.

Чтобы полюбоваться на статистику (то, ради чего), печатаем:

% sbinsight anno.xml &
24 KB

Информация о конкретной target:

7 KB

График симуляции сборки texinfo на кластере:

3 KB

Кластерная сборка, естественно и к несчастью, в SparkBuild не входит, потому что она есть главный продукт Электрической Тучи имени Джона Остераута.

2 comments:

  1. Здравствуйте Александр,

    От всей Тучи благодарим вас за хороший отзыв :-)
    Будучи единственным русскоговорящим существом в Electric Cloud я его перевела остальным сотрудникам - они радуются.
    Ещё раз большое спасибо!

    С уважением,
    Алла Тумаркина

    Alla Tumarkin | Support Engineer | Electric Cloud
    (408) 419-4375 | atumarkin@electric-cloud.com

    ReplyDelete