[О блоге] [наверх] [пред] [2022-05-02 13:26:37+03:00] [a39147139989a8b7691927565501f986f93a9fc2]
Темы: [redo]

Нужен ли Autotools?

https://www.owlfolio.org/development/autoconf-swot/
https://lwn.net/Articles/834682/
Автор одного из релизов Autoconf описывает за и против использования
этой системы. Не раз много где было сказано, его актуальность, из-за
куда лучшей совместимости и стандартизации между разными ОС, мала.
Среди опасностей для этой экосистемы выделяет тенденцию и любовь
собираться из git checkout-ов и vendor-изации зависимостей.

    [оставить комментарий]
    комментарий 0:
    From: David Rabkin
    Date: 2022-05-08 01:28:55Z
    
    Перешел с apenwarr/redo на твою goredo, смотри контейнеры:
     https://github.com/rdavid/shellbase
    
    Это — песня и сказка по производительности. Спасибо!
    
    Замечания по ходу:
    - Нет длинных имен параметров. В скриптах я люблю писать --jobs, а не -j.
    - Есть баг в описании: нужно -j=10, а не -j 10.
    
    И, главное, я не понял, как тебе патчи посылать.
    
    комментарий 1:
    From: Sergey Matveev
    Date: 2022-05-08 07:12:33Z
    
    *** David Rabkin [2022-05-08 04:27]:
    >Перешел с apenwarr/redo на твою goredo
    
    Здорово!
    
    >- Нет длинных имен параметров. В скриптах я люблю писать --jobs, а не -j.
    
    Я тоже люблю и стараюсь, именно в скриптах, писать длинные параметры.
    Self-describing, так сказать. Но стандартная flag библиотека только одно
    имя для флага позволяет задавать. Поэтому или:
    
    * использовать стороннюю дополнительную зависимость, другую библиотеку
      парсинга аргументов командной строки. Чего мне очень не хочется
    * или усложнять и дублировать goredo код, делая по две опции, которые бы
      ссылались на одну и ту же переменную. Геморрой
    * ну или считать что это что-то типа BSD-like утилиты, где длинные опции
      не приняты. Да и, собственно, POSIX-овский getopt длинные опции не
      принимает, поэтому код с короткими и длинными опциями был бы не POSIX
      (использовал getopt_long) или имел бы собственный (ну или third-party)
      парсер
    
    Я оставил короткие опции ради некой совместимости с другими redo
    реализациями. А конкретно "-j" всё же используется и в Make-ах и даже в
    какой-нибудь ninja -- это что-то типа уже принятой условности.
    
    Я не то чтобы защищаю короткие опции и "-j", но ради длинной опции, коих
    не много в goredo, что-то усложнять или добавлять зависимость не хочу.
    
    >- Есть баг в описании: нужно -j=10, а не -j 10.
    
    "-j X" точно работает. Я только так его и использую, в том числе
    проверял на GNU/Linux системах. "-j=10" тоже будет работать, но чем это
    написание было бы лучше? Ты точно не путаешь "-jX" и "-j X"? Первый
    вариант, который бы работал в Make-ах, в goredo, действительно, не
    сработает (опять же, ограничение стандартного парсера).
    
    >И, главное, я не понял, как тебе патчи посылать.
    
    Ну на главной странице сайта или info файла написано:
    
           Please send questions, bug reports and patches to goredo-devel
        (http://lists.cypherpunks.ru/goredo_002ddevel.html) maillist.
        Announcements also go to this mailing list.
    
    комментарий 2:
    From: David Rabkin
    Date: 2022-05-08 15:00:55Z
    
    > Но стандартная flag библиотека только одно имя для флага позволяет задавать.
    Почитал мануал, ты прав.
    
    > делая по две опции, которые бы ссылались на одну и ту же переменную
    Это не так уж очевидно сделать, библиотека сопротивляется. Юникс-вей!
    
    > ради некой совместимости с другими
    Как раз, у apenwarr/redo есть длинные параметры :-)
    
    > "-j X" точно работает.
    Это у меня баг был, я же redo в контейнерах запускаю. Внимательный
    читатель, найди баг.
    Не работает:
     CMD [ "redo", "-j 10", "-x", "test" ]
    Работает:
     CMD [ "redo", "-j=10", "-x", "test" ]
    Полный файл:
     https://github.com/rdavid/shellbase/blob/master/container/alpine/Containerfile
    
    Также не понял, как твой паблик ки в скрипте добавлять для жипижи. И
    имеет ли такая проверка смысл в скриптах? По-моему, нет.
    
    комментарий 3:
    From: Sergey Matveev
    Date: 2022-05-08 15:35:29Z
    
    *** David Rabkin [2022-05-08 17:59]:
    >> делая по две опции, которые бы ссылались на одну и ту же переменную
    >Это не так уж очевидно сделать, библиотека сопротивляется. Юникс-вей!
    
    Я это сказал наобум, ни разу не делав :-)
    
    >Как раз, у apenwarr/redo есть длинные параметры :-)
    
    Ну вот я только у него вроде их и видел. В Python argparse позволяет
    сразу же задавать и длинное и короткое имя параметра. В общем -- я тоже
    люблю длинные (в скриптах), но тут уж ради похожести на преобладающее
    большинство остальных, оставляю короткие.
    
    >CMD [ "redo", "-j 10", "-x", "test" ]
    
    Это частая ошибка :-)
    
    >Также не понял, как твой паблик ки в скрипте добавлять для жипижи. И
    >имеет ли такая проверка смысл в скриптах? По-моему, нет.
    
    Если в скрипте чётко прибивается версия, чётко заданный URL, то я бы
    просто прибивал проверку напротив хэша. Типа как тут:
    http://www.git.cypherpunks.ru/?p=gostls13.git;a=blob;f=gogost-install.sh;h=19a9b484ecbc565ab96fab8997e8c493952be792;hb=c69d405a5cd758c8a4ee6d150a749f780f9ca972
    Проверка подписи тут уж ничего дополнительного не даст -- мне тоже так
    кажется. Проверку ты, как автор shellbase, делаешь один раз, получаешь
    на её основе доверие к tarball-у, и прибиваешь это доверие гвоздями к
    конкретному хэшу.
    
    комментарий 4:
    From: David Rabkin
    Date: 2022-05-08 21:33:26Z
    
    >прибивал проверку напротив хэша
    Так и сделал!