The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Выпуск сборочной системы Meson 0.50

11.03.2019 09:14

Представлен релиз сборочной системы Meson 0.50, которая используется для сборки таких проектов, как X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME и GTK+. Код Meson написан на языке Python и поставляется под лицензией Apache 2.0.

Ключевой целью развития Meson является обеспечение высокой скорости сборочного процесса в сочетании с удобством и простотой использования. Вместо утилиты make при сборке по умолчанию применяется инструментарий Ninja, но возможно применение и других бэкендов, таких как xcode и VisualStudio. В систему встроен многоплатформенный обработчик зависимостей, позволяющий использовать Meson для сборки пакетов для дистрибутивов. Правила сборки задаются на упрощённом предметно-ориентированном языке, отличаются хорошей читаемостью и понятны пользователю (по задумке авторов разработчик должен тратить минимум времени на написание правил). Например, простейший файл сборки (meson.build) будет выглядеть как:


   project('tutorial', 'c')
   executable('demo', 'main.c')

или более сложный вариант с зависимостью от GTK3:

   project('tutorial', 'c')
   gtkdep = dependency('gtk+-3.0')
   executable('demo', 'main.c', dependencies : gtkdep)

Поддерживается кросс-компиляция и сборка в Linux, macOS и Windows с использованием GCC, Clang, Visual Studio и других компиляторов. Возможна сборка проектов на различных языках программирования, включая C, C++, Fortran, Java и Rust. Поддерживается инкрементальный режим сборки, при котором пересобираются только компоненты, напрямую связанные с изменениями, внесёнными с момента прошлой сборки. Meson можно использовать для формирования повторяемых сборок, при которых запуск сборки в разных окружениях приводит к генерации полностью идентичных исполняемых файлов.

