Xmake Version
3.0.3, 3.0.4, dev
Operating System Version and Architecture
Windows 11, Ubuntu 24.04
Describe Bug
If multiple targets with add_tests have a common dependency that contains modules and at least one has build_should_pass set to true it will result in a jobgraph error.
error: job(module_dep/modules/parse) not found in jobgraph(<jobgraph:prepare/11>)
Expected Behavior
No error.
Project Configuration
add_rules("mode.debug", "mode.release")
set_languages("c++23")
set_policy("build.c++.modules.std", false)
target("module_dep")
set_kind("moduleonly")
add_files("src/*.ixx")
target("module_target1")
set_kind("moduleonly")
add_files("src/*.ixx")
add_deps("module_dep")
add_tests("tests", {kind = "binary", files = "src/main.cpp", build_should_pass = true})
target("module_target2")
set_kind("moduleonly")
add_files("src/*.ixx")
add_deps("module_dep")
add_tests("tests", {kind = "binary", files = "src/main.cpp", build_should_pass = true})
or
add_rules("mode.debug", "mode.release")
set_languages("c++23")
set_policy("build.c++.modules.std", false)
target("module_dep")
set_kind("moduleonly")
add_files("src/*.ixx")
target("module_target")
set_kind("moduleonly")
add_files("src/*.ixx")
add_deps("module_dep")
add_tests("test", {kind = "binary", files = "src/main.cpp", build_should_pass = true})
add_tests("test2", {kind = "binary", files = "src/main.cpp", build_should_pass = true})
Additional Information and Error Logs
> xmake test -vD
checking for platform ... windows
checking for architecture ... x64
checking for cl.exe ... C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostX64\x64\cl.exe
checking for Microsoft C/C++ Compiler (x64) ... ok
checking for Microsoft Visual Studio (x64) version ... 2022
checkinfo: cannot runv(nim.exe --version), No such file or directory
checking for nim ... no
checking for cl.exe ... C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostX64\x64\cl.exe
checking for the c++ compiler (cxx) ... cl.exe
checking for C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostX64\x64\cl.exe ... c:\program files\microsoft visual studio\2022\community\vc\tools\msvc\14.44.35207\bin\hostx64\x64\cl.exe
checking for flags (-O2) ... ok
> cl.exe "-O2" "-nologo"
checking for flags (-std:c++23) ... no
> cl.exe "-std:c++23" "-nologo"
checking for flags (-std:c++latest) ... ok
> cl.exe "-std:c++latest" "-nologo"
checking for flags (-DNDEBUG) ... ok
> cl.exe "-DNDEBUG" "-nologo"
<module_target1_tests> reuse src\main.ixx from <module_dep>
checking for flags (cl_scan_dependencies) ... ok
> cl.exe "-scanDependencies" "F:\tmp\.xmake\251103\_a568eb315a40662426746d5c6e508d93.json" "-nologo"
checking for flags (cl_ifc_output) ... ok
> cl.exe "-ifcOutput" "F:\tmp\.xmake\251103\_25dd8841b2d2d9cc07d5fa25bff8d8c9" "-nologo"
[ 1%]: <module_target1_tests> generating.module.deps src\main.cpp
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostX64\x64\cl.exe -nologo -MD -O2 -std:c++latest /EHsc -DNDEBUG -TP -scanDependencies build\.gens\module_target1_tests\windows\x64\release\rules\bmi\cache\scans\f5de46fe63db0b71\main.cpp.module.json src\main.cpp -ifcOutput build\.gens\module_target1_tests\windows\x64\release\rules\bmi\cache\scans\f5de46fe63db0b71 -Fobuild\.objs\module_target1_tests\windows\x64\release\src\main.cpp.obj
main.cpp
[ 1%]: <module_dep> generating.module.deps src\main.ixx
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostX64\x64\cl.exe -nologo -MD -O2 -std:c++latest /EHsc -DNDEBUG -TP -scanDependencies build\.gens\module_dep\windows\x64\release\rules\bmi\cache\scans\1b2c54ca16e3c327\main.ixx.module.json src\main.ixx -ifcOutput build\.gens\module_dep\windows\x64\release\rules\bmi\cache\scans\1b2c54ca16e3c327 -Fobuild\.objs\module_dep\windows\x64\release\src\main.ixx.obj
main.ixx
checking for flags (cl_reference) ... ok
> cl.exe "-reference" "Foo=F:\tmp\.xmake\251103\_abb5a4e8c81e23999ce40e7d0690a295" "-nologo"
checking for flags (cl_header_unit_quote) ... ok
> cl.exe "-std:c++latest" "-headerUnit:quote" "foo.h=F:\tmp\.xmake\251103\_0ca65db7363eef7fb5994b4a1c7e7131" "-nologo"
checking for flags (cl_header_unit_angle) ... ok
> cl.exe "-std:c++latest" "-headerUnit:angle" "foo.h=F:\tmp\.xmake\251103\_0ca65db7363eef7fb5994b4a1c7e7131" "-nologo"
checking for flags (cl_ifc_only) ... ok
> cl.exe "-ifcOnly" "-nologo"
checking for flags (cl_interface) ... ok
> cl.exe "-interface" "-nologo"
checking for flags (cl_internal_partition) ... ok
> cl.exe "-internalPartition" "-nologo"
[ 35%]: <module_dep> compiling.module.release foo
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.44.35207\\bin\\HostX64\\x64\\cl.exe" -c -nologo -MD -O2 -std:c++latest /EHsc -DNDEBUG -TP -interface -ifcOutput build\.gens\module_dep\windows\x64\release\rules\bmi\cache\interfaces\1b2c54ca16e3c327\foo.ifc -Fobuild\.objs\module_dep\windows\x64\release\src\main.ixx.obj src\main.ixx
[ 71%]: compiling.release src\main.cpp
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.44.35207\\bin\\HostX64\\x64\\cl.exe" -c -nologo -MD -O2 -std:c++latest /EHsc -DNDEBUG -reference foo=build\.gens\module_dep\windows\x64\release\rules\bmi\cache\interfaces\1b2c54ca16e3c327\foo.ifc -Fobuild\.objs\module_target1_tests\windows\x64\release\src\main.cpp.obj src\main.cpp
checking for flags (cl_sourceDependencies) ... ok
> cl.exe "/sourceDependencies" "F:\tmp\.xmake\251103\_114132ea3dcaa71ea3bd6344a0ba9be5.json" "-nologo"
checking for link.exe ... C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostX64\x64\link.exe
checking for the linker (ld) ... link.exe
[ 83%]: linking.release module_target1_tests.exe
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.44.35207\\bin\\HostX64\\x64\\link.exe" -nologo -dynamicbase -nxcompat -machine:x64 /opt:ref /opt:icf -out:build\windows\x64\release\module_target1_tests.exe build\.objs\module_target1_tests\windows\x64\release\src\main.cpp.obj build\.objs\module_dep\windows\x64\release\src\main.ixx.obj /implib:build\windows\x64\release\module_target1_tests.lib
checking for cl.exe ... C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\bin\HostX64\x64\cl.exe
checking for the c compiler (cc) ... cl.exe
build cache stats:
cache directory: build\.build_cache
cache hit rate: 0%
cache hit: 0
cache hit total time: 0.000s
cache miss: 0
cache miss total time: 0.000s
new cached files: 0
remote cache hit: 0
remote new cached files: 0
preprocess failed: 0
compile fallback count: 0
compile total time: 0.000s
running tests ...
[ 50%]: running.test module_target1/tests
[100%]: running.test module_target2/tests
@programdir\actions\build\main.lua:161: @programdir\modules\async\jobgraph.lua:164: job(module_dep/modules/parse) not found in jobgraph(<jobgraph:prepare/11>)
stack traceback:
[C]: in function 'error'
[@programdir\core\base\os.lua:1093]: in function 'raiselevel'
[@programdir\core\sandbox\modules\utils.lua:143]: in function 'assert'
[@programdir\modules\async\jobgraph.lua:164]: in function 'add_orders'
[@programdir\rules\c++\modules\scanner.lua:592]: in function '_schedule_module_dependencies_scan'
[@programdir\rules\c++\modules\scanner.lua:923]:
[@programdir\modules\private\action\build\target.lua:423]: in function 'add_filejobs_for_script'
[@programdir\modules\private\action\build\target.lua:623]: in function 'callback'
[@programdir\modules\async\jobgraph.lua:133]: in function 'group'
[@programdir\modules\private\action\build\target.lua:611]: in function 'callback'
[@programdir\modules\async\jobgraph.lua:133]: in function 'group'
[@programdir\modules\private\action\build\target.lua:599]: in function 'add_filejobs_with_stage'
[@programdir\modules\private\action\build\target.lua:660]: in function 'add_filejobs'
[@programdir\modules\private\action\build\prepare_files.lua:26]:
[@programdir\modules\private\action\build\target.lua:138]: in function 'add_targetjobs_for_builtin_script'
[@programdir\modules\private\action\build\target.lua:274]: in function 'callback'
[@programdir\modules\async\jobgraph.lua:133]: in function 'group'
[@programdir\modules\private\action\build\target.lua:249]: in function 'add_targetjobs_with_stage'
[@programdir\modules\private\action\build\target.lua:356]: in function 'add_targetjobs'
[@programdir\modules\private\action\build\target.lua:372]: in function 'add_targetjobs_and_deps'
[@programdir\modules\private\action\build\target.lua:375]: in function 'add_targetjobs_and_deps'
[@programdir\modules\private\action\build\target.lua:392]: in function 'get_targetjobs'
[@programdir\modules\private\action\build\target.lua:785]: in function 'run_targetjobs'
[@programdir\actions\build\build.lua:34]: in function '_prepare'
[@programdir\actions\build\build.lua:57]:
[@programdir\actions\build\main.lua:112]: in function '_do_build'
[@programdir\actions\build\main.lua:127]:
report of tests:
[ 50%]: module_target1/tests passed 0.000s
[100%]: module_target2/tests failed 0.000s
errors: build\.gens\module_target2_tests\windows\x64\release\tests\module_target2\tests.errors.log
Detailed summary:
Failed tests:
- module_target2/tests
50% tests passed, 1 test(s) failed out of 2, spent 0.000s
error: @programdir\core\main.lua:272: stack traceback:
[C]: in function 'error'
[@programdir\core\base\os.lua:1104]:
[@programdir\actions\test\main.lua:447]: in function '_run_tests'
[@programdir\actions\test\main.lua:588]:
[C]: in function 'xpcall'
[@programdir\core\base\utils.lua:246]:
[@programdir\core\base\task.lua:495]: in function 'run'
[@programdir\core\main.lua:270]: in function 'cotask'
[@programdir\core\base\scheduler.lua:514]:
stack traceback:
[C]: in function 'error'
@programdir\core\base\os.lua:1093: in function 'base/os.raiselevel'
(...tail calls...)
@programdir\core\main.lua:272: in upvalue 'cotask'
@programdir\core\base\scheduler.lua:514: in function <@programdir\core\base\scheduler.lua:507>
Xmake Version
3.0.3, 3.0.4, dev
Operating System Version and Architecture
Windows 11, Ubuntu 24.04
Describe Bug
If multiple targets with
add_testshave a common dependency that contains modules and at least one hasbuild_should_passset to true it will result in a jobgraph error.error: job(module_dep/modules/parse) not found in jobgraph(<jobgraph:prepare/11>)Expected Behavior
No error.
Project Configuration
or
Additional Information and Error Logs