LINUX.ORG.RU

На каком языке должен быть формат конфига системы сборки?


0

2

JSON, XML, YAML? Может быть s-выражения? Может быть жесточайшие никому не ведомые велосипеды как в QMake, CMake, autotools?

Может проще использовать например Python скрипт, в который заимпортированы классы системы сборки и осталось создать обьекты Project, Target, etc?

★★★★★

Последнее исправление: vertexua (всего исправлений: 1)

Любом готовом, декларативном, предназначенном для этого языке, прикинь? Ты waf изобретаешь или scons? Или просто провоцируешь флейм? На вкус и цвет идеальных систем сборки нет, выбери одну и юзай. А в ней все придумали за тебя, но только правильно.

t184256 ★★★★★
()

В autotools как раз велосипедов не использовали.

А конфиг должен быть на чем-то декларативном, но не убогом JSON.

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

Любом готовом, декларативном, предназначенном для этого языке, прикинь?

Каком?

Ты waf изобретаешь или scons?

Какая разница?

Или просто провоцируешь флейм?

Какая разница?

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

Да не, компилялку аля qmake, cmake, autotools, только без онанизма с то хреновой поддержкой pkg-config, то возней с промежуточными этапами, когда тебе дают тупые переменные MYLIB_CFLAGS и ты их сам руками пихаешь если не забудешь

vertexua ★★★★★
() автор топика
Последнее исправление: vertexua (всего исправлений: 1)

JSON это формат для передачи данных, а не хранения конфигов. А вообще из контекста не понятно, ты изобратешь свою систему сборки, пытаешься расковырять существующую или ищешь готовую систему сборки, могущую в твои конфиги. Кароч ни фига не понятно.

staseg ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Это уже хоть что-то похожее на нормальную систему. Хотя я и не задавал вопрос «Какую систему сборки использовать мне?»

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

JSON отлично подходит и для хранения конфигов

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

А, ну тогда это флеймогон. Если ты используешь готовое решение, то вопрос туп до бессмыслия. А если настолько шаришь, что возомнил, что можешь сделать лучше готовых, но еще не понял, что ответа на этот вопрос нет, то ты самоуверен, опасен и бесполезен.

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

Не проектировать свою. Пойти заняться делом.

t184256 ★★★★★
()

Может проще использовать например Python

Такой подход был многажды опробован и признан негодным. Во-первых, как должны IDE такое парсить? Да и не только IDE. Во-вторых, надобно отделять описание от деталей реализации. Кто не понимает, зачем, тому ещё рано обсуждать системы сборки и разработку софта вообще.

anonymous
()
Ответ на: комментарий от vertexua

Гипотетически мне больше всего нравится синтаксис make — наиболее близкий к предметной области. Вообще на нем вполне реально спрятать весь микроменеджмент с флагами и т.п., а в пользовательский Makefile выставить высокоуровневый интерфейс. Пока работал в линуксе, так и делал. Под виндой сейчас использую cmake, синтаксис не так крут, но из коробки намного меньше микроменеджмента.

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

YAML ещё худшее говно, чем JSON.

Если ты пишешь систему сборки, велосипедь свой язык. Как минимум это поможет тебе понять задачу. Если не знаешь, с чего начать, погугли Vesta software description language.

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

Только после выяснения того, что его пост является чистым 4.3 и не содержит вопроса. Это очень «терпеливо» по современным стандартам интернет-общения, в т.ч. местным.

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

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

Python может производить структуры данных, он может их просто вычислить и потом например с определенным ключем они могут быть выведены в JSON. А там и IDE

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

Ну я же не Поттеринг чтобы кого-то заставлять чем то пользоваться. А писать я могу что угодно до потери пульса. Не вижу причин нервничать

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

Ничего, обычно системы сборки смотрят на папку или wildcard папок. Потому просто, если надо, reevaluate если система сборки должна выдать инфу по файлу, его ключи сборки.

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

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

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

Если ты пишешь систему сборки, велосипедь свой язык

Но зачем? Makefile - вполне себе готовый язык для описания зависимостей задач. PKGSRC, который из себя представляет набор макросов для make, вполне себе работает и вполне себе декларативен.

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

Не будем о грустном. Такую лапшу еще поискать. Хотя их тоже можно понять, писали абсолютно универсальную вещь

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

Если ты пишешь систему сборки, велосипедь свой язык

Но зачем?

Зачем использовать в новой системе сборки синтаксис уже существующей системы?

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

велосипедь свой язык

Не имею малейшего желания

Если я правильно понял твои намерения, ты его все равно навелосипедишь. Вопрос только в том, будет это убогая параметризация в стиле systemd, или язык, который сознательно проектировался под задачу.

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

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

Так деньги собирают? Я реально пожертвую рублей 200-300...

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от tailgunner

Ну просто все системы сборки решают задачу полного цикла работы над приложением, от начала, до релизов, генераторов инсталляторов и тд. Причем решают проблемы архитектур, специфичных опций компиляторов на разных ОС, процессорах, автоматического детектирования разных конфигураций библиотек. Причем поразительно мало умеют работать без конфига с детектированием либ по заголовкам и мало умеют фоновую сборку, фоновые запуски тестов, с атомарным замещением симлинка на собраный бинарь. Например можно печатать, сохраняться, а потом когда запустишь сборки, запуск или тесты, то окажется что они уже запущены секундой ранее и ты увидишь все быстрее. Просто есть разные вещи, иногда хочется дома похелоуворлдить и просто написав файл с использованием Gtk и потом написать

app run

Потом в vim поменять код, сохраниться, но следующий app run пусть будет моментальным, так как оно уже все пересобрало в момент сохранения

vertexua ★★★★★
() автор топика
Последнее исправление: vertexua (всего исправлений: 4)
Ответ на: комментарий от tailgunner

Я ответил на то, что создание своего языка необходимо при предоставлении универсального решения, а не частного

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

Это просто моя тяга к приключениям. В гугле уже поинтереснее вещей написали, я не осилю такое

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

Лол, забавная формулировка. Но я просто понял что я задолбался писать cmake портянки и возиться этими комбайнами. Писать себе софт очень оправдывает себя. Я как минималист обычно пользуюсь малой частью фич софта и они реализованы как говно. Потому лисапедить себе потоковые аудиоплеер с ВК было проще чем ругать всякие амароки или ритмбоксы

vertexua ★★★★★
() автор топика
Последнее исправление: vertexua (всего исправлений: 1)

Groovy крут (Gradle). В основном пишешь в декларативном стиле и проявляешь гибкость, где надо, используя императивщину.

В моём идеальном мире конфиг системы сборки должен быть на JS: в простом случае JSON, в сложном — код на JS.

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

Java-based системы сборки как раз страдают от долгого время старта. SBT вот взял и забил на это, висит демоном. Но зато жрет гектар и сложный до ужаса. Тут уже лучше пусть IDE собирает

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

то-то от них веселые истории про системы сборки и ад с этим связанный слышишь :). Там какая-то адская жесть поверх make?

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

Если ты пишешь систему сборки, велосипедь свой язык.

Ну и зачем оно нужно? Помимо изучения API еще изучать и язык. Лишние сложности.

Я за использования ЯП, которые уже известны и используются, как DSL (JS, Groovy, Ruby).

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

Java-based системы сборки как раз страдают от долгого время старта.

So true. Короче, мой посыл был: используй уже существующие DSL. Просто создай удобное API для них.

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

Я за использования ЯП, которые уже известны и используются, как DSL (JS, Groovy, Ruby).

Да, да... выше по треду уже ответили.

Цитата из «Золотого теленка» была бы в тему.

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