process fails to compile in boost 1.86.0 on windows

Open
#420 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
25/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
cpp

Research direction

Start with libs/process/src/ext/exe.cpp and boost/process/v2/windows/default_launcher.hpp, then reproduce the reported 32-bit MSVC build using the commands and Windows defines in the issue. Trace the QueryFullProcessImageNameW and startup_info compile errors and verify that the process library completes compilation under the reported configuration.

Written by the indexing model from the issue text.

Description

I'm compiling boost on windows and boost process fails to compile.

Compilation done by following commands in boost src folder.

bootstrap.bat
b2.exe -d4 --build-type=minimal stage variant=release address-model=32 link=shared threading=multi runtime-link=shared debug-symbols=on debug-store=database -j%NUMBER_OF_PROCESSORS% --layout=
system --with-process --build-dir=..\boost_build --stagedir=..\boost_stage\ %XP_TOOLSET_DEFINES% > bjam.log 2>&1

I've used --with-process just to cut down compile time and log to reproduce problem, same happens if this flag is not used.
After this is done several libs are compiled in ..\boost_stage\lib (atomic and filesystem) but process is not.

Log file is attached bjam.log.zip, I think the root cause are those compilation errors:

Executing using a command file and the shell: cmd.exe /Q/C
Command string for CreateProcessA(): 'cmd.exe /Q/C "C:\Users\Admin\AppData\Local\Temp\jam15820-05-00.bat"'
compile-c-c++ ..\boost_build\boost\bin.v2\libs\process\build\msvc-14.3\release\x86_32\debug-store-database\debug-symbols-on\threading-multi\ext\exe.obj

    call "..\boost_build\boost\bin.v2\standalone\msvc\msvc-14.3\address-model-32\architecture-x86\msvc-setup.bat"  >nul
 cl /Zm800 -nologo "libs\process\src\ext\exe.cpp" -c -Fo"..\boost_build\boost\bin.v2\libs\process\build\msvc-14.3\release\x86_32\debug-store-database\debug-symbols-on\threading-multi\ext\exe.obj" /Fd"..\boost_build\boost\bin.v2\libs\process\build\msvc-14.3\release\x86_32\debug-store-database\debug-symbols-on\threading-multi\ext\exe.pdb"    -TP /wd4675 /EHs /GR /Zc:throwingNew /O2 /Zi /Ob2 /W3 /MD /Zc:forScope /Zc:wchar_t /Zc:inline /Gw /bigobj -DBOOST_ALL_NO_LIB=1 -DBOOST_ASIO_NO_DEPRECATED -DBOOST_ATOMIC_DYN_LINK=1 -DBOOST_COBALT_USE_STD_PMR=1 -DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_PROCESS_DYN_LINK=1 -DBOOST_PROCESS_SOURCE=1 -DNDEBUG -DNTDDI_VERSION=0x05010000 -DPSAPI_VERSION=1 -DWIN32_LEAN_AND_MEAN -DWINVER=0x0501 -D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D_WIN32_WINNT=0x0501 "-I." 

exe.cpp
libs\process\src\ext\exe.cpp(78): error C3861: 'QueryFullProcessImageNameW': identifier not found
0.125000 sec system; 0.031250 sec user; 3.299207 sec clock
...failed compile-c-c++ ..\boost_build\boost\bin.v2\libs\process\build\msvc-14.3\release\x86_32\debug-store-database\debug-symbols-on\threading-multi\ext\exe.obj...
Command string for CreateProcessA(): 'cmd.exe /Q/C "C:\Users\Admin\AppData\Local\Temp\jam15820-01-00.bat"'
compile-c-c++ ..\boost_build\boost\bin.v2\libs\process\build\msvc-14.3\release\x86_32\debug-store-database\debug-symbols-on\threading-multi\windows\default_launcher.obj

    call "..\boost_build\boost\bin.v2\standalone\msvc\msvc-14.3\address-model-32\architecture-x86\msvc-setup.bat"  >nul
 cl /Zm800 -nologo "libs\process\src\windows\default_launcher.cpp" -c -Fo"..\boost_build\boost\bin.v2\libs\process\build\msvc-14.3\release\x86_32\debug-store-database\debug-symbols-on\threading-multi\windows\default_launcher.obj" /Fd"..\boost_build\boost\bin.v2\libs\process\build\msvc-14.3\release\x86_32\debug-store-database\debug-symbols-on\threading-multi\windows\default_launcher.pdb"    -TP /wd4675 /EHs /GR /Zc:throwingNew /O2 /Zi /Ob2 /W3 /MD /Zc:forScope /Zc:wchar_t /Zc:inline /Gw /bigobj -DBOOST_ALL_NO_LIB=1 -DBOOST_ASIO_NO_DEPRECATED -DBOOST_ATOMIC_DYN_LINK=1 -DBOOST_COBALT_USE_STD_PMR=1 -DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_PROCESS_DYN_LINK=1 -DBOOST_PROCESS_SOURCE=1 -DNDEBUG -DNTDDI_VERSION=0x05010000 -DPSAPI_VERSION=1 -DWIN32_LEAN_AND_MEAN -DWINVER=0x0501 -D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D_WIN32_WINNT=0x0501 "-I." 

