Hacker News 首頁上看到的,作者送了一個提案到 GNU Make,後來被採用,在 4.4 版引入了 --shuffle
指令:「New make --shuffle mode」。
這個功能主要是想要找出在 Makefile
裡面沒有被定義好,平常是因為 side effect 而沒有出錯的地方。
像是作者就發現 libgfortran
沒有把 libquadmath
放到 dependency 的問題:
For example
gcc
’slibgfortran
is missing alibquadmath
build dependency. It is natural not to encounter it in real world aslibquadmath
is usually built along with other small runtimes way beforeg++
orgfortran
is ready.
他的基本想法是把 target 的順序打亂掉,也就是在有指定 --shuffle
時,不一定會照 a
-> b
-> c
的順序往下遞迴,而可能會是 c
-> b
-> a
或是其他的順序:
all: a b c
這樣對於抓那些在 -j
平行編譯時會出包的套件也很有幫助,不需要在 -j
開很大的情況下才能重製問題,而是平常就有機會在 CI 環境下被抓出來。