Prerequisites
Game Version
Bug Description
I checked out the weekly-2026-05-01 tag and found that docker-build.sh fails to build Generals ZH with the following output:
Details
FAILED: [code=2] GeneralsMD/Code/GameEngineDevice/CMakeFiles/z_gameenginedevice.dir/__/__/__/Core/GameEngineDevice/Source/W3DDevice/GameClient/W3DSmudge.cpp.obj
Z:\build\tools\vs6\vc98\bin\cl.exe /nologo /TP -DBUILD_WITH_D3D8 -DDISABLE_MEMORYPOOL_CHECKPOINTING=1 -DDISABLE_MEMORYPOOL_STACKTRACE=1 -DNDEBUG -DRTS_ENABLE_CRASHDUMP=1 -DRTS_RELEASE -DRTS_ZEROHOUR=1 -DUSING_STLPORT=1 -DZ_PREFIX -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -IZ:\build\cnc\Dependencies\Utility -IZ:\build\cnc\GeneralsMD\Code\GameEngineDevice\Include -IZ:\build\cnc\Core\Libraries\Include -IZ:\build\cnc\resources\gitinfo -IZ:\build\cnc\Core\Main -IZ:\build\cnc\GeneralsMD\Code\Main -IZ:\build\cnc\Core\GameEngineDevice\Include -I\build\cnc\build\docker\_deps\bink-src -IZ:\build\cnc\Core\GameEngine\Include -IZ:\build\cnc\Core\Libraries\Source\Compression -I\build\cnc\build\docker\_deps\lzhl-src\CompLibHeader -I\build\cnc\build\docker\_deps\lzhl-src\CompLibHeader\.. -I\build\cnc\build\docker\Core\Libraries\Source\Compression\_deps\zlib-1.1.4-src\ZLib -I\build\cnc\build\docker\Core\Libraries\Source\EABrowserDispatch\.. -I\build\cnc\build\docker\_deps\dx8-src\extra -I\build\cnc\build\docker\_deps\dx8-src -I\build\cnc\build\docker\_deps\gamespy-src\include -I\build\cnc\build\docker\_deps\gamespy-src\include\gamespy -I\build\cnc\build\docker\_deps\stlport-src\. -I\build\cnc\build\docker\_deps\miles-src -I\build\cnc\build\docker\_deps\miles-src\mss -IZ:\build\cnc\GeneralsMD\Code\GameEngine\Include -IZ:\build\cnc\GeneralsMD\Code\Libraries\Source\WWVegas -IZ:\build\cnc\GeneralsMD\Code\Libraries\Source\WWVegas\WW3D2 -IZ:\build\cnc\Core\Libraries\Source\WWVegas -IZ:\build\cnc\Core\Libraries\Source\WWVegas\WW3D2 -IZ:\build\cnc\Core\Libraries\Source\WWVegas\WWAudio -IZ:\build\cnc\Core\Libraries\Source\WWVegas\WWDebug -IZ:\build\cnc\Core\Libraries\Source\WWVegas\WWLib -IZ:\build\cnc\Core\Libraries\Source\WWVegas\WWMath -IZ:\build\cnc\Core\Libraries\Source\WWVegas\WWSaveLoad /DWIN32 /D_WINDOWS /Zm1000 /GX /O2 /Ob2 /DNDEBUG -MD /FIUtility/CppMacros.h /W3 /FoGeneralsMD\Code\GameEngineDevice\CMakeFiles\z_gameenginedevice.dir\__\__\__\Core\GameEngineDevice\Source\W3DDevice\GameClient\W3DSmudge.cpp.obj /FdGeneralsMD\Code\GameEngineDevice\CMakeFiles\z_gameenginedevice.dir\z_gameenginedevice.pdb -c Z:\build\cnc\Core\GameEngineDevice\Source\W3DDevice\GameClient\W3DSmudge.cpp
W3DSmudge.cpp
Z:\build\cnc\Core\GameEngine\Include\GameClient/Smudge.h(53) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
Z:\build\cnc\Core\GameEngine\Include\GameClient/Smudge.h(53) : see declaration of 'hash'
Z:\build\cnc\Core\GameEngine\Include\GameClient/Smudge.h(53) : error C2143: syntax error : missing ';' before '<'
Z:\build\cnc\Core\GameEngine\Include\GameClient/Smudge.h(53) : error C2059: syntax error : '<'
Z:\build\cnc\Core\GameEngine\Include\GameClient/Smudge.h(54) : error C2143: syntax error : missing ';' before '{'
Z:\build\cnc\Core\GameEngine\Include\GameClient/Smudge.h(54) : error C2447: missing function header (old-style formal list?)
Z:\build\cnc\Core\GameEngine\Include\GameClient/Smudge.h(80) : error C2039: 'hash_map' : is not a member of 'std'
Z:\build\cnc\Core\GameEngine\Include\GameClient/Smudge.h(80) : error C2143: syntax error : missing ';' before '<'
Z:\build\cnc\Core\GameEngine\Include\GameClient/Smudge.h(80) : error C2059: syntax error : '<'
Z:\build\cnc\Core\GameEngine\Include\GameClient/Smudge.h(80) : error C2238: unexpected token(s) preceding ';'
Z:\build\cnc\Core\GameEngine\Include\GameClient/Smudge.h(83) : error C2146: syntax error : missing ';' before identifier 'm_usedSmudgeMap'
Z:\build\cnc\Core\GameEngine\Include\GameClient/Smudge.h(83) : error C2501: 'SmudgeIdToPtrMap' : missing storage-class or type specifiers
Z:\build\cnc\Core\GameEngine\Include\GameClient/Smudge.h(83) : error C2501: 'm_usedSmudgeMap' : missing storage-class or type specifiers
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : error C2989: 'hash' : template class has already been defined as a non-template class
Z:\build\cnc\Core\GameEngine\Include\GameClient/Smudge.h(53) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(52) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(52) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(52) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(52) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(53) : error C2143: syntax error : missing ';' before '{'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(53) : error C2447: missing function header (old-style formal list?)
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(57) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(57) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(57) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(57) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(58) : error C2143: syntax error : missing ';' before '{'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(58) : error C2447: missing function header (old-style formal list?)
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(62) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(62) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(62) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(62) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(62) : error C2143: syntax error : missing ';' before '{'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(62) : error C2447: missing function header (old-style formal list?)
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(65) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(65) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(65) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(65) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(65) : error C2143: syntax error : missing ';' before '{'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(65) : error C2447: missing function header (old-style formal list?)
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(69) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(69) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(69) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(69) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(69) : error C2143: syntax error : missing ';' before '{'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(69) : error C2447: missing function header (old-style formal list?)
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(73) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(73) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(73) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(73) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(73) : error C2143: syntax error : missing ';' before '{'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(73) : error C2447: missing function header (old-style formal list?)
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(76) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(76) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(76) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(76) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(76) : error C2143: syntax error : missing ';' before '{'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(76) : error C2447: missing function header (old-style formal list?)
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(79) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(79) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(79) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(79) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(79) : error C2143: syntax error : missing ';' before '{'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(79) : error C2447: missing function header (old-style formal list?)
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(82) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(82) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(82) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(82) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(82) : error C2143: syntax error : missing ';' before '{'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(82) : error C2447: missing function header (old-style formal list?)
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(85) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(85) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(85) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(85) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(85) : error C2143: syntax error : missing ';' before '{'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(85) : error C2447: missing function header (old-style formal list?)
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(88) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(88) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(88) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(88) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(88) : error C2143: syntax error : missing ';' before '{'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(88) : error C2447: missing function header (old-style formal list?)
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(93) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(93) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(93) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(93) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(93) : error C2143: syntax error : missing ';' before '{'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(93) : error C2447: missing function header (old-style formal list?)
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(96) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(96) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(96) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(96) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(96) : error C2143: syntax error : missing ';' before '{'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(96) : error C2447: missing function header (old-style formal list?)
\build\cnc\build\docker\_deps\stlport-src\.\stl/_string_hash.h(54) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_string_hash.h(54) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_string_hash.h(54) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_string_hash.h(54) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_string_hash.h(54) : error C2143: syntax error : missing ';' before '{'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_string_hash.h(54) : error C2447: missing function header (old-style formal list?)
\build\cnc\build\docker\_deps\stlport-src\.\stl/_string_hash.h(60) : error C2913: explicit specialization; 'struct std::hash std::hash' is not a class template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_hash_fun.h(40) : see declaration of 'hash'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_string_hash.h(60) : error C2908: explicit specialization; 'hash' has already been instantiated from the primary template
\build\cnc\build\docker\_deps\stlport-src\.\stl/_string_hash.h(60) : error C2143: syntax error : missing ';' before '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_string_hash.h(60) : error C2059: syntax error : '<'
\build\cnc\build\docker\_deps\stlport-src\.\stl/_string_hash.h(60) : fatal error C1003: error count exceeds 100; stopping compilation
I was able to pinpoint the cause by checking out the weekly-2026-03-27 and weekly-2026-04-03 tags. While the build works with weekly-2026-03-27, it fails with the same compiler errors in weekly-2026-04-03. It appears that PR #2484 introduced that issue.
Reproduction Steps
- checkout the
weekly-2026-05-01 tag
- run
./scripts/docker-build.sh --target z_generals in the repository root
Additional Context
No response
Prerequisites
Game Version
Bug Description
I checked out the
weekly-2026-05-01tag and found thatdocker-build.shfails to build Generals ZH with the following output:Details
I was able to pinpoint the cause by checking out the
weekly-2026-03-27andweekly-2026-04-03tags. While the build works withweekly-2026-03-27, it fails with the same compiler errors inweekly-2026-04-03. It appears that PR #2484 introduced that issue.Reproduction Steps
weekly-2026-05-01tag./scripts/docker-build.sh --target z_generalsin the repository rootAdditional Context
No response