From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: * X-Spam-Status: No, score=1.7 required=5.0 tests=BAYES_00,FUZZY_XPILL, RCVD_IN_BL_SPAMCOP_NET, RCVD_IN_SORBS_WEB, SPF_PASS autolearn=no version=3.2.5 X-Authenticated: #3271302 X-Provags-ID: V01U2FsdGVkX1/rbeh5izLrIUq2dMrfHdK0HTqB0r1P1fA28B5lTj xQj91E+GHdd+RD To: ALT Linux Sisyphus discussions References: <200907121618.11380.glebus@asd.iao.ru> From: Aleksey Cheusov Date: Sun, 12 Jul 2009 17:44:45 +0300 In-Reply-To: <200907121618.11380.glebus@asd.iao.ru> (Gleb Kulikov's message of "Sun, 12 Jul 2009 16:18:11 +0700") Message-ID: User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.3 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Transfer-Encoding: 8bit X-Y-GMX-Trusted: 0 X-FuHaFi: 0.53 Subject: Re: [sisyphus] mk-configure -- lightweight replacement for GNU autotools X-BeenThere: sisyphus@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Sisyphus discussions List-Id: ALT Linux Sisyphus discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 12 Jul 2009 14:47:39 -0000 Archived-At: List-Archive: List-Post: > В сообщении от [Воскресенье 12 июля 2009 Aleksey Cheusov] написал: >> Мне говорят, я все-таки ошибся со списком рассылки. Отправлю еще >> сюда. Виталий Липатов уже запакетил mk-configure в сизиф. > Если не секрет, в двух словах, чем эта альтернатива лучше scons, например? > Спасибо. Если в двух словах, то mk-configure - это логическое продолжение mk скриптов в BSD системах. Те, кто видел дерево исходников BSD систем (базовые системы, не порты) понимают, о чем я. mk-configure -- развитие тех же идей с добавлением ala autoconf функциональности и кое-чего другого типа замены @полей@ в .in файлах. Но основные идеи следующие: - декларативный способ написания Makefile-ов; - никакой годогенерации; - модули пишутся на bmake и внешних скриптах на POSIX shell + unix tools, естественно никто не запретит использовать другие средства. ----------------- Дальше попробую по пунктам (взято из википедии). * Configuration files are Python scripts, which means that user-written builds have access to a complete general-purpose programming language. Модули mk-configure пишутся на NetBSD make aka bmake + внешние скрипты. Automatic dependency analysis built-in for C, C++ and Fortran. Unlike make, no extra command like "make depend" or "make clean"[1]... Этого в mk-configure нет, но это задача другого уровня -- уровня bmake-а, а он этого не делает. Нужен 'bmake depend'. Хотя можно написать .mk модуль для реализации этой функциональности. Я об этом подумаю... Built-in support for C, C++, D, Java, Fortran, Objective-C, Yacc, Lex, Qt and SWIG, and building TeX and LaTeX documents. Other languages or file types can be supported through user-defined Builders. mk-configure использует в качестве "подложки" pkgsrc mk-files или mk-files имени Simon Gerraty. Это реализовано там: yacc, lex, C, C++, Java, Fortran, Pascal, Modula-2, что-то еще. Есть отдельный модуль для latex, но я не смотрел, что он из себя представляет. Надо глянуть. В чем заключаться поддержка qt и swig я себе не представляю. Скорее, всего это также можно реалиовать в виде модуля для mk-configure. Можно сделать поддержку, скажем, модулей emacs или, например, модуль "а сделай ка мне их этого всего софта deb пакет". Building from central repositories of source code and/or pre-built targets. Этого я не понимаю. bmake - это make. Со всеми вытекающими. Built-in support for fetching source files from SCCS, RCS, CVS, Subversion, BitKeeper and Perforce. Этого нет ни в каком виде и, на мой взгляд, не должно быть. Это совершенно другая задача. Built-in support for Microsoft Visual Studio .NET and past Visual Studio versions, including generation of .dsp, .dsw, .sln and .vcproj files. Этого нет, как нет НИКАКОЙ кодогенерации. Меня виндоуз как плдатформа не интересует. Кому нужен виндоуз, пусть использует cygwin или Interix и оттуда строит нативные виндозные библиотеки и приложения. Поддержка кросскомпиляции тоже есть (то есть нет ничего, что ее ломало бы), пока не идеальная, но я над этим работаю. Detection of file content changes using MD5 signatures; optional, configurable support for traditional timestamps. Это задача не уровня mk-configure. Это задача bmake-а и он этого не делает. Возможно, когда-нибудь научится. Support for parallel builds which keeps the specified number of jobs running simultaneously regardless of directory hierarchy. Это опять задача bmake-а и он это умеет больше 15 лет. Хотя "regardless of directory hierarchy" нет. Стандартный модуль "mkc.subdir.mk" имеет ограничения. Возможно написать другой, с более тонкими зависимостями между подпроектами-подкаталогами. Integrated Autoconf-like support for finding #include files, libraries, functions and typedefs. mk-configure умеет: определять наличие декларации типов, переменных, функций, полей структур, дефайнов, наличие реализации функций в библиотеках, определять размеры типов. Добавлю еще поддержку структур. В следующей версии добавлю custom тесты с запуском приложения и без него. В ближайшее время добавлю проверку endianess. Global view of all dependencies, so multiple build passes or reordering targets is not required. Я не понимаю, о чем это. Ability to share built files in a cache to speed up multiple builds - like ccache but for any type of target file, not just C/C++ compilation. Это не задача mk-configure. Это задача ccache и подобных инструментов. Естественно, их можно использовать и с mk-configure тоже. Designed from the ground up for cross-platform builds, and known to work on Linux, other POSIX systems (including AIX, *BSD systems, HP-UX, IRIX and Solaris), Windows NT, Mac OS X, and OS/2. mk-configure работает на: NetBSD, Linux, FreeBSD, Solaris, DragonFlyBSD. У меня нет доступа к другим платформ. Если у кого есть, буду весьма признателен за тесты (bmake test). С удовольствием протестировал бы на HP-UX, QNX, Irix и прочих AIX-ах. Пришу в подарок shell account :-) На данный момент нет поддержки libtool, поэтому есть проблемы с Darwin в плане создания динамических библиотек. Поддержку libtool планирую добавиь. Другой вариант -- пинать авторов mk-files (NetBSD-шники), который ха это отвечает. Это реализовано там. ----------------- Вроде в двух словах так. Но я не сравнивал очень подробно со всеми всеми всеми... В тарболе есть примеры использования. По моему они вполне наглядны. Разницу можно увидеть. -- Best regards, Aleksey Cheusov.