default_launcher.cpp
D:\Projects\boost\boost/process/v2/windows/default_launcher.hpp(220): error C3646: 'startup_info': unknown override specifier
D:\Projects\boost\boost/process/v2/windows/default_launcher.hpp(220): error C2059: syntax error: '{'
D:\Projects\boost\boost/process/v2/windows/default_launcher.hpp(220): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
0.078125 sec system; 0.046875 sec user; 3.474433 sec clock
...failed compile-c-c++ ..\boost_build\boost\bin.v2\libs\process\build\msvc-14.3\release\x86_32\debug-store-database\debug-symbols-on\threading-multi\windows\default_launcher.obj...
Command string for CreateProcessA(): 'cmd.exe /Q/C "C:\Users\Admin\AppData\Local\Temp\jam15820-04-00.bat"'
compile-c-c++ ..\boost_build\boost\bin.v2\libs\process\build\msvc-14.3\release\x86_32\debug-store-database\debug-symbols-on\threading-multi\environment.obj

    call "..\boost_build\boost\bin.v2\standalone\msvc\msvc-14.3\address-model-32\architecture-x86\msvc-setup.bat"  >nul
 cl /Zm800 -nologo "libs\process\src\environment.cpp" -c -Fo"..\boost_build\boost\bin.v2\libs\process\build\msvc-14.3\release\x86_32\debug-store-database\debug-symbols-on\threading-multi\environment.obj" /Fd"..\boost_build\boost\bin.v2\libs\process\build\msvc-14.3\release\x86_32\debug-store-database\debug-symbols-on\threading-multi\environment.pdb"    -TP /wd4675 /EHs /GR /Zc:throwingNew /O2 /Zi /Ob2 /W3 /MD /Zc:forScope /Zc:wchar_t /Zc:inline /Gw /bigobj -DBOOST_ALL_NO_LIB=1 -DBOOST_ASIO_NO_DEPRECATED -DBOOST_ATOMIC_DYN_LINK=1 -DBOOST_COBALT_USE_STD_PMR=1 -DBOOST_FILESYSTEM_DYN_LINK=1 -DBOOST_PROCESS_DYN_LINK=1 -DBOOST_PROCESS_SOURCE=1 -DNDEBUG -DNTDDI_VERSION=0x05010000 -DPSAPI_VERSION=1 -DWIN32_LEAN_AND_MEAN -DWINVER=0x0501 -D_CRT_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D_WIN32_WINNT=0x0501 "-I." 

environment.cpp
D:\Projects\boost\boost/process/v2/windows/default_launcher.hpp(220): error C3646: 'startup_info': unknown override specifier
D:\Projects\boost\boost/process/v2/windows/default_launcher.hpp(220): error C2059: syntax error: '{'
D:\Projects\boost\boost/process/v2/windows/default_launcher.hpp(220): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
0.093750 sec system; 0.031250 sec user; 3.934528 sec clock
...failed compile-c-c++ ..\boost_build\boost\bin.v2\libs\process\build\msvc-14.3\release\x86_32\debug-store-database\debug-symbols-on\threading-multi\environment.obj...

How can this be fixed?

Thank you very much in advance :).

Dominant language
C++
Stars
145
Forks
151
PR merge metrics
No merged PRs in 30d

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from boostorg/process

All issues in boostorg/process

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.