TGViewer
Linux Ready | DevOps Linux Ready | DevOps @linux_ready · 11.3K subscribers
Post #1626 684
GNU Make умеет специально ломать привычный порядок сборки, чтобы находить ошибки в зависимостях Makefile!

Бывает, что make -j работает нормально, а затем сборка случайно падает на CI или новой машине. Частая причина — одна цель неявно рассчитывает, что другая успеет выполниться раньше, хотя эта зависимость нигде не объявлена.

В GNU Make 4.4 для поиска таких проблем появился --shuffle:
make -j8 --shuffle


Make сохраняет зависимости между целями, но намеренно меняет допустимый порядок их выполнения. Если Makefile случайно зависит от привычной последовательности, вероятность воспроизвести проблему резко возрастает.

Полезно прогнать сборку несколько раз:
for i in {1..20}; do
make clean
make -j8 --shuffle || break
done


Если сборка упала, Make сообщает seed перемешивания. Его можно передать повторно и воспроизвести тот же порядок:
make -j8 --shuffle=123456789


Интересно, что --shuffle полезен даже без параллельной сборки:
make -j1 --shuffle


Так можно обнаружить зависимости от порядка выполнения отдельно от настоящих проблем конкурентного выполнения.

🔥 make --shuffle превращает порядок сборки в fuzz-тест: отличный способ найти отсутствующие зависимости в Makefile до того, как они проявятся случайным падением на CI.

🚪 Linux Ready | #совет
  • ❤ 6
  • 🔥 6
  • 👍 4
More from @linux_ready
  1. Oct 16, 20267 дней бесплатного обучения во Frontend-разработке! 🔥 Ухвати свой шанс погрузиться в мир…
  2. Oct 16, 2026👩‍💻 Bash: управление фоновыми процессами и заданиями! В этом посте собраны основные кома…
  3. Oct 15, 2026Как принудительно ограничить аппетит прожорливого процесса, чтобы он не использовал весь п…
  4. Oct 15, 2026Клиенты переезжают в VK и Max. Ботов нужно переносить. Рук не хватает. Бизнесу срочно нужн…
  5. Oct 15, 2026👨‍💻 На Хабре лежит годная статья: «Всё, что вы настроили в Linux, можно было не настраив…
  6. Oct 14, 2026В util-linux есть инструмент lsfd, который позволяет фильтровать открытые файловые дескрип…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →