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 23:02:22 +0300 Message-ID: <s93fxd14qlt.fsf@chen.chizhovka.net> (raw) In-Reply-To: <20090712185734.GA19410@mw.office.seiros.ru> =?koi8-r?B?KCLk?= =?koi8-r?B?xc7J0yDzzcnSzs/XIidz?= message of "Sun, 12 Jul 2009 22:57:34 +0400") AC>> Как раз наоборот. AC>> bmake PREFIX=/usr/pkg MANDIR=/some/where/man AC>> по сути своей ничем не отличется от AC>> ./configure --prefix=/usr/pkg --mandir=/some/where/man AC>> Не вижу необходимости плодить сущности без необходимости. AC>> Опции не нужны. На самом деле хватает указания значений переменных AC>> make-а. AC>> Опции же типа ./configure --lalala-includedir=yyy --lalala-libdir=yyy AC>> я считаю, эм... скажем так, весьма сомнительным дизайнерским решением. > Простой пример -- libgsm у нас и в некоторых других дистрибутивах > находится в разных includedir. Вопрос -- как решается эта проблема? Я пока не понял, в чем именно заключается проблема. В том, что каталогов с инклюдами и библиотеками больше одного? Это не проблема. LDFLAGS='-Ldir -Ldir2' CPPFLAGS='-Idir1 -Idir2' ./configure make Точно также, только короче на одну команду делается в mk-configure LDFLAGS='-Ldir -Ldir2' CPPFLAGS='-Idir1 -Idir2' bmake Для этого не нужны опции --foo-includedir и --bar-includedir. Это просто лишний, ничего не добавляющий к функциональности, код (жир). > autotools позволяют создать configure который автоматически обнаружит эту > библиотеку. Проблема в том, что autotool не должен ИСКАТЬ библиотеку с которой приложение может затребовать. autotools должен ОБНАРУЖИТЬ библиотеку там и только там, где указал тот, кто приложение собирает. То есть логика configure.ac, который работает примерно так "а дайте ка я посмотрю в каталоге /usr/local/include, может я там найду что-нибудь полезное", в корне ошибочна и вызывает огромные проблемы при сборке софта на платформах и хостах, отличных от той, на которой софт разрабатывался. Именно такую логику я называю "сверхестественным недоинтеллектом". Это одна из распространенных ошибок писателей на autotools -- слишком велик соблазн дернуть за какую-нибудь ручку. Их слишком много (shell для настройки проекта -- это примерно как граната у обезьяны в руках). Во избежание неправильного понимания повторю: configure.ac должен искать заголовки и библиотеки только в системных каталогах и там, куда указывают LDFLAGS и CPPFLAGS/CFLAGS. Всё. Заглядывать в /usr/X11R999/{include,lib}, /usr/local/{include,lib}, /opt/application/{include,lib} -- категорически неправильно. Собирающий софт человек знает свою платформу и хост гораздо лучше автора приложения в подавляющем большинстве случаев. Пример: есть одно старое древнее приложение xsokoban, которое я собирал для pkgsrc. http://www.cs.cornell.edu/andru/xsokoban.html Его чудовищный configure.ac может наблюдать каждый, скачав тарбол. Здесь можно видеть, что мне пришлось с ним сделать (кастрировать, по-другому не назовешь), чтобы привести его в чувство. http://pkgsrc-wip.cvs.sourceforge.net/viewvc/pkgsrc-wip/wip/xsokoban/patches/patch-ab?hideattic=0&revision=1.1.1.1&view=markup Обратить внимание на удаленную секцию про поиски libXpm. AC>> bmake USE_EXTERNAL_LIBX=1 USE_LOCALLIBY=1 AC>> Не вижу никаких принципиальных отличий от опций ./configure. AC>> Построение же приложения с или без каких-то библиотек в зависимости от AC>> их наличия -- натуральное зло, об этом знает каждый пакетировщик. > Если делается приложение которое предназначено только для опакечивание -- > это так. Увы, не всегда это правило верно. К примеру Asterisk подавляющее > большинство пользователей собирают сами, увы. При этом в нем несколько > десятков модулей, и для некоторых из них нужны сторонние библиотеки. И > многие из этих модулей большинству пользователей не нужны. Скажем так. В настоящее время большинство программ поступают к конечному пользователю в виде уже готового пакета в его родной системе. И среди программистов и среди админов в последнее время распранен такой подход: "если программы нет в моей системе, значит это она мне не нужна". Это говорит о том, расстояние между автором и конечным пользвателем из года в год увеличивается. Лично я не вижу смысла заботиться о постоянно уменьшающейся доле пользователей, собирающих софт руками, оправдывая этой заботой нарушение правильного подхода к настройке и сборке софта, то есть нарушением нормального дизайна. AC>> На мой взгляд этот уровень не нужен, как не нужен сам ./configure. > Вы пробовали написать приложение, которое бы: > а) пользовалось большим количеством сторонних библиотек; Нет. Любой дурак может написать большое приложение. Попробуй написать маленькое ;-) У меня довольно много проектов в open source, и все они невелики по объему исходного кода. Много сторонних библиотек я тоже не использую. > б) использовало бы некоторые ОС-специфичные функции (к примеру системные > вызовы); Да. Например dictd, древняя версия которого есть в репозитории ALT Linux. Есть и другие. > в) собиралось бы под хотя бы 2-3 разных ОС; Естественно. dictd, runawk, paexec... > г) собиралось бы под несколько аппаратных архитектур (с учетом того что > некоторые типы данных в C на этих архитектурах имеют разный размер в > байтах) Само собой. Примеры те же. Почти все, что мной создано. Я тестирую свой софт на всех ОС и любом железе, которое мне доступно. В данный момент это NetBSD, Linux, FreeBSD, Solaris, Darwin. По железу: alpha,x86,x86-64. Периодически "проскакивает" другое железо. Список проектов можно найти на {sourceforge,freshmeat}.net и в репозитории pkgsrc-wip (там pkgsrc специфичные проекты, например распределенная, устойчивая к сбоям система пакетной сборки (bulk builder) для пакетов pkgsrc, примерный аналог вашего hasher-а). > Я понимаю зачем может быть полезен некоторый уровень абстракции _над_ > autotools. Понимаю что у autotools есть много недостатков. Но не понимаю > зачем нужна система которая позволяет _меньше_ чем autotools. Я был бы весьма признателен за список того, чего не хватает в mk-configure. На данный момент реализованы в полном объеме все возможности, необходимые в 95% случаев. Напомню, проекту 4 месаца. Менее критичные вещи я отложил "на потом". Одним словом проект развивается и не стоит на месте, например, только что сделал я поддержку custom тестов (a la AC_TRY_COMPILE). Но начинается любой проект с концепции... Зачем я сюда и пришел. Выслушать "фи" насчет идеологии и, приняв к сведению, учесть при разработке. -- Best regards, Aleksey Cheusov.
next prev parent reply other threads:[~2009-07-12 20:02 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 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 [this message] 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=s93fxd14qlt.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