LINUX.ORG.RU
ФорумTalks

X.Org, ещё один проект отказывается от autotools

 , ,


0

1

Даже почти мёртвый X.Org перешёл на meson.

Поздравляю meson, всё больше проектов собирают им.

https://www.phoronix.com/scan.php?page=news_item&px=X.Org-Bye-Bye-Autotools

Я думаю autotools удалят из реп раньше чем X.Org.

А вы как думаете?

★★★★★
Ответ на: комментарий от Reset

Я сам пользуюсь cmake.

Я с помощью meson собирал лишь несколько hello-world в gnome builder.

Тут они пишут, что

  1. их язык конфигурации самый простой и намного проще cmake

  2. meson самая быстрая система сборки

https://mesonbuild.com/Simple-comparison.html

The fastest build system see measurements, user friendly, designed to be as invisible to the developer as possible, native support for modern tools (precompiled headers, coverage, Valgrind etc). Not Turing complete so build definition files are easy to read and understand.

https://mesonbuild.com/Comparisons.html

А ещё на meson перешли Gnome и GTK, а также Mesa, Weston, systemd, sway, DXVK…

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

судя по доке она не собирает, а генерирует ninja файлы

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

чем оно лучше cmake ?

Хоть meson и говно, но даже он лучше cmake. Боже, что вообще может быть хуже cmake? Даже шел-скрипт вместо системы сборки будет лучше драного cmake.

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

Cmake страдает большим числом всяких кривых плагинов для поиска библиотек. Договорились бы уже использовать только pkgconfig, по крайней мере для UNIX-like систем.

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

чем оно лучше cmake ?

Всем. Что autotools, что cmake – эталонные примеры того, как НЕ нужно проектировать сборочные системы. Надеюсь, после смерти autotools отовсюду ссаными тряпками погонят уже CMake. RedHat, как видно, уже погнал CMake из своих проектов: GNOME, софт под GNOME, X.Org, Wayland, Mesa и systemd не собираются CMake’ом и правильно делают.

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

Всем. Что autotools, что cmake – эталонные примеры того, как НЕ нужно проектировать сборочные системы.

Решил заменить на несборочную несистему? =)

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

Cmake более гибкий и универсальный, чем Meson. В Meson много чего прибито в коде на Python что в Cmake можно реализовать средствами самого языка сборки. Тоже самое про Jam, он гибче Meson.

Meson хорош пока его функционала хватает.

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

Писанины меньше и легче читается.

Спорно. На мой скромный взгляд, у meson синтаксис куда более мерзкий, чем у современного cmake.

А уж документация у cmake выше всяческих похвал, у meson же какое-то недоразумение.

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

Да, все проблемы CMake на ЛОРе обсосаны уже давным давно и не по одному кругу:

  1. Оценки хелловорлда тред (комментарий)
  2. За что так не любят cmake? (комментарий)

Забавно что до сих пор находятся некоторые фанатики облизывающие CMake. Даже несмотря на все эти архитектурные проблемы, которыми кишит CMake, им даже чисто эстетически пользоваться противно: регистронезависимость прямиком по традициям винды, когда в разных проектах по разному определено:

TARGET_LINK_LIBRARIES(program mylib)
target_link_libraries(program mylib)
Target_Link_Libraries(program mylib)
Target_link_libraries(program mylib)

А то и в одном и том же проекте или даже файле. DSL в файлах с расширением *.txt, который не отвечает смыслу и т. д.

Непонятно почему эта мразь так набрала популярность. Во истину в IT зачастую выигрывает самое наркоманское и ублюдочное решение: PHP, CMake, autotools, etc.

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

Что будет, если SOME_LIBS_VARIABLE не будет существовать? CMake скажет, что ты обращаешься к несуществующей переменной? Ничего подобного. Молча прожует и ничего не скажет. Это нелогичное говно. По этой же причине я не люблю эти ваши баши и мейки.

Ну для полноты картины, у GNU make есть --warn-undefined-variables. Правда особо не лучше.

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

Cmake более гибкий и универсальный, чем Meson.

Конечно сейчас более гибкий. За столько времени его потихоньку довели до состояния «ну вот как-то так можно пользоваться».

EXL ★★★★★
()
Ответ на: комментарий от u-235

Си. Нет RAII в стандарте в 2021 году.

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

Оценки хелловорлда тред (комментарий)

по поводу sdl2_что_то_там плагина. Там же есть pc-файл в комплекте, кто мешает им пользоваться в cmake?

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

Непонятно почему эта мразь так набрала популярность.

Как раз понятно. Потому что одинаково и без плясок с бубном работает под всеми ОС. Синтаксис убог, да.

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

надо msys ставить тогда работают

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

