ALT Linux Sisyphus discussions
 help / color / mirror / Atom feed
From: Aleksey Cheusov <vle@gmx.net>
To: ALT Linux Sisyphus discussions <sisyphus@lists.altlinux.org>
Subject: Re: [sisyphus] mk-configure -- lightweight replacement for GNU autotools
Date: Sun, 12 Jul 2009 17:44:45 +0300
Message-ID: <s931vomyn8i.fsf@chen.chizhovka.net> (raw)
In-Reply-To: <200907121618.11380.glebus@asd.iao.ru> (Gleb Kulikov's message of "Sun, 12 Jul 2009 16:18:11 +0700")

> В сообщении от [Воскресенье 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.


  reply	other threads:[~2009-07-12 14:44 UTC|newest]

Thread overview: 70+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-12  5:53 Aleksey Cheusov
2009-07-12  9:18 ` Gleb Kulikov
2009-07-12 14:44   ` Aleksey Cheusov [this message]
2009-07-12 17:18     ` Gleb Kulikov
2009-07-12 17:37       ` Aleksey Cheusov
2009-07-16 10:52         ` Gleb Kulikov
2009-07-12 22:13     ` Mikhail Yakshin
2009-07-13 19:56       ` Aleksey Cheusov
2009-07-13 21:02         ` Led
2009-07-13 21:18           ` Aleksey Cheusov
2009-07-14  1:49         ` [sisyphus] [JT] " Pavel N. Solovyov
2009-07-14  5:22           ` Afanasov Dmitry
2009-07-14  6:21             ` Aleksey Cheusov
2009-07-14 23:13         ` [sisyphus] " Mikhail Yakshin
2009-07-15 19:23           ` Aleksey Cheusov
2009-07-15 19:41             ` Vitaly Kuznetsov
2009-07-15 19:53               ` Aleksey Cheusov
2009-07-12 12:03 ` Alexey I. Froloff
2009-07-12 12:07 ` Alexey Gladkov
2009-07-12 13:48   ` Aleksey Cheusov
2009-07-12 14:52     ` Alexey Gladkov
2009-07-12 15:15       ` Aleksey Cheusov
2009-07-12 18:57         ` Денис Смирнов
2009-07-12 20:02           ` Aleksey Cheusov
2009-07-12 20:31             ` Alexey I. Froloff
2009-07-12 20:41               ` Aleksey Cheusov
2009-07-12 20:49                 ` Alexey I. Froloff
2009-07-12 21:00                   ` Aleksey Cheusov
2009-07-12 21:03                     ` Aleksey Cheusov
2009-07-12 22:17                     ` Alexey I. Froloff
2009-07-13 20:03                       ` Aleksey Cheusov
2009-07-13 20:54                         ` Alexey I. Froloff
2009-07-13 21:06                           ` Aleksey Cheusov
2009-07-13 21:12                             ` Alexey I. Froloff
2009-07-13 21:23                               ` Aleksey Cheusov
2009-07-13 21:43                                 ` Alexey I. Froloff
2009-07-12 21:27             ` Alexey Rusakov
2009-07-12 21:36               ` Alexey I. Froloff
2009-07-12 22:29               ` Aleksey Cheusov
2009-07-12 23:04                 ` Alexey I. Froloff
2009-07-13  5:26                 ` Alexey Rusakov
2009-07-13  6:05             ` Денис Смирнов
2009-07-13  8:26               ` Afanasov Dmitry
2009-07-13 17:54                 ` Денис Смирнов
2009-07-13 20:20               ` Aleksey Cheusov
2009-07-13 20:52                 ` Alexey I. Froloff
2009-07-13 21:06                   ` Aleksey Cheusov
2009-07-13 21:39                     ` Alexey I. Froloff
2009-07-13 19:43         ` [sisyphus] mk-configure: args vs options Dmitry V. Levin
2009-07-13 20:28           ` Aleksey Cheusov
2009-07-13 20:40             ` Dmitry V. Levin
2009-07-12 16:06 ` [sisyphus] mk-configure -- lightweight replacement for GNU autotools Led
2009-07-12 16:18   ` Aleksey Cheusov
2009-07-12 16:28     ` Led
2009-07-13 20:36 ` Dmitry V. Levin
2009-07-13 20:56   ` Aleksey Cheusov
2009-07-13 21:29     ` Dmitry V. Levin
2009-07-14  6:37       ` Aleksey Cheusov
2009-07-14  6:53         ` Afanasov Dmitry
2009-07-14 18:25           ` Aleksey Cheusov
2009-07-14 18:32             ` Led
2010-06-12 14:56 ` Aleksey Cheusov
2010-06-15  3:25   ` REAL
2010-06-15  6:05     ` Aleksey Cheusov
2010-06-15  5:29       ` REAL
2010-06-15  7:19         ` Slava Semushin
2010-06-15  7:22         ` Aleksey Cheusov
2010-06-15  7:03           ` REAL
2010-06-15  7:52           ` REAL
2010-06-15  9:39             ` Aleksey Cheusov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=s931vomyn8i.fsf@chen.chizhovka.net \
    --to=vle@gmx.net \
    --cc=sisyphus@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Sisyphus discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/sisyphus/0 sisyphus/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 sisyphus sisyphus/ http://lore.altlinux.org/sisyphus \
		sisyphus@altlinux.ru sisyphus@altlinux.org sisyphus@lists.altlinux.org sisyphus@lists.altlinux.ru sisyphus@lists.altlinux.com sisyphus@linuxteam.iplabs.ru sisyphus@list.linux-os.ru
	public-inbox-index sisyphus

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.sisyphus


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git