LINUX.ORG.RU
Ответ на: комментарий от slovazap

Ну, например, те кто попродвинутей уже давно на clang и gold. От аппле и гугла, но это не важно.

Не важно. Столлман сошел с ума и устарел.

Нужно быть продвинутым. Не каким-то лузером.

wandrien ★★
() автор топика
Ответ на: комментарий от Harald

Человекочитаемыми должны быть только исходники, откуда configure генерируется

и для превращения которых в запускаемый configure надо помимо sh еще кучу всего. Тогда чем это лучше остальных систем сборок?

cvs-255 ★★★★★
()
Ответ на: комментарий от cvs-255

«куча всего» нужна только разработчикам, конпелирующим пользователям нужны только sh, make и компилятор

Harald ★★★★★
()
Ответ на: комментарий от X512

Это именно достоинство, потому что тьюринг-полнота ломает инкрементальную сборку. Хотите тьюринг-полноту - делайте дополнительные таргеты и запускайте внешние программы/скрипты.

Ну так тьюринг-полнота должна быть на этапе конфигурирования, а не сборки.

Намешают разные слои абстракции в один винегрет, а потом жалуются, что невкусно.

Тот же meson в качестве костылей предлагает вызывать sh-скрипты, если вам нужна, например, поддержка wildcards. Православно-то как!

Загребём все sh-скрипты под капот, а сверху обмажем питоном и облепим красивыми картинами на главной странице гитхаба. С этими модными счётчиками CI-отчётов, лайков и бог знает чего, you know. Красота!

wandrien ★★
() автор топика
Ответ на: комментарий от wandrien

Столлман сошел с ума и устарел.

Он слишком радикален. Где-то он прав, но не везде. Часть его идей не совместимы с общественным устройством и природой человека.

X512 ★★★★★
()
Ответ на: комментарий от Harald

Этих компонентов много, но при этом все они абсолютно прибиты гвоздями к остальным компонентам. Так что это вполне себе огромный, неповоротливый комбайн.

Заявления вида «configure + m4 это система конфигурации, а make это система сборки» - бред. Я могу посмотреть, что там configure наконфигурировал? Нет, нормально это не посмотреть. В отличии от той же связки Kconfig + make, где Kconfig выдает абсолютно читаемый .config, который просто подгружается make, без всякого генерирования makefile с помощью m4

cvs-255 ★★★★★
()
Ответ на: комментарий от cvs-255

и для превращения которых в запускаемый configure надо помимо sh еще кучу всего. Тогда чем это лучше остальных систем сборок?

«Куча всего» состоит из perl и m4 на ОДНОЙ машине – того человека, который готовит релиз сорцов.

А не на КАЖДОЙ машине, где эти сорцы будут собирать.

Сложно усвояемая идея для проприетарных копирастов, которым не верится, что код можно еще и собирать, а не просто скачивать готовый бинарь.

wandrien ★★
() автор топика
Ответ на: комментарий от wandrien

Ну так тьюринг-полнота должна быть на этапе конфигурирования, а не сборки.

Meson умеет переконфигурировать при добавлении новых исходных файлов без сброса инкрементальной сборки. Причём делает это автоматом. make даже распознать изменения Makefile не может.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 2)
Ответ на: комментарий от wandrien

а не просто скачивать готовый бинарь

И ты тут же предлагаешь скачивать готовый configure

cvs-255 ★★★★★
()
Ответ на: комментарий от cvs-255

Я могу посмотреть, что там configure наконфигурировал? Нет, нормально это не посмотреть.

Конечно можешь, он пишет это в stdout, когда ты его запустишь. А ещё более подробно в config.log

Harald ★★★★★
()
Ответ на: комментарий от X512

Он слишком радикален. Где-то он прав, но не везде. Часть его идей не совместимы с общественным устройством и природой человека.

Самооправдания слабаков при виде сильной личности.

