2
0
mirror of https://github.com/boostorg/build.git synced 2026-02-14 12:42:11 +00:00
Commit Graph

524 Commits

Author SHA1 Message Date
Jurko Gospodnetić
1b601354c0 Implemented a patch contributed by Igor Nazarenko reimplementing the list_sort() function to use a C qsort() function instead of a hand-crafted merge-sort algorithm. Makes some list sortings (e.g. 1,2,1,2,1,2,1,2,...) extremely faster, in turn significantly speeding up some project builds.
[SVN r44195]
2008-04-11 21:03:06 +00:00
Jurko Gospodnetić
d7407a9ee1 Fixed a bug with bjam not handling the '\' root Windows path correctly without its drive letter being specified. One effect could be seen by MkDir rule on such a path always attempting to create its base folder even if that folder already exists. For example if you attempted to create folder '\Projects\XYZ\BuildDir' it would incorrectly think that '\Projects' folder does not exist and attempt to create it - thus causing the whole build to fail due to the underlying OS mkdir command failing.
This was caused by the file_dirscan() function in the filent.c module not working correctly when passed '\' as its dir. It then messed up when formatting its file-selection parameter for the _findfirst()/findfirst() API and constructed it as '\/*' which caused that API to fail and return -1 which was in turn being interpreted as 'file not found'.


[SVN r44088]
2008-04-07 10:32:09 +00:00
Jurko Gospodnetić
556474bbb2 Solved the problem with child process returning the value 259 (Windows constant STILL_ACTIVE) causing bjam never to detect that it exited and therefore keep running in an endless loop. Done by relying on the Windows WaitForMultipleObjects() function to detect when a process has exited instead of GetExitCodeProcess(). The later function's MSDN article (http://msdn2.microsoft.com/en-us/library/ms683189(VS.85).aspx) warns about this problem.
Solved the problem with bjam going into an active wait state, hogging up processor resources, when waiting for one of its child processes to terminate while not all of its available child process slots are being used. To see this bug in action, try compiling a simple C++ program on a 2 processor PC with the -j 2 command-line option and watching how much processor resources bjam uses while linking. Was caused by treating unused process slots as used in the try_wait() function, causing the WaitForMultipleObjects() Windows API call to exit instantly with an error which was then getting incorrectly interpreted as a timeout, starting the whole cycle anew.

  Solved a race condition between bjam's output reading/child process termination detection and the child process's output generation/termination which could have caused bjam not to collect the terminated process's final output.

  Extracted all GetExitCodeProcess() API calls into one location so it no longer gets called in three separate places.

  Minor comment changes in code touched by previous fixes.


[SVN r44087]
2008-04-07 09:55:18 +00:00
K. Noel Belcourt
23aa013e45 Force PPC Darwin to use fork instead of vfork. This change
requires both the parent and child process to explicitly set
the process group id. Vfork guarantees the child process 
runs to the exec before it releases the parent process.  
Now that we use fork instead of vfork, it's possible for the 
parent to wait on the child process without having the child 
setpgid on itself.  This eliminates spurious hangs on ppc
darwin caused by either a race condition between vfork and
execvp, or a bug in the vfork implementation.

Added a test to ensure we don't try to read from the
stderr pipe descriptor if the descriptor's not valid.



[SVN r43176]
2008-02-08 16:32:35 +00:00
Jurko Gospodnetić
e8237dea5d Added the missing end-of-line character when outputting DEBUG_SEARCH debug messages from file_build1(). This cleans up the -d+6 bjam output a lot.
[SVN r43046]
2008-02-01 01:49:16 +00:00
Rene Rivera
6f12bd5e02 Revert various changes that break backward compatibility, and also some minor edits.
[SVN r42632]
2008-01-09 04:31:58 +00:00
Jurko Gospodnetić
a243eaa91c Updated the __ACTION_RULE__ to not return its action command output as a single string but instead split it into a list of output lines. This allows Jam code using this output to work correctly independently of what newline character combinations are in use. This was causing problems with Boost Build unit tests which can now be updated to pass.
Consequences & checks:
  * Final __ACTION_RULE__ rule parameter has changed from output ? to output-lines *.
  * Updated corresponding Jam documentation.
  * Updated the all related Boost Build code.
  * No code on the Boost trunk uses this rule except for Boost Build itself.


[SVN r42629]
2008-01-09 04:05:29 +00:00
Jurko Gospodnetić
d78c27ff9a Remove trailing spaces. Removed an empty line.
[SVN r42628]
2008-01-09 01:18:38 +00:00
Jurko Gospodnetić
8ffe82aaaa Tried trailing spaces. Minor comment typo corrections.
[SVN r42627]
2008-01-09 01:11:03 +00:00
Jurko Gospodnetić
379a177ec5 Minor stylistic code indentation changes.
[SVN r42626]
2008-01-09 01:09:26 +00:00
Jurko Gospodnetić
0ecead741e Comment correction.
[SVN r42617]
2008-01-08 17:51:30 +00:00
Jurko Gospodnetić
6bb216cf1a Comment cleanup.
[SVN r42496]
2008-01-05 20:14:48 +00:00
Jurko Gospodnetić
0c58c9ae6b Minor stylistic changes such as: comment typo corrections, wrapping lines to 80 characters, indentations, removing trailing spaces, etc.
[SVN r42494]
2008-01-05 20:02:24 +00:00
Jurko Gospodnetić
9c6f90696b Removed trailing spaces and some empty lines.
[SVN r42492]
2008-01-05 18:29:36 +00:00
Vladimir Prus
b34c3d8fa0 Implement ISFILE for real
[SVN r41980]
2007-12-11 19:45:37 +00:00
Rene Rivera
f7ca3fdfaf Bump bjam to 3.1.17 after 3.1.16 release.
[SVN r41629]
2007-12-03 04:05:39 +00:00
Rene Rivera
7e35e8c18a Work around some Windows CMD.EXE programs that will fail executing a totally empty batch file.
[SVN r41626]
2007-12-03 02:57:49 +00:00
Rene Rivera
d7f47dd8e2 Add support for detection and building with vc9. (fixes #1490)
[SVN r41548]
2007-12-01 20:17:52 +00:00
Rene Rivera
e2ae7d0a18 Plug memory leak when closing out actions. Thanks to Martin Kortmann for finding this.
[SVN r41535]
2007-12-01 16:44:54 +00:00
Rene Rivera
000431fdc1 build-system.jam
* Reflect added start/end timestamps for actions in xml output. And update action rules for new args.

execcmd.h
* Add start/end timestamps to action timing info.

execnt.c
* Fix filetime_seconds calculation when time is larger than low 32 bit value.
* Add calc of C time_t from Windows FILETIME.
* Add start/end timestamps recording to action timing info.

execunix.c
* Add start/end timestamps recording to action timing info.

jam.c
* Change JAMDATE to use common ISO date format.

make1.c
* Redo __TIMING_RULE__ and __ACTION__RULE__ invocations to new argument ordering and added end/result timestamp values.

[SVN r41431]
2007-11-28 07:21:49 +00:00
Rene Rivera
3f53335fe0 Fix buffer overrun bug in expanding @() subexpressions.
[SVN r41417]
2007-11-27 17:58:50 +00:00
Rene Rivera
4e7c391043 Check empty string invariants, instead of assuming all strings are allocated. And reset strings when they are freed.
[SVN r41416]
2007-11-27 17:57:15 +00:00
Rene Rivera
d8094040a6 Add some utility output formatting functions.
[SVN r41415]
2007-11-27 17:55:13 +00:00
Rene Rivera
f33adc78fc Remove non-existent option info.
[SVN r41414]
2007-11-27 17:53:56 +00:00
Boris Gubenko
f2da9cc8a9 add OSPLAT=PARISC for HP-UX PA-RISC
[SVN r41242]
2007-11-19 19:25:21 +00:00
Rene Rivera
b6585b5e14 Make quietly actions really quiet by not printing the command output. The output for the quietly actions is still available through "__ACTION_RULE__".
[SVN r41236]
2007-11-19 17:44:31 +00:00
Rene Rivera
51fbf5b137 Switch intel-win32 to use static multi thread runtime since the single thread static runtime is no longer available. (fixes #1287)
[SVN r41113]
2007-11-15 18:56:43 +00:00
Boris Gubenko
5b1455512d when setting OSPLAT, check __ia64 macro
[SVN r41050]
2007-11-13 00:51:37 +00:00
K. Noel Belcourt
08e879a007 Get the unix timing working correctly.
[SVN r41048]
2007-11-12 22:52:12 +00:00
Boris Gubenko
1aaa0782f4 add -fno-strict-aliasing to compilation with gcc
[SVN r41036]
2007-11-12 17:03:38 +00:00
Vladimir Prus
d5fbab60f8 New Python rule -- 'backtrace'.
[SVN r40497]
2007-10-27 09:55:58 +00:00
Vladimir Prus
165534e07e Add missing Py_INCREF on Py_None objects.
[SVN r40289]
2007-10-22 16:45:49 +00:00
Rene Rivera
f626fa511a Allow specifying options with quotes, i.e. "--with-python=xyz", to work around the CMD shell using "=" as an argument separator.
[SVN r40095]
2007-10-16 19:08:58 +00:00
Vladimir Prus
cb7f29fcd3 Better diagnostics when trying to import non-callable Python
object to Jam.


[SVN r40006]
2007-10-14 09:09:41 +00:00
Vladimir Prus
1eea3e4103 Fix module messup when calling into Python.
[SVN r39988]
2007-10-13 21:32:51 +00:00
Daniel Wallin
1e20af0843 Added missing Py_INCREF(Py_None).
[SVN r39939]
2007-10-11 20:37:37 +00:00
Vladimir Prus
f653f04d9f New bjam.variable function exposed to Python.
[SVN r39876]
2007-10-10 08:25:27 +00:00
Vladimir Prus
324ef5d514 Add values of variables specified with -s to .EVNRION
module, so that we can override environment on
command line.


[SVN r39873]
2007-10-10 07:40:05 +00:00
Vladimir Prus
e1ffef9677 Make it work, for extra benefit ('=' vs '==' bug)
[SVN r39830]
2007-10-09 05:38:31 +00:00
Vladimir Prus
06f65d9fc9 Make it compile, even
[SVN r39829]
2007-10-09 05:35:48 +00:00
Vladimir Prus
77e08fdb83 Make NORMALIZE_PATH convert \ to /.
[SVN r39828]
2007-10-09 05:33:45 +00:00
Vladimir Prus
a475ec69a1 Allow to specify the list of bound targets
and flags, when defining action from Python.


[SVN r39641]
2007-10-01 17:29:11 +00:00
Rene Rivera
7e83d50c8d Bump to bjam version 3.1.16
[SVN r39620]
2007-09-30 17:33:21 +00:00
Rene Rivera
ff5293cba7 Fix copying the wrong files for the archive, and prefer using POSIX/pax format.
[SVN r39617]
2007-09-30 16:33:36 +00:00
K. Noel Belcourt
33a71f330c Renamed variables used in timeout code so I don't make
silly mistakes like using a negative time for the select
timeout.  

Also added the setrlimit call back in since the
named_condition_test occassionally consumes multiple cpus
worth of time.  That is, when I ran this test -j4, I found
the named_condition test consuming 4 cpus worth of time so
after 300 seconds of elapsed time when the test timed out, 
it had consumed almost 1200 seconds worth of cpu.  While the 
test is killed after the elapsed time expired, setting a hard 
cpu limit ensures it's killed after consuming either -lx seconds 
worth of cpu or -lx seconds of elapsed time.



[SVN r39613]
2007-09-29 21:47:24 +00:00
K. Noel Belcourt
149d4c2eb3 When terminating unix processes I forgot to check for negative
time differences.  This patch only sets the select timeout if
the difference between the requested and consumed time is 
positive.



[SVN r39612]
2007-09-29 20:23:29 +00:00
Rene Rivera
bc9cba4741 Update distribution and build scripts to account for inclusion of boehm_gc sources. Add history of changes to docs.
[SVN r39610]
2007-09-29 19:48:51 +00:00
Rene Rivera
8319f76eaa Fix action multi-generation for case when there are no targets for the action.
[SVN r39608]
2007-09-29 18:30:06 +00:00
K. Noel Belcourt
8b734cab67 Add macros to gcc.hpp to support pathscale toolset.
Added an optimization to the -lx unix timeout code.  I
compute the amount of time the select call should sleep
until the "oldest" process times out.  This ensures that
all processes that timeout will be killed within one
second of their expiration.



[SVN r39534]
2007-09-25 23:11:12 +00:00
K. Noel Belcourt
7467bfb33a Fix a problem with the -lx timeout code on ppc darwin.
The intel based darwin system was killing subprocesses
okay but for some reason, ppc systems were not.  This
change fixes the timeout code so subprocesses are
properly killed on ppc darwin systems.



[SVN r39514]
2007-09-24 21:01:45 +00:00