В Meson много чего прибито в коде на Python

То есть meson это python? Ясно, сразу фтопку!

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

по поводу sdl2_что_то_там плагина. Там же есть pc-файл в комплекте, кто мешает им пользоваться в cmake?

кто мешает им пользоваться в cmake?

Мешает кросс-платформенность.

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

В Meson много чего прибито в коде на Python

Лол сишники свой код без пистона даже нормально собрать не могут, а потом возбухают ещё что пистон говно

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

CMake божественен. Meson по сравнению с ним достаточно убогий и примитивный (но хотя бы не представляет собой километры нечитабельной неподдерживаемой лапши, как автолулзы, и на том спасибо).

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

Вендопроблемы.

По мне разработка на C/C++ – это основной недостаток Windows. Там до сих пор практикуются прописывание абсолютных путей до библиотек в проектах и копирование библиотек в проект. Писать на C/C++ в UNIX-подобных системах намного приятнее.

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

с сайта pkg-config:

pkg-config works on multiple platforms: Linux and other UNIX-like operating systems, Mac OS X and Windows. It does not require anything but a reasonably well working C compiler and a C library, but can use an installed glib if that is present

Кроме того, этот топик вроде как про meson. Ну так вот, meson предлагает писать внешние скрипты для кодогенерации. То есть shell-скрипты в онтопике и батники в винде. Кроссплатформенность 80 уровня…

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

pkg-config не работает с нативной экосистемой Windows, предлагается обмазываться MinGW’ами, MSYS’ами или ещё какой-нибудь штукой, pkg-config не работает нормально с тем же Android и iOS. Да и с macOS не очень.

Кроме того, этот топик вроде как про meson. Ну так вот, meson предлагает писать внешние скрипты для кодогенерации. То есть shell-скрипты в онтопике и батники в винде. Кроссплатформенность 80 уровня…

Но речь в этом топике шла про сравнение его с другими системами сборки или генераторами сборочных рецептов. Я соглашусь, что у Meson пока слабо развита кроссплатформенность вне Linux вообще, особенно в сравнении с autotools или CMake. Но в данном случае речь идёт про CMake, который заявляет об этой кроссплатформенности но на деле работает как говно, потому что дегенераты разрабатывающие CMake сначала хотели принимать FindModules в дистрибутив CMake, а потом поменяли своё решение отказавшись это делать, но при этом все эти модули не удалили, а заморозили. В итоге форменная неконсистенция: одни библиотеки по дефолту распознаются вроде SDL 1, а к другим нужно писать эти говномодули.

Разработчики CMake неосилили начатое ими хорошее начинание и поступили подло, прямо как RedHat, который скостил срок поддержки у CentOS 8 с 2030 года до 2021. Читай, нарушили данное ими обещание.

Засорение исходников проектов полурабочими FindModules, которые теперь вынуждены каждый раз писать прикладные разработчики целиком на совести идиотов из Kitware.

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

Так там и экосистемы пакетов нет. install.exe

Давно же тебя в Windows не заносило:

https://vcpkg.io/en/index.html
https://habr.com/ru/company/microsoft/blog/560254/

И лучше там не стало, поверь. Даже со всеми этими плюшаками и возможностью вкорячить любимый Linux-дистрибутив рядом.

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

Не встречал бинарные пакеты с разными конфигурациями в Линуксе и прочих UNIX-like системах.

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

2021-й, Карл. Таки да, я успел состариться, а в винде появился пакетный менеджер.

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

И что тогда делать(

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

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

Пока ещё не сделали. Типичные виндопроблемы перевешивают типичные линуксовые проблемы.

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

С пистоном тоже не могут. Потому, что пистон - говно. Meson - говно. Все популярные системы сборки - говно.

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

shell-скрипты в онтопике и батники в винде

shell-скрипты есть и на винде

писать внешние скрипты для кодогенерации

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

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

pkg-config не работает с нативной экосистемой Windows

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

Неудобство разработки на C/C++ по мне – один из основных недостатков Windows.

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

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

Зачем это делать?

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

А как ещё? Как система сборки найдёт сторонние библиотеки?

С помощью vcpkg/conan

cmake -CMAKE_TOOLCHAIN_FILE=<vcpkg-root>/scripts/buildsystems/vcpkg.cmake .. -G Ninja

Вот посмотри как выглядит хорошая кросплатформенная заготовка проекта:

https://github.com/cpp-best-practices/cpp_starter_project

А вообще в Windows много встроенных либ, какие-то проекты можно делать и без зависимостей вовсе…

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

-CMAKE_TOOLCHAIN_FILE=/scripts/buildsystems/vcpkg.cmake

Ну то есть какие-то пути прописывать руками в каждом проекте таки надо. В UNIX-like системах работает просто cmake .. без каких либо путей и всё само находится.

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

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

Если открывать из Visual Studio и предварительно сделать:

vcpkg.exe integrate install

То Visual Studio будет сама подставлять путь до vcpkg и не нужно будет вообще никаких путей указывать :)