Основные новшества Meson 0.50:

  • Добавлена поддержка развиваемых компанией NVIDIA компиляторов PGI для языков C, C++ и Fortran, а также компилятора Flang;
  • Добавлена поддержка расширения coarray для параллельного программирования на языке Fortran, стандартизированного в спецификациях Fortran 2008 и Fortran 2018. В коде для разбора зависимостей также представлена начальная поддержка субмодулей для Fortran, определяемых при помощи выражения "submodule";
  • Обеспечена возможность указания пути к каталогу с модулями для системы CMake в составе зависимостей. Бэкенд для определения зависимостей через CMake теперь может использовать существующие файлы Find{name}.cmake через указание свойства make_module_path в dependency(). Также добавлена поддержка передачи CMake дополнительных параметров при помощи опции cmake_args;
  • Значение libdir при кросс-компиляции теперь указывает на каталог "/lib", а не на специфичные для выбранной архитектуры пути (например "lib/x86_64-linux-gnu");
  • В сборочные файлы добавлена новая секция "[paths]" для определения постоянных путей, таких как prefix и libdir;
  • Добавлен режим "warning_level 0" для отключения в компиляторе любых проверок, связанных со статическим анализом кода;
  • Добавлена встроенная сборочная цель (ninja clang-format) для форматирования кода при помощи clang-format;
  • Реализована возможность указания в ключевом слове include_directories строковых значений, а не только объектов, ссылающихся на каталоги;
  • Для языков C, C++ и Fortran добавлена поддержка обработчиков формата для обмена научными данными NetCDF через вызов pkg-config;
  • Добавлена поддержка формата HDF5 через вызов pkg-config;
  • Добавлена поддержка компиляции кода NVIDIA CUDA (пока только при помощи бэкенда на базе Ninja). Так как компилятор CUDA не сохраняет файлы с зависимостями (*.d), отслеживание зависимостей не поддерживается;
  • Расширены возможности интроспекции. Обеспечена генерация файла meson-info.json при каждом запуске meson. Добавлена поддержка инроспектирования разом нескольких параметров. Реализована возможность выполнения "introspect --targets" и "introspect --buildoptions" без настроенного сборочного каталога. Добавлена команда "introspect --scan-dependencies" для поиска зависимостей в проекте;
  • Добавлена функциональность для изменения файлов meson.build при выполнении операций в командной строке. Например, можно добавлять и исключать исходные файлы и сборочные цели (target), изменять наборы kwargs и модифицировать применяемые по умолчанию сборочные опции.


  1. Главная ссылка к новости (https://groups.google.com/foru...)
  2. OpenNews: Выпуск сборочной системы Meson 0.49.0
  3. OpenNews: Доступна система сборки Meson 0.42, на которую переходят systemd, GTK+ и GNOME
  4. OpenNews: Первый публичный выпуск сборочного инструментария build2
  5. OpenNews: Разработчик языка XL опубликовал новую сборочную систему build
  6. OpenNews: Проект Qt прекращает разработку сборочной системы Qbs в пользу CMake
Лицензия: CC-BY
Тип: Программы
Ключевые слова: meson, build, make
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, Аноним (1), 10:35, 11/03/2019 [ответить] [показать ветку] [···]    [к модератору]
  • –1 +/
    Почему недостаточно обычного make?
     
     
  • 2.2, llolik (ok), 10:41, 11/03/2019 [^] [ответить]    [к модератору]
  • +4 +/
    На официальном сайте написано, вроде как.
    http://mesonbuild.com/FAQ.html#why-is-there-not-a-make-backend

    Вкратце: шустрей и проще.

     
     
  • 3.6, shjfbg (?), 11:06, 11/03/2019 [^] [ответить]     [к модератору]
  • –4 +/
    ребята неосилили cmake ninja потому и пишут гупые отмазки типа What is the co... весь текст скрыт [показать]
     
     
  • 4.7, llolik (ok), 11:23, 11/03/2019 [^] [ответить]     [к модератору]  
  • +1 +/
    В чём отмазка Я понял это как памятку не надо искать libpthread so вручную в... весь текст скрыт [показать]
     
     
  • 5.19, shjfbg (?), 12:24, 11/03/2019 [^] [ответить]     [к модератору]  
  • +/
    Это неверно, cmake умеет сам находить нужный dev-пакет и подключать зависимости ... весь текст скрыт [показать]
     
     
  • 6.22, llolik (ok), 12:45, 11/03/2019 [^] [ответить]     [к модератору]  
  • +1 +/
    Ну напишите им на github или сразу патчем, там github markdown , как надо Наве... весь текст скрыт [показать]
     
  • 3.8, Аноним (8), 11:25, 11/03/2019 [^] [ответить]     [к модератору]  
  • +5 +/
    Прочитал статью Чувак написал с нуля свою замену make и ускорил сборку Хрома с ... весь текст скрыт [показать]
     
     
  • 4.12, llolik (ok), 11:31, 11/03/2019 [^] [ответить]     [к модератору]  
  • –1 +/
    И ещё далеко не факт, что эти патчи приняли бы Мало того, что там, мягко говоря... весь текст скрыт [показать]
     
  • 4.14, Ordu (ok), 11:34, 11/03/2019 [^] [ответить]     [к модератору]  
  • +/
    Но они ведь не переписали Ну, конечно, за всем стоит вселенский заговор Даже е... весь текст скрыт [показать]
     
     
  • 5.20, Аноним (20), 12:27, 11/03/2019 [^] [ответить]    [к модератору]  
  • +2 +/
    Есть мнение, что Ninja писали из-за винды. Make там хронически медленный из-за порождения тучи процессов, что на винде затратно.
     
  • 5.23, Аноним (8), 12:51, 11/03/2019 [^] [ответить]     [к модератору]  
  • +1 +/
    А мне-то что с этого Что Гугл, что GNU, 8212 чёрные дыры, обслуживаемые робо... весь текст скрыт [показать]
     
     
  • 6.26, Аноним (26), 13:55, 11/03/2019 [^] [ответить]     [к модератору]  
  • –1 +/
    В ninja особо MAKEFLAGS и не нужны Эта система не предполагает ручного создания... весь текст скрыт [показать]
     
  • 6.27, Ordu (ok), 14:02, 11/03/2019 [^] [ответить]     [к модератору]  
  • –1 +/
    А мне Или разработчику ninja Ты сейчас смотришь с позиции, мол, разработчик ni... весь текст скрыт [показать]
     
  • 2.4, Аноним (4), 10:50, 11/03/2019 [^] [ответить]    [к модератору]  
  • +/
    А ты пробовал обычным make собирать что-то большое и кроссплатформенное? Причём именно _обычным_ make, без GNU-расширений.
     
     
  • 3.11, yet another anonymous (?), 11:30, 11/03/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    У нас практически не осталось _обычного_ make, без GNU-расширений.
     
     
  • 4.50, Аноним (50), 18:08, 11/03/2019 [^] [ответить]    [к модератору]  
  • +/
    Рад за _вас_.
     
  • 3.15, пох (?), 11:40, 11/03/2019 [^] [ответить]     [к модератору]  
  • +/
    я пробовал - freebsd называется ну, насколько обычен тамошний pmake или бывший ... весь текст скрыт [показать]
     
     
  • 4.48, Аноним (50), 18:00, 11/03/2019 [^] [ответить]     [к модератору]  
  • +/
    OMG, они теперь и bmake на что-то заменили Вроде не так давно его по умолчанию ... весь текст скрыт [показать]
     
     
  • 5.51, пох (?), 18:10, 11/03/2019 [^] [ответить]     [к модератору]  
  • +/
    пардон, bmake vs fmake - вечно я путаю эти буковки поскольку один хрен никогда ... весь текст скрыт [показать]
     
     
  • 6.54, Аноним (50), 21:20, 11/03/2019 [^] [ответить]    [к модератору]  
  • +/
    Да круто, кроуто, что там есть эти фокусы. Проблема только в том, что они с фокусами gmake ни разу не совместимы, поэтому о переносимости Makefile'ов можно забыть.
     
     
  • 7.57, Аноним (50), 21:46, 11/03/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    P. S. Действительно, make уже не торт:
    [code]$ make love
    make: don't know how to make love. Stop[/code]
     
  • 1.3, Аноним (3), 10:48, 11/03/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +3 +/
    Требует python или jvm или какого-нибудь другого огромного рантайма на сотни мегабайт в распакованном виде === можно закапывать.
     
     
  • 2.5, мое правило (?), 11:03, 11/03/2019 [^] [ответить]    [к модератору]  
  • –3 +/
    Требует ядро, операционную систему, другого сабжа в много мегабайт между железом и аппликухой - можно закапывать.
     
  • 2.10, llolik (ok), 11:27, 11/03/2019 [^] [ответить]    [к модератору]  
  • –2 +/
    Никто не запрещает не пользоваться. У меня вот нет задачи не использовать Python, и фрустрации от него тоже нет - я пользуюсь, мне meson, не без огрехов, но нравится.
     
     
  • 3.13, пох (?), 11:33, 11/03/2019 [^] [ответить]     [к модератору]  
  • –1 +/
    угу, вы же предусмотрели возможность медленной и сложной сборки, например, с... весь текст скрыт [показать]
     
     
  • 4.16, llolik (ok), 11:52, 11/03/2019 [^] [ответить]     [к модератору]  
  • +/
    Если конкретно обо мне речь, то Makefile писать вручную я ещё не разучился Есть... весь текст скрыт [показать]
     
     
  • 5.17, пох (?), 12:09, 11/03/2019 [^] [ответить]     [к модератору]  
  • –1 +/
    хм, ну и как насчет быстренько вручную накатать мэйкфайлов к чему-то типа chromi... весь текст скрыт [показать]
     
     
  • 6.21, llolik (ok), 12:38, 11/03/2019 [^] [ответить]     [к модератору]  
  • +/
    Автотулзы для проектов типа chromium кактус не сильно лучший Вот серьёзно, где... весь текст скрыт [показать]
     
     
  • 7.28, пох (?), 14:07, 11/03/2019 [^] [ответить]     [к модератору]  
  • –2 +/
    почему Это один из немногих действительно кроссплатформенных проектов напомина... весь текст скрыт [показать]
     
     
  • 8.33, llolik (ok), 15:08, 11/03/2019 [^] [ответить]     [к модератору]  
  • +/
    для действительно крупных проектов - время пересборки Для небольших проектов - ... весь текст скрыт [показать]
     
  • 8.46, Ivan_83 (ok), 17:25, 11/03/2019 [^] [ответить]    [к модератору]  
  • +2 +/
    автотулс ужасен, смейк вполне юзабелен.
    В принципе месон тоже весьма, но мне откровенно не нравится питоний синтаксис и питон как зависимость.
    С другой стороны плохо что смейк на плюсах.
     
  • 7.43, пох (?), 17:15, 11/03/2019 [^] [ответить]     [к модератору]  
  • –1 +/
    вот, специально проверил - ни на одной моей фре, кроме тех куда его притащил hg ... весь текст скрыт [показать]
     
  • 2.36, metakeks (?), 15:32, 11/03/2019 [^] [ответить]    [к модератору]  
  • +/
    сцать им, им дядька компы и облака покупает, сами туда ни копейки не вкладывают
     
  • 2.59, Анонас (?), 10:11, 12/03/2019 [^] [ответить]    [к модератору]  
  • +/
    > ===

    Судя по выражениям, тебе нужна система сборки на Node.JS

     
  • 1.9, yet another anonymous (?), 11:26, 11/03/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Сборка "xcode и VisualStudio" ооочень актульна для X сервера.
     
  • 1.24, Совершенно другой аноним (?), 13:44, 11/03/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Не совсем понятно, зачем в системе сборки знать компиляторы? make как-то обходился без этого сакрального знания. Ему вообще было абсолютно всё-равно что собирать, хоть исполняемый файл, а хоть и книгу.

    Особенно непонятно зачем ему знать диалекты языка fortran, он что, ещё и сам эти файлы анализирует? и как с новым компилятором, ему нужна явная поддержка всех языков?

     
     
  • 2.31, llolik (ok), 14:24, 11/03/2019 [^] [ответить]     [к модератору]  
  • –1 +/
    Система сборки в общем-то изначально и должна запускать компиляторы Как она буд... весь текст скрыт [показать]
     
     
  • 3.32, Led (ok), 14:57, 11/03/2019 [^] [ответить]    [к модератору]  
  • –1 +/
    > meson - это альтернатива autotools.

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

     
     
  • 4.34, llolik (ok), 15:17, 11/03/2019 [^] [ответить]     [к модератору]  
  • –2 +/
    Как мне назвать, чтобы не обидеть, человека, который считает, что его частное, н... весь текст скрыт [показать]
     
     
  • 5.52, пох (?), 18:11, 11/03/2019 [^] [ответить]    [к модератору]  
  • –3 +/
    Led ;-)
     
  • 5.58, Led (ok), 23:09, 11/03/2019 [^] [ответить]     [к модератору]  
  • +/
    Как хош Что касается моего мнения, то оно не верное для тебя - ты можешь и д... весь текст скрыт [показать]
     
     
  • 6.63, Анончег (?), 23:46, 12/03/2019 [^] [ответить]     [к модератору]  
  • +/
    Светодиод практически развивает в своих отложениях альтернативную орфографию - д... весь текст скрыт [показать]
     
  • 3.35, Совершенно другой аноним (?), 15:18, 11/03/2019 [^] [ответить]     [к модератору]  
  • +/
    спасибо за объяснение К сожалению не являюсь знатоком autotools, так-что не мог... весь текст скрыт [показать]
     
     
  • 4.38, llolik (ok), 16:00, 11/03/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    > он позволял проверить наличие библиотек/конкретных функций, но в стандарты не лез, по причине вышесказанного могу ошибаться.

    https://www.opennet.ru/docs/RUS/autoconf/autoconf-ru_4.html
    смотреть Macro: AC_PROG_F77 . Там описано как определяется компилятор и выставляются ключи.

     
     
  • 5.40, Совершенно другой аноним (?), 16:03, 11/03/2019 [^] [ответить]    [к модератору]  
  • +/
    >> он позволял проверить наличие библиотек/конкретных функций, но в стандарты не лез, по причине вышесказанного могу ошибаться.
    > https://www.opennet.ru/docs/RUS/autoconf/autoconf-ru_4.html
    > смотреть Macro: AC_PROG_F77 . Там описано как определяется компилятор и выставляются ключи.

    Спасибо

     
  • 5.41, Совершенно другой аноним (?), 16:13, 11/03/2019 [^] [ответить]    [к модератору]  
  • +/
    >> он позволял проверить наличие библиотек/конкретных функций, но в стандарты не лез, по причине вышесказанного могу ошибаться.
    > https://www.opennet.ru/docs/RUS/autoconf/autoconf-ru_4.html
    > смотреть Macro: AC_PROG_F77 . Там описано как определяется компилятор и выставляются ключи.

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

     
     
  • 6.42, llolik (ok), 16:46, 11/03/2019 [^] [ответить]    [к модератору]  
  • +/
    http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=blob;f=lib/autoconf/fort

    Вот модуль поддержки фортрана. С 288 макрос AC_PROG_FC.
    Принципиально да, для каждого компилятора определяется своя коммандная строка.

     
     
  • 7.47, Совершенно другой аноним (?), 17:44, 11/03/2019 [^] [ответить]    [к модератору]  
  • +/
    > http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=blob;f=lib/autoconf/fort
    > Вот модуль поддержки фортрана. С 288 макрос AC_PROG_FC.
    > Принципиально да, для каждого компилятора определяется своя коммандная строка.

    Спасибо за подсказку. Таки версии стандартов есть. Правда как я понял, он его не сам определяет, а ожидает что ему скажет пользователь. Возможно meson делает так-же, тогда вопросов по этому поводу нет. Ещё раз спасибо, за разъяснение.

     
  • 3.45, пох (?), 17:22, 11/03/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    весь прикол, как-то не замеченный авторами-улучшателями мира, в том, что autotools на конечной системе для сборки (даже для сборки вручную модифицированного кода и не в той единственно-верной конфигурации) совершенно не требовались, если только специально не сделать какой-нибудь вредной фигни.

    Возможность конфигурирования - оставалась.

     
     
  • 4.55, Аноним (50), 21:26, 11/03/2019 [^] [ответить]     [к модератору]  
  • +/
    autotools, которому 171 ничего не требуется 187 , пихает в исходники столько ... весь текст скрыт [показать]
     
     
  • 5.60, пох (?), 19:07, 12/03/2019 [^] [ответить]    [к модератору]  
  • +/
    > autotools, которому «ничего не требуется», пихает в исходники столько своих
    > супер-пупер-переносимых скриптов

    сколько? Целых четыре, в крайнем случае?

    > что проще было бы таскать с собой сабж вместе с исходниками питона

    мастер гипербол, ага.

    впрочем, пример мурзилы показывает, что ниасиляторы могут ухитриться даже засунуть таки питон поверх автоконфа (неосиляторы они ж неосиляторы везде, разобрать чужое и собрать заново теми тулзами, которые они кое-как осилили - для них тоже неосиливаемая задача)

    но быстрее почему-то не вышло.

     
  • 2.49, Аноним (50), 18:06, 11/03/2019 [^] [ответить]     [к модератору]  
  • +/
    Ну а как ты скажешь неизвестному компилятору, чтобы он использовал определённый ... весь текст скрыт [показать]
     
     
  • 3.53, пох (?), 18:13, 11/03/2019 [^] [ответить]     [к модератору]  
  • –3 +/
    а твоя программа, ну конечно же, немедля и соберется неизвестным компилятором ,... весь текст скрыт [показать]
     
     
  • 4.56, Аноним (50), 21:27, 11/03/2019 [^] [ответить]    [к модератору]  
  • +/
    Зато ты можешь не беспокоиться, что твоя программа не соберётся, правильно?
     
     
  • 5.61, пох (?), 19:11, 12/03/2019 [^] [ответить]    [к модератору]  
  • +/
    ну если вы владеете автоконфом, это не проблема - учитесь у авторов mono, которые сперва требовали миллион переменных окружения выставить, потом запустить автоконф каким-то особенно кривым образом, кажется, стоя в корне но не из корневого каталога, или  наоборот - а потом плевали в тебя полный скрин текста примерно такого содержания: "мы поддерживаем линукс, линукс, и примерно нихрена, а тут что-то другое, поэтому пойдите вон туда, создайте там каталог uname рядом с имеющимися, и напишите в него сотню мегабайт кода, который мы не умеем писать платформонезависимо, образцы рядом, документацию нам писать лень" и вываливались с ошибкой.

    без autoconf'а - вот как бы они это могли бы проделать?

     
  • 1.25, Аноним (25), 13:46, 11/03/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    как получить версию проекта из meson.build?
     
     
  • 2.29, альтернативный разработчик (?), 14:09, 11/03/2019 [^] [ответить]    [к модератору]  
  • +1 +/
    а вам зачем? Мы все равно поддерживаем только самую распоследнюю.

    git pull, чего там думать, трясите!

     
     
  • 3.44, Аноним (25), 17:19, 11/03/2019 [^] [ответить]     [к модератору]  
  • +/
    Номер версии проекта, конкретно мне, нужен для сборочных скриптов Не во всех пр... весь текст скрыт [показать]
     
  • 1.37, Аноним (37), 15:52, 11/03/2019 [ответить] [показать ветку] [···]     [к модератору]  
  • +/
    Пытался использовать meson под Widnows Очень тяжело идет В основном ревью кода... весь текст скрыт [показать]
     
  • 1.39, DmA (??), 16:00, 11/03/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    Что мы аля Микрософт что-ли, чтобы очевидным словом называть программу(почтовую -Mail,  браузер -Internet Explorer) make, пусть будет Мезоном или Глююоном.
    Это как номера машин у бандитов, памяти у них нет, поэтому покупают номера с одинаковыми цифрами и буквами, запомнить не могут.
     
  • 1.62, Аноним (62), 21:54, 12/03/2019 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Система, возникшая 42 года назад. 42...

    В треде есть на тему: не хватает функциональности (применено слово фокус).

    Ну, да, временами жаль, что из прогресса есть ещё что заимплементить.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2019 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor