The OpenNET Project / Index page

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

Сотрудник Red Hat представил сборочную систему Goals. Выпуск GNU Make 4.3

20.01.2020 10:18

Ричард Джонс (Richard WM Jones), автор libguestfs, работающий в компании Red Hat, представил новую сборочную утилиту Goals, нацеленную на устранение недостатков и проблем в утилите make при сохранении общей простоты и понятности сценариев. Утилита make проектировалась в 1976 году и имеет ряд концептуальных недоработок, в Goals планируется устранить эти недоработки, не меняя общей концепции. Исходный код Goals распространяется под лицензией GPLv2+.

Решаемые проблемы:

  • Поддержка только одной тактики разрешения зависимостей - "сборочная инструкция запускается, если целевой файл отсутствует, или он старее одной из зависимостей". В Goals планируется реализовать и другие тактики, такие как проверка наличия URL, сравнение времени изменения с любым файлом, оценка сборки пакета в Koji, сравнение контрольных сумм, запуск тестовых наборов с выборочным пропуском тестов.
  • При обработке сборочных целей утилита make не разделяет файлы и имена правил, и, как следствие, отсутствует проверка того, что при запуске правила действительно будет создан файл, создание которого заявлено. Например, если при наличии правила с именем "test", запускающего скрипты с тестами, случайно будет создан файл с именем "test", то тесты перестанут вызываться, так как make посчитает, что цель собрана и не требует выполнения каких-либо действий (для обхода проблемы в make можно указать директиву ".PHONY: test"). Goals явно разделяет файлы и имена правил.
  • Проблема с предоставлением только одного параметра для сборочных инструкций.

    В Goals предлагается использовать произвольное число именованных параметров. Например, можно отдельно выделить из имени признак отладочного файла:

  • Проблемы взаимодействия с shell-интерпретатором. Например, необходимость контролировать экранирование пробелов в именах файлов и каталогов, трата ресурсов на запуск отдельного shell-интерпретатора при выполнении каждой команды, двойная трактовка символа "$" (используется как в shell, так и в make), учёт отступов.

    Указанные проблемы решаются в Goals использованием символа "%" вместо "$" для сборочных переменных ("$" остаётся только для shell), применением парсера LALR(1), требующего обрамлять пути и имена файлов кавычками и выделять фигурными скобками блоки с кодом. Весь блок команда запускается в одном экземпляре командной оболочки, а внутри блока допускается произвольное форматирование кода, без привязки к специальным пробелам.

    
    Было:
        target: foo.o bar.o             
         ${CC} ${CFLAGS} $< -o $@       
    
    Стало:
        "target": "foo.o", "bar.o" {
            %CC %CFLAGS %< -o %@
        }
    

