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

76 Commits

Author SHA1 Message Date
Jurko Gospodnetić
681b6609af Boost Jam code cleanup - minor stylistic changes (added missing spaces around some parameters inside brackets in C code).
[SVN r79587]
2012-07-18 15:06:44 +00:00
Jurko Gospodnetić
c2858c8b5d Boost Jam code cleanup - extracted code for getting a timestamp for the current system time to timestamp_current().
[SVN r79507]
2012-07-14 17:28:50 +00:00
Jurko Gospodnetić
e548f836d9 Boost Jam's internal timestamp data structure now holds a member for nanosecond information. This information is still always set to 0 but, if set, is used when needed. Updated Boost Jam's header cache file format to hold the new extended timestamp information (bumped format version up to 5).
[SVN r79506]
2012-07-14 17:17:09 +00:00
Jurko Gospodnetić
3736a64fd6 Boost Jam code cleanup - wrapped up timestamp values inside a timstamp structure instead of using a raw time_t value as another preparation step towards implementing support for timestamps with resolution finer than 1 second. All timestamp manipulation now done using the new timestamp_XXX() API.
File timestamps displayed with -d+3 debug output now presented in UTC (+0000) timezone.

Other related minor stylistic changes:
  - timestamp_from_target() renamed to timestamp_from_path()
  - timestamp_from_target() parameter order switched
  - comment updates
  - added some const function parameter modifiers
  - some header #include directives reordered alphabetically

[SVN r79501]
2012-07-14 16:11:16 +00:00
Jurko Gospodnetić
ed56af5717 Restoring Boost Build & Jam changes from revisions [79281 - 79310] (inclusive) previously temporarily reverted in revision [79321]. This is done to test whether the problem causing the original revert was introduced in revision [79311] (a bug has been found in that revision that could cause the observed Boost Jam crashes). Remaining reverted changes will be reverted if we do not detect any Boost library tester failures with this revision.
[SVN r79402]
2012-07-10 15:27:58 +00:00
K. Noel Belcourt
dc8e3d28bc Fix buffer output so newline is actully written to
cmd buffer.  Also move some closure diagnostics to
avoid interleaved output (no functional change, just
better encapsulation).



[SVN r79341]
2012-07-08 02:36:24 +00:00
Jurko Gospodnetić
1791d078cc Boost Build/Jam cleanup - stylistic code changes.
[SVN r79244]
2012-07-03 15:58:26 +00:00
K. Noel Belcourt
a698b523b4 Fix bug where process jam log could not find
command status when max buffer not size not
unlimited and buffer full.  Change character
before buffer null terminator to be a newline
so command status appears on its own line.



