mirror of
https://github.com/boostorg/build.git
synced 2026-02-16 13:22:11 +00:00
Make the action timeout attempt to also close any open dialogs before killing processes. Thanks to Bronek Kozicki.
[SVN r34210]
This commit is contained in:
@@ -210,7 +210,7 @@ if "_%BOOST_JAM_TOOLSET%_" == "_metrowerks_" (
|
||||
if "_%BOOST_JAM_TOOLSET%_" == "_metrowerks_" (
|
||||
if not "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" (
|
||||
set PATH=%BOOST_JAM_TOOLSET_ROOT%Other Metrowerks Tools\Command Line Tools;%PATH%)
|
||||
set BOOST_JAM_CC=mwcc -runtime ss -cwd include -DNT -ladvapi32.lib
|
||||
set BOOST_JAM_CC=mwcc -runtime ss -cwd include -DNT -lkernel32.lib -ladvapi32.lib -luser32.lib
|
||||
set BOOST_JAM_OPT_JAM=-o bootstrap\jam0.exe
|
||||
set BOOST_JAM_OPT_MKJAMBASE=-o bootstrap\mkjambase0.exe
|
||||
set BOOST_JAM_OPT_YYACC=-o bootstrap\yyacc0.exe
|
||||
@@ -225,7 +225,7 @@ if "_%BOOST_JAM_TOOLSET%_" == "_msvc_" (
|
||||
if "_%BOOST_JAM_TOOLSET%_" == "_msvc_" (
|
||||
if not "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" (
|
||||
set PATH=%BOOST_JAM_TOOLSET_ROOT%bin;%PATH%)
|
||||
set BOOST_JAM_CC=cl /nologo /GZ /Zi /MLd -DNT -DYYDEBUG kernel32.lib advapi32.lib
|
||||
set BOOST_JAM_CC=cl /nologo /GZ /Zi /MLd -DNT -DYYDEBUG kernel32.lib advapi32.lib user32.lib
|
||||
set BOOST_JAM_OPT_JAM=/Febootstrap\jam0
|
||||
set BOOST_JAM_OPT_MKJAMBASE=/Febootstrap\mkjambase0
|
||||
set BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0
|
||||
@@ -240,7 +240,7 @@ if "_%BOOST_JAM_TOOLSET%_" == "_vc7_" (
|
||||
if "_%BOOST_JAM_TOOLSET%_" == "_vc7_" (
|
||||
if not "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" (
|
||||
set PATH=%BOOST_JAM_TOOLSET_ROOT%bin;%PATH%)
|
||||
set BOOST_JAM_CC=cl /nologo /GZ /Zi /MLd -DNT -DYYDEBUG kernel32.lib advapi32.lib
|
||||
set BOOST_JAM_CC=cl /nologo /GZ /Zi /MLd -DNT -DYYDEBUG kernel32.lib advapi32.lib user32.lib
|
||||
set BOOST_JAM_OPT_JAM=/Febootstrap\jam0
|
||||
set BOOST_JAM_OPT_MKJAMBASE=/Febootstrap\mkjambase0
|
||||
set BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0
|
||||
@@ -255,7 +255,7 @@ if "_%BOOST_JAM_TOOLSET%_" == "_vc8_" (
|
||||
if "_%BOOST_JAM_TOOLSET%_" == "_vc8_" (
|
||||
if not "_%BOOST_JAM_TOOLSET_ROOT%_" == "__" (
|
||||
set PATH=%BOOST_JAM_TOOLSET_ROOT%bin;%PATH%)
|
||||
set BOOST_JAM_CC=cl /nologo /RTC1 /Zi /MTd -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib
|
||||
set BOOST_JAM_CC=cl /nologo /RTC1 /Zi /MTd -DNT -DYYDEBUG -wd4996 kernel32.lib advapi32.lib user32.lib
|
||||
set BOOST_JAM_OPT_JAM=/Febootstrap\jam0
|
||||
set BOOST_JAM_OPT_MKJAMBASE=/Febootstrap\mkjambase0
|
||||
set BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0
|
||||
@@ -298,7 +298,7 @@ if "_%BOOST_JAM_TOOLSET%_" == "_gcc-nocygwin_" (
|
||||
set _known_=1
|
||||
)
|
||||
if "_%BOOST_JAM_TOOLSET%_" == "_intel-win32_" (
|
||||
set BOOST_JAM_CC=icl -DNT /nologo kernel32.lib advapi32.lib
|
||||
set BOOST_JAM_CC=icl -DNT /nologo kernel32.lib advapi32.lib user32.lib
|
||||
set BOOST_JAM_OPT_JAM=/Febootstrap\jam0
|
||||
set BOOST_JAM_OPT_MKJAMBASE=/Febootstrap\mkjambase0
|
||||
set BOOST_JAM_OPT_YYACC=/Febootstrap\yyacc0
|
||||
|
||||
@@ -177,7 +177,7 @@ toolset intel-win32 icl : /Fe : -D
|
||||
[ opt --release : /ML /O2 /Ob2 /Gy /GF /GA /GB ]
|
||||
[ opt --debug : /MLd /DEBUG /Z7 /Od /Ob0 ]
|
||||
-I$(--python-include)
|
||||
: kernel32.lib advapi32.lib $(--python-lib[1]) ;
|
||||
: kernel32.lib advapi32.lib user32.lib $(--python-lib[1]) ;
|
||||
## KCC ?
|
||||
toolset kcc KCC : "-o " : -D
|
||||
:
|
||||
@@ -203,7 +203,7 @@ toolset kylix bc++ : -o : -D
|
||||
[ opt --debug : -runtime ssd -opt none -inline off ]
|
||||
-I$(--python-include) ;
|
||||
toolset metrowerks $(mwcc) .link : "-o " :
|
||||
: -subsystem console -ladvapi32.lib
|
||||
: -subsystem console -lkernel32.lib -ladvapi32.lib -luser32.lib
|
||||
[ opt --release : -runtime ss ]
|
||||
[ opt --debug : -runtime ssd ]
|
||||
: $(--python-lib[1]) ;
|
||||
@@ -228,7 +228,7 @@ toolset msvc cl : /Fe : -D
|
||||
[ opt --release : /ML /O2 /Ob2 /Gy /GF /GA /GB ]
|
||||
[ opt --debug : /MLd /DEBUG /Z7 /Od /Ob0 ]
|
||||
-I$(--python-include)
|
||||
: kernel32.lib advapi32.lib $(--python-lib[1]) ;
|
||||
: kernel32.lib advapi32.lib user32.lib $(--python-lib[1]) ;
|
||||
## QNX 6.x GCC 3.x/2.95.3
|
||||
toolset qcc qcc : "-o " : -D
|
||||
: -Wc,-pedantic
|
||||
@@ -264,14 +264,14 @@ toolset vc7 cl : /Fe : -D
|
||||
[ opt --release : /ML /O2 /Ob2 /Gy /GF /GA /GB ]
|
||||
[ opt --debug : /MLd /DEBUG /Z7 /Od /Ob0 ]
|
||||
-I$(--python-include)
|
||||
: kernel32.lib advapi32.lib $(--python-lib[1]) ;
|
||||
: kernel32.lib advapi32.lib user32.lib $(--python-lib[1]) ;
|
||||
## Microsoft Visual C++ 2005
|
||||
toolset vc8 cl : /Fe : -D
|
||||
: /nologo
|
||||
[ opt --release : /MT /O2 /Ob2 /Gy /GF /GA /wd4996 ]
|
||||
[ opt --debug : /MTd /DEBUG /Z7 /Od /Ob0 /wd4996 ]
|
||||
-I$(--python-include)
|
||||
: kernel32.lib advapi32.lib $(--python-lib[1]) ;
|
||||
: kernel32.lib advapi32.lib user32.lib $(--python-lib[1]) ;
|
||||
## VMS/OpenVMS DEC C
|
||||
toolset vmsdecc cc : /OBJECT= : "/DEFINES=(" "," ")"
|
||||
: /STANDARD=VAXC /PREFIX_LIBRARY_ENTRIES=ALL_ENTRIES
|
||||
|
||||
@@ -897,6 +897,67 @@ check_process_exit(
|
||||
return result;
|
||||
}
|
||||
|
||||
int is_parent_child(DWORD parent, DWORD child)
|
||||
{
|
||||
HANDLE process_snapshot_h = INVALID_HANDLE_VALUE;
|
||||
|
||||
if (parent == child)
|
||||
return 1;
|
||||
|
||||
process_snapshot_h = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
|
||||
if (INVALID_HANDLE_VALUE != process_snapshot_h)
|
||||
{
|
||||
BOOL ok = TRUE;
|
||||
PROCESSENTRY32 pinfo;
|
||||
pinfo.dwSize = sizeof(PROCESSENTRY32);
|
||||
for (
|
||||
ok = Process32First(process_snapshot_h, &pinfo);
|
||||
ok == TRUE;
|
||||
ok = Process32Next(process_snapshot_h, &pinfo) )
|
||||
{
|
||||
if (pinfo.th32ProcessID == child && pinfo.th32ParentProcessID)
|
||||
return is_parent_child(parent, pinfo.th32ParentProcessID);
|
||||
}
|
||||
|
||||
CloseHandle(process_snapshot_h);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int related(HANDLE h, DWORD p)
|
||||
{
|
||||
return is_parent_child(get_process_id(h), p);
|
||||
}
|
||||
|
||||
BOOL CALLBACK window_enum(HWND hwnd, LPARAM lParam)
|
||||
{
|
||||
char buf[10] = {0};
|
||||
HANDLE h = *((HANDLE*) (lParam));
|
||||
DWORD pid = 0;
|
||||
|
||||
if (!GetClassNameA(hwnd, buf, 10))
|
||||
return TRUE; // failed to read class name
|
||||
|
||||
if (strcmp(buf, "#32770"))
|
||||
return TRUE; // not a dialog
|
||||
|
||||
GetWindowThreadProcessId(hwnd, &pid);
|
||||
if (related(h, pid))
|
||||
{
|
||||
PostMessage(hwnd, WM_QUIT, 0, 0);
|
||||
// just one window at a time
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void close_alert(HANDLE process)
|
||||
{
|
||||
EnumWindows(&window_enum, (LPARAM) &process);
|
||||
}
|
||||
|
||||
static double
|
||||
running_time(HANDLE process)
|
||||
{
|
||||
@@ -1046,6 +1107,9 @@ my_wait( int *status )
|
||||
double t = running_time(active_handles[i]);
|
||||
if ( t > (double)globs.timeout )
|
||||
{
|
||||
/* the job may have left an alert dialog around,
|
||||
try and get rid of it before killing */
|
||||
close_alert(active_handles[i]);
|
||||
/* we have a "runaway" job, kill it */
|
||||
kill_all(0,active_handles[i]);
|
||||
/* indicate the job "finished" so we query its status below */
|
||||
|
||||
Reference in New Issue
Block a user