Другие особенности Goals:

  • Опциональная поддержка задания произвольных имён и параметров:
    
         goal all = : "target"
    
         goal link =
         "target" : "foo.o", "bar.o" { ... }
    
         goal compile (name) =
         "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }
    
  • Два режима запуска: режим make для сопоставления сборочных целей с именами файлов (например, файл "foo.o" соответствует цели "%name.o"), и режим прямого запуска компиляции:
    
         goal all = : link
    
         goal link =
         "target" : "foo.o", compile ("bar") { ... }
    
         goal compile (name) =
         "%name.o" : "%name.c", "dep.h" { %CC %CFLAGS -c $^ -o $@ }
    
  • Тактика сборки определяется специальными правилами, при помощи которых можно определять необходимость пересборки сборочной цели. Если осуществляется привязка к наличию файла, то это явно определяется через соответствующий признак ("target" для имени правила и *file("target") для проверки файла).
    
      "target" : "foo.o", "bar.o" { ... }
    
      *file("target") : *file("foo.o"), *file("bar.o") { ... }
    
  • Разработчик может определять произвольные признаки сборочных тактик. Признак "*file" определён по умолчанию (@{...} указывает на подавление вывода, а "exit 99" сигнализирует о необходимости пересборки):
    
       tactic *file (filename) = @{
          test -f %filename || exit 99
          for f in %<; do
              test %filename -ot "$f" && exit 99 ||:
          done
       }
    
  • Предлагается парсер сценариев на языке goals и runtime для выполнения языка, построения графа зависимостей и параллельного запуска работ. В состав входит стандартная библиотека вспомогательных функций, которые могут определяться на shell или с использованием специфичного синтаксиса сценариев goals. Функции могут вызываться как по имени, так и по шаблону (по аналогии с языком Пролог)
    
        function wildcard (wc) returning strings = @{
            shopt -s nullglob
            wc=%wc
            for f in $wc; do echo "$f"; done
        }
    
  • Из планов на будущее упоминается поддержка типов, отличных от строк, возможность определения значений параметров по умолчанию и поддержка анонимных функций.
    
        goal build (project, bool release = true) = ...
        build ("foo")
        build ("foo", false)
    
        let hello = { echo "hello" }
    
        let f = function (name, version) { CODE }
        f ("goals", "0.1")
    



    Тем временем, после почти четырёх лет разработки состоялся релиз системы сборки GNU Make 4.3. Кроме исправления ошибок, в новой версии можно отметить следующие улучшения:

    • Применение символа "#" внутри макроподстановок или при вызове функций теперь не обрабатывается как комментарий и не требует экранирования (например, теперь нужно писать "foo := $(shell echo '#')", а "foo := $(shell echo '\#')" будет приводить к выводу "\#").
    • Использование оператора '+=' для добавления к пустой переменной теперь не приводит к подстановке начального пробела, так же как и прикрепление пустой строки в конец переменной не приводит к добавлению финального пробела.
    • Добавлена возможность явного определения правил, генерирующих несколько сборочных целей при одном вызове. Для использования данной возможности при определении сборочной цели вместо символа ":" в правилах следует использовать "&:";
    • Реализована переменная ".EXTRA_PREREQS", через которую можно задать необходимые для цели дополнительные компоненты;
    • В Makefile теперь допускается выставление опции '-j' в переменных MAKEFLAGS для запуска в параллельном режиме;
    • Добавлена возможность использования вызова posix_spawn() вместо fork/exec;
    • Применяемый в Windows лимит на 63 параллельные работы (включая субпроцессы, запускаемые через выражения "$(shell)") увеличен до 4095;
    • Добавлена опция "--no-silent", отменяющая действие флагов "-s", "--silent" и "--quiet";
    • Добавлен сокращённый вариант опции "--eval" - "-E";
    • Для всех операций раскрытия по маске, включая "$(wildcard ...)", теперь применяется сортировка результата (для обеспечения предсказуемого на разных платформах поведения);
    • Добавлена поддержка новых версий Си-библиотек Glibc и musl;
    • Внесены оптимизации производительности;
    • Код перемещён из корня архива в каталог src/*.


  1. Главная ссылка к новости (https://lists.gnu.org/archive/...)
  2. OpenNews: Релиз системы сборки CMake 3.16
  3. OpenNews: Проект Qt прекращает разработку сборочной системы Qbs в пользу CMake
  4. OpenNews: Выпуск системы сборки GNU Make 4.2
  5. OpenNews: Разработчики из компании Google открыли код системы сборки Ninja
  6. OpenNews: Выпуск сборочной системы Bazel 2.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/52215-make
Ключевые слова: make, goals, build
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (120) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.18, CrazyAlex (?), 11:49, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +13 +/
    Хм, на вид - на удивление прилично, без революций - просто фикс очевидных проблем
     
     
  • 2.36, Урри (?), 14:27, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    ... - просто набор новых проблем
    исправил, не благодарите.

    Вот чем .PHONY автору помешал то, например? Отличная же удобная штука.

     
     
  • 3.41, 1 (??), 15:08, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Где новость о разработке отечественного аналога github?
     
     
  • 4.46, Чиновник (?), 15:18, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Где новость о разработке отечественного аналога github?

    Никто ничего не разрабатывает. Деньги ещё не выделили

     
     
  • 5.71, pin (??), 18:08, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Надо не выделения ждать, а учиться осваивать.
     
  • 4.49, myhand (ok), 15:26, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Еще гипертекстовый фидонет не освоили, а вы уж губу раскатали...
     
     
  • 5.114, доктор Хаус (?), 14:23, 21/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    одобряэ
     
  • 4.64, Аноним (64), 17:07, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Если туда сразу импортнуть все репы спеков сизифа - то взлетит. Но даже такое сомнительное действие - не будет сделано и проект будет там же, где и поисковник спутник.
     

  • 1.1, Аноним (1), 10:43, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    systemd... firewalld...
    Теперь пришел черед make?

    "Тенденция..." (с)

     
     
  • 2.15, Аноним (-), 11:35, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    И как всегда редхатчики выкатят голимый макет билдсистемы на пихоне, да?
     
     
  • 3.59, dimcha (??), 16:26, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Requirements:

    - OCaml compiler

     
     
  • 4.69, Аноним (-), 17:53, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    О, они таки Vkni услышали! :)
     
  • 4.70, Аноним (70), 17:59, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ага а потом как с ансиблом будет требовать питон на удаленной машине для работы модулей, даже для самых простых модулей, типа создать папку или установить пакет. Причем питон второй. А например в последней лтс Убунте питон2 из коробки не идет. И это для системы управления конфигурации которая заявляет что для управления достаточно ssh доступа и клиент на удаленную машину ставить не надо.
     
     
  • 5.78, Аноним (78), 18:55, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Что поделать, Убунта не готова для серверов.
     
  • 5.98, Vkni (ok), 22:00, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Не, Камл компилируется в самодостаточный бинарник. Хотя, конечно, что-то диковатое там есть - оно требует make и autoconf для сборки.

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

     
  • 4.83, Vkni (ok), 19:07, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    A-aaaa!!!!
     
  • 3.96, Vkni (ok), 21:56, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Удивительным образом - нет. Макет действительно на Камле, причём очень маленький.
     
  • 2.26, анонимно (?), 13:32, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ну, надо понимать что многие подсистемы Linux старые как мамонты и их экскременты. Множество легаси, кривых решений и т.п. тормозят развитие.
     
     
  • 3.63, Аноним (63), 17:01, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Сделай прямо сейчас все за нас и лутше. Я жду.
     
     
  • 4.99, Аноним (99), 22:07, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    дык вот сотрудник редгад уже сделал - а вы чем-то недовольны!

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

     
     
  • 5.116, Аноним (78), 15:03, 21/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > придется тянуть в каждую систему, где понадобится эту хрень собирать?

    Здоровые люди поставят через apt/yum. На половые трудности альтернативно одарённых им как-то пофиг.

     
     
  • 6.121, пох. (?), 11:28, 24/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    в репо-то у здоровых, только немножечко альтернативно-одаренных людей, оно - из космического эфира возьмется, а не от того, что кто-то таки настроил сборку всей криво-косой этажерки сборочных инструментов для него.

     
  • 2.33, Anonymqwe (?), 14:12, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Goals исследовательский проект, никого не гонят на него переходить.
     
     
  • 3.50, make (?), 15:29, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это пока не гонят.
     
  • 3.60, Аноним (60), 16:46, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    на systemd тоже не гнали.. а потом бах.. и проголосовали правильно в Debian.
     
     
  • 4.79, Аноним (78), 18:56, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Ну так все, кому systemd не нравился, ушли на винду ещё раньше.
    Поэтому все результаты голосования теперь вполне предсказуемы.
     
     
  • 5.91, пох. (?), 19:45, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну так все, кому systemd не нравился, ушли на винду ещё раньше.

    наоборот - все кому он нравился, с винды на самом деле никуда и не уходили.

    Провозглашают год линукса на десктопе, ага!

     
     
  • 6.107, Аноним (78), 11:11, 21/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Те, кому он нравится, пользуются им.
    Те, кому не нравится — не пользуются.
    Ни на каких ядрах, кроме Linux, он не работает.

    Похоже, ваша вера сильнее логики.

     

  • 1.2, Аноним (2), 10:44, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    >http://

    Сразу ффтoпкy.

     
  • 1.3, Аноним (2), 10:45, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Есть же ckati.
     
     
  • 2.14, Аноним (14), 11:34, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Он заточен для ускорения сборки под android и по сути просто преобразует  Makefile в формта ninja.
     
     
  • 3.97, Аноним (2), 21:57, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Во-первых, не только Android.
    Во-вторых, ещё одна низкоуровневая системы сборки не нyжнa. Ниндзи достаточно. Кому нужны параллельные Makefileы, тот может использовать ckati. Кому нужно круче, может использовать альтернативы покруче.
     

  • 1.4, EndrII (?), 10:46, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    что-то этих сборочных систем стало слишком много ...
    чем больше их, тем сложнее разработчикам. потому что если нужная вам библиотека не поддерживает вашу систему сборки, вы должны горадить костылями ..
     
     
  • 2.7, Аноним (2), 11:00, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +7 +/
    >горадить

    Это как?

     
  • 2.17, llolik (ok), 11:42, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Широкоиспользуемых целых две : make и ninja.
    Как-то ИМХО очень неоднозначный термин "сборочная система" - это и конфигуратор, генерирующий скрипт для make/ninja (meson/cmake), и собственно сборщик "бэкенд" make/ninja.
     
  • 2.51, Неопенсурсныйдыбыл (?), 15:31, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вся суть опенсруса. Жуйте эти коричневые массы и не благодарить.
     
     
  • 3.68, Аноним (-), 17:51, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Можно подумать, вас кто-то заставляет пользоваться. Пишите все сами, с нуля, коли у вас там корпорация МакЛаудов.
     

  • 1.5, Ноним (?), 10:56, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –13 +/
    cmake лучше

    >требующего обрамлять пути и имена файлов кавычками и выделять фигурными скобками блоки с кодом

    сразу ф-топку. Писанины должно быть меньше, а не больше

     
     
  • 2.10, luciy_marciy (?), 11:13, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Эмм, CMake - это генератор файлов для сборочных систем. То есть если goals зарелизится и будет популярной, то CMake потом сможет и её файлы создавать
     
     
  • 3.21, Ноним (?), 12:22, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –14 +/
    Нет. CMake - это сборочная система. Никто не читает те makefiles что там cmake нагенерировал.
     
     
  • 4.22, Корец (?), 12:34, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как это никто? Сам мейк читает потом эти файлы и по ним собирает.
     
     
  • 5.37, Урри (?), 14:29, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    или вижуалстудия, или ант, или что там он еще сгенерирует.
     
  • 2.30, Сишник (?), 13:49, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Ну так в нормальном make файле писанины меньше, чем в cmake
     
     
  • 3.74, Ноним (?), 18:10, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Смешно
     
     
  • 4.76, neAnonim (?), 18:35, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Увидел палец через свой носок?
     
     
  • 5.87, Аноним (78), 19:14, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Через свой нос. Это вам не носок, тут свободный полёт мысли нужен.
     
  • 4.103, Led (ok), 00:38, 21/01/2020 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Смешно

    Хипстерок, у тебя носок из кроссовка выглядывает.

     

  • 1.6, Аноним (6), 10:57, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    имя немного неудачное. Назвал бы ее goatsee - пришел бы к определенному успеху.

     
  • 1.8, Аноним (8), 11:04, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Все на мезон и ниндзю перешли с автотулзов? Начинаем новый виток прогресса!
     
     
  • 2.12, Аноним (-), 11:29, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Иначе этих вебмакак придется уволить же... а им этого не хочется. Приходится имитировать бурную деятельность, резко находя фатальные недостатки во всем вокруг.
     

  • 1.9, Аноним (9), 11:09, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    А есть система сборки, чьи «мейкфайлы» можно читать, а не только писать? Эти потомки шелл-скриптов уж слишком ногострельны.
     
     
  • 2.13, Аноним (-), 11:31, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ничего в них особо ногострельного нет. Ногострельно будет если это генерить какой-нибудь супер-пупер билдсистемой, это то понятное дело генерит такое что это впору objcopy просить это "читать".
     
     
  • 3.81, Аноним (78), 19:00, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Без какой-нибудь супер-пупер билдсистемы в проектах сложнее приветмира Makefile поддерживать нереально.
     
  • 2.23, Аноним (23), 12:59, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Самая лучшая система, это та которую сделаешь сам!
    Психиатры рекомендуют "синдром отличника", Линус Торвалдс обязательно должен подписаться ;)
     
  • 2.25, Аноним (25), 13:17, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > А есть система сборки, чьи «мейкфайлы» можно читать, а не только писать?

    Есть. make. И mk ещё.

     
     
  • 3.85, Аноним (78), 19:11, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    В make можно либо read, либо write. Если write, а потом read, то упадет с EIO.
     
  • 2.52, leap42 (ok), 15:37, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Meson же
     

  • 1.11, Аноним (11), 11:16, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > сотрудник RedHat

    это уже стало плохим трендом

     
     
  • 2.16, Аноим (?), 11:39, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Для кого?
    Для супер-пупер одмина, который почивал на лаврах и вдруг обнаружил, что его знания обесценились, нужно вставать с тёплой печки и идти читать документацию и освежать знания?
    Ну да, для таких типов - плохой тренд, согласен.
     
     
  • 3.56, Аноним (25), 16:01, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Vascom, залогинься.
     
  • 2.47, Owlet (?), 15:22, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Переходите на Windows, там сотрудники Red Hat не поддерживают добрую половину экосистемы.
     

  • 1.20, yet another anonymous (?), 12:18, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ooops. Из "фиксов" --- только % вместо $, чтобы убрать escapes для shells. Хммм, хотя что получится для implicit rules?

    Второй "фикс" --- использование {} для обрамления action.

    Остальное --- попытка переизобретения того, что в GNU make (или, тем паче, в BSD make) существует лет пятнадцать как.

     
     
  • 2.32, пох. (?), 14:07, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    модное молодежное поколение - одобряет. Шелл они не умеют, кстати, все равно.
    bsd make - не умеют тем более.

    Я, правда, не знаю, зачем им и этот goats...простите, goals - все равно они единственный cpp файлик компилируют с помощью ninja, их гугель так научил.

     
     
  • 3.72, Анонимчжан (?), 18:08, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    а не проще с одним файликом gcc запустить? чес слово  со всеми этими сборочными системами можно двинуться. раньше народ собирал все проще.
     
     
  • 4.80, Аноним (80), 18:56, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Когда раньше-то, во времена автотулов?
     
     
  • 5.86, Аноним (78), 19:13, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Во времена сборки однострочником на шелле, безо всяких make, как ветераны Юникса завещали.
     
     
  • 6.90, пох. (?), 19:40, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Во времена сборки однострочником на шелле, безо всяких make, как ветераны Юникса
    > завещали.

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

    Но новые-модные гуглопрограммисты не умеют однострочников на make.

     
     
  • 7.108, Аноним (78), 11:14, 21/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Однострочник на bash, однострочник на make — в любом случае это полностью характеризует максимальный уровень сложности проектов, с которыми работают «ветераны юникса»™ «давайте-оставим-всё-как-было»®.
     
     
  • 8.112, пох. (?), 12:42, 21/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    да-да - а модные молодежные, полагают, что уж у них-то давайте все развалим и в... большой текст свёрнут, показать
     
     
  • 9.115, Аноним (78), 15:00, 21/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Совсем потерял нить беседы Какого гуглоразработчика Вас, что ли ... текст свёрнут, показать
     
  • 4.89, пох. (?), 19:34, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > а не проще с одним файликом gcc запустить?

    я полагаю, альтернативно-одаренный гуглоразработчик просто реально НЕ ЗНАЕТ как его запустить.
    Вот вообще.

     
     
  • 5.94, анонимуслинус (?), 20:09, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    это беда конечно.)) я понится свой первый хелловорлд именно gcc компилил. и это как бы была норма. тогда даже пользователи хр знали походу как запустить прогу через их недоконсоль. но кажется народ отучили либо думать , либо у них игра такая - напиши то что есть и потом пытайся его исправлять.))
     
     
  • 6.111, Аноним (78), 11:22, 21/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Вы не поверите, в увлекательном мире Go до сих пор обходятся однострочником [цитата]«go build»[конец цитаты].

    Но люди более прошаренные вспоминают общий приговор принципу KISS — «сделайте систему, которой смогут пользоваться дyраки, и только дyраки будут ею пользоваться».

     

  • 1.24, Аноним (24), 13:11, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Пусть сами используют свой Goals на проприетарном people.redhat.com
     
     
  • 2.38, Аноним (38), 14:41, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > на проприетарном

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

     
     
  • 3.84, Аноним (78), 19:09, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Юрисдикция там — планета Нибиру, очевидно.
    Ящерикомасоны управляют прогрессом ядра Linux, изобретают systemd, навязывают прививки...
     

  • 1.27, Аноним (27), 13:33, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что интересно, написано на ML....
     
  • 1.28, анонимно (?), 13:33, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    Хорошо бы все конфиги в линях причесали под единый json...
    (ну так, мечтаю немного)
     
     
  • 2.35, Аноним (35), 14:23, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А почему JSON? А если кому-то нравится YAML, XML, ...
     
     
  • 3.57, Аноним (25), 16:04, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Потому что в YAML и XML поддерживаются комментарии, а в JSON — нет. Чтобы все страдали, а не только макаки.
     
     
  • 4.66, Аноним (64), 17:32, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Отсутствие комментариев это хорошо! Но строгие пробелы - еще лучше. Совместить бы отсутствие пробелов в json и строгую индентацию в yaml - получился бы эталонный уродец
     
     
  • 5.77, neAnonim (?), 18:39, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    yaml включает в себя весь json. Он просто расширяет синтаксис. (по другому,  корректный json читается и yaml парсером)
     
     
  • 6.88, Аноним (78), 19:21, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Скорее, JSON — формат обмена данными между программами, YAML — для редактирования людьми, отсюда и специфичные расширения, типа комментариев, алиасов/якорей и type hints. А растёт оно всё из одного protobuf-а.
     
     
  • 7.92, Аноним (25), 19:48, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А растёт оно всё из одного protobuf-а.

    Завязывай с этой травой, а? protobuf бинарный вообще-то.

     
     
  • 8.109, Аноним (78), 11:17, 21/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Естественно, так как бинарный формат эффективнее текстового, и поэтому первичен ... текст свёрнут, показать
     

  • 1.29, Аноним (80), 13:41, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Эта новость оскорбляет религиозные чувства верующих в UNIX единый и неделимый.
     
  • 1.34, Урри (?), 14:19, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Шо, апять кто-то нашел фатальный недостаток?

    Фатальный недостаток в утилите, которая уже 50 лет верой и правдой служит человечеству и которая на данном историческом этапе работает одновременно, наверное, миллионом своих инстансов?

    Штош. Фпиред и песней!

     
  • 1.39, Аноним (39), 14:46, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Рабы красношляпников на месте?
     
     
  • 2.44, Аноним (44), 15:13, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Покажите хоть одну группировку гордых анархистов, сумевшую просуществовать хотя бы одно поколение и существующую не за счёт награбленного.
     
     
  • 3.65, Аноним (-), 17:24, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    GNU не считается?
     
     
  • 4.100, Аноним (99), 22:12, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    нет. Их даже на одно поколение не хватило. Продались редгаду с потрохами.

    Скорее уж freebsd, но без gnu они до сих пор компиляли бы свой find своим неработающим cc.


     
     
  • 5.110, Аноним (78), 11:19, 21/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Скорее уж freebsd

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

     
     
  • 6.118, White Human (?), 01:36, 22/01/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Если ты не в курсе, то линукс сообщество тоже верой и правдой служит корпоративным покровителям... в качестве бетатестеров, разумеется. Ведь так называемое сообщество не в состоянии написать ничего, что сложней просмотрщика фотографий.
    Линукс отличается от винды только тем, что IBM даёт его поюзать бесплатно(пока?). А так это всё такой же корпоративный продукт, создаваемый корпорациями для нужд корпораций.
     

  • 1.40, нона (?), 14:55, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Шило на мыло. Причем последнее еще нужно будет ставить, чтобы собрать очередной проект. Тогда как шило всегда под рукой. У make есть куча проблем:
    — нет state-файла со статусом целей и  соответственно эфемерных целей. Это приводит к повсеместному раскидыванию "touch $@", а также
    к костыльной реализации runtime deps.
    — make не создает сам директории, очень напрягает, отсюда повсеместная практика цели создавать рядом с зависимостями, а не в отдельной дире.
    — куцый набор встроенных функций и фильтров, в любой непонятной ситуации приходится откатываться на shell + find, а это достаточно хрупкое решение.

    Озвученные цели goals (pun intended) это фигня и частично решены доп-возможностями gnu make. А "в Goals планируется реализовать и другие тактики, такие как проверка наличия URL, сравнение времени изменения с любым файлом, оценка сборки пакета в Koji, сравнение контрольных сумм, запуск тестовых наборов с выборочным пропуском тестов" (omg) это какие-то сугубо частные случаи, которые в том же make делаются без дополнительных сущностей и раздувания семантики.

     
     
  • 2.42, user (??), 15:12, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    >нет state-файла со статусом целей и  соответственно эфемерных целей

    Смежная проблема:
    есть софт, который сравнивает новое содержимое файла со старым и при совпадении не перезаписывает. Дальнейшие зависимости успешно не запускаются, но этот шаг каждый раз переделывать.

    Нужно отслеживать время подтверждения актуальности файла (в идеальном мире это было бы ещё одним атрибутом файла).

     

  • 1.43, нона (?), 15:12, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Вообще, единственное что сейчас может заменить make в нише организации сопроводительных процессов для кода, это что-то написанное на python/perl/shell (хотя новье на perl это будет номер). Всем остальным инструментам нужно биться с порогом установки, какими бы они не были распрекрасными в использовании.
     
  • 1.45, Аноним (45), 15:14, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ура, новая система сборки!
     
     
  • 2.53, Аноним (53), 15:52, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Тут на самом деле когда инструменты все херовые их начинают плодить как пирожки.
    Вот и результат сотни каких-то ущербных инструментов.
     
     
  • 3.55, нона (?), 16:00, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Скорее задача кажется простой, поэтому много кто засучивает рукава и получается, что получается. Казалось бы всего лишь обход графа. Но столько еще неожиданных деталей.

    cmake/meson/bazel по крайней мере берут львиную долю конфигурации типовых проектов. А сабж вообще не понятно зачем нужен.

     

  • 1.54, Аноним (53), 15:54, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Итак, я как обычный разработчик на Си порадовался, что наконец-то можно откзааться от Meson и убрать зависимость от Python 3 и решил сборать:

    1. Ошибка первая:

    # git clone git://git.annexia.org/git/goals.git
    Cloning into 'goals'...
    fatal: remote error: access denied or repository not exported: /git/goals.git

    2. Ошибка вторая:

    configure: error: OCaml compiler is required

    Ой, все. Идите в лес со своей сборочной системой. Её еще надо самому умудриться собрать это уйму времени протратить.

     
     
  • 2.58, нона (?), 16:06, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Итак, я как обычный разработчик на Си порадовался

    Ошибка нулевая: Посмотрел в сторону инструмента, который даже в dep-файлы gcc/clang не умеет. Кто вообще руками расставляет зависимости на заголовки в мало-мальски сложном проекте?

     
     
  • 3.101, Аноним (99), 22:13, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Кто вообще руками расставляет зависимости на заголовки в мало-мальски сложном проекте?

    разработчики на нескучных язычках, для которых нет gcc/clang ?

     

  • 1.61, Аноним (63), 16:50, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    "такие как проверка наличия URL"

    Дальше можно не читать, мусорный проект.

     
  • 1.62, б.б. (?), 16:57, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    make make great again
     
  • 1.67, Аноним (70), 17:45, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А если не будут брать отключим газ т.е. системд.
     
  • 1.73, Michael Shigorin (ok), 18:10, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    rjones@, конечно, крутой дядька, но вот это --
    > оценка сборки пакета в Koji

    -- ну совсем вендороспецифичный мегакостыль.

     
  • 1.75, Аноним (75), 18:12, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >Goals

    Чуть с Goats не перепутал.

     
  • 1.93, Имя (?), 19:54, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Надо ещё порадоваться, что оно тихо-мирно помрёт в парочке проприетарных проектов. Вот если бы некто задался целью сделать свой systemd-maked, тогда бы всем его в глотку запихнули уже через пару лет.
     
     
  • 2.102, пох. (?), 22:15, 20/01/2020 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Радоваться будете - _если_ и когда - помрет.

    А так - запихнуть вам могут вовсе и не только то, что начинается на букву s.

     
     
  • 3.117, Аноним (78), 15:06, 21/01/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > А так - запихнуть вам могут вовсе и не только то, что начинается на букву s.

    Это опенсорц и меритократия, детка. Кто не участвует в разработке — может подтeреться своим Офигенно Ценным Мнением и идти кoпротивляться на «истинно свободные»™ ОС, типа винды и мака.

     

  • 1.95, Аноним (95), 21:52, 20/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    Не понимаю, почему тут пишут про cmake/meson/другой модный генератор.
    Утилита - аналог make и ninja скорее.
    Вообще не плохо, пусть будет, есть другие генераторы в нее научить =)
    Но хотелось бы от автора сравнения с ninja прежде всего, т.к. многое и там
    так же решено уже.
     
     
  • 2.104, Led (ok), 00:48, 21/01/2020 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Хипстерок, ты отстал от трэндов: ninja уже давно для лохов, нормальные пацаны используют вместо него samuraj.
     
     
  • 3.119, Аноним (119), 10:38, 22/01/2020 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Не реализует msvc deps handling, нахрен такое нужно.
    Так что буду лохом, пожалуй, дальше ;)
     

  • 1.105, Аноним (105), 04:51, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Каждый разработчик должен представить свою систему сборки, с шахматами и поэтессами !!!
     
  • 1.106, bvs23bkv33 (?), 10:53, 21/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    https://github.com/natanbc/main.c-is-the-makefile
     
     
  • 2.113, пох. (?), 12:46, 21/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > https://github.com/natanbc/main.c-is-the-makefile

    фугадость, это ж gnu-only!

     

  • 1.120, Аноним (120), 13:22, 23/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    ненене
    уже лучше на perl писать билд-скрипты
     
     
  • 2.122, пох. (?), 11:32, 24/01/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    тот хотя бы придумал человек, умеющий пользоваться клавиатурой, ага.

    А это - явно кем-то, набирающим код на сенсорном экране изобретено.

     

  • 1.123, Аноним (123), 12:29, 28/01/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё, что нужно было сделать - добавить/расширить встроенные функции, которые можно использовать в мейкфайлах. Что-то, похожее на стандартную библиотеку в С. Но не это!
     
  • 1.124, Аноним (124), 14:29, 09/01/2021 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    make курильщика
     

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



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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