[SVN r79184]
2012-06-30 05:40:36 +00:00
Jurko Gospodnetić
48fad62381 Boost Jam code cleanup - execunix.c module no longer opens a separate stderr pipe for communicating with its child process in case it is going to have it send both its stderr & stdout output to the stdout pipe, i.e. if the -p0 option is specified (which is actually the default). Minor stylistic comment updates.
[SVN r79120]
2012-06-26 18:12:40 +00:00
Jurko Gospodnetić
2b90f86094 Boost Jam code cleanup - internal execunix.c refactoring.
[SVN r79118]
2012-06-26 17:25:33 +00:00
Jurko Gospodnetić
7942dc524a Boost Jam code cleanup - marked several internal execunix.c module functions as static.
[SVN r79117]
2012-06-26 16:24:36 +00:00
Jurko Gospodnetić
0e1e424997 Boost Jam code cleanup - moved checking for quiet actions from make1c() into make_closure(). This removes the need to tunnel related rule_name & target_name strings through all the exec*.c module command execution functionality.
[SVN r79115]
2012-06-26 15:36:47 +00:00
Jurko Gospodnetić
e28a24a962 Boost Jam code cleanup - out_action() calls from different platform specific exec*.c modules now moved into the central make_closure() function in the main build state machine implementation. exec_cmd() callbacks fitted with additional parameters to make this work but this should be temporary. exec*.c modules no longer need to remember their original command string given to execute just so they could pass them back to their out_action() calls since the central make_closure() function already has this information.
[SVN r79113]
2012-06-26 15:08:50 +00:00
Jurko Gospodnetić
6609ba8f61 Boost Jam code cleanup - minor stylistic const correctness & comment changes.
[SVN r79110]
2012-06-26 13:49:06 +00:00
Jurko Gospodnetić
d79fbb3227 Boost Jam code cleanup - minor stylistic execunix.c module comment changes.
[SVN r79105]
2012-06-26 10:48:55 +00:00
Jurko Gospodnetić
276332ef0f Corrected how Boost Jam handles no-op actions, i.e. those that the used exec*.c platform specific implementation module flagged as a no-op. They still do not cause an external process to be triggered but internally Boost Jam now processes their results the same as if they had been triggered and had done nothing except return EXIT_OK (i.e. they get reported correctly with -d1 & -d2 options, their timing and action rules get triggered and such). This fixes the core_d12.py Boost Build test which was failing due to no-op actions no causing their names to be reported to stdout when run with -d1.
[SVN r79104]
2012-06-26 10:42:58 +00:00
Jurko Gospodnetić
6d042d6039 Boost Jam code cleanup - added support for exec*.c modules deciding that there is really no purpose in running the given 'do-nothing' command on their platform and simply telling the main build state machine to consider that command successfully executed. This is a preparation step for implementing a better 'raw command execution' criteria on Windows where attempting to execute an empty raw command would issue an error.
[SVN r79082]
2012-06-25 14:54:18 +00:00
Jurko Gospodnetić
d23202eeff Boost Jam code cleanup - added a new exec_check() exec*.c module platform specific functions and moved all command validation into them. MAXLINE macro is no longer needed globally for all platforms, and those platforms that do not have a fixed constant for their maximum command line length (e.g. Windows) may now hold that knowledge inside their exec*.c modules and not export it in any way. Windows execnt.c implementation still does some extra command-trimming that needs to be cleaned up.
[SVN r79078]
2012-06-25 13:42:00 +00:00
Jurko Gospodnetić
b1579a0ffe Boost Jam code cleanup - extracted running command counting out of platform specific exec*.c modules and moved it to the central make1.c module. Simplified upper running command count checking since with the new '-j' command-line parameter and the PARALLELISM built-in variable value checking we now know that globs.jobs is always in the [1, MAXJOBS] range.
[SVN r79075]
2012-06-25 09:25:59 +00:00
Jurko Gospodnetić
69245164b9 Boost Jam code cleanup - more standardized 'default shell' implementation in both execnt.c & execunix.c modules. This removes the knowledge duplication in code about what default shell we are using as well as allows us to process default & non-default shells equally.
[SVN r79072]
2012-06-25 01:32:02 +00:00
Jurko Gospodnetić
d34ffa9d42 Boost Jam code cleanup - refactored code in exec*.c module for executing child processes to reduce duplication and function size. The only externally visible change is in several debug (-d+4) messages.
[SVN r79065]
2012-06-24 16:10:58 +00:00
Jurko Gospodnetić
d8dac3dbe7 Boost Jam now correctly reports an end-user error message when its pipe() system call fails on unix. Previously it just did a silent exit.
[SVN r79062]
2012-06-24 14:24:40 +00:00
Jurko Gospodnetić
d2146b0e4c Boost Jam code cleanup - minor stylistic change - pipes used to communicate with child processes no longer have their parent side descriptors inherited by the child process instead of being explicitly closed in the child process.
[SVN r79061]
2012-06-24 14:22:38 +00:00
Jurko Gospodnetić
7e6b310623 Boost Jam code cleanup - added a new execcmd.c module to hold shared implementation between different exec*.c modules. Extracted external command process interrupt handling code into the new module.
BROKEN: execcmd.c not actually added in this revision.

[SVN r79055]
2012-06-24 11:59:49 +00:00
Jurko Gospodnetić
d4b88e9cdb Boost Jam code cleanup - removed global exec*.c module exec_done() cleanup routines as they were either not doing anything (execnt.c) or just releasing memory that would get released automatically by the OS on the imminent process exit (execunix.c).
[SVN r79052]
2012-06-24 10:58:58 +00:00
Jurko Gospodnetić
0bc246eb32 Boost Jam code cleanup - extracted functions for finding a free running tables command slot in execnt.c & execunix.c modules.
[SVN r79051]
2012-06-24 10:42:19 +00:00
Jurko Gospodnetić
9f01d3d262 Boost Jam code cleanup - removed an unused global variable in the execunix.c module.
[SVN r79050]
2012-06-24 10:31:48 +00:00
Jurko Gospodnetić
bdac9aa723 Boost Jam code cleanup - minor stylistic changes in the execunix.c module.
[SVN r79049]
2012-06-24 10:29:30 +00:00
Jurko Gospodnetić
b45ec34c91 Updated the Boost.Jam exec_cmd() interface to take its command parameter as a string object instead of a raw char *.
[SVN r79007]
2012-06-19 12:33:49 +00:00
Jurko Gospodnetić
fd4d69acd6 Cleaned up Boost Jam's exec_cmd() interface a bit to avoid its callback definition duplication. Minor stylistic changes.
[SVN r79005]
2012-06-19 12:13:42 +00:00
K. Noel Belcourt
b5588a25aa Fix off by one error that resulted in less than the
full amount of target output being output to the user.



[SVN r78874]
2012-06-10 23:05:25 +00:00
Jurko Gospodnetić
fc6a60ee1e Minor stylistic changes. Removed some minor code duplication.
[SVN r78862]
2012-06-09 07:28:42 +00:00
K. Noel Belcourt
c851e03de3 Handle signals causing early returns from select
and waitpid.  Should fix FreeBSD reported problem.



[SVN r78861]
2012-06-09 00:21:03 +00:00
K. Noel Belcourt
a8344266f3 Add ability to limit amount of target output that is
output by bjam.  Added bjam argument -mx where x is
the maximum amount of output to be captured from a 
target, in kb.

This fix will enable, PGI, VACPP, and Clang to cycle
normally in the nightly testing.



[SVN r78847]
2012-06-07 15:36:46 +00:00
K. Noel Belcourt
6e89b4abac Revert commit 76862, restore FreeBSD and other
unix testers that I broke with this commit.



[SVN r78800]
2012-06-02 18:26:35 +00:00
Steven Watanabe
60d66ca888 Use dynamic arrays instead of linked lists. Reduces memory use about 10% overall.
[SVN r77408]
2012-03-19 18:17:36 +00:00
K. Noel Belcourt
3c7724acc5 Revert 77005, biffed the revert of 76862.
[SVN r77009]
2012-02-13 20:08:20 +00:00
K. Noel Belcourt
11f03ee4cd Revert commit 76862. This causes problems for a
tester that we need to track down.



[SVN r77005]
2012-02-13 16:36:00 +00:00
K. Noel Belcourt
ececb00bfb Handle message truncation, zombies, sigchld handling.
Changes to get verbose compiler output down to a manageable
size.  Added option, -mN to limit output to N kb.  Default
is to capture all compiler generated output.  Added this
option to ignore massive compiler diagnostic outout 
associated with some compilers.  With this change, I can
increase the nightly timeout to longer than 300 seconds to
give some slower compilers a change to finish compiling.



[SVN r76862]
2012-02-03 23:11:16 +00:00
Steven Watanabe
ea1a2928d2 Replace newstr with object. Use OBJECT * instead of char *. Fix a few bugs uncovered by the better typechecking.
[SVN r75609]
2011-11-22 23:04:09 +00:00
Steven Watanabe
86278a4624 Fix memory leaks. Make sure that newstr and copystr are always used as needed.
[SVN r75502]
2011-11-16 03:00:54 +00:00
Vladimir Prus
7df1f2f4af Kill 'engine/src', moving all content to 'engine'.
[SVN r68592]
2011-02-01 08:16:47 +00:00
Vladimir Prus
0f77dbdae2 Move tools/jam into tools/build/v2/engine
[SVN r64010]
2010-07-14 10:37:12 +00:00
K. Noel Belcourt
61f6e8ee1f Remove non-blocking on child's pipe file descriptors.
Dan Gohman asked that we not force child's pipe file
descriptors to non-blocking so this commit removes
those fcntls calls.  I tested this change on Darwin,
Linux and Solaris and saw no adverse impact to nightly
build behavior.



[SVN r61961]
2010-05-14 04:06:03 +00:00
K. Noel Belcourt
20094eaacc This patch ensures we close both file descriptors following the dup2 calls.
This is mostly for completeness but also because I've occasionally noticed 
output isn't flushed from a terminated process (when it is killed for exceeding 
the time limit).  I'm sure this won't break anything and am slightly hopeful 
that it might ensure output is flushed before the terminating process is killed.



[SVN r58785]
2010-01-07 05:57:33 +00:00
Jurko Gospodnetić
b14209b789 Major stylistic changes throughout the Boost Jam source base. No implementation changes.
Cleanup done while researching the Boost Jam internals. Added better implementation description comments at many places. Cleaned up the 'dependant' and 'dependency' terminology that got mixed up in several places. Renamed several functions to use underscores as word separators.

[SVN r48480]
2008-08-30 23:56:49 +00:00
Jurko Gospodnetić
84c8a57403 Minor stylistic changes throughout Boost Jam sources. Mostly corrected indentation, removed trailing spaces and updated comments.
[SVN r48445]
2008-08-29 12:59:49 +00:00
K. Noel Belcourt
2f46c0abcb Change execunix.c to always use fork() instead of
vfork() on the Mac.  This works around known issues
with bjam on PPC under Tiger and a problem reported
by Rene with bjam on x86 under Leopard.

A future revision will change execvp() use to execve()
to enable the Mac to once again use the more efficient
vfork() on the Mac.



[SVN r45956]
2008-05-30 16:22:39 +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
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