Как то заметил такую особенность этой системы сборки. Ninja не хочет собираться с пакетами собранными в будущем.
Как то собирал на новом железе, потом обратил внимание, что у меня время не совпадает. Ну я настроил системное время(разница была где то час), и запустил снова сборку. И тут у меня начало всё что собирается с помощью ninja заканчиваться ошибкой. Позже понял, что связанно оно со временем, так как созданные пакеты были собраны через час в будущем относительно системного времени. Лучшее, чем как подождать так и не придумал, где то через час сборка пошла нормально.
Собственно интересно как оно производит проверку по времени, и можно ли как то это обойти. Есть конечно вариант на переключение генерации cmake на использование make, но это мне не очень то нравится.
Ninja и время (Связывание с пакетами из будущего)
Модератор: Модераторы разделов
-
- Модератор
- Сообщения: 20044
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Ninja и время
А разве так много вариантов? По времени модификации файлов.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 2289
- ОС: Gentoo
Re: Ninja и время
Об этом, я как бы догадывался, но зачем это сделано. Ну и как с этим бороться, если можно так легко всё поломать. Какой нибудь сбой с системным временем может уничтожить саму возможность сборки исходников.
-
- Модератор
- Сообщения: 20044
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Ninja и время
Думаю, разработчики не предусматривали такую ситуацию. Свежесобранная цель оказывается старее своих зависимостей, а значит, требует пересборки. Логика вполне правильная.
https://github.com/ninja-build/ninja/blob/a4c24a33c1ed32d9d51c8df763ec6ad574587d02/src/graph.cc#L322
NTP, вроде, не вчера придумали.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Спасибо сказали:
-
- Сообщения: 2289
- ОС: Gentoo
Re: Ninja и время
Это не всегда выход. Не всегда собирается на машине, которая подключена к интернету. В данном случае это было на свежей машине, на которой ntp ещё не настроен и ОС начал только собирать, и ntp, там ещё не было установлено.
Хм, кардинальный метод поиска. Потом гляну, что там с этой функцией так как там выходит с true. Я надеялся, что можно выставить какую нибудь переменную чтобы обойти это.Bizdelnick писал: ↑25.10.2022 10:59Логика вполне правильная.
https://github.com/ninja-build/ninja/blob/a4c24a33c1ed32d9d51c8df763ec6ad574587d02/src/graph.cc#L322
Если дофига уже собрано то легче пропатчить ninja и снова собрать, и то меньше времени займёт.
-
- Модератор
- Сообщения: 20044
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Ninja и время
Описанная Вами ситуация (изменение системного времени посреди сборки) — крайне нетипичная. Вообще не стоит время на работающей системе менять, пусть по NTP корректируется при перезагрузке. А то много чего в принципе может отвалиться.
А ещё легче использовать make, нет?
Добавлено (12:33):
Я не уверен, что это именно та проверка, о которую спотыкается сборка в Вашем случае. Где-то ещё может быть аналогичная.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 2289
- ОС: Gentoo
Re: Ninja и время
Ну я как раз так и делал в тот момент. В gentoo за генератор отвечает переменная CMAKE_MAKEFILE_GENERATOR, но не всегда же всё привязано только к CMAKE.