Но если самому в консоли запускать cmake, то нужно указать в CMAKE_TOOLCHAIN_FILE путь до vcpkg.cmake

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

Если открывать из Visual Studio

Это за которую надо платить кучу денег и которая весит кучу гигабайт? Не нужно.

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

Это за которую надо платить кучу денег и которая весит кучу гигабайт? Не нужно.

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

Но вот сколько стоит полная версия: (8 ноября выходит visual studio 2022, не стоит покупать сейчас visual studio 2019):

https://www.microsoft.com/en-us/d/visual-studio-professional-2019/dg7gmgf0f6q1?activetab=pivot:overviewtab

(пожизненная лицензия на приложение, не подписка которую нужно продлять, я не люблю подписки…)

А вот сколько занимает куча гигабайт(у меня там установлен ещё и clang, и arm64 компилятор и прочее, в минимальной выборе компонентов для С++, там вдвое меньше будет занимаемое место): https://imgur.com/a/7jMO7Bm

Да, всё так.

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

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

Раньше не было. Сейчас появились всякие vcpkg и прочие conan’ы.

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

Как оно работает? Там что-то вроде pkgconfig?

Сильно не вникал, но похоже что через этот тулчейн-файл CMake и эти Find-модули, как было сказано выше. В любом случае раньше было именно как ты описал, а сейчас разработчики прямо как в UNIX-like могут написать в консольке что-то типа vcpkg install gtk3 sqlite и дальше добавлять в CMakeLists.txt нужные им библиотеки и утилиты через find_package(). А студия сделает многое автоматом.

Ну то есть какие-то пути прописывать руками в каждом проекте таки надо. В UNIX-like системах работает просто cmake .. без каких либо путей и всё само находится.

Это уже специфика в силу Windows-наследия. Кросскомпиляция под UNIX-like тоже cmake .. не ограничится. Суть-то именно в том, что раньше там подобного способа официально не было (был MSYS2 зато), а теперь следуя гайдам от Microsoft можно превратить свой Windows в аналог Arch Linux или даже Gentoo.

Консоль – лучшая IDE. Говорю это как фанат GUI.

Странно, ты вроде говорил что нечего использовать консоль не по назначению. А тут прямо строки из «Unix as IDE» пошли.

Неудобство разработки на C/C++ по мне – один из основных недостатков Windows.

Не только неудобство разработки на C/C++, но и вообще разработки. В Microsoft сидят далеко не дураки и они быстро почувствовали как теряют «Developers, Developers, Developers», как побеждает не Windows-style ведения разработки, а UNIX-style. Именно поэтому не только сам Windows перешёл на Git, а в Microsoft Visual Studio появилась шикарнейшая поддержка Git, но и они всякие шутки вроде GVFS (переименовали из-за конфликта имён с GNOME’овской технологией в VFSForGit) запилили https://github.com/microsoft/VFSForGit

Это ещё не говоря про покупку GitHub, внедрения WSL, WSL2 и переработку святая всех святых cmd.exe и notepad.exe (добавили туда Unix line endings)!

А всё потому что вот это вот: https://insights.stackoverflow.com/survey/2020#technology-platforms

Шутка ли, Linux стал у разработчиков и IT-специалиство популярнее чем Windows.

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

Странно, ты вроде говорил что нечего использовать консоль не по назначению.

Писать команды вроде cmake .. -G Ninja, ninja install и т.п. это как раз по назначению. Я в первую очередь против пседвографики и интерактивности в консоли. Haiku ещё умеет чтобы по клику ошибки компиляции в консоли открывался редактор кода по умолчанию на месте ошибки.

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

Как оно работает? Там что-то вроде pkgconfig?

При установке библиотек есть папка «vcpkg\installed\x64-windows\share»

Там для установленных библиотек либо создаётся папка с файлом заглушкой, если для библиотеки есть встроенная поддержка в cmake.

Например:

The package zlib is compatible with built-in CMake targets:

    find_package(ZLIB REQUIRED)
    target_link_libraries(main PRIVATE ZLIB::ZLIB)

Или в папку кладутся .cmake файлы от разработчиков библиотеки:

Например, в папке grpc есть файлы

gRPCConfig.cmake
gRPCTargets.cmake
gRPCTargets-debug.cmake
gRPCTargets-release.cmake

