Ninja и время (Связывание с пакетами из будущего)

Модератор: Модераторы разделов

Ответить
Аватара пользователя
ormorph
Сообщения: 2604
ОС: Gentoo

Ninja и время

Сообщение ormorph »

Как то заметил такую особенность этой системы сборки. Ninja не хочет собираться с пакетами собранными в будущем.
Как то собирал на новом железе, потом обратил внимание, что у меня время не совпадает. Ну я настроил системное время(разница была где то час), и запустил снова сборку. И тут у меня начало всё что собирается с помощью ninja заканчиваться ошибкой. Позже понял, что связанно оно со временем, так как созданные пакеты были собраны через час в будущем относительно системного времени. Лучшее, чем как подождать так и не придумал, где то через час сборка пошла нормально.
Собственно интересно как оно производит проверку по времени, и можно ли как то это обойти. Есть конечно вариант на переключение генерации cmake на использование make, но это мне не очень то нравится.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Ninja и время

Сообщение Bizdelnick »

А разве так много вариантов? По времени модификации файлов.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2604
ОС: Gentoo

Re: Ninja и время

Сообщение ormorph »

Bizdelnick писал:
24.10.2022 23:58
По времени модификации файлов.
Об этом, я как бы догадывался, но зачем это сделано. Ну и как с этим бороться, если можно так легко всё поломать. Какой нибудь сбой с системным временем может уничтожить саму возможность сборки исходников.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Ninja и время

Сообщение Bizdelnick »

ormorph писал(а):
25.10.2022 03:37
зачем это сделано
Думаю, разработчики не предусматривали такую ситуацию. Свежесобранная цель оказывается старее своих зависимостей, а значит, требует пересборки. Логика вполне правильная.
https://github.com/ninja-build/ninja/blob/a4c24a33c1ed32d9d51c8df763ec6ad574587d02/src/graph.cc#L322
ormorph писал(а):
25.10.2022 03:37
Ну и как с этим бороться
NTP, вроде, не вчера придумали.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2604
ОС: Gentoo

Re: Ninja и время

Сообщение ormorph »

Bizdelnick писал:
25.10.2022 10:59
NTP, вроде, не вчера придумали.
Это не всегда выход. Не всегда собирается на машине, которая подключена к интернету. В данном случае это было на свежей машине, на которой ntp ещё не настроен и ОС начал только собирать, и ntp, там ещё не было установлено.
Bizdelnick писал:
25.10.2022 10:59
Логика вполне правильная.
https://github.com/ninja-build/ninja/blob/a4c24a33c1ed32d9d51c8df763ec6ad574587d02/src/graph.cc#L322
Хм, кардинальный метод поиска. Потом гляну, что там с этой функцией так как там выходит с true. Я надеялся, что можно выставить какую нибудь переменную чтобы обойти это.
Если дофига уже собрано то легче пропатчить ninja и снова собрать, и то меньше времени займёт.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Ninja и время

Сообщение Bizdelnick »

ormorph писал(а):
25.10.2022 12:00
Не всегда собирается на машине, которая подключена к интернету.
Описанная Вами ситуация (изменение системного времени посреди сборки) — крайне нетипичная. Вообще не стоит время на работающей системе менять, пусть по NTP корректируется при перезагрузке. А то много чего в принципе может отвалиться.
ormorph писал(а):
25.10.2022 12:00
Если дофига уже собрано то легче пропатчить ninja и снова собрать, и то меньше времени займёт.
А ещё легче использовать make, нет?
Добавлено (12:33):
ormorph писал(а):
25.10.2022 12:00
Хм, кардинальный метод поиска.
Я не уверен, что это именно та проверка, о которую спотыкается сборка в Вашем случае. Где-то ещё может быть аналогичная.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2604
ОС: Gentoo

Re: Ninja и время

Сообщение ormorph »

Bizdelnick писал:
25.10.2022 12:32
А ещё легче использовать make, нет?
Ну я как раз так и делал в тот момент. В gentoo за генератор отвечает переменная CMAKE_MAKEFILE_GENERATOR, но не всегда же всё привязано только к CMAKE.
Спасибо сказали:
Ответить