Мастер Кодо Саваки тоже «слишком радикален и не совместим с общественным устройством и природой человека», смеясь над этой жалкой «природой», которой человек называет свои слабости.

wandrien ★★
() автор топика
Ответ на: комментарий от Harald

Я не спроста сказал «нормально». stdout не содержит всего, а парсить config.log это так себе удовольствие

Как легко посмотреть, какие переменные будут подставляться в Makefile?

cvs-255 ★★★★★
()
Последнее исправление: cvs-255 (всего исправлений: 1)
Ответ на: комментарий от cvs-255

Я могу посмотреть, что там configure наконфигурировал? Нет, нормально это не посмотреть.

Так сойдёт?

$ cat config.h
/* config.h.  Generated from config.h.in by configure.  */
/* config.h.in.  Generated from configure.ac by autoheader.  */

/* Disable menu related routines */
/* #undef DISABLE_MENU */

/* Disable plugin loading */
/* #undef DISABLE_PLUGINS_LOADING */

/* Define to 1 if translation of program messages to the user's native
   language is requested. */
#define ENABLE_NLS 1

/* Define to the gettext package name. */
#define GETTEXT_PACKAGE "waterline"

/* Define to 1 if you have the <alsa/asoundlib.h> header file. */
#define HAVE_ALSA_ASOUNDLIB_H 1

/* Define to 1 if you have the `bzero' function. */
#define HAVE_BZERO 1

/* Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the
   CoreFoundation framework. */
/* #undef HAVE_CFLOCALECOPYCURRENT */

/* Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in
   the CoreFoundation framework. */
/* #undef HAVE_CFPREFERENCESCOPYAPPVALUE */

/* Define if the GNU dcgettext() function is already present or preinstalled.
   */
#define HAVE_DCGETTEXT 1

/* Define to 1 if you have the declaration of `strmode', and to 0 if you
   don't. */
#define HAVE_DECL_STRMODE 0

/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1

/* Define if the GNU gettext() function is already present or preinstalled. */
#define HAVE_GETTEXT 1

/* Define if you have the iconv() function and it works. */
/* #undef HAVE_ICONV */

/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1

/* Define to 1 if you have the <linux/soundcard.h> header file. */
#define HAVE_LINUX_SOUNDCARD_H 1

/* Define to 1 if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1

/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
   to 0 otherwise. */
#define HAVE_MALLOC 1

/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1

/* Define to 1 if you have the `memset' function. */
#define HAVE_MEMSET 1

/* Define to 1 if you have the `mkdir' function. */
#define HAVE_MKDIR 1

/* Define to 1 if you have the `setlocale' function. */
#define HAVE_SETLOCALE 1

/* Define to 1 if `stat' has the bug that it succeeds when given the
   zero-length file name argument. */
/* #undef HAVE_STAT_EMPTY_STRING_BUG */

/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1

/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1

/* Define to 1 if you have the `strchr' function. */
#define HAVE_STRCHR 1

/* Define to 1 if you have the `strftime' function. */
#define HAVE_STRFTIME 1

/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1

/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1

/* Define to 1 if you have the <sys/soundcard.h> header file. */
#define HAVE_SYS_SOUNDCARD_H 1

/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1

/* Define to 1 if you have the <sys/sysinfo.h> header file. */
#define HAVE_SYS_SYSINFO_H 1

/* Define to 1 if you have the <sys/time.h> header file. */
#define HAVE_SYS_TIME_H 1

/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1

/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
#define HAVE_SYS_WAIT_H 1

/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1

/* Define to 1 if `lstat' dereferences a symlink specified with a trailing
   slash. */
#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1

/* Define to the sub-directory where libtool stores uninstalled libraries. */
#define LT_OBJDIR ".libs/"

/* - */
#define MENU_CACHE_MAJOR_VERSION 1

/* - */
#define MENU_CACHE_MICRO_VERSION 0

