The OpenNET Project / Index page

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



"В Firefox 98 для некоторых пользователей будет изменена поисковая система по умолчанию"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Отдельный RSS теперь доступен для каждого обсуждения в форуме и каждого минипортала.
. "В Firefox 98 для некоторых пользователей будет изменена поис..." +1 +/
Сообщение от keydon (ok), 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 лет назад решил выяснить что же там происходит еще не вернулся), запустили нинзю.
Но все обмазано этими бесконечными обертками. Наверное процесс сборки стал в один клик? Нет. Наверное стало досконально понятно что происходит во время сборки? Нет. Наверное все внутри такое независимое и не зависит от сторонних проектов (да, я сэкономил ваше время и не акцентрировал на это внимание)? Нет. Ну хоть скрипты сборки? Нет. А что ж они тогда написаны словно сишными программистами яндекса? Ну да ладно, скрипты то эти хоть изящные? Нет. Наверное проект стал независимее от гугла? Нет, наоборот, прям все кричит о том что это проект гугла и остальным сюда лучше не лезть, хотя это инструкция для посторонних, для сотрудников гугла есть отдельная инструкция...Это мы еще до исходников не добрались

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
В Firefox 98 для некоторых пользователей будет изменена поисковая система по умолчанию, opennews, 18-Фев-22, 16:02  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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