Update of /cvsroot/boost/boost/tools/jam/src
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv30455/tools/jam/src
Modified Files:
build.bat build.jam execnt.c
Log Message:
Make the action timeout attempt to also close any open dialogs before killing
processes. Thanks to Bronek Kozicki.
Index: build.bat
===================================================================
RCS file: /cvsroot/boost/boost/tools/jam/src/build.bat,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -d -r1.39 -r1.40
--- build.bat 5 Apr 2006 11:19:34 -0000 1.39
+++ build.bat 6 Jun 2006 23:58:07 -0000 1.40
@@ -210,7 +210,7 @@
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 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 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 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 @@
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
Index: build.jam
===================================================================
RCS file: /cvsroot/boost/boost/tools/jam/src/build.jam,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -d -r1.82 -r1.83
--- build.jam 6 Jun 2006 20:42:08 -0000 1.82
+++ build.jam 6 Jun 2006 23:58:07 -0000 1.83
@@ -177,7 +177,7 @@
[ 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 @@
[ 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 @@
[ 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 @@
[ 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
Index: execnt.c
===================================================================
RCS file: /cvsroot/boost/boost/tools/jam/src/execnt.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- execnt.c 21 Nov 2005 05:36:29 -0000 1.24
+++ execnt.c 6 Jun 2006 23:58:07 -0000 1.25
@@ -897,6 +897,67 @@
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 @@
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 */
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs