Menu

#1030 Parallel builds fail

v1.0 (example)
open
nobody
None
5
2026-07-31
2026-07-31
Ross Burton
No

If I build mingw64 with parallel make, it fails:

NOTE: make -j32 -l75 --shuffle
echo "static int __attribute__((unused)) __mingw_libm_dummy;" > _libm_dummy.c
make  all-recursive
make[1]: Entering directory '/work/ross/build/tmp/work/x86_64-nativesdk-mingw32-w64-mingw32/nativesdk-mingw-w64-runtime/14.0.0/build'
Making all in .
make[2]: Entering directory '/work/ross/build/tmp/work/x86_64-nativesdk-mingw32-w64-mingw32/nativesdk-mingw-w64-runtime/14.0.0/build'
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k --as=x86_64-w64-mingw32-as  --output-lib lib64/libd3dcompiler_37.a --temp-prefix lib64/libd3dcompiler_37  --input-def ../sources/mingw-w64-v14.0.0/mingw-w64-crt/lib64/d3dcompiler_37.def
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k --as=x86_64-w64-mingw32-as  --output-lib lib64/libicwdial.a --temp-prefix lib64/libicwdial  --input-def ../sources/mingw-w64-v14.0.0/mingw-w64-crt/lib64/icwdial.def
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k --as=x86_64-w64-mingw32-as  --output-lib lib64/libwiarpc.a --temp-prefix lib64/libwiarpc  --input-def ../sources/mingw-w64-v14.0.0/mingw-w64-crt/lib64/wiarpc.def
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k --as=x86_64-w64-mingw32-as  --output-lib lib64/libdbnmpntw.a --temp-prefix lib64/libdbnmpntw  --input-def ../sources/mingw-w64-v14.0.0/mingw-w64-crt/lib-common/dbnmpntw.def
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k --as=x86_64-w64-mingw32-as  --output-lib lib64/libpstorec.a --temp-prefix lib64/libpstorec  --input-def ../sources/mingw-w64-v14.0.0/mingw-w64-crt/lib-common/pstorec.def
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k --as=x86_64-w64-mingw32-as  --output-lib lib64/libevntagnt.a --temp-prefix lib64/libevntagnt  --input-def ../sources/mingw-w64-v14.0.0/mingw-w64-crt/lib64/evntagnt.def
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k --as=x86_64-w64-mingw32-as  --output-lib lib64/libinfosoft.a --temp-prefix lib64/libinfosoft  --input-def ../sources/mingw-w64-v14.0.0/mingw-w64-crt/lib64/infosoft.def
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k --as=x86_64-w64-mingw32-as  --output-lib lib64/libncxpnt.a --temp-prefix lib64/libncxpnt  --input-def ../sources/mingw-w64-v14.0.0/mingw-w64-crt/lib64/ncxpnt.def
x86_64-w64-mingw32-dlltool --as-flags=--64 -m i386:x86-64 -k --as=x86_64-w64-mingw32-as  --output-lib lib64/librasman.a --temp-prefix lib64/librasman  --input-def ../sources/mingw-w64-v14.0.0/mingw-w64-crt/lib64/rasman.def
x86_64-w64-mingw32-dlltool: Can't create .lib file: lib64/libd3dcompiler_37.a: No such file or directory
x86_64-w64-mingw32-dlltool: Can't create .lib file: lib64/libicwdial.a: No such file or directory
make[2]: *** [Makefile:109463: lib64/libd3dcompiler_37.a] Error 1 shuffle=985211218
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [Makefile:109463: lib64/libicwdial.a] Error 1 shuffle=985211218
x86_64-w64-mingw32-dlltool: Can't create .lib file: lib64/libwiarpc.a: No such file or directory
make[2]: *** [Makefile:109463: lib64/libwiarpc.a] Error 1 shuffle=985211218
x86_64-w64-mingw32-dlltool: Can't create .lib file: lib64/libinfosoft.a: No such file or directory
x86_64-w64-mingw32-dlltool: Can't create .lib file: lib64/libdbnmpntw.a: No such file or directory
x86_64-w64-mingw32-dlltool: x86_64-w64-mingw32-dlltool: Can't create .lib file: lib64/libncxpnt.a: No such file or directory
Can't create .lib file: lib64/libevntagnt.a: No such file or directory
make[2]: *** [Makefile:109463: lib64/libinfosoft.a] Error 1 shuffle=985211218
make[2]: *** [Makefile:109463: lib64/libevntagnt.a] Error 1 shuffle=985211218
make[2]: *** [Makefile:109466: lib64/libdbnmpntw.a] Error 1 shuffle=985211218
make[2]: *** [Makefile:109463: lib64/libncxpnt.a] Error 1 shuffle=985211218
x86_64-w64-mingw32-dlltool: Can't create .lib file: lib64/libpstorec.a: No such file or directory
make[2]: *** [Makefile:109466: lib64/libpstorec.a] Error 1 shuffle=985211218
x86_64-w64-mingw32-dlltool: Can't create .lib file: lib64/librasman.a: No such file or directory
make[2]: *** [Makefile:109463: lib64/librasman.a] Error 1 shuffle=985211218
make[2]: Leaving directory '/work/ross/build/tmp/work/x86_64-nativesdk-mingw32-w64-mingw32/nativesdk-mingw-w64-runtime/14.0.0/build'
make[1]: *** [Makefile:99317: all-recursive] Error 1 shuffle=985211218
make[1]: Leaving directory '/work/ross/build/tmp/work/x86_64-nativesdk-mingw32-w64-mingw32/nativesdk-mingw-w64-runtime/14.0.0/build'
make: *** [Makefile:16952: all] Error 2 shuffle=985211218
ERROR: oe_runmake failed

By using a modern GNU make and passing --shuffle you can get make to randomly shuffle lists, which is great at exposing missing dependencies where it mostly worked via luck and timing.

Discussion


Log in to post a comment.