Видимо они как-то создаются из этих in файлов: https://github.com/grpc/grpc/blob/master/cmake/gRPCConfig.cmake.in

Или если разработчик не предоставляет .cmake файлов, то создаётся папка unofficial-somename, и туда кладутся такие же cmake файлы, только от разработчиков vcpkg.

Например есть unofficial-sqlite3.

Всего это знать не нужно.

нужно лишь прочитать вывод после установки библиотеки. Там напишут что нужно писать, чтобы подключить библиотеку в Cmake.

Например:

The package sqlite3:x64-windows provides CMake targets:

    find_package(unofficial-sqlite3 CONFIG REQUIRED)
    target_link_libraries(main PRIVATE unofficial::sqlite3::sqlite3)

https://imgur.com/a/5GGPwW0

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

Что не так? По сравнению с любыми крестами (да и с растом) это прям эталон красоты

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

Мы тут про системы сборки говорим, а не про дистрибутивные репозитории. pkgconfig, так же как и cmake может искать пакеты где ему скажут, а не только в /usr/share/pkgconfig. И когда твой софт зависит от 3rdParty библиотек которые нужно подключать в разных конфигурациях (например profile и release) в зависимости от, pkgconfig сливает.

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

И когда твой софт зависит от 3rdParty библиотек которые нужно подключать в разных конфигурациях

Виндопроблемы. В Линуксе это не нужно. Если что, можете собрать из исходкиков как вам надо.

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

Лень искать коммент, где-то тут было про мезон и питон.

Так вот пажалста: сегфолт — кросивое: https://github.com/pyenv/pyenv/issues/1889#issuecomment-833313816

Говорят, у вас, мол, слишком новый gcc, даугрейдьтесь.

Зашибись завязываться на такие сложные кодовые базы конечно.

У меня вот такая же фигня, кстати.

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

Может быть, но мне от этого без разницы.

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

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

Безотносительно мезона, но мне потом еще питон-приложение под винду паковать. Вот там я наверное наприключаюсь.

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

Безотносительно мезона, но мне потом еще питон-приложение под винду паковать.

Элементарно же. Посмотрите например на youtube-dl.

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

Спасибо. Посмотрю. Ни разу не сталкивался.

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

мне потом еще питон-приложение под винду паковать. Вот там я наверное наприключаюсь

Какая разница под что паковать? Не, если хочется прям полный фарш вместе с интерпретатором и dll - есть фриз. А так, особенно если сишных биндингов нет, setuptools это все прекрасно сам делает

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

Ну, у меня там куча либ в зависимостях, я еще не разбирался, что к чему. Под винду всё поставлялось в виде папочки с экзешником а ля «бери и запускай». Кодовая база мне только недавно досталась. Я по большей части её в докере пока гоняю.

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

Под винду всё поставлялось в виде папочки с экзешником а ля «бери и запускай»

фриз. В 90% случаев проблем нет. В оставшихся 10% - бывают, особенно если гуй и Сишка

upcFrost ★★★★★
()
Ответ на: комментарий от u-235

А вы с какой целью интересуетесь, свой toolchain пишете?

Я интересуюсь в пику заявлениям про «отличную документацию». На качество этой документации я насмотрелся, когда заводил сборки Tizen’а в Open Suse Build System.

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

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

u-235
()
Ответ на: комментарий от u-235

Для создания проекта документация у CMake хороша

Учитывая что каждый первый проект хардкодит путь от prefix до libdir, а каждый второй делает set(CMAKE_C_FLAGS "-O0 -ggdb") эффективно уничтожая возможность малой кровью при пакетировании докидать дистроспецифичные флаги вместо хотя бы set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -ggdb") не говоря уже про target_compile_options, то документация и для создания проекта не очень.

А учитывая что все эти target_compile_options добавляют флаги в конец и у того кто пакетирует софт в принципе нет инструмента, кроме патчей на CMakeLists.txt, для того чтобы хотя бы переопределить список включённых варнингов, то я не уверен что разработчики CMake’а хоть раз слышали про то как дистрибутивы собирают свои пакеты.

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

Косячат пользователи, а виноват CMake? В доках в нескольких местах написано – делайте относительные пути, но судя по вопросам на SO, доки никто не читает. А еще софтописатели крайне неохотно обновляют сборочные скрипты.

u-235
()
Ответ на: комментарий от u-235

Конечно. В автотулзах у тебя с самыми косячными пользователями есть ./configure --libdir=/usr/lib64, а у симейкопользователей ты чуть менее чем наверняка найдёшь install(TARGETS mylib LIBRARY DESTINATION lib). Такие примеры и пользователи дают и книжки по симейку: https://cliutils.gitlab.io/modern-cmake/chapters/install/installing.html

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