The OpenNET Project / Index page

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



Индекс форумов
Составление сообщения

Исходное сообщение
"В Firefox 98 для некоторых пользователей будет изменена поис..."
Отправлено keydon, 18-Фев-22 22:31 
> приведи конкретный пример "сделанного не по уму" в дереве исходников хромиума, мой
> юный теоретик-мейкфайльщик

Ну нас сразу встречает fetch из depot_tools. Это штука "чтобы легко чекаутить в одну команду".
Замечательная обертка, просто полюбуйтесь на этот великолепный код с лишним условием:
if [[ $GCLIENT_PY3 == 1 ]]; then
  # Explicitly run on Python 3
  PYTHONDONTWRITEBYTECODE=1 exec vpython3 "$base_dir/fetch.py" "$@"
elif [[ $GCLIENT_PY3 == 0 ]]; then
  # Explicitly run on Python 2
  PYTHONDONTWRITEBYTECODE=1 exec vpython "$base_dir/fetch.py" "$@"
else
  # Run on Python 3, allows default to be flipped.
  PYTHONDONTWRITEBYTECODE=1 exec vpython3 "$base_dir/fetch.py" "$@"
fi
Все, больше эта обертка ничего не делает.
fetch.py тоже по сути обертка, запускает git submodule foreach. Обертка над оберткой над гитом, верный признак отличного кода. Зачем нужна это обертка? Да потому что у гугла кроме обычного гита еще есть gclient и как это водится у программистов, создал проблему, решил проблему, получил с полки пряник за работу.
А внутри кучка print'ов соседствует с docstrings
    print('Your current directory appears to already contain, or be part of, ')
...
    print('failed, delete the checkout and start over (crbug.com/230691).')
    return 1

  print(textwrap.dedent("""\
    usage: %s [options] <config> [--property=value [--property2=value2 ...]]
...
    Valid fetch configs:""") % os.path.basename(sys.argv[0]))
Добавляем все это в PATH ручками (что я считаю хорошо), запускаем. Итак, вместо git submodule foreach у нас уже 3 файлика (создание .gclient ни откуда не очевидно если не лезть в исходники).
Дальше нас встречает еще одна обертка https://github.com/chromium/chromium/blob/main/build/install.... Она призвана...тада! установить зависимости для разных версий убунт!
Тут у нас уже баш. Не очень понятно чем это продиктованно, могли бы и в первой обертке использовать баш или и в этой уже питон, раз все равно его притянули. Но понимаем, корпорация гигантская, хотелки у всех разные.

Встречаем великолепные штуки. Например, если дистрибутив не поддерживает, значит зависимость не ставим и никому про это не расскажем.
# Some packages are only needed if the distribution actually supports
# installing them.
if package_exists appmenu-gtk; then
  lib_list="$lib_list appmenu-gtk"
fi
...
if package_exists snapcraft; then
    dev_list="${dev_list} snapcraft"
fi
Да, ничего из этого сюда не попадет
      echo "WARNING: The following packages are not installed:"
      echo -e "${not_installed}" | sed -e "s/^/  /"
И да, мы ставим снапкрафт, чтобы вы не могли просто собрать все в контейнере (а мы в 2022 году по заветам гугла и навязанной им девляпс философии собираем все в билд контейнерах), а еще повозились и настроили его на nested контейнеры. Напомню, все эти обертки как будто бы для упрощения сборки.
Ну что ж установили мы все зависимости? Ан нет, нам еще бинарники нужны. Точнее гооооры бинарников. Запускаем обертку над оберткой gclient, что-то происходит, магический дым, запускаются какие-то команды о которых мы не предупреждены. Может и не нужно это, может он вирусню скачивает, никто все равно никогда смотреть что же там творится. Это набор хуков (читай что угодно) из кучи связанных проектов, какие-то шрифты, какие-то либы (может даже повторяются), какие-то шрифты, бинарники для тестов (или нет?), что там только не качается с гугловского стораджа. Крайне страшная и непрозрачная штука, уверен я только в том что такого в нормальном CI быть не должно. Примерно на этом этапе технари уже уснули и менеджеры добавили возможность опционально указать ключ чтобы пользоваться гугловскими сервисами.
Само собой гугл не был бы гуглом (а яндекс яндексом), если бы сейчас нам не пришлось запустить еще один софт от гугла - систему генерации файлов для нинзи GN. Я не знаю почему gn, может быть подскажите (конец иронии) ? Но ЕМНИП история гласит что гуглу все не понравилось и он снова создал свое. Только вот остальным уже этот зверь не понравился и поэтому обитает он только в гугляндии.
Ну и собственно запускаем нинзю. И да, файрфокс собирается гораздо быстрее.
Казалось бы ничего нового: скачали исходники, поставили зависимости, скачали блобы(да, это внезпано и не специфично для открытых проектов, и да, человек который 20 лет назад решил выяснить что же там происходит еще не вернулся), запустили нинзю.
Но все обмазано этими бесконечными обертками. Наверное процесс сборки стал в один клик? Нет. Наверное стало досконально понятно что происходит во время сборки? Нет. Наверное все внутри такое независимое и не зависит от сторонних проектов (да, я сэкономил ваше время и не акцентрировал на это внимание)? Нет. Ну хоть скрипты сборки? Нет. А что ж они тогда написаны словно сишными программистами яндекса? Ну да ладно, скрипты то эти хоть изящные? Нет. Наверное проект стал независимее от гугла? Нет, наоборот, прям все кричит о том что это проект гугла и остальным сюда лучше не лезть, хотя это инструкция для посторонних, для сотрудников гугла есть отдельная инструкция...Это мы еще до исходников не добрались

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



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

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