/* - */
#define MENU_CACHE_MINOR_VERSION 1

/* Name of package */
#define PACKAGE "waterline"

/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "https://github.com/sde-gui/waterline"

/* Define to the full name of this package. */
#define PACKAGE_NAME "waterline"

/* Define to the full name and version of this package. */
#define PACKAGE_STRING "waterline 0.6.0-alpha"

/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "waterline"

/* Define to the home page for this package. */
#define PACKAGE_URL ""

/* Define to the version of this package. */
#define PACKAGE_VERSION "0.6.0-alpha"

/* Define as the return type of signal handlers (`int' or `void'). */
#define RETSIGTYPE void

/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1

/* Define to 1 if your <sys/time.h> declares `struct tm'. */
/* #undef TM_IN_SYS_TIME */

/* Version number of package */
#define VERSION "0.6.0-alpha"

/* Define to empty if `const' does not conform to ANSI C. */
/* #undef const */

/* Define to `__inline__' or `__inline' if that's what the C compiler
   calls it, or to nothing if 'inline' is not supported under any name.  */
#ifndef __cplusplus
/* #undef inline */
#endif

/* Define to rpl_malloc if the replacement function should be used. */
/* #undef malloc */
wandrien ★★
() автор топика
Ответ на: комментарий от cvs-255

Я могу посмотреть, что там configure наконфигурировал? Нет, нормально это не посмотреть. В отличии от той же связки Kconfig + make, где Kconfig выдает абсолютно читаемый .config, который просто подгружается make, без всякого генерирования makefile с помощью m4

А в чём принципиальная разница? configure делает тебе Makefile из шаблона (в принципе, это может быть что угодно, не обязательно Makefile). А твой читаемый .config всё равно должен соответствовать синтаксису Make-а

Harald ★★★★★
()
Ответ на: комментарий от Harald

«куча всего» нужна только разработчикам, конпелирующим пользователям нужны только sh, make и компилятор

Править кривые configure нужно почти всегда, а делать это с генерёнными файлами адовый ад. Да и собирают часто из реп, куда генеренные файлы не кладут. Так что не надо врать про make и sh, в общем случае всегда нужен полный комплект автокрапа.

slovazap ★★★★★
()
Ответ на: комментарий от Harald

.config имеет формат

CONFIG_TOOLCHAIN_PREFIX=""
CONFIG_COMPILE_OPTIMIZATION_NONE=y
# CONFIG_COMPILE_OPTIMIZATION_FOR_SIZE is not set
CONFIG_COMPILE_STACK_PROTECTION_NONE=y
# CONFIG_COMPILE_STACK_PROTECTION_ALL is not set
CONFIG_COMPILE_DEBUG=y
# end of Compilation

# CONFIG_PLATFORM_MEGA2560 is not set
# CONFIG_PLATFORM_STM32F103 is not set
CONFIG_PLATFORM_EMULATION=y

что полностью человекочитаемо

cvs-255 ★★★★★
()
Ответ на: комментарий от X512

Если не идеален, то и делать нихрена не надо.

Не надо стремиться ни к чему. Следуй за поводком, будь как все. Радуйся новому смартфону и новой версии Хрома в новостях.

wandrien ★★
() автор топика
Ответ на: комментарий от wandrien

Не надо стремиться ни к чему. Следуй за поводком, будь как все. Радуйся новому смартфону и новой версии Хрома в новостях.

У вас кроме двух крайностей ничего не существует?

X512 ★★★★★
()
Ответ на: комментарий от Harald

Ты что-то делаешь не так. Назови хоть один повод, сходу

Запросто - когда вышла FreeBSD 10 то под неё перестало собираться чуть более чем всё и правку configure пришлось делать централизованно потому что там повсеместно было понапихано что-то типа freebsd[0-9]. А так-то достаточно посмотреть на патчи для configure и Makefile, их огромное количество.

slovazap ★★★★★
()
Ответ на: комментарий от Harald

Лет десять же еще 2.x поддерживали, можно было бы и перейти.

paramon
()
Ответ на: комментарий от wandrien

Самооправдания слабаков при виде сильной личности.

То-то эта сильная личность как капризный ребёнок ножкой топала из-за шутки про аборт.

Следуй за поводком, будь как все.

Ну да, либо следуй за Столлманом, будь как гнутые. Ни в коем случае не своей головой думай.

slovazap ★★★★★
()
Ответ на: комментарий от Harald

так надо было первоисточник проблемы пинать

Да что вы говорите, как же мы не догадались. Конечно это первым делом пофиксили в autocrap. Только ничего что все кривые configure в мире от этого магически не перегенерятся? Поэтому без autoreconf к configure подходить бесполезно, хренов вам в панаму, а не «sh и make». Но мегабайт нечитабельного неработающего говна с каждым дистрибутивом качаем, да.

slovazap ★★★★★
()
Ответ на: комментарий от Harald

конпелирующим пользователям нужны только sh, make и компилятор

Угу, особенно когда configure сыпется с адовыми ошибками, что не найдены либы из хомяка

Shadow ★★★★★
()
Ответ на: комментарий от Shadow

где найти либы - всегда можно указать через переменные

Harald ★★★★★
()
Ответ на: комментарий от Shadow

Угу, особенно когда configure сыпется с адовыми ошибками, что не найдены либы из хомяка

А meson их находит сам. Шебуршит лапками по всему диску и находит.

Сказки не рассказывай, ага?

wandrien ★★
() автор топика
Ответ на: комментарий от wandrien

Поиск по портянке - это время и силы. Система сборки должна максимально помогать человеку, а не «ну ты, если покопаешься, может быть поймешь, в чем тут дело»

cvs-255 ★★★★★
()
Ответ на: комментарий от Harald

«куча всего» нужна только разработчикам, конпелирующим пользователям нужны только sh, make и компилятор

Генерируемые файлы не должны быть в составе проекта. Если configure генерируемый, то он должен быть в .gitignore и в инструкции по сборке должно быть написано как его генерировать. А лучше просто взять cmake/meson и забыть про всё это как страшный сон.

X512 ★★★★★
()
Ответ на: комментарий от X512

Если configure генерируемый, то он должен быть в .gitignore и в инструкции по сборке должно быть написано как его генерировать.

да

а если мы делаем тарболл с релизом, то configure генерируется и туда кладётся

Harald ★★★★★
()
Ответ на: комментарий от wandrien

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

Kconfig делает простой и понятный конфигурационный файл.

cvs-255 ★★★★★
()
Ответ на: комментарий от X512

Если configure генерируемый, то он должен быть в .gitignore

Он и так в .gitignore. Открытие за открытием…

А лучше просто взять cmake/meson и забыть про всё это как страшный сон.

Спасибо, но я уже перевёл свои проекты обратно на autotools и забыл бесполезный кусок говнокода cmake как страшный сон.

Сделать DSL после которого даже sh кажется раем – это надо было постараться.

wandrien ★★
() автор топика
Ответ на: комментарий от Harald

то configure генерируется и туда кладётся

Не нужно. Его всё равно придётся перегенерировать под платформу, отличную от платформы разработчика.

X512 ★★★★★
()
Последнее исправление: X512 (всего исправлений: 2)
Ответ на: комментарий от wandrien

Раньше как бывало - configure собран под тулчейн разработчика, у юзера не работает, нужно пересобирать, искать ту же версию autotools...

Shadow ★★★★★
()
Ответ на: комментарий от cvs-255

тогда в склонированном проекте его не будет

Не будет.

Лапками ставишь automake и autoconf и вперёд.

Слишком сложная концепция, что для сборки релизнутого софта и для его разработки требуется разный набор инструментов? А еще для сборки не нужен git и IDE. Прикинь?